]> granicus.if.org Git - vim/commitdiff
updated for version 7.0037
authorBram Moolenaar <Bram@vim.org>
Tue, 11 Jan 2005 21:29:04 +0000 (21:29 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 11 Jan 2005 21:29:04 +0000 (21:29 +0000)
runtime/doc/eval.txt
runtime/doc/tags
runtime/keymap/polish-slash_iso-8859-2.vim [new file with mode: 0644]
src/ex_getln.c
src/gui_gtk.c
src/gui_mac.c
src/gui_photon.c
src/proto/ex_docmd.pro
src/quickfix.c
src/testdir/test49.vim
src/version.h

index 3f6889e983b4963f88b81bef318af89f4810eae0..b6407d101ceb569892c4d64d4bd4b1baa729f53f 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jan 09
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jan 11
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -223,7 +223,7 @@ and a variable name: >
 This works like: >
        :let var1 = mylist[0]
        :let var2 = mylist[1]
-       :let rest = mjlist[2:]
+       :let rest = mylist[2:]
 
 Except that there is no error if there are only two items.  "rest" will be an
 empty list then.
@@ -248,6 +248,7 @@ examples: >
        :call extend(list, [1, 2])      " extend the list with two more items
        :let i = remove(list, 3)        " remove item 3
        :let l = remove(list, 3, -1)    " remove items 3 to last item
+       :call filter(list, #& =~ 'x'#)  " remove items with an 'x'
 
 Changing the oder of items in a list: >
        :call sort(list)                " sort a list alphabetically
@@ -274,6 +275,9 @@ Note that all items in the list should be of the same type, otherwise this
 results in an error |E706|.  To avoid this |:unlet| the variable at the end of
 the loop.
 
+If all you want to do is modify each item in the list then the |map()|
+function might be a simpler method than a for loop.
+
 Just like the |:let| command, |:for| also accepts a list of variables.  This
 requires the argument to be a list of lists. >
        :for [lnum, col] in [[1, 3], [2, 8], [3, 0]]
@@ -304,8 +308,10 @@ Functions that are useful with a List: >
        :let i = index(list, 'x')       " index of first 'x' in list
        :let lines = getline(1, 10)     " get ten text lines from buffer
        :call append('$', lines)        " append text lines in buffer
-       :let list = str2list("a b c")   " create list from items in a string
+       :let list = split("a b c")      " create list from items in a string
+       :let string = join(list, ', ')  " create string from list items
        :let s = string()               " String representation of a list
+       :call map(list, #'>> ' . &#)    " prepend ">> " to each item
 
 
 1.4 More about variables ~
@@ -377,6 +383,7 @@ Expression syntax summary, from least to most significant:
 |expr9|        number                  number constant
        "string"                string constant, backslash is special
        'string'                string constant
+       #string#                string constant
        [expr1, ...]            List
        &option                 option value
        (expr1)                 nested expression
@@ -676,8 +683,8 @@ literal-string                                              *literal-string* *E115*
 Note that single quotes are used.
 
 This string is taken as it is.  No backslashes are removed or have a special
-meaning.  A literal-string cannot contain a single quote.  Use a normal,
-double-quoted string for that.
+meaning.  A literal-string cannot contain a single quote.  Use a double-quoted
+string or sharp-string for that.
 
 Single quoted strings are useful for patterns, so that backslashes do not need
 to be doubled.  These two commands are equivalent: >
@@ -685,6 +692,17 @@ to be doubled.  These two commands are equivalent: >
        if a =~ '\s*'
 
 
+sharp-string                                           *sharp-string*
+---------------
+#string#               string constant                 *expr-#*
+
+Most characters in the string are taken as-is.  Only the '#' character is
+special: It needs to be double to get one.
+
+Sharp-strings are useful when a string may contain single quotes, double
+quotes and/or backslashes.
+
+
 option                                         *expr-option* *E112* *E113*
 ------
 &option                        option value, local value if possible
@@ -1146,7 +1164,8 @@ col( {expr})                      Number  column nr of cursor or mark
 confirm( {msg} [, {choices} [, {default} [, {type}]]])
                                Number  number of choice picked by user
 copy( {expr})                  any     make a shallow copy of {expr}
-count( {list}, {expr} [, {ic}])         Number  count how many {expr} are in {list}
+count( {list}, {expr} [, {start} [, {ic}]])
+                               Number   count how many {expr} are in {list}
 cscope_connection( [{num} , {dbpath} [, {prepend}]])
                                Number  checks existence of cscope connection
 cursor( {lnum}, {col})         Number  position cursor at {lnum}, {col}
@@ -1157,13 +1176,17 @@ diff_filler( {lnum})            Number  diff filler lines about {lnum}
 diff_hlID( {lnum}, {col})      Number  diff highlighting at {lnum}/{col}
 empty( {expr})                 Number  TRUE if {expr} is empty
 escape( {string}, {chars})     String  escape {chars} in {string} with '\'
+eval( {string})                        any     evaluate {string} into its value 
 eventhandler( )                        Number  TRUE if inside an event handler
 executable( {expr})            Number  1 if executable {expr} exists
 exists( {expr})                        Number  TRUE if {expr} exists
 expand( {expr})                        String  expand special keywords in {expr}
 filereadable( {file})          Number  TRUE if {file} is a readable file
+filter( {list}, {expr})                List    remove from {list} where {expr} is 0
+finddir( {name}[, {path}[, {count}]])
+                               String  Find directory {name} in {path}
 findfile( {name}[, {path}[, {count}]])
-                               String  Find fine {name} in {path}
+                               String  Find file {name} in {path}
 filewritable( {file})          Number  TRUE if {file} is a writable file
 fnamemodify( {fname}, {mods})  String  modify file name
 foldclosed( {lnum})            Number  first line of fold at {lnum} if closed
@@ -1203,7 +1226,8 @@ hlID( {name})                     Number  syntax ID of highlight group {name}
 hostname()                     String  name of the machine Vim is running on
 iconv( {expr}, {from}, {to})   String  convert encoding of {expr}
 indent( {lnum})                        Number  indent of line {lnum}
-index( {list}, {expr} [, {ic}]) Number index in {list} where {expr} appears
+index( {list}, {expr} [, {start} [, {ic}]])
+                               Number  index in {list} where {expr} appears
 input( {prompt} [, {text}])    String  get input from the user
 inputdialog( {p} [, {t} [, {c}]]) String  like input() but in a GUI dialog
 inputrestore()                 Number  restore typeahead
@@ -1211,6 +1235,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
+join( {list} [, {sep}])                String  join {list} items into one String
 len( {expr})                   Number  the length of {expr}
 libcall( {lib}, {func}, {arg}) String  call {func} in library {lib} with {arg}
 libcallnr( {lib}, {func}, {arg})  Number  idem, but return a Number
@@ -1218,6 +1243,7 @@ line( {expr})                     Number  line nr of cursor, last line or mark
 line2byte( {lnum})             Number  byte count of line {lnum}
 lispindent( {lnum})            Number  Lisp indent for line {lnum}
 localtime()                    Number  current time
+map( {list}, {expr})           List    change each item in {list} to {expr}
 maparg( {name}[, {mode}])      String  rhs of mapping {name} in mode {mode}
 mapcheck( {name}[, {mode}])    String  check for mappings matching {name}
 match( {expr}, {pat}[, {start}[, {count}]])
@@ -1258,10 +1284,10 @@ setreg( {n}, {v}[, {opt}])      Number  set register to value and type
 setwinvar( {nr}, {varname}, {val})     set {varname} in window {nr} to {val}
 simplify( {filename})          String  simplify filename as much as possible
 sort( {list} [, {func}])       List    sort {list}, using {func} to compare
-str2list( {expr} [, {pat}])    List    make List from {pat} separated {expr}
+split( {expr} [, {pat}])       List    make List from {pat} separated {expr}
 strftime( {format}[, {time}])  String  time in specified format
 stridx( {haystack}, {needle})  Number  first index of {needle} in {haystack}
-string( {expr})                        String  {expr} converted to a String
+string( {expr})                        String  String representation of {expr} value
 strlen( {expr})                        Number  length of the String {expr}
 strpart( {src}, {start}[, {len}])
                                String  {len} characters of {src} at {start}
@@ -1571,9 +1597,10 @@ copy({expr})     Make a copy of {expr}.  For Numbers and Strings this isn't
                changing an item changes the contents of both Lists.  Also see
                |deepcopy()|.
 
-count({list}, {expr} [, {ic}])                                 *count()*
+count({list}, {expr} [, {start} [, {ic}]])                     *count()*
                Return the number of times an item with value {expr} appears
                in List {list}.
+               If {start} is given then don't count items with a lower index.
                When {ic} is given and it's non-zero then case is ignored.
 
 
@@ -1690,7 +1717,13 @@ escape({string}, {chars})                                *escape()*
                        :echo escape('c:\program files\vim', ' \')
 <              results in: >
                        c:\\program\ files\\vim
-<
+
+<                                                      *eval()*
+eval({string}) Evaluate {string} and return the result.  Especially useful to
+               turn the result of |string()| back into the original value.
+               This works for Numbers, Strings and composites of them.
+               Also works for Funcrefs that refer to existing functions.
+
 eventhandler()                                         *eventhandler()*
                Returns 1 when inside an event handler.  That is that Vim got
                interrupted while waiting for the user to type a character,
@@ -1845,7 +1878,7 @@ extend({list1}, {list2} [, {idx}])                        *extend()*
                Append {list2} to {list1}.
                If {idx} is given insert the items of {list2} before item
                {idx} in {list1}.  When {idx} is zero insert before the first
-               item.  When {idx} is equal to len({list1}) {list2} is
+               item.  When {idx} is equal to len({list1}) then {list2} is
                appended.
                {list1} is changed when {list2} is not empty.
                {list2} remains unchanged.
@@ -1866,6 +1899,23 @@ filereadable({file})                                     *filereadable()*
                                                        *file_readable()*
                Obsolete name: file_readable().
 
+
+filter({list}, {expr})                                 *filter()* *E712*
+               For each item in {list} evaluate {expr} and when the result is
+               zero remove the item from the List.
+               Inside {expr} the symbol "&" stands for the existing
+               item.  Example: >
+                       :call filter(mylist, #& !~ "OLD"#)
+<              Removes the items where "OLD" appears.
+               Note that {expr} is an expression that evaluates to an
+               expression.  Often it is good to use a |sharp-string| to avoid
+               having to double backslashes.
+               The operation is done in-place.  If you want a list to remain
+               unmodified make a copy first: >
+                       :let l = filter(copy(mylist), #& =~ "KEEP"#)
+<              Returns {list}.
+
+
 finddir({name}[, {path}[, {count}]])                           *finddir()*
                Find directory {name} in {path}.
                If {path} is omitted or empty then 'path' is used.
@@ -2036,7 +2086,7 @@ getcmdline()                                              *getcmdline()*
                        :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
 <              Also see |getcmdpos()| and |setcmdpos()|.
 
-getcmdpos({pos})                                       *getcmdpos()*
+getcmdpos()                                            *getcmdpos()*
                Return the position of the cursor in the command line as a
                byte count.  The first column is 1.
                Only works when editing the command line, thus requires use of
@@ -2358,9 +2408,10 @@ indent({lnum})   The result is a Number, which is indent of line {lnum} in the
                When {lnum} is invalid -1 is returned.
 
 
-index({list}, {expr} [, {ic}])                         *index()*
+index({list}, {expr} [, {start} [, {ic}]])                     *index()*
                Return the lowest index in List {list} where the item has a
                value equal to {expr}.
+               If {start} is given then skip items with a lower index.
                When {ic} is given and it is non-zero, ignore case.  Otherwise
                case must match.
                -1 is returned when {expr} is not found in {list}.
@@ -2461,6 +2512,18 @@ isdirectory({directory})                         *isdirectory()*
                exist, or isn't a directory, the result is FALSE.  {directory}
                is any expression, which is used as a String.
 
+
+join({list} [, {sep}])                                 *join()*
+               Join the items in {list} together into one String.
+               When {sep} is specified it is put in between the items.  If
+               {sep} is omitted a single space is used.
+               Note that {sep} is not added at the end.  You might want to
+               add it there too: >
+                       let lines = join(mylist, "\n") . "\n"
+<              String items are used as-is.  Lists and Dictionaries are
+               converted into a string like with |string()|.
+               The opposite function is |split()|.
+
                                                        *len()* *E701*
 len({expr})    The result is a Number, which is the length of the argument.
                When {expr} is a String or a Number the length in bytes is
@@ -2568,6 +2631,23 @@ localtime()                                              *localtime()*
                Return the current time, measured as seconds since 1st Jan
                1970.  See also |strftime()| and |getftime()|.
 
+
+map({list}, {expr})                                    *map()*
+               Replace each item in {list} with the result of evaluating
+               {expr}.
+               Inside {expr} the symbol "&" stands for the existing
+               item.  Example: >
+                       :call map(mylist, #"> " . & . " <"#)
+<              This puts "> " before and " <" after each item in "mylist".
+               Note that {expr} is an expression that evaluates to an
+               expression.  Often it is good to use a |sharp-string| to avoid
+               having to double backslashes.
+               The operation is done in-place.  If you want a list to remain
+               unmodified make a copy first: >
+                       :let tlist = map(copy(mylist), # & . "\t"#)
+<              Returns {list}.
+
+
 maparg({name}[, {mode}])                               *maparg()*
                Return the rhs of mapping {name} in mode {mode}.  When there
                is no mapping for {name}, an empty String is returned.
@@ -2617,29 +2697,40 @@ mapcheck({name}[, {mode}])                              *mapcheck()*
                mapping for "_v" or for "_vvv".
 
 match({expr}, {pat}[, {start}[, {count}]])                     *match()*
-               The result is a Number, which gives the index (byte offset) in
-               {expr} where {pat} matches.
-               A match at the first character returns zero.
+               When {expr} is a List then this returns the index of the first
+               item where {pat} matches.  Each item is used as a String,
+               Lists and Dictionaries are used as echoed.
+               Otherwise, {expr} is used as a String.  The result is a
+               Number, which gives the index (byte offset) in {expr} where
+               {pat} matches.
+               A match at the first character or List item returns zero.
                If there is no match -1 is returned.
                Example: >
-                       :echo match("testing", "ing")
-<              results in "4".
-               See |string-match| for how {pat} is used.
+                       :echo match("testing", "ing")   " results in 4
+                       :echo match([1, 'x'], '\a')     " results in 2
+<              See |string-match| for how {pat} is used.
+
                When {count} is given use the {count}'th match.  When a match
-               is found the search for the next one starts on character
-               further.  Thus this example results in 1: >
+               is found in a String the search for the next one starts on
+               character further.  Thus this example results in 1: >
                        echo match("testing", "..", 0, 2)
-<              If {start} is given, the search starts from index {start}.
+<              In a List the search continues in the next item.
+
+               If {start} is given, the search starts from byte index
+               {start} in a String or item {start} in a List.
                The result, however, is still the index counted from the
-               first character. Example: >
+               first character/item. Example: >
                        :echo match("testing", "ing", 2)
 <              result is again "4". >
                        :echo match("testing", "ing", 4)
 <              result is again "4". >
                        :echo match("testing", "t", 2)
 <              result is "3".
-               If {start} < 0, it will be set to 0.
-               If {start} > strlen({expr}) -1 is returned.
+               For a String, if {start} < 0, it will be set to 0.  For a list
+               the index is counted from the end.
+               If {start} is out of range (> strlen({expr} for a String or
+               > len({expr} for a List) -1 is returned.
+
                See |pattern| for the patterns that are accepted.
                The 'ignorecase' option is used to set the ignore-caseness of
                the pattern.  'smartcase' is NOT used.  The matching is always
@@ -2655,6 +2746,7 @@ matchend({expr}, {pat}[, {start}[, {count}]])                     *matchend()*
 <              results in "7". >
                        :echo matchend("testing", "ing", 5)
 <              result is "-1".
+               When {expr} is a List the result is equal to match().
 
 matchstr({expr}, {pat}[, {start}[, {count}]])                  *matchstr()*
                Same as match(), but return the matched string.  Example: >
@@ -2666,6 +2758,8 @@ matchstr({expr}, {pat}[, {start}[, {count}]])                     *matchstr()*
 <              results in "ing". >
                        :echo matchstr("testing", "ing", 5)
 <              result is "".
+               When {expr} is a List then the matching item is returned.
+               The type isn't changed, it's not necessarily a String.
 
                                                        *max()*
 max({list})    Return the maximum value of all items in {list}.
@@ -3076,6 +3170,7 @@ sort({list} [, {func}])                                   *sort()* *E702*
                want a list to remain unmodified make a copy first: >
                        :let sortedlist = sort(copy(mylist))
 <              Uses the string representation of each item to sort on.
+               Numbers sort after Strings, Lists after Numbers.
                When {func} is given and it is one then case is ignored.
                When {func} is a Funcref or a function name, this function is
                called to compare items.  The function is invoked with two
@@ -3087,15 +3182,16 @@ sort({list} [, {func}])                                 *sort()* *E702*
                        endfunc
                        let sortedlist = sort(mylist, "MyCompare")
 
-str2list({expr} [, {pattern}])                         *str2list()*
+split({expr} [, {pattern}])                            *split()*
                Make a List out of {expr}.  When {pattern} is omitted each
                white-separated sequence of characters becomes an item.
                Otherwise the string is split where {pattern} matches,
                removing the matched characters.  Empty strings are omitted.
                Example: >
-                       :let words = str2list(getline('.'), '\W\+')
+                       :let words = split(getline('.'), '\W\+')
 <              Since empty strings are not added the "\+" isn't required but
                it makes the function work a bit faster.
+               The opposite function is |join()|.
 
 
 strftime({format} [, {time}])                          *strftime()*
@@ -3129,14 +3225,15 @@ stridx({haystack}, {needle})                            *stridx()*
                  :echo stridx("Starting point", "start")   -1
 <
                                                        *string()*
-string({expr}) Return {expr} converted to a String.
+string({expr}) Return {expr} converted to a String.  If {expr} is a Number,
+               String or a composition of them, then the result can be parsed
+               back with |eval()|.
                        {expr} type     result ~
-                       String          identical
-                       Number          decimal representation
-                       Funcref         name of the function
-                       List            "[item, item]" form
-               Note that string values are not in quotes, thus the result
-               can't be parsed back to a List.
+                       String          #string#
+                       Number          123
+                       Funcref         function(#name#)
+                       List            [item, item]
+               Note that in String values the # character is doubled.
 
                                                        *strlen()*
 strlen({expr}) The result is a Number, which is the length of the String
index 286d9f3b1aad3938dfd4bedecb34e2bfb3192c0d..414407738d96a40faf52dea37b6849f30e8c6235 100644 (file)
@@ -3600,7 +3600,12 @@ E704     eval.txt        /*E704*
 E705   eval.txt        /*E705*
 E706   eval.txt        /*E706*
 E707   eval.txt        /*E707*
+E708   eval.txt        /*E708*
+E709   eval.txt        /*E709*
 E71    pattern.txt     /*E71*
+E710   eval.txt        /*E710*
+E711   eval.txt        /*E711*
+E712   eval.txt        /*E712*
 E72    message.txt     /*E72*
 E73    tagsrch.txt     /*E73*
 E74    message.txt     /*E74*
@@ -4576,6 +4581,7 @@ escape    intro.txt       /*escape*
 escape()       eval.txt        /*escape()*
 escape-bar     version4.txt    /*escape-bar*
 eval   eval.txt        /*eval*
+eval() eval.txt        /*eval()*
 eval-examples  eval.txt        /*eval-examples*
 eval-sandbox   eval.txt        /*eval-sandbox*
 eval.txt       eval.txt        /*eval.txt*
@@ -4623,6 +4629,7 @@ expr-!=?  eval.txt        /*expr-!=?*
 expr-!~        eval.txt        /*expr-!~*
 expr-!~#       eval.txt        /*expr-!~#*
 expr-!~?       eval.txt        /*expr-!~?*
+expr-# eval.txt        /*expr-#*
 expr-% eval.txt        /*expr-%*
 expr-&&        eval.txt        /*expr-&&*
 expr-' eval.txt        /*expr-'*
@@ -4713,6 +4720,7 @@ filetypedetect-changed    version6.txt    /*filetypedetect-changed*
 filetypes      filetype.txt    /*filetypes*
 filewritable() eval.txt        /*filewritable()*
 filter change.txt      /*filter*
+filter()       eval.txt        /*filter()*
 find-manpage   usr_12.txt      /*find-manpage*
 find-replace   usr_10.txt      /*find-replace*
 finddir()      eval.txt        /*finddir()*
@@ -5276,6 +5284,7 @@ java-cinoptions   indent.txt      /*java-cinoptions*
 java-indenting indent.txt      /*java-indenting*
 java-syntax    syntax.txt      /*java-syntax*
 java.vim       syntax.txt      /*java.vim*
+join() eval.txt        /*join()*
 jsbterm-mouse  options.txt     /*jsbterm-mouse*
 jtags  tagsrch.txt     /*jtags*
 jump-motions   motion.txt      /*jump-motions*
@@ -5381,6 +5390,7 @@ make-syntax       syntax.txt      /*make-syntax*
 make.vim       syntax.txt      /*make.vim*
 man-plugin     filetype.txt    /*man-plugin*
 manual-copyright       usr_01.txt      /*manual-copyright*
+map()  eval.txt        /*map()*
 map-<SID>      map.txt /*map-<SID>*
 map-ambiguous  map.txt /*map-ambiguous*
 map-backtick   tips.txt        /*map-backtick*
@@ -5418,6 +5428,7 @@ match-highlight   pattern.txt     /*match-highlight*
 matchend()     eval.txt        /*matchend()*
 matchit-install        usr_05.txt      /*matchit-install*
 matchstr()     eval.txt        /*matchstr()*
+max()  eval.txt        /*max()*
 mbyte-IME      mbyte.txt       /*mbyte-IME*
 mbyte-XIM      mbyte.txt       /*mbyte-XIM*
 mbyte-conversion       mbyte.txt       /*mbyte-conversion*
@@ -5441,6 +5452,7 @@ message-history   message.txt     /*message-history*
 message.txt    message.txt     /*message.txt*
 messages       message.txt     /*messages*
 meta   intro.txt       /*meta*
+min()  eval.txt        /*min()*
 minimal-features       os_msdos.txt    /*minimal-features*
 missing-commands       vi_diff.txt     /*missing-commands*
 missing-options        vi_diff.txt     /*missing-options*
@@ -6048,6 +6060,7 @@ sgml-syntax       syntax.txt      /*sgml-syntax*
 sgml.vim       syntax.txt      /*sgml.vim*
 sh-syntax      syntax.txt      /*sh-syntax*
 sh.vim syntax.txt      /*sh.vim*
+sharp-string   eval.txt        /*sharp-string*
 shell-window   tips.txt        /*shell-window*
 shell_error-variable   eval.txt        /*shell_error-variable*
 shift  intro.txt       /*shift*
@@ -6081,6 +6094,7 @@ spec_chglog_prepend       pi_spec.txt     /*spec_chglog_prepend*
 spec_chglog_release_info       pi_spec.txt     /*spec_chglog_release_info*
 special-buffers        windows.txt     /*special-buffers*
 speed-up       tips.txt        /*speed-up*
+split()        eval.txt        /*split()*
 splitfind      windows.txt     /*splitfind*
 splitview      windows.txt     /*splitview*
 sponsor        sponsor.txt     /*sponsor*
@@ -6107,7 +6121,6 @@ startup-terminal  term.txt        /*startup-terminal*
 static-tag     tagsrch.txt     /*static-tag*
 status-line    windows.txt     /*status-line*
 statusmsg-variable     eval.txt        /*statusmsg-variable*
-str2list()     eval.txt        /*str2list()*
 strftime()     eval.txt        /*strftime()*
 stridx()       eval.txt        /*stridx()*
 string()       eval.txt        /*string()*
diff --git a/runtime/keymap/polish-slash_iso-8859-2.vim b/runtime/keymap/polish-slash_iso-8859-2.vim
new file mode 100644 (file)
index 0000000..a6d9d97
--- /dev/null
@@ -0,0 +1,38 @@
+" Polish letters keymap for iso-8859-2
+" Maintainer:  HS6_06  <hs6_06@o2.pl>
+" Last Changed:        2005 Jan 9
+
+" This keymap adds the special Polish letters 
+" to an existing Latin keyboard.
+" All chars as usual except:
+" Polish:
+"   instead of AltGr+{acelnosxz} you ve to use "/" followed by {acelnosxz}
+
+" short keymap name for statusline
+let b:keymap_name = "polish-slash-iso-8859-2"
+
+scriptencoding latin1
+
+loadkeymap
+
+" Polish letters
+/a     <Char-177>      " LATIN SMALL LETTER A WITH OGONEK
+/c     <Char-230>      " LATIN SMALL LETTER C WITH ACUTE
+/e     <Char-234>      " LATIN SMALL LETTER E WITH OGONEK
+/l     <Char-179>      " LATIN SMALL LETTER L WITH STROKE
+/n     <Char-241>      " LATIN SMALL LETTER N WITH ACUTE
+/o     <Char-243>      " LATIN SMALL LETTER O WITH ACUTE
+/s     <Char-182>      " LATIN SMALL LETTER S WITH ACUTE
+/x     <Char-188>      " LATIN SMALL LETTER Z WITH ACUTE
+/z     <Char-191>      " LATIN SMALL LETTER Z WITH DOT ABOVE
+
+/A     <Char-161>      " LATIN CAPITAL LETTER A WITH OGONEK
+/C     <Char-198>      " LATIN CAPITAL LETTER C WITH ACUTE
+/E     <Char-202>      " LATIN CAPITAL LETTER E WITH OGONEK
+/L     <Char-163>      " LATIN CAPITAL LETTER L WITH STROKE
+/N     <Char-209>      " LATIN CAPITAL LETTER N WITH ACUTE
+/O     <Char-211>      " LATIN CAPITAL LETTER O WITH ACUTE
+/S     <Char-166>      " LATIN CAPITAL LETTER S WITH ACUTE
+/X     <Char-172>      " LATIN CAPITAL LETTER Z WITH ACUTE
+/Z     <Char-175>      " LATIN CAPITAL LETTER Z WITH DOT ABOVE
+
index 9122ab4918ac8fdae6d36cd9099b91b4409c0e68..e17e671efabe84c9e51c5e18e161b1ff99b2adc0 100644 (file)
@@ -80,6 +80,8 @@ static void   correct_cmdspos __ARGS((int idx, int cells));
 static void    alloc_cmdbuff __ARGS((int len));
 static int     realloc_cmdbuff __ARGS((int len));
 static void    draw_cmdline __ARGS((int start, int len));
+static void    save_cmdline __ARGS((struct cmdline_info *ccp));
+static void    restore_cmdline __ARGS((struct cmdline_info *ccp));
 static int     cmdline_paste __ARGS((int regname, int literally));
 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
 static void    redrawcmd_preedit __ARGS((void));
@@ -593,8 +595,8 @@ getcmdline(firstc, count, indent)
 #ifdef FEAT_EVAL
            else if (c == 'e')
            {
-               struct cmdline_info         save_ccline;
-               char_u              *p;
+               struct cmdline_info save_ccline;
+               char_u              *p = NULL;
 
                /*
                 * Replace the command line with the result of an expression.
@@ -605,16 +607,17 @@ getcmdline(firstc, count, indent)
                    new_cmdpos = 99999; /* keep it at the end */
                else
                    new_cmdpos = ccline.cmdpos;
-               save_ccline = ccline;
-               ccline.cmdbuff = NULL;
-               ccline.cmdprompt = NULL;
+
+               save_cmdline(&save_ccline);
                c = get_expr_register();
-               ccline = save_ccline;
+               restore_cmdline(&save_ccline);
                if (c == '=')
                {
+                   save_cmdline(&save_ccline);
                    p = get_expr_line();
-                   if (p != NULL
-                            && realloc_cmdbuff((int)STRLEN(p) + 1) == OK)
+                   restore_cmdline(&save_ccline);
+
+                   if (p != NULL && realloc_cmdbuff((int)STRLEN(p) + 1) == OK)
                    {
                        ccline.cmdlen = STRLEN(p);
                        STRCPY(ccline.cmdbuff, p);
@@ -1031,11 +1034,9 @@ getcmdline(firstc, count, indent)
                    }
                    else
                    {
-                       save_ccline = ccline;
-                       ccline.cmdbuff = NULL;
-                       ccline.cmdprompt = NULL;
+                       save_cmdline(&save_ccline);
                        c = get_expr_register();
-                       ccline = save_ccline;
+                       restore_cmdline(&save_ccline);
                    }
                }
 #endif
@@ -1727,7 +1728,13 @@ returncmd:
     ui_cursor_shape();         /* may show different cursor shape */
 #endif
 
-    return ccline.cmdbuff;
+    {
+       char_u *p = ccline.cmdbuff;
+
+       /* Make ccline empty, getcmdline() may try to use it. */
+       ccline.cmdbuff = NULL;
+       return p;
+    }
 }
 
 #if (defined(FEAT_CRYPT) || defined(FEAT_EVAL)) || defined(PROTO)
@@ -1747,12 +1754,11 @@ getcmdline_prompt(firstc, prompt, attr)
     struct cmdline_info        save_ccline;
     int                        msg_col_save = msg_col;
 
-    save_ccline = ccline;
-    ccline.cmdbuff = NULL;
+    save_cmdline(&save_ccline);
     ccline.cmdprompt = prompt;
     ccline.cmdattr = attr;
     s = getcmdline(firstc, 1L, 0);
-    ccline = save_ccline;
+    restore_cmdline(&save_ccline);
     /* Restore msg_col, the prompt from input() may have changed it. */
     msg_col = msg_col_save;
 
@@ -2538,6 +2544,40 @@ put_on_cmdline(str, len, redraw)
     return retval;
 }
 
+static struct cmdline_info  prev_ccline;
+static int                 prev_ccline_used = FALSE;
+
+/*
+ * Save ccline, because obtaining the "=" register may execute "normal :cmd"
+ * and overwrite it.  But get_cmdline_str() may need it, thus make it
+ * available globally in prev_ccline.
+ */
+    static void
+save_cmdline(ccp)
+    struct cmdline_info *ccp;
+{
+    if (!prev_ccline_used)
+    {
+       vim_memset(&prev_ccline, 0, sizeof(struct cmdline_info));
+       prev_ccline_used = TRUE;
+    }
+    *ccp = prev_ccline;
+    prev_ccline = ccline;
+    ccline.cmdbuff = NULL;
+    ccline.cmdprompt = NULL;
+}
+
+/*
+ * Resture ccline after it has been saved with save_cmdline().
+ */
+    static void
+restore_cmdline(ccp)
+    struct cmdline_info *ccp;
+{
+    ccline = prev_ccline;
+    prev_ccline = *ccp;
+}
+
 /*
  * paste a yank register into the command line.
  * used by CTRL-R command in command-line mode
@@ -2572,13 +2612,10 @@ cmdline_paste(regname, literally)
     regname = may_get_selection(regname);
 #endif
 
-    /* Need to save and restore ccline, because obtaining the "=" register may
-     * execute "normal :cmd" and overwrite it. */
-    save_ccline = ccline;
-    ccline.cmdbuff = NULL;
-    ccline.cmdprompt = NULL;
+    /* Need to save and restore ccline. */
+    save_cmdline(&save_ccline);
     i = get_spec_reg(regname, &arg, &allocated, TRUE);
-    ccline = save_ccline;
+    restore_cmdline(&save_ccline);
 
     if (i)
     {
@@ -4534,6 +4571,24 @@ get_history_idx(histype)
     return history[histype][hisidx[histype]].hisnum;
 }
 
+static struct cmdline_info *get_ccline_ptr __ARGS((void));
+
+/*
+ * Get pointer to the command line info to use. cmdline_paste() may clear
+ * ccline and put the previous value in prev_ccline.
+ */
+    static struct cmdline_info *
+get_ccline_ptr()
+{
+    if ((State & CMDLINE) == 0)
+       return NULL;
+    if (ccline.cmdbuff != NULL)
+       return &ccline;
+    if (prev_ccline_used && prev_ccline.cmdbuff != NULL)
+       return &prev_ccline;
+    return NULL;
+}
+
 /*
  * Get the current command line in allocated memory.
  * Only works when the command line is being edited.
@@ -4542,9 +4597,11 @@ get_history_idx(histype)
     char_u *
 get_cmdline_str()
 {
-    if (ccline.cmdbuff == NULL || (State & CMDLINE) == 0)
+    struct cmdline_info *p = get_ccline_ptr();
+
+    if (p == NULL)
        return NULL;
-    return vim_strnsave(ccline.cmdbuff, ccline.cmdlen);
+    return vim_strnsave(p->cmdbuff, p->cmdlen);
 }
 
 /*
@@ -4556,9 +4613,11 @@ get_cmdline_str()
     int
 get_cmdline_pos()
 {
-    if (ccline.cmdbuff == NULL || (State & CMDLINE) == 0)
+    struct cmdline_info *p = get_ccline_ptr();
+
+    if (p == NULL)
        return -1;
-    return ccline.cmdpos;
+    return p->cmdpos;
 }
 
 /*
@@ -4570,7 +4629,9 @@ get_cmdline_pos()
 set_cmdline_pos(pos)
     int                pos;
 {
-    if (ccline.cmdbuff == NULL || (State & CMDLINE) == 0)
+    struct cmdline_info *p = get_ccline_ptr();
+
+    if (p == NULL)
        return 1;
 
     /* The position is not set directly but after CTRL-\ e or CTRL-R = has
index e9e6d5b52a52f7e6684b2bcc9d5fb59333c39a5e..75103087b3090d17d96bea477e84150516f1bcf8 100644 (file)
@@ -1422,7 +1422,7 @@ gui_mch_browsedir(
 
 #endif /* FEAT_BROWSE */
 
-#if (defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)) || defined(PROTO)
+#if defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)
 
 static char_u *dialog_textfield = NULL;
 static GtkWidget *dialog_textentry;
@@ -1956,7 +1956,7 @@ gui_mch_dialog(   int     type,           /* type of dialog */
 #endif /* FEAT_GUI_DIALOG && !HAVE_GTK2 */
 
 
-#if defined(FEAT_GUI_DIALOG) && defined(HAVE_GTK2)
+#if (defined(FEAT_GUI_DIALOG) && defined(HAVE_GTK2)) || defined(PROTO)
 
     static GtkWidget *
 create_message_dialog(int type, char_u *title, char_u *message)
index b930852a48c5a611386ea942d6ddc9b41ecfdea5..dbdda8a0da6c6c6eb5c88c34203a196d589b39f0 100644 (file)
@@ -5674,7 +5674,8 @@ display_errors()
 /*
  * Get current mouse coordinates in text window.
  */
-void gui_mch_getmouse(int *x, int *y)
+    void
+gui_mch_getmouse(int *x, int *y)
 {
     Point where;
 
index fc96cc187886d6c0eb6ec1a146bf05ca68a27564..d4360fe80561dd5e92f280c5dbef8b5b4d20703e 100644 (file)
@@ -1895,7 +1895,7 @@ gui_mch_mousehide(int hide)
     }
 }
 
-    int
+    void
 gui_mch_getmouse(int *x, int *y)
 {
     PhCursorInfo_t info;
index 9fabda446f468c51f0867cc2cac8e4a14030f480..0a8b5d3685f07d565826c0533c6431888b9e74e8 100644 (file)
@@ -4,6 +4,7 @@ int do_cmdline_cmd __ARGS((char_u *cmd));
 int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
 int getline_equal __ARGS((char_u *(*getline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
 void *getline_cookie __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
+int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
 int cmd_exists __ARGS((char_u *name));
 char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
 char_u *skip_range __ARGS((char_u *cmd, int *ctx));
index fd6eba648c3b6c0a274a4bfdc3b95047959dfe4a..625d19d0c37956613ee4ae14b61aba3dbefc0005 100644 (file)
@@ -2295,7 +2295,7 @@ ex_vimgrep(eap)
     regmatch.regprog = vim_regcomp(s, RE_MAGIC);
     if (regmatch.regprog == NULL)
        goto theend;
-    regmatch.rmm_ic = FALSE;
+    regmatch.rmm_ic = p_ic;
 
     p = skipwhite(p);
     if (*p == NUL)
index e742a9622208701b92f9dc34046ff34778ed9ec0..4c2c0013ebd1fe2d374212982d7bf0eddb6ee84f 100644 (file)
@@ -1,6 +1,6 @@
 " Vim script language tests
 " Author:      Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change: 2004 Apr 03
+" Last Change: 2005 Jan 11
 
 "-------------------------------------------------------------------------------
 " Test environment                                                         {{{1
@@ -8433,7 +8433,7 @@ if ExtraVim()
     call T(23, '(1 ? 2) + CONT(23)',   'E109', "Missing ':' after '?'")
     call T(24, '("abc) + CONT(24)',    'E114', "Missing quote")
     call T(25, "('abc) + CONT(25)",    'E115', "Missing quote")
-    call T(26, '& + CONT(26)',         'E112', "Option name missing")
+    call T(26, '& + CONT(26)',         'E712', "Using & outside of map()")
     call T(27, '&asdf + CONT(27)',     'E113', "Unknown option")
 
     Xpath 134217728                            " X: 134217728
index a1852310eaff7f8d8962b1cd1f9310553d34565e..033ea70b8953a552b2d893e6fad2dd4d1b155a5c 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 (2004 Jan 9)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 9, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 11)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 11, compiled "