diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-30 20:38:27 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-30 20:38:27 +0200 |
commit | e46a4405056276b4cbdacee76b11f85c8ea1830b (patch) | |
tree | 451f1881faeba3fa4acff2aa18068b8cc749f3d6 /runtime | |
parent | de8f0f47f653ff10bd8cc12b3e0817ed5bdf64ea (diff) |
Runtime file updates
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/eval.txt | 98 | ||||
-rw-r--r-- | runtime/doc/if_lua.txt | 2 | ||||
-rw-r--r-- | runtime/doc/tags | 2 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 124 | ||||
-rw-r--r-- | runtime/doc/vim9.txt | 45 | ||||
-rw-r--r-- | runtime/filetype.vim | 2 | ||||
-rw-r--r-- | runtime/syntax/neomuttrc.vim | 1216 |
7 files changed, 650 insertions, 839 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 6057b57c63..10b57b7b87 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2020 Jun 17 +*eval.txt* For Vim version 8.2. Last change: 2020 Jun 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -157,7 +157,7 @@ You will not get an error if you try to change the type of a variable. 1.2 Function references ~ - *Funcref* *E695* *E718* + *Funcref* *E695* *E718* A Funcref variable is obtained with the |function()| function, the |funcref()| function or created with the lambda expression |expr-lambda|. It can be used in an expression in the place of a function name, before the parenthesis @@ -2511,13 +2511,15 @@ getjumplist([{winnr} [, {tabnr}]]) List list of jump list items getline({lnum}) String line {lnum} of current buffer getline({lnum}, {end}) List lines {lnum} to {end} of current buffer -getloclist({nr} [, {what}]) List list of location list items +getloclist({nr}) List list of location list items +getloclist({nr}, {what}) Dict get specific location list properties getmarklist([{expr}]) List list of global/local marks getmatches([{win}]) List list of current matches getmousepos() Dict last known mouse position getpid() Number process ID of Vim getpos({expr}) List position of cursor, mark, etc. -getqflist([{what}]) List list of quickfix items +getqflist() List list of quickfix items +getqflist({what}) Dict get specific quickfix list properties getreg([{regname} [, 1 [, {list}]]]) String or List contents of a register getreginfo([{regname}]) Dict information about a register @@ -2756,12 +2758,15 @@ setcmdpos({pos}) Number set cursor position in command-line setenv({name}, {val}) none set environment variable setfperm({fname}, {mode}) Number set {fname} file permissions to {mode} setline({lnum}, {line}) Number set line {lnum} to {line} -setloclist({nr}, {list} [, {action} [, {what}]]) - Number modify location list using {list} +setloclist({nr}, {list} [, {action}]) + Number modify location list using {list} +setloclist({nr}, {list}, {action}, {what}) + Number modify specific location list props setmatches({list} [, {win}]) Number restore a list of matches setpos({expr}, {list}) Number set the {expr} position to {list} -setqflist({list} [, {action} [, {what}]]) - Number modify quickfix list using {list} +setqflist({list} [, {action}]) Number modify quickfix list using {list} +setqflist({list}, {action}, {what}) + Number modify specific quickfix list props setreg({n}, {v} [, {opt}]) Number set register to value and type settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val} settabwinvar({tabnr}, {winnr}, {varname}, {val}) @@ -3635,7 +3640,7 @@ complete_check() *complete_check()* *complete_info()* complete_info([{what}]) - Returns a Dictionary with information about Insert mode + Returns a |Dictionary| with information about Insert mode completion. See |ins-completion|. The items are: mode Current completion mode name string. @@ -4862,7 +4867,7 @@ getbufinfo([{dict}]) Without an argument information about all the buffers is returned. - When the argument is a Dictionary only the buffers matching + When the argument is a |Dictionary| only the buffers matching the specified criteria are returned. The following keys can be specified in {dict}: buflisted include only listed buffers. @@ -5393,7 +5398,7 @@ getline({lnum} [, {end}]) < To get lines from another buffer see |getbufline()| getloclist({nr} [, {what}]) *getloclist()* - Returns a list with all the entries in the location list for + Returns a |List| with all the entries in the location list for window {nr}. {nr} can be the window number or the |window-ID|. When {nr} is zero the current window is used. @@ -5415,6 +5420,14 @@ getloclist({nr} [, {what}]) *getloclist()* |location-list-file-window| for more details. + Returns an empty Dictionary if there is no location list for + the window {nr} or the window is not present. + + Examples (See also |getqflist-examples|): > + :echo getloclist(3, {'all': 0}) + :echo getloclist(5, {'filewinid': 0}) + + getmarklist([{expr}] *getmarklist()* Without the {expr} argument returns a |List| with information about all the global marks. |mark| @@ -5459,7 +5472,7 @@ getmatches([{win}]) *getmatches()* :unlet m < getmousepos() *getmousepos()* - Returns a Dictionary with the last known position of the + Returns a |Dictionary| with the last known position of the mouse. This can be used in a mapping for a mouse click or in a filter of a popup window. The items are: screenrow screen row @@ -5679,12 +5692,12 @@ getregtype([{regname}]) *getregtype()* gettabinfo([{arg}]) *gettabinfo()* If {arg} is not specified, then information about all the tab - pages is returned as a List. Each List item is a Dictionary. + pages is returned as a |List|. Each List item is a |Dictionary|. Otherwise, {arg} specifies the tab page number and information about that one is returned. If the tab page does not exist an empty List is returned. - Each List item is a Dictionary with the following entries: + Each List item is a |Dictionary| with the following entries: tabnr tab page number. variables a reference to the dictionary with tabpage-local variables @@ -5712,7 +5725,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* When {varname} is empty a dictionary with all window-local variables is returned. When {varname} is equal to "&" get the values of all - window-local options in a Dictionary. + window-local options in a |Dictionary|. Otherwise, when {varname} starts with "&" get the value of a window-local option. Note that {varname} must be the name without "w:". @@ -5767,16 +5780,16 @@ gettagstack([{nr}]) *gettagstack()* GetWinnr()->gettagstack() getwininfo([{winid}]) *getwininfo()* - Returns information about windows as a List with Dictionaries. + Returns information about windows as a |List| with Dictionaries. If {winid} is given Information about the window with that ID - is returned, as a List with one item. If the window does not + is returned, as a |List| with one item. If the window does not exist the result is an empty list. Without {winid} information about all the windows in all the tab pages is returned. - Each List item is a Dictionary with the following entries: + Each List item is a |Dictionary| with the following entries: botline last displayed buffer line bufnr number of buffer in the window height window height (excluding winbar) @@ -5804,7 +5817,7 @@ getwininfo([{winid}]) *getwininfo()* GetWinnr()->getwininfo() getwinpos([{timeout}]) *getwinpos()* - The result is a List with two numbers, the result of + The result is a |List| with two numbers, the result of |getwinposx()| and |getwinposy()| combined: [x-pos, y-pos] {timeout} can be used to specify how long to wait in msec for @@ -5859,7 +5872,7 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()* 'suffixes' affect the ordering of matches. 'wildignorecase' always applies. - When {list} is present and it is |TRUE| the result is a List + When {list} is present and it is |TRUE| the result is a |List| with all matching files. The advantage of using a List is, you also get filenames containing newlines correctly. Otherwise the result is a String and when there are several @@ -5922,7 +5935,7 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) one of the patterns in 'wildignore' will be skipped and 'suffixes' affect the ordering of matches. - When {list} is present and it is |TRUE| the result is a List + When {list} is present and it is |TRUE| the result is a |List| with all matching files. The advantage of using a List is, you also get filenames containing newlines correctly. Otherwise the result is a String and when there are several matches, @@ -7281,7 +7294,7 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()* *max()* max({expr}) Return the maximum value of all items in {expr}. - {expr} can be a List or a Dictionary. For a Dictionary, + {expr} can be a |List| or a |Dictionary|. For a Dictionary, it returns the maximum of all values in the Dictionary. If {expr} is neither a List nor a Dictionary, or one of the items in {expr} cannot be used as a Number this results in @@ -7352,7 +7365,7 @@ menu_info({name} [, {mode}]) *menu_info()* < *min()* min({expr}) Return the minimum value of all items in {expr}. - {expr} can be a List or a Dictionary. For a Dictionary, + {expr} can be a |List| or a |Dictionary|. For a Dictionary, it returns the minimum of all values in the Dictionary. If {expr} is neither a List nor a Dictionary, or one of the items in {expr} cannot be used as a Number this results in @@ -8014,7 +8027,7 @@ readdirex({directory} [, {expr} [, {dict}]]) *readdirex()* If {expr} results in 1 then this entry will be added to the list. The entries "." and ".." are always excluded. - Each time {expr} is evaluated |v:val| is set to a Dictionary + Each time {expr} is evaluated |v:val| is set to a |Dictionary| of the entry. When {expr} is a function the entry is passed as the argument. For example, to get a list of files ending in ".txt": > @@ -8263,7 +8276,7 @@ remove({list}, {idx} [, {end}]) *remove()* Without {end}: Remove the item at {idx} from |List| {list} and return the item. With {end}: Remove items from {idx} to {end} (inclusive) and - return a List with these items. When {idx} points to the same + return a |List| with these items. When {idx} points to the same item as {end} a list with one item is returned. When {end} points to an item before {idx} this is an error. See |list-index| for possible values of {idx} and {end}. @@ -8400,7 +8413,7 @@ screenchar({row}, {col}) *screenchar()* GetRow()->screenchar(col) screenchars({row}, {col}) *screenchars()* - The result is a List of Numbers. The first number is the same + The result is a |List| of Numbers. The first number is the same as what |screenchar()| returns. Further numbers are composing characters on top of the base character. This is mainly to be used for testing. @@ -8565,7 +8578,7 @@ searchcount([{options}]) *searchcount()* without the "S" flag in 'shortmess'. This works even if 'shortmess' does contain the "S" flag. - This returns a Dictionary. The dictionary is empty if the + This returns a |Dictionary|. The dictionary is empty if the previous pattern was not set and "pattern" was not specified. key type meaning ~ @@ -8647,7 +8660,7 @@ searchcount([{options}]) *searchcount()* " search again call searchcount() < - {options} must be a Dictionary. It can contain: + {options} must be a |Dictionary|. It can contain: key type meaning ~ recompute |Boolean| if |TRUE|, recompute the count like |n| or |N| was executed. @@ -9186,10 +9199,12 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()* setreg({regname}, {value} [, {options}]) Set the register {regname} to {value}. If {regname} is "" or "@", the unnamed register '"' is used. + {value} may be any value returned by |getreg()| or |getreginfo()|, including a |List| or |Dict|. If {options} contains "a" or {regname} is upper case, then the value is appended. + {options} can also contain a register type specification: "c" or "v" |characterwise| mode "l" or "V" |linewise| mode @@ -9220,7 +9235,7 @@ setreg({regname}, {value} [, {options}]) register: > :let var_a = getreginfo() :call setreg('a', var_a) -< or: +< or: > :let var_a = getreg('a', 1, 1) :let var_amode = getregtype('a') .... @@ -9697,13 +9712,13 @@ state([{what}]) *state()* something is busy: m halfway a mapping, :normal command, feedkeys() or stuffed command - o operator pending or waiting for a command argument, - e.g. after |f| + o operator pending, e.g. after |d| a Insert mode autocomplete active x executing an autocommand w blocked on waiting, e.g. ch_evalexpr(), ch_read() and - ch_readraw() when reading json. - S not triggering SafeState or SafeStateAgain + ch_readraw() when reading json + S not triggering SafeState or SafeStateAgain, e.g. after + |f| or a count c callback invoked, including timer (repeats for recursiveness up to "ccc") s screen has scrolled for messages @@ -9884,7 +9899,7 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number, List [item, item] Dictionary {key: value, key: value} - When a List or Dictionary has a recursive reference it is + When a |List| or |Dictionary| has a recursive reference it is replaced by "[...]" or "{...}". Using eval() on the result will then fail. @@ -10175,7 +10190,7 @@ synIDtrans({synID}) *synIDtrans()* :echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg") synconcealed({lnum}, {col}) *synconcealed()* - The result is a List with currently three items: + The result is a |List| with currently three items: 1. The first item in the list is 0 if the character at the position {lnum} and {col} is not part of a concealable region, 1 if it is. @@ -10220,7 +10235,7 @@ synstack({lnum}, {col}) *synstack()* system({expr} [, {input}]) *system()* *E677* Get the output of the shell command {expr} as a string. See - |systemlist()| to get the output as a List. + |systemlist()| to get the output as a |List|. When {input} is given and is a string this string is written to a file and passed as stdin to the command. The string is @@ -10482,7 +10497,7 @@ timer_info([{id}]) returned. When {id} is omitted information about all timers is returned. - For each timer the information is stored in a Dictionary with + For each timer the information is stored in a |Dictionary| with these items: "id" the timer ID "time" time the timer was started with @@ -10716,7 +10731,7 @@ undotree() *undotree()* undo blocks. The first item in the "entries" list is the oldest undo item. - Each List item is a Dictionary with these items: + Each List item is a |Dictionary| with these items: "seq" Undo sequence number. Same as what appears in |:undolist|. "time" Timestamp when the change happened. Use @@ -10928,7 +10943,7 @@ win_splitmove({nr}, {target} [, {options}]) *win_splitmove()* Returns zero for success, non-zero for failure. - {options} is a Dictionary with the following optional entries: + {options} is a |Dictionary| with the following optional entries: "vertical" When TRUE, the split is created vertically, like with |:vsplit|. "rightbelow" When TRUE, the split is made below or to the @@ -12093,8 +12108,9 @@ An assignment leaves out the `:let` command. |vim9-declaration| text... text... {endmarker} - Set internal variable {var-name} to a List containing - the lines of text bounded by the string {endmarker}. + Set internal variable {var-name} to a |List| + containing the lines of text bounded by the string + {endmarker}. {endmarker} must not contain white space. {endmarker} cannot start with a lower case character. The last line should end only with the {endmarker} diff --git a/runtime/doc/if_lua.txt b/runtime/doc/if_lua.txt index 214179641d..65a2d60430 100644 --- a/runtime/doc/if_lua.txt +++ b/runtime/doc/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 8.2. Last change: 2020 May 17 +*if_lua.txt* For Vim version 8.2. Last change: 2020 Jun 28 VIM REFERENCE MANUAL by Luis Carvalho diff --git a/runtime/doc/tags b/runtime/doc/tags index bdd63b2826..cfb8824f65 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3894,6 +3894,7 @@ E103 diff.txt /*E103* E104 digraph.txt /*E104* E1042 vim9.txt /*E1042* E105 mbyte.txt /*E105* +E1050 vim9.txt /*E1050* E107 eval.txt /*E107* E108 eval.txt /*E108* E109 eval.txt /*E109* @@ -10002,6 +10003,7 @@ vim9-declaration vim9.txt /*vim9-declaration* vim9-declarations usr_46.txt /*vim9-declarations* vim9-differences vim9.txt /*vim9-differences* vim9-export vim9.txt /*vim9-export* +vim9-gotchas vim9.txt /*vim9-gotchas* vim9-import vim9.txt /*vim9-import* vim9-rationale vim9.txt /*vim9-rationale* vim9-scopes vim9.txt /*vim9-scopes* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index c9716beb25..95cf7a40e9 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.2. Last change: 2020 Jun 21 +*todo.txt* For Vim version 8.2. Last change: 2020 Jun 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -40,12 +40,31 @@ browser use: https://github.com/vim/vim/issues/1234 Include src/po/vim.pot ? -See if resizing a terminal can be fixed. - Vim9 script: +- line continuation at script level: + eval_to_string_skip(), test with :throw + eval1_emsg(), pass "eap", test with :execute, :echomsg, :echoerr + handle_subscript() - call_func_rettv() - get_func_tv() + func( + args arg) + callers of get_func_tv(): + eval_func() + ex_call() + function arguments, test assert_equal() with lambda, test :function + :import: + others + eval_index() +- test: + [1, + 2, + 3]->Func() + Making everything work: +- "nr += 4" gives "already defined" error. - Error for "g:var: string = 'value'" - Make func()->append('$') work - value is last argument, not first. #6305 +- in Vim9 script expressions are evaluated differently, not using a type. + e.g. "'' == 0" does not give an error and evaluates to true. - possible memory leak in test_vim9_func through compile_nested_function. - memory leaks in test_vim9_expr - memory leaks in test_vim9_script @@ -134,12 +153,6 @@ Further improvements: - compile "expr" and "call" expression of a channel in channel_exe_cmd()? Popup windows: -- With some sequence get get hidden finished terminal buffer. (#5768) - Cannot close popup terminal (#5744) - Buffer can't be wiped, gets status "aF". (#5764) - Is buf->nwindows incorrect? -- popup_clear() and popup_close() should close the terminal popup, and - make the buffer hidden. #5745 - Cursor not updated before a redraw, making it jump. (#5943) - With terminal in popup, allow for popup_hide() to temporarily hide it.? - Fire some autocommand event after a new popup window was created and @@ -274,6 +287,13 @@ The buffer list and windows are locked, no changes possible How about removing Atari MiNT support? src/Make_mint.mak, src/os_mint.h, matches with __MINT__ +Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr" + replace this: + let left = GetLeftFunc() + let right = GetRightFunc() + let res = left < right ? lower : left == right ? equal : upper + by: + let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper Patch to make :q work with local arglist. (Christian Brabandt, #6286) Patch to fix drawing error with DirectX. (James Grant, #5688) @@ -495,9 +515,6 @@ window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg, Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use t:diffexpr_option t:diffopt_option? (#4782) -v:register isn't reset early enough, may be used by next command. -(Andy Massimino, #5294, possible fix in #5305) - Internal diff doesn't handle binary file like external diff does. (Mike Williams, 2018 Oct 30) @@ -580,9 +597,6 @@ buffer didn't change at all. Line numbers in profile are off when function was defined with ":execute". (Daniel Hahler, #4511) -Add a way to create an empty, hidden buffer. Like doing ":new|hide". -":let buf = bufcreate('name') - Session file contains absolute paths when "curdir" is removed form 'sessionoptions', making it impossible to have a session with a relative path. (#4450) @@ -1199,8 +1213,8 @@ Make a function to check for function-like type? Screen updated delayed when using CTRL-O u in Insert mode. (Barlik, #1191) Perhaps because status message? -Implement named arguments for functions: - func Foo(start, count = 1 all = 1) +Implement named arguments for functions with optional arguments: + func Foo(start, count = 1, all = 1) call Foo(12, all = 0) Add a command to take a range of lines, filter them and put the output @@ -1393,8 +1407,6 @@ Did maintainer reply? ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19) Also with latest version. -Cannot delete a file with square brackets with delete(). (#696) - Completion for input() does not expand environment variables. (chdiza, 2016 Jul 25, #948) @@ -1403,8 +1415,6 @@ names, shell commands and the like. (Kikuchan, 2010 Oct 14) Assume the system converts between the actual encoding of the filesystem to the system encoding (usually utf-8). -'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9) - MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c? Otherwise task flickers in taskbar. @@ -1416,8 +1426,6 @@ Have a way to get the call stack, in a function and from an exception. Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5) -Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806) - Filetype plugin for awk. (Doug Kearns, 2016 Sep 5) Patch to improve map documentation. Issue #799. @@ -1436,8 +1444,6 @@ Reject the value? #710. When doing "vi buf.md" a BufNew autocommand for *.md is not triggered. Because of using the initial buffer? (Dun Peal, 2016 May 12) -Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11) - Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574 No test, needs some work to include. @@ -1507,20 +1513,10 @@ If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe, Patch to avoid redrawing tabline when the popup menu is visible. (Christian Brabandt, 2016 Jan 28) -Patch to show search statistics. (Christian Brabandt, 2016 Jul 22) - When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot restore the mode properly. (Andrew Stewart, 2016 Apr 20) Do not trigger the event? -Using ":windo" to set options in all windows has the side effect that it -changes the window layout and the current window. Make a variant that saves -and restores. Use in the matchparen plugin. -Perhaps we can use ":windo <restore> {cmd}"? -Patch to add <restore> to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan -6, 2nd message) -Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}". - Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013) Update suggested by Yasuhiro Matsumoto, 2014 Nov 25: https://gist.github.com/presuku/d3d6b230b9b6dcfc0477 @@ -1549,10 +1545,6 @@ Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Comparing nested structures with "==" uses a different comparator than when comparing individual items. -Also, "'' == 0" evaluates to true, which isn't nice. -Add "===" to have a strict comparison (type and value match). -Add "==*" (?) to have a value match, but no automatic conversion, and v:true -equals 1 and 1.0, v:false equals 0 and 0.0.? Using uninitialized memory. (Dominique Pelle, 2015 Nov 4) @@ -1723,8 +1715,6 @@ arguments. Problem with transparent and matchgroup. Issue #475 -Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6) - Spell files use a latin single quote. Unicode also has another single quote: 0x2019. (Ron Aaron, 2014 Apr 4) New OpenOffice spell files support this with ICONV. But they are not @@ -1751,8 +1741,11 @@ from? Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman, 2014 Jun 8) -Include a plugin manager with Vim? Neobundle seems to be the best currently. +Include a plugin manager with Vim? vim-plug seems to be the best currently: +https://github.com/junegunn/vim-plug. Also Vundle: https://github.com/gmarik/vundle +Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin +package feature. Long message about this from ZyX, 2014 Mar 23. And following replies. Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html User view: @@ -1807,6 +1800,7 @@ instead. (Samuel Ferencik, 2013 Sep 28) Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4) Remark on the docs. Should not be a compile time feature. But then what? +Also see #2034. Completion of ":e" is ":earlier", should be ":edit". Complete to the matching command instead of doing this alphabetically. (Mikel Jorgensen) @@ -1868,6 +1862,10 @@ Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}. Exception caused by argument of return is not caught by try/catch. (David Barnett, 2013 Nov 19) +Bug in try/catch: return with invalid compare throws error that isn't caught. +(ZyX, 2011 Jan 26) +try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15) +try/catch not working when inside a for loop. (ZyX, 2011 Jan 25) Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt, 2013 Mar 19, later message) @@ -1903,6 +1901,8 @@ process that is running. It might actually be some other program, e.g. after a reboot. patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6) +Patch to add "combine" to :syntax, combines highlight attributes. (Nate +Soares, 2012 Dec 3) Syntax update problem in one buffer opened in two windows, bottom window is not correctly updated. (Paul Harris, 2012 Feb 27) @@ -2090,9 +2090,6 @@ doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18) Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19) -Bug in try/catch: return with invalid compare throws error that isn't caught. -(ZyX, 2011 Jan 26) - When setting a local option value from the global value, add a script ID that indicates this, so that ":verbose set" can give a hint. Check with options in the help file. @@ -2281,9 +2278,6 @@ Add local time at start of --startuptime output. Requires configure check for localtime(). Use format year-month-day hr:min:sec. -Patch to add "combine" to :syntax, combines highlight attributes. (Nate -Soares, 2012 Dec 3) - Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4) Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3) @@ -2478,6 +2472,9 @@ Sergey Khorev) Consider making YankRing or something else that keeps a list of yanked text part of standard Vim. The "1 to "9 registers are not sufficient. +6 When yanking into the unnamed registers several times, somehow make the + previous contents also available (like it's done for deleting). What + register names to use? g"1, g"2, etc.? After doing "su" $HOME can be the old user's home, thus ~root/file is not correct. Don't use it in the swap file. @@ -2684,10 +2681,6 @@ Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct In the swapfile dialog, add a H(elp) option that gives more info about what each choice does. Similar to ":help swap-exists-choices" -try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15) - -try/catch not working when inside a for loop. (ZyX, 2011 Jan 25) - ":tab help" always opens a new tab, while ":help" re-uses an existing window. Would be more consistent when an existing tab is re-used. (Tony Mechelynck) @@ -3257,7 +3250,7 @@ Quickfix/Location List: ":grep" and ":helpgrep". More generic solution: support a filter (e.g., by calling a function). 7 Add a command that goes back to the position from before jumping to the - first quickfix location. ":cbefore"? + first quickfix location. Vi incompatibility: - Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7) @@ -3294,7 +3287,6 @@ Vi incompatibility: 7 The ":map" command output overwrites the command. Perhaps it should keep the ":map" when it's used without arguments? 7 CTRL-L is not the end of a section? It is for Posix! Make it an option. -7 Implement 'prompt' option. Init to off when stdin is not a tty. 7 Add a way to send an email for a crashed edit session. Create a file when making changes (containing name of the swap file), delete it when writing the file. Supply a program that can check for crashed sessions (either @@ -3472,8 +3464,6 @@ GUI: Solaris 2.6. (Marley) 9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim is started from, causes empty lines below the cmdline. (raf) -8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key - should not be used to trigger a menu (like the Win32 version). 8 When setting 'langmenu', it should be effective immediately. Store both the English and the translated text in the menu structure. Re-generate the translation when 'langmenu' has changed. @@ -3512,10 +3502,6 @@ GUI: When the "+0+0" is omitted it works. 8 When starting an external command, and 'guipty' set, BS and DEL are mixed up. Set erase character somehow? -8 A dead circumflex followed by a space should give the '^' character - (Rommel). Look how xterm does this. - Also: Bednar has some code for dead key handling. - Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) 8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. 7 The cursor in an inactive window should be hollow. Currently it's not visible. @@ -3612,17 +3598,8 @@ Macintosh: "Small" problems: -- Can't disable terminal flow control, to enable the use of CTRL-S and - CTRL-Q. Add an option for it? - When using e_secure in do_one_cmd() mention the command being executed, otherwise it's not clear where it comes from. -- When the quickfix window is open and executing ":echo 'hello'" using the - Command-line window, the text is immediately removed by the redrawing. - (Michael Henry, 2008 Nov 1) - Generic solution: When redrawing while there is a message on the - cmdline, don't erase the display but draw over the existing text. - Other solution, redraw after closing the cmdline window, before executing - the command. 9 For Turkish vim_tolower() and vim_toupper() also need to use utf_ functions for characters below 0x80. (Sertacyildiz) 9 When the last edited file is a help file, using '0 in a new Vim doesn't @@ -4082,8 +4059,6 @@ Spell checking: - Considering Hunspell 1.1.4: What does MAXNGRAMSUGS do? Is COMPLEXPREFIXES necessary when we have flags for affixes? -- Support spelling words in CamelCase as if they were two separate words. - Requires some option to enable it. (Timothy Knox) - There is no Finnish spell checking file. For openoffice Voikko is now used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/ (Teemu Likonen) @@ -4458,8 +4433,6 @@ Vim script language: 7 Execute a function with standard option values. No need to save and restore option values. Especially useful for new options. Problem: how to avoid a performance penalty (esp. for string options)? -8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and - ":let &t_xx =". Useful for making portable mappings. - range for ":exec", pass it on to the executed command. (Webb) 8 ":{range}source": source the lines from the current file. You can already yank lines and use :@" to execute them. @@ -4690,8 +4663,6 @@ Messages: - Delete message after new command has been entered and have waited for key. Perhaps after ten seconds? - Make message history available in "msg" variables: msg1, msg2, .. msg9. -8 When reading from stdin allow suppressing the "reading from stdin" - message. 9 Check handling of overwriting of messages and delays: Very wrong: errors while redrawing cause endless loop. When switching to another file and screen scrolls because of the long @@ -5979,9 +5950,6 @@ Registers: 8 Add put command that overwrites existing text. Should also work for blocks. Useful to move text around in a table. Works like using "R ^R r" for every line. -6 When yanking into the unnamed registers several times, somehow make the - previous contents also available (like it's done for deleting). What - register names to use? g"1, g"2, etc.? - When appending to a register, also report the total resulting number of lines. Or just say "99 more lines yanked", add the "more". - When inserting a register in Insert mode with CTRL-R, don't insert comment diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 21bc542a17..b14ff0b101 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2020 Jun 22 +*vim9.txt* For Vim version 8.2. Last change: 2020 Jun 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -378,6 +378,49 @@ string. > In Vim9 script one can use "true" for v:true and "false" for v:false. +What to watch out for ~ + *vim9-gotchas* +Vim9 was designed to be closer to often used programming languages, but at the +same time tries to support the legacy Vim commands. Some compromises had to +be made. Here is a summary of what might be unexpected. + +Ex command ranges need to be prefixed with a colon. > + -> " legacy Vim: shifts the previous line to the right + ->func() " Vim9: method call + :-> " Vim9: shifts the previous line to the right + + %s/a/b " legacy Vim: substitute on all lines + x = alongname + % another " Vim9: line continuation without a backslash + :%s/a/b " Vim9: substitute on all lines + +Functions defined with `:def` compile the whole function. Legacy functions +can bail out, and the following lines are not parsed: > + func Maybe() + if !has('feature') + return + endif + use-feature + endfunc +Vim9 functions are compiled as a whole: > + def Maybe() + if !has('feature') + return + endif + use-feature " May give compilation error + enddef +For a workaround, split it in two functions: > + func Maybe() + if has('feature') + call MaybyInner() + endif + endfunc + if has('feature') + def MaybeInner() + use-feature + enddef + endif + ============================================================================== 3. New style functions *fast-functions* diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 3778fe5ff8..7c76b12ee3 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2020 Jun 15 +" Last Change: 2020 Jun 25 " Listen very carefully, I will say this only once if exists("did_load_filetypes") diff --git a/runtime/syntax/neomuttrc.vim b/runtime/syntax/neomuttrc.vim index 14852c1e1d..bd73de49ea 100644 --- a/runtime/syntax/neomuttrc.vim +++ b/runtime/syntax/neomuttrc.vim @@ -2,10 +2,10 @@ " Language: NeoMutt setup files " Maintainer: Richard Russon <rich@flatcap.org> " Previous Maintainer: Guillaume Brogi <gui-gui@netcourrier.com> -" Last Change: 2019-11-18 +" Last Change: 2020-06-21 " Original version based on syntax/muttrc.vim -" This file covers NeoMutt 2019-11-02 +" This file covers NeoMutt 2020-06-19 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -19,23 +19,22 @@ set cpo&vim setlocal isk=@,48-57,_,- " handling optional variables -syntax match muttrcComment "^# .*$" contains=@Spell -syntax match muttrcComment "^#[^ ].*$" -syntax match muttrcComment "^#$" -syntax match muttrcComment "[^\\]#.*$"lc=1 +syntax match muttrcComment "^# .*$" contains=@Spell +syntax match muttrcComment "^#[^ ].*$" +syntax match muttrcComment "^#$" +syntax match muttrcComment "[^\\]#.*$"lc=1 " Escape sequences (back-tick and pipe goes here too) -syntax match muttrcEscape +\\[#tnr"'Cc ]+ -syntax match muttrcEscape +[`|]+ -syntax match muttrcEscape +\\$+ +syntax match muttrcEscape +\\[#tnr"'Cc ]+ +syntax match muttrcEscape +[`|]+ +syntax match muttrcEscape +\\$+ " The variables takes the following arguments -"syn match muttrcString contained "=\s*[^ #"'`]\+"lc= |