]> granicus.if.org Git - vim/commitdiff
updated for version 7.0046
authorBram Moolenaar <Bram@vim.org>
Mon, 31 Jan 2005 19:19:04 +0000 (19:19 +0000)
committerBram Moolenaar <Bram@vim.org>
Mon, 31 Jan 2005 19:19:04 +0000 (19:19 +0000)
24 files changed:
runtime/doc/eval.txt
runtime/doc/options.txt
runtime/doc/repeat.txt
runtime/doc/tags
runtime/filetype.vim
runtime/lang/menu_zh_tw.big5.vim
runtime/lang/menu_zh_tw.utf-8.vim
runtime/menu.vim
src/auto/configure
src/config.h.in
src/configure.in
src/ex_cmds2.c
src/gui_w32.c
src/if_cscope.c
src/if_cscope.h
src/nbdebug.h
src/option.c
src/proto/eval.pro
src/screen.c
src/structs.h
src/syntax.c
src/testdir/test55.in
src/testdir/test55.ok
src/version.h

index cbd233a3980132b478714f1b407550a0f041ec08..dc58f1cd715a9b2e0fa40821df44344b1a541305 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jan 27
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jan 31
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1458,6 +1458,7 @@ inputsave()                       Number  save and clear typeahead
 inputsecret( {prompt} [, {text}]) String  like input() but hiding the text
 insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}]
 isdirectory( {directory})      Number  TRUE if {directory} is a directory
+islocked( {expr})              Number  TRUE if {expr} is locked
 items( {dict})                 List    List of key-value pairs in {dict}
 join( {list} [, {sep}])                String  join {list} items into one String
 keys( {dict})                  List    List of keys in {dict}
@@ -2783,6 +2784,19 @@ isdirectory({directory})                         *isdirectory()*
                exist, or isn't a directory, the result is FALSE.  {directory}
                is any expression, which is used as a String.
 
+islocked({expr})                                       *islocked()*
+               The result is a Number, which is non-zero when {expr} is the
+               name of a locked variable.
+               {expr} must be the name of a variable, List item or Dictionary
+               entry, not the variable itself!  Example: >
+                       :let alist = [0, ['a', 'b'], 2, 3]
+                       :lockvar 1 alist
+                       :echo islocked('alist')         " 1
+                       :echo islocked('alist[1]')      " 0
+
+<              When {expr} is a variable that does not exist you get an error
+               message.  Use |exists()| to check for existance.
+
 items({dict})                                          *items()*
                Return a List with all the key-value pairs of {dict}.  Each
                List item is a list with two items: the key of a {dict} entry
@@ -4161,7 +4175,14 @@ Up to 20 arguments can be given, separated by commas.  After the named
 arguments an argument "..." can be specified, which means that more arguments
 may optionally be following.  In the function the extra arguments can be used
 as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
-can be 0).  "a:000" is set to a List that contains these arguments.
+can be 0).  "a:000" is set to a List that contains these arguments.  Note that
+"a:1" is the same as "a:000[0]".
+                                                               *E742*
+The a: scope and the variables in it cannot be changed, they are fixed.
+However, if a List or Dictionary is used, you can changes their contents.
+Thus you can pass a List to a function and have the function add an item to
+it.  If you want to make sure the function cannot change a List or Dictionary
+use |:lockvar|.
 
 When not using "...", the number of arguments in a function call must be equal
 to the number of named arguments.  When using "...", the number of arguments
@@ -4457,10 +4478,11 @@ This would call the function "my_func_whizz(parameter)".
                                #       Number
                                *       Funcref
 
-                                                       *:unlet* *:unl* *E108*
-:unl[et][!] {var-name} ...
-                       Remove the internal variable {var-name}.  Several
-                       variable names can be given, they are all removed.
+
+:unl[et][!] {name} ...                                 *:unlet* *:unl* *E108*
+                       Remove the internal variable {name}.  Several variable
+                       names can be given, they are all removed.  The name
+                       may also be a List or Dictionary item.
                        With [!] no error message is given for non-existing
                        variables.
                        One or more items from a List can be removed: >
@@ -4470,6 +4492,52 @@ This would call the function "my_func_whizz(parameter)".
                                :unlet dict['two']
                                :unlet dict.two
 
+:lockv[ar][!] [depth] {name} ...                       *:lockvar* *:lockv*
+                       Lock the internal variable {name}.  Locking means that
+                       it can no longer be changed (until it is unlocked).
+                       A locked variable can be deleted: >
+                               :lockvar v
+                               :let v = 'asdf'         " fails!
+                               :unlet v
+<                                                      *E741*
+                       If you try to change a locked variable you get an
+                       error message: "E741: Value of {name} is locked"
+
+                       [depth] is relevant when locking a List or Dictionary.
+                       It specifies how deep the locking goes:
+                               1       Lock the List or Dictionary itself,
+                                       cannot add or remove items, but can
+                                       still change their values.
+                               2       Also lock the values, cannot change
+                                       the items.  If an item is a List or
+                                       Dictionary, cannot add or remove
+                                       items, but can still change the
+                                       values.
+                               3       Like 2 but for the List/Dictionary in
+                                       the List/Dictionary, one level deeper.
+                       The default [depth] is 2, thus when {name} is a List
+                       or Dictionary the values cannot be changed.
+                                                               *E743*
+                       For unlimited depth use [!] and omit [depth].
+                       However, there is a maximum depth of 100 to catch
+                       loops.
+
+                       Note that when two variables refer to the same List
+                       and you lock one of them, the List will also be locked
+                       when used through the other variable.  Example: >
+                               :let l = [0, 1, 2, 3]
+                               :let cl = l
+                               :lockvar l
+                               :let cl[1] = 99         " won't work!
+<                      You may want to make a copy of a list to avoid this.
+                       See |deepcopy()|.
+
+
+:unlo[ckvar][!] [depth] {name} ...                     *:unlockvar* *:unlo*
+                       Unlock the internal variable {name}.  Does the
+                       opposite of |:lockvar|.
+
+
 :if {expr1}                    *:if* *:endif* *:en* *E171* *E579* *E580*
 :en[dif]               Execute the commands until the next matching ":else"
                        or ":endif" if {expr1} evaluates to non-zero.
index 0adbb8d3b862e70531b385011e429e5c4a6c39da..d79aab72e21800abe290f7f65e15b7787cf311d9 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.0aa.  Last change: 2005 Jan 26
+*options.txt*  For Vim version 7.0aa.  Last change: 2005 Jan 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -4402,6 +4402,10 @@ A jump table for the options with a short description can be found at |Q_op|.
        knows about pasting and will mostly do the right thing without 'paste'
        being set.  The same is true for a terminal where Vim handles the
        mouse clicks itself.
+       This option is reset when starting the GUI.  Thus if you set it in
+       your .vimrc it will work in a terminal, but not in the GUI.  Setting
+       'paste' in the GUI has side effects: e.g., the Paste toolbar button
+       will no longer work in Insert mode, because it uses a mapping.
        When the 'paste' option is switched on (also when it was already on):
                - mapping in Insert mode and Command-line mode is disabled
                - abbreviations are disabled
index 7ef1cf95089e959d2273257b487b0c42cce5d705..ef8442b25a7a11fd2a5c21575ee91d92fb31a437 100644 (file)
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 7.0aa.  Last change: 2004 Jul 30
+*repeat.txt*    For Vim version 7.0aa.  Last change: 2005 Jan 28
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -497,6 +497,10 @@ The match for functions is done against the name as it's shown in the output
 of ":function".  For local functions this means that something like "<SNR>99_"
 is prepended.
 
+Note that functions are first loaded and later executed.  When they are loaded
+the "file" breakpoints are checked, when they are executed the "func"
+breakpoints.
+
 
 DELETING BREAKPOINTS
                                                *:breakd* *:breakdel* *E161*
index e86052cbf13985f60097a36c41601037ba36176c..227d1f307cf7e12c8cf189d6c4169150bdd9b9de 100644 (file)
@@ -2059,6 +2059,8 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :loadview      starting.txt    /*:loadview*
 :loc   motion.txt      /*:loc*
 :lockmarks     motion.txt      /*:lockmarks*
+:lockv eval.txt        /*:lockv*
+:lockvar       eval.txt        /*:lockvar*
 :ls    windows.txt     /*:ls*
 :lu    map.txt /*:lu*
 :lunmap        map.txt /*:lunmap*
@@ -2118,6 +2120,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :mzfile        if_mzsch.txt    /*:mzfile*
 :mzscheme      if_mzsch.txt    /*:mzscheme*
 :n     editing.txt     /*:n*
+:nbkey netbeans.txt    /*:nbkey*
 :ne    editing.txt     /*:ne*
 :new   windows.txt     /*:new*
 :next  editing.txt     /*:next*
@@ -2505,6 +2508,8 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :unhide        windows.txt     /*:unhide*
 :unl   eval.txt        /*:unl*
 :unlet eval.txt        /*:unlet*
+:unlo  eval.txt        /*:unlo*
+:unlockvar     eval.txt        /*:unlockvar*
 :unm   map.txt /*:unm*
 :unm!  map.txt /*:unm!*
 :unmap map.txt /*:unmap*
@@ -3641,6 +3646,10 @@ E738     eval.txt        /*E738*
 E739   starting.txt    /*E739*
 E74    message.txt     /*E74*
 E740   eval.txt        /*E740*
+E741   eval.txt        /*E741*
+E742   eval.txt        /*E742*
+E743   eval.txt        /*E743*
+E744   netbeans.txt    /*E744*
 E75    vi_diff.txt     /*E75*
 E76    pattern.txt     /*E76*
 E77    message.txt     /*E77*
@@ -5292,6 +5301,7 @@ ip        motion.txt      /*ip*
 iquote motion.txt      /*iquote*
 is     motion.txt      /*is*
 isdirectory()  eval.txt        /*isdirectory()*
+islocked()     eval.txt        /*islocked()*
 items()        eval.txt        /*items()*
 iw     motion.txt      /*iw*
 i{     motion.txt      /*i{*
@@ -5553,6 +5563,7 @@ nb-terms  netbeans.txt    /*nb-terms*
 ncf-syntax     syntax.txt      /*ncf-syntax*
 ncf.vim        syntax.txt      /*ncf.vim*
 netbeans       netbeans.txt    /*netbeans*
+netbeans-commands      netbeans.txt    /*netbeans-commands*
 netbeans-configure     netbeans.txt    /*netbeans-configure*
 netbeans-download      netbeans.txt    /*netbeans-download*
 netbeans-intro netbeans.txt    /*netbeans-intro*
index 40f68b307e83aad4968457d6b64bd8d73fb523e3..fa1908cf70035461d887fb69a26ada3fff314a68 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Jan 24
+" Last Change: 2005 Jan 27
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -541,7 +541,7 @@ au BufNewFile,BufRead *.mas,*.master                setf master
 au BufNewFile,BufRead *.fs,*.ft                        setf forth
 
 " Fortran
-au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95    setf fortran
+au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.FPP*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95       setf fortran
 
 " FStab
 au BufNewFile,BufRead fstab                    setf fstab
@@ -647,15 +647,18 @@ au BufNewFile,BufRead *.odl,*.mof         setf msidl
 " Icewm menu
 au BufNewFile,BufRead */.icewm/menu            setf icemenu
 
-" Inform
-au BufNewFile,BufRead .indent.pro              setf indent
-
 " IDL (Interactive Data Language)
 au BufNewFile,BufRead *.pro                    setf idlang
 
+" Inform
+au BufNewFile,BufRead .indent.pro              setf indent
+
 " Inform
 au BufNewFile,BufRead *.inf,*.INF              setf inform
 
+" Ipfilter
+au BufNewFile,BufRead ipf.conf,ipf.rules       setf ipfilter
+
 " Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
 au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl       setf fgl
 
index 081015918002a27358343171ad47ce0578b4e4a5..f437ce7c23cc7ed22229005458e369cdf7b85335 100644 (file)
@@ -1 +1,3 @@
+" Menu Translations:   Traditional Chinese
+
 source <sfile>:p:h/menu_chinese_taiwan.950.vim
index 871cece9e795533fcc8a6e57d191ad8cc67829e4..97c56a3973738bc04110161c4b3016023233c02d 100644 (file)
@@ -1,6 +1,6 @@
-" Menu Translations:   Traditional Chinese (for UTF-8)
-" Translated By:       Hung-Teh, Lin   <piaip@csie.ntu.edu.tw>
-" Last Change:         Thu Apr 24 17:35:17 CST 2003
+" Menu Translations:   Traditional Chinese
+" Translated By:       Hung-Te Lin     <piaip@csie.ntu.edu.tw>
+" Last Change:         2005/01/28 02:51:38
 
 " {{{ Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -19,7 +19,8 @@ menutrans &User\ Manual               使用者手冊(&U)
 menutrans &How-to\ links       如何作\.\.\.(&H)
 menutrans &GUI                 圖型界面(&G)
 menutrans &Credits             感謝(&C)
-menutrans Co&pying             版權宣告(&P)
+menutrans Co&pying             版權(&P)
+menutrans &Sponsor/Register            贊助/註冊(&S)
 menutrans O&rphans             拯救孤兒(&R)
 " ------------------------------------------------------------------------
 menutrans &Version             程式版本資訊(&V)
@@ -59,7 +60,7 @@ menutrans &Paste<Tab>"+gP             貼上(&P)<Tab>"+gP
 menutrans Put\ &Before<Tab>[p          貼到游標前(&B)<Tab>[p
 menutrans Put\ &After<Tab>]p           貼到游標後(&A)<Tab>]p
 menutrans &Delete<Tab>x                        刪除(&D)<Tab>x
-menutrans &Select\ all<Tab>ggVG                全選(&S)<Tab>ggvG
+menutrans &Select\ All<Tab>ggVG                全選(&S)<Tab>ggvG
 " ------------------------------------------------------------------------
 menutrans &Find\.\.\.                  尋找(&F)\.\.\.
 menutrans Find\ and\ Rep&lace\.\.\.    尋找並取代(&L)\.\.\.
index df9c65b6e66a95a4d1b86a7598819e0692de7a48..e89291b16f190baaba41cebe8d14d6349baf495c 100644 (file)
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 Dec 04
+" Last Change: 2005 Jan 30
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -54,12 +54,13 @@ if exists("v:lang") || &langmenu != ""
       " There is no exact match, try matching with a wildcard added
       " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
       let s:lang = substitute(s:lang, '\.[^.]*', "", "")
-      exe "runtime! lang/menu_" . s:lang . "*.vim"
+      exe "runtime! lang/menu_" . s:lang . "[^a-z]*.vim"
 
       if !exists("did_menu_trans") && strlen($LANG) > 1
        " On windows locale names are complicated, try using $LANG, it might
        " have been set by set_init_1().
-       exe "runtime! lang/menu_" . tolower($LANG) . "*.vim"
+       " But don't match "slovak" when $LANG is "sl".
+       exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
       endif
     endif
   endif
index 38d9ad5baedf3966c9247ac4172a27ddddabfe58..1a0a5a7ee1b0b62ab9de703a98f157ef279e6790 100755 (executable)
@@ -9721,30 +9721,24 @@ fi
 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-for ac_header in X11/Xmu/Editres.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+  echo "$as_me:$LINENO: checking for X11/Xmu/Editres.h" >&5
+echo $ECHO_N "checking for X11/Xmu/Editres.h... $ECHO_C" >&6
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
+
+#include <X11/Intrinsic.h>
+#include <X11/Xmu/Editres.h>
+int
+main ()
+{
+int i; i = 0;
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -9768,109 +9762,20 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+                     cat >>confdefs.h <<\_ACEOF
+#define HAVE_X11_XMU_EDITRES_H 1
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
+
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
-
-done
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS=$cppflags_save
 fi
 
@@ -9879,7 +9784,12 @@ if test -z "$SKIP_MOTIF"; then
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
 
-for ac_header in Xm/Xm.h Xm/XpmP.h
+
+
+
+
+for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
+                  Xm/UnhighlightT.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
index f182f7b67bce098137dff76124a2eefb18f159d1..f9159aa547efdba0cfb695cb21cbb5a5a3bf3d68 100644 (file)
 #undef HAVE_X11_SUNKEYSYM_H
 #undef HAVE_XM_XM_H
 #undef HAVE_XM_XPMP_H
+#undef HAVE_XM_TRAITP_H
+#undef HAVE_XM_MANAGER_H
+#undef HAVE_XM_UNHIGHLIGHTT_H
+#undef HAVE_XM_JOINSIDET_H
 #undef HAVE_X11_XPM_H
 #undef HAVE_X11_XMU_EDITRES_H
 #undef HAVE_X11_SM_SMLIB_H
index 0bccd1ef496f92419eecae0b51dd8853451d246a..cc8d00e5ffbc07bd550a408beeaa8ef3a9c1dd8a 100644 (file)
@@ -2120,7 +2120,15 @@ fi
 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_CHECK_HEADERS(X11/Xmu/Editres.h)
+dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
+  AC_MSG_CHECKING([for X11/Xmu/Editres.h])
+  AC_TRY_COMPILE([
+#include <X11/Intrinsic.h>
+#include <X11/Xmu/Editres.h>],
+                     [int i; i = 0;],
+             AC_MSG_RESULT(yes)
+                     AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
+             AC_MSG_RESULT(no))
   CPPFLAGS=$cppflags_save
 fi
 
@@ -2128,7 +2136,8 @@ dnl Only use the Xm directory when compiling Motif, don't use it for Athena
 if test -z "$SKIP_MOTIF"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h)
+  AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
+                  Xm/UnhighlightT.h)
   CPPFLAGS=$cppflags_save
 fi
 
index 8ba1744d00dddb0bdf40e902bdf3fb5dd3a19ab0..eac69b13cbe004a5d7a5c2bf7449d62aa17d2a35 100644 (file)
@@ -1828,8 +1828,8 @@ ex_compiler(eap)
                do_cmdline_cmd((char_u *)
                              "command -nargs=* CompilerSet setlocal <args>");
            }
-           do_unlet((char_u *)"current_compiler");
-           do_unlet((char_u *)"b:current_compiler");
+           do_unlet((char_u *)"current_compiler", TRUE);
+           do_unlet((char_u *)"b:current_compiler", TRUE);
 
            sprintf((char *)buf, "compiler/%s.vim", eap->arg);
            if (cmd_runtime(buf, TRUE) == FAIL)
@@ -1853,7 +1853,7 @@ ex_compiler(eap)
                    vim_free(old_cur_comp);
                }
                else
-                   do_unlet((char_u *)"current_compiler");
+                   do_unlet((char_u *)"current_compiler", TRUE);
            }
        }
     }
index e0b545cf334f877aeb4e9d482a92047aa3fd3edf..7e6354932f274e63891ac488eef13d86338c641d 100644 (file)
@@ -3831,7 +3831,7 @@ gui_mch_destroy_sign(sign)
 #if defined(FEAT_BEVAL) || defined(PROTO)
 
 /* BALLOON-EVAL IMPLEMENTATION FOR WINDOWS.
- *  Added by Sergey Khorev
+ *  Added by Sergey Khorev <sergey.khorev@gmail.com>
  *
  * The only reused thing is gui_beval.h and gui_mch_get_beval_info()
  * from gui_beval.c (note it uses x and y of the BalloonEval struct
index f218ea421498f1f0165b1975224425cddaab0f1b..f4286e41200d0c2ed058b9417c701fb7d9e619b9 100644 (file)
@@ -1,7 +1,7 @@
 /* vi:set ts=8 sts=4 sw=4:
  *
  * CSCOPE support for Vim added by Andy Kahn <kahn@zk3.dec.com>
- * Ported to Win32 by Sergey Khorev <khorev@softlab.ru>
+ * Ported to Win32 by Sergey Khorev <sergey.khorev@gmail.com>
  *
  * The basic idea/structure of cscope for Vim was borrowed from Nvi.  There
  * might be a few lines of code that look similar to what Nvi has.
index 81051284e142fad944d0e7082190efb5b5656ea7..a88ba63a4a2b923317d6e8c62266bbdf5b9d6b25 100644 (file)
@@ -1,7 +1,7 @@
 /* vi:set ts=8 sts=4 sw=4:
  *
  * CSCOPE support for Vim added by Andy Kahn <kahn@zk3.dec.com>
- * Ported to Win32 by Sergey Khorev <khorev@softlab.ru>
+ * Ported to Win32 by Sergey Khorev <sergey.khorev@gmail.com>
  *
  * The basic idea/structure of cscope for Vim was borrowed from Nvi.
  * There might be a few lines of code that look similar to what Nvi
index 5aae15a889a844ff6900b9e3af5ced2e4a906b47..b540481cda9116ced0d1fd5ccd725098de4a4e34 100644 (file)
@@ -35,7 +35,6 @@
 #define NBDLEVEL(flags)                (nb_debug != NULL && (nb_dlevel & (flags)))
 
 #define NBDEBUG_TRACE  1
-//#define NBDEBUG_SENSE        2
 
 typedef enum {
                WT_ENV = 1,             /* look for env var if set */
index df2f8f547fb1c3431bf20b7771ce6f1734781def..0c6178d6320dd2da107cc7c44eefd1a3077fd36d 100644 (file)
@@ -4908,7 +4908,7 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
                /* The color scheme must have set 'background' back to another
                 * value, that's not what we want here.  Disable the color
                 * scheme and set the colors again. */
-               do_unlet((char_u *)"g:colors_name");
+               do_unlet((char_u *)"g:colors_name", TRUE);
                free_string_option(p_bg);
                p_bg = vim_strsave((char_u *)(dark ? "dark" : "light"));
                check_string_option(&p_bg);
index c570fb4a6f101aa4531ad4747d1d38476502eb04..d85ab2ef0646d5c6b55210956c34919c1b07a531 100644 (file)
@@ -27,7 +27,8 @@ void free_for_info __ARGS((void *fi_void));
 void set_context_for_expression __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
 void ex_call __ARGS((exarg_T *eap));
 void ex_unlet __ARGS((exarg_T *eap));
-int do_unlet __ARGS((char_u *name));
+void ex_lockvar __ARGS((exarg_T *eap));
+int do_unlet __ARGS((char_u *name, int forceit));
 void del_menutrans_vars __ARGS((void));
 char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
 char_u *get_function_name __ARGS((expand_T *xp, int idx));
@@ -42,7 +43,6 @@ char_u *v_throwpoint __ARGS((char_u *oldval));
 char_u *set_cmdarg __ARGS((exarg_T *eap, char_u *oldarg));
 char_u *get_var_value __ARGS((char_u *name));
 void new_script_vars __ARGS((scid_T id));
-void vars_init __ARGS((hashtab_T *ht));
 void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
 void vars_clear __ARGS((hashtab_T *ht));
 void ex_echo __ARGS((exarg_T *eap));
index 0435eb57bdfa202d1abd72c4ba2c0e37f042eaa6..6271b84c7242998507a8ca1f4b5ed9def86077e3 100644 (file)
@@ -4165,8 +4165,8 @@ win_line(wp, lnum, startrow, endrow)
 #ifdef FEAT_MBYTE
                    /* When there is a multi-byte character, just output a
                     * space to keep it simple. */
-                   if (has_mbyte && mb_off2cells(LineOffset[screen_row - 1]
-                                               + (unsigned)Columns - 1) != 1)
+                   if (has_mbyte && MB_BYTE2LEN(ScreenLines[LineOffset[
+                                       screen_row - 1] + (Columns - 1)]) > 1)
                        out_char(' ');
                    else
 #endif
index 6482e30c89f974fc5af8a311d0dcf8739aa5e7f9..9d7bc9205d9bb39df42be3b0c8740241644e266f 100644 (file)
@@ -963,7 +963,8 @@ typedef struct dictvar_S dict_T;
  */
 typedef struct
 {
-    char       v_type; /* see below: VAR_NUMBER, VAR_STRING, etc. */
+    char       v_type;     /* see below: VAR_NUMBER, VAR_STRING, etc. */
+    char       v_lock;     /* see below: VAR_LOCKED, VAR_FIXED */
     union
     {
        varnumber_T     v_number;       /* number value */
@@ -981,6 +982,10 @@ typedef struct
 #define VAR_LIST    4  /* "v_list" is used */
 #define VAR_DICT    5  /* "v_dict" is used */
 
+/* Values for "v_lock". */
+#define VAR_LOCKED  1  /* locked with lock(), can use unlock() */
+#define VAR_FIXED   2  /* locked forever */
+
 /*
  * Structure to hold an item of a list: an internal variable without a name.
  */
@@ -1013,6 +1018,7 @@ struct listvar_S
     listitem_T *lv_first;      /* first item, NULL if none */
     listitem_T *lv_last;       /* last item, NULL if none */
     listwatch_T        *lv_watch;      /* first watcher, NULL if none */
+    char       lv_lock;        /* zero, VAR_LOCKED, VAR_FIXED */
 };
 
 /*
@@ -1032,6 +1038,7 @@ typedef struct dictitem_S dictitem_T;
 #define DI_FLAGS_RO    1 /* "di_flags" value: read-only variable */
 #define DI_FLAGS_RO_SBX 2 /* "di_flags" value: read-only in the sandbox */
 #define DI_FLAGS_FIX   4 /* "di_flags" value: fixed variable, not allocated */
+#define DI_FLAGS_LOCK  8 /* "di_flags" value: locked variable */
 
 /*
  * Structure to hold info about a Dictionary.
@@ -1040,6 +1047,7 @@ struct dictvar_S
 {
     int                dv_refcount;    /* reference count */
     hashtab_T  dv_hashtab;     /* hashtab that refers to the items */
+    char       dv_lock;        /* zero, VAR_LOCKED, VAR_FIXED */
 };
 
 
index 7d015e1243d13703e521b7831413f5d452b2f015..4dc7b842272fd691e46b9025af3786624907e91b 100644 (file)
@@ -3212,7 +3212,7 @@ syn_cmd_clear(eap, syncing)
        else
        {
            syntax_clear(curbuf);
-           do_unlet((char_u *)"b:current_syntax");
+           do_unlet((char_u *)"b:current_syntax", TRUE);
        }
     }
     else
@@ -3313,7 +3313,7 @@ syn_cmd_enable(eap, syncing)
 {
     set_internal_string_var((char_u *)"syntax_cmd", (char_u *)"enable");
     syn_cmd_onoff(eap, "syntax");
-    do_unlet((char_u *)"g:syntax_cmd");
+    do_unlet((char_u *)"g:syntax_cmd", TRUE);
 }
 
 /*
@@ -3330,7 +3330,7 @@ syn_cmd_reset(eap, syncing)
     {
        set_internal_string_var((char_u *)"syntax_cmd", (char_u *)"reset");
        do_cmdline_cmd((char_u *)"runtime! syntax/syncolor.vim");
-       do_unlet((char_u *)"g:syntax_cmd");
+       do_unlet((char_u *)"g:syntax_cmd", TRUE);
     }
 }
 
@@ -6271,7 +6271,7 @@ do_highlight(line, forceit, init)
             */
 #endif
 #ifdef FEAT_EVAL
-           do_unlet((char_u *)"colors_name");
+           do_unlet((char_u *)"colors_name", TRUE);
 #endif
            restore_cterm_colors();
 
index 2fa26bf903ac0a2defe1afd3c664ca138bf20115..89fbaae2da5333e83dea20450103a05d4bb33e49 100644 (file)
@@ -2,7 +2,7 @@ Tests for List and Dictionary types.     vim: set ft=vim :
 
 STARTTEST
 :so small.vim
-:fun Test()
+:fun Test(...)
 :" Creating List directly with different types
 :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
 :$put =string(l)
@@ -27,12 +27,12 @@ STARTTEST
 :let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
 :$put =string(d) . d.1
 :$put =string(sort(keys(d)))
-:$put =string(values(d))
+:$put =string (values(d))
 :for [key, val] in items(d)
 :  $put =key . ':' . string(val)
 :  unlet key val
 :endfor
-:call extend(d, {3:33, 1:99})
+:call extend  (d, {3:33, 1:99})
 :call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")
 :try
 :  call extend(d, {3:333,4:444}, "error")
@@ -68,8 +68,12 @@ STARTTEST
 :unlet l[2]
 :$put =string(l)
 :let l = range(8)
+:try
 :unlet l[:3]
 :unlet l[1:]
+:catch
+:$put =v:exception
+:endtry
 :$put =string(l)
 :"
 :unlet d.c
@@ -143,7 +147,7 @@ STARTTEST
 :func d.func(a)
 :  return "a:". a:a
 :endfunc
-:$put = d.func(string(remove(d, 'func')))
+:$put =d.func(string(remove(d, 'func')))
 :"
 :" Nasty: deepcopy() dict that refers to itself (fails)
 :let d = {1:1, 2:2}
@@ -155,8 +159,102 @@ STARTTEST
 :  $put =v:exception[:14]
 :endtry
 :"
+:" Locked variables
+:for depth in range(5)
+:  $put ='depth is ' . depth
+:  for u in range(3)
+:    unlet l
+:    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]
+:    exe "lockvar " . depth . " l"
+:    if u == 1
+:      exe "unlockvar l"
+:    elseif u == 2
+:      exe "unlockvar " . depth . " l"
+:    endif
+:    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]")
+:    $put =ps
+:    let ps = ''
+:    try
+:      let l[1][1][0] = 99
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l[1][1] = [99]
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l[1] = [99]
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l[2]['6'][7] = 99
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l[2][6] = {99: 99}
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l[2] = {99: 99}
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    try
+:      let l = [99]
+:      let ps .= 'p'
+:    catch
+:      let ps .= 'F'
+:    endtry
+:    $put =ps
+:  endfor
+:endfor
+:"
+:" a:000 function argument
+:" first the tests that should fail
+:try
+:  let a:000 = [1, 2]
+:catch
+:  $put ='caught a:000'
+:endtry
+:try
+:  let a:000[0] = 9
+:catch
+:  $put ='caught a:000[0]'
+:endtry
+:try
+:  let a:000[2] = [9, 10]
+:catch
+:  $put ='caught a:000[2]'
+:endtry
+:try
+:  let a:000[3] = {9: 10}
+:catch
+:  $put ='caught a:000[3]'
+:endtry
+:" now the tests that should pass
+:try
+:  let a:000[2][1] = 9
+:  call extend(a:000[2], [5, 6])
+:  let a:000[3][5] = 8
+:  let a:000[3]['a'] = 12
+:  $put =string(a:000)
+:catch
+:  $put ='caught ' . v:exception
+:endtry
+:"
 :endfun
-:call Test()  " This may take a while
+:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
 :"
 :/^start:/,$wq! test.out
 ENDTEST
index 868b116fb12353736ba7660fa40ac31e13970164..922fdfc40411a7fa1f17bf220a185cd7c8854158 100644 (file)
@@ -30,3 +30,43 @@ Vim(call):E725:
 g:dict.func-4
 a:function('3')
 Vim(let):E698: 
+depth is 0
+0000-000
+ppppppp
+0000-000
+ppppppp
+0000-000
+ppppppp
+depth is 1
+1000-000
+ppppppF
+0000-000
+ppppppp
+0000-000
+ppppppp
+depth is 2
+1100-100
+ppFppFF
+0000-000
+ppppppp
+0000-000
+ppppppp
+depth is 3
+1110-110
+pFFpFFF
+0010-010
+pFppFpp
+0000-000
+ppppppp
+depth is 4
+1111-111
+FFFFFFF
+0011-011
+FFpFFpp
+0000-000
+ppppppp
+caught a:000
+caught a:000[0]
+caught a:000[2]
+caught a:000[3]
+[1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}]
index 3362a98775b96782bb03ef3d11a2977d5297876f..88aed5dda1996cac4caaeed5e318f10105eeed47 100644 (file)
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT      "vim70aa"
 #define VIM_VERSION_SHORT      "7.0aa"
 #define VIM_VERSION_MEDIUM     "7.0aa ALPHA"
-#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Jan 27)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Jan 27, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Jan 31)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Jan 31, compiled "