Compare commits

...

565 Commits

Author SHA1 Message Date
Bram Moolenaar
e32e516dfa patch 8.2.2387: runtime type check does not mention argument index
Problem:    Runtime type check does not mention argument index.
Solution:   Add ct_arg_idx. (closes #7720)
2021-01-21 20:21:29 +01:00
Bram Moolenaar
f904133e1a patch 8.2.2386: Vim9: crash when using ":silent! put"
Problem:    Vim9: crash when using ":silent! put".
Solution:   When ignoring an error for ":silent!" rewind the stack and skip
            ahead to restoring the cmdmod. (closes #7717)
2021-01-21 19:41:16 +01:00
Bram Moolenaar
e71996bd08 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Problem:    "gj" and "gk" do not work correctly when inside a fold.
Solution:   Move check for folding. (closes #7724, closes #4095)
2021-01-21 17:03:07 +01:00
Bram Moolenaar
5e6a7aa2b2 patch 8.2.2384: turtle filetype not recognized
Problem:    Turtle filetype not recognized.
Solution:   Add a rule to detect turtle files. (closes #7722)
2021-01-21 14:45:13 +01:00
Bram Moolenaar
ccb47a2899 patch 8.2.2383: focus escape sequences are not named
Problem:    Focus escape sequences are not named in ":set termcap" output.
Solution:   Add the names to the list. (closes #7718)
2021-01-21 13:36:43 +01:00
Bram Moolenaar
b1f2857096 patch 8.2.2382: build failure
Problem:    Build failure.
Solution:   Add missing changes.
2021-01-21 13:03:20 +01:00
Bram Moolenaar
c5f59fab23 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Problem:    Vim9: divide by zero does not abort expression execution.
Solution:   Use a "failed" flag. (issue #7704)
2021-01-21 12:34:14 +01:00
Bram Moolenaar
a0f7f73ebb patch 8.2.2380: Vim9: occasional crash when using try/catch and a timer
Problem:    Vim9: occasional crash when using try/catch and a timer.
Solution:   Save and restore "need_rethrow" when invoking a timer callback.
            (closes #7708)
2021-01-20 22:22:49 +01:00
Bram Moolenaar
77a849c4b3 patch 8.2.2379: do spell suggestions twice if 'spellsuggest' contains number
Problem:    Finding spell suggestions twice if 'spellsuggest' contains number.
Solution:   Only do internal suggestions once.  (closes #7713)
2021-01-20 21:42:33 +01:00
Bram Moolenaar
99880f96cf patch 8.2.2378: Vim9: no error message for dividing by zero
Problem:    Vim9: no error message for dividing by zero.
Solution:   Give an error message. (issue #7704)
2021-01-20 21:23:14 +01:00
Bram Moolenaar
a28639e711 patch 8.2.2377: Vim9: crash when using a range after another expression
Problem:    Vim9: crash when using a range after another expression.
Solution:   Set the variable type to number. Fix using :put with a range and
            the "=" register. (closes #7706)
2021-01-19 22:48:09 +01:00
Bram Moolenaar
e64f83cc6a patch 8.2.2376: Vim9: crash when dividing by zero in compiled code
Problem:    Vim9: crash when dividing by zero in compiled code using
            constants.
Solution:   Call num_divide() and num_modulus(). (closes #7704)
2021-01-19 22:16:41 +01:00
Bram Moolenaar
09fbedc8dc patch 8.2.2375: test for RGB color skipped in the terminal
Problem:    Test for RGB color skipped in the terminal.
Solution:   Run the GUI if possible.
2021-01-19 17:22:58 +01:00
Bram Moolenaar
98a29d00a4 Update runtime files. 2021-01-18 19:55:44 +01:00
Bram Moolenaar
82aa6e09e0 patch 8.2.2374: accessing uninitialized memory in test_undo
Problem:    Accessing uninitialized memory in test_undo.
Solution:   Do not look in typebuf.tb_buf if it is empty. (Dominique Pellé,
            closes #7697)
2021-01-17 22:04:02 +01:00
Bram Moolenaar
f30a14db3b patch 8.2.2373: Vim9: list assignment only accepts a number index
Problem:    Vim9: list assignment only accepts a number index.
Solution:   Accept "any" and do a runtime type check. (closes #7694)
2021-01-17 21:51:24 +01:00
Bram Moolenaar
585587dadb patch 8.2.2372: confusing error message for wrong :let command
Problem:    Confusing error message for wrong :let command.
Solution:   Only check for type in Vim9 script.
2021-01-17 20:52:13 +01:00
Bram Moolenaar
036d07144e patch 8.2.2371: Vim9: crash when using types in :for with unpack
Problem:    Vim9: crash when using types in :for with unpack.
Solution:   Check for skip_var_list() failing. Pass include_type to
            skip_var_one(). Skip type when compiling. (closes #7694)
2021-01-17 20:23:38 +01:00
Bram Moolenaar
1430ceeb2d patch 8.2.2370: Vim9: command fails in catch block
Problem:    Vim9: command fails in catch block.
Solution:   Reset force_abort and need_rethrow. (closes #7692)
2021-01-17 19:20:32 +01:00
Bram Moolenaar
3af15ab788 patch 8.2.2369: Vim9: functions return true/false but can't be used as bool
Problem:    Vim9: functions return true/false but can't be used as bool.
Solution:   Add ret_number_bool(). (closes #7693)
2021-01-17 16:16:23 +01:00
Bram Moolenaar
85773bf32b patch 8.2.2368: insufficient tests for setting options
Problem:    Insufficient tests for setting options.
Solution:   Add a few tests. (Dominique Pellé, closes #7695)
2021-01-17 13:48:03 +01:00
Bram Moolenaar
239f8d9326 patch 8.2.2367: test failures on some less often used systems
Problem:    Test failures on some less often used systems.
Solution:   Adjust printf formats and types. (James McCoy, closes #7691)
2021-01-17 13:21:20 +01:00
Bram Moolenaar
e2edc2ed4a patch 8.2.2366: when using ":sleep" the cursor is always displayed
Problem:    When using ":sleep" the cursor is always displayed.
Solution:   Do not display the cursor when using ":sleep!". (Jeremy Lerner,
            closes #7688)
2021-01-16 20:21:23 +01:00
Bram Moolenaar
70250fb4d2 patch 8.2.2365: Vim9: no check for map() changing item type at script level
Problem:    Vim9: no check for map() changing item type at script level.
Solution:   Check the new value type.
2021-01-16 19:01:53 +01:00
Bram Moolenaar
f898f7c68d patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Problem:    Vim9: line break in lambda accesses freed memory.
Solution:   Make a copy of the return type. (closes #7664)
2021-01-16 18:09:52 +01:00
Bram Moolenaar
9ebcf231bd patch 8.2.2363: curpos() does not accept a string argument as before
Problem:    curpos() does not accept a string argument as before.
solution:   Make a string argument work again. (Yegappan Lakshmanan,
            closes #7690
2021-01-16 16:52:49 +01:00
Bram Moolenaar
351ead09dd patch 8.2.2362: Vim9: check of builtin function argument type is incomplete
Problem:    Vim9: check of builtin function argument type is incomplete.
Solution:   Use need_type() instead of check_arg_type().
2021-01-16 16:07:01 +01:00
Bram Moolenaar
7c886db915 patch 8.2.2361: Vim9: no highlight for "s///gc" when using 'opfunc'
Problem:    Vim9: no highlight for "s///gc" when using 'opfunc'.
Solution:   Reset 'lazyredraw' temporarily. (closes #7687)
2021-01-16 14:34:45 +01:00
Bram Moolenaar
a3b494d6af patch 8.2.2360: test leaves file behind
Problem:    Test leaves file behind.
Solution:   Delete the right file. (Dominique Pellé, closes #7689)
2021-01-16 13:43:31 +01:00
Bram Moolenaar
e2924328c1 patch 8.2.2359: strange test failure with MS-Windows
Problem:    Strange test failure with MS-Windows.
Solution:   Skip the system() call for now.
2021-01-16 13:11:42 +01:00
Bram Moolenaar
bf78974ca4 patch 8.2.2358: wrong #ifdef for use_xterm_like_mouse()
Problem:    Wrong #ifdef for use_xterm_like_mouse().
Solution:   Use FEAT_MOUSE_XTERM.
2021-01-16 11:21:40 +01:00
Bram Moolenaar
648ea76e1d patch 8.2.2357: Vim9: crash when parsing function return type fails
Problem:    Vim9: crash when parsing function return type fails.
Solution:   Bail out and set return type to "unknown". (closes #7685)
2021-01-15 19:04:32 +01:00
Bram Moolenaar
883cf97f10 patch 8.2.2356: Vim9: ":put =expr" does not handle a list properly
Problem:    Vim9: ":put =expr" does not handle a list properly.
Solution:   Use the same logic as eval_to_string_eap(). (closes #7684)
2021-01-15 18:04:43 +01:00
Bram Moolenaar
97c6943e11 patch 8.2.2355: stray test failure on Appveyor
Problem:    Stray test failure on Appveyor.
Solution:   Finish insert command.
2021-01-15 16:45:21 +01:00
Bram Moolenaar
797e63b9f2 patch 8.2.2354: crash with a weird combination of autocommands
Problem:    Crash with a weird combination of autocommands.
Solution:   Increment b_nwindows when needed. (closes #7674)
2021-01-15 16:22:52 +01:00
Bram Moolenaar
17d015b243 patch 8.2.2353: spartql files are not detected
Problem:    Spartql files are not detected.
Solution:   Add the sparql filetype.  (closes #7679)
2021-01-15 13:35:30 +01:00
Bram Moolenaar
d44cc593ce patch 8.2.2352: if focus lost/gained is received twice code is not ignored
Problem:    If the focus lost/gained escape sequence is received twice it is
            not ignored. (Christ van Willigen)
Solution:   Adjust the logic to ignore the escape code.
2021-01-14 21:57:58 +01:00
Bram Moolenaar
8f81b22e86 patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Problem:    Vim9: error message for "throw" in function that was called with
            "silent!".
Solution:   Do not throw the exception when not caught or displayed.
            (closes #7672)
2021-01-14 21:47:06 +01:00
Bram Moolenaar
033135eb8e patch 8.2.2350: using "void" for no reason
Problem:    Using "void" for no reason.
Solution:   Use "char *".
2021-01-14 21:40:22 +01:00
Bram Moolenaar
2415669348 patch 8.2.2349: Vim9: cannot handle line break after parenthesis at line end
Problem:    Vim9: cannot handle line break after parenthesis at line end.
Solution:   Skip over line break. (closes #7677)
2021-01-14 20:35:49 +01:00
Bram Moolenaar
fadd55bd63 patch 8.2.2348: no check for modified files after focus gained
Problem:    No check for modified files after focus gained. (Mathias Stearn)
Solution:   Call ui_focus_change().
2021-01-14 19:19:18 +01:00
Bram Moolenaar
e1ee58ac78 patch 8.2.2347: build failure without GUI
Problem:    Build failure without GUI.
Solution:   Add #ifdef.
2021-01-14 19:04:44 +01:00
Bram Moolenaar
845b72854d patch 8.2.2346: Codecov reports every little coverage drop
Problem:    Codecov reports every little coverage drop.
Solution:   Tolerate a 0.05% drop. Hide the appveyor config file. (Ozaki
            Kiichi, closes #7678)
2021-01-14 17:55:59 +01:00
Bram Moolenaar
681fc3fa78 patch 8.2.2345: no focus events in a terminal
Problem:    No focus events in a terminal.
Solution:   Add the t_fd and t_fe termcap entries and implement detecting
            focus events. (Hayaki Saito, Magnus Groß, closes #7673,
            closes #609, closes #5526)
2021-01-14 17:35:21 +01:00
Bram Moolenaar
6601b62943 patch 8.2.2344: using inclusive index for slice is not always desired
Problem:    Using inclusive index for slice is not always desired.
Solution:   Add the slice() method, which has an exclusive index. (closes
            #7408)
2021-01-13 21:47:15 +01:00
Bram Moolenaar
c423ad77ed patch 8.2.2343: Vim9: return type of readfile() is any
Problem:    Vim9: return type of readfile() is any.
Solution:   Add readblob() so that readfile() can be expected to always
            return a list of strings. (closes #7671)
2021-01-13 20:38:03 +01:00
Bram Moolenaar
9145846b6a patch 8.2.2342: "char" functions may return wrong column in Insert mode
Problem:    "char" functions return the wront column in Insert mode when the
            cursor is beyond the end of the line.
Solution:   Compute the column correctly. (Yegappan Lakshmanan, closes #7669)
2021-01-13 20:08:38 +01:00
Bram Moolenaar
1bb4de5302 patch 8.2.2341: expresison command line completion incomplete after "g:"
Problem:    Expresison command line completion shows variables but not
            functions after "g:". (Gary Johnson)
Solution:   Prefix "g:" when needed to a global function.
2021-01-13 19:48:46 +01:00
Bram Moolenaar
37487e16da patch 8.2.2340: win_execute() unexpectedly returns number zero when failing
Problem:    win_execute() unexpectedly returns number zero when failing.
Solution:   Return an empty string. (closes #7665)
2021-01-12 22:08:53 +01:00
Bram Moolenaar
a47e05f04a patch 8.2.2339: cannot get the type of a value as a string
Problem:    Cannot get the type of a value as a string.
Solution:   Add typename().
2021-01-12 21:49:00 +01:00
Bram Moolenaar
64ed4d4398 patch 8.2.2338: Vim9: no error if using job_info() result wrongly
Problem:    Vim9: no error if using job_info() result wrongly.
Solution:   Adjust return type on number of arguments. (closes #7667)
2021-01-12 21:22:31 +01:00
Bram Moolenaar
67876de7bb patch 8.2.2337: configure test for GTK only says "no"
Problem:    Configure test for GTK only says "no". (Harm te Hennepe)
Solution:   Hint that a -def package is needed. (closes #5229)
2021-01-12 20:51:24 +01:00
Bram Moolenaar
b0e6b51364 patch 8.2.2336: Vim9: not possible to extend dictionary with different type
Problem:    Vim9: it is not possible to extend a dictionary with different
            item types.
Solution:   Add extendnew(). (closes #7666)
2021-01-12 20:23:40 +01:00
Bram Moolenaar
7cd24227c0 patch 8.2.2335: Vim9: "silent return" does not restore command modifiers
Problem:    Vim9: "silent return" does not restore command modifiers.
Solution:   Resture command modifiers before returning. (closes #7649)
2021-01-12 18:58:39 +01:00
Bram Moolenaar
a0122dcd1c patch 8.2.2334: Pascal-like filetypes not always detected
Problem:    Pascal-like filetypes not always detected.
Solution:   Improved Puppet, InstantFPC and Pascal detection. (Doug Kearns,
            closes #7662)
2021-01-12 17:42:24 +01:00
Bram Moolenaar
cb6cbf29e9 patch 8.2.2333: Vim9: warning for uninitialized variable
Problem:    Vim9: warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize "res".
2021-01-12 17:17:01 +01:00
Bram Moolenaar
9567efa1b4 patch 8.2.2332: Vim9: missing :endif not reported when using :windo
Problem:    Vim9: missing :endif not reported when using :windo.
Solution:   Pass a getline function to do_cmdline(). (closes #7650)
2021-01-11 22:16:30 +01:00
Bram Moolenaar
082517570d patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Problem:    Vim9: wrong error when modifying dict declared with :final.
Solution:   Do not check for writable variable when an index follows.
            (closes #7657)
2021-01-11 21:20:18 +01:00
Bram Moolenaar
9e1d9e3473 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Problem:    Vim9: crash when using :trow in a not executed block.
Solution:   Don't generate the instruction when skipping. (closes #7659)
2021-01-11 20:17:34 +01:00
Bram Moolenaar
df4c9af7e7 patch 8.2.2329: not all ways Vim can be started are tested
Problem:    Not all ways Vim can be started are tested.
Solution:   Add a test for different program names. (Dominique Pellé,
            closes #7651)
2021-01-11 19:54:42 +01:00
Bram Moolenaar
82be4849ee Update runtime files. 2021-01-11 19:40:15 +01:00
Bram Moolenaar
48e11c1054 patch 8.2.2328: some test files may not be deleted
Problem:    Some test files may not be deleted.
Solution:   Add a delete() call, correct name. (Dominique Pellé, closes #7654)
2021-01-11 18:47:00 +01:00
Bram Moolenaar
16a6f91ccb patch 8.2.2327: debugging code included
Problem:    Debugging code included.
Solution:   Remove the debugging code.
2021-01-10 23:58:28 +01:00
Bram Moolenaar
086ae06862 patch 8.2.2326: build error with +eval feature but without +spell
Problem:    Build error with +eval feature but without +spell.
Solution:   Adjust #ifdef. (John Marriott)
2021-01-10 22:56:36 +01:00
Bram Moolenaar
75ab91ff34 patch 8.2.2325: Vim9: crash if map() changes the item type
Problem:    Vim9: crash if map() changes the item type.
Solution:   Check that the item type is still OK. (closes #7652)
            Fix problem with mapnew() on range list.
2021-01-10 22:42:50 +01:00
Bram Moolenaar
6f02b00bb0 patch 8.2.2324: not easy to get mark en cursor posotion by character count
Problem:    Not easy to get mark en cursor posotion by character count.
Solution:   Add functions that use character index. (Yegappan Lakshmanan,
            closes #7648)
2021-01-10 20:22:54 +01:00
Bram Moolenaar
31a11b942a patch 8.2.2323: Vim9: error when inferring type from empty dict/list
Problem:    Vim9: error when inferring type from empty dict/list.
Solution:   When the member is t_unknown use t_any. (closes #7009)
2021-01-10 19:23:27 +01:00
Bram Moolenaar
0186e58639 patch 8.2.2322: Vim9: closure nested limiting to one level
Problem:    Vim9: closure nested limiting to one level.
Solution:   Add outer_T.  Also make STOREOUTER work.
2021-01-10 18:33:11 +01:00
Bram Moolenaar
ab360526ef patch 8.2.2321: Vim9: cannot nest closures
Problem:    Vim9: cannot nest closures.
Solution:   Add the nesting level to ISN_LOADOUTER and ISN_STOREOUTER.
            (closes #7150, closes #7635)
2021-01-10 14:02:28 +01:00
Bram Moolenaar
cff40ff986 patch 8.2.2320: Vim9: no error for comparing bool with string
Problem:    Vim9: no error for comparing bool with string.
Solution:   Check for wrong types when comparing. (closes #7639)
2021-01-09 16:21:37 +01:00
Bram Moolenaar
657137ca48 patch 8.2.2319: "exptype_T" can be read as "expected type"
Problem:    "exptype_T" can be read as "expected type".
Solution:   Rename to "exprtype_T", expression type.
2021-01-09 15:45:23 +01:00
Bram Moolenaar
e7525c5520 patch 8.2.2318: Vim9: string and list index work differently
Problem:    Vim9: string and list index work differently.
Solution:   Make string index work like list index. (closes #7643)
2021-01-09 13:20:37 +01:00
Bram Moolenaar
9e0f883f89 patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Problem:    Vim9: command modifier before list unpack doesn't work.
Solution:   Only recognize "[" directly after the name. (closes #7641)
2021-01-09 12:09:22 +01:00
Bram Moolenaar
b657198cb3 patch 8.2.2316: Vim9: cannot list a lambda function
Problem:    Vim9: cannot list a lambda function.
Solution:   Support the <lambda>9 notation, like :disassemble. (closes #7634)
2021-01-08 22:24:19 +01:00
Bram Moolenaar
832ea89ca9 patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Problem:    Vim9: "enddef" as dict key misintepreted as function end.
Solution:   Check for following colon. (closes #7640)
2021-01-08 21:55:26 +01:00
Bram Moolenaar
299f3036ec patch 8.2.2314: Vim9: returning zero takes two instructions
Problem:    Vim9: returning zero takes two instructions.
Solution:   Add ISN_RETURN_ZERO.
2021-01-08 20:53:09 +01:00
Bram Moolenaar
ece0b87c0f patch 8.2.2313: Vim9: using uninitialized field when parsing range
Problem:    Vim9: using uninitialized field when parsing range. ":silent!" not
            respected when parsing range fails.
Solution:   Initialize ea.skip.  On pattern failure handle it like an error.
            (closes #7636)
2021-01-08 20:40:45 +01:00
Bram Moolenaar
467b59c2eb patch 8.2.2312: build failure with Ruby 3.0 and 32 bits
Problem:    Build failure with Ruby 3.0 and 32 bits.
Solution:   Add #ifdef. (closes #7638)
2021-01-08 19:31:39 +01:00
Bram Moolenaar
17126b1396 patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Problem:    Vim9: cannot assign to a variable that shadows a command modifier.
Solution:   Check for assignment after possible command modifier.
            (closes #7632)
2021-01-07 22:03:02 +01:00
Bram Moolenaar
43b69b39ac patch 8.2.2310: Vim9: winsaveview() return type is too generic
Problem:    Vim9: winsaveview() return type is too generic.
Solution:   use dict<number> instead of dict<any>. (closes #7626)
2021-01-07 20:23:33 +01:00
Bram Moolenaar
c37b655443 patch 8.2.2309: 0o777 not recognized as octal
Problem:    0o777 not recognized as octal.
Solution:   Use vim_isodigit(). (Ken Takata, closes #7633, closes #7631)
2021-01-07 19:36:30 +01:00
Bram Moolenaar
328eac2b5d patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Problem:    Vim9: no error when assigning lambda to funcref without return
            value.
Solution:   Default return value to "any". (closes #7629)
2021-01-07 19:23:08 +01:00
Bram Moolenaar
ebbf11c119 patch 8.2.2307: a shell command in the vimrc causes terminal output
Problem:    A shell command in the vimrc causes terminal output.
Solution:   Do not call starttermcap() after a shell command if the termcap
            wasn't active before.
2021-01-07 14:45:03 +01:00
Bram Moolenaar
32b3f82010 patch 8.2.2306: Vim9: when using function reference type is not checked
Problem:    Vim9: when using function reference type is not checked.
Solution:   When using a function reference lookup the type and check the
            argument types. (issue #7629)
2021-01-06 21:59:39 +01:00
Bram Moolenaar
b23279d7a2 patch 8.2.2305: Vim9: "++var" and "--var" are silently accepted
Problem:    Vim9: "++var" and "--var" are silently accepted.
Solution:   Give an error message.
2021-01-05 22:08:20 +01:00
Bram Moolenaar
0acbf5ae66 patch 8.2.2304: Vim9: no test for unletting an imported variable
Problem:    Vim9: no test for unletting an imported variable.
Solution:   Add a test.  Fix line number in error.
2021-01-05 20:58:25 +01:00
Bram Moolenaar
ecac591cce patch 8.2.2303: Vim9: backtick expansion doesn't work for :foldopen
Problem:    Vim9: backtick expansion doesn't work for :foldopen.
Solution:   Do recognize backtick expansion. (closes #7621)
2021-01-05 19:23:28 +01:00
Bram Moolenaar
a79925a0a8 patch 8.2.2302: Vim9: using an option value may use uninitialized memory
Problem:    Vim9: using an option value may use uninitialized memory.
Solution:   Clear v_lock. (closes #7620)
2021-01-05 17:50:28 +01:00
Bram Moolenaar
752fc692ac patch 8.2.2301: Vim9: cannot unlet a dict or list item
Problem:    Vim9: cannot unlet a dict or list item.
Solution:   Add ISN_UNLETINDEX.  Refactor assignment code to use for unlet.
2021-01-04 21:57:11 +01:00
Bram Moolenaar
d62d87d8f3 patch 8.2.2300: Vim9: wrong order on type stack when using dict
Problem:    Vim9: wrong order on type stack when using dict.
Solution:   Generate constants before a dict. (closes #7619)
2021-01-04 17:40:12 +01:00
Bram Moolenaar
d1510ee946 patch 8.2.2299: Vim9: invalid memory access making error message flaky
Problem:    Vim9: invalid memory access making error message flaky.
Solution:   Do not check cmd_argt for CMD_USER. (issue #7467)
2021-01-04 16:15:58 +01:00
Bram Moolenaar
cef1270dec patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Problem:    Vim9: comment right after "(" of function not recognized.
Solution:   Do not skip over white space before calling get_function_args().
            (closes #7613)
2021-01-04 14:09:43 +01:00
Bram Moolenaar
0ea0440865 patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Problem:    Vim9: cannot set 'number' to a boolean value.
Solution:   Use tv_get_bool(). (closes #7615)
2021-01-04 13:37:54 +01:00
Bram Moolenaar
014f698cb6 patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu
Problem:    Cannot use CTRL-N and CTRL-P in a popup menu.
Solution:   Use CTRL-N like <Down> and CTRL-P like <Up>. (closes #7614)
2021-01-04 13:18:30 +01:00
Bram Moolenaar
d93a7fc1a9 patch 8.2.2295: incsearch does not detect empty pattern properly
Problem:    Incsearch does not detect empty pattern properly.
Solution:   Return magic state when skipping over a pattern. (Christian
            Brabandt, closes #7612, closes #6420)
2021-01-04 12:42:13 +01:00
Bram Moolenaar
82c38fe508 patch 8.2.2294: VMS: a few remaining problems
Problem:    VMS: a few remaining problems.
Solution:   Add VMS specific changes. Add Lua support. (Zoltan Arpadffy)
2021-01-04 10:47:26 +01:00
Bram Moolenaar
bb0956fc65 patch 8.2.2293: build failure with Motif
Problem:    Build failure with Motif. (Tony Mechelynck)
Solution:   Use empty_option instead of empty_options.
2021-01-03 22:12:15 +01:00
Bram Moolenaar
5f63938447 patch 8.2.2292: Vim: expr test fails
Problem:    Vim: expr test fails.
Solution:   Add missing part of "null" support.
2021-01-03 22:05:19 +01:00
Bram Moolenaar
6797782127 patch 8.2.2291: Vim9: cannot use "null" for v:null
Problem:    Vim9: cannot use "null" for v:null.
Solution:   Support "null" like "true" and "false". (closes #7495)
2021-01-03 21:53:53 +01:00
Bram Moolenaar
2ef951dd31 patch 8.2.2290: Vim9: unlet of global variable cannot be compiled
Problem:    Vim9: unlet of global variable cannot be compiled.
Solution:   Skip over variables that might be defined later. Give an error if
            a subscript is found. (closes #7585)
2021-01-03 20:55:26 +01:00
Bram Moolenaar
e5a2dc87fd patch 8.2.2289: Vim9: 'cpo' can become empty
Problem:    Vim9: 'cpo' can become empty.
Solution:   Use empty_option instead of an empty string.  Update quickfix
            buffer after restoring 'cpo'.  (closes #7608)
2021-01-03 19:52:05 +01:00
Bram Moolenaar
5afd081cd3 patch 8.2.2288: Vim9: line break and comment not always skipped
Problem:    Vim9: line break and comment not always skipped.
Solution:   Skip over white space and then line break more consistently.
            (closes #7610)
2021-01-03 18:33:13 +01:00
Bram Moolenaar
cec77d4530 patch 8.2.2287: sort test fails when locale is French Canadian
Problem:    Sort test fails when locale is French Canadian.
Solution:   Expect a different sort order. (Dominique Pellé, closes #7609)
2021-01-03 17:39:28 +01:00
Bram Moolenaar
fefa6c347e patch 8.2.2286: sort test fails when locale is Canadian English
Problem:    Sort test fails when locale is Canadian English. (Neil H Watson)
Solution:   Expect a different sort order. (closes #7609)
2021-01-03 16:18:04 +01:00
Bram Moolenaar
b0d8182fa3 patch 8.2.2285: Vim9: cannot set an option to a false
Problem:    Vim9: cannot set an option to a false.
Solution:   For VAR_BOOL use string "0". (closes #7603)
2021-01-03 15:55:10 +01:00
Bram Moolenaar
31a201a04a patch 8.2.2284: Vim9: cannot set an option to a boolean value
Problem:    Vim9: cannot set an option to a boolean value.
Solution:   Check for VAR_BOOL. (closes #7603)
2021-01-03 14:47:25 +01:00
Bram Moolenaar
e68b02a1c4 patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Problem:    Vim9: crash when lambda has fewer arguments than expected.
Solution:   Don't check arguments when already failed. (closes #7606)
2021-01-03 13:09:51 +01:00
Bram Moolenaar
339c1bdbdf patch 8.2.2282: length check mismatch with argument of strncmp()
Problem:    Length check mismatch with argument of strncmp(). (Christian
            Brabandt)
Solution:   Adjust length check.
2021-01-02 20:14:23 +01:00
Bram Moolenaar
a11919fa44 patch 8.2.2281: Vim9: compiled "wincmd" cannot be followed by bar
Problem:    Vim9: compiled "wincmd" cannot be followed by bar.
Solution:   Check for bar after "wincmd". (closes #7599)
2021-01-02 19:44:56 +01:00
Bram Moolenaar
9d19e4f4ba patch 8.2.2280: fuzzy matching doesn't give access to the scores
Problem:    Fuzzy matching doesn't give access to the scores.
Solution:   Return the scores with a third list. (Yegappan Lakshmanan,
            closes #7596)
2021-01-02 18:31:32 +01:00
Bram Moolenaar
508b5618ec patch 8.2.2279: Vim9: memory leak with catch in skipped block
Problem:    Vim9: memory leak with catch in skipped block.
Solution:   Free the pattern if not used.
2021-01-02 18:17:26 +01:00
Bram Moolenaar
66c50c5653 patch 8.2.2278: falling back to old regexp engine can some patterns
Problem:    Falling back to old regexp engine can some patterns.
Solution:   Do not fall back once [[:lower:]] or [[:upper:]] is used.
            (Christian Brabandt, closes #7572)
2021-01-02 17:43:49 +01:00
Bram Moolenaar
9281c6cae4 patch 8.2.2277: missing backslash
Problem:    Missing backslash.
Solution:   Add backslash.
2021-01-02 17:06:16 +01:00
Bram Moolenaar
a72514945b patch 8.2.2276: list of distributed files is outdated
Problem:    List of distributed files is outdated.
Solution:   Update the file list.  Minor comment updates.
2021-01-02 16:53:13 +01:00
Bram Moolenaar
7e6a515ed1 Update runtime files. 2021-01-02 16:39:53 +01:00
Bram Moolenaar
02faa944c6 patch 8.2.2275: CTRL-C not recognized in Mintty
Problem:    CTRL-C not recognized in Mintty.
Solution:   Recognize the modifyOtherKeys code ending in "u". (Christian
            Brabandt, closes #7575)
2021-01-02 16:17:18 +01:00
Bram Moolenaar
2f91e2f8da patch 8.2.2274: badge for Travis is outdated
Problem:    badge for Travis is outdated.
Solution:   Update badge for move from travis-ci.org to travis-ci.com.
2021-01-02 16:06:44 +01:00
Bram Moolenaar
628c102d12 patch 8.2.2273: build failure
Problem:    Build failure.
Solution:   Add missing changes to header file.
2021-01-02 15:49:28 +01:00
Bram Moolenaar
aa210a3aec patch 8.2.2272: Vim9: extend() can violate the type of a variable
Problem:    Vim9: extend() can violate the type of a variable.
Solution:   Add the type to the dictionary or list and check items against it.
            (closes #7593)
2021-01-02 15:41:03 +01:00
Bram Moolenaar
3e0107ea16 patch 8.2.2271: ml_get error when changing hidden buffer in Python
Problem:    ml_get error when changing hidden buffer in Python.
Solution:   Block updating folds. (closes #7598)
2021-01-02 13:53:59 +01:00
Bram Moolenaar
38a434f7ba patch 8.2.2270: warning for size_t to int conversion
Problem:    Warning for size_t to int conversion. (Randall W. Morris)
Solution:   Add a type cast.
2021-01-02 12:45:45 +01:00
Bram Moolenaar
edc10b541b patch 8.2.2269: not all :hardcopy code covered by tests
Problem:    Not all :hardcopy code covered by tests.
Solution:   Test more combinations. (Dominique Pellé, closes #7595)
2021-01-01 21:34:37 +01:00
Bram Moolenaar
3862ea3f62 patch 8.2.2268: Vim9: list unpack seen as declaration
Problem:    Vim9: list unpack seen as declaration.
Solution:   Check for "var". (closes #7594)
2021-01-01 21:05:55 +01:00
Bram Moolenaar
c368957b19 patch 8.2.2267: Vim9: cannot use unlet for a dict member
Problem:    Vim9: cannot use unlet for a dict member.
Solution:   Pass GLV_NO_DECL to get_lval(). (closes #7585)
2021-01-01 19:40:02 +01:00
Bram Moolenaar
e7a73e0762 patch 8.2.2266: Vim9: it can be hard to see where white space is missing
Problem:    Vim9: it can be hard to see where white space is missing.
Solution:   Mention the text where the error was seen. (closes #7580)
2021-01-01 19:17:55 +01:00
Bram Moolenaar
b8ba9b9197 patch 8.2.2265: error message for missing endfunc/enddef is last line
Problem:    Error message for missing endfunc/enddef is last line.
Solution:   Report the line where the function starts. (closes #7582)
2021-01-01 18:54:34 +01:00
Bram Moolenaar
5178b1b02f patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Problem:    Vim9: no error for mismatched :endfunc or :enddef.
Solution:   Check for the mismatch. (issue #7582)
2021-01-01 18:43:51 +01:00
Bram Moolenaar
69f7050ceb patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Problem:    Vim9: compilation error with try-catch in skipped block.
Solution:   Do not bail out when generate_instr() returns NULL. (closes #7584)
2021-01-01 16:10:46 +01:00
Bram Moolenaar
a8b8af19e4 patch 8.2.2262: Vim9: converting bool to string prefixes v:
Problem:    Vim9: converting bool to string prefixes v:.
Solution:   Do not use the v: prefix.
2021-01-01 15:11:04 +01:00
Bram Moolenaar
d5ea8f08f7 patch 8.2.2261: Vim9: boolean option gets string type
Problem:    Vim9: boolean option gets string type.
Solution:   Check for VAR_BOOL. (closes #7588)
2021-01-01 14:49:15 +01:00
Bram Moolenaar
5efe0e5d16 patch 8.2.2260: window resize test fails in very wide terminal
Problem:    Window resize test fails in very wide terminal.
Solution:   Resize using the 'columns' option.  (Vladimir Lomov, closes #7592)
2021-01-01 14:31:34 +01:00
Bram Moolenaar
a387083b2f patch 8.2.2259: Test_Executable() fails when using chroot
Problem:    Test_Executable() fails when using chroot.
Solution:   Ignore the difference between "sbin" and "bin".
2021-01-01 14:20:44 +01:00
Bram Moolenaar
beef4eeda5 patch 8.2.2258: not all OCaml related files are detected
Problem:    Not all OCaml related files are detected.
Solution:   Update OCaml file type detection.  (Markus Mottl, closes #7590)
2021-01-01 13:54:00 +01:00
Bram Moolenaar
2949cfdbe4 patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Problem:    Vim9: using -> for lambda is ambiguous.
Solution:   Stop supporting ->, must use =>.
2020-12-31 21:28:47 +01:00
Bram Moolenaar
adc8e44645 patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Problem:    Vim9: cannot use function( after line break in :def function.
Solution:   Check for "(" after "function". (closes #7581)
2020-12-31 18:28:18 +01:00
Bram Moolenaar
1779ff4842 patch 8.2.2255: Tcl test fails
Problem:    Tcl test fails.
Solution:   Change option handling.
2020-12-31 18:11:16 +01:00
Bram Moolenaar
dd1f426bd6 patch 8.2.2254: Vim9: bool option type is number
Problem:    Vim9: bool option type is number.
Solution:   Have get_option_value() return a different value for bool and
            number options. (closes #7583)
2020-12-31 17:41:01 +01:00
Bram Moolenaar
ca2f7e7af3 patch 8.2.2253: Vim9: expr test fails
Problem:    Vim9: expr test fails.
Solution:   Add missing assignment.
2020-12-31 13:39:54 +01:00
Bram Moolenaar
6b55377303 patch 8.2.2252: Vim9: crash when using lambda without return type in dict
Problem:    Vim9: crash when using lambda without return type in dict.
Solution:   Without a return type use t_unknown. (closes #7587)
2020-12-31 13:31:23 +01:00
Bram Moolenaar
a04d447d3a patch 8.2.2251: test failures in legacy script
Problem:    Test failures in legacy script.
Solution:   Check for Vim9 script.
2020-12-30 21:16:37 +01:00
Bram Moolenaar
de4f95b041 patch 8.2.2250: Vim9: sublist is ambiguous
Problem:    Vim9: sublist is ambiguous.
Solution:   Require white space around the colon. (closes #7409)
2020-12-30 20:39:21 +01:00
Bram Moolenaar
2a5c61a019 patch 8.2.2249: termcodes test is flaky when used over ssh
Problem:    Termcodes test is flaky when used over ssh with X forwarding.
Solution:   Set 'mousetime' to a larger value. (Dominique Pellé, closes #7576,
            closes #7563)
2020-12-30 14:59:23 +01:00
Bram Moolenaar
2808da39f9 patch 8.2.2248: ASAN error on exit with GUI
Problem:    ASAN error on exit with GUI.
Solution:   Check the window still has lines. (Christian Brabandt,
            closes #7573)
2020-12-30 14:08:35 +01:00
Bram Moolenaar
467676d468 patch 8.2.2247: VMS: various smaller problems
Problem:    VMS: various smaller problems.
Solution:   Fix VMS building and other problems. (Zoltan Arpadffy)
2020-12-30 13:14:45 +01:00
Bram Moolenaar
4d8c96d466 patch 8.2.2246: cursor keys not recognized at the hit-Enter prompt
Problem:    Cursor keys not recognized at the hit-Enter prompt after executing
            an external command.
Solution:   Change the codes for the extra cursor keys. (closes #7562)
            Tune the delays to avoid test flakyness.
2020-12-29 20:53:33 +01:00
Bram Moolenaar
285b15fce1 patch 8.2.2245: Vim9: return value of winrestcmd() cannot be executed
Problem:    Vim9: return value of winrestcmd() cannot be executed.
Solution:   Put colons before each range. (closes #7571)
2020-12-29 20:25:19 +01:00
Bram Moolenaar
89015a6759 patch 8.2.2244: crash when making the window width negative
Problem:    Crash when making the window width of the not-current window
            negative.
Solution:   Make sure the window width is not negative. (closes #7568)
2020-12-29 12:46:51 +01:00
Bram Moolenaar
4012d26207 patch 8.2.2243: crash when popup mask contains zeroes
Problem:    Crash when popup mask contains zeroes.
Solution:   Check boundaries properly. (closes #7569)
2020-12-29 11:57:46 +01:00
Bram Moolenaar
8242ebbdba patch 8.2.2242: Vim9: bar line continuation does not work at script level
Problem:    Vim9: line continuation with bar does not work at script level.
Solution:   Check for Vim9 script.
2020-12-29 11:15:01 +01:00
Bram Moolenaar
864a28b6a6 patch 8.2.2241: Build with Ruby and clang may fail
Problem:    Build with Ruby and clang may fail.
Solution:   Adjust congigure and sed script. (Ozaki Kiichi, closes #7566)
2020-12-28 21:36:56 +01:00
Bram Moolenaar
41a834d1e3 patch 8.2.2240: clientserver test fails if full path is used
Problem:    Clientserver test fails if full path is used.
Solution:   Ignore the path preceding the file name.
2020-12-28 21:15:16 +01:00
Bram Moolenaar
dcc58e031d patch 8.2.2239: Vim9: concatenating lines with backslash is inconvenient
Problem:    Vim9: concatenating lines with backslash is inconvenient.
Solution:   Support concatenating lines starting with '|', useful for
            :autocmd, :command, etc. (closes #6702)
2020-12-28 20:53:21 +01:00
Bram Moolenaar
9b8d62267f patch 8.2.2238: Vim9: cannot load a Vim9 script without the +eval feature
Problem:    Vim9: cannot load a Vim9 script without the +eval feature.
Solution:   Support Vim9 script syntax without the +eval feature.
2020-12-28 18:26:00 +01:00
Bram Moolenaar
ed1e4c9a70 patch 8.2.2237: CI on Mac fails in sed command
Problem:    CI on Mac fails in sed command.
Solution:   Set LC_ALL to "C". (Ozaki Kiichi, closes #7565)
2020-12-28 15:46:47 +01:00
Bram Moolenaar
746670604a patch 8.2.2236: 'scroll' option can change when setting the statusline
Problem:    'scroll' option can change when setting the statusline or tabline
            but the option context is not updated.
Solution:   Update the script context when the scroll option is changed as a
            side effect. (Christian Brabandt, closes #7533)
2020-12-28 15:41:41 +01:00
Bram Moolenaar
dace9f785f patch 8.2.2235: build failure with some Ruby versions
Problem:    Build failure with some Ruby versions.
Solution:   Adjust the code for Ruby 3.0. (Ozaki Kiichi, closes #7564)
2020-12-28 15:07:45 +01:00
Bram Moolenaar
3e112acc22 patch 8.2.2234: command line wildmenu test often fails with Unix GUI
Problem:    Command line wildmenu test often fails with Unix GUI.
Solution:   Skip the test where it is expected to fail.
2020-12-28 13:41:53 +01:00
Bram Moolenaar
17793ef23a patch 8.2.2233: cannot convert a byte index into a character index
Problem:    Cannot convert a byte index into a character index.
Solution:   Add charidx(). (Yegappan Lakshmanan, closes #7561)
2020-12-28 12:56:58 +01:00
Bram Moolenaar
9618a25b9c patch 8.2.2232: compiler error for falling through into next case
Problem:    Compiler error for falling through into next case.
Solution:   Move FALLTHROUGH below the #endif
2020-12-27 19:18:03 +01:00
Bram Moolenaar
e4862a0fe6 patch 8.2.2231: when "--remote file" is used "file" is not reloaded
Problem:    When "--remote file" is used "file" is not reloaded.
Solution:   When a :drop command is used for a file that is already displayed
            in a window and it has not been changed, check if it needs to be
            reloaded. (closes #7560)
2020-12-27 19:00:24 +01:00
Bram Moolenaar
179eb567b1 patch 8.2.2230: Vim9: insert completion runs into error
Problem:    Vim9: insert completion runs into error.
Solution:   Insert colon before range. (closes #7556)
2020-12-27 18:03:22 +01:00
Bram Moolenaar
39cb2dab18 patch 8.2.2229: build failure without the +eval feature
Problem:    build failure without the +eval feature.
Solution:   Add #ifdef.
2020-12-27 17:35:18 +01:00
Bram Moolenaar
4389f9cd00 patch 8.2.2228: Vim9: cannot use ":e #" because # starts a comment
Problem:    Vim9: cannot use ":e #" because # starts a comment.
Solution:   Support using %% instead of #.
2020-12-27 16:55:11 +01:00
Bram Moolenaar
e462f52db3 patch 8.2.2227: Vim9: recognizing lambda is too complicated
Problem:    Vim9: recognizing lambda is too complicated.
Solution:   Call compile_lambda() and check for NOTDONE.
2020-12-27 14:43:30 +01:00
Bram Moolenaar
7e3ee7823f patch 8.2.2226: Vim9: script test fails
Problem:    Vim9: script test fails.
Solution:   Add missing change.
2020-12-27 14:02:27 +01:00
Bram Moolenaar
a629495530 patch 8.2.2225: Vim9: error when using :import in legacy script twice
Problem:    Vim9: error when using :import in legacy script twice.
Solution:   Make it possible to redefine an import when reloading.
2020-12-27 13:39:50 +01:00
Bram Moolenaar
07a65d26e7 patch 8.2.2224: Vim9: crash if script reloaded with different variable type
Problem:    Vim9: crash if script reloaded with different variable type.
Solution:   Check the type when accessing the variable.
2020-12-26 20:09:15 +01:00
Bram Moolenaar
cdc40c43f1 patch 8.2.2223: Vim9: Reloading marks a :def function as deleted
Problem:    Vim9: Reloading marks a :def function as deleted.
Solution:   Clear the function contents but keep the index.
2020-12-26 17:43:08 +01:00
Bram Moolenaar
2b32700dab patch 8.2.2222: Vim9: cannot keep script variables when reloading
Problem:    Vim9: cannot keep script variables when reloading.
Solution:   Add the "noclear" argument to :vim9script.
2020-12-26 15:39:31 +01:00
Bram Moolenaar
b0ac4ea5e1 patch 8.2.2221: if <Down> is mapped on the command line 'wildchar' is inserted
Problem:    If <Down> is mapped on the command line 'wildchar' is inserted.
Solution:   Set KeyTyped when using 'wildchar'. (closes #7552)
2020-12-26 12:06:54 +01:00
Bram Moolenaar
e5730bdcea patch 8.2.2220: Vim9: memory leak when parsing nested parenthesis
Problem:    Vim9: memory leak when parsing nested parenthesis.
Solution:   Clear newargs.
2020-12-25 22:30:16 +01:00
Bram Moolenaar
7e3682068b patch 8.2.2219: Vim9: method call with expression not supported
Problem:    Vim9: method call with expression not supported.
Solution:   Implement expr->(expr)().
2020-12-25 21:56:57 +01:00
Bram Moolenaar
fc0e8f5c3e patch 8.2.2218: Vim9: failure if passing more args to lambda than expected
Problem:    Vim9: failure if passing more arguments to a lambda than expected.
Solution:   Only put expected arguments on the stack. (closes #7548)
2020-12-25 20:24:51 +01:00
Bram Moolenaar
20a762987e patch 8.2.2217: Vim9: command modifiers not restored in catch block
Problem:    Vim9: command modifiers not restored in catch block.
Solution:   Restore command modifiers. (closes #7542)
2020-12-25 19:47:24 +01:00
Bram Moolenaar
6e2c2c50ba patch 8.2.2216: Vim9: range with missing colon can be hard to spot
Problem:    Vim9: range with missing colon can be hard to spot.
Solution:   Include the start of the range in the error. (closes #7543)
2020-12-25 19:25:45 +01:00
Bram Moolenaar
56ce9ea3ea patch 8.2.2215: Vim9: not recognized in global command
Problem:    Vim9:  not recognized in global command.
Solution:   Skip over pattern. (issue #7541)
2020-12-25 18:35:29 +01:00
Bram Moolenaar
f8103f274e patch 8.2.2214: ":e#" does not give a warning for missing white space
Problem:    ":e#" does not give a warning for missing white space.
Solution:   Adjust the check for white space. (closes #7545)
2020-12-25 17:36:27 +01:00
Bram Moolenaar
7cfcd0c99c patch 8.2.2213: checking white space around -> is not backwards compatible
Problem:    Checking white space around -> is not backwards compatible.
Solution:   Only check white space around =>.
2020-12-25 16:11:53 +01:00
Bram Moolenaar
c754b4cc98 patch 8.2.2212: Vim9: lambda with => does not work at the script level
Problem:    Vim9: lambda with => does not work at the script level.
Solution:   Make it work.
2020-12-25 15:24:23 +01:00
Bram Moolenaar
b2f9e0e2c5 patch 8.2.2211: MS-Windows: can't load Python dll if not in the path
Problem:    MS-Windows: can't load Python dll if not in the path.
Solution:   Use the InstallPath registry entry. (Kelvin Lee, closes #7540)
2020-12-25 13:52:37 +01:00
Bram Moolenaar
3868f59466 patch 8.2.2210: Vim9: allocating a type to set TTFLAG_BOOL_OK
Problem:    Vim9: allocating a type to set TTFLAG_BOOL_OK.
Solution:   Add t_number_bool.
2020-12-25 13:20:41 +01:00
Bram Moolenaar
9e68c32563 patch 8.2.2209: Vim9: return type of => lambda not parsed
Problem:    Vim9: return type of => lambda not parsed.
Solution:   Parse and use the return type.
2020-12-25 12:38:04 +01:00
Bram Moolenaar
4aab88d919 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Problem:    Vim9: after reloading a script variable index may be invalid.
Solution:   When the sequence number doesn't match give an error for using a
            script-local variable from a compiled function. (closes #7547)
2020-12-24 21:56:41 +01:00
Bram Moolenaar
38455a9213 patch 8.2.2207: illegal memory access if popup menu items are changed
Problem:    Illegal memory access if popup menu items are changed while the
            menu is visible. (Tomáš Janoušek)
Solution:   Make a copy of the text. (closes #7537)
2020-12-24 18:39:02 +01:00
Bram Moolenaar
0261a1aeeb Tweak the style a bit. 2020-12-24 17:41:12 +01:00
Bram Moolenaar
c139aa8a2b Remove table, it doesn't work 2020-12-24 17:35:41 +01:00
Bram Moolenaar
b04ddb5b04 Attempt to fix markdown in table cell. 2020-12-24 17:25:06 +01:00
Bram Moolenaar
b54f1202b3 Attempt to align the logo without a markdown table. 2020-12-24 17:20:24 +01:00
Bram Moolenaar
4941b5effd patch 8.2.2206: :exe command line completion only works for first argument
Problem:    :exe command line completion only works for first argument.
Solution:   Skip over text if more is following. (closes #7546)
2020-12-24 17:15:53 +01:00
Bram Moolenaar
6dd41b1d57 patch 8.2.2205: Vim9: memory leak when parsing lambda fails
Problem:    Vim9: memory leak when parsing lambda fails.
Solution:   Clear growarrays.
2020-12-24 16:06:00 +01:00
Bram Moolenaar
65c4415276 patch 8.2.2204: Vim9: using -> both for method and lambda is confusing
Problem:    Vim9: using -> both for method and lambda is confusing.
Solution:   Use => for lambda in :def function.
2020-12-24 15:14:01 +01:00
Bram Moolenaar
b34f337472 patch 8.2.2203: Moodle gift files are not recognized
Problem:    Moodle gift files are not recognized.
Solution:   Add a filetype pattern. (Delim Temizer)
2020-12-24 13:33:46 +01:00
Bram Moolenaar
16204962c7 patch 8.2.2202: write file test still fails on MS-Windows
Problem:    Write file test still fails on MS-Windows.
Solution:   Set fileformat with the :edit command
2020-12-23 22:40:11 +01:00
Bram Moolenaar
bd318559cf patch 8.2.2201: write file test fails on MS-Windows
Problem:    Write file test fails on MS-Windows.
Solution:   Force edit after setting 'fileformat'.
2020-12-23 20:55:15 +01:00
Bram Moolenaar
27bf7af9d0 patch 8.2.2200: Vim9: lambda without white space around -> is confusing
Problem:    Vim9: lambda without white space around -> is confusing.
Solution:   Require white space in a :def funtion. (issue #7503)
2020-12-23 20:27:31 +01:00
Bram Moolenaar
b3c8b1d254 patch 8.2.2199: first write after setting 'eol' does not have NL added
Problem:    First write after setting 'eol' does not have NL added. (Tomáš
            Janoušek)
Solution:   Only use b_no_eol_lnum when doing a binary write. (closes #7535)
2020-12-23 18:54:57 +01:00
Bram Moolenaar
23999d799c patch 8.2.2198: ml_get error when resizing window and using text property
Problem:    ml_get error when resizing window and using text property.
Solution:   Validate botline of the right window. (closes #7528)
2020-12-23 14:36:00 +01:00
Bram Moolenaar
4072ba571b Update runtime files. 2020-12-23 13:56:35 +01:00
Bram Moolenaar
9f63a65f22 patch 8.2.2197: assert arguments order reversed
Problem:    Assert arguments order reversed.
Solution:   Swap the arguments. (Christian Brabandt, closes #7531)
2020-12-23 12:50:20 +01:00
Bram Moolenaar
abcbb0e9ad patch 8.2.2196: :version output has extra spaces in compile and link command
Problem:    :version output has extra spaces in compile and link command.
Solution:   Adjust QUOTESED. (closes #7505)
2020-12-23 12:33:42 +01:00
Bram Moolenaar
1dcf55d4f1 patch 8.2.2195: failing tests for :const
Problem:    Failing tests for :const.
Solution:   Add missing check for ASSIGN_FINAL.
2020-12-22 22:07:30 +01:00
Bram Moolenaar
89b474dd4f patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Problem:    Vim9: cannot use :const or :final at the script level.
Solution:   Support using :const and :final. (closes #7526)
2020-12-22 21:19:39 +01:00
Bram Moolenaar
3bdc90b7df patch 8.2.2193: Vim9: can change constant in :def function
Problem:    Vim9: can change constant in :def function.
Solution:   Check if a variable is locked. (issue #7526)
2020-12-22 20:35:40 +01:00
Bram Moolenaar
e5492609b3 patch 8.2.2192: Codecov on github actions fails
Problem:    Codecov on github actions fails.
Solution:   Revert to codecov script. (Ozaki Kiichi, closes #7529)
2020-12-22 19:05:33 +01:00
Bram Moolenaar
58a52f215a patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Problem:    Vim9: using wrong name with lambda in nested function.
Solution:   Copy the lambda name earlier. (closes #7525)
2020-12-22 18:56:55 +01:00
Bram Moolenaar
077a42318c patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Problem:    Vim9: crash when compiled with EXITFREE.
Solution:   Check that df_ufunc is not NULL.
2020-12-22 18:33:27 +01:00
Bram Moolenaar
032a2d050b patch 8.2.2189: cannot repeat a command that uses the small delete register
Problem:    Cannot repeat a command that uses the small delete register.
Solution:   Store the register name instead of the contents. (Christian
            Brabandt, closes #7527)
2020-12-22 17:59:35 +01:00
Bram Moolenaar
cd45ed03bf patch 8.2.2188: Vim9: crash when calling global function from :def function
Problem:    Vim9: crash when calling global function from :def function.
Solution:   Set the outer context.  Define the partial for the context on the
            original function. Use a refcount to keep track of which ufunc is
            using a dfunc. (closes #7525)
2020-12-22 17:35:54 +01:00
Bram Moolenaar
07761a3b96 patch 8.2.2187: Python 3 test fails sometimes
Problem:    Python 3 test fails sometimes. (Christian Brabandt)
Solution:   Accept two SystemError messages.
2020-12-22 12:50:10 +01:00
Bram Moolenaar
5b3d1bb0f5 patch 8.2.2186: Vim9: error when using 'opfunc'
Problem:    Vim9: error when using 'opfunc'.
Solution:   Do not expect a return value from 'opfunc'. (closes #7510)
2020-12-22 12:20:08 +01:00
Bram Moolenaar
c882e4d169 Add missing change to version.c 2020-12-22 12:18:11 +01:00
Bram Moolenaar
1cfb9bb5c0 patch 8.2.2185: BufUnload is not triggered for the quickfix dummy buffer
Problem:    BufUnload is not triggered for the quickfix dummy buffer.
Solution:   Do trigger BufUnload. (Pontus Leitzler,closes #7518, closes #7517)
            Fix white space around "=".
2020-12-22 11:40:45 +01:00
Bram Moolenaar
9a963377b4 patch 8.2.2184: Vim9: no error when using "2" for a line number
Problem:    Vim9: no error when using "2" for a line number.
Solution:   Give an error message if the line number is invalid. (closes #7492)
2020-12-21 21:58:46 +01:00
Bram Moolenaar
60f63100b9 patch 8.2.2183: Vim9: value of 'edcompatible' and 'gdefault' are used
Problem:    Vim9: value of 'edcompatible' and 'gdefault' are used.
Solution:   Ignore these deprecated options in Vim9 script. (closes #7508)
2020-12-21 20:32:43 +01:00
Bram Moolenaar
f4e2099e39 patch 8.2.2182: Vim9: value of 'magic' is still relevant
Problem:    Vim9: value of 'magic' is still relevant.
Solution:   Always behave like 'magic' is on in Vim9 script (closes #7509)
2020-12-21 19:59:08 +01:00
Bram Moolenaar
a3d10a508c patch 8.2.2181: valgrind warnings for using uninitialized value
Problem:    Valgrind warnings for using uninitialized value.
Solution:   Do not use "start" or "end" unless there is a match.
2020-12-21 18:24:00 +01:00
Bram Moolenaar
6f17a3f023 patch 8.2.2180: Vim9: test for error after error is flaky
Problem:    Vim9: test for error after error is flaky.
Solution:   Wait for job to finish instead of a fixed delay.
2020-12-21 18:11:24 +01:00
Bram Moolenaar
4f5e397756 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Problem:    Vim9: crash when indexing a dict with a number.
Solution:   Add ISN_STOREINDEX. (closes #7513)
2020-12-21 17:30:50 +01:00
Bram Moolenaar
2e2f52a4a0 patch 8.2.2178: Python 3: non-utf8 character cannot be handled
Problem:    Python 3: non-utf8 character cannot be handled.
Solution:   Change the string decode. (Björn Linse, closes #1053)
2020-12-21 16:03:02 +01:00
Bram Moolenaar
ef2dff52de patch 8.2.2177: pattern "^" does not match if first character is combining
Problem:    Pattern "^" does not match if the first character in the line is
            combining. (Rene Kita)
Solution:   Do accept a match at the start of the line. (closes #6963)
2020-12-21 14:54:32 +01:00
Bram Moolenaar
6a78f32844 patch 8.2.2176: crash with a sequence of fold commands
Problem:    Crash with a sequence of fold commands.
Solution:   Bail out when there are no folds at all.  Add a test (Dominique
            Pellé) (closes #7515)
2020-12-21 14:01:41 +01:00
Bram Moolenaar
9aff970204 patch 8.2.2175: github actions: clang-11 handling suboptimal
Problem:    Github actions: clang-11 handling suboptimal.
Solution:   Separate step of installing clang-11. Get ubuntu release name
            dynamically. (Ozaki Kiichi, closes #7514)
2020-12-21 13:37:28 +01:00
Bram Moolenaar
8c9d98a8af patch 8.2.2174: Mac version doesn't specify the CPU architecture
Problem:    Mac version doesn't specify the CPU architecture.
Solution:   Add "arm64" or "x86_64". (Yee Cheng Chin, closes #7519)
2020-12-21 13:05:57 +01:00
Bram Moolenaar
52c124d330 patch 8.2.2173: Vim9: get internal error when assigning to undefined variable
Problem:    Vim9: get internal error when assigning to undefined variable.
Solution:   Add error message. (closes #7475)
2020-12-20 21:43:35 +01:00
Bram Moolenaar
5082471f91 patch 8.2.2172: Vim9: number of arguments is not always checked
Problem:    Vim9: number of arguments is not always checked. (Yegappan
            Lakshmanan)
Solution:   Check number of arguments when calling function by name.
2020-12-20 21:10:17 +01:00
Bram Moolenaar
61e07b2394 patch 8.2.2171: valgrind warning for using uninitialized value
Problem:    Valgrind warning for using uninitialized value.
Solution:   Do not use "startp" or "endp" unless there is a match.
2020-12-20 17:59:53 +01:00
Bram Moolenaar
f112f30a82 patch 8.2.2170: Vim9: a global function defined in a :def function fails
Problem:    Vim9: a global function defined in a :def function fails if it
            uses the context.
Solution:   Create a partial to store the closure context. (see #7410)
2020-12-20 17:47:52 +01:00
Bram Moolenaar
090728ad4d patch 8.2.2169: Vim9: test leaves file behind
Problem:    Vim9: test leaves file behind.
Solution:   Rename script files. (Dominique Pellé, closes #7511)
            Use try/finally.
2020-12-20 15:43:31 +01:00
Bram Moolenaar
d24602f43c patch 8.2.2168: Vim9: error for assigning to dict of dict
Problem:    Vim9: error for assigning to dict of dict.
Solution:   Remember the destination type. (closes #7506)
2020-12-20 15:20:56 +01:00
Bram Moolenaar
d88dc4d4e9 patch 8.2.2167: Vim9: assign test fails
Problem:    Vim9: assign test fails. (Elimar Riesebieter)
Solution:   Adjust the test for dict assignment.
2020-12-20 14:49:42 +01:00
Bram Moolenaar
d0a1dee3f1 patch 8.2.2166: auto format doesn't work when deleting text
Problem:    Auto format doesn't work when deleting text.
Solution:   Make "x" trigger auto format. (closes #7504)
2020-12-20 13:07:48 +01:00
Bram Moolenaar
8f22f5c3aa patch 8.2.2165: Vim9: assignment to dict member does not work
Problem:    Vim9: assignment to dict member does not work.
Solution:   Fix recognizing dict member. (closes #7484)
2020-12-19 22:10:13 +01:00
Bram Moolenaar
17f700ac8b patch 8.2.2164: Vim9: autoload function doesn't work in uppercased script
Problem:    Vim9: autoload function doesn't work in script that starts with
            an upper case letter.
Solution:   Check for the autoload character. (closes #7502)
2020-12-19 21:23:42 +01:00
Bram Moolenaar
13656f02e4 patch 8.2.2163: crash when discarded exception is the current exception
Problem:    Crash when discarded exception is the current exception.
Solution:   Compare the execption with current_exception. (closes #7499)
2020-12-19 17:55:54 +01:00
Bram Moolenaar
03290b8444 patch 8.2.2162: Vim9: Cannot load or store autoload variables
Problem:    Vim9: Cannot load or store autoload variables.
Solution:   Add ISN_LOADAUTO and ISN_STOREAUTO. (closes #7485)
2020-12-19 16:30:44 +01:00
Bram Moolenaar
1f33e0a7c4 patch 8.2.2161: arguments -T and -x not tested yet
Problem:    Arguments -T and -x not tested yet.
Solution:   Add a test. (Dominique Pellé, closes #7490
2020-12-19 13:32:07 +01:00
Bram Moolenaar
8e7d6223f6 patch 8.2.2160: various typos
Problem:    Various typos.
Solution:   Fix spelling mistakes. (closes #7494)
2020-12-18 19:49:56 +01:00
Bram Moolenaar
3beaf9cd8e patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Problem:    Vim9: when declaring a list it is not allocated yet, causing a
            following extend() to fail.
Solution:   When fetching a variable value for a list or dict that is null
            allocate the list or dict, so it can be used. (closes #7491)
2020-12-18 17:23:14 +01:00
Bram Moolenaar
6e562fcc07 patch 8.2.2158: CI on cirrus times out, coveralls doesn't always run
Problem:    CI on cirrus times out, coveralls doesn't always run.
Solution:   Set timeout to 20 minutes. Adjust condition. (closes #7493)
2020-12-18 16:29:25 +01:00
Bram Moolenaar
9aed729fe9 patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Problem:    Vim9: can delete a Vim9 script variable from a function.
Solution:   Check the variable is defined in Vim9 script. (closes #7483)
2020-12-18 15:38:00 +01:00
Bram Moolenaar
b5b77378bc patch 8.2.2156: Github actions run on pusing a tag
Problem:    Github actions run on pusing a tag.
Solution:   Don't run CI on tag push. Omit coveralls on pull-request.
            (Ozaki Kiichi, closes #7489)
2020-12-18 13:31:31 +01:00
Bram Moolenaar
18f69229c5 patch 8.2.2155: warning from Github actions for code analysis
Problem:    Warning from Github actions for code analysis.
Solution:   Remove the "git checkout HEAD^2" block.
2020-12-18 13:15:20 +01:00
Bram Moolenaar
0353f56ddb patch 8.2.2154: popupwin test for terminal buffer fails sometimes
Problem:    Popupwin test for terminal buffer fails sometimes.
Solution:   Wait for the prompt to appear.
2020-12-17 22:27:38 +01:00
Bram Moolenaar
b125b535bb patch 8.2.2153: popupwin test for latin1 still fails sometimes
Problem:    Popupwin test for latin1 still fails sometimes.
Solution:   Wait for the "cat" command to finish.
2020-12-17 21:56:09 +01:00
Bram Moolenaar
8dd46e72cf patch 8.2.2152: screenpos() does not include the WinBar offset
Problem:    screenpos() does not include the WinBar offset.
Solution:   Use W_WINROW() instead of directly using w_window. (closes #7487)
2020-12-17 21:35:29 +01:00
Bram Moolenaar
a79a8944da patch 8.2.2151: $dir not expanded when configure checks for moonjit
Problem:    $dir not expanded when configure checks for moonjit.
Solution:   Use double quotes instead of single quotes. (closes #7478)
2020-12-17 20:50:25 +01:00
Bram Moolenaar
8ea05de6aa patch 8.2.2150: Github actions CI isn't used for all available platforms
Problem:    Github actions CI isn't used for all available platforms.
Solution:   Update the github workflows. (Ozaki Kiichi, closes #7433)
2020-12-17 20:27:26 +01:00
Bram Moolenaar
4c5bdb99ad patch 8.2.2149: popupwin test for latin1 sometimes fails
Problem:    Popupwin test for latin1 sometimes fails.
Solution:   Wait for the script to finish.
2020-12-17 17:45:59 +01:00
Bram Moolenaar
1c0aa97827 patch 8.2.2148: Vim9: crash when user command doesn't match
Problem:    Vim9: crash when user command doesn't match.
Solution:   Adjust command index. (closes #7479)
2020-12-16 21:43:54 +01:00
Bram Moolenaar
530bed993e patch 8.2.2147: quickfix window title not updated in all tab pages
Problem:    Quickfix window title not updated in all tab pages.
Solution:   Update the quickfix window title in all tab pages. (Yegappan
            Lakshmanan, closes #7481, closes #7466)
2020-12-16 21:02:56 +01:00
Bram Moolenaar
9987fb0b4b patch 8.2.2146: Vim9: automatic conversion of number to string for dict key
Problem:    Vim9: automatic conversion of number to string for dict key.
Solution:   Do not convert number to string. (closes #7474)
2020-12-15 21:41:56 +01:00
Bram Moolenaar
399ea8108c patch 8.2.2145: Vim9: concatenating lists does not adjust type of result
Problem:    Vim9: concatenating lists does not adjust type of result.
Solution:   When list member types differ use "any" member type.
            (closes #7473)
2020-12-15 21:28:57 +01:00
Bram Moolenaar
025cb1ca86 patch 8.2.2144: Vim9: some corner cases not tested
Problem:    Vim9: some corner cases not tested.
Solution:   Add a few tests.
2020-12-14 18:31:27 +01:00
Bram Moolenaar
ec792290eb patch 8.2.2143: Vim9: dead code in compiling :unlet
Problem:    Vim9: dead code in compiling :unlet.
Solution:   Don't check for "!" a second time.
2020-12-13 21:26:56 +01:00
Bram Moolenaar
fffdf4754f patch 8.2.2142: memory leak when heredoc is not terminated
Problem:    Memory leak when heredoc is not terminated.
Solution:   Free heredoc_trimmed.
2020-12-13 21:16:55 +01:00
Bram Moolenaar
8143a53c53 patch 8.2.2141: a user command with try/catch may not catch an expression error
Problem:    A user command with try/catch may not catch an expression error.
Solution:   When an expression fails check for following "|". (closes #7469)
2020-12-13 20:26:29 +01:00
Bram Moolenaar
2a3cd3af45 patch 8.2.2140: build failure with tiny features
Problem:    Build failure with tiny features.
Solution:   Add #ifdef.
2020-12-13 19:22:27 +01:00
Bram Moolenaar
acbae18df5 patch 8.2.2139: Vim9: unreachable code in assignment
Problem:    Vim9: unreachable code in assignment.
Solution:   Don't check "new_local" when "has_index" is set.  Add test for
            wrong type of list index.
2020-12-13 18:44:43 +01:00
Bram Moolenaar
b5b9480ee9 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Problem:    Vim9: "exit_cb" causes Vim to exit.
Solution:   Require white space after a command in Vim9 script. (closes #7467)
            Also fix that Vim9 style heredoc was not always recognized.
2020-12-13 17:50:20 +01:00
Bram Moolenaar
e498429087 patch 8.2.2137: Vim9: :echo and :execute give error for empty argument
Problem:    Vim9: :echo and :execute give error for empty argument.
Solution:   Ignore an empty argument. (closes #7468)
2020-12-13 14:19:25 +01:00
Bram Moolenaar
c530852315 patch 8.2.2136: Vim9: Using uninitialized variable
Problem:    Vim9: Using uninitialized variable.
Solution:   Initialize "len" to zero.  Clean up fnamemodify().
2020-12-13 12:25:35 +01:00
Bram Moolenaar
93f82cbee5 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Problem:    Vim9: #{ still seen as start of dict in some places.
Solution:   Remove check for { after #. (closes #7456)
2020-12-12 21:25:56 +01:00
Bram Moolenaar
57f799e6a4 patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Problem:    Vim9: get E1099 when autocmd triggered in builtin function.
Solution:   Check that did_emsg increased instead of checking that it changed.
            (closes #7448)
2020-12-12 20:42:19 +01:00
Bram Moolenaar
2a9d5d386b patch 8.2.2133: Vim9: checking for a non-empty string is too strict
Problem:    Vim9: checking for a non-empty string is too strict.
Solution:   Check for any string. (closes #7447)
2020-12-12 18:58:40 +01:00
Bram Moolenaar
3ae50c775c patch 8.2.2132: padding not drawn properly for popup window with title
Problem:    Padding not drawn properly for popup window with title.
Solution:   Draw the padding below the title. (closes #7460)
2020-12-12 18:18:06 +01:00
Bram Moolenaar
709664cca0 patch 8.2.2131: Vim9: crash when lambda uses same var as assignment
Problem:    Vim9: crash when lambda uses same var as assignment.
Solution:   Do not let lookup_local change lv_from_outer, make a copy.
            (closes #7461)
2020-12-12 14:33:41 +01:00
Bram Moolenaar
cc2335896b patch 8.2.2130: Insert mode completion messages end up in message history
Problem:    Insert mode completion messages end up in message history.
Solution:   Set msg_hist_off. (closes #7452
2020-12-12 13:32:07 +01:00
Bram Moolenaar
0ea7421ae6 patch 8.2.2129: MS-Windows: Checking if a file name is absolute is slow
Problem:    MS-Windows: Checking if a file name is absolute is slow.
Solution:   Do not use mch_FullName(). (closes #7033)
2020-12-11 20:10:50 +01:00
Bram Moolenaar
100118c73a patch 8.2.2128: there is no way to do something on CTRL-Z
Problem:    There is no way to do something on CTRL-Z.
Solution:   Add VimSuspend and VimResume autocommand events. (closes #7450)
2020-12-11 19:30:34 +01:00
Bram Moolenaar
1b884a0053 Update runtime files. 2020-12-10 21:11:27 +01:00
Bram Moolenaar
70249ee831 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Problem:    Vim9: executing user command defined in Vim9 script not tested.
Solution:   Add a test.
2020-12-10 21:01:30 +01:00
Bram Moolenaar
0e12140550 patch 8.2.2126: Ruby: missing function prototype
Problem:    Ruby: missing function prototype.
Solution:   Add the prototype.
2020-12-10 20:50:34 +01:00
Bram Moolenaar
8f1bf2ef78 patch 8.2.2125: Vim9: leaking memory
Problem:    Vim9: leaking memory.
Solution:   Free the saved 'cpo' value.
2020-12-10 20:21:24 +01:00
Bram Moolenaar
08597875b2 patch 8.2.2124: Vim9: a range cannot be computed at runtime
Problem:    Vim9: a range cannot be computed at runtime.
Solution:   Add the ISN_RANGE instruction.
2020-12-10 19:43:40 +01:00
Bram Moolenaar
d356fc65d2 patch 8.2.2123: after using a complete popup the buffer is listed
Problem:    After using a complete popup the buffer is listed. (Boris
            Staletic)
Solution:   Make the buffer unlisted.
2020-12-09 18:13:44 +01:00
Bram Moolenaar
9ec7026f24 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Problem:    Vim9: crash when sourcing vim9script early.
Solution:   Use set_option_value() instead of setting p_cpo directly.
            (closes #7441)
2020-12-09 17:16:59 +01:00
Bram Moolenaar
a7a691cc14 patch 8.2.2121: internal error when using \ze before \zs in a pattern
Problem:    Internal error when using \ze before \zs in a pattern.
Solution:   Check the end is never before the start. (closes #7442)
2020-12-09 16:36:04 +01:00
Bram Moolenaar
730677a0da patch 8.2.2120: not all Perl functionality is tested
Problem:    Not all Perl functionality is tested.
Solution:   Add a few more test cases. (Dominique Pellé, closes #7440)
2020-12-09 16:05:45 +01:00
Bram Moolenaar
7988a6f0e9 patch 8.2.2119: GTK3: status line background color is wrong
Problem:    GTK3: status line background color is wrong.
Solution:   Don't change the code for earlier GTK3 versions. (closes #7444)
2020-12-09 15:53:27 +01:00
Bram Moolenaar
f46bf5204c patch 8.2.2118: dead code in the job support
Problem:    Dead code in the job support. (Dominique Pellé)
Solution:   Define USE_ARGV before checking for it.
2020-12-09 13:16:13 +01:00
Bram Moolenaar
7bb4e74c38 patch 8.2.2117: some functions use any value as a string
Problem:    Some functions use any value as a string.
Solution:   Check that the value is a non-empty string.
2020-12-09 12:41:50 +01:00
Bram Moolenaar
2c78a772fd patch 8.2.2116: MS-Windows GUI: test for 'guifont' is incomplete
Problem:    MS-Windows GUI: test for 'guifont' is incomplete.
Solution:   Set 'renderoptions'. (Christian Brabandt)
2020-12-09 12:01:03 +01:00
Bram Moolenaar
7257af477b patch 8.2.2115: Vim9: some errors not tested for; dead code
Problem:    Vim9: some errors not tested for; dead code.
Solution:   Add a test.  Remove dead code.
2020-12-08 22:08:51 +01:00
Bram Moolenaar
61265b4000 patch 8.2.2114: Vim9: unreachable code in assignment
Problem:    Vim9: unreachable code in assignment.
Solution:   Remove impossible condition and code.
2020-12-08 21:53:28 +01:00
Bram Moolenaar
1b3e0727ce patch 8.2.2113: MS-Windows GUI: crash after using ":set guifont=" four times
Problem:    MS-Windows GUI: crash after using ":set guifont=" four times.
Solution:   Check for NULL pointer. (Ken Takata, closes #7434)
2020-12-08 21:12:40 +01:00
Bram Moolenaar
ac665c24c9 patch 8.2.2112: running tests may leave some files behind
Problem:    Running tests may leave some files behind.
Solution:   Delete the right files.  Fix a few typos. (Dominique Pellé,
            closes #7436
2020-12-08 20:39:15 +01:00
Bram Moolenaar
023fd5d213 patch 8.2.2111: GTK: menu background is the same color as the main window
Problem:    GTK: Menu background is the same color as the main window.
Solution:   Fix white space around the test in another way. (closes #7437,
            closes #7427)
2020-12-08 20:31:16 +01:00
Bram Moolenaar
8e1cbb55c3 patch 8.2.2110: cannot use ":shell" when reading from stdin
Problem:    Cannot use ":shell" when reading from stdin. (Gary Johnson)
Solution:   Revert patch 8.2.1833.
2020-12-08 19:36:21 +01:00
Bram Moolenaar
8a3da6a368 patch 8.2.2109: "vim -" does not work well when modifyOtherKeys is enabled
Problem:    "vim -" does not work well when modifyOtherKeys is enabled and a
            shell command is executed on startup.
Solution:   Only change modifyOtherKeys when executing a shell command in raw
            mode.
2020-12-08 19:18:37 +01:00
Bram Moolenaar
083966f671 patch 8.2.2108: Vim9: no test to check for :let error
Problem:    Vim9: no test to check for :let error.
Solution:   Add a test.  Rename tests from _let_ to _var_.
2020-12-08 11:29:40 +01:00
Bram Moolenaar
8ff16e0183 patch 8.2.2107: Vim9: some errors not tested
Problem:    Vim9: some errors not tested.
Solution:   Add tests.  Fix getting the right error.
2020-12-07 21:49:52 +01:00
Bram Moolenaar
b237ae7b83 patch 8.2.2106: TOML files are not recognized
Problem:    TOML files are not recognized.
Solution:   Match *.toml. (issue #7432)
2020-12-07 18:05:02 +01:00
Bram Moolenaar
7b130b9738 patch 8.2.2105: sound test is a bit flaky
Problem:    Sound test is a bit flaky.
Solution:   Use WaitForAssert(). (Dominique Pellé, closes #7429)
2020-12-06 21:43:44 +01:00
Bram Moolenaar
d5a986f460 patch 8.2.2104: build problem with Ruby 2.7
Problem:    Build problem with Ruby 2.7.
Solution:   Adjust function declarations. (Ozaki Kiichi, closes #7430)
2020-12-06 21:11:31 +01:00
Bram Moolenaar
41d6196e30 patch 8.2.2103: Vim9: unreachable code
Problem:    Vim9: unreachable code.
Solution:   Remove the code to prepend s: to the variable name
2020-12-06 20:12:43 +01:00
Bram Moolenaar
5402175815 patch 8.2.2102: Vim9: not all error messages tested
Problem:    Vim9: not all error messages tested.
Solution:   Add a few test cases.
2020-12-06 18:50:36 +01:00
Bram Moolenaar
8bb0f5472c patch 8.2.2101: Vim9: memory leak when literal dict has an error
Problem:    Vim9: memory leak when literal dict has an error and when an
            expression is not complete.
Solution:   Clear the typval and the growarray.
2020-12-06 16:03:55 +01:00
Bram Moolenaar
67322bf74a patch 8.2.2100: insufficient testing for function range and dict
Problem:    Insufficient testing for function range and dict.
Solution:   Add a few tests. (Dominique Pellé, closes #7428)
2020-12-06 15:03:19 +01:00
Bram Moolenaar
918a424917 patch 8.2.2099: Vim9: some checks are not tested
Problem:    Vim9: some checks are not tested.
Solution:   Add a few more tests.  Give better error messages.
2020-12-06 14:37:08 +01:00
Bram Moolenaar
08cf0c0d82 patch 8.2.2098: Vim9: function argument of sort() and map() not tested
Problem:    Vim9: function argument of sort() and map() not tested.
Solution:   Add a couple of tests.
2020-12-05 21:47:06 +01:00
Bram Moolenaar
56602ba153 patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Problem:    Vim9: using :silent! when calling a function prevents abortng that
            function.
Solution:   Add emsg_silent_def and did_emsg_def.
2020-12-05 21:22:08 +01:00
Bram Moolenaar
f665e97ffa patch 8.2.2096: Vim9: command modifiers not restored after assignment
Problem:    Vim9: command modifiers not restored after assignment.
Solution:   Jump to nextline instead of using continue.
2020-12-05 19:17:16 +01:00
Bram Moolenaar
4029cabbe7 patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Problem:    Vim9: crash when failed dict member is followed by concatenation.
Solution:   Remove the dict from the stack. (closes #7416)
2020-12-05 18:13:27 +01:00
Bram Moolenaar
d0fe620cbb patch 8.2.2094: when an expression fails getting next command may be wrong
Problem:    When an expression fails getting the next command may be wrong.
Solution:   Do not check for a next command after :eval fails. (closes #7415)
2020-12-05 17:11:12 +01:00
Bram Moolenaar
c0913d023b patch 8.2.2093: Vim9: script test sometimes fails
Problem:    Vim9: script test sometimes fails.
Solution:   Do not find a script variable by its typval if the name was
            cleared.
2020-12-05 14:44:37 +01:00
Bram Moolenaar
2d870f8d9e patch 8.2.2092: Vim9: unpredictable errors for script tests
Problem:    Vim9: unpredictable errors for script tests.
Solution:   Use a different script file name for each run.
2020-12-05 13:41:01 +01:00
Bram Moolenaar
29d2f45c88 patch 8.2.2091: MS-Windows: build warnings
Problem:    MS-Windows: build warnings.
Solution:   Add a #pragma to suppress the deprecation warning. (Ken Takata)
            Avoid using a non-ASCII character. (closes #7421)
2020-12-04 19:42:52 +01:00
Bram Moolenaar
c5e6a7179d patch 8.2.2090: Vim9: dict does not accept a key in quotes
Problem:    Vim9: dict does not accept a key in quotes.
Solution:   Recognize a key in single or double quotes.
2020-12-04 19:12:14 +01:00
Bram Moolenaar
6cd42db9dc patch 8.2.2089: libvterm test fails to build on Mac
Problem:    Libvterm test fails to build on Mac.
Solution:   Adjust configure to remove a space between -L and the path that
            follows.
2020-12-04 18:09:54 +01:00
Bram Moolenaar
f6c177ab3a patch 8.2.2088: Vim9: script test sometimes fails
Problem:    Vim9: script test sometimes fails.
Solution:   Unlet variables.
2020-12-04 17:38:00 +01:00
Bram Moolenaar
21e51221f2 patch 8.2.2087: Vim9: memory leak when statement is truncated
Problem:    Vim9: memory leak when statement is truncated.
Solution:   Increment the number of local variables.
2020-12-04 12:43:29 +01:00
Bram Moolenaar
476268c387 patch 8.2.2086: libvterm tests are only run on Linux
Problem:    Libvterm tests are only run on Linux.
Solution:   Use static libraries. (Ozaki Kiichi, closes #7419)
2020-12-03 21:24:07 +01:00
Bram Moolenaar
c0d670ce16 patch 8.2.2085: Qt translation file is recognized as typescript
Problem:    Qt translation file is recognized as typescript.
Solution:   Check the first line for "<?xml". (closes #7418)
2020-12-03 21:08:37 +01:00
Bram Moolenaar
0684e36a7e patch 8.2.2084: CTRL-V U doesn't work to enter a Unicode character
Problem:    CTRL-V U doesn't work to enter a Unicode character when
            modifyOtherKeys is effective. (Ken Takata)
Solution:   Add a flag to get_literal() for the shift key. (closes #7413)
2020-12-03 19:54:42 +01:00
Bram Moolenaar
af0df47a76 patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Problem:    Vim9: crash when using ":silent!" and getting member fails.
Solution:   Jump to on_fatal_error. (closes #7412)
2020-12-02 20:51:22 +01:00
Bram Moolenaar
e0de171ecd patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Problem:    Vim9: can still use the depricated #{} dict syntax.
Solution:   Remove support for #{} in Vim9 script. (closes #7406, closes #7405)
2020-12-02 17:36:54 +01:00
Bram Moolenaar
7f76494aac patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Problem:    Vim9: cannot handle a linebreak after "=" in assignment.
Solution:   Skip over linebreak. (closes #7407)
2020-12-02 15:11:18 +01:00
Bram Moolenaar
ea87069d78 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Problem:    Vim9: no proper error message for using s:var in for loop.
Solution:   Give a specific error.
2020-12-02 14:24:30 +01:00
Bram Moolenaar
38bd8de551 patch 8.2.2079: Vim9: cannot put a linebreak before or after "in" of ":for"
Problem:    Vim9: cannot put a linebreak before or after "in" of ":for".
Solution:   Skip over linebreak.
2020-12-02 13:23:36 +01:00
Bram Moolenaar
1cbfc9914d patch 8.2.2078: illegal memory access when using :print on invalid text
Problem:    Illegal memory access when using :print on invalid text. (Dhiraj
            Mishra)
Solution:   Check for more composing characters than supported. (closes #7399)
2020-12-02 12:37:37 +01:00
Bram Moolenaar
a452b808b4 patch 8.2.2077: build failure with small features
Problem:    Build failure with small features.
Solution:   Add #ifdef.
2020-12-01 21:47:59 +01:00
Bram Moolenaar
c478ee3d83 patch 8.2.2076: MS-Windows console: sometimes drops typed characters
Problem:    MS-Windows console: sometimes drops typed characters.
Solution:   Do not wait longer than 10 msec for input. (issue #7164)
2020-12-01 21:27:51 +01:00
Bram Moolenaar
57cf4973a2 patch 8.2.2075: error for const argument to mapnew()
Problem:    Error for const argument to mapnew().
Solution:   Don't give an error. (closes #7400)
2020-12-01 21:08:05 +01:00
Bram Moolenaar
4324d87a44 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Problem:    Vim9: using :normal from Vim9 script can't handle range.
Solution:   Execute a :normal command in legacy script context. (closes #7401)
2020-12-01 20:12:24 +01:00
Bram Moolenaar
4b8a065145 patch 8.2.2073: Vim9: for with unpack only works for local variables
Problem:    Vim9: for with unpack only works for local variables.
Solution:   Recognize different destinations.
2020-12-01 16:30:44 +01:00
Bram Moolenaar
004d9b00ba patch 8.2.2072: Vim9: list assign not well tested
Problem:    Vim9: list assign not well tested.
Solution:   Test with different destinations.  Fix white space error.
2020-11-30 21:40:03 +01:00
Bram Moolenaar
da7c20c953 patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Problem:    Vim9: list assign doesn't except empty remainder list.
Solution:   Recognize list assignment with ";".
2020-11-30 21:12:19 +01:00
Bram Moolenaar
f0068c5154 patch 8.2.2070: can't get the exit value in VimLeave(Pre) autocommands
Problem:    Can't get the exit value in VimLeave or VimLeavePre autocommands.
Solution:   Add v:exiting like in Neovim. (Yegappan Lakshmanan, closes #7395)
2020-11-30 17:42:10 +01:00
Bram Moolenaar
23515b4ef7 Update runtime files 2020-11-29 14:36:24 +01:00
Bram Moolenaar
287153c5d4 patch 8.2.2069: the quickfix window is not updated after setqflist()
Problem:    The quickfix window is not updated after setqflist().
Solution:   Update the quickfix buffer. (Yegappan Lakshmanan, closes #7390,
            closes #7385)
2020-11-29 14:20:27 +01:00
Bram Moolenaar
b46f57e87b patch 8.2.2068: transparent syntax item uses start/end of containing region
Problem:    Transparent syntax item uses start/end of containing region.
Solution:   Do not change the startpos and endpos of a transparent region to
            that of its containing region. (Adrian Ghizaru, closes #7349,
            closes #7391)
2020-11-29 14:11:41 +01:00
Bram Moolenaar
f5452691ba patch 8.2.2067: cursor position in popup terminal is wrong
Problem:    Cursor position in popup terminal is wrong.
Solution:   Don't check the flags.
2020-11-28 21:56:06 +01:00
Bram Moolenaar
ce2c5444e2 patch 8.2.2066: Vim9: assignment with += doesn't work
Problem:    Vim9: assignment with += doesn't work.
Solution:   Do not see the "+" as an addition operator.
2020-11-28 21:21:17 +01:00
Bram Moolenaar
f8ca03bf91 patch 8.2.2065: using map() and filter() on a range() is inefficient
Problem:    Using map() and filter() on a range() is inefficient.
Solution:   Do not materialize the range. (closes #7388)
2020-11-28 20:32:29 +01:00
Bram Moolenaar
ebec3e29b8 patch 8.2.2064: terminal: cursor is on while redrawing, causing flicker
Problem:    terminal: cursor is on while redrawing, causing flicker.
Solution:   Switch the cursor off while redrawing.  Always add the top and
            left offset to the cursor position when not done already.
            (closes #5943)
2020-11-28 20:22:06 +01:00
Bram Moolenaar
dc234caff2 patch 8.2.2063: Vim9: only one level of indexing supported
Problem:    Vim9: only one level of indexing supported.
Solution:   Handle more than one index in an assignment.
2020-11-28 18:52:33 +01:00
Bram Moolenaar
4a44120e3d patch 8.2.2062: <Cmd> does not handle CTRL-V
Problem:    <Cmd> does not handle CTRL-V.
Solution:   Call get_literal() after encountering CTRL-V. (closes #7387)
2020-11-28 14:43:26 +01:00
Bram Moolenaar
4d05af0a64 patch 8.2.2061: Vim9: E1030 error when using empty string for term_sendkeys()
Problem:    Vim9: E1030 error when using empty string for term_sendkeys().
Solution:   Don't check for an invalid type unless the terminal can't be
            found. (closes #7382)
2020-11-27 20:55:00 +01:00
Bram Moolenaar
aeb313f355 patch 8.2.2060: check for features implemented with "if"
Problem:    Check for features implemented with "if".
Solution:   Use the Check commands. (Ken Takata, closes #7383)
2020-11-27 19:13:28 +01:00
Bram Moolenaar
6ee874d378 patch 8.2.2059: Amiga: can't find plugins
Problem:    Amiga: can't find plugins.
Solution:   Do not use "**" in the pattern. (Ola Söder, closes #7384)
2020-11-27 19:01:31 +01:00
Bram Moolenaar
3482be6a33 patch 8.2.2058: using mkview/loadview changes the jumplist
Problem:    Using mkview/loadview changes the jumplist.
Solution:   Use ":keepjumps".  Don't let ":badd" or ":balt" change the
            jumplist. (closes #7371)
2020-11-27 11:00:38 +01:00
Bram Moolenaar
fccbf068f8 patch 8.2.2057: getting the selection may trigger TextYankPost autocmd
Problem:    Getting the selection may trigger TextYankPost autocmd.
Solution:   Only trigger the autocommand when yanking in Vim, not for getting
            the selection. (closes #7367)
2020-11-26 20:34:00 +01:00
Bram Moolenaar
ce7be3a0e6 patch 8.2.2056: configure fails when building with implicit-function-declaration
Problem:    Configure fails when building with the
            "implicit-function-declaration" error enabled, specifically on Mac.
Solution:   Declear the functions like in the source code. (suggestion by
            Clemens Lang, closes #7380)
2020-11-26 20:11:11 +01:00
Bram Moolenaar
2472a74be4 patch 8.2.2055: MS-Windows: two Vim instances may use the same temp file
Problem:    MS-Windows: two Vim instances may use the same temp file.
Solution:   Use the process ID for the temp name. (Ken Takata, closes #7378)
2020-11-26 19:47:28 +01:00
Bram Moolenaar
d49a35a1c3 patch 8.2.2054: Amiga: FEAT_ARP defined when it should not
Problem:    Amiga: FEAT_ARP defined when it should not.
Solution:   Adjust "||" to "&&" in #ifdef. (Ola Söder, closes #7375)
2020-11-25 21:55:45 +01:00
Bram Moolenaar
c2ca935d26 patch 8.2.2053: Vim9: lamba doesn't accept argument types
Problem:    Vim9: lamba doesn't accept argument types.
Solution:   Optionally accept argument types at the script level.
2020-11-25 21:30:11 +01:00
Bram Moolenaar
47a2abf0bc patch 8.2.2052: Vim9: "edit +4 fname" gives an error
Problem:    Vim9: "edit +4 fname" gives an error. (Naruhiko Nishino)
Solution:   Allow using a range in the +cmd argument. (closes #7364)
2020-11-25 20:12:11 +01:00
Bram Moolenaar
34c54eb6cb patch 8.2.2051: Vim9: crash when aborting a user function call
Problem:    Vim9: crash when aborting a user function call.
Solution:   Do not use the return value when aboring. (closes #7372)
2020-11-25 19:15:19 +01:00
Bram Moolenaar
6bed0dbc85 patch 8.2.2050: search test contains unneeded sleeps
Problem:    Search test contains unneeded sleeps.
Solution:   Rename the function, remove sleeps. (Christian Brabandt,
            closes #7369)
2020-11-25 17:41:20 +01:00
Bram Moolenaar
d653293c80 patch 8.2.2049: Amiga: obsolete function
Problem:    Amiga: obsolete function.
Solution:   Remove the function. (Ola Söder, closes #7374)
2020-11-25 17:00:43 +01:00
Bram Moolenaar
3a3b691042 patch 8.2.2048: Amiga: obsolete code
Problem:    Amiga: obsolete code.
Solution:   Remove the unused lines. (Ola Söder, closes #7373)
2020-11-25 15:52:31 +01:00
Bram Moolenaar
36fe7b287e patch 8.2.2047: Amiga: FEAT_ARP defined when it should not
Problem:    Amiga: FEAT_ARP defined when it should not.
Solution:   Adjust #ifdef. (Ola Söder, closes #7370)
2020-11-25 15:45:38 +01:00
Bram Moolenaar
5dc4e2f883 patch 8.2.2046: some test failures don't give a clear error
Problem:    Some test failures don't give a clear error.
Solution:   Use assert_match() and assert_fails() instead of assert_true().
            (Ken Takata, closes #7368)
2020-11-25 14:15:12 +01:00
Bram Moolenaar
448465e687 patch 8.2.2045: highlighting a character too much with incsearch
Problem:    Highlighting a character too much with incsearch.
Solution:   Check "search_match_endcol". (Christian Brabandt, closes #7360)
2020-11-25 13:49:27 +01:00
Bram Moolenaar
5ee0981fb5 patch 8.2.2044: MS-Windows: swap file test sometimes fails
Problem:    MS-Windows: swap file test sometimes fails.
Solution:   Use a more reliable way to change the process ID. When "timeout"
            fails use "ping" to wait up to ten minutes. (Ken Takata,
            closes #7365)
2020-11-25 12:43:28 +01:00
Bram Moolenaar
ff94bd9e47 patch 8.2.2043: GTK3: white border around text stands out
Problem:    GTK3: white border around text stands out.
Solution:   Use current theme color. (closes #7357, issue #349)
2020-11-25 12:25:47 +01:00
Bram Moolenaar
813196784a patch 8.2.2042: build failure with +profile but without +reltime
Problem:    Build failure with +profile but without +reltime.
Solution:   Adjust #ifdef. (Christian Brabandt, closes #7361)
2020-11-25 11:47:39 +01:00
Bram Moolenaar
a09bee322e patch 8.2.2041: haskell filetype not optimally recognized
Problem:    Haskell filetype not optimally recognized.
Solution:   Recognize all *.hsc files as Haskell. (Marcin Szamotulski,
            closes #7354)
2020-11-24 20:13:26 +01:00
Bram Moolenaar
c9f8b849b6 patch 8.2.2040: terminal buffer disappears even when 'bufhidden' is "hide"
Problem:    Terminal buffer disappears even when 'bufhidden' is "hide".
            (Sergey Vlasov)
Solution:   Check 'bufhiddden' when a terminal buffer becomes hidden.
            (closes #7358)
2020-11-24 19:36:16 +01:00
Bram Moolenaar
8e6be34338 patch 8.2.2039: viminfo is not written when creating a new file
Problem:    Viminfo is not written when creating a new file.
Solution:   Set "b_marks_read" in the new buffer. (Christian Brabandt,
            closes #7350)
2020-11-23 22:01:26 +01:00
Bram Moolenaar
142f23544c patch 8.2.2038: compiler test fails on MS-Windows
Problem:    Compiler test fails on MS-Windows.
Solution:   Sort the found compiler plugin names.
2020-11-23 21:39:14 +01:00
Bram Moolenaar
60bc8e7244 patch 8.2.2037: compiler test depends on list of compiler plugins
Problem:    Compiler test depends on list of compiler plugins.
Solution:   Compare with the actual list of compiler plugins.
2020-11-23 21:24:58 +01:00
Bram Moolenaar
9e40c4b15e patch 8.2.2036: buffer messed up if creating the quickfix window fails
Problem:    Current buffer is messed up if creating a new buffer for the
            quickfix window fails.
Solution:   Check that creating the buffer succeeds. (closes #7352)
2020-11-23 20:15:08 +01:00
Bram Moolenaar
f637bceb61 patch 8.2.2035: MS-Windows: some tests may fail
Problem:    MS-Windows: some tests may fail.
Solution:   Avoid test failures. (Yegappan Lakshmanan, closes #7346)
2020-11-23 18:14:56 +01:00
Bram Moolenaar
792f786aad patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Problem:    Vim9: list unpack in for statement not compiled yet.
Solution:   Compile list unpack. (closes #7345)
2020-11-23 08:31:18 +01:00
Bram Moolenaar
6abdcf8285 patch 8.2.2033: Vim9: :def without argument gives compilation error
Problem:    Vim9: :def without argument gives compilation error.
Solution:   Add the DEF instruction. (closes #7344)
2020-11-22 18:15:44 +01:00
Bram Moolenaar
dcbab75db3 patch 8.2.2032: cabalconfig and cabalproject filetypes not recognized
Problem:    Cabalconfig and cabalproject filetypes not recognized.
Solution:   Detect more cabal files. (Marcin Szamotulski, closes #7339)
2020-11-22 15:51:24 +01:00
Bram Moolenaar
18dc355395 patch 8.2.2031: some tests fail when run under valgrind
Problem:    Some tests fail when run under valgrind.
Solution:   Avoid timing problems.
2020-11-22 14:24:00 +01:00
Bram Moolenaar
4b2ce1297e patch 8.2.2030: some tests fail on Mac
Problem:    Some tests fail on Mac.
Solution:   Avoid Mac test failures.  Add additional test for wildmenu.
            (Yegappan Lakshmanan, closes #7341)
2020-11-21 21:41:41 +01:00
Bram Moolenaar
5546688fb6 patch 8.2.2029: Coverity warns for not checking return value
Problem:    Coverity warns for not checking return value.
Solution:   Check that u_save_cursor() returns OK.
2020-11-21 14:16:22 +01:00
Bram Moolenaar
896ad2c33e patch 8.2.2028: Coverity warns for using an uninitialized variable
Problem:    Coverity warns for using an uninitialized variable.
Solution:   Initialize to NULL.
2020-11-21 14:03:43 +01:00
Bram Moolenaar
9681f71392 patch 8.2.2027: Coverity warnts for uninitialized field
Problem:    Coverity warnts for uninitialized field.
Solution:   Set "v_lock".
2020-11-21 13:58:50 +01:00
Bram Moolenaar
e79cdb69a4 patch 8.2.2026: Coverity warns for possibly using not NUL terminated string
Problem:    Coverity warns for possibly using not NUL terminated string.
Solution:   Put a NUL in b0_hname just in case.
2020-11-21 13:51:16 +01:00
Bram Moolenaar
4466ad6baa Update runtime files 2020-11-21 13:16:30 +01:00
Bram Moolenaar
2d718267f4 patch 8.2.2025: Amiga: Not all colors are used on OS4
Problem:    Amiga: Not all colors are used on OS4.
Solution:   Adjust the #ifdef to include __amigaos4__. (Ola Söder,
            closes #7328)
2020-11-21 12:44:56 +01:00
Bram Moolenaar
d91467f830 patch 8.2.2024: flicker when redrawing a popup with a title and border
Problem:    Flicker when redrawing a popup with a title and border.
Solution:   Do not redraw the border where the title is displayed. (Naruhiko
            Nishino, closes #7334)
2020-11-21 12:42:09 +01:00
Bram Moolenaar
c71ee829ef patch 8.2.2023: Vim: memory leak when :execute fails
Problem:    Vim: memory leak when :execute fails.
Solution:   Clear the growarray.
2020-11-21 11:45:50 +01:00
Bram Moolenaar
95388e3179 patch 8.2.2022: Vim9: star command recognized errornously
Problem:    Vim9: star command recognized errornously.
Solution:   Give an error for missing colon. (issue #7335)
2020-11-20 21:07:00 +01:00
Bram Moolenaar
eeece9e488 patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Problem:    Vim9: get E1099 when autocommand resets did_emsg.
Solution:   Add did_emsg_cumul. (closes #7336)
2020-11-20 19:26:48 +01:00
Bram Moolenaar
bebaa0d5c0 patch 8.2.2020: some compilers do not like the "namespace" argument
Problem:    Some compilers do not like the "namespace" argument.
Solution:   Rename to "use_namespace". (closes #7332)
2020-11-20 18:59:19 +01:00
Bram Moolenaar
80d868ec25 patch 8.2.2019: swap file test fails on MS-Windows
Problem:    Swap file test fails on MS-Windows.
Solution:   Add four to the process ID. (Ken Takata, closes #7333)
2020-11-20 09:10:15 +01:00
Bram Moolenaar
2ea95b61f4 patch 8.2.2018: Vim9: script variable not found from lambda
Problem:    Vim9: script variable not found from lambda.
Solution:   In a lambda also check the script hashtab for a variable without a
            scope. (closes #7329)
2020-11-19 21:47:56 +01:00
Bram Moolenaar
67d1c68f09 patch 8.2.2017: missing part of the dict change
Problem:    Missing part of the dict change.
Solution:   Also change the script level dict.
2020-11-19 19:01:43 +01:00
Bram Moolenaar
c6ca9f3a29 patch 8.2.2016: swap file test is a little flaky
Problem:    Swap file test is a little flaky.
Solution:   Don't set a byte to a fixed value, increment it.
2020-11-19 18:57:23 +01:00
Bram Moolenaar
2bede173a1 patch 8.2.2015: Vim9: literal dict #{} is not like any other language
Problem:    Vim9: literal dict #{} is not like any other language.
Solution:   Support the JavaScript syntax.
2020-11-19 18:53:18 +01:00
Bram Moolenaar
ee8b787bcd patch 8.2.2014: using CTRL-O in a prompt buffer moves cursor to start
Problem:    Using CTRL-O in a prompt buffer moves cursor to start of the line.
Solution:   Do not move the cursor when restarting edit. (closes #7330)
2020-11-19 18:46:25 +01:00
Bram Moolenaar
79cdf80bed patch 8.2.2013: Vim9: not skipping white space after unary minus
Problem:    Vim9: not skipping white space after unary minus.
Solution:   Skip whitespace. (closes #7324)
2020-11-18 17:39:05 +01:00
Bram Moolenaar
d92cc130fb patch 8.2.2012: Vim9: confusing error message when using bool wrongly
Problem:    Vim9: confusing error message when using bool wrongly.
Solution:   Mention "Bool" instead of "Special". (closes #7323)
2020-11-18 17:17:15 +01:00
Bram Moolenaar
9950280d37 patch 8.2.2011: "syn sync" reports a very large number
Problem:    "syn sync" reports a very large number.
Solution:   Use "at the first line".
2020-11-18 16:53:23 +01:00
Bram Moolenaar
8e02faf4e9 patch 8.2.2010: Vim9: compiling fails for unreachable return statement
Problem:    Vim9: compiling fails for unreachable return statement.
Solution:   Fix it. (closes #7319)
2020-11-18 16:35:02 +01:00
Bram Moolenaar
382319211a patch 8.2.2009: MS-Windows: setting $LANG in gvimext only causes problems
Problem:    MS-Windows: setting $LANG in gvimext only causes problems.
Solution:   Do not set $LANG. (Ken Takata, closes #7325)
2020-11-18 15:30:09 +01:00
Bram Moolenaar
032f40afb8 patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Problem:    MS-Windows GUI: handling channel messages lags.
Solution:   Reduce the wait time from 100 to 10 msec. (closes #7097)
2020-11-18 15:21:50 +01:00
Bram Moolenaar
17ab28daa0 patch 8.2.2007: test for insert mode in popup is not reliable
Problem:    Test for insert mode in popup is not reliable.
Solution:   Wait for the popup to disappear. (Ozaki Kiichi, closes #7321)
2020-11-18 12:24:01 +01:00
Bram Moolenaar
88774a30c0 patch 8.2.2006: .pbtxt files are not recognized
Problem:    .pbtxt files are not recognized.
Solution:   Recognize .pbtxt as protobuf text buffers. (closes #7326)
2020-11-18 12:12:39 +01:00
Bram Moolenaar
c77534c303 patch 8.2.2005: redoing a mapping with <Cmd> doesn't work properly
Problem:    Redoing a mapping with <Cmd> doesn't work properly.
Solution:   Fill the redo buffer.  Use "<SNR>" instead of a key code.
            (closes #7282)
2020-11-18 11:34:37 +01:00
Bram Moolenaar
b3a01946b3 patch 8.2.2004: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize "ufunc". (John Marriott)
2020-11-17 19:56:09 +01:00
Bram Moolenaar
1efefda623 patch 8.2.2003: build error with +conceal but without +popupwin
Problem:    Build error with +conceal but without +popupwin.
Solution:   Add #ifdef. (Tom Ryder, closes #7316)
2020-11-17 19:22:06 +01:00
Bram Moolenaar
52bf81c2d5 patch 8.2.2002: Vim9: lambda argument shadowed by function name
Problem:    Vim9: lambda argument shadowed by function name.
Solution:   Let function name be shadowed by lambda argument. (closes #7313)
2020-11-17 18:50:44 +01:00
Bram Moolenaar
0ba48e8c27 patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Problem:    Vim9: :def function does not apply 'maxfuncdepth'.
Solution:   Use 'maxfuncdepth'. (issue #7313)
2020-11-17 18:23:19 +01:00
Bram Moolenaar
fc74d03e76 patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Problem:    Vim9: dict.key assignment not implemented yet.
Solution:   Implement dict.key assignment. (closes #7312)
2020-11-16 22:11:49 +01:00
Bram Moolenaar
e6329e4c55 patch 8.2.1999: terminal popup test sometimes fails
Problem:    Terminal popup test sometimes fails.
Solution:   Wait for the popup to close.
2020-11-16 21:10:34 +01:00
Bram Moolenaar
27f4f6baee patch 8.2.1998: terminal Cmd test sometimes fails to close popup
Problem:    Terminal Cmd test sometimes fails to close popup.
Solution:   Add "term_finish" option.
2020-11-16 21:02:28 +01:00
Bram Moolenaar
8adc8d9b73 patch 8.2.1997: window changes when using bufload() while in a terminal popup
Problem:    Window changes when using bufload() while in a terminal popup.
Solution:   When searching for a window by ID also find a popup window.
            (closes #7307)
2020-11-16 20:47:31 +01:00
Bram Moolenaar
193f6201b4 patch 8.2.1996: Vim9: invalid error for argument of extend()
Problem:    Vim9: invalid error for argument of extend().
Solution:   Check if the type could match. (closes #7299)
2020-11-16 20:08:35 +01:00
Bram Moolenaar
714cbe5b21 patch 8.2.1995: the popup menu can cause too much redrawing
Problem:    The popup menu can cause too much redrawing.
Solution:   Reduce the length of the displayed text. (Yasuhiro Matsumoto,
            closes #7306)
2020-11-16 19:12:00 +01:00
Bram Moolenaar
c4390fe6c0 patch 8.2.1994: MS-Windows: MinGW always does a full build
Problem:    MS-Windows: MinGW always does a full build.
Solution:   Only check if $OUTDIR exists. (Masamichi Abe, closes #7311)
2020-11-16 18:49:47 +01:00
Bram Moolenaar
50dc3ecc64 patch 8.2.1993: occasional failure of the netbeans test
Problem:    Occasional failure of the netbeans test.
Solution:   Add "silent!". (Yegappan Lakshmanan, closes #7304)
2020-11-16 18:39:43 +01:00
Bram Moolenaar
4792a679f9 patch 8.2.1992: build fails with small features
Problem:    Build fails with small features.
Solution:   Add #ifdef.
2020-11-15 21:11:18 +01:00
Bram Moolenaar
ca359cbedd patch 8.2.1991: Coverity warns for not using the ga_grow() return value
Problem:    Coverity warns for not using the ga_grow() return value.
Solution:   Bail out if ga_grow() fails. (Yegappan Lakshmanan, closes #7303)
2020-11-15 20:49:41 +01:00
Bram Moolenaar
6a07644db3 patch 8.2.1990: cursor position wrong in terminal popup with finished job
Problem:    Cursor position wrong in terminal popup with finished job.
Solution:   Only add the top and left offset when not done already.
            (closes #7298)
2020-11-15 20:32:58 +01:00
Bram Moolenaar
2dfae04f37 patch 8.2.1989: info popup triggers WinEnter and WinLeave autocommands
Problem:    Info popup triggers WinEnter and WinLeave autocommands.
Solution:   Suppress autocommands for the info popup. (closes #7296)
2020-11-15 14:09:37 +01:00
Bram Moolenaar
e41decc892 patch 8.2.1988: still in Insert mode when opening terminal popup
Problem:    Still in Insert mode when opening terminal popup with a <Cmd>
            mapping in Insert mode.
Solution:   Exit Insert mode. (closes #7295)
2020-11-14 21:34:59 +01:00
Bram Moolenaar
6453cc8078 patch 8.2.1987: MS-Windows: Win32.mak is no longer needed
Problem:    MS-Windows: Win32.mak is no longer needed.
Solution:   Do not include Win32.mak. (Jason McHugh, closes #7290)
2020-11-14 21:04:33 +01:00
Bram Moolenaar
a065a14115 patch 8.2.1986: expression test is flaky on Appveyor
Problem:    Expression test is flaky on Appveyor.
Solution:   Temporarily disable the test in MS-Windows.
2020-11-14 20:57:20 +01:00
Bram Moolenaar
02764713a7 patch 8.2.1985: crash when closing terminal popup with <Cmd> mapping
Problem:    Crash when closing terminal popup with <Cmd> mapping.
Solution:   Check b_term is not NULL. (closes #7294)
2020-11-14 20:21:55 +01:00
Bram Moolenaar
33aecb1f2c patch 8.2.1984: cannot use :vimgrep in omni completion
Problem:    Cannot use :vimgrep in omni completion, causing C completion to
            fail.
Solution:   Add the EX_LOCK_OK flag to :vimgrep. (closes #7292)
2020-11-14 17:25:51 +01:00
Bram Moolenaar
f4d61bc559 patch 8.2.1983: ml_get error when using <Cmd> to open a terminal
Problem:    ml_get error when using <Cmd> to open a terminal.
Solution:   If the window changed reset the incsearch state. (closes #7289)
2020-11-14 14:22:28 +01:00
Bram Moolenaar
2ce7790348 patch 8.2.1982: quickfix window now updated when adding invalid entries
Problem:    Quickfix window now updated when adding invalid entries.
Solution:   Update the quickfix buffer properly. (Yegappan Lakshmanan, closes
            #7291, closes #7271)
2020-11-14 13:15:24 +01:00
Bram Moolenaar
8496c9eadb patch 8.2.1981: MinGW: parallel compilation might fail
Problem:    MinGW: parallel compilation might fail.
Solution:   Add dependencies on $(OUTDIR). (Masamichi Abe, closes #7287)
2020-11-13 17:47:33 +01:00
Bram Moolenaar
659bb2275e patch 8.2.1980: Vim9: some tests are not done at the script level
Problem:    Vim9: some tests are not done at the script level.
Solution:   Use CheckDefAndScriptSuccess() in more places.  Fix uncovered
            problems.
2020-11-12 20:16:39 +01:00
Bram Moolenaar
47c5ea44b9 patch 8.2.1979: "term_opencmd" option of term_start() is truncated
Problem:    "term_opencmd" option of term_start() is truncated. (Sergey
            Vlasov)
Solution:   Allocate the buffer to hold the command. (closes #7284)
2020-11-12 15:12:15 +01:00
Bram Moolenaar
957cf67d50 patch 8.2.1978: making a mapping work in all modes is complicated
Problem:    Making a mapping work in all modes is complicated.
Solution:   Add the <Cmd> special key. (Yegappan Lakshmanan, closes #7282,
            closes 4784, based on patch by Bjorn Linse)
2020-11-12 14:21:06 +01:00
Bram Moolenaar
ea2d407f9c patch 8.2.1977: Vim9: error for using a string in a condition is confusing
Problem:    Vim9: error for using a string in a condition is confusing.
Solution:   Give a more specific error.  Also adjust the compile time type
            checking for || and &&.
2020-11-12 12:08:51 +01:00
Bram Moolenaar
6f6244855f patch 8.2.1976: cannot backspace in prompt buffer after using cursor-left
Problem:    Cannot backspace in prompt buffer after using cursor-left. (Maxim
            Kim)
Solution:   Ignore "arrow_used" in a prompt buffer. (closes #7281)
2020-11-11 20:52:40 +01:00
Bram Moolenaar
bbf9f344af patch 8.2.1975: Win32: memory leak when encoding conversion fails
Problem:    Win32: memory leak when encoding conversion fails.
Solution:   Free the allocated memory. (Ken Takata, closes #7277)
2020-11-10 22:03:40 +01:00
Bram Moolenaar
29b281ba8d patch 8.2.1974: Vim9: test for has('gui_running') fails with VIMDLL
Problem:    Vim9: test for has('gui_running') fails with VIMDLL.
Solution:   Adjust the #ifdef. (Ken Takata, closes #7276)
2020-11-10 20:58:00 +01:00
Bram Moolenaar
232f4612e2 patch 8.2.1973: finding a patch number can be a bit slow
Problem:    Finding a patch number can be a bit slow.
Solution:   Use binary search. (closes #7279)
2020-11-10 20:54:29 +01:00
Bram Moolenaar
5e1f22ff61 patch 8.2.1972: crash when recreating nested fold
Problem:    Crash when recreating nested fold.
Solution:   Check for empty growarray. (closes #7278)
2020-11-10 18:23:52 +01:00
Bram Moolenaar
c56936e2ba patch 8.2.1971: memory leak when map() fails
Problem:    Memory leak when map() fails.
Solution:   Clear the typval.
2020-11-10 11:43:56 +01:00
Bram Moolenaar
f883508e36 patch 8.2.1970: it is easy to make mistakes when cleaning up swap files
Problem:    It is easy to make mistakes when cleaning up swap files after the
            system crashed.
Solution:   Warn for the process still running after recovery.  Do not
            automatically delete a swap file created on another system.
            (David Fries, closes #7273)
2020-11-09 21:04:17 +01:00
Bram Moolenaar
ea696852e7 patch 8.2.1969: Vim9: map() may change the list or dict item type
Problem:    Vim9: map() may change the list or dict item type.
Solution:   Add mapnew().
2020-11-09 18:31:39 +01:00
Bram Moolenaar
8cebd43e97 patch 8.2.1968: Vim9: has() assumes a feature does not change dynamically
Problem:    Vim9: has() assumes a feature does not change dynamically.
Solution:   Check whether a feature may change dynamically. (closes #7265)
2020-11-08 12:49:47 +01:00
Bram Moolenaar
59d8e56e04 patch 8.2.1967: the session file does not restore the alternate file
Problem:    The session file does not restore the alternate file.
Solution:   Add ":balt".  Works like ":badd" and also sets the buffer as the
            alternate file.  Use it in the session file. (closes #7269,
            closes #6714)
2020-11-07 18:41:10 +01:00
Bram Moolenaar
cbcd9cbd77 patch 8.2.1966: popup becomes current window after closing a terminal window
Problem:    Popup becomes current window after closing a terminal window.
Solution:   When restoring the window after executing autocommands, check that
            the window ID is still the same.  (Naruhiko Nishino,
            closes #7272)
2020-11-07 16:58:59 +01:00
Bram Moolenaar
46f479c756 patch 8.2.1965: Vim9: tests fail without the channel feature
Problem:    Vim9: tests fail without the channel feature.
Solution:   Check if the channel feature is present. (Dominique Pellé,
            closes 7270)
2020-11-07 13:09:18 +01:00
Bram Moolenaar
faebda8cc1 patch 8.2.1964: not all ConTeXt files are recognized
Problem:    Not all ConTeXt files are recognized.
Solution:   Add two patterns. (closes #7263)
2020-11-06 18:52:55 +01:00
Bram Moolenaar
927495b1fe patch 8.2.1963: crash when using a popup window with "latin1" encoding
Problem:    Crash when using a popup window with "latin1" encoding.
Solution:   Don't use ScreenLinesUC when enc_utf8 is false. (closes #7241)
2020-11-06 17:58:35 +01:00
Bram Moolenaar
32e5ec0b01 patch 8.2.1962: netbeans may access freed memory
Problem:    Netbeans may access freed memory.
Solution:   Check the buffer pointer is still valid.  Add a test. (Yegappan
            Lakshmanan, closes #7248)
2020-11-06 13:44:21 +01:00
Bram Moolenaar
85d9b03f84 Correct list of patches. 2020-11-06 12:03:08 +01:00
Bram Moolenaar
22286895fc patch 8.2.1961: various comments can be improved
Problem:    Various comments can be improved.
Solution:   Various comment adjustments.
2020-11-05 20:50:51 +01:00
Bram Moolenaar
0fd797eacd patch 8.2.1960: warning for uninitialized variable
Problem:    Warning for uninitialized variable.
Solution:   Initialize the variable.
2020-11-05 20:46:32 +01:00
Bram Moolenaar
3132cddd20 Update runtime files 2020-11-05 20:41:49 +01:00
Bram Moolenaar
00806bceb6 patch 8.2.1959: crash when terminal buffer name is made empty
Problem:    Crash when terminal buffer name is made empty. (Dhiraj Mishra)
Solution:   Fall back to "[No Name]". (closes #7262)
2020-11-05 19:36:38 +01:00
Bram Moolenaar
b885b435d1 patch 8.2.1958: build failure with timers
Problem:    Build failure with timers.
Solution:   Add missing change.
2020-11-05 19:34:41 +01:00
Bram Moolenaar
fabc3ca896 patch 8.2.1957: diff and cursorcolumn highlighting don't mix
Problem:    Diff and cursorcolumn highlighting don't mix.
Solution:   Fix condition for what attribute to use. (Christian Brabandt,
            closes #7258, closes #7260)
2020-11-05 19:07:21 +01:00
Bram Moolenaar
b4d16cb11d patch 8.2.1956: Vim9: cannot specify argument types for lambda
Problem:    Vim9: cannot specify argument types for lambda.
Solution:   Allow adding argument types.  Check arguments when calling a
            function reference.
2020-11-05 18:45:46 +01:00
Bram Moolenaar
66669fc664 patch 8.2.1955: Vim9: not all command modifiers are tested
Problem:    Vim9: not all command modifiers are tested.
Solution:   Add tests for remaining modifiers.
2020-11-04 18:53:35 +01:00
Bram Moolenaar
f65b35b446 patch 8.2.1954: Vim9: not all command modifiers are tested
Problem:    Vim9: not all command modifiers are tested.
Solution:   Add tests for "keep" modifiers.  Fix that marks are lost even
            though ":lockmarks" is used.
2020-11-04 18:02:44 +01:00
Bram Moolenaar
631e8f9345 patch 8.2.1953: Vim9: extra "unknown" error after other error
Problem:    Vim9: extra "unknown" error after other error.
Solution:   Restore did_emsg count after EXEC instruction. (closes #7254)
            Improve error message from assert_fails()
2020-11-04 15:07:16 +01:00
Bram Moolenaar
c7f7f6db3e patch 8.2.1952: Vim9: crash when using a NULL dict key
Problem:    Vim9: crash when using a NULL dict key.
Solution:   Use a NULL dict key like an empty string. (closes #7249)
2020-11-04 13:38:28 +01:00
Bram Moolenaar
64ffa9b5fb patch 8.2.1951: test for list and dict fails
Problem:    Test for list and dict fails.
Solution:   Adjust for using an empty list/dict for a null one.
2020-11-04 12:23:06 +01:00
Bram Moolenaar
9c13f76275 patch 8.2.1950: Vim9: crash when compiling function fails when getting type
Problem:    Vim9: crash when compiling function fails when getting type.
Solution:   Handle NULL type. (closes #7253)
2020-11-04 12:00:53 +01:00
Bram Moolenaar
348be7ed07 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Problem:    Vim9: using extend() on null dict is silently ignored.
Solution:   Give an error message.  Initialize a dict variable with an empty
            dictionary. (closes #7251)
2020-11-04 11:36:35 +01:00
Bram Moolenaar
4778b4d0e1 patch 8.2.1948: GUI: crash when handling message while closing a window
Problem:    GUI: crash when handling message while closing a window. (Srinath
            Avadhanula)
Solution:   Don't handle message while closing a window. (closes #7250)
2020-11-04 11:03:12 +01:00
Bram Moolenaar
c136a3528b patch 8.2.1947: crash when using "zj" without folds
Problem:    Crash when using "zj" without folds. (Sean Dewar)
Solution:   Check for at least one fold. (closes #7245)
2020-11-03 20:05:40 +01:00
Bram Moolenaar
35efa22ff2 patch 8.2.1946: sort() with NULL string not tested
Problem:    sort() with NULL string not tested.
Solution:   Add a test.  use v:collate. (Dominique Pellé, closes #7247)
2020-11-03 18:51:54 +01:00
Bram Moolenaar
0d90e728fe patch 8.2.1945: crash when passing NULL function to reduce()
Problem:    Crash when passing NULL function to reduce().
Solution:   Check for NULL pointer and give an error. (Dominique Pellé,
            closes #7243)
2020-11-03 18:20:19 +01:00
Bram Moolenaar
6fd3a4ba23 patch 8.2.1944: Netbeans test is flaky
Problem:    Netbeans test is flaky.
Solution:   Add a short delay. (Yegappan Lakshmanan, closes #7246)
2020-11-03 11:53:29 +01:00
Bram Moolenaar
36113e46b4 patch 8.2.1943: Vim9: wrong error message when colon is missing
Problem:    Vim9: wrong error message when colon is missing.
Solution:   Check for a missing colon. (issue #7239)
2020-11-02 21:08:47 +01:00
Bram Moolenaar
dbfa795d8b patch 8.2.1942: insufficient test coverage for the Netbeans interface
Problem:    Insufficient test coverage for the Netbeans interface.
Solution:   Add more tests. Fix an uncovered bug. (Yegappan Lakshmanan,
            closes #7240)
2020-11-02 20:04:22 +01:00
Bram Moolenaar
399db046ed patch 8.2.1941: Ex mode test fails on MS-Windows with GUI
Problem:    Ex mode test fails on MS-Windows with GUI.
Solution:   Skip the test when using gvim.
2020-11-01 22:31:08 +01:00
Bram Moolenaar
97a19005e1 patch 8.2.1940: Vim9: browse modifier test fails on Mac
Problem:    Vim9: browse modifier test fails on Mac.
Solution:   Only test when the +browse feature is available.
2020-11-01 22:15:44 +01:00
Bram Moolenaar
3b6d57f2ce patch 8.2.1939: invalid memory access in Ex mode with global command
Problem:    Invalid memory access in Ex mode with global command.
Solution:   Make sure the cursor is on a valid line. (closes #7238)
2020-11-01 21:56:40 +01:00
Bram Moolenaar
a46765a797 patch 8.2.1938: wiping out a terminal buffer makes some tests fail
Problem:    Wiping out a terminal buffer makes some tests fail.
Solution:   Do not wipe out the terminal buffer unless wanted.
2020-11-01 20:58:26 +01:00
Bram Moolenaar
645cd3eb1f patch 8.2.1937: Vim9: test for confirm modifier fails in some situations
Problem:    Vim9: test for confirm modifier fails in some situations.
Solution:   Add a short wait.  Handle failure better.
2020-11-01 20:04:57 +01:00
Bram Moolenaar
388908352f patch 8.2.1936: session sets the local 'scrolloff' value to the global value
Problem:    Session sets the local 'scrolloff' value to the global value.
Solution:   Do not let restoring the global option value change the local
            value.
2020-11-01 17:40:54 +01:00
Bram Moolenaar
578f4cc7d0 patch 8.2.1935: sort test fails on Mac
Problem:    Sort test fails on Mac.
Solution:   Disable the sort test with locale on Mac.
2020-11-01 17:19:07 +01:00
Bram Moolenaar
e88c8e802c patch 8.2.1934: Vim9: command modifiers in :def function not tested
Problem:    Vim9: command modifiers in :def function not tested.
Solution:   Add tests.  Fix using modifier before filter command.
2020-11-01 17:03:37 +01:00
Bram Moolenaar
55e29611d2 patch 8.2.1933: cannot sort using locale ordering
Problem:    Cannot sort using locale ordering.
Solution:   Add a flag for :sort and sort() to use the locale. (Dominique
            Pellé, closes #7237)
2020-11-01 13:57:44 +01:00
Bram Moolenaar
963734e316 patch 8.2.1932: compiler warnings when building with Athena GUI
Problem:    Compiler warnings when building with Athena GUI.
Solution:   Fix function signatures.
2020-11-01 13:33:49 +01:00
Bram Moolenaar
fbcbffe1ad patch 8.2.1931: Vim9: arguments of extend() not checked at compile time
Problem:    Vim9: arguments of extend() not checked at compile time.
Solution:   Add argument type checking for extend().
2020-10-31 19:33:38 +01:00
Bram Moolenaar
749bc9521d patch 8.2.1930: wrong input if removing shift results in special key code
Problem:    Wrong input if removing shift results in special key code.
Solution:   Handle special key codes. (closes #7189)
2020-10-31 16:33:47 +01:00
Bram Moolenaar
0289065e41 patch 8.2.1929: MS-Windows: problem loading Perl 5.32
Problem:    MS-Windows: problem loading Perl 5.32.
Solution:   Define NO_THREAD_SAFE_LOCALE. (Ken Takata, closes #7234)
2020-10-31 13:05:11 +01:00
Bram Moolenaar
cd030c4b60 patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Problem:    Vim9: "silent!" not effective when list index is wrong.
Solution:   Ignore list indes failure when emsg_silent is set. (closes #7232)
2020-10-30 21:49:40 +01:00
Bram Moolenaar
d66960bf57 patch 8.2.1927: Vim9: get unknown error with an error in a timer function
Problem:    Vim9: get unknown error with an error in a timer function.
Solution:   Use did_emsg instead of called_emsg. (closes #7231)
2020-10-30 20:46:26 +01:00
Bram Moolenaar
b2620202c7 patch 8.2.1926: cannot use a space in 'spellfile'
Problem:    Cannot use a space in 'spellfile'. (Filipe Brandenburger)
Solution:   Permit using a space. (closes #7230)
2020-10-30 19:25:09 +01:00
Bram Moolenaar
6d967125ad patch 8.2.1925: list/dict test fails
Problem:    List/dict test fails.
Solution:   Correct expected exception.
2020-10-30 19:06:18 +01:00
Bram Moolenaar
086fc9a585 patch 8.2.1924: Vim9: crash when indexing dict with NULL key
Problem:    Vim9: crash when indexing dict with NULL key.
Solution:   Use empty string instead of NULL. (closes #7229)  Make error
            message more useful for empty string.
2020-10-30 18:33:02 +01:00
Bram Moolenaar
4f6b6ed208 patch 8.2.1923: Vim9: "filter" command modifier doesn't work
Problem:    Vim9: "filter" command modifier doesn't work.
Solution:   Check for space on char before argument. (closes #7216,
            closes #7222)
2020-10-29 20:24:34 +01:00
Bram Moolenaar
185577e47e patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Problem:    Win32: scrolling doesn't work properly when part of window is
            off-screen.
Solution:   Fall back to GDI scrolling if part of the window is off-screen.
            Handle multi-monitor setup better. (Ken Takata, closes #7219)
2020-10-29 20:08:21 +01:00
Bram Moolenaar
dcdd42a8cc patch 8.2.1921: fuzzy matching does not recognize path separators
Problem:    Fuzzy matching does not recognize path separators.
Solution:   Add a bonus for slash and backslash. (Yegappan Lakshmanan,
            closes #7225)
2020-10-29 18:58:01 +01:00
Bram Moolenaar
cf4d454df0 patch 8.2.1920: listlbr test fails when run after another test
Problem:    Listlbr test fails when run after another test.
Solution:   Add test separately to list of test targets.
2020-10-28 22:46:42 +01:00
Bram Moolenaar
28ee892ac4 patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Problem:    Assert_fails() setting emsg_silent changes normal execution.
Solution:   Use a separate flag in_assert_fails.
2020-10-28 20:20:00 +01:00
Bram Moolenaar
3e2534ed1a patch 8.2.1918: Vim9: E1100 mentions :let
Problem:    Vim9: E1100 mentions :let.
Solution:   Mention "var". (closes #7207)
2020-10-28 17:55:31 +01:00
Bram Moolenaar
159563b439 patch 8.2.1917: no test for improved Man command
Problem:    No test for improved Man command.
Solution:   Test that shell arguments are properly escaped.
2020-10-28 17:21:26 +01:00
Bram Moolenaar
171fb923b8 patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Problem:    Vim9: function call is aborted even when "silent!" is used.
Solution:   Use did_emsg instead of called_emsg. (closes #7213)
2020-10-28 16:54:47 +01:00
Bram Moolenaar
6cf7e3b026 patch 8.2.1915: Vim9: error for wrong number of arguments is not useful
Problem:    Vim9: error for wrong number of arguments is not useful.
Solution:   Mention whatever we have for the name. (closes #7208)
2020-10-28 14:31:16 +01:00
Bram Moolenaar
b4bcea474d patch 8.2.1914: Vim9: cannot put line break in expression for '=' register
Problem:    Vim9: cannot put line break in expression for '=' register.
Solution:   Pass fgetline to set_expr_line(). (closes #7209)
2020-10-28 13:53:50 +01:00
Bram Moolenaar
70cf45810c patch 8.2.1913: GTK GUI: rounding for the cell height is too strict
Problem:    GTK GUI: rounding for the cell height is too strict.
Solution:   Round up above 15/16 of a pixel. (closes #7203)
2020-10-27 20:43:26 +01:00
Bram Moolenaar
68a48ee55e patch 8.2.1912: with Python 3.9 some tests fail
Problem:    With Python 3.9 some tests fail.
Solution:   Take into account the different error message. (James McCoy,
            closes #7210)
2020-10-27 19:59:10 +01:00
Bram Moolenaar
977fd0b327 patch 8.2.1911: tiny build fails
Problem:    Tiny build fails.
Solution:   Add #ifdef.
2020-10-27 09:12:45 +01:00
Bram Moolenaar
caf73dcfad patch 8.2.1910: reading past the end of the command line
Problem:    Reading past the end of the command line.
Solution:   Check for NUL. (closes #7204)
2020-10-26 21:39:13 +01:00
Bram Moolenaar
cb80aa2d53 Update runtime files. 2020-10-26 21:12:46 +01:00
Bram Moolenaar
8133cc6bf4 patch 8.2.1909: number of status line items is limited to 80
Problem:    Number of status line items is limited to 80.
Solution:   Dynamically allocate the arrays. (Rom Grk, closes #7181)
2020-10-26 21:05:27 +01:00
Bram Moolenaar
c8970b9464 patch 8.2.1908: Lua is initialized even when not used
Problem:    Lua is initialized even when not used.
Solution:   Put lua_init() after check for "eap->skip". (Christian Brabandt,
            closes #7191).  Avoid compiler warnings.
2020-10-26 20:18:08 +01:00
Bram Moolenaar
f9d51354de patch 8.2.1907: complete_info().selected may be wrong
Problem:    Complete_info().selected may be wrong.
Solution:   Update cp_number if it was never set. (issue #6945)
2020-10-26 19:22:42 +01:00
Bram Moolenaar
a360dbe3b6 patch 8.2.1906: warning for signed/unsigned
Problem:    Warning for signed/unsigned.
Solution:   Use size_t instead of int. (Mike Williams)
2020-10-26 18:46:53 +01:00
Bram Moolenaar
4882d98339 patch 8.2.1905: the wininfo list may contain stale entries
Problem:    The wininfo list may contain stale entries.
Solution:   When closing a window remove any other entry where the window
            pointer is NULL.
2020-10-25 17:55:09 +01:00
Bram Moolenaar
89b693e562 patch 8.2.1904: still using default option values after using ":badd +1"
Problem:    Still using default option values after using ":badd +1".
Solution:   Find a window where options were set.  Don't set the window when
            using ":badd".
2020-10-25 17:09:50 +01:00
Bram Moolenaar
37e4e03c67 patch 8.2.1903: buffer test fails with normal features
Problem:    Buffer test fails with normal features.
Solution:   Use 'numberwidth' instead of 'conceallevel' in the test.
2020-10-25 16:18:26 +01:00
Bram Moolenaar
e974fa7b2b patch 8.2.1902: default option values changed with :badd for existing buffer
Problem:    Default option values are changed when using :badd for an existing
            buffer.
Solution:   When calling buflist_new() pass a zero line number. (closes #7195)
2020-10-25 15:02:51 +01:00
Bram Moolenaar
4ff2f2fb6b patch 8.2.1901: variable completion does not work in command line window
Problem:    Variable completion does not work in command line window.
Solution:   Use the "prevwin". (closes #7198)
2020-10-25 13:22:42 +01:00
Bram Moolenaar
02194d2bd5 patch 8.2.1900: Vim9: command modifiers do not work
Problem:    Vim9: command modifiers do not work.
Solution:   Make most command modifiers work.
2020-10-24 23:08:38 +02:00
Bram Moolenaar
67def64a4e patch 8.2.1899: crash in out-of-memory situation
Problem:    Crash in out-of-memory situation.
Solution:   Bail out if shell_name is NULL. (Dominique Pellé, closes #7196)
2020-10-24 20:58:06 +02:00
Bram Moolenaar
e100440158 patch 8.2.1898: command modifier parsing always uses global cmdmod
Problem:    Command modifier parsing always uses global cmdmod.
Solution:   Pass in cmdmod_T to use.  Rename struct fields consistently.
2020-10-24 20:49:43 +02:00
Bram Moolenaar
5661ed6c83 patch 8.2.1897: command modifiers are saved and set inconsistently
Problem:    Command modifiers are saved and set inconsistently.
Solution:   Separate parsing and applying command modifiers.  Save values in
            cmdmod_T.
2020-10-24 17:19:16 +02:00
Bram Moolenaar
e1be11864d patch 8.2.1896: valgrind warns for using uninitialized memory
Problem:    Valgrind warns for using uninitialized memory.
Solution:   NUL terminate the SmcOpenConnection() error message. (Dominique
            Pellé, closes #7194)
2020-10-24 13:30:51 +02:00
Bram Moolenaar
210681c509 patch 8.2.1895: Vim9: silent command modifier test fails
Problem:    Vim9: silent command modifier test fails.
Solution:   Add missing changes.
2020-10-23 18:51:06 +02:00
Bram Moolenaar
f4c6e1e75c patch 8.2.1894: Vim9: command modifiers are not supported
Problem:    Vim9: command modifiers are not supported.
Solution:   Support "silent" and "silent!".
2020-10-23 18:02:32 +02:00
Bram Moolenaar
8ded5b647a patch 8.2.1893: fuzzy matching does not support multiple words
Problem:    Fuzzy matching does not support multiple words.
Solution:   Add support for matching white space separated words. (Yegappan
            Lakshmanan, closes #7163)
2020-10-23 16:50:30 +02:00
Bram Moolenaar
9c24cd11e2 patch 8.2.1892: valgrind warns for using uninitialized access in tests
Problem:    Valgrind warns for using uninitialized access in tests.
Solution:   Fix condition for breaking out of loop. (Dominique Pellé,
            closes #7187)
2020-10-23 15:40:39 +02:00
Bram Moolenaar
683581eb49 patch 8.2.1891: Vim9: skipping over expression doesn't handle line breaks
Problem:    Vim9: skipping over expression doesn't handle line breaks.
Solution:   Pass evalarg to skip_expr(). (closes #7157)
2020-10-22 21:22:58 +02:00
Bram Moolenaar
081db1a66d patch 8.2.1890: Vim9: strange error for subtracting from a list
Problem:    Vim9: strange error for subtracting from a list.
Solution:   Check getting a number, not a string. (closes #7167)
2020-10-22 20:09:43 +02:00
Bram Moolenaar
b07a39de48 patch 8.2.1889: Vim9: errornous error for missing white space after {}
Problem:    Vim9: errornous error for missing white space after {}.
Solution:   Don't skip over white space after {}. (issue #7167)
2020-10-22 19:00:01 +02:00
Bram Moolenaar
e6e70a10f1 patch 8.2.1888: Vim9: getbufline(-1, 1, '$') gives an error
Problem:    Vim9: Getbufline(-1, 1, '$') gives an error.
Solution:   Return an empty list. (closes #7180)
2020-10-22 18:23:38 +02:00
Bram Moolenaar
15ab48f088 patch 8.2.1887: Github actions not optimally configured
Problem:    Github actions not optimally configured.
Solution:   Run CI on any pushed branches. Set fail-fast. (Ozaki Kiichi,
            closes #7184)
2020-10-22 17:33:17 +02:00
Bram Moolenaar
371806e164 patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Problem:    Using ":silent!" in a popup filter has unexpected effect.
Solution:   Use did_emsg instead of called_emsg. (closes #7178)
2020-10-22 13:44:54 +02:00
Bram Moolenaar
2733779a1a patch 8.2.1885: filetype tests unnessarily creates swap files
Problem:    Filetype tests unnessarily creates swap files.
Solution:   Disable 'swapfile'. (Ken Takata, closes #7183)
2020-10-22 12:33:32 +02:00
Bram Moolenaar
a1224cb706 patch 8.2.1884: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (John Marriott)
Solution:   Initialize with NULL.
2020-10-22 12:31:49 +02:00
Bram Moolenaar
4ce5fe4c87 patch 8.2.1883: compiler warnings when using Python
Problem:    Compiler warnings when using Python.
Solution:   Adjust PyCFunction to also have the second argument.  Use "int"
            return type for some functions.  Insert "(void *)" to get rid of
            the remaining warnings.
2020-10-21 21:01:59 +02:00
Bram Moolenaar
c58f5456e5 patch 8.2.1882: Vim9: v:disallow_let is no longer needed
Problem:    Vim9: v:disallow_let is no longer needed.
Solution:   Remove v:disallow_let.
2020-10-21 20:58:52 +02:00
Bram Moolenaar
692d1a51e7 patch 8.2.1881: cannot build with GTK3
Problem:    Cannot build with GTK3.
Solution:   Adjust form functions.
2020-10-21 17:28:27 +02:00
Bram Moolenaar
af7a9066a9 patch 8.2.1880: Vim9: asan complains about adding zero to NULL
Problem:    Vim9: Asan complains about adding zero to NULL.
Solution:   Check for argument count first.
2020-10-21 16:49:17 +02:00
Bram Moolenaar
ca17453e73 patch 8.2.1879: Vim9: argument types of insert() not checked when compiling
Problem:    Vim9: argument types of insert() not checked when compiling.
Solution:   Add argument type checks for insert().
2020-10-21 16:42:22 +02:00
Bram Moolenaar
8a99e66b4f patch 8.2.1878: GTK: error for redefining function
Problem:    GTK: error for redefining function. (Tony Mechelynck)
Solution:   Remove "gtk_" prefix from local functions and prepend "gui_" to
            global functions.
2020-10-21 16:10:21 +02:00
Bram Moolenaar
b8f519e538 patch 8.2.1877: test for function list fails
Problem:    Test for function list fails.
Solution:   Move "obsolete" comments one line up.
2020-10-21 14:49:08 +02:00
Bram Moolenaar
94738d8fab patch 8.2.1876: Vim9: argument types are not checked at compile time
Problem:    Vim9: argument types for builtin functions are not checked at
            compile time.
Solution:   Add an argument type checking mechanism. Implement type checks for
            one function.
2020-10-21 14:25:07 +02:00
Bram Moolenaar
3da855c8e2 patch 8.2.1875: warning when building GTK gui
Problem:    Warning when building GTK gui.
Solution:   Add missing function parameter.
2020-10-21 12:38:00 +02:00
Bram Moolenaar
b53e13a91a patch 8.2.1874: can't do something just before leaving Insert mode
Problem:    Can't do something just before leaving Insert mode.
Solution:   Add the InsertLeavePre autocommand event. (closes #7177)
2020-10-21 12:19:53 +02:00
Bram Moolenaar
20d89e0ac6 patch 8.2.1873: Vim9: missing white space when using <f-args>
Problem:    Vim9: missing white space when using <f-args>.
Solution:   Add spaces. (Christian J. Robinson)
2020-10-20 23:11:33 +02:00
Bram Moolenaar
e9f9f16387 patch 8.2.1872: matchfuzzy() does not prefer sequential matches
Problem:    Matchfuzzy() does not prefer sequential matches.
Solution:   Give sequential matches a higher bonus. (Christian Brabandt,
            closes #7140)
2020-10-20 19:01:30 +02:00
Bram Moolenaar
c95940c06a patch 8.2.1871: using %v in 'errorformat' may fail before %Z
Problem:    Using %v in 'errorformat' may fail before %Z.
Solution:   Set qf_viscol only when qf_col is set. (closes #7169)
2020-10-20 14:59:12 +02:00
Bram Moolenaar
39ca4127a0 patch 8.2.1870: Vim9: no need to keep all script variables
Problem:    Vim9: no need to keep all script variables.
Solution:   Only keep script variables when a function was defined that could
            use them.  Fix freeing static string on exit.
2020-10-20 14:25:07 +02:00
Bram Moolenaar
955347cc7e patch 8.2.1869: Vim9: memory leak when using add()
Problem:    Vim9: memory leak when using add().
Solution:   Free the added item.
2020-10-19 23:01:46 +02:00
Bram Moolenaar
9a13e185e5 patch 8.2.1868: Vim9: no error for missing space after comma in dict
Problem:    Vim9: no error for missing space after comma in dict.
Solution:   Check for white space. (closes #6672)
2020-10-19 21:45:07 +02:00
Bram Moolenaar
80b0e5ea11 patch 8.2.1867: Vim9: argument to add() not checked for blob
Problem:    Vim9: argument to add() not checked for blob.
Solution:   Add the BLOBAPPEND instruction.
2020-10-19 20:45:36 +02:00
Bram Moolenaar
66fa5fd54f patch 8.2.1866: Vim9: appending to pushed blob gives wrong result
Problem:    Vim9: appending to pushed blob gives wrong result.
Solution:   Set ga_maxlen when copying a blob.
2020-10-19 20:21:03 +02:00
Bram Moolenaar
1dcae59957 patch 8.2.1865: Vim9: add() does not check type of argument
Problem:    Vim9: add() does not check type of argument.
Solution:   Inline the add() call. (closes #7160)
2020-10-19 19:02:42 +02:00
Bram Moolenaar
334a8b4bde patch 8.2.1864: Vim9: no error for wrong list type
Problem:    Vim9: no error for wrong list type.
Solution:   Add flag to indicate a constant. (closes #7160)
2020-10-19 16:07:42 +02:00
Bram Moolenaar
e3c65ce4e5 patch 8.2.1863: json code not sufficiently tested
Problem:    Json code not sufficiently tested.
Solution:   Add more test cases. (Dominique Pellé, closes #7166)
2020-10-19 13:12:33 +02:00
Bram Moolenaar
2ea79ad835 patch 8.2.1862: vim9: memory leak when compiling lambda fails
Problem:    vim9: memory leak when compiling lambda fails.
Solution:   Call clear_evalarg().
2020-10-18 23:32:13 +02:00
Bram Moolenaar
a2c026d0fd patch 8.2.1861: Vim9: no specific error when parsing lambda fails
Problem:    Vim9: no specific error when parsing lambda fails.
Solution:   Also give syntax errors when not evaluating. (closes #7154)
2020-10-18 18:03:17 +02:00
Bram Moolenaar
335e671322 patch 8.2.1860: Vim9: memory leak when throwing empty string
Problem:    Vim9: memory leak when throwing empty string.
Solution:   Free the empty string.
2020-10-17 22:58:21 +02:00
Bram Moolenaar
352134bbfb patch 8.2.1859: Vim9: crash in unpack assignment
Problem:    Vim9: crash in unpack assignment.
Solution:   Make sure an error message is turned into an exception.
            (closes #7159)
2020-10-17 22:04:08 +02:00
Bram Moolenaar
403dc31f5a patch 8.2.1858: Vim9: filter functions return number instead of bool
Problem:    Vim9: filter functions return number instead of bool.
Solution:   Return v:true instead of one. (closes #7144)
2020-10-17 19:29:51 +02:00
Bram Moolenaar
218450ad5e patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Problem:    Vim9: using job_status() on an unused var gives an error.
Solution:   Return "fail". (closes #7158)
2020-10-17 18:51:52 +02:00
Bram Moolenaar
9668cc57a1 patch 8.2.1856: "2resize" uses size of current window
Problem:    "2resize" uses size of current window.
Solution:   Use size of resized window. (Yasuhiro Matsumoto, closes #7152)
2020-10-17 17:39:55 +02:00
Bram Moolenaar
e13bdec6b9 patch 8.2.1855: Vim9: get error message when nothing is wrong
Problem:    Vim9: get error message when nothing is wrong.
Solution:   Check called_emsg instead of did_emsg. (closes #7143)
2020-10-16 23:16:47 +02:00
Bram Moolenaar
1e021e63c5 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Problem:    Vim9: crash when throwing exception for NULL string. (Dhiraj
            Mishra)
Solution:   Handle NULL string like empty string. (closes #7139)
2020-10-16 20:25:23 +02:00
Bram Moolenaar
7a66a17190 patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Problem:    "to_f" is recognized at "topleft" modifier.
Solution:   Do not recognize modifer when "_" follows. (closes #7019)
2020-10-16 19:56:12 +02:00
Bram Moolenaar
ffdf8adfa8 patch 8.2.1852: map() returing zero for NULL list is unexpected
Problem:    map() returing zero for NULL list is unexpected.
Solution:   Return the empty list. (closes #7133)
2020-10-15 22:29:17 +02:00
Bram Moolenaar
27491cd3ef patch 8.2.1851: Vim9: "!" followed by space incorrectly used
Problem:    Vim9: "!" followed by space incorrectly used.
Solution:   Skip over trailing spaces. (closes #7131)
2020-10-15 21:54:56 +02:00
Bram Moolenaar
a604ccc959 patch 8.2.1850: "vat" does not select tags correctly over line break
Problem:    "vat" does not select tags correctly over line break.
Solution:   Adjust the search pattern. (Aufar Gilbran, closes #7136)
2020-10-15 21:23:28 +02:00
Bram Moolenaar
ed234f24f3 patch 8.2.1849: Vim9: garbage collection frees block-local variables
Problem:    Vim9: garbage collection frees block-local variables.
Solution:   Mark all script variables as used.
2020-10-15 20:42:20 +02:00
Bram Moolenaar
74f8eece5e patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Problem:    Crashyyyyy passing a NULL string or list to popup_settext().
Solution:   Check for NULL pointers. (closes #7132)
2020-10-15 19:10:56 +02:00
Bram Moolenaar
209f0208f7 patch 8.2.1847: Vim9: using negative value for unsigned type
Problem:    Vim9: using negative value for unsigned type.
Solution:   Use zero instead of -1.
2020-10-15 13:57:56 +02:00
Bram Moolenaar
fbbcd00367 patch 8.2.1846: Vim9: block variables are not found in compiled function
Problem:    Vim9: variables declared in a local block are not found in
            when a function is compiled.
Solution:   Look for script variables in sn_all_vars.
2020-10-15 12:46:44 +02:00
Bram Moolenaar
8d739de43b patch 8.2.1845: Vim9: function defined in a block can't use block variables
Problem:    Vim9: function defined in a block can't use variables defined in
            that block.
Solution:   First step: Make a second hashtab that holds all script variables,
            also block-local ones, with more information.
2020-10-14 19:39:19 +02:00
Bram Moolenaar
3d30af8783 patch 8.2.1844: using "q" at the more prompt doesn't stop a long message
Problem:    Using "q" at the more prompt doesn't stop a long message.
Solution:   Check for "got_int". (closes #7122)
2020-10-13 22:15:56 +02:00
Bram Moolenaar
b9616af23f patch 8.2.1843: Netbeans: with huge buffer number memory allocation may fail
Problem:    Netbeans: with huge buffer number memory allocation may fail.
Solution:   Check for size overflow.
2020-10-13 21:11:13 +02:00
Bram Moolenaar
21cbe175ee patch 8.2.1842: crash when USE_FNAME_CASE is defined and using :browse
Problem:    Crash when USE_FNAME_CASE is defined and using :browse.
Solution:   Don't use read-only memory for ".". (Yegappan Lakshmanan,
            closes #7123)
2020-10-13 19:08:24 +02:00
Bram Moolenaar
2b9b17ea5d patch 8.2.1841: Vim9: test for compilation error fails in normal build
Problem:    Vim9: test for compilation error fails in normal build.
Solution:   Invoke CheckRunVimInTerminal in a separate function.
2020-10-13 18:38:11 +02:00
Bram Moolenaar
f4e8cdd3d2 patch 8.2.1840: Vim9: error message is not clear about compilation error
Problem:    Vim9: error message is not clear about compilation error.
Solution:   Say "compiling" instead of "processing".
2020-10-12 22:07:13 +02:00
Bram Moolenaar
fc8aa6d02d patch 8.2.1839: Vim9: memory leaks reported in assign test
Problem:    Vim9: memory leaks reported in assign test.
Solution:   Move the failing job_start() call to separate test files, it
            causes false leak reports.
2020-10-12 20:31:26 +02:00
Bram Moolenaar
93be1644db patch 8.2.1838: Vim9: cannot insert a comment line in an expression
Problem:    Vim9: cannot insert a comment line in an expression.
Solution:   Skip comment lines at the script level. (closes #7111)
2020-10-11 21:34:41 +02:00
480 changed files with 44054 additions and 10429 deletions

View File

@@ -3,6 +3,8 @@ env:
FEATURES: huge
freebsd_12_task:
only_if: $CIRRUS_TAG == ''
timeout_in: 20m
freebsd_instance:
image: freebsd-12-1-release-amd64
install_script:

6
.codecov.yml Normal file
View File

@@ -0,0 +1,6 @@
coverage:
range: "80...100"
status:
project:
default:
threshold: 0.05%

1
.coveralls.yml Normal file
View File

@@ -0,0 +1 @@
service_name: github-actions

44
.github/CODEOWNERS vendored
View File

@@ -19,6 +19,7 @@ runtime/autoload/netrwSettings.vim @cecamp
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/tar.vim @cecamp
runtime/autoload/vimball.vim @cecamp
runtime/autoload/xmlformat.vim @chrisbra
runtime/autoload/zip.vim @cecamp
runtime/compiler/checkstyle.vim @dkearns
runtime/compiler/cucumber.vim @tpope
@@ -57,13 +58,16 @@ runtime/compiler/tsc.vim @dkearns
runtime/compiler/typedoc.vim @dkearns
runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
runtime/compiler/zsh.vim @dkearns
runtime/doc/pi_getscript.txt @cecamp
runtime/doc/pi_logipat.txt @cecamp
runtime/doc/pi_netrw.txt @cecamp
runtime/doc/pi_tar.txt @cecamp
runtime/doc/pi_vimball.txt @cecamp
runtime/doc/pi_zip.txt @cecamp
runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/bst.vim @tpope
runtime/ftplugin/cfg.vim @chrisbra
runtime/ftplugin/css.vim @dkearns
runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/eiffel.vim @dkearns
@@ -73,21 +77,27 @@ runtime/ftplugin/gitcommit.vim @tpope
runtime/ftplugin/gitconfig.vim @tpope
runtime/ftplugin/gitrebase.vim @tpope
runtime/ftplugin/gitsendemail.vim @tpope
runtime/ftplugin/gprof.vim @dpelle
runtime/ftplugin/haml.vim @tpope
runtime/ftplugin/hgcommit.vim @k-takata
runtime/ftplugin/javascript.vim @dkearns
runtime/ftplugin/javascriptreact.vim @dkearns
runtime/ftplugin/kconfig.vim @chrisbra
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/matlab.vim @cecamp
runtime/ftplugin/nroff.vim @a-vrma
runtime/ftplugin/nsis.vim @k-takata
runtime/ftplugin/pdf.vim @tpope
runtime/ftplugin/ruby.vim @tpope @dkearns
runtime/ftplugin/sass.vim @tpope
runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/spec.vim @ignatenkobrain
runtime/ftplugin/tmux.vim @ericpruitt
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/ftplugin/xml.vim @chrisbra
runtime/ftplugin/zsh.vim @chrisbra
runtime/indent/bst.vim @tpope
runtime/indent/cucumber.vim @tpope
runtime/indent/dosbatch.vim @k-takata
@@ -99,18 +109,35 @@ runtime/indent/nsis.vim @k-takata
runtime/indent/ruby.vim @AndrewRadev @dkearns
runtime/indent/sass.vim @tpope
runtime/indent/scss.vim @tpope
runtime/indent/sh.vim @chrisbra
runtime/indent/teraterm.vim @k-takata
runtime/indent/xml.vim @chrisbra
runtime/indent/zsh.vim @chrisbra
runtime/keymap/tamil_tscii.vim @yegappan
runtime/pack/dist/opt/cfilter/plugin/cfilter.vim @yegappan
runtime/pack/dist/opt/matchit/ @chrisbra
runtime/plugin/getscriptPlugin.vim @cecamp
runtime/plugin/logiPat.vim @cecamp
runtime/plugin/netrwPlugin.vim @cecamp
runtime/plugin/tarPlugin.vim @cecamp
runtime/plugin/vimballPlugin.vim @cecamp
runtime/plugin/zipPlugin.vim @cecamp
runtime/syntax/aidl.vim @dpelle
runtime/syntax/amiga.vim @cecamp
runtime/syntax/asm.vim @dkearns
runtime/syntax/asmh8300.vim @dkearns
runtime/syntax/awk.vim @dkearns
runtime/syntax/bst.vim @tpope
runtime/syntax/cabal.vim @coot
runtime/syntax/cabalconfig.vim @coot
runtime/syntax/cabalproject.vim @coot
runtime/syntax/cs.vim @nickspoons
runtime/syntax/csh.vim @cecamp
runtime/syntax/cucumber.vim @tpope
runtime/syntax/datascript.vim @dpelle
runtime/syntax/dcl.vim @cecamp
runtime/syntax/doxygen.vim @frogonwheels
runtime/syntax/dtd.vim @chrisbra
runtime/syntax/elmfilt.vim @cecamp
runtime/syntax/eruby.vim @tpope @dkearns
runtime/syntax/exports.vim @cecamp
@@ -118,8 +145,11 @@ runtime/syntax/git.vim @tpope
runtime/syntax/gitcommit.vim @tpope
runtime/syntax/gitconfig.vim @tpope
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/gprof.vim @dpelle
runtime/syntax/haml.vim @tpope
runtime/syntax/haskell.vim @coot
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/kconfig.vim @chrisbra
runtime/syntax/lex.vim @cecamp
runtime/syntax/liquid.vim @tpope
runtime/syntax/lisp.vim @cecamp
@@ -134,12 +164,17 @@ runtime/syntax/nsis.vim @k-takata
runtime/syntax/pdf.vim @tpope
runtime/syntax/php.vim @TysonAndre
runtime/syntax/privoxy.vim @dkearns
runtime/syntax/prolog.vim @XVilka
runtime/syntax/rc.vim @chrisbra
runtime/syntax/rpcgen.vim @cecamp
runtime/syntax/ruby.vim @dkearns
runtime/syntax/sass.vim @tpope
runtime/syntax/scss.vim @tpope
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/sqloracle.vim @chrisbra
runtime/syntax/sshdconfig.vim @Jakuje
runtime/syntax/tags.vim @cecamp
runtime/syntax/teraterm.vim @k-takata
runtime/syntax/tex.vim @cecamp
@@ -149,6 +184,15 @@ runtime/syntax/vim.vim @cecamp
runtime/syntax/wget.vim @dkearns
runtime/syntax/xbl.vim @dkearns
runtime/syntax/xmath.vim @cecamp
runtime/syntax/xml.vim @chrisbra
runtime/syntax/xslt.vim @Boobies
runtime/syntax/xxd.vim @cecamp
runtime/syntax/yacc.vim @cecamp
runtime/syntax/zsh.vim @chrisbra
runtime/tutor/tutor.eo @dpelle
runtime/tutor/tutor.eo.utf-8 @dpelle
runtime/tutor/tutor.fr @dpelle
runtime/tutor/tutor.fr.utf-8 @dpelle
src/po/de.po @chrisbra
src/po/eo.po @dpelle
src/po/fr.po @dpelle

View File

@@ -1,228 +0,0 @@
name: GitHub CI
on:
push:
branches:
- '*'
pull_request:
env:
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
# Interfaces
# Lua
LUA_VER: 54
LUA_VER_DOT: '5.4'
LUA_RELEASE: 5.4.0
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
LUA_DIR: D:\Lua
# Python 2
PYTHON_VER: 27
PYTHON_VER_DOT: '2.7'
# Python 3
PYTHON3_VER: 38
PYTHON3_VER_DOT: '3.8'
# Other dependencies
# winpty
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
# Escape sequences
COL_RED: "\x1b[31m"
COL_GREEN: "\x1b[32m"
COL_YELLOW: "\x1b[33m"
COL_RESET: "\x1b[m"
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
toolchain: [msvc, mingw]
arch: [x64, x86]
features: [HUGE, NORMAL]
include:
- arch: x64
vcarch: amd64
warch: x64
bits: 64
msystem: MINGW64
cygreg: registry
pyreg: ""
- arch: x86
vcarch: x86
warch: ia32
bits: 32
msystem: MINGW32
cygreg: registry32
pyreg: "-32"
exclude:
- toolchain: msvc
arch: x64
features: NORMAL
- toolchain: mingw
arch: x86
features: NORMAL
steps:
- name: Initalize
id: init
shell: bash
run: |
git config --global core.autocrlf input
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@")
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
echo "PYTHON_DIR=$python_dir" >> $GITHUB_ENV
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
- uses: msys2/setup-msys2@v2
if: matrix.toolchain == 'mingw'
with:
msystem: ${{ matrix.msystem }}
release: false
- uses: actions/checkout@v2
- name: Create a list of download URLs
shell: cmd
run: |
type NUL > urls.txt
echo %LUA_RELEASE%>> urls.txt
echo %WINPTY_URL%>> urls.txt
- name: Cache downloaded files
uses: actions/cache@v2
with:
path: downloads
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }}
- name: Download dependencies
shell: cmd
run: |
path C:\Program Files\7-Zip;%path%
if not exist downloads mkdir downloads
echo %COL_GREEN%Download Lua%COL_RESET%
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
echo %COL_GREEN%Download winpty%COL_RESET%
call :downloadfile %WINPTY_URL% downloads\winpty.zip
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\
goto :eof
:downloadfile
:: call :downloadfile <URL> <localfile>
if not exist %2 (
curl -f -L %1 -o %2
)
if ERRORLEVEL 1 (
rem Retry once.
curl -f -L %1 -o %2 || exit 1
)
goto :eof
- name: Copy src directory to src2
shell: cmd
run: |
xcopy src src2\ /E > nul
- name: Build (MSVC)
if: matrix.toolchain == 'msvc'
shell: cmd
run: |
call "%VCVARSALL%" ${{ matrix.vcarch }}
cd src
:: Filter out the progress bar from the build log
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
if "${{ matrix.features }}"=="HUGE" (
nmake -nologo -f Make_mvc2.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR%
) else (
nmake -nologo -f Make_mvc2.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes
)
if not exist vim${{ matrix.bits }}.dll (
echo %COL_RED%Build failure.%COL_RESET%
exit 1
)
- name: Build (MinGW)
if: matrix.toolchain == 'mingw'
shell: msys2 {0}
run: |
cd src
if [ "${{ matrix.features }}" = "HUGE" ]; then
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
DYNAMIC_LUA=yes LUA=${LUA_DIR} \
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
STATIC_STDCPLUS=yes
else
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
STATIC_STDCPLUS=yes
fi
# - name: Prepare Artifact
# shell: cmd
# run: |
# mkdir artifacts
# copy src\*vim.exe artifacts
# copy src\vim*.dll artifacts
#
# - name: Upload Artifact
# uses: actions/upload-artifact@v1
# with:
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
# path: ./artifacts
- name: Test
shell: cmd
timeout-minutes: 20
run: |
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" ${{ matrix.vcarch }}
cd src
echo.
echo %COL_GREEN%vim version:%COL_RESET%
.\vim --version || exit 1
echo %COL_GREEN%Start testing vim in background.%COL_RESET%
start cmd /c "cd ..\src2\testdir & nmake -nologo -f Make_dos.mak VIMPROG=..\..\src\vim > nul & echo done>done.txt"
echo %COL_GREEN%Test gvim:%COL_RESET%
cd testdir
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1
cd ..
echo %COL_GREEN%Wait for vim tests to finish.%COL_RESET%
cd ..\src2\testdir
:: Wait about 10 minutes.
for /L %%i in (1,1,60) do (
if exist done.txt goto exitloop
timeout 10
)
set timeout=1
:exitloop
echo %COL_GREEN%Test results of vim:%COL_RESET%
if exist messages type messages
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
if "%timeout%"=="1" (
echo %COL_RED%Timed out.%COL_RESET%
exit 1
)

526
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,526 @@
name: GitHub CI
on:
push:
branches: ['**']
pull_request:
jobs:
linux:
runs-on: ubuntu-latest
env:
CC: ${{ matrix.compiler }}
TEST: test
SRCDIR: ./src
LEAK_CFLAGS: -DEXITFREE
LOG_DIR: ${{ github.workspace }}/logs
TERM: xterm
DISPLAY: ':99'
DEBIAN_FRONTEND: noninteractive
strategy:
fail-fast: false
matrix:
features: [tiny, small, normal, huge]
compiler: [clang, gcc]
extra: [none]
include:
- features: tiny
compiler: clang
extra: nogui
- features: tiny
compiler: gcc
extra: nogui
- features: normal
shadow: ./src/shadow
- features: huge
coverage: true
- features: huge
compiler: gcc
coverage: true
extra: testgui
- features: huge
compiler: clang
extra: asan
- features: huge
compiler: gcc
coverage: true
extra: unittests
- features: normal
compiler: gcc
extra: vimtags
steps:
- uses: actions/checkout@v2
- name: Install packages
run: |
sudo apt-get install -y \
autoconf \
lcov \
gettext \
libcanberra-dev \
libperl-dev \
python-dev \
python3-dev \
liblua5.3-dev \
lua5.3 \
ruby-dev \
tcl-dev \
cscope \
libgtk2.0-dev \
desktop-file-utils \
libtool-bin
- name: Install clang-11
if: matrix.compiler == 'clang'
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
. /etc/lsb-release
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-11 main"
sudo apt-get install -y clang-11
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-11 100
sudo update-alternatives --set clang /usr/bin/clang-11
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-11 100
- name: Set up environment
run: |
mkdir -p "${LOG_DIR}"
mkdir -p "${HOME}/bin"
echo "${HOME}/bin" >> $GITHUB_PATH
(
echo "LINUX_VERSION=$(uname -r)"
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
echo "SND_DUMMY_DIR=${HOME}/snd-dummy"
echo "TMPDIR=${{ runner.temp }}"
case "${{ matrix.features }}" in
tiny|small)
echo "TEST=testtiny"
if ${{ contains(matrix.extra, 'nogui') }}; then
echo "CONFOPT=--disable-gui"
fi
;;
normal)
;;
huge)
echo "TEST=scripttests test_libvterm"
echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
;;
esac
if ${{ matrix.coverage == true }}; then
echo "CFLAGS=--coverage -DUSE_GCOV_FLUSH"
echo "LDFLAGS=--coverage"
fi
if ${{ contains(matrix.extra, 'testgui') }}; then
echo "TEST=-C src testgui"
fi
if ${{ contains(matrix.extra, 'unittests') }}; then
echo "TEST=unittests"
fi
if ${{ contains(matrix.extra, 'asan') }}; then
echo "SANITIZER_CFLAGS=-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
echo "ASAN_OPTIONS=print_stacktrace=1 log_path=${LOG_DIR}/asan"
echo "UBSAN_OPTIONS=print_stacktrace=1 log_path=${LOG_DIR}/ubsan"
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
fi
if ${{ contains(matrix.extra, 'vimtags') }}; then
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
fi
) >> $GITHUB_ENV
- name: Set up system
run: |
if [[ ${CC} = clang ]]; then
# Use llvm-cov instead of gcov when compiler is clang.
ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
fi
# Setup lua5.3 manually since its package doesn't provide alternative.
# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
if [[ ${CONFOPT} =~ luainterp ]]; then
sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3 10
fi
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
sudo usermod -a -G audio "${USER}"
sudo bash ci/setup-xvfb.sh
- name: Cache snd-dummy
uses: actions/cache@v2
with:
path: ${{ env.SND_DUMMY_DIR }}
key: linux-${{ env.LINUX_VERSION }}-snd-dummy
- name: Set up snd-dummy
run: |
if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
bash ci/build-snd-dummy.sh
fi
cd "${SND_DUMMY_DIR}"
sudo insmod soundcore.ko
sudo insmod snd.ko
sudo insmod snd-pcm.ko
sudo insmod snd-dummy.ko
- name: Check autoconf
if: contains(matrix.extra, 'unittests')
run: |
make -C src autoconf
- name: Set up shadow dir
if: matrix.shadow
run: |
make -C src shadow
echo "SRCDIR=${{ matrix.shadow }}" >> $GITHUB_ENV
echo "SHADOWOPT=-C ${{ matrix.shadow }}" >> $GITHUB_ENV
- name: Configure
run: |
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
# Append various warning flags to CFLAGS.
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
- name: Build
if: (!contains(matrix.extra, 'unittests'))
run: |
make ${SHADOWOPT} -j${NPROC}
- name: Check version
if: (!contains(matrix.extra, 'unittests'))
run: |
"${SRCDIR}"/vim --version
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- name: Test
timeout-minutes: 20
run: |
do_test() { sg audio "sg $(id -gn) '$*'"; }
do_test make ${SHADOWOPT} ${TEST}
- name: Coveralls
if: matrix.coverage && success() && github.event_name != 'pull_request'
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_PARALLEL: true
TRAVIS_JOB_ID: ${{ github.run_id }}
run: |
sudo apt-get install -y python3-setuptools python3-wheel
# needed for https support for coveralls building cffi only works with gcc, not with clang
CC=gcc pip3 install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1
~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8
- name: Codecov
if: matrix.coverage && success()
run: |
cd "${SRCDIR}"
bash <(curl -s https://codecov.io/bash) -F "${{ matrix.features }}-${{ matrix.compiler }}-${{ matrix.extra }}"
- name: ASan logs
if: contains(matrix.extra, 'asan') && !cancelled()
run: |
for f in $(grep -lR '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "${LOG_DIR}"); do
asan_symbolize-11 -l "$f"
false # in order to fail a job
done
coveralls:
runs-on: ubuntu-latest
needs: linux
if: always() && github.event_name != 'pull_request'
steps:
- name: Parallel finished
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: |
curl -k "https://coveralls.io/webhook?repo_token=${COVERALLS_REPO_TOKEN}" -d "payload[build_num]=${GITHUB_RUN_ID}&payload[status]=done"
macos:
runs-on: macos-latest
env:
CC: ${{ matrix.compiler }}
TEST: test
SRCDIR: ./src
LEAK_CFLAGS: -DEXITFREE
TERM: xterm
strategy:
fail-fast: false
matrix:
features: [tiny, huge]
compiler: [clang, gcc]
steps:
- uses: actions/checkout@v2
- name: Install packages
env:
HOMEBREW_NO_AUTO_UPDATE: 1
run: |
brew install lua
echo "LUA_PREFIX=/usr/local" >> $GITHUB_ENV
- name: Set up environment
run: |
(
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
case "${{ matrix.features }}" in
tiny)
echo "TEST=testtiny"
echo "CONFOPT=--disable-gui"
;;
huge)
echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
;;
esac
) >> $GITHUB_ENV
- name: Configure
run: |
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
# Append various warning flags to CFLAGS.
# BSD sed needs backup extension specified.
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
# On macOS, the entity of gcc is clang.
sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
- name: Build
env:
LC_ALL: C
run: |
make -j${NPROC}
- name: Check version
run: |
"${SRCDIR}"/vim --version
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- name: Test
timeout-minutes: 20
run: |
make ${TEST}
windows:
runs-on: windows-latest
env:
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
# Interfaces
# Lua
LUA_VER: 54
LUA_VER_DOT: '5.4'
LUA_RELEASE: 5.4.0
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
LUA_DIR: D:\Lua
# Python 2
PYTHON_VER: 27
PYTHON_VER_DOT: '2.7'
# Python 3
PYTHON3_VER: 38
PYTHON3_VER_DOT: '3.8'
# Other dependencies
# winpty
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
# Escape sequences
COL_RED: "\x1b[31m"
COL_GREEN: "\x1b[32m"
COL_YELLOW: "\x1b[33m"
COL_RESET: "\x1b[m"
strategy:
fail-fast: false
matrix:
toolchain: [msvc, mingw]
arch: [x64, x86]
features: [HUGE, NORMAL]
include:
- arch: x64
vcarch: amd64
warch: x64
bits: 64
msystem: MINGW64
cygreg: registry
pyreg: ""
- arch: x86
vcarch: x86
warch: ia32
bits: 32
msystem: MINGW32
cygreg: registry32
pyreg: "-32"
exclude:
- toolchain: msvc
arch: x64
features: NORMAL
- toolchain: mingw
arch: x86
features: NORMAL
steps:
- name: Initalize
id: init
shell: bash
run: |
git config --global core.autocrlf input
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@")
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
echo "PYTHON_DIR=$python_dir" >> $GITHUB_ENV
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
- uses: msys2/setup-msys2@v2
if: matrix.toolchain == 'mingw'
with:
msystem: ${{ matrix.msystem }}
release: false
- uses: actions/checkout@v2
- name: Create a list of download URLs
shell: cmd
run: |
type NUL > urls.txt
echo %LUA_RELEASE%>> urls.txt
echo %WINPTY_URL%>> urls.txt
- name: Cache downloaded files
uses: actions/cache@v2
with:
path: downloads
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }}
- name: Download dependencies
shell: cmd
run: |
path C:\Program Files\7-Zip;%path%
if not exist downloads mkdir downloads
echo %COL_GREEN%Download Lua%COL_RESET%
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
echo %COL_GREEN%Download winpty%COL_RESET%
call :downloadfile %WINPTY_URL% downloads\winpty.zip
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\
goto :eof
:downloadfile
:: call :downloadfile <URL> <localfile>
if not exist %2 (
curl -f -L %1 -o %2
)
if ERRORLEVEL 1 (
rem Retry once.
curl -f -L %1 -o %2 || exit 1
)
goto :eof
- name: Copy src directory to src2
shell: cmd
run: |
xcopy src src2\ /E > nul
- name: Build (MSVC)
if: matrix.toolchain == 'msvc'
shell: cmd
run: |
call "%VCVARSALL%" ${{ matrix.vcarch }}
cd src
:: Filter out the progress bar from the build log
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
if "${{ matrix.features }}"=="HUGE" (
nmake -nologo -f Make_mvc2.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR%
) else (
nmake -nologo -f Make_mvc2.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes
)
if not exist vim${{ matrix.bits }}.dll (
echo %COL_RED%Build failure.%COL_RESET%
exit 1
)
- name: Build (MinGW)
if: matrix.toolchain == 'mingw'
shell: msys2 {0}
run: |
cd src
if [ "${{ matrix.features }}" = "HUGE" ]; then
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
DYNAMIC_LUA=yes LUA=${LUA_DIR} \
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
STATIC_STDCPLUS=yes
else
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
STATIC_STDCPLUS=yes
fi
#- name: Prepare Artifact
# shell: cmd
# run: |
# mkdir artifacts
# copy src\*vim.exe artifacts
# copy src\vim*.dll artifacts
#
#- name: Upload Artifact
# uses: actions/upload-artifact@v1
# with:
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
# path: ./artifacts
- name: Test
shell: cmd
timeout-minutes: 20
run: |
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" ${{ matrix.vcarch }}
cd src
echo.
echo %COL_GREEN%vim version:%COL_RESET%
.\vim --version || exit 1
echo %COL_GREEN%Start testing vim in background.%COL_RESET%
start cmd /c "cd ..\src2\testdir & nmake -nologo -f Make_dos.mak VIMPROG=..\..\src\vim > nul & echo done>done.txt"
echo %COL_GREEN%Test gvim:%COL_RESET%
cd testdir
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1
cd ..
echo %COL_GREEN%Wait for vim tests to finish.%COL_RESET%
cd ..\src2\testdir
:: Wait about 10 minutes.
for /L %%i in (1,1,60) do (
if exist done.txt goto exitloop
timeout 10 > NUL 2>&1
if ERRORLEVEL 1 ping -n 11 localhost > NUL
)
set timeout=1
:exitloop
echo %COL_GREEN%Test results of vim:%COL_RESET%
if exist messages type messages
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
if "%timeout%"=="1" (
echo %COL_RED%Timed out.%COL_RESET%
exit 1
)

View File

@@ -31,15 +31,6 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@@ -172,56 +172,56 @@ script:
# Linux: 2 compilers on some of the environments + gcc on os390
jobs:
include:
- <<: *osx
name: tiny-nogui/clang
compiler: clang
env: *tiny-nogui
- <<: *osx
name: tiny-nogui/gcc
compiler: gcc
env: *tiny-nogui
- <<: *osx
<<: *osx-homebrew
name: huge/clang
compiler: clang
env: *osx-huge
- <<: *osx
<<: *osx-homebrew
name: huge/gcc
compiler: gcc
env: *osx-huge
- <<: *linux
name: tiny-nogui/clang
compiler: clang
env: *tiny-nogui
- <<: *linux
name: tiny-nogui/gcc
compiler: gcc
env: *tiny-nogui
- <<: *linux
name: tiny/clang
compiler: clang
env: *tiny
- <<: *linux
name: tiny/gcc
compiler: gcc
env: *tiny
- <<: *linux
name: small/gcc
compiler: gcc
env: *small
- <<: *linux
name: normal+shadow/clang
compiler: clang
env:
- *normal
- *shadowopt
- <<: *linux
name: normal+shadow/gcc
compiler: gcc
env:
- *normal
- *shadowopt
#- <<: *osx
# name: tiny-nogui/clang
# compiler: clang
# env: *tiny-nogui
#- <<: *osx
# name: tiny-nogui/gcc
# compiler: gcc
# env: *tiny-nogui
#- <<: *osx
# <<: *osx-homebrew
# name: huge/clang
# compiler: clang
# env: *osx-huge
#- <<: *osx
# <<: *osx-homebrew
# name: huge/gcc
# compiler: gcc
# env: *osx-huge
#- <<: *linux
# name: tiny-nogui/clang
# compiler: clang
# env: *tiny-nogui
#- <<: *linux
# name: tiny-nogui/gcc
# compiler: gcc
# env: *tiny-nogui
#- <<: *linux
# name: tiny/clang
# compiler: clang
# env: *tiny
#- <<: *linux
# name: tiny/gcc
# compiler: gcc
# env: *tiny
#- <<: *linux
# name: small/gcc
# compiler: gcc
# env: *small
#- <<: *linux
# name: normal+shadow/clang
# compiler: clang
# env:
# - *normal
# - *shadowopt
#- <<: *linux
# name: normal+shadow/gcc
# compiler: gcc
# env:
# - *normal
# - *shadowopt
- <<: *linux
arch: s390x
name: huge/gcc-s390x
@@ -234,57 +234,55 @@ jobs:
compiler: gcc
env: *linux-huge
services: []
- <<: *linux
name: huge+coverage/clang
compiler: clang
env:
- *linux-huge
- *coverage
# Clang cannot compile test_libvterm with "--coverage" flag.
- TEST=scripttests
after_success: *eval-coverage
- <<: *linux
name: huge+coverage/gcc
compiler: gcc
env:
- *linux-huge
- *coverage
after_success: *eval-coverage
- <<: *linux # ASAN
name: huge+asan/clang
compiler: clang-11
addons:
apt:
sources:
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
packages:
- *apt-packages
- clang-11
env:
- *linux-huge
- *asan
after_failure: *asan_symbolize
- <<: *linux
name: huge-testgui+coverage/gcc
compiler: gcc
env:
- *linux-huge
- *coverage
- TEST="-C src testgui"
after_success: *eval-coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env:
- *unittests
- *coverage
after_success: *eval-coverage
- <<: *linux
name: vimtags/gcc
compiler: gcc
env:
- *normal
- TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
#- <<: *linux
# name: huge+coverage/clang
# compiler: clang
# env:
# - *linux-huge
# - *coverage
# after_success: *eval-coverage
#- <<: *linux
# name: huge+coverage/gcc
# compiler: gcc
# env:
# - *linux-huge
# - *coverage
# after_success: *eval-coverage
#- <<: *linux # ASAN
# name: huge+asan/clang
# compiler: clang-11
# addons:
# apt:
# sources:
# - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main'
# key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
# packages:
# - *apt-packages
# - clang-11
# env:
# - *linux-huge
# - *asan
# after_failure: *asan_symbolize
#- <<: *linux
# name: huge-testgui+coverage/gcc
# compiler: gcc
# env:
# - *linux-huge
# - *coverage
# - TEST="-C src testgui"
# after_success: *eval-coverage
#- <<: *linux
# name: unittests+coverage/gcc
# compiler: gcc
# env:
# - *unittests
# - *coverage
# after_success: *eval-coverage
#- <<: *linux
# name: vimtags/gcc
# compiler: gcc
# env:
# - *normal
# - TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
# vim:set sts=2 sw=2 tw=0 et:

View File

@@ -3,20 +3,23 @@
# source files for all source archives
SRC_ALL = \
.gitignore \
.cirrus.yml \
.coveralls.yml \
.gitattributes \
.github/CODEOWNERS \
.github/workflows/ci.yml \
.github/workflows/codeql-analysis.yml \
.gitignore \
.hgignore \
.lgtm.yml \
.travis.yml \
.cirrus.yml \
.github/workflows/ci-windows.yaml \
.github/workflows/codeql-analysis.yml \
.github/CODEOWNERS \
appveyor.yml \
ci/appveyor.bat \
ci/build-snd-dummy.sh \
ci/config.mk*.sed \
ci/if_ver*.vim \
ci/load-snd-dummy.sh \
ci/config.mk*.sed \
ci/setup-xvfb.sh \
src/Make_all.mak \
src/README.md \
src/alloc.h \

View File

@@ -1,15 +1,8 @@
![Vim Logo](https://github.com/vim/vim/blob/master/runtime/vimlogo.gif)
[![Vim Logo](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org)
[![Travis Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim)
[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim)
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
[![Cirrus Build Status](https://api.cirrus-ci.com/github/vim/vim.svg)](https://cirrus-ci.com/github/vim/vim)
[![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master)
[![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim)
[![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/vim/vim.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/vim/vim/context:cpp)
[![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim)
[![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim)
For translations of this README see the end.
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22) [![Travis Build Status](https://travis-ci.com/vim/vim.svg?branch=master)](https://travis-ci.com/github/vim/vim) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim) [![Cirrus Build Status](https://api.cirrus-ci.com/github/vim/vim.svg)](https://cirrus-ci.com/github/vim/vim) [![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master) [![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim) [![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/vim/vim.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/vim/vim/context:cpp) [![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim) [![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim) [![Fossies codespell report](https://fossies.org/linux/test/vim-master.tar.gz/codespell.svg)](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html)
<sub>For translations of this README see the end.</sub>
## What is Vim? ##

View File

@@ -159,18 +159,18 @@ thing I have been thinking of is assignments without ":let". I often
make that mistake (after writing JavaScript especially). I think it is
possible, if we make local variables shadow commands. That should be OK,
if you shadow a command you want to use, just rename the variable.
Using "let" and "const" to declare a variable, like in JavaScript and
Using "var" and "const" to declare a variable, like in JavaScript and
TypeScript, can work:
``` vim
def MyFunction(arg: number): number
let local = 1
let todo = arg
var local = 1
var todo = arg
const ADD = 88
while todo > 0
local += ADD
--todo
todo -= 1
endwhile
return local
enddef
@@ -192,7 +192,7 @@ function and export it:
``` vim
vim9script " Vim9 script syntax used here
let local = 'local variable is not exported, script-local'
var local = 'local variable is not exported, script-local'
export def MyFunction() " exported function
...
@@ -248,10 +248,10 @@ END
return luaeval('sum')
endfunc
def VimNew()
let sum = 0
def VimNew(): number
var sum = 0
for i in range(1, 2999999)
let sum += i
sum += i
endfor
return sum
enddef
@@ -277,7 +277,7 @@ echo 'Vim new: ' .. reltimestr(reltime(start))
``` vim
def VimNew(): number
let totallen = 0
var totallen = 0
for i in range(1, 100000)
setline(i, ' ' .. getline(i))
totallen += len(getline(i))

19
ci/build-snd-dummy.sh Normal file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
set -eu
LINUX_VERSION=$(uname -r | cut -d. -f1-2)
LINUX_ARCHIVE_FILE=v${LINUX_VERSION}.tar.gz
LINUX_SOURCE_DIR=linux-${LINUX_VERSION}
mkdir -p "${TMPDIR}"
cd "${TMPDIR}"
wget -q "https://github.com/torvalds/linux/archive/${LINUX_ARCHIVE_FILE}"
tar -xf "${LINUX_ARCHIVE_FILE}" "${LINUX_SOURCE_DIR}/sound"
cd "${LINUX_SOURCE_DIR}/sound"
CC=gcc make -C "/lib/modules/$(uname -r)/build" M="${PWD}" CONFIG_SOUND=m CONFIG_SND=m CONFIG_SND_PCM=m CONFIG_SND_DUMMY=m modules
mkdir -p "${SND_DUMMY_DIR}"
cp soundcore.ko core/snd.ko core/snd-pcm.ko drivers/snd-dummy.ko "${SND_DUMMY_DIR}"

17
ci/setup-xvfb.sh Normal file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
set -e
apt-get install -y xvfb
cat <<EOT >/etc/systemd/system/xvfb.service
[Unit]
Description=X Virtual Frame Buffer Service
After=network.target
[Service]
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
[Install]
WantedBy=multi-user.target
EOT
systemctl enable xvfb.service
systemctl start xvfb.service

View File

@@ -1,13 +1,13 @@
" Vim completion script
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Apr 08
" Last Change: 2020 Nov 14
let s:cpo_save = &cpo
set cpo&vim
" This function is used for the 'omnifunc' option.
function! ccomplete#Complete(findstart, base)
func ccomplete#Complete(findstart, base)
if a:findstart
" Locate the start of the item, including ".", "->" and "[...]".
let line = getline('.')
@@ -244,7 +244,7 @@ function! ccomplete#Complete(findstart, base)
return map(res, 's:Tagline2item(v:val, brackets)')
endfunc
function! s:GetAddition(line, match, memarg, bracket)
func s:GetAddition(line, match, memarg, bracket)
" Guess if the item is an array.
if a:bracket && match(a:line, a:match . '\s*\[') > 0
return '['
@@ -260,13 +260,13 @@ function! s:GetAddition(line, match, memarg, bracket)
endif
endif
return ''
endfunction
endfunc
" Turn the tag info "val" into an item for completion.
" "val" is is an item in the list returned by taglist().
" If it is a variable we may add "." or "->". Don't do it for other types,
" such as a typedef, by not including the info that s:GetAddition() uses.
function! s:Tag2item(val)
func s:Tag2item(val)
let res = {'match': a:val['name']}
let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
@@ -289,10 +289,10 @@ function! s:Tag2item(val)
endif
return res
endfunction
endfunc
" Use all the items in dictionary for the "info" entry.
function! s:Dict2info(dict)
func s:Dict2info(dict)
let info = ''
for k in sort(keys(a:dict))
let info .= k . repeat(' ', 10 - len(k))
@@ -307,7 +307,7 @@ function! s:Dict2info(dict)
endfunc
" Parse a tag line and return a dictionary with items like taglist()
function! s:ParseTagline(line)
func s:ParseTagline(line)
let l = split(a:line, "\t")
let d = {}
if len(l) >= 3
@@ -334,12 +334,12 @@ function! s:ParseTagline(line)
endif
return d
endfunction
endfunc
" Turn a match item "val" into an item for completion.
" "val['match']" is the matching item.
" "val['tagline']" is the tagline in which the last part was found.
function! s:Tagline2item(val, brackets)
func s:Tagline2item(val, brackets)
let line = a:val['tagline']
let add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
let res = {'word': a:val['match'] . a:brackets . add }
@@ -377,10 +377,10 @@ function! s:Tagline2item(val, brackets)
let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))
endif
return res
endfunction
endfunc
" Turn a command from a tag line to something that is useful in the menu
function! s:Tagcmd2extra(cmd, name, fname)
func s:Tagcmd2extra(cmd, name, fname)
if a:cmd =~ '^/^'
" The command is a search command, useful to see what it is.
let x = matchstr(a:cmd, '^/^\s*\zs.*\ze$/')
@@ -395,13 +395,13 @@ function! s:Tagcmd2extra(cmd, name, fname)
let x = a:cmd . ' - ' . a:fname
endif
return x
endfunction
endfunc
" Find composing type in "lead" and match items[0] with it.
" Repeat this recursively for items[1], if it's there.
" When resolving typedefs "depth" is used to avoid infinite recursion.
" Return the list of matches.
function! s:Nextitem(lead, items, depth, all)
func s:Nextitem(lead, items, depth, all)
" Use the text up to the variable name and split it in tokens.
let tokens = split(a:lead, '\s\+\|\<')
@@ -485,7 +485,7 @@ function! s:Nextitem(lead, items, depth, all)
endfor
return res
endfunction
endfunc
" Search for members of structure "typename" in tags files.
@@ -493,7 +493,7 @@ endfunction
" Each match is a dictionary with "match" and "tagline" entries.
" When "all" is non-zero find all, otherwise just return 1 if there is any
" member.
function! s:StructMembers(typename, items, all)
func s:StructMembers(typename, items, all)
" Todo: What about local structures?
let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
if fnames == ''
@@ -586,12 +586,12 @@ function! s:StructMembers(typename, items, all)
" Failed to find anything.
return []
endfunction
endfunc
" For matching members, find matches for following items.
" When "all" is non-zero find all, otherwise just return 1 if there is any
" member.
function! s:SearchMembers(matches, items, all)
func s:SearchMembers(matches, items, all)
let res = []
for i in range(len(a:matches))
let typename = ''

View File

@@ -362,6 +362,10 @@ func dist#ft#FTinc()
setf aspvbs
elseif lines =~ "<?"
setf php
" Pascal supports // comments but they're vary rarely used for file
" headers so assume POV-Ray
elseif lines =~ '^\s*\%({\|(\*\)' || lines =~? s:ft_pascal_keywords
setf pascal
else
call dist#ft#FTasmsyntax()
if exists("b:asmsyntax")
@@ -408,6 +412,9 @@ func dist#ft#FTprogress_asm()
setf progress
endfunc
let s:ft_pascal_comments = '^\s*\%({\|(\*\|//\)'
let s:ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>'
func dist#ft#FTprogress_pascal()
if exists("g:filetype_p")
exe "setf " . g:filetype_p
@@ -419,8 +426,7 @@ func dist#ft#FTprogress_pascal()
let lnum = 1
while lnum <= 10 && lnum < line('$')
let line = getline(lnum)
if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
\ || line =~ '^\s*{' || line =~ '^\s*(\*'
if line =~ s:ft_pascal_comments || line =~? s:ft_pascal_keywords
setf pascal
return
elseif line !~ '^\s*$' || line =~ '^/\*'
@@ -433,6 +439,19 @@ func dist#ft#FTprogress_pascal()
setf progress
endfunc
func dist#ft#FTpp()
if exists("g:filetype_pp")
exe "setf " . g:filetype_pp
else
let line = getline(nextnonblank(1))
if line =~ s:ft_pascal_comments || line =~? s:ft_pascal_keywords
setf pascal
else
setf puppet
endif
endif
endfunc
func dist#ft#FTr()
let max = line("$") > 50 ? 50 : line("$")

View File

@@ -163,7 +163,7 @@ fun! tar#Browse(tarfile)
" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$'
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$'
if has("unix") && executable("file")
let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
else
@@ -174,6 +174,8 @@ fun! tar#Browse(tarfile)
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif filekind =~ "XZ"
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif filekind =~ "Zstandard"
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
else
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
endif
@@ -190,6 +192,8 @@ fun! tar#Browse(tarfile)
elseif tarfile =~# '\.\(xz\|txz\)$'
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.\(zst\|tzs\)$'
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
else
if tarfile =~ '^\s*-'
" A file name starting with a dash is taken as an option. Prepend ./ to avoid that.
@@ -302,6 +306,9 @@ fun! tar#Read(fname,mode)
elseif fname =~ '\.xz$' && executable("xzcat")
let decmp= "|xzcat"
let doro = 1
elseif fname =~ '\.zst$' && executable("zstdcat")
let decmp= "|zstdcat"
let doro = 1
else
let decmp=""
let doro = 0
@@ -331,6 +338,8 @@ fun! tar#Read(fname,mode)
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif filekind =~ "XZ"
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif filekind =~ "Zstandard"
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
else
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
endif
@@ -452,6 +461,10 @@ fun! tar#Write(fname)
let tarfile = substitute(tarfile,'\.xz','','e')
let compress= "xz -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">")
elseif tarfile =~# '\.zst'
call system("zstd --decompress -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.zst','','e')
let compress= "zstd -- ".shellescape(tarfile,0)
elseif tarfile =~# '\.lzma'
call system("lzma -d -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.lzma','','e')
@@ -676,6 +689,28 @@ fun! tar#Extract()
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tzs")
let extractcmd= substitute(extractcmd,"-","--zstd","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tar.zst")
let extractcmd= substitute(extractcmd,"-","--zstd","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
endif
" restore option

View File

@@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Jan 07, 2020
" Version: 30
" Version: 31
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v30"
let g:loaded_zip= "v31"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2 or later"
@@ -65,7 +65,7 @@ endif
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
" sanity check: ensure that the zipfile has "PK" as its first two letters
" sanity check: insure that the zipfile has "PK" as its first two letters
" (zipped files have a leading PK as a "magic cookie")
if !filereadable(a:zipfile) || readfile(a:zipfile, "", 1)[0] !~ '^PK'
exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)

View File

@@ -1,11 +1,11 @@
" Vim Compiler File
" Compiler: ocaml
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/rgrinberg/vim-ocaml
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2020 Mar 28 - Improved error format (Thomas Leonard)
" 2017 Nov 26 - Improved error format (Markus Mottl)
" 2013 Aug 27 - Added a new OCaml error format (Markus Mottl)
" 2013 Jun 30 - Initial version (Marc Weber)
"
" Marc Weber's comments:
" Setting makeprg doesn't make sense, because there is ocamlc, ocamlopt,
@@ -21,6 +21,7 @@
"
" So having it here makes people opt-in
if exists("current_compiler")
finish
endif
@@ -30,6 +31,7 @@ let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat =
\%EFile\ \"%f\"\\,\ lines\ %*\\d-%l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d\ %.%#,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,

23
runtime/compiler/zsh.vim Normal file
View File

@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Zsh
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Sep 6
if exists("current_compiler")
finish
endif
let current_compiler = "zsh"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=zsh\ -n\ --\ %:S
CompilerSet errorformat=%f:\ line\ %l:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.2. Last change: 2020 Sep 25
*autocmd.txt* For Vim version 8.2. Last change: 2020 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -70,6 +70,11 @@ effects. Be careful not to destroy your text.
The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand.
See |autocmd-buflocal|.
If the `:autocmd` is in Vim9 script (a script that starts with `:vim9script`
and in a `:def` function) then {cmd} will be executed as in Vim9
script. Thus this depends on where the autocmd is defined, not where it is
triggered.
Note: The ":autocmd" command can only be followed by another command when the
'|' appears before {cmd}. This works: >
:augroup mine | au! BufRead | augroup END
@@ -278,7 +283,7 @@ Name triggered by ~
|BufWinLeave| before a buffer is removed from a window
|BufUnload| before unloading a buffer
|BufHidden| just after a buffer has become hidden
|BufHidden| just before a buffer becomes hidden
|BufNew| just after creating a new buffer
|SwapExists| detected an existing swap file
@@ -301,6 +306,9 @@ Name triggered by ~
|VimLeavePre| before exiting Vim, before writing the viminfo file
|VimLeave| before exiting Vim, after writing the viminfo file
|VimSuspend| when suspending Vim
|VimResume| when Vim is resumed after being suspended
Terminal
|TerminalOpen| after a terminal buffer was created
|TerminalWinOpen| after a terminal buffer was created in a new window
@@ -551,12 +559,15 @@ CmdlineChanged After a change was made to the text in the
*CmdlineEnter*
CmdlineEnter After moving the cursor to the command line,
where the user can type a command or search
string.
string; including non-interactive use of ":"
in a mapping, but not when using |<Cmd>|.
<afile> is set to a single character,
indicating the type of command-line.
|cmdwin-char|
*CmdlineLeave*
CmdlineLeave Before leaving the command line.
CmdlineLeave Before leaving the command line; including
non-interactive use of ":" in a mapping, but
not when using |<Cmd>|.
Also when abandoning the command line, after
typing CTRL-C or <Esc>.
When the commands result in an error the
@@ -840,6 +851,8 @@ FuncUndefined When a user function is used but it isn't
when it's used. The pattern is matched
against the function name. Both <amatch> and
<afile> are set to the name of the function.
Not triggered when compiling a |Vim9|
function.
NOTE: When writing Vim scripts a better
alternative is to use an autoloaded function.
See |autoload-functions|.
@@ -881,9 +894,14 @@ InsertEnter Just before starting Insert mode. Also for
The cursor is restored afterwards. If you do
not want that set |v:char| to a non-empty
string.
*InsertLeavePre*
InsertLeavePre Just before leaving Insert mode. Also when
using CTRL-O |i_CTRL-O|. Be careful not to
change mode or use `:normal`, it will likely
cause trouble.
*InsertLeave*
InsertLeave When leaving Insert mode. Also when using
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
InsertLeave Just after leaving Insert mode. Also when
using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
*MenuPopup*
MenuPopup Just before showing the popup menu (under the
right mouse button). Useful for adjusting the
@@ -1202,6 +1220,7 @@ VimLeave Before exiting Vim, just after writing the
To detect an abnormal exit use |v:dying|.
When v:dying is 2 or more this event is not
triggered.
To get the exit code use |v:exiting|.
*VimLeavePre*
VimLeavePre Before exiting Vim, just before writing the
.viminfo file. This is executed only once,
@@ -1212,10 +1231,22 @@ VimLeavePre Before exiting Vim, just before writing the
< To detect an abnormal exit use |v:dying|.
When v:dying is 2 or more this event is not
triggered.
To get the exit code use |v:exiting|.
*VimResized*
VimResized After the Vim window was resized, thus 'lines'
and/or 'columns' changed. Not when starting
up though.
*VimResume*
VimResume When the Vim instance is resumed after being
suspended and |VimSuspend| was triggered.
Useful for triggering |:checktime| and ensure
the buffers content did not change while Vim
was suspended: >
:autocmd VimResume * checktime
< *VimSuspend*
VimSuspend When the Vim instance is suspended. Only when
CTRL-Z was typed inside Vim, not when the
SIGSTOP or SIGTSTP signal was sent to Vim.
*WinEnter*
WinEnter After entering another window. Not done for
the first window, when Vim has just started.

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 8.2. Last change: 2020 Aug 15
*change.txt* For Vim version 8.2. Last change: 2020 Nov 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1801,7 +1801,7 @@ Vim has a sorting function and a sorting command. The sorting function can be
found here: |sort()|, |uniq()|.
*:sor* *:sort*
:[range]sor[t][!] [b][f][i][n][o][r][u][x] [/{pattern}/]
:[range]sor[t][!] [b][f][i][l][n][o][r][u][x] [/{pattern}/]
Sort lines in [range]. When no range is given all
lines are sorted.
@@ -1809,6 +1809,16 @@ found here: |sort()|, |uniq()|.
With [i] case is ignored.
With [l] sort uses the current collation locale.
Implementation details: strcoll() is used to compare
strings. See |:language| to check or set the collation
locale. Example: >
:language collate en_US.UTF-8
:%sort l
< |v:collate| can also used to check the current locale.
Sorting using the locale typically ignores case.
This does not work properly on Mac.
Options [n][f][x][o][b] are mutually exclusive.
With [n] sorting is done on the first decimal number
@@ -1842,6 +1852,8 @@ found here: |sort()|, |uniq()|.
When /{pattern}/ is specified and there is no [r] flag
the text matched with {pattern} is skipped, so that
you sort on what comes after the match.
'ignorecase' applies to the pattern, but 'smartcase'
is not used.
Instead of the slash any non-letter can be used.
For example, to sort on the second comma-separated
field: >
@@ -1875,8 +1887,7 @@ found here: |sort()|, |uniq()|.
Note that using `:sort` with `:global` doesn't sort the matching lines, it's
quite useless.
The details about sorting depend on the library function used. There is no
guarantee that sorting obeys the current locale. You will have to try it out.
`:sort` does not use the current locale unless the l flag is used.
Vim does do a "stable" sort.
The sorting can be interrupted, but if you interrupt it too late in the

View File

@@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.2. Last change: 2020 Sep 03
*channel.txt* For Vim version 8.2. Last change: 2020 Oct 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -965,6 +965,10 @@ job_status({job}) *job_status()* *E916*
"fail", because a fork happens before the failure can be
detected.
If in Vim9 script a variable is declared with type "job" but
never assigned to, passing that variable to job_status()
returns "fail".
If an exit callback was set with the "exit_cb" option and the
job is now detected to be "dead" the callback will be invoked.
@@ -1288,7 +1292,7 @@ prompt. >
" Send the text to a shell with Enter appended.
call ch_sendraw(g:shell_job, a:text .. "\n")
endfunc
" Function handling output from the shell: Added above the prompt.
func GotOutput(channel, msg)
call append(line("$") - 1, "- " . a:msg)

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.2. Last change: 2020 Sep 14
*cmdline.txt* For Vim version 8.2. Last change: 2020 Dec 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -849,6 +849,16 @@ function |expand()|.
file name n. See |:oldfiles| or |v:oldfiles| to get the
number. *E809*
{only when compiled with the |+eval| and |+viminfo| features}
In |Vim9-script| # is used to start a comment, use %% for the alternate file
name:
% Is replaced with the current file name.
%% Is replaced with the alternate file name. *:_%%* *c_%%*
%%n (where n is a number) is replaced with *:_%%0* *:_%%n*
the file name of buffer n. "%%0" is the same as "%%". *c_%%n*
%%% Is replaced with all names in the argument *:_%%%* *c_%%%#*
list concatenated, separated by spaces.
%%<n (where n is a number > 0) is replaced with old *:_%%<* *c_%%<*
file name n.
Note that these, except "#<n", give the file name as it was typed. If an
absolute path is needed (when using the file name from a different directory),

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.2. Last change: 2020 Aug 17
*editing.txt* For Vim version 8.2. Last change: 2021 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -73,10 +73,14 @@ g CTRL-G Prints the current position of the cursor in five
ways: Column, Line, Word, Character and Byte. If the
number of Characters and Bytes is the same then the
Character position is omitted.
If there are characters in the line that take more
than one position on the screen (<Tab> or special
character), both the "real" column and the screen
column are shown, separated with a dash.
character), or characters using more than one byte per
column (characters above 0x7F when 'encoding' is
utf-8), both the byte column and the screen column are
shown, separated by a dash.
Also see the 'ruler' option and the |wordcount()|
function.
@@ -1010,7 +1014,7 @@ to write anyway add a '!' to the command.
*write-permissions*
When writing a new file the permissions are read-write. For unix the mask is
0666 with additionally umask applied. When writing a file that was read Vim
0o666 with additionally umask applied. When writing a file that was read Vim
will preserve the permissions, but clear the s-bit.
*write-readonly*
@@ -1029,7 +1033,7 @@ original file fails, there will be an error message telling you that you
lost the original file.
*DOS-format-write*
If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>. This is default
If the 'fileformat' is "dos", <CR><NL> is used for <EOL>. This is default
for Win32. On other systems the message "[dos format]" is shown to remind you
that an unusual <EOL> was used.
*Unix-format-write*
@@ -1415,8 +1419,8 @@ There are a few things to remember when editing binary files:
the file. It is also possible that you get an "out of memory" error when
reading the file.
- Make sure the 'binary' option is set BEFORE loading the
file. Otherwise both <CR> <NL> and <NL> are considered to end a line
and when the file is written the <NL> will be replaced with <CR> <NL>.
file. Otherwise both <CR><NL> and <NL> are considered to end a line
and when the file is written the <NL> will be replaced with <CR><NL>.
- <Nul> characters are shown on the screen as ^@. You can enter them with
"CTRL-V CTRL-@" or "CTRL-V 000"
- To insert a <NL> character in the file split a line. When writing the

File diff suppressed because it is too large Load Diff

View File

@@ -147,6 +147,7 @@ can be used to overrule the filetype used for certain extensions:
*.w g:filetype_w |ft-cweb-syntax|
*.i g:filetype_i |ft-progress-syntax|
*.p g:filetype_p |ft-pascal-syntax|
*.pp g:filetype_pp |ft-pascal-syntax|
*.sh g:bash_is_sh |ft-sh-syntax|
*.tex g:tex_flavor |ft-tex-plugin|
@@ -563,16 +564,15 @@ Local mappings:
MAN *ft-man-plugin* *:Man* *man.vim*
Displays a manual page in a nice way. Also see the user manual
|find-manpage|.
To start using the ":Man" command before any manual page was loaded, source
this script from your startup vimrc file: >
This plugin displays a manual page in a nice way. See |find-manpage| in the
user manual for more information.
To start using the |:Man| command before any manual page has been loaded,
source this script from your startup |vimrc| file: >
runtime ftplugin/man.vim
Options:
'iskeyword' the '.' character is added to be able to use CTRL-] on the
'iskeyword' The '.' character is added to support the use of CTRL-] on the
manual page name.
Commands:
@@ -582,24 +582,25 @@ Man {number} {name}
Global mapping:
<Leader>K Displays the manual page for the word under the cursor.
<Plug>ManPreGetPage idem, allows for using a mapping: >
nmap <F1> <Plug>ManPreGetPage<CR>
<Plug>ManPreGetPage
idem, allows for using a mapping: >
nmap <F1> <Plug>ManPreGetPage
Local mappings:
CTRL-] Jump to the manual page for the word under the cursor.
CTRL-T Jump back to the previous manual page.
q Same as ":quit"
q Same as the |:quit| command.
To use a vertical split instead of horizontal: >
let g:ft_man_open_mode = 'vert'
To use a new tab: >
let g:ft_man_open_mode = 'tab'
To enable folding use this: >
let g:ft_man_folding_enable = 1
If you do not like the default folding, use an autocommand to add your desired
To enable |folding|, use this: >
let g:ft_man_folding_enable = 1
If you do not like the default folding, use an |autocommand| to add your desired
folding style instead. For example: >
autocmd FileType man setlocal foldmethod=indent foldenable
autocmd FileType man setlocal foldmethod=indent foldenable
If you would like :Man {number} {name} to behave like man {number} {name} by
not running man {name} if no page is found, then use this: >
@@ -612,7 +613,7 @@ page in a Vim window: >
MANPAGER *manpager.vim*
The :Man command allows you to turn Vim into a manpager (that syntax highlights
The |:Man| command allows you to turn Vim into a manpager (that syntax highlights
manpages and follows linked manpages on hitting CTRL-]).
For bash,zsh,ksh or dash, add to the config file (.bashrc,.zshrc, ...)

View File

@@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 8.2. Last change: 2020 Jul 27
*helphelp.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -92,9 +92,9 @@ Help on help files *helphelp*
:help k| only
< Note that a space before the '|' is seen as part of
the ":help" argument.
You can also use <LF> or <CR> to separate the help
You can also use <NL> or <CR> to separate the help
command from a following command. You need to type
CTRL-V first to insert the <LF> or <CR>. Example: >
CTRL-V first to insert the <NL> or <CR>. Example: >
:help so<C-V><CR>only
:h[elp]! [subject] Like ":help", but in non-English help files prefer to
@@ -158,9 +158,31 @@ When no argument is given to |:help| the file given with the 'helpfile' option
will be opened. Otherwise the specified tag is searched for in all "doc/tags"
files in the directories specified in the 'runtimepath' option.
If you would like to open the help in the current window, see this tip:
|help-curwin|.
The initial height of the help window can be set with the 'helpheight' option
(default 20).
When the help buffer is created, several local options are set to make sure
the help text is displayed as it was intended:
'iskeyword' nearly all ASCII chars except ' ', '*', '"' and '|'
'foldmethod' "manual"
'tabstop' 8
'arabic' off
'binary' off
'buflisted' off
'cursorbind' off
'diff' off
'foldenable' off
'list' off
'modifiable' off
'number' off
'relativenumber' off
'rightleft' off
'scrollbind' off
'spell' off
Jump to specific subjects by using tags. This can be done in two ways:
- Use the "CTRL-]" command while standing on the name of a command or option.
This only works when the tag is a keyword. "<C-Leftmouse>" and

View File

@@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 8.2. Last change: 2019 Dec 07
*if_mzsch.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Sergey Khorev
@@ -43,7 +43,7 @@ To speed up the process, you might also want to use --disable-gracket and
{script}
{endmarker}
Execute inlined MzScheme script {script}.
Note: This command doesn't work if the MzScheme
Note: This command doesn't work when the MzScheme
feature wasn't compiled in. To avoid errors, see
|script-here|.

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 8.2. Last change: 2020 Oct 05
*index.txt* For Vim version 8.2. Last change: 2021 Jan 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1590,6 +1590,8 @@ tag command action ~
|:sign| :sig[n] manipulate signs
|:silent| :sil[ent] run a command silently
|:sleep| :sl[eep] do nothing for a few seconds
|:sleep!| :sl[eep]! do nothing for a few seconds, without the
cursor visible
|:slast| :sla[st] split window and go to last file in the
argument list
|:smagic| :sm[agic] :substitute with 'magic'

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.2. Last change: 2020 Sep 19
*insert.txt* For Vim version 8.2. Last change: 2020 Oct 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -312,6 +312,7 @@ If you enter a value of 10, it will end up in the file as a 0. The 10 is a
the buffer to a file, the <NL> character is translated into <Nul>. The <NL>
character is written at the end of each line. Thus if you want to insert a
<NL> character in a file you will have to make a line break.
Also see 'fileformat'.
*i_CTRL-X* *insert_expand*
CTRL-X enters a sub-mode where several commands can be used. Most of these

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.2. Last change: 2020 Aug 15
*intro.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -434,7 +434,7 @@ notation meaning equivalent decimal value(s) ~
<CSI> command sequence intro ALT-Esc 155 *<CSI>*
<xCSI> CSI when typed in the GUI *<xCSI>*
<EOL> end-of-line (can be <CR>, <LF> or <CR><LF>,
<EOL> end-of-line (can be <CR>, <NL> or <CR><NL>,
depends on system and 'fileformat') *<EOL>*
<Up> cursor-up *cursor-up* *cursor_up*
@@ -678,8 +678,8 @@ Normal mode from any other mode. This can be used to make sure Vim is in
Normal mode, without causing a beep like <Esc> would. However, this does not
work in Ex mode. When used after a command that takes an argument, such as
|f| or |m|, the timeout set with 'ttimeoutlen' applies.
When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode for only
one command, see |t_CTRL-\_CTRL-N|.
When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode until an
edit command is entered, see |t_CTRL-\_CTRL-N|.
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.2. Last change: 2020 Oct 07
*map.txt* For Vim version 8.2. Last change: 2020 Dec 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -271,7 +271,7 @@ For this reason the following is blocked:
- The |:normal| command.
- Moving the cursor is allowed, but it is restored afterwards.
If you want the mapping to do any of these let the returned characters do
that.
that, or use a |<Cmd>| mapping instead.
You can use getchar(), it consumes typeahead if there is any. E.g., if you
have these mappings: >
@@ -303,6 +303,43 @@ empty string, so that nothing is inserted.
Note that using 0x80 as a single byte before other text does not work, it will
be seen as a special key.
*<Cmd>* *:map-cmd*
The special text <Cmd> begins a "command mapping", it executes the command
directly without changing modes. Where you might use ":...<CR>" in the
{rhs} of a mapping, you can instead use "<Cmd>...<CR>".
Example: >
noremap x <Cmd>echo mode(1)<CR>
<
This is more flexible than `:<C-U>` in Visual and Operator-pending mode, or
`<C-O>:` in Insert mode, because the commands are executed directly in the
current mode, instead of always going to Normal mode. Visual mode is
preserved, so tricks with |gv| are not needed. Commands can be invoked
directly in Command-line mode (which would otherwise require timer hacks).
Example of using <Cmd> halfway Insert mode: >
nnoremap <F3> aText <Cmd>echo mode(1)<CR> Added<Esc>
Unlike <expr> mappings, there are no special restrictions on the <Cmd>
command: it is executed as if an (unrestricted) |autocommand| was invoked.
Note:
- Because <Cmd> avoids mode-changes it does not trigger |CmdlineEnter| and
|CmdlineLeave| events, because no user interaction is expected.
- For the same reason, |keycodes| like <C-R><C-W> are interpreted as plain,
unmapped keys.
- The command is not echo'ed, no need for <silent>.
- In Visual mode you can use `line('v')` and `col('v')` to get one end of the
Visual area, the cursor is at the other end.
- In Select mode, |:map| and |:vmap| command mappings are executed in
Visual mode. Use |:smap| to handle Select mode differently.
*E1135* *E1136*
<Cmd> commands must terminate, that is, they must be followed by <CR> in the
{rhs} of the mapping definition. |Command-line| mode is never entered.
*E1137*
<Cmd> commands can have only normal characters and cannot contain special
characters like function keys.
1.3 MAPPING AND MODES *:map-modes*
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
@@ -872,7 +909,7 @@ Insert mode to avoid every key with a modifier causing Insert mode to end.
1.12 MAPPING AN OPERATOR *:map-operator*
An operator is used before a {motion} command. To define your own operator
you must create mapping that first sets the 'operatorfunc' option and then
you must create a mapping that first sets the 'operatorfunc' option and then
invoke the |g@| operator. After the user types the {motion} command the
specified function will be called.
@@ -1204,9 +1241,9 @@ Otherwise, using "<SID>" outside of a script context is an error.
If you need to get the script number to use in a complicated script, you can
use this function: >
function s:SID()
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
endfun
func s:ScriptNumber()
return matchstr(expand('<SID>'), '<SNR>\zs\d\+\ze_')
endfunc
The "<SNR>" will be shown when listing functions and mappings. This is useful
to find out what they are defined to.
@@ -1284,15 +1321,15 @@ last defined. Example: >
See |:verbose-cmd| for more information.
*E174* *E182*
:com[mand][!] [{attr}...] {cmd} {rep}
:com[mand][!] [{attr}...] {cmd} {repl}
Define a user command. The name of the command is
{cmd} and its replacement text is {rep}. The command's
attributes (see below) are {attr}. If the command
already exists, an error is reported, unless a ! is
specified, in which case the command is redefined.
There is one exception: When sourcing a script again,
a command that was previously defined in that script
will be silently replaced.
{cmd} and its replacement text is {repl}. The
command's attributes (see below) are {attr}. If the
command already exists, an error is reported, unless a
! is specified, in which case the command is
redefined. There is one exception: When sourcing a
script again, a command that was previously defined in
that script will be silently replaced.
:delc[ommand] {cmd} *:delc* *:delcommand* *E184*
@@ -1502,11 +1539,11 @@ feature. Use the full name for new scripts.
Replacement text ~
The replacement text for a user defined command is scanned for special escape
sequences, using <...> notation. Escape sequences are replaced with values
from the entered command line, and all other text is copied unchanged. The
resulting string is executed as an Ex command. To avoid the replacement use
<lt> in place of the initial <. Thus to include "<bang>" literally use
The replacement text {repl} for a user defined command is scanned for special
escape sequences, using <...> notation. Escape sequences are replaced with
values from the entered command line, and all other text is copied unchanged.
The resulting string is executed as an Ex command. To avoid the replacement
use <lt> in place of the initial <. Thus to include "<bang>" literally use
"<lt>bang>".
The valid escape sequences are
@@ -1632,6 +1669,11 @@ errors and the "update" command to write modified buffers): >
This will invoke: >
:call Allargs("%s/foo/bar/ge|update")
<
If the command is defined in Vim9 script (a script that starts with
`:vim9script` and in a `:def` function) then {repl} will be executed as in Vim9
script. Thus this depends on where the command is defined, not where it is
used.
When defining a user command in a script, it will be able to call functions
local to the script and use mappings local to the script. When the user
invokes the user command, it will run in the context of the script it was

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 8.2. Last change: 2020 Sep 07
*message.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -794,6 +794,9 @@ and the screen is about to be redrawn:
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
Note that after an external command some special keys, such as the cursor
keys, may not work normally, because the terminal is still set to a state
for executing the external command.
-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This
works the same way as at the |more-prompt|. Only works when 'compatible'
is off and 'more' is on.

View File

@@ -1,4 +1,4 @@
*motion.txt* For Vim version 8.2. Last change: 2020 Aug 24
*motion.txt* For Vim version 8.2. Last change: 2020 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -190,11 +190,14 @@ l or *l*
*^*
^ To the first non-blank character of the line.
|exclusive| motion.
|exclusive| motion. Any count is ignored.
*$* *<End>* *<kEnd>*
$ or <End> To the end of the line. When a count is given also go
[count - 1] lines downward. |inclusive| motion.
[count - 1] lines downward, or as far is possible.
|inclusive| motion. If a count of 2 of larger is
given and the cursor is on the last line, that is an
error an the cursor doesn't move.
In Visual mode the cursor goes to just after the last
character in the line.
When 'virtualedit' is active, "$" may move the cursor

View File

@@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.2. Last change: 2020 Aug 15
*netbeans.txt* For Vim version 8.2. Last change: 2020 Nov 02
VIM REFERENCE MANUAL by Gordon Prieur et al.
@@ -562,9 +562,10 @@ setModtime time
saved directly by the Vim Controller.
New in version 2.3.
setReadOnly
Set a file as readonly
Implemented in version 2.3.
setReadOnly readonly
When the boolean argument "readonly" is "T" for True, mark the
buffer as readonly, when it is "F" for False, mark it as not
readonly. Implemented in version 2.3.
setStyle Not implemented.

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.2. Last change: 2020 Oct 10
*options.txt* For Vim version 8.2. Last change: 2021 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -438,7 +438,7 @@ the system, mostly it is something like 256 or 1024 characters.
CTRL-? CTRL-H
not CTRL-? CTRL-?
(CTRL-? is 0177 octal, 0x7f hex)
(CTRL-? is 0o177 octal, 0x7f hex)
If your delete key terminal code is wrong, but the
code for backspace is alright, you can put this in
@@ -2801,6 +2801,7 @@ A jump table for the options with a short description can be found at |Q_op|.
toggled each time the flag is given. See |complex-change|. See
also 'gdefault' option.
Switching this option on may break plugins!
This option is not used in |Vim9| script.
*'emoji'* *'emo'* *'noemoji'* *'noemo'*
'emoji' 'emo' boolean (default: on)
@@ -3121,7 +3122,7 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer
This gives the <EOL> of the current buffer, which is used for
reading/writing the buffer from/to a file:
dos <CR> <NL>
dos <CR><NL>
unix <NL>
mac <CR>
When "dos" is used, CTRL-Z at the end of a file is ignored.
@@ -3272,7 +3273,7 @@ A jump table for the options with a short description can be found at |Q_op|.
See the 'endofline' option.
*'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
'fkmap' 'fk' boolean (default off) *E198*
'fkmap' 'fk' boolean (default off)
global
{only available when compiled with the |+rightleft|
feature}
@@ -3570,6 +3571,7 @@ A jump table for the options with a short description can be found at |Q_op|.
DEPRECATED: Setting this option may break plugins that are not aware
of this option. Also, many users get confused that adding the /g flag
has the opposite effect of that it normally does.
This option is not used in |Vim9| script.
*'grepformat'* *'gfm'*
'grepformat' 'gfm' string (default "%f:%l:%m,%f:%l%m,%f %l%m")
@@ -4943,6 +4945,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Only switch it off when working with old Vi scripts. In any other
situation write patterns that work when 'magic' is on. Include "\M"
when you want to |/\M|.
In |Vim9| script the value of 'magic' is ignored, patterns behave like
it is always set.
*'makeef'* *'mef'*
'makeef' 'mef' string (default: "")
@@ -5217,7 +5221,7 @@ A jump table for the options with a short description can be found at |Q_op|.
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.
*'mouse'* *E538*
*'mouse'*
'mouse' string (default "", "a" for GUI and Win32,
set to "a" or "nvi" in |defaults.vim|)
global
@@ -6317,7 +6321,9 @@ A jump table for the options with a short description can be found at |Q_op|.
local to window
Number of lines to scroll with CTRL-U and CTRL-D commands. Will be
set to half the number of lines in the window when the window size
changes. If you give a count to the CTRL-U or CTRL-D command it will
changes. This may happen when enabling the |status-line| or
'tabline' option after setting the 'scroll' option.
If you give a count to the CTRL-U or CTRL-D command it will
be used as the new value for 'scroll'. Reset to half the window
height with ":set scroll=0".
@@ -7225,7 +7231,7 @@ A jump table for the options with a short description can be found at |Q_op|.
normal text. Each status line item is of the form:
%-0{minwid}.{maxwid}{item}
All fields except the {item} are optional. A single percent sign can
be given as "%%". Up to 80 items can be specified. *E541*
be given as "%%".
When the option starts with "%!" then it is used as an expression,
evaluated and the result is used as the option value. Example: >

View File

@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 8.2. Last change: 2020 Jun 07
*os_vms.txt* For Vim version 8.2. Last change: 2021 Jan 04
VIM REFERENCE MANUAL
@@ -72,7 +72,7 @@ See the file [.SRC]INSTALLVMS.TXT.
4. Problems *vms-problems*
The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
platforms with the DEC C compiler. It should work without big problems.
platforms with the DEC C compiler. It should work without major problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.
@@ -765,6 +765,15 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
9. VMS related changes *vms-changes*
Version 8.2
- make all changes needed for clean compile build of v8.2 on VMS on all platforms
- fix the call mkdir bug (vicente_polo@yahoo.es)
- test on VSI OpenVMS Alpha and Itanium platforms
- added LUA support
- added XPM support - Motif GUI with toolbar on all platforms
- XPM v3.4.11 libraries for IA64, AXP and VAX are added
- start integrating the new test scripts
Version 8.1
- make necessary changes to build v8.1 on VMS

View File

@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.2. Last change: 2020 Sep 01
*pattern.txt* For Vim version 8.2. Last change: 2021 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -361,8 +361,8 @@ For starters, read chapter 27 of the user manual |usr_27.txt|.
*/atom*
5. An atom can be one of a long list of items. Many atoms match one character
in the text. It is often an ordinary character or a character class.
Braces can be used to make a pattern into an atom. The "\z(\)" construct
is only for syntax highlighting.
Parentheses can be used to make a pattern into an atom. The "\z(\)"
construct is only for syntax highlighting.
atom ::= ordinary-atom |/ordinary-atom|
or \( pattern \) |/\(|
@@ -394,15 +394,19 @@ the pattern will not match. This is only useful when debugging Vim.
==============================================================================
3. Magic */magic*
Some characters in the pattern are taken literally. They match with the same
character in the text. When preceded with a backslash however, these
characters get a special meaning.
Some characters in the pattern, such as letters, are taken literally. They
match exactly the same character in the text. When preceded with a backslash
however, these characters may get a special meaning. For example, "a" matches
the letter "a", while "\a" matches any alphabetic character.
Other characters have a special meaning without a backslash. They need to be
preceded with a backslash to match literally.
preceded with a backslash to match literally. For example "." matches any
character while "\." matches a dot.
If a character is taken literally or not depends on the 'magic' option and the
items mentioned next.
items in the pattern mentioned next. The 'magic' option should always be set,
but it can be switched off for Vi compatibility. We mention the effect of
'nomagic' here for completeness, but we recommend against using that.
*/\m* */\M*
Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
ignoring the actual value of the 'magic' option.
@@ -411,30 +415,28 @@ Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
Use of "\v" means that after it, all ASCII characters except '0'-'9', 'a'-'z',
'A'-'Z' and '_' have special meaning: "very magic"
Use of "\V" means that after it, only a backslash and terminating character
(usually / or ?) have special meaning: "very nomagic"
Use of "\V" means that after it, only a backslash and the terminating
character (usually / or ?) have special meaning: "very nomagic"
Examples:
after: \v \m \M \V matches ~
'magic' 'nomagic'
$ $ $ \$ matches end-of-line
. . \. \. matches any character
a a a a literal 'a'
\a \a \a \a any alphabetic character
. . \. \. any character
\. \. . . literal dot
$ $ $ \$ end-of-line
* * \* \* any number of the previous atom
~ ~ \~ \~ latest substitute string
() \(\) \(\) \(\) grouping into an atom
| \| \| \| separating alternatives
\a \a \a \a alphabetic character
() \(\) \(\) \(\) group as an atom
| \| \| \| nothing: separates alternatives
\\ \\ \\ \\ literal backslash
\. \. . . literal dot
\{ { { { literal '{'
a a a a literal 'a'
\{ { { { literal curly brace
{only Vim supports \m, \M, \v and \V}
It is recommended to always keep the 'magic' option at the default setting,
which is 'magic'. This avoids portability problems. To make a pattern immune
to the 'magic' option being set or not, put "\m" or "\M" at the start of the
pattern.
If you want to you can make a pattern immune to the 'magic' option being set
or not by putting "\m" or "\M" at the start of the pattern.
==============================================================================
4. Overview of pattern items *pattern-overview*
@@ -676,7 +678,7 @@ overview.
Note that using "\&" works the same as using "\@=": "foo\&.." is the
same as "\(foo\)\@=..". But using "\&" is easier, you don't need the
braces.
parentheses.
*/\@!*
@@ -1069,8 +1071,8 @@ x A single character, with no special meaning, matches itself
[] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection*
\_[]
A collection. This is a sequence of characters enclosed in brackets.
It matches any single character in the collection.
A collection. This is a sequence of characters enclosed in square
brackets. It matches any single character in the collection.
Example matches ~
[xyz] any 'x', 'y' or 'z'
[a-zA-Z]$ any alphabetic character at the end of a line
@@ -1129,11 +1131,12 @@ x A single character, with no special meaning, matches itself
*[:ident:]* [:ident:] identifier character (same as "\i")
*[:keyword:]* [:keyword:] keyword character (same as "\k")
*[:fname:]* [:fname:] file name character (same as "\f")
The brackets in character class expressions are additional to the
brackets delimiting a collection. For example, the following is a
plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is,
a list of at least one character, each of which is either '-', '.',
'/', alphabetic, numeric, '_' or '~'.
The square brackets in character class expressions are additional to
the square brackets delimiting a collection. For example, the
following is a plausible pattern for a UNIX filename:
"[-./[:alnum:]_~]\+". That is, a list of at least one character,
each of which is either '-', '.', '/', alphabetic, numeric, '_' or
'~'.
These items only work for 8-bit characters, except [:lower:] and
[:upper:] also work for multibyte characters when using the new
regexp engine. See |two-engines|. In the future these items may
@@ -1176,7 +1179,7 @@ x A single character, with no special meaning, matches itself
\b <BS>
\n line break, see above |/[\n]|
\d123 decimal number of character
\o40 octal number of character up to 0377
\o40 octal number of character up to 0o377
\x20 hexadecimal number of character up to 0xff
\u20AC hex. number of multibyte character up to 0xffff
\U1234 hex. number of multibyte character up to 0xffffffff
@@ -1214,7 +1217,8 @@ x A single character, with no special meaning, matches itself
\%d123 Matches the character specified with a decimal number. Must be
followed by a non-digit.
\%o40 Matches the character specified with an octal number up to 0377.
Numbers below 040 must be followed by a non-octal digit or a non-digit.
Numbers below 0o40 must be followed by a non-octal digit or a
non-digit.
\%x2a Matches the character specified with up to two hexadecimal characters.
\%u20AC Matches the character specified with up to four hexadecimal
characters.

View File

@@ -154,4 +154,4 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
==============================================================================
vim:tw=78:ts=8:noet:ft=help:fdm=marker
vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2020 Sep 28
*popup.txt* For Vim version 8.2. Last change: 2020 Nov 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -101,7 +101,7 @@ CLOSING THE POPUP WINDOW *popup-close*
Normally the plugin that created the popup window is also in charge of closing
it. If somehow a popup hangs around, you can close all of them with: >
call popup_clear()
call popup_clear(1)
Some popups, such as notifications, close after a specified time. This can be
set with the "time" property on `popup_create()`.
Otherwise, a popup can be closed by clicking on the X in the top-right corner
@@ -309,11 +309,12 @@ popup_dialog({what}, {options}) *popup_dialog()*
popup_filter_menu({id}, {key}) *popup_filter_menu()*
Filter that can be used for a popup. These keys can be used:
j <Down> select item below
k <Up> select item above
j <Down> <C-N> select item below
k <Up> <C-P> select item above
<Space> <Enter> accept current selection
x Esc CTRL-C cancel the menu
Other keys are ignored.
Always returns |v:true|.
A match is set on that line to highlight it, see
|popup_menu()|.
@@ -587,8 +588,6 @@ properties. It is in one of four forms:
If you want to create a new buffer yourself use |bufadd()| and pass the buffer
number to popup_create().
It is not possible to use the buffer of a terminal window. *E278* You CAN
create a hidden terminal buffer and use that one in a popup window.
The second argument of |popup_create()| is a dictionary with options:
line Screen line where to position the popup. Can use a

View File

@@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.2. Last change: 2020 Oct 09
*repeat.txt* For Vim version 8.2. Last change: 2021 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -354,6 +354,14 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
Vim version, or update Vim to a newer version. See
|vimscript-version| for what changed between versions.
:vim9script [noclear] *:vim9* *:vim9script*
Marks a script file as containing |Vim9-script|
commands. Also see |vim9-namespace|.
Must be the first command in the file.
For [noclear] see |vim9-reload|.
Without the |+eval| feature this changes the syntax
for some commands.
*:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were
first sourced. The number is used for the script ID

View File

@@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.2. Last change: 2020 Aug 31
*sign.txt* For Vim version 8.2. Last change: 2020 Oct 28
VIM REFERENCE MANUAL by Gordon Prieur
@@ -81,6 +81,10 @@ on the same line, the attributes of the sign with the highest priority is used
independently of the sign group. The default priority for a sign is 10. The
priority is assigned at the time of placing a sign.
When two signs with the same priority are present, and one has an icon or text
in the signcolumn while the other has line highlighting, then both are
displayed.
When the line on which the sign is placed is deleted, the sign is moved to the
next line (or the last line of the buffer, if there is no next line). When
the delete is undone the sign does not move back.
@@ -458,11 +462,11 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
entries
The dictionary for each sign contains the following entries:
group sign group. Set to '' for the global group.
id identifier of the sign
lnum line number where the sign is placed
name name of the defined sign
priority sign priority
group sign group. Set to '' for the global group.
id identifier of the sign
lnum line number where the sign is placed
name name of the defined sign
priority sign priority
The returned signs in a buffer are ordered by their line
number and priority.

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.2. Last change: 2020 Sep 23
*starting.txt* For Vim version 8.2. Last change: 2020 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -996,7 +996,7 @@ version 5.0) are not recognized.
MS-Windows line separators ~
On MS-Windows, Vim assumes that all the vimrc files have <CR> <NL> pairs as
On MS-Windows, Vim assumes that all the vimrc files have <CR><NL> pairs as
line separators. This will give problems if you have a file with only <NL>s
and have a line like ":map xx yy^M". The trailing ^M will be ignored.

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.2. Last change: 2020 Aug 15
*syntax.txt* For Vim version 8.2. Last change: 2020 Dec 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -66,8 +66,8 @@ This command also sources the |menu.vim| script when the GUI is running or
will start soon. See |'go-M'| about avoiding that.
*:syn-on* *:syntax-on*
The `:syntax enable` command will keep your current color settings. This
allows using `:highlight` commands to set your preferred colors before or
The `:syntax enable` command will keep most of your current color settings.
This allows using `:highlight` commands to set your preferred colors before or
after using this command. If you want Vim to overrule your settings with the
defaults, use: >
:syntax on
@@ -2335,11 +2335,12 @@ http://papp.plan9.de.
PASCAL *pascal.vim* *ft-pascal-syntax*
Files matching "*.p" could be Progress or Pascal. If the automatic detection
doesn't work for you, or you don't edit Progress at all, use this in your
startup vimrc: >
Files matching "*.p" could be Progress or Pascal and those matching "*.pp"
could be Puppet or Pascal. If the automatic detection doesn't work for you,
or you only edit Pascal files, use this in your startup vimrc: >
:let filetype_p = "pascal"
:let filetype_p = "pascal"
:let filetype_pp = "pascal"
The Pascal syntax file has been extended to take into account some extensions
provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler.
@@ -3006,7 +3007,7 @@ vimrc file: >
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
*ft-posix-synax* *ft-dash-syntax*
*ft-posix-syntax* *ft-dash-syntax*
SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
This covers syntax highlighting for the older Unix (Bourne) sh, and newer
@@ -3183,6 +3184,7 @@ redrawing can become slow.
TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
*syntax-tex* *syntax-latex*
Tex Contents~
Tex: Want Syntax Folding? |tex-folding|
@@ -3199,6 +3201,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
Tex: Selective Conceal Mode |g:tex_conceal|
Tex: Controlling iskeyword |g:tex_isk|
Tex: Fine Subscript and Superscript Control |tex-supersub|
Tex: Match Check Control |tex-matchcheck|
*tex-folding* *g:tex_fold_enabled*
Tex: Want Syntax Folding? ~
@@ -3422,6 +3425,22 @@ syntax highlighting script handles this with the following logic:
< in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable
utf-8 glyphs appear.
*tex-matchcheck* *g:tex_matchcheck*
Tex: Match Check Control~
Sometimes one actually wants mismatched parentheses, square braces,
and or curly braces; for example, \text{(1,10] is a range from but
not including 1 to and including 10}. This wish, of course, conflicts
with the desire to provide delimiter mismatch detection. To
accommodate these conflicting goals, syntax/tex.vim provides >
g:tex_matchcheck = '[({[]'
< which is shown along with its default setting. So, if one doesn't
want [] and () to be checked for mismatches, try using >
let g:tex_matchcheck= '[{}]'
< If you don't want matching to occur inside bold and italicized
regions, >
let g:tex_excludematcher= 1
< will prevent the texMatcher group from being included in those regions.
TF *tf.vim* *ft-tf-syntax*
@@ -5305,6 +5324,12 @@ If you like Question highlighting for C comments, put this in your vimrc file: >
Without the "default" in the C syntax file, the highlighting would be
overruled when the syntax file is loaded.
To have a link survive `:highlight clear`, which is useful if you have
highlighting for a specific filetype and you want to keep it when selecting
another color scheme, put a command like this in the
"after/syntax/{filetype}.vim" file: >
highlight! default link cComment Question
==============================================================================
15. Cleaning up *:syn-clear* *E391*

View File

@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.2. Last change: 2020 Aug 10
*tabpage.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -195,8 +195,8 @@ gt *i_CTRL-<PageDown>* *i_<C-PageDown>*
:+2tabnext " go to the two next tab page
:1tabnext " go to the first tab page
:$tabnext " go to the last tab page
:tabnext # " go to the last accessed tab page
:tabnext $ " as above
:tabnext # " go to the last accessed tab page
:tabnext - " go to the previous tab page
:tabnext -1 " as above
:tabnext + " go to the next tab page
@@ -225,7 +225,7 @@ gT Go to the previous tab page. Wraps around from the first one
*:tabl* *:tablast*
:tabl[ast] Go to the last tab page.
*g<Tab>* *CTRL-W_g<Tab>* *<C-Tab>*
*g<Tab>* *CTRL-W_g<Tab>* *<C-Tab>*
g<Tab> Go to the last accessed tab page.
Other commands:
@@ -259,7 +259,7 @@ REORDERING TAB PAGES:
:tabmove " move the tab page to the last
:$tabmove " as above
:tabmove $ " as above
:tabmove # " move the tab page after the last accessed
:tabmove # " move the tab page after the last accessed
" tab page
:tabm[ove] +[N]

View File

@@ -1045,6 +1045,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
't_da' term.txt /*'t_da'*
't_db' term.txt /*'t_db'*
't_dl' term.txt /*'t_dl'*
't_fd' term.txt /*'t_fd'*
't_fe' term.txt /*'t_fe'*
't_fs' term.txt /*'t_fs'*
't_k1' term.txt /*'t_k1'*
't_k2' term.txt /*'t_k2'*
@@ -1783,6 +1785,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
09.2 usr_09.txt /*09.2*
09.3 usr_09.txt /*09.3*
09.4 usr_09.txt /*09.4*
0o eval.txt /*0o*
0x eval.txt /*0x*
10.1 usr_10.txt /*10.1*
10.2 usr_10.txt /*10.2*
10.3 usr_10.txt /*10.3*
@@ -1994,6 +1998,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:AdaTagFile ft_ada.txt /*:AdaTagFile*
:AdaTypes ft_ada.txt /*:AdaTypes*
:Arguments terminal.txt /*:Arguments*
:Asm terminal.txt /*:Asm*
:Break terminal.txt /*:Break*
:Cfilter quickfix.txt /*:Cfilter*
:Clear terminal.txt /*:Clear*
@@ -2072,6 +2077,11 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:_#< cmdline.txt /*:_#<*
:_#n cmdline.txt /*:_#n*
:_% cmdline.txt /*:_%*
:_%% cmdline.txt /*:_%%*
:_%%% cmdline.txt /*:_%%%*
:_%%0 cmdline.txt /*:_%%0*
:_%%< cmdline.txt /*:_%%<*
:_%%n cmdline.txt /*:_%%n*
:_%: cmdline.txt /*:_%:*
:_%< cmdline.txt /*:_%<*
:a insert.txt /*:a*
@@ -2125,6 +2135,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:bad windows.txt /*:bad*
:badd windows.txt /*:badd*
:ball windows.txt /*:ball*
:balt windows.txt /*:balt*
:bar cmdline.txt /*:bar*
:bd windows.txt /*:bd*
:bdel windows.txt /*:bdel*
@@ -2724,6 +2735,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:map-<unique> map.txt /*:map-<unique>*
:map-alt-keys map.txt /*:map-alt-keys*
:map-arguments map.txt /*:map-arguments*
:map-cmd map.txt /*:map-cmd*
:map-commands map.txt /*:map-commands*
:map-expression map.txt /*:map-expression*
:map-local map.txt /*:map-local*
@@ -3102,9 +3114,11 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:sip change.txt /*:sip*
:sir change.txt /*:sir*
:sl various.txt /*:sl*
:sl! various.txt /*:sl!*
:sla windows.txt /*:sla*
:slast windows.txt /*:slast*
:sleep various.txt /*:sleep*
:sleep! various.txt /*:sleep!*
:sm change.txt /*:sm*
:smagic change.txt /*:smagic*
:smap map.txt /*:smap*
@@ -3387,8 +3401,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:vie editing.txt /*:vie*
:view editing.txt /*:view*
:vim quickfix.txt /*:vim*
:vim9 vim9.txt /*:vim9*
:vim9script vim9.txt /*:vim9script*
:vim9 repeat.txt /*:vim9*
:vim9script repeat.txt /*:vim9script*
:vimgrep quickfix.txt /*:vimgrep*
:vimgrepa quickfix.txt /*:vimgrepa*
:vimgrepadd quickfix.txt /*:vimgrepadd*
@@ -3506,6 +3520,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<CSI> intro.txt /*<CSI>*
<Char-> map.txt /*<Char->*
<Char> map.txt /*<Char>*
<Cmd> map.txt /*<Cmd>*
<CursorHold> autocmd.txt /*<CursorHold>*
<D- intro.txt /*<D-*
<D-c> os_mac.txt /*<D-c>*
@@ -3923,6 +3938,9 @@ E1112 eval.txt /*E1112*
E1113 eval.txt /*E1113*
E112 eval.txt /*E112*
E113 eval.txt /*E113*
E1135 map.txt /*E1135*
E1136 map.txt /*E1136*
E1137 map.txt /*E1137*
E114 eval.txt /*E114*
E115 eval.txt /*E115*
E116 eval.txt /*E116*
@@ -4014,7 +4032,6 @@ E194 message.txt /*E194*
E195 starting.txt /*E195*
E196 various.txt /*E196*
E197 mlang.txt /*E197*
E198 options.txt /*E198*
E199 cmdline.txt /*E199*
E20 motion.txt /*E20*
E200 autocmd.txt /*E200*
@@ -4100,7 +4117,6 @@ E274 eval.txt /*E274*
E275 textprop.txt /*E275*
E276 eval.txt /*E276*
E277 remote.txt /*E277*
E278 popup.txt /*E278*
E279 terminal.txt /*E279*
E28 syntax.txt /*E28*
E280 if_tcl.txt /*E280*
@@ -4166,7 +4182,6 @@ E337 gui.txt /*E337*
E338 editing.txt /*E338*
E339 message.txt /*E339*
E34 various.txt /*E34*
E340 vi_diff.txt /*E340*
E341 message.txt /*E341*
E342 message.txt /*E342*
E343 options.txt /*E343*
@@ -4374,11 +4389,9 @@ E534 options.txt /*E534*
E535 options.txt /*E535*
E536 options.txt /*E536*
E537 options.txt /*E537*
E538 options.txt /*E538*
E539 options.txt /*E539*
E54 pattern.txt /*E54*
E540 options.txt /*E540*
E541 options.txt /*E541*
E542 options.txt /*E542*
E543 options.txt /*E543*
E544 options.txt /*E544*
@@ -4932,6 +4945,7 @@ InsertChange autocmd.txt /*InsertChange*
InsertCharPre autocmd.txt /*InsertCharPre*
InsertEnter autocmd.txt /*InsertEnter*
InsertLeave autocmd.txt /*InsertLeave*
InsertLeavePre autocmd.txt /*InsertLeavePre*
Integer eval.txt /*Integer*
J change.txt /*J*
Japanese mbyte.txt /*Japanese*
@@ -5145,10 +5159,14 @@ VIMINIT starting.txt /*VIMINIT*
VMS os_vms.txt /*VMS*
Vi intro.txt /*Vi*
View starting.txt /*View*
Vim9 vim9.txt /*Vim9*
Vim9-script vim9.txt /*Vim9-script*
VimEnter autocmd.txt /*VimEnter*
VimLeave autocmd.txt /*VimLeave*
VimLeavePre autocmd.txt /*VimLeavePre*
VimResized autocmd.txt /*VimResized*
VimResume autocmd.txt /*VimResume*
VimSuspend autocmd.txt /*VimSuspend*
Vimball-copyright pi_vimball.txt /*Vimball-copyright*
Virtual-Replace-mode insert.txt /*Virtual-Replace-mode*
VisVim if_ole.txt /*VisVim*
@@ -5554,6 +5572,10 @@ c_## cmdline.txt /*c_##*
c_#< cmdline.txt /*c_#<*
c_#n cmdline.txt /*c_#n*
c_% cmdline.txt /*c_%*
c_%% cmdline.txt /*c_%%*
c_%%%# cmdline.txt /*c_%%%#*
c_%%< cmdline.txt /*c_%%<*
c_%%n cmdline.txt /*c_%%n*
c_<BS> cmdline.txt /*c_<BS>*
c_<C-Left> cmdline.txt /*c_<C-Left>*
c_<C-R> cmdline.txt /*c_<C-R>*
@@ -5737,8 +5759,10 @@ characterwise motion.txt /*characterwise*
characterwise-register change.txt /*characterwise-register*
characterwise-visual visual.txt /*characterwise-visual*
charclass() eval.txt /*charclass()*
charcol() eval.txt /*charcol()*
charconvert_from-variable eval.txt /*charconvert_from-variable*
charconvert_to-variable eval.txt /*charconvert_to-variable*
charidx() eval.txt /*charidx()*
charity uganda.txt /*charity*
charset mbyte.txt /*charset*
charset-conversion mbyte.txt /*charset-conversion*
@@ -6249,6 +6273,7 @@ exepath() eval.txt /*exepath()*
exim starting.txt /*exim*
exists() eval.txt /*exists()*
exiting starting.txt /*exiting*
exiting-variable eval.txt /*exiting-variable*
exp() eval.txt /*exp()*
expand() eval.txt /*expand()*
expand-env options.txt /*expand-env*
@@ -6326,6 +6351,7 @@ expression-commands eval.txt /*expression-commands*
expression-syntax eval.txt /*expression-syntax*
exrc starting.txt /*exrc*
extend() eval.txt /*extend()*
extendnew() eval.txt /*extendnew()*
extension-removal cmdline.txt /*extension-removal*
extensions-improvements todo.txt /*extensions-improvements*
f motion.txt /*f*
@@ -6549,7 +6575,7 @@ ft-php-syntax syntax.txt /*ft-php-syntax*
ft-php3-syntax syntax.txt /*ft-php3-syntax*
ft-phtml-syntax syntax.txt /*ft-phtml-syntax*
ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax*
ft-posix-synax syntax.txt /*ft-posix-synax*
ft-posix-syntax syntax.txt /*ft-posix-syntax*
ft-postscr-syntax syntax.txt /*ft-postscr-syntax*
ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax*
ft-printcap-syntax syntax.txt /*ft-printcap-syntax*
@@ -6856,6 +6882,7 @@ g:tex_fast syntax.txt /*g:tex_fast*
g:tex_flavor filetype.txt /*g:tex_flavor*
g:tex_fold_enabled syntax.txt /*g:tex_fold_enabled*
g:tex_isk syntax.txt /*g:tex_isk*
g:tex_matchcheck syntax.txt /*g:tex_matchcheck*
g:tex_no_error syntax.txt /*g:tex_no_error*
g:tex_nospell syntax.txt /*g:tex_nospell*
g:tex_stylish syntax.txt /*g:tex_stylish*
@@ -6929,6 +6956,7 @@ getbufvar() eval.txt /*getbufvar()*
getchangelist() eval.txt /*getchangelist()*
getchar() eval.txt /*getchar()*
getcharmod() eval.txt /*getcharmod()*
getcharpos() eval.txt /*getcharpos()*
getcharsearch() eval.txt /*getcharsearch()*
getcmdline() eval.txt /*getcmdline()*
getcmdpos() eval.txt /*getcmdpos()*
@@ -6936,6 +6964,7 @@ getcmdtype() eval.txt /*getcmdtype()*
getcmdwintype() eval.txt /*getcmdwintype()*
getcompletion() eval.txt /*getcompletion()*
getcurpos() eval.txt /*getcurpos()*
getcursorcharpos() eval.txt /*getcursorcharpos()*
getcwd() eval.txt /*getcwd()*
getenv() eval.txt /*getenv()*
getfontname() eval.txt /*getfontname()*
@@ -7136,6 +7165,7 @@ hebrew hebrew.txt /*hebrew*
hebrew.txt hebrew.txt /*hebrew.txt*
help helphelp.txt /*help*
help-context help.txt /*help-context*
help-curwin tips.txt /*help-curwin*
help-summary usr_02.txt /*help-summary*
help-tags tags 1
help-translated helphelp.txt /*help-translated*
@@ -7745,6 +7775,7 @@ mapmode-s map.txt /*mapmode-s*
mapmode-t map.txt /*mapmode-t*
mapmode-v map.txt /*mapmode-v*
mapmode-x map.txt /*mapmode-x*
mapnew() eval.txt /*mapnew()*
mapping map.txt /*mapping*
mapping-functions usr_41.txt /*mapping-functions*
mapset() eval.txt /*mapset()*
@@ -8236,6 +8267,7 @@ notation intro.txt /*notation*
notepad gui_w32.txt /*notepad*
nr2char() eval.txt /*nr2char()*
nroff.vim syntax.txt /*nroff.vim*
null vim9.txt /*null*
null-variable eval.txt /*null-variable*
number_relativenumber options.txt /*number_relativenumber*
numbered-function eval.txt /*numbered-function*
@@ -8649,6 +8681,7 @@ read-in-close-cb channel.txt /*read-in-close-cb*
read-messages insert.txt /*read-messages*
read-only-share editing.txt /*read-only-share*
read-stdin version5.txt /*read-stdin*
readblob() eval.txt /*readblob()*
readdir() eval.txt /*readdir()*
readdirex() eval.txt /*readdirex()*
readfile() eval.txt /*readfile()*
@@ -8847,8 +8880,10 @@ set-spc-auto spell.txt /*set-spc-auto*
setbufline() eval.txt /*setbufline()*
setbufvar() eval.txt /*setbufvar()*
setcellwidths() eval.txt /*setcellwidths()*
setcharpos() eval.txt /*setcharpos()*
setcharsearch() eval.txt /*setcharsearch()*
setcmdpos() eval.txt /*setcmdpos()*
setcursorcharpos() eval.txt /*setcursorcharpos()*
setenv() eval.txt /*setenv()*
setfperm() eval.txt /*setfperm()*
setline() eval.txt /*setline()*
@@ -8912,6 +8947,7 @@ sinh() eval.txt /*sinh()*
skeleton autocmd.txt /*skeleton*
skip_defaults_vim starting.txt /*skip_defaults_vim*
slice eval.txt /*slice*
slice() eval.txt /*slice()*
slow-fast-terminal term.txt /*slow-fast-terminal*
slow-start starting.txt /*slow-start*
slow-terminal term.txt /*slow-terminal*
@@ -9167,8 +9203,10 @@ synstack() eval.txt /*synstack()*
syntax syntax.txt /*syntax*
syntax-functions usr_41.txt /*syntax-functions*
syntax-highlighting syntax.txt /*syntax-highlighting*
syntax-latex syntax.txt /*syntax-latex*
syntax-loading syntax.txt /*syntax-loading*
syntax-printing usr_06.txt /*syntax-printing*
syntax-tex syntax.txt /*syntax-tex*
syntax.txt syntax.txt /*syntax.txt*
syntax_cmd syntax.txt /*syntax_cmd*
sys-file-list help.txt /*sys-file-list*
@@ -9305,6 +9343,8 @@ t_f6 version4.txt /*t_f6*
t_f7 version4.txt /*t_f7*
t_f8 version4.txt /*t_f8*
t_f9 version4.txt /*t_f9*
t_fd term.txt /*t_fd*
t_fe term.txt /*t_fe*
t_float-variable eval.txt /*t_float-variable*
t_fs term.txt /*t_fs*
t_func-variable eval.txt /*t_func-variable*
@@ -9527,6 +9567,7 @@ termdebug-prompt terminal.txt /*termdebug-prompt*
termdebug-starting terminal.txt /*termdebug-starting*
termdebug-stepping terminal.txt /*termdebug-stepping*
termdebug-variables terminal.txt /*termdebug-variables*
termdebug_disasm_window terminal.txt /*termdebug_disasm_window*
termdebug_map_K terminal.txt /*termdebug_map_K*
termdebug_popup terminal.txt /*termdebug_popup*
termdebug_shortcuts terminal.txt /*termdebug_shortcuts*
@@ -9603,6 +9644,7 @@ tex-cole syntax.txt /*tex-cole*
tex-conceal syntax.txt /*tex-conceal*
tex-error syntax.txt /*tex-error*
tex-folding syntax.txt /*tex-folding*
tex-matchcheck syntax.txt /*tex-matchcheck*
tex-math syntax.txt /*tex-math*
tex-morecommands syntax.txt /*tex-morecommands*
tex-nospell syntax.txt /*tex-nospell*
@@ -9677,6 +9719,7 @@ type-inference vim9.txt /*type-inference*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
typecorr.txt usr_41.txt /*typecorr.txt*
typename() eval.txt /*typename()*
u undo.txt /*u*
uganda uganda.txt /*uganda*
uganda.txt uganda.txt /*uganda.txt*
@@ -9780,6 +9823,7 @@ v:errmsg eval.txt /*v:errmsg*
v:errors eval.txt /*v:errors*
v:event eval.txt /*v:event*
v:exception eval.txt /*v:exception*
v:exiting eval.txt /*v:exiting*
v:false eval.txt /*v:false*
v:fcs_choice eval.txt /*v:fcs_choice*
v:fcs_reason eval.txt /*v:fcs_reason*
@@ -10052,11 +10096,13 @@ vim9-export vim9.txt /*vim9-export*
vim9-final vim9.txt /*vim9-final*
vim9-gotchas vim9.txt /*vim9-gotchas*
vim9-import vim9.txt /*vim9-import*
vim9-namespace vim9.txt /*vim9-namespace*
vim9-rationale vim9.txt /*vim9-rationale*
vim9-reload vim9.txt /*vim9-reload*
vim9-scopes vim9.txt /*vim9-scopes*
vim9-script vim9.txt /*vim9-script*
vim9-script-intro usr_46.txt /*vim9-script-intro*
vim9-types vim9.txt /*vim9-types*
vim9-user-command vim9.txt /*vim9-user-command*
vim9.txt vim9.txt /*vim9.txt*
vim9script vim9.txt /*vim9script*
vim: options.txt /*vim:*
@@ -10274,6 +10320,7 @@ xterm-command-server term.txt /*xterm-command-server*
xterm-copy-paste term.txt /*xterm-copy-paste*
xterm-cursor-keys term.txt /*xterm-cursor-keys*
xterm-end-home-keys term.txt /*xterm-end-home-keys*
xterm-focus-event term.txt /*xterm-focus-event*
xterm-function-keys term.txt /*xterm-function-keys*
xterm-modifier-keys term.txt /*xterm-modifier-keys*
xterm-mouse options.txt /*xterm-mouse*

View File

@@ -1,4 +1,4 @@
*tagsrch.txt* For Vim version 8.2. Last change: 2020 Apr 19
*tagsrch.txt* For Vim version 8.2. Last change: 2020 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -556,7 +556,7 @@ The first format is a normal tag, which is completely compatible with Vi. It
is the only format produced by traditional ctags implementations. This is
often used for functions that are global, also referenced in other files.
The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR>
The lines in the tags file can end in <NL> or <CR><NL>. On the Macintosh <CR>
also works. The <CR> and <NL> characters can never appear inside a line.
The second format is new. It includes additional information in optional

View File

@@ -1,4 +1,4 @@
*term.txt* For Vim version 8.2. Last change: 2020 Apr 12
*term.txt* For Vim version 8.2. Last change: 2021 Jan 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -217,6 +217,10 @@ it's different from Alt). They can be combined. Examples: >
Another speciality about these codes is that they are not overwritten by
another code. That is to avoid that the codes obtained from xterm directly
|t_RV| overwrite them.
Another special value is a termcap entry ending in "@;*X". This is for cursor
keys, which either use "CSI X" or "CSI 1 ; modifier X". Thus the "@"
stands for either "1" if a modifier follows, or nothing.
*xterm-scroll-region*
The default termcap entry for xterm on Sun and other platforms does not
contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm
@@ -369,6 +373,10 @@ Added by Vim (there are no standard codes for these):
t_Ri restore icon text from stack *t_Ri* *'t_Ri'*
t_TE end of "raw" mode *t_TE* *'t_TE'*
t_TI put terminal into "raw" mode *t_TI* *'t_TI'*
t_fd disable focus-event tracking *t_fd* *'t_fd'*
|xterm-focus-event|
t_fe enable focus-event tracking *t_fe* *'t_fe'*
|xterm-focus-event|
Some codes have a start, middle and end part. The start and end are defined
by the termcap option, the middle part is text.
@@ -542,6 +550,16 @@ And run "xrdb -merge .Xresources" to make it effective. You can check the
value with the context menu (right mouse button while CTRL key is pressed),
there should be a tick at allow-window-ops.
*xterm-focus-event*
Some terminals including xterm support the focus event tracking feature.
If this feature is enabled by the 't_fe' sequence, special key sequences are
sent from the terminal to Vim every time the terminal gains or loses focus.
Vim fires focus events (|FocusGained|/|FocusLost|) by handling them accordingly.
Focus event tracking is disabled by a 't_fd' sequence when exiting "raw" mode.
If you would like to disable this feature, add the following to your .vimrc:
`set t_fd=`
`set t_fe=`
*termcap-colors*
Note about colors: The 't_Co' option tells Vim the number of colors available.
When it is non-zero, the 't_AB' and 't_AF' options are used to set the color.

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.2. Last change: 2020 Sep 04
*terminal.txt* For Vim version 8.2. Last change: 2021 Jan 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -123,12 +123,14 @@ use |:tlmenu| instead of |:tmenu|.
*options-in-terminal*
After opening the terminal window and setting 'buftype' to "terminal" the
TerminalOpen autocommand event is triggered. This makes it possible to set
options specifically for the window and buffer. Example: >
au TerminalOpen * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
The <abuf> is set to the terminal buffer, but if there is no window (hidden
terminal) then setting options will happen in the wrong buffer, therefore the
check for &buftype in the example.
|TerminalWinOpen| autocommand event is triggered. This makes it possible to set
options specifically for the terminal window and buffer. Example: >
au TerminalWinOpen * setlocal bufhidden=hide
There is also the |TerminalOpen| event, but this may be triggered for a hidden
terminal, and the current window and buffer may not be for the new terminal.
You need to use <abuf>, which is set to the terminal buffer. Example: >
au TerminalOpen * call setbufvar(+expand('<abuf>'), '&colorcolumn', 123)
Mouse events (click and drag) are passed to the terminal. Mouse move events
are only passed when Vim itself is receiving them. For a terminal that is
@@ -503,6 +505,8 @@ term_dumpdiff({filename}, {filename} [, {options}])
a different attribute
+ missing position in first file
- missing position in second file
> cursor position in first file, not in second
< cursor position in second file, not in first
Using the "s" key the top and bottom parts are swapped. This
makes it easy to spot a difference.
@@ -738,6 +742,9 @@ term_setapi({buf}, {expr}) *term_setapi()*
The default is "Tapi_". When {expr} is an empty string then
no |terminal-api| function can be used for {buf}.
When used as a method the base is used for {buf}: >
GetBufnr()->term_setapi({expr})
term_setansicolors({buf}, {colors}) *term_setansicolors()*
Set the ANSI color palette used by terminal {buf}.
{colors} must be a List of 16 valid color names or hexadecimal
@@ -1323,6 +1330,8 @@ Other commands ~
*:Program* jump to the window with the running program
*:Source* jump to the window with the source code, create it if there
isn't one
*:Asm* jump to the window with the disassembly, create it if there
isn't one
Prompt mode ~
@@ -1345,6 +1354,12 @@ Prompt mode can be used even when the |+terminal| feature is present with: >
The K key is normally mapped to :Evaluate. If you do not want this use: >
let g:termdebug_map_K = 0
<
*termdebug_disasm_window*
If you want the Asm window shown by default, set this to 1. Setting to
any value greater than 1 will set the Asm window height to that value: >
let g:termdebug_disasm_window = 15
<
Communication ~
*termdebug-communication*
@@ -1411,16 +1426,18 @@ If you don't want this then disable it with: >
Vim window width *termdebug_wide*
To change the width of the Vim window when debugging starts, and use a
vertical split: >
let g:termdebug_wide = 163
This will set &columns to 163 when `:Termdebug` is used. The value is restored
when quitting the debugger.
If g:termdebug_wide is set and &columns is already larger than
g:termdebug_wide then a vertical split will be used without changing &columns.
Set it to 1 to get a vertical split without every changing &columns (useful
for when the terminal can't be resized by Vim).
To change the width of the Vim window when debugging starts and use a vertical
split: >
let g:termdebug_wide = 163
This will set 'columns' to 163 when `:Termdebug` is used. The value is
restored when quitting the debugger.
If g:termdebug_wide is set and 'columns' is already a greater value, then a
vertical split will be used without modifying 'columns'.
Set g:termdebug_wide to 1 to use a vertical split without ever changing
'columns'. This is useful when the terminal can't be resized by Vim.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*testing.txt* For Vim version 8.2. Last change: 2020 Sep 06
*testing.txt* For Vim version 8.2. Last change: 2020 Dec 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -308,8 +308,11 @@ assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
first reported error: >
assert_fails('cmd', ['E987:.*expected bool'])
< The second pattern, if present, is matched against the last
reported error. To only match the last error use an empty
string for the first error: >
reported error.
If there is only one error then both patterns must match. This
can be used to check that there is only one error.
To only match the last error use an empty string for the first
error: >
assert_fails('cmd', ['', 'E987:'])
<
If {msg} is empty then it is not used. Do this to get the

View File

@@ -1,4 +1,4 @@
*textprop.txt* For Vim version 8.2. Last change: 2020 Mar 05
*textprop.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -101,7 +101,7 @@ Manipulating text property types:
prop_type_add({name}, {props}) define a new property type
prop_type_change({name}, {props}) change an existing property type
prop_type_delete({name} [, {props}]) delete a property type
prop_type_get([{name} [, {props}]]) get property type values
prop_type_get({name} [, {props}]) get property type values
prop_type_list([{props}]) get list of property types
@@ -291,7 +291,7 @@ prop_type_delete({name} [, {props}]) *prop_type_delete()*
Can also be used as a |method|: >
GetPropName()->prop_type_delete()
prop_type_get([{name} [, {props}]]) *prop_type_get()*
prop_type_get({name} [, {props}]) *prop_type_get()*
Returns the properties of property type {name}. This is a
dictionary with the same fields as was given to
prop_type_add().

View File

@@ -1,4 +1,4 @@
*tips.txt* For Vim version 8.2. Last change: 2009 Nov 07
*tips.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,6 +30,7 @@ Executing shell commands in a window |shell-window|
Hex editing |hex-editing|
Using <> notation in autocommands |autocmd-<>|
Highlighting matching parens |match-parens|
Opening help in the current window |help-curwin|
==============================================================================
Editing C programs *C-editing*
@@ -530,4 +531,28 @@ A slightly more advanced version is used in the |matchparen| plugin.
autocmd InsertEnter * match none
<
==============================================================================
Opening help in the current window *help-curwin*
By default, help is displayed in a split window. If you prefer it opens in
the current window, try this custom `:HelpCurwin` command:
>
command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
let s:did_open_help = v:false
function s:HelpCurwin(subject) abort
let mods = 'silent noautocmd keepalt'
if !s:did_open_help
execute mods .. ' help'
execute mods .. ' helpclose'
let s:did_open_help = v:true
endif
if !getcompletion(a:subject, 'help')->empty()
execute mods .. ' edit ' .. &helpfile
endif
return 'help ' .. a:subject
endfunction
<
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2020 Oct 10
*todo.txt* For Vim version 8.2. Last change: 2021 Jan 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,81 +38,62 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
Making everything work:
- If a function is defined in a block it may need to keep the block-locals,
like a compiled closure.
- Fix memory leaks in test_vim9_assign, remove "if 0"
- Fix memory leaks in test_vim9_script
- Closure arguments should be more strict, like any function call?
- Remove v:disallow_let
- Recognize call to assert_fails() and execute it in the function context?
Won't work if the command itself fails, not an expression failure:
assert_fails("unknown", "E99:")
Use try/catch is complicated:
let did_catch = false
try
unknown
catch
assert_caught('E99:')
did_catch = true
endtry
assert_true('did_catch')
Add a new command perhaps:
assertfail
unknown
endassertfail E99:.*unknown
- Make map() give an error if the resulting type is wrong.
Add mapnew() or mapcopy() to create a new List/Dict for the result, which
can have a different value type.
- Error message for "'yes && 0" is "using String as a Number", should be "using
String as a Bool".
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- In autocmd: use legacy syntax, not whatever the current script uses?
- need to check type when a declaration specifies a type: #6507
let nr: number = 'asdf'
- Make sure that in vim9script a function call without namespace only finds
the script-local function, not a global one.
- Make sure that where a callback is expected a function can be used (without
quotes). E.g. sort() and map(). Also at the script level.
- assignment to more complex lval: list[1][2][3] = 8
Also "list[0] += value". test in Test_assign_dict_unknown_type().
- ":put" with ISN_PUT does not handle range correctly, e.g. ":$-2put".
Add command to parse range at runtime?
- When defining an :autocmd or :command, how to specify using Vim9 syntax?
- always do this when defined in a Vim9 script
- add some command modifier.
- For an :autocmd and :command argument, if a following line starts with "|"
append it. It's like line continuation. (#6702)
- Implement "export {one, two three}".
- ISN_CHECKTYPE could use check_argtype()
- give error for variable name:
let p = function('NoSuchFunc')
- If a :def function is called with a function reference, compile it to get
the function type.
def Filter(x: string, Cond: func(string): bool)
Filter(x, { v -> v =~ '^b' })
test_autocmd failure in Windows: Something wrong with system()?
Vim9 - Make everything work:
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
- Expand `=expr` in :mkspell
- Test that a function defined inside a :def function is local to that
function, g: functions can be defined and script-local functions cannot be
defined.
- Unlet with range: "unlet list[a : b]"
- Implement "export {one, two three}".
- ISN_CHECKTYPE could use check_argtype()
- Using a script variable inside a :def function doesn't work if the variable
is inside a block, see Test_nested_function(). Should it work?
- give error for variable name:
let p = function('NoSuchFunc')
- Make closures work better:
- Create closure in a loop. Need to make a list of them.
- If a :def function is called with a function reference, compile it to get
the function type.
def Filter(x: string, Cond: func(string): bool)
Filter(x, (v) => v =~ '^b')
- Make inline function work, to be used as a funcref:
let Ref = (arg: type): type => {
statement
return expr
}
let Ref = (arg: type) => {
statement
statement
}
- Does this work already: can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
- For builtin functions using tv_get_string*() use check_for_string() to be
more strict about the argument type.
- Possible memory leaks in test_vim9_func
- Implement :lockvar and :unlockvar. How about local variables? Perhaps only
allow this for global variables. Use :final or :const otherwise.
- Allow function names that will be script-local to start with lower case
letter? Or also require names with s: prefix to use upper case?
Also apply this function references "var ref = SomeFunc"
- Support passing v:none to use the default argument value. (#6504)
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- Check many more builtin function arguments at compile time.
- make 0 == 'string' fail on the script level, like inside :def.
- Check that when using a user function name without prefix, it does not find
a global function. Prefixing g: is required.
- Compile: for [key, value] in items(map)
- Assignment to dict doesn't work:
let ret: dict<string> = #{}
ret[i] = string(i)
- Appending to dict item doesn't work:
let d[i] ..= value
- Need the equivalent of get_lval() and set_var_lval() to implement assignment
to nested list and dict members.
- Assignment to dict doesn't work:
let ret: dict<string> = #{}
ret[i] = string(i)
- Appending to dict item doesn't work:
let d[i] ..= value
- Using ".." at script level doesn't convert arguments to a string.
- Compile replacement of :s command: s/pat/\=expr/
- Compile redir to local variable: var_redir_start().
- Implement type cast at the script level.
- Compile builtin functions that access local variables:
islocked()
- When evaluating constants for script variables, some functions could work:
@@ -120,56 +101,61 @@ Making everything work:
- Implement "as Name" in "import Item as Name from ..."
- Implement using imported items at script level from "import * as X" in
eval_variable(). Should pass the ".xxx" that follows and return that.
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
- Make closures work:
- Create closure in a loop. Need to make a list of them.
- Make "++nr" work. "++g:count" doesn't work, thinks it is a range.
- Reload: How to make sure type of script function hasn't changed?
- expandcmd() with `=expr` in filename uses legacy expression.
- eval_expr() in ex_cexpr()
- eval_expr() call in dbg_parsearg() and debuggy_find()
- has() is compiled as a constant, but some checks are dynamic.
Check for dynamic values, such as "gui_running".
- Implement command modifiers, such as "silent". (#6530)
New syntax and functionality:
Improve error checking:
- "echo Func()" is an error if Func() does not return anything.
Also:
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
- compile "skip" argument of searchpair()
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
- give an error for "echo Func()" if Func() does not return anything.
- Using "windo echo expr" does not accept a line break inside "expr" (in a
:def function and at script level in a not executed block). #7681
Once Vim9 is stable:
- Change the help to prefer Vim9 syntax where appropriate
- Use Vim9 for runtime files.
PR #7497 for autoload/ccomplete.vim
- Add all the error numbers in a good place in documentation.
- In the generic eval docs, point out the Vim9 syntax where it differs.
Also for Vim9:
- better implementation for partial and tests for that.
- Make "g:imported = Export.exported" work in Vim9 script.
- Make Foo.Bar() work to call the dict function. (#5676)
- Error in any command in "vim9script" aborts sourcing.
- Find a way to test expressions in legacy and Vim9 script without duplication
- Test each level of expressions properly, with type checking
- Test try/catch and throw better, also nested.
Test return inside try/finally jumps to finally and then returns.
- Test: Function declared inside a :def function is local, disappears at the
end of the function. Unless g: is used, just like with variables.
- implement :type
- import type declaration?
Test that return inside try/finally jumps to finally and then returns.
- Test that a function defined inside a :def function is local to that
function, g: functions can be defined and script-local functions cannot be
defined.
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
Give an error if compilation fails. (#7625)
Use the location where the option was set for deciding whether it's to be
evaluated in Vim9 script context.
- implement :type; import type declaration.
- implement enum; import enum.
- Future work: See |vim9-classes|
- implement enum
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varags idx)
Define the keywords and commands to make sure it will be backwards
compatible.
- Make debugging work - at least per function. Need to recompile a function
to step through it line-by-line? Evaluate the stack and variables on the
stack?
- Make profiling work - Add ISN_PROFILE instructions after every line?
- List commands when 'verbose' is set or :verbose is used.
Further improvements:
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
- Make inline function work, to be used as a funcref:
let ref = def(arg: type): rettype
body
enddef
Further Vim9 improvements, possibly after launch:
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
- compile get_lambda_tv() in popup_add_timeout()
- inline call to map() and filter()
- compile "skip" argument of searchpair()
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varargs idx)
Popup windows:
- Add a flag to make a popup window focusable?
@@ -177,7 +163,6 @@ Popup windows:
current window.
? - switch between current window and all popup windows
Esc in popup window goes back to previous current window
- Cursor not updated before a redraw, making it jump. (#5943)
- Add a termcap entry for changing the cursor when it goes under the popup and
back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?)
- With terminal in popup, allow for popup_hide() to temporarily hide it.?
@@ -207,6 +192,8 @@ Text properties:
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
- Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
- Should we let the textprop highlight overrule other (e.g. diff) highlight if
the priority is above a certain value? (#7392)
- See remarks at top of src/textprop.c
'incsearch' with :s:
@@ -241,6 +228,7 @@ Terminal debugger:
with another Vim instance.
Terminal emulator window:
- Can escape a terminal popup with win_gotoid(), should be an error
- No support for underline color, t_8u.
- When in terminal-Normal mode when the job finishes, the cursor jumps to the
end but the window is not updated. This only happens when typing "a".
@@ -293,15 +281,23 @@ Have another look at the implementation.
Patch to implement the vimtutor with a plugin: #6414
Was originally written by Felipe Morales.
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)
Patch to find Python dll using registry key. (#7540)
Remove SPACE_IN_FILENAME ? It is only used for completion.
Patch to use collation based sorting. (Christian Brabandt, #6229)
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
Patch for blockwise paste reporting changes: #6660.
Missing filetype test for bashrc, PKGBUILD, etc.
Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co
changes.
@@ -309,15 +305,24 @@ Add an option to start_timer() to return from the input loop with K_IGNORE.
This is useful e.g. when a popup was created that disables mappings, we need
to return from vgetc() to make this happen. #7011
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
Expanding <mods> should put the tab number from cmdmod.tab before "tab".
Any way to convert "$" back by using a special value? (#6901)
Can we detect true color support? https://gist.github.com/XVilka/8346728
Try setting a color then request the current color, like using t_u7.
Regexp to search for duplicate lines does not work correctly:
/\(^.*\n\)\1 (Chris Morgan, #6239)
Changing a capturing group to non-capturing changes the result: #7607
:echo matchstr('aaa bbb', '\(.\{-1,}\>\)\|.*')
aaa
:echo matchstr('aaa bbb', '\%(.\{-1,}\>\)\|.*')
aaa bbb
Should also work without any group:
:echo matchstr('aaa bbb', '.\{-1,}\>\|.*')
aaa bbb (should be aaa)
Check out PR #543 (Roland Puntaier).
Patch for multibyte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
@@ -340,6 +345,9 @@ autocommands for the buffer lifecycle:
BufIsRenamed (after buffer ID gets another name)
The buffer list and windows are locked, no changes possible
Add a ModeChanged autocommand that has an argument indicating the old and new
mode, as what's returned from mode(). Also used for switching Terminal mode.
Matchparen doesn't remove highlight after undo. (#7054)
Is OK when syntax HL is active.
@@ -351,8 +359,6 @@ work.
Using "au!" after "filetype on" is a bit slow. Can the matching of
autocommands be made faster? (#7056)
Valgrind warns for uninitialized values in f_term_dumpwrite().
Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
replace this:
let left = GetLeftFunc()
@@ -364,6 +370,8 @@ Patch to make :q work with local arglist. (Christian Brabandt, #6286)
Why does Test_invalid_sid() not work in the GUI?
":pedit" ignores the local working directory when 'pvp' is set (#7267)
Lua: updating wrong buffer when using newly created, unloaded buffer.
(#6539)
@@ -400,9 +408,6 @@ corruption. (#6631)
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
Regexp to search for duplicate lines does not work correctly:
/\(^.*\n\)\1 (Chris Morgan, #6239)
With bash ":make" does not set v:shell_error. Possible solution: set
'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994
@@ -433,9 +438,6 @@ Another spurious BufDelete. (Dani Dickstein, #5701)
Wrong error when using local arglist. (Harm te Hennepe, #6133)
Request to support <Cmd> in mappings, similar to how Neovim does this.
(Daniel Hahler, #4784)
Test loose_clipboard() by selecting text before suspending.
Undo puts cursor in wrong line after "cG<Esc>" undo.
@@ -455,12 +457,8 @@ Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
May 20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
Also #4994: window-local options not always restored, related to using :badd.
Also #5326: netrw buffers are not restored.
Alternate file is not set in the session file. Use setwintabvar("@#") ?
(#6714)
When 'backupdir' has a path ending in double slash (meaning: use full path of
the file) combined with 'patchmode' the file name is wrong. (#5791)
@@ -478,9 +476,6 @@ Help for ":argadd fname" says that if "fname" is already in the argument list
that entry is used. But instead it's always added. (#6210)
Add flag AL_FIND_ADD, if there is one argument find it in the list.
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)
behavior of i_CTRl-R_CTRL-R differs from documentation. (Paul Desmond Parker,
#5771)
@@ -555,14 +550,6 @@ when "qq" is mapped and after the first "q" the mouse is moved outside of the
gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the
input buffer. (#5302)
xterm should be able to pass focus changes to Vim, so that Vim can check for
buffers that changed. Perhaps in misc.c, function selectwindow().
Xterm 224 supports it!
Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
Saito, 2013 Apr 24) Update 2016 Aug 12.
Also see issue #609.
We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.
:buffer completion does not escape "+" properly and results in a regexp error.
(#5467)
@@ -595,10 +582,6 @@ Patch to have text objects defined by arbitrary single characters. (Daniel
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
":2resize +10" uses size of the current window, adds 10 and applies it to
window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg,
#5443)
Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use
t:diffexpr_option t:diffopt_option? (#4782)
@@ -688,6 +671,38 @@ Session file contains absolute paths when "curdir" is removed form
'sessionoptions', making it impossible to have a session with a relative path.
(#4450)
Session file only contains local option values for buffers that are in a
window, not other buffers. (#7532)
Script generated by :mksession does not work well if there are windows with
modified buffers
change "silent only" into "silent only!"
change "edit fname" of first buffer to "hide edit fname"
skip "badd fname" if "fname" is already in the buffer list
remove remark about unloading buffers from documentation
When session file has name in argument list but the buffer was deleted, the
buffer is not deleted when using the session file. (#1393)
Should add the buffer in hidden state.
When a session file is created and there are "nofile" buffers, these are not
filled. Need to trigger BufReadCmd autocommands. Also handle deleting the
initial empty buffer better. (ZyX, 2015 March 8)
Setting the spell file in a session only reads the local additions, not the
normal spell file. (Enno Nagel, 2014 Mar 29)
Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
(Felix Kater, 2009 Mar 3)
Something wrong with session that has "cd" commands and "badd", in such a way
that Vim doesn't find the edited file in the buffer list, causing the
ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
Likonen, March 19)
When using a timer callback vgetc_busy is reset, allowing for using input().
But in a channel callback this does not happen. We need to do something
similar to check_due_timer(). Also see #3809.
@@ -794,6 +809,7 @@ Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
Add buffer argument to undotree(). (#4001)
Memory leak in test_debugger
Using uninitialized value in test_crypt (can't explain why).
Memory leak in test_terminal_fail
TODO: be able to run all parts of test_alot with valgrind separately
@@ -876,13 +892,6 @@ when adding a sign for every quickfix entry. (#4557)
Win32 key codes are messy. Mike Williams tried to fix that, but now old
mappings no longer work. Create a new terminal for the better solution?
Script generated by :mksession does not work well if there are windows with
modified buffers
change "silent only" into "silent only!"
change "edit fname" of first buffer to "hide edit fname"
skip "badd fname" if "fname" is already in the buffer list
remove remark about unloading buffers from documentation
Compiler warnings (geeknik, 2017 Oct 26):
- signed integer overflow in do_sub() (#2249)
- signed integer overflow in get_address() (#2248)
@@ -924,9 +933,6 @@ Try out background make plugin:
or asyncmake:
https://github.com/yegappan/asyncmake
Add a ModeChanged autocommand that has an argument indicating the old and new
mode, as what's returned from mode(). Also used for switching Terminal mode.
Add an option with file patterns, to be used when unloading a buffer: If there
is a match, remove entries for the buffer from marks, jumplist, etc. To be
used for git temp files.
@@ -1088,7 +1094,7 @@ neovim #7431)
Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
Nov 21)
When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
When t_Co is changed from termresponse, the OptionSet autocommand event isn't
triggered. Use the code from the end of set_num_option() in
set_color_count().
@@ -1147,7 +1153,7 @@ Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14,
#2089) Patch with possible solution by Björn Linse.
The change list index is local to a buffer, but it doesn't make sense using it
for another buffer. (lacygoll) Copy w_changelistidx to wininfo_S and back.
for another buffer. (lacygoill) Copy w_changelistidx to wininfo_S and back.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
@@ -1254,10 +1260,6 @@ Json string with trailing \u should be an error. (Lcd)
import can't be used in define option when include matches too.
(Romain Lafourcade, 2017 Jun 18, #1519)
When session file has name in argument list but the buffer was deleted, the
buffer is not deleted when using the session file. (#1393)
Should add the buffer in hidden state.
Wrong diff highlighting with three files. (2016 Oct 20, #1186)
Also get E749 on exit.
Another example in #1309
@@ -1313,9 +1315,6 @@ Once .exe with updated installer is available: Add remark to download page
about /S and /D options (Ken Takata, 2016 Apr 13)
Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases
Problem passing non-UTF-8 strings to Python 3. (Björn Linse, 2016 Sep 11,
#1053) With patch, does it work?
":sbr" docs state it respects 'switchbuf', but "vsplit" does not cause a
vertical split. (Haldean Brown, 2017 Mar 1)
@@ -1373,6 +1372,9 @@ no longer support.
sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
4#1038)
sort() does not use 'smartcase' for the skip pattern, even though 'ignorecase'
is used. (Filipe Brandenburger, #7322)
+channel:
- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
@@ -1716,10 +1718,6 @@ Doesn't work completely (Dominique Orban)
Patch to add a "literal" argument to bufnr(). (Olaf Dabrunz, 2015 Aug 4)
When a session file is created and there are "nofile" buffers, these are not
filled. Need to trigger BufReadCmd autocommands. Also handle deleting the
initial empty buffer better. (ZyX, 2015 March 8)
Extended file attributes lost on write (backupcopy=no). Issue 306.
Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
@@ -1848,9 +1846,6 @@ Out of scope:
- Development work on plugins (although diff with distributed version would be
useful).
Setting the spell file in a session only reads the local additions, not the
normal spell file. (Enno Nagel, 2014 Mar 29)
When typing the first character of a command, e.g. "f", then using a menu, the
menu item doesn't work. Clear typeahead when using a menu?
@@ -2318,7 +2313,7 @@ Additional info by Dominique Pelle. (also on 2010 Apr 10)
CreateFile and CreateFileW are used without sharing, filewritable() fails when
the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
FILE_SHARE_WRITE in mch_access()? (Philippe Vaucher, 2010 Nov 2)
Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
Looks like only bash can do it. (Yakov Lerner)
@@ -2499,9 +2494,6 @@ opening/closing window causes other window with 'winfixheight' to change
height. Also happens when there is another window in the frame, if it's not
very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
(Felix Kater, 2009 Mar 3)
Session file generates error upon loading, cause by --remote-silent-tab.
(7tommm (ytommm) 2010 Nov 24)
@@ -2561,11 +2553,6 @@ still delete them. Also convert all buffer file names?
"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
(Raul Coronado, 2009 Nov 2)
Something wrong with session that has "cd" commands and "badd", in such a way
that Vim doesn't find the edited file in the buffer list, causing the
ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer
probably causes this.
@@ -2762,9 +2749,6 @@ New PHP syntax file, use it? (Peter Hodge)
":echoe" in catch block stops processing, while this doesn't happen outside of
a catch block. (ZyX, 2011 Jun 2)
'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
Likonen, March 19)
Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some
other way to test buffer-local autocommands.
@@ -3858,10 +3842,6 @@ Macintosh:
on the status line (caused by 'winheight'). Select window on button up,
instead of on button down.
8 Dragging the status line doesn't scroll but redraw.
9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for
reaching the end of the available buffer.
Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006
May 14)
8 When performing incremental search, should abort searching as soon as a
character is typed.
8 When the value of $MAKE contains a path, configure can't handle this.
@@ -4039,8 +4019,6 @@ Documentation:
- if it can be undone (u/CTRL-R) and redone (.)
- how it works for folded lines
- how it works with multibyte characters
9 In change.txt, remark about Javadoc isn't right. Right alignment would
work too.
8 Spread the windows commands over the other files. For example, ":stag"
should be with ":tag". Cross-link with tags to avoid too much double
text.
@@ -5497,7 +5475,7 @@ Mappings and Abbreviations:
not the <Space>.
8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
(?) work.
7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
7 Add <0x8f> (hex), <0o33> (octal) and <123> (decimal) to <> notation?
7 When someone tries to unmap with a trailing space, and it fails, try
unmapping without the trailing space. Helps for ":unmap xx | unmap yy".
6 Context-sensitive abbreviations: Specify syntax group(s) in which the
@@ -5958,7 +5936,7 @@ Writing files:
losing the original when writing twice. (Slootman)
7 On non-Unix machines, also overwrite the original file in some situations
(file system full, it's a link on an NFS partition).
7 When editing a file, check that it has been change outside of Vim more
7 When editing a file, check that it has been changed outside of Vim more
often, not only when writing over it. E.g., at the time the swap file is
flushed. Or every ten seconds or so (use the time of day, check it before
waiting for a character to be typed).

View File

@@ -1,4 +1,4 @@
*undo.txt* For Vim version 8.2. Last change: 2019 Dec 07
*undo.txt* For Vim version 8.2. Last change: 2020 Nov 30
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -65,9 +65,9 @@ with the redo command. If you make a new change after the undo command,
the redo will not be possible anymore.
'u' included, the Vi-compatible way:
The undo command undoes the previous change, and also the previous undo command.
The redo command repeats the previous undo command. It does NOT repeat a
change command, use "." for that.
The undo command undoes the previous change, and also the previous undo
command. The redo command repeats the previous undo command. It does NOT
repeat a change command, use "." for that.
Examples Vim way Vi-compatible way ~
"uu" two times undo no-op
@@ -103,7 +103,7 @@ change again. But you can do something like this: >
:undojoin | delete
After this an "u" command will undo the delete command and the previous
After this a "u" command will undo the delete command and the previous
change.
To do the opposite, break a change into two undo blocks, in Insert mode use
@@ -392,7 +392,7 @@ back the text of three deletes ago with '"3P'.
*redo-register*
If you want to get back more than one part of deleted text, you can use a
special feature of the repeat command ".". It will increase the number of the
register used. So if you first do ""1P", the following "." will result in a
register used. So if you first do '"1P', the following "." will result in a
'"2P'. Repeating this will result in all numbered registers being inserted.
Example: If you deleted text with 'dd....' it can be restored with

View File

@@ -50,7 +50,7 @@ which moves to the previous end of a word:
This is a line with example text ~
<----<----x---->------------>
2ge ge e we
2ge ge e 2e
If you are at the last word of a line, the "w" command will take you to the
first word in the next line. Thus you can use this to move through a

View File

@@ -1,4 +1,4 @@
*usr_11.txt* For Vim version 8.2. Last change: 2020 Jul 08
*usr_11.txt* For Vim version 8.2. Last change: 2020 Oct 25
VIM USER MANUAL - by Bram Moolenaar
@@ -294,7 +294,7 @@ If you really don't want to see this message, you can add the 'A' flag to the
'shortmess' option. But it's very unusual that you need this.
For remarks about encryption and the swap file, see |:recover-crypt|.
For programatic access to the swap file, see |swapinfo()|.
For programmatic access to the swap file, see |swapinfo()|.
==============================================================================
*11.4* Further reading

View File

@@ -1,4 +1,4 @@
*usr_23.txt* For Vim version 8.2. Last change: 2006 Apr 24
*usr_23.txt* For Vim version 8.2. Last change: 2020 Dec 19
VIM USER MANUAL - by Bram Moolenaar
@@ -28,9 +28,9 @@ start a new line. One to move the carriage back to the first position
(carriage return, <CR>), another to move the paper up (line feed, <LF>).
When computers came out, storage was expensive. Some people decided that
they did not need two characters for end-of-line. The UNIX people decided
they could use <Line Feed> only for end-of-line. The Apple people
standardized on <CR>. The Microsoft Windows folks decided to keep
the old <CR><LF>.
they could use <New Line> or <NL> only for end-of-line. The Apple people
standardized on <CR>. The Microsoft Windows folks decided to keep the old
<CR><NL> (we use <NL> for line feed in the help text).
This means that if you try to move a file from one system to another, you
have line-break problems. The Vim editor automatically recognizes the
different file formats and handles things properly behind your back.
@@ -55,20 +55,20 @@ which format you have, execute the following command: >
The three names that Vim uses are:
unix <LF>
dos <CR><LF>
unix <NL>
dos <CR><NL>
mac <CR>
USING THE MAC FORMAT
On Unix, <LF> is used to break a line. It's not unusual to have a <CR>
On Unix, <NL> is used to break a line. It's not unusual to have a <CR>
character halfway a line. Incidentally, this happens quite often in Vi (and
Vim) scripts.
On the Macintosh, where <CR> is the line break character, it's possible to
have a <LF> character halfway a line.
have a <NL> character halfway a line.
The result is that it's not possible to be 100% sure whether a file
containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore,
containing both <CR> and <NL> characters is a Mac or a Unix file. Therefore,
Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check
for this type of file. To check for this format anyway, add "mac" to
'fileformats': >

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.2. Last change: 2020 Aug 30
*usr_41.txt* For Vim version 8.2. Last change: 2021 Jan 13
VIM USER MANUAL - by Bram Moolenaar
@@ -122,14 +122,14 @@ starts with a zero. "017" is decimal 15. A binary number starts with "0b" or
decimal number, it will be interpreted as an octal number!
The ":echo" command always prints decimal numbers. Example: >
:echo 0x7f 036
:echo 0x7f 0o36
< 127 30 ~
A number is made negative with a minus sign. This also works for hexadecimal,
octal and binary numbers. A minus sign is also used for subtraction. Compare
this with the previous example: >
:echo 0x7f -036
:echo 0x7f -0o36
< 97 ~
White space in an expression is ignored. However, it's recommended to use it
@@ -137,7 +137,7 @@ for separating items, to make the expression easier to read. For example, to
avoid the confusion with a negative number above, put a space between the
minus sign and the following number: >
:echo 0x7f - 036
:echo 0x7f - 0o36
==============================================================================
*41.2* Variables
@@ -619,12 +619,15 @@ String manipulation: *string-functions*
submatch() get a specific match in ":s" and substitute()
strpart() get part of a string using byte index
strcharpart() get part of a string using char index
slice() take a slice of a string, using char index in
Vim9 script
strgetchar() get character from a string using char index
expand() expand special keywords
expandcmd() expand a command like done for `:edit`
iconv() convert text from one encoding to another
byteidx() byte index of a character in a string
byteidxcomp() like byteidx() but count composing characters
charidx() character index of a byte in a string
repeat() repeat a string multiple times
eval() evaluate a string expression
execute() execute an Ex command and get the output
@@ -639,12 +642,15 @@ List manipulation: *list-functions*
insert() insert an item somewhere in a List
add() append an item to a List
extend() append a List to a List
extendnew() make a new List and append items
remove() remove one or more items from a List
copy() make a shallow copy of a List
deepcopy() make a full copy of a List
filter() remove selected items from a List
map() change each List item
mapnew() make a new List with changed items
reduce() reduce a List to a value
slice() take a slice of a List
sort() sort a List
reverse() reverse the order of a List
uniq() remove copies of repeated adjacent items
@@ -667,8 +673,10 @@ Dictionary manipulation: *dict-functions*
empty() check if Dictionary is empty
remove() remove an entry from a Dictionary
extend() add entries from one Dictionary to another
extendnew() make a new Dictionary and append items
filter() remove selected entries from a Dictionary
map() change each Dictionary entry
mapnew() make a new Dictionary with changed items
keys() get List of Dictionary keys
values() get List of Dictionary values
items() get List of Dictionary key-value pairs
@@ -715,7 +723,8 @@ Other computation: *bitwise-function*
srand() initialize seed used by rand()
Variables: *var-functions*
type() type of a variable
type() type of a variable as a number
typename() type of a variable as text
islocked() check if a variable is locked
funcref() get a Funcref for a function reference
function() get a Funcref for a function name
@@ -750,6 +759,11 @@ Cursor and mark position: *cursor-functions* *mark-functions*
screenchar() get character code at a screen line/row
screenchars() get character codes at a screen line/row
screenstring() get string of characters at a screen line/row
charcol() character number of the cursor or a mark
getcharpos() get character position of cursor, mark, etc.
setcharpos() set character position of cursor, mark, etc.
getcursorcharpos() get character position of the cursor
setcursorcharpos() set character position of the cursor
Working with text in the current buffer: *text-functions*
getline() get a line or list of lines from the buffer
@@ -809,6 +823,7 @@ System functions and manipulation of files:
setenv() set an environment variable
hostname() name of the system
readfile() read a file into a List of lines
readblob() read a file into a Blob
readdir() get a List of file names in a directory
readdirex() get a List of file information in a directory
writefile() write a List of lines or Blob into a file
@@ -1763,7 +1778,7 @@ Here is a summary of items that apply to Vim scripts. They are also mentioned
elsewhere, but form a nice checklist.
The end-of-line character depends on the system. For Unix a single <NL>
character is used. For MS-Windows and the like, <CR><LF> is used. This is
character is used. For MS-Windows and the like, <CR><NL> is used. This is
important when using mappings that end in a <CR>. See |:source_crnl|.

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 8.2. Last change: 2020 Aug 20
*various.txt* For Vim version 8.2. Last change: 2021 Jan 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -142,15 +142,17 @@ g8 Print the hex values of the bytes used in the
quit
<
*:z* *E144*
:{range}z[+-^.=]{count} Display several lines of text surrounding the line
specified with {range}, or around the current line
if there is no {range}. If there is a {count}, that's
how many lines you'll see; if there is no {count} and
only one window then twice the value of the 'scroll'
option is used, otherwise the current window height
minus 3 is used.
:[range]z[+-^.=][count] Display several lines of text surrounding the line
specified with [range], or around the current line
if there is no [range].
If there is a {count} the 'window' option is set to
If there is a [count], that's how many lines you'll
see; if there is no [count] and only one window then
twice the value of the 'scroll' option is used,
otherwise the current window height minus 3 is used.
This is the value of "scr" in the table below.
If there is a [count] the 'window' option is set to
its value.
:z can be used either alone or followed by any of
@@ -168,7 +170,7 @@ g8 Print the hex values of the bytes used in the
If the mark is "=", a line of dashes is printed
around the current line.
:{range}z#[+-^.=]{count} *:z#*
:[range]z#[+-^.=][count] *:z#*
Like ":z", but number the lines.
*:=*
@@ -409,7 +411,7 @@ N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse|
B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse|
B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse|
N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse|
N *+multi_byte* 16 and 32 bit characters |multibyte|
T *+multi_byte* Unicode support, 16 and 32 bit characters |multibyte|
*+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
N *+multi_lang* non-English language support |multi-lang|
m *+mzscheme* Mzscheme interface |mzscheme|
@@ -705,12 +707,12 @@ K Run a program to lookup the keyword under the
not more than one line.
[N]gs *gs* *:sl* *:sleep*
:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included,
:[N]sl[eep] [N][m] Do nothing for [N] seconds. When [m] is included,
sleep for [N] milliseconds. The count for "gs" always
uses seconds. The default is one second. >
:sleep "sleep for one second
:5sleep "sleep for five seconds
:sleep 100m "sleep for a hundred milliseconds
:sleep 100m "sleep for 100 milliseconds
10gs "sleep for ten seconds
< Can be interrupted with CTRL-C (CTRL-Break on
MS-Windows). "gs" stands for "goto sleep".
@@ -720,6 +722,9 @@ K Run a program to lookup the keyword under the
available when compiled with the |+netbeans_intg|
feature}
*:sl!* *:sleep!*
:[N]sl[eep]! [N] [m] Same as above, but hide the cursor
*:xrestore* *:xr*
:xr[estore] [display] Reinitializes the connection to the X11 server. Useful
after the X server restarts, e.g. when running Vim for

View File

@@ -1,4 +1,4 @@
*version5.txt* For Vim version 8.2. Last change: 2020 Sep 02
*version5.txt* For Vim version 8.2. Last change: 2020 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -805,7 +805,7 @@ Using "~" for $HOME now works for all systems. |$HOME|
Unix: Besides using CTRL-C, also use the INTR character from the tty settings.
Somebody has INTR set to DEL.
Allow a <LF> in a ":help" command argument to end the help command, so another
Allow a <NL> in a ":help" command argument to end the help command, so another
command can follow.
Doing "%" on a line that starts with " #if" didn't jump to matching "#else".

View File

@@ -1331,7 +1331,7 @@ eventhandler() Returns 1 when inside an event handler and interactive
executable() Checks if a program or batch script can be executed.
filewritable() Checks if a file can be written. (Ron Aaron)
foldclosed() Find out if there is a closed fold. (Johannes Zellner).
foldcloseend() Find the end of a closed fold.
foldclosedend() Find the end of a closed fold.
foldlevel() Find out the foldlevel. (Johannes Zellner)
foreground() Move the GUI window to the foreground.
getchar() Get one character from the user. Can be used to define a
@@ -9661,7 +9661,7 @@ Solution: Check for tcsetattr() to return an error, retry when it does.
Files: src/os_unix.c
Patch 6.2f.018
Problem: Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses
Problem: Mac OS X 10.2: OK is defined to zero in curses.h while Vim uses
one. Redefining it causes a warning message.
Solution: Undefine OK before defining it to one. (Taro Muraoka)
Files: src/vim.h

View File

@@ -1,4 +1,4 @@
*version7.txt* For Vim version 8.2. Last change: 2020 Aug 15
*version7.txt* For Vim version 8.2. Last change: 2020 Oct 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -10260,7 +10260,7 @@ Commands:
Brabandt)
Other:
Lua interface now also uses userdata binded to Vim structures. (Taro
Lua interface now also uses userdata bound to Vim structures. (Taro
Muraoka, Luis Carvalho)
glob() and autocommand patterns used to work with the undocumented

View File

@@ -1,4 +1,4 @@
*version8.txt* For Vim version 8.2. Last change: 2020 Aug 15
*version8.txt* For Vim version 8.2. Last change: 2020 Dec 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -76,7 +76,7 @@ Timers ~
Also asynchronous are timers. They can fire once or repeatedly and invoke a
function to do any work. For example: >
let tempTimer = timer_start(4000, 'CheckTemp')
This will call the CheckTemp() function four seconds (4000 milli seconds)
This will call the CheckTemp() function four seconds (4000 milliseconds)
later. See |timer_start()|.
@@ -3282,7 +3282,7 @@ Solution: Convert the printer name from the active codepage to 'encoding'.
Files: src/os_mswin.c
Patch 7.4.472
Problem: The "precedes" entry in 'listchar' will be drawn when 'showbreak'
Problem: The "precedes" entry in 'listchars' will be drawn when 'showbreak'
is set and 'list' is not.
Solution: Only draw this character when 'list' is on. (Christian Brabandt)
Files: src/screen.c
@@ -35835,7 +35835,7 @@ Files: src/ex_cmds2.c, src/getchar.c, src/testdir/test_mapping.vim,
Patch 8.1.1592
Problem: May start file dialog while exiting.
Solution: Ignore the "browse" modifier when exiting. (Ozaki Kiichi,
closes #4582
closes #4582)
Files: src/ex_cmds.c, src/terminal.c
Patch 8.1.1593
@@ -42557,7 +42557,7 @@ Files: src/buffer.c, src/testdir/test_statusline.vim,
src/testdir/dumps/Test_statusline_1.dump
Patch 8.2.0236
Problem: MS-Windows uninstall doesn't delete vimtutur.bat.
Problem: MS-Windows uninstall doesn't delete vimtutor.bat.
Solution: Change directory before deletion. (Ken Takata, closes #5603)
Files: src/uninstall.c
@@ -46431,7 +46431,7 @@ Files: src/buffer.c, src/change.c, src/diff.c, src/evalbuffer.c,
Patch 8.2.0854
Problem: Xxd cannot show offset as a decimal number.
Solution: Add the "-d" flag. (Aapo Rantalainen, closes #5616
Solution: Add the "-d" flag. (Aapo Rantalainen, closes #5616)
Files: src/testdir/test_xxd.vim, src/xxd/xxd.c
Patch 8.2.0855
@@ -46661,7 +46661,7 @@ Solution: Use // comments. (Yegappan Lakshmanan, closes #6190)
Files: src/gui_xim.c
Patch 8.2.0890
Problem: No color in terminal window when 'termguicolor' is set.
Problem: No color in terminal window when 'termguicolors' is set.
Solution: Clear the underline color. (closes #6186)
Files: src/highlight.c
@@ -46728,7 +46728,7 @@ Files: runtime/doc/change.txt, src/mbyte.c, src/ops.c, src/option.h,
Patch 8.2.0902
Problem: Using searchcount() in 'statusline' causes an error.
Solution: Avoid saving/restoring the search patten recursively.
Solution: Avoid saving/restoring the search pattern recursively.
(closes #6194)
Files: src/search.c, src/testdir/test_search_stat.vim,
src/testdir/dumps/Test_searchstat_4.dump
@@ -47698,7 +47698,7 @@ Files: src/eval.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1064
Problem: Vim9: no line break allowed before comparators.
Solution: Check for comperator after line break.
Solution: Check for comparator after line break.
Files: src/eval.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1065
@@ -48832,7 +48832,7 @@ Files: src/buffer.c, src/testdir/test_tabline.vim
Patch 8.2.1260
Problem: There is no good test for CursorHold.
Solution: Add a test. Remove duplicated test. (Yegappan Lakshmanan,
closes #6503
closes #6503)
Files: src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim,
src/testdir/test_normal.vim

View File

@@ -73,7 +73,7 @@ edit the termcap entry and try again. Vim has the |terminal-options|.
Vim has only a few limits for the files that can be edited {Vi: can not handle
<Nul> characters and characters above 128, has limited line length, many other
limits}.
*E340*
Maximum line length 2147483647 characters. Longer lines are split.
Maximum number of lines 2147483647 lines.
Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is

View File

@@ -459,6 +459,9 @@ Use {name} as the server name. Used for the current Vim, unless used with a
\-\-socketid {id}
GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
.TP
\-\-startuptime {file}
During startup write timing messages to the file {fname}.
.TP
\-\-version
Print version information and exit.
.SH ON-LINE HELP

View File

@@ -345,6 +345,9 @@ OPTIONS
GTK GUI only: Use the GtkPlug mechanism to run gvim in an
other window.
--startuptime {file}
During startup write timing messages to the file {fname}.
--version Print version information and exit.
ON-LINE HELP

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 8.2. Last change: 2020 Oct 05
*vim9.txt* For Vim version 8.2. Last change: 2021 Jan 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6,7 +6,7 @@
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
Vim9 script commands and expressions. *vim9*
Vim9 script commands and expressions. *Vim9* *vim9*
Most expression help is in |eval.txt|. This file is about the new syntax and
features in Vim9 script.
@@ -14,7 +14,7 @@ features in Vim9 script.
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
1. What is Vim9 script? |vim9-script|
1. What is Vim9 script? |Vim9-script|
2. Differences |vim9-differences|
3. New style functions |fast-functions|
4. Types |vim9-types|
@@ -25,7 +25,7 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
==============================================================================
1. What is Vim9 script? *vim9-script*
1. What is Vim9 script? *Vim9-script*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
@@ -52,8 +52,9 @@ The Vim9 script syntax and semantics are used in:
- a script file where the first command is `vim9script`
- an autocommand defined in the context of the above
When using `:function` in a Vim9 script file the legacy syntax is used.
However, this can be confusing and is therefore discouraged.
When using `:function` in a Vim9 script file the legacy syntax is used, with
the highest |scriptversion|. However, this can be confusing and is therefore
discouraged.
Vim9 script and legacy Vim script can be mixed. There is no requirement to
rewrite old scripts, they keep working as before. You may want to use a few
@@ -70,28 +71,29 @@ Overview ~
Brief summary of the differences you will most often encounter when using Vim9
script and `:def` functions; details are below:
- Comments start with #, not ": >
echo "hello" # comment
echo "hello" # comment
- Using a backslash for line continuation is hardly ever needed: >
echo "hello "
echo "hello "
.. yourName
.. ", how are you?"
- White space is required in many places.
- Assign values without `:let`, declare variables with `:var`: >
var count = 0
var count = 0
count += 3
- Constants can be declared with `:final` and `:const`: >
final matches = [] # add matches
final matches = [] # add matches
const names = ['Betty', 'Peter'] # cannot be changed
- `:final` cannot be used as an abbreviation of `:finally`.
- Variables and functions are script-local by default.
- Functions are declared with argument types and return type: >
def CallMe(count: number, message: string): bool
- Call functions without `:call`: >
writefile(['done'], 'file.txt')
writefile(['done'], 'file.txt')
- You cannot use `:xit`, `:t`, `:append`, `:change`, `:insert` or curly-braces
names.
- A range before a command must be prefixed with a colon: >
:%s/this/that
:%s/this/that
- Unless mentioned specifically, the highest |scriptversion| is used.
Comments starting with # ~
@@ -112,8 +114,13 @@ In Vi # is a command to list text with numbers. In Vim9 script you can use
101 number
To improve readability there must be a space between a command and the #
that starts a comment. Note that #{ is the start of a dictionary, therefore
it does not start a comment.
that starts a comment: >
var name = value # comment
var name = value# error!
In legacy Vim script # is also used for the alternate file name. In Vim9
script you need to use %% instead. Instead of ## use %%% (stands for all
arguments).
Vim9 functions ~
@@ -124,8 +131,8 @@ often 10x to 100x times.
Many errors are already found when compiling, before the function is executed.
The syntax is strict, to enforce code that is easy to read and understand.
Compilation is done when:
- the function is first called
Compilation is done when either of these is encountered:
- the first time the function is called
- when the `:defcompile` command is encountered in the script where the
function was defined
- `:disassemble` is used for the function.
@@ -133,8 +140,9 @@ Compilation is done when:
reference
`:def` has no options like `:function` does: "range", "abort", "dict" or
"closure". A `:def` function always aborts on an error, does not get a range
passed and cannot be a "dict" function.
"closure". A `:def` function always aborts on an error (unless `:silent!` was
used for the command or inside a `:try` block), does not get a range passed
cannot be a "dict" function, and can always be a closure.
The argument types and return type need to be specified. The "any" type can
be used, type checking will then be done at runtime, like with legacy
@@ -176,8 +184,8 @@ However, it is recommended to always use "g:" to refer to a global function
for clarity.
In all cases the function must be defined before used. That is when it is
called, when `:defcompile` causes the it to be compiled, or when code that
calls it is being compiled (to figure out the return type).
called, when `:defcompile` causes it to be compiled, or when code that calls
it is being compiled (to figure out the return type).
The result is that functions and variables without a namespace can usually be
found in the script, either defined there or imported. Global functions and
@@ -187,6 +195,33 @@ Global functions can still be defined and deleted at nearly any time. In
Vim9 script script-local functions are defined once when the script is sourced
and cannot be deleted or replaced.
When compiling a function and a function call is encountered for a function
that is not (yet) defined, the |FuncUndefined| autocommand is not triggered.
You can use an autoload function if needed, or call a legacy function and have
|FuncUndefined| triggered there.
Reloading a Vim9 script clears functions and variables by default ~
*vim9-reload*
When loading a legacy Vim script a second time nothing is removed, the
commands will replace existing variables and functions and create new ones.
When loading a Vim9 script a second time all existing script-local functions
and variables are deleted, thus you start with a clean slate. This is useful
if you are developing a plugin and want to try a new version. If you renamed
something you don't have to worry about the old name still hanging around.
If you do want to keep items, use: >
vim9script noclear
You want to use this in scripts that use a `finish` command to bail out at
some point when loaded again. E.g. when a buffer local option is set: >
vim9script noclear
setlocal completefunc=SomeFunc
if exists('*g:SomeFunc') | finish | endif
def g:SomeFunc()
....
Variable declarations with :var, :final and :const ~
*vim9-declaration* *:var*
@@ -282,7 +317,7 @@ The constant only applies to the value itself, not what it refers to. >
NAMES[0] = ["Jack"] # Error!
NAMES[0][0] = "Jack" # Error!
NAMES[1] = ["Emma"] # Error!
Names[1][0] = "Emma" # OK, now females[0] == "Emma"
NAMES[1][0] = "Emma" # OK, now females[0] == "Emma"
< *E1092*
Declaring more than one variable at a time, using the unpack notation, is
@@ -303,8 +338,7 @@ identifier or can't be an Ex command. Examples: >
myList->add(123)
g:myList->add(123)
[1, 2, 3]->Process()
#{a: 1, b: 2}->Process()
{'a': 1, 'b': 2}->Process()
{a: 1, b: 2}->Process()
"foobar"->Process()
("foobar")->Process()
'foobar'->Process()
@@ -336,17 +370,55 @@ When using `function()` the resulting type is "func", a function with any
number of arguments and any return type. The function can be defined later.
Lambda using => instead of -> ~
In legacy script there can be confusion between using "->" for a method call
and for a lambda. Also, when a "{" is found the parser needs to figure out if
it is the start of a lambda or a dictionary, which is now more complicated
because of the use of argument types.
To avoid these problems Vim9 script uses a different syntax for a lambda,
which is similar to Javascript: >
var Lambda = (arg) => expression
No line break is allowed in the arguments of a lambda up to and including the
"=>". This is OK: >
filter(list, (k, v) =>
v > 0)
This does not work: >
filter(list, (k, v)
=> v > 0)
This also does not work: >
filter(list, (k,
v) => v > 0)
But you can use a backslash to concatenate the lines before parsing: >
filter(list, (k,
\ v)
\ => v > 0)
Additionally, a lambda can contain statements in {}: >
var Lambda = (arg) => {
g:was_called = 'yes'
return expression
}
NOT IMPLEMENTED YET
To avoid the "{" of a dictionary literal to be recognized as a statement block
wrap it in parenthesis: >
var Lambda = (arg) => ({key: 42})
Automatic line continuation ~
In many cases it is obvious that an expression continues on the next line. In
those cases there is no need to prefix the line with a backslash
|line-continuation|. For example, when a list spans multiple lines: >
those cases there is no need to prefix the line with a backslash (see
|line-continuation|). For example, when a list spans multiple lines: >
var mylist = [
'one',
'two',
]
And when a dict spans multiple lines: >
var mydict = #{
var mydict = {
one: 1,
two: 2,
}
@@ -362,7 +434,7 @@ possible just before or after the operator. For example: >
.. middle
.. end
var total = start +
end -
end -
correction
var result = positive
? PosFunc(arg)
@@ -377,6 +449,12 @@ before it: >
var result = MyDict
.member
For commands that have an argument that is a list of commands, the | character
at the start of the line indicates line continuation: >
autocmd BufNewFile *.match if condition
| echo 'match'
| endif
< *E1050*
To make it possible for the operator at the start of the line to be
recognized, it is required to put a colon before a range. This will add
@@ -390,6 +468,9 @@ This will assign "start" and print a line: >
var result = start
:+ print
Note that the colon is not required for the |+cmd| argument: >
edit +6 fname
It is also possible to split a function header over multiple lines, in between
arguments: >
def MyFunc(
@@ -397,6 +478,19 @@ arguments: >
separator = '-'
): string
Since a continuation line cannot be easily recognized the parsing of commands
has been made stricter. E.g., because of the error in the first line, the
second line is seen as a separate command: >
popup_create(some invalid expression, {
exit_cb: Func})
Now "exit_cb: Func})" is actually a valid command: save any changes to the
file "_cb: Func})" and exit. To avoid this kind of mistake in Vim9 script
there must be white space between most command names and the argument.
However, the argument of a command that is a command won't be recognized. For
example, after "windo echo expr" a line break inside "expr" will not be seen.
Notes:
- "enddef" cannot be used at the start of a continuation line, it ends the
current function.
@@ -416,20 +510,39 @@ Notes:
< This does not work: >
echo [1, 2]
[3, 4]
- No line break is allowed in the arguments of a lambda, between the "{" and
"->". This is OK: >
filter(list, {k, v ->
v > 0})
< This does not work: >
filter(list, {k,
v -> v > 0})
No curly braces expansion ~
|curly-braces-names| cannot be used.
Dictionary literals ~
Traditionally Vim has supported dictionary literals with a {} syntax: >
let dict = {'key': value}
Later it became clear that using a simple text key is very common, thus
literal dictionaries were introduced in a backwards compatible way: >
let dict = #{key: value}
However, this #{} syntax is unlike any existing language. As it turns out
that using a literal key is much more common than using an expression, and
considering that JavaScript uses this syntax, using the {} form for dictionary
literals is considered a much more useful syntax. In Vim9 script the {} form
uses literal keys: >
var dict = {key: value}
This works for alphanumeric characters, underscore and dash. If you want to
use another character, use a single or double quoted string: >
var dict = {'key with space': value}
var dict = {"key\twith\ttabs": value}
var dict = {'': value} # empty key
In case the key needs to be an expression, square brackets can be used, just
like in JavaScript: >
var dict = {["key" .. nr]: value}
No :xit, :t, :append, :change or :insert ~
These commands are too easily confused with local variable names.
@@ -442,6 +555,29 @@ Comparators ~
The 'ignorecase' option is not used for comparators that use strings.
For loop ~
Legacy Vim script has some tricks to make a for loop over a list handle
deleting items at the current or previous item. In Vim9 script it just uses
the index, if items are deleted then items in the list will be skipped.
Example legacy script: >
let l = [1, 2, 3, 4]
for i in l
echo i
call remove(l, index(l, i))
endfor
Would echo:
1
2
3
4
In compiled Vim9 script you get:
1
3
Generally, you should not change the list that is iterated over. Make a copy
first if needed.
White space ~
Vim9 script enforces proper use of white space. This is no longer allowed: >
@@ -457,17 +593,26 @@ command: >
White space is required around most operators.
White space is required in a sublist (list slice) around the ":", except at
the start and end: >
otherlist = mylist[v : count] # v:count has a different meaning
otherlist = mylist[:] # make a copy of the List
otherlist = mylist[v :]
otherlist = mylist[: v]
White space is not allowed:
- Between a function name and the "(": >
call Func (arg) # Error!
call Func
Func (arg) # Error!
Func
\ (arg) # Error!
call Func(arg) # OK
call Func(
\ arg) # OK
call Func(
\ arg # OK
\ )
Func
(arg) # Error!
Func(arg) # OK
Func(
arg) # OK
Func(
arg # OK
)
Conditions and expressions ~
@@ -487,7 +632,7 @@ is either falsy or truthy. This is mostly like JavaScript, except that an
empty list and dict is falsy:
type truthy when ~
bool v:true or 1
bool true, v:true or 1
number non-zero
float non-zero
string non-empty
@@ -495,11 +640,11 @@ empty list and dict is falsy:
list non-empty (different from JavaScript)
dictionary non-empty (different from JavaScript)
func when there is a function name
special v:true
special true or v:true
job when not NULL
channel when not NULL
class when not NULL
object when not NULL (TODO: when isTrue() returns v:true)
object when not NULL (TODO: when isTrue() returns true)
The boolean operators "||" and "&&" expect the values to be boolean, zero or
one: >
@@ -514,25 +659,37 @@ one: >
When using "!" for inverting, there is no error for using any type and the
result is a boolean. "!!" can be used to turn any value into boolean: >
!'yes' == false
!'yes' == false
!![] == false
!![1, 2, 3] == true
!![1, 2, 3] == true
When using "`.."` for string concatenation arguments of simple types are
always converted to string: >
'hello ' .. 123 == 'hello 123'
'hello ' .. v:true == 'hello v:true'
'hello ' .. v:true == 'hello true'
Simple types are string, float, special and bool. For other types |string()|
can be used.
*false* *true*
In Vim9 script one can use "true" for v:true and "false" for v:false.
*false* *true* *null*
In Vim9 script one can use "true" for v:true, "false" for v:false and "null"
for v:null. When converting a boolean to a string "false" and "true" are
used, not "v:false" and "v:true" like in legacy script. "v:none" is not
changed, it is only used in JSON and has no equivalent in other languages.
Indexing a string with [idx] or [idx, idx] uses character indexes instead of
Indexing a string with [idx] or [idx : idx] uses character indexes instead of
byte indexes. Example: >
echo 'bár'[1]
In legacy script this results in the character 0xc3 (an illegal byte), in Vim9
script this results in the string 'á'.
A negative index is counting from the end, "[-1]" is the last character.
To exclude the last character use |slice()|.
If the index is out of range then an empty string results.
In legacy script "++var" and "--var" would be silently accepted and have no
effect. This is an error in Vim9 script.
Numbers starting with zero are not considered to be octal, only numbers
starting with "0o" are octal: "0o744". |scriptversion-4|
What to watch out for ~
@@ -542,21 +699,22 @@ 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 in continuation line
:-> # Vim9: shifts the previous line to the right
-> legacy Vim: shifts the previous line to the right
->func() Vim9: method call in a continuation line
:-> Vim9: shifts the previous line to the right
%s/a/b # legacy Vim: substitute on all lines
%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
'text'->func() # Vim9: method call
:'t # legacy Vim: jump to mark m
% another Vim9: modulo operator in a continuation line
:%s/a/b Vim9: substitute on all lines
't legacy Vim: jump to mark t
'text'->func() Vim9: method call
:'t Vim9: jump to mark t
Some Ex commands can be confused with assignments in Vim9 script: >
g:name = value # assignment
g:pattern:cmd # invalid command - ERROR
:g:pattern:cmd # :global command
g:name = value # assignment
g:pattern:cmd # invalid command - ERROR
:g:pattern:cmd # :global command
Functions defined with `:def` compile the whole function. Legacy functions
can bail out, and the following lines are not parsed: >
@@ -571,12 +729,12 @@ Vim9 functions are compiled as a whole: >
if !has('feature')
return
endif
use-feature # May give compilation error
use-feature # May give a compilation error
enddef
For a workaround, split it in two functions: >
func Maybe()
if has('feature')
call MaybyInner()
call MaybeInner()
endif
endfunc
if has('feature')
@@ -591,12 +749,38 @@ evaluates to false: >
use-feature
endif
enddef
< *vim9-user-command*
Another side effect of compiling a function is that the presence of a user
command is checked at compile time. If the user command is defined later an
error will result. This works: >
command -nargs=1 MyCommand echom <q-args>
def Works()
MyCommand 123
enddef
This will give an error for "MyCommand" not being defined: >
def Works()
command -nargs=1 MyCommand echom <q-args>
MyCommand 123
enddef
A workaround is to invoke the command indirectly with `:execute`: >
def Works()
command -nargs=1 MyCommand echom <q-args>
execute 'MyCommand 123'
enddef
Note that for unrecognized commands there is no check for "|" and a following
command. This will give an error for missing `endif`: >
def Maybe()
if has('feature') | use-feature | endif
enddef
Other differences ~
Patterns are used like 'magic' is set, unless explicitly overruled.
The 'edcompatible' option value is not used.
The 'gdefault' option value is not used.
==============================================================================
3. New style functions *fast-functions*
@@ -660,18 +844,24 @@ prefix and they do not need to exist (they can be deleted any time).
Limitations ~
Local variables will not be visible to string evaluation. For example: >
def EvalString(): list<string>
def MapList(): list<string>
var list = ['aa', 'bb', 'cc', 'dd']
return range(1, 2)->map('list[v:val]')
enddef
The map argument is a string expression, which is evaluated without the
function scope. Instead, use a lambda: >
def EvalString(): list<string>
def MapList(): list<string>
var list = ['aa', 'bb', 'cc', 'dd']
return range(1, 2)->map({ _, v -> list[v] })
return range(1, 2)->map(( _, v) => list[v])
enddef
The same is true for commands that are not compiled, such as `:global`.
For these the backtick expansion can be used. Example: >
def Replace()
var newText = 'blah'
g/pattern/s/^/`=newText`/
enddef
==============================================================================
@@ -766,12 +956,14 @@ compiled code the "any" type is assumed.
This can be a problem when the "any" type is undesired and the actual type is
expected to always be the same. For example, when declaring a list: >
var l: list<number> = [1, g:two]
This will give an error, because "g:two" has type "any". To avoid this, use a
type cast: >
At compile time Vim doesn't know the type of "g:two" and the expression type
becomes list<any>. An instruction is generated to check the list type before
doing the assignment, which is a bit inefficient.
*type-casting*
To avoid this, use a type cast: >
var l: list<number> = [1, <number>g:two]
< *type-casting*
The compiled code will then check that "g:two" is a number at runtime and give
an error if it isn't. This is called type casting.
The compiled code will then only check that "g:two" is a number and give an
error if it isn't. This is called type casting.
The syntax of a type cast is: "<" {type} ">". There cannot be white space
after the "<" or before the ">" (to avoid them being confused with
@@ -813,6 +1005,12 @@ an error, thus breaking backwards compatibility. For example:
- Using a string value when setting a number options.
- Using a number where a string is expected. *E1024*
One consequence is that the item type of a list or dict given to map() must
not change. This will give an error in compiled code: >
map([1, 2, 3], (i, v) => 'item ' .. i)
E1012: Type mismatch; expected list<number> but got list<string>
Instead use |mapnew()|.
==============================================================================
5. Namespace, Import and Export
@@ -829,7 +1027,7 @@ that you don't do that.
Namespace ~
*:vim9script* *:vim9*
*vim9-namespace*
To recognize a file that can be imported the `vim9script` statement must
appear as the first statement in the file. It tells Vim to interpret the
script in its own namespace, instead of the global namespace. If a file
@@ -901,7 +1099,7 @@ The script name after `import` can be:
location of the script file itself. This is useful to split up a large
plugin into several files.
- An absolute path, starting with "/" on Unix or "D:/" on MS-Windows. This
will be rarely used.
will rarely be used.
- A path not being relative or absolute. This will be found in the
"import" subdirectories of 'runtimepath' entries. The name will usually be
longer and unique, to avoid loading the wrong file.
@@ -922,14 +1120,14 @@ actually needed. A recommended mechanism:
1. In the plugin define user commands, functions and/or mappings that refer to
an autoload script. >
command -nargs=1 SearchForStuff call searchfor#Stuff(<f-args>)
command -nargs=1 SearchForStuff searchfor#Stuff(<f-args>)
< This goes in .../plugin/anyname.vim. "anyname.vim" can be freely chosen.
2. In the autoload script do the actual work. You can import items from
other files to split up functionality in appropriate pieces. >
vim9script
import FilterFunc from "../import/someother.vim"
import FilterFunc from "../import/someother.vim"
def searchfor#Stuff(arg: string)
var filtered = FilterFunc(arg)
...
@@ -1015,12 +1213,12 @@ When compiling lines of Vim commands into instructions as much as possible
should be done at compile time. Postponing it to runtime makes the execution
slower and means mistakes are found only later. For example, when
encountering the "+" character and compiling this into a generic add
instruction, at execution time the instruction would have to inspect the type
of the arguments and decide what kind of addition to do. And when the
type is dictionary throw an error. If the types are known to be numbers then
an "add number" instruction can be used, which is faster. The error can be
given at compile time, no error handling is needed at runtime, since adding
two numbers cannot fail.
instruction, at runtime the instruction would have to inspect the type of the
arguments and decide what kind of addition to do. And when the type is
dictionary throw an error. If the types are known to be numbers then an "add
number" instruction can be used, which is faster. The error can be given at
compile time, no error handling is needed at runtime, since adding two numbers
cannot fail.
The syntax for types, using <type> for compound types, is similar to Java. It
is easy to understand and widely used. The type names are what were used in
@@ -1103,7 +1301,7 @@ are used. That is different, thus it's good to use a different command:
`:var`. This is used in many languages. The semantics might be slightly
different, but it's easily recognized as a declaration.
Using `:const` for constants is common, but the semantics vary. Some
Using `:const` for constants is common, but the semantics varies. Some
languages only make the variable immutable, others also make the value
immutable. Since "final" is well known from Java for only making the variable
immutable we decided to use that. And then `:const` can be used for making
@@ -1160,16 +1358,16 @@ Some details are unexpected and can be improved. For example a boolean
condition would accept a string, convert it to a number and check if the
number is non-zero. This is unexpected and often leads to mistakes, since
text not starting with a number would be converted to zero, which is
considered false. Thus a string would not give an error and be considered
false if it doesn't start with a number. That is confusing.
considered false. Thus using a string for a condition would often not give an
error and be considered false. That is confusing.
In Vim9 type checking is more strict to avoid mistakes. Where a condition is
In Vim9 type checking is stricter to avoid mistakes. Where a condition is
used, e.g. with the `:if` command and the `||` operator, only boolean-like
values are accepted:
true: `true`, `v:true`, `1`, `0 < 9`
false: `false`, `v:false`, `0`, `0 > 9`
Note that the number zero is false and the number one is true. This is more
persmissive than most other languages. It was done because many builtin
permissive than most other languages. It was done because many builtin
functions return these values.
If you have any type of value and want to use it as a boolean, use the `!!`

View File

@@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.2. Last change: 2020 Sep 02
*windows.txt* For Vim version 8.2. Last change: 2020 Dec 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -205,11 +205,6 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
This behaves like a ":split" first, and then an ":enew"
command.
:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
Like |:new|, but split vertically. If 'equalalways' is set
and 'eadirection' isn't "ver" the windows will be spread out
horizontally, unless a width was specified.
:[N]new [++opt] [+cmd] {file}
:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
Create a new window and start editing file {file} in it. This
@@ -221,6 +216,11 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
height). Reduces the current window height to create room
(and others, if the 'equalalways' option is set).
:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
Like |:new|, but split vertically. If 'equalalways' is set
and 'eadirection' isn't "ver" the windows will be spread out
horizontally, unless a width was specified.
:[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview*
Same as ":split", but set 'readonly' option for this buffer.
@@ -1119,6 +1119,11 @@ list of buffers. |unlisted-buffer|
line when the buffer is first entered. Note that other
commands after the + will be ignored.
*:balt*
:balt [+lnum] {fname}
Like `:badd` and also set the alternate file for the current
window to {fname}.
:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
:bd[elete][!] [N]
Unload buffer [N] (default: current buffer) and delete it from

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Sep 30
" Last Change: 2020 Dec 24
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -499,6 +499,9 @@ au BufNewFile,BufRead *.com call dist#ft#BindzoneCheck('dcl')
" DOT
au BufNewFile,BufRead *.dot,*.gv setf dot
" Dune
au BufNewFile,BufRead jbuild,dune,dune-project,dune-workspace setf dune
" Dylan - lid files
au BufNewFile,BufRead *.lid setf dylanlid
@@ -627,6 +630,9 @@ au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
" Gedcom
au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
" Gift (Moodle)
autocmd BufRead,BufNewFile *.gift setf gift
" Git
au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig
@@ -696,12 +702,15 @@ au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
au BufNewFile,BufRead *.haml setf haml
" Hamster Classic | Playground files
au BufNewFile,BufRead *.hsc,*.hsm setf hamster
au BufNewFile,BufRead *.hsm setf hamster
" Haskell
au BufNewFile,BufRead *.hs,*.hs-boot setf haskell
au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot setf haskell
au BufNewFile,BufRead *.lhs setf lhaskell
au BufNewFile,BufRead *.chs setf chaskell
au BufNewFile,BufRead cabal.project setf cabalproject
au BufNewFile,BufRead $HOME/.cabal/config setf cabalconfig
au BufNewFile,BufRead cabal.config setf cabalconfig
" Haste
au BufNewFile,BufRead *.ht setf haste
@@ -1119,8 +1128,8 @@ au BufNewFile,BufRead *.nse setf lua
" NSIS
au BufNewFile,BufRead *.nsi,*.nsh setf nsis
" OCAML
au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit setf ocaml
" OCaml
au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit,*.mlt,*.mlp,*.mlip,*.mli.cppo,*.ml.cppo setf ocaml
" Occam
au BufNewFile,BufRead *.occ setf occam
@@ -1128,6 +1137,9 @@ au BufNewFile,BufRead *.occ setf occam
" Omnimark
au BufNewFile,BufRead *.xom,*.xin setf omnimark
" OPAM
au BufNewFile,BufRead opam,*.opam,*.opam.template setf opam
" OpenROAD
au BufNewFile,BufRead *.or setf openroad
@@ -1162,7 +1174,9 @@ au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp
au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd
" Pascal (also *.p)
au BufNewFile,BufRead *.pas,*.pp setf pascal
au BufNewFile,BufRead *.pas setf pascal
au BufNewFile,BufRead *.pp call dist#ft#FTpp()
" Delphi or Lazarus program file
au BufNewFile,BufRead *.dpr,*.lpr setf pascal
@@ -1305,6 +1319,7 @@ au BufNewFile,BufRead *.pml setf promela
" Google protocol buffers
au BufNewFile,BufRead *.proto setf proto
au BufNewFile,BufRead *.pbtxt setf pbtxt
" Protocols
au BufNewFile,BufRead */etc/protocols setf protocols
@@ -1506,9 +1521,10 @@ au BufNewFile,BufRead *.decl,*.dcl,*.dec
au BufNewFile,BufRead catalog setf catalog
" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
" Gentoo ebuilds, Arch Linux PKGBUILDs and Alpine Linux APKBUILDs are actually
" bash scripts.
" NOTE: Patterns ending in a star are further down, these have lower priority.
au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,bash-fc[-.],*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,bash-fc[-.],*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD,APKBUILD call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
@@ -1539,6 +1555,9 @@ au BufNewFile,BufRead *.scm,*.ss,*.rkt setf scheme
" Screen RC
au BufNewFile,BufRead .screenrc,screenrc setf screen
" Sexplib
au BufNewFile,BufRead *.sexp setf sexplib
" Simula
au BufNewFile,BufRead *.sim setf simula
@@ -1599,6 +1618,9 @@ au BufNewFile,BufRead *.mib,*.my setf mib
au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog
au BufNewFile,BufRead *.rules call dist#ft#FTRules()
" SPARQL queries
au BufNewFile,BufRead *.rq,*.sparql setf sparql
" Spec (Linux RPM)
au BufNewFile,BufRead *.spec setf spec
@@ -1709,8 +1731,13 @@ au BufNewFile,BufRead *.tli setf tli
" Telix Salt
au BufNewFile,BufRead *.slt setf tsalt
" Tera Term Language
au BufRead,BufNewFile *.ttl setf teraterm
" Tera Term Language or Turtle
au BufRead,BufNewFile *.ttl
\ if getline(1) =~ '^@\?\(prefix\|base\)' |
\ setf turtle |
\ else |
\ setf teraterm |
\ endif
" Terminfo
au BufNewFile,BufRead *.ti setf terminfo
@@ -1720,7 +1747,7 @@ au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
au BufNewFile,BufRead *.tex call dist#ft#FTtex()
" ConTeXt
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi,*.mkxl,*.mklx setf context
" Texinfo
au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo
@@ -1737,6 +1764,9 @@ au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
" tmux configuration
au BufNewFile,BufRead {.,}tmux*.conf setf tmux
" TOML
au BufNewFile,BufRead *.toml setf toml
" TPP - Text Presentation Program
au BufNewFile,BufReadPost *.tpp setf tpp
@@ -1758,8 +1788,13 @@ au BufNewFile,BufReadPost *.tsscl setf tsscl
" TWIG files
au BufNewFile,BufReadPost *.twig setf twig
" Typescript
au BufNewFile,BufReadPost *.ts setf typescript
" Typescript or Qt translation file (which is XML)
au BufNewFile,BufReadPost *.ts
\ if getline(1) =~ '<?xml' |
\ setf xml |
\ else |
\ setf typescript |
\ endif
" TypeScript with React
au BufNewFile,BufRead *.tsx setf typescriptreact
@@ -2035,12 +2070,14 @@ au BufNewFile,BufRead bzr_log.* setf bzr
" Bazel build file
if !has("fname_case")
au BufNewFile,BufRead *.BUILD,BUILD setf bzl
au BufNewFile,BufRead *.BUILD,BUILD setf bzl
endif
" BIND zone
au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone')
au BufNewFile,BufRead cabal.project.* call s:StarSetf('cabalproject')
" Calendar
au BufNewFile,BufRead */.calendar/*,
\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
@@ -2163,7 +2200,7 @@ au BufNewFile,BufRead .reminders* call s:StarSetf('remind')
au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog')
" Shell scripts ending in a star
au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,PKGBUILD*,APKBUILD* call dist#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh")
au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1))

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin
" Language: awk, nawk, gawk, mawk
" Maintainer: Antonio Colombo <azc100@gmail.com>
" Last Change: 2020 Sep 28
" Language: awk, nawk, gawk, mawk
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
" Last Change: 2020 Sep 28
" This plugin was prepared by Mark Sikora
" This plugin was updated as proposed by Doug Kearns

View File

@@ -2,7 +2,7 @@
" Language: CSS
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
" Last Change: 2020 Dec 21
if exists("b:did_ftplugin")
finish
@@ -12,11 +12,12 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms< inc< fo< ofu<"
let b:undo_ftplugin = "setl com< cms< inc< fo< ofu< isk<"
setlocal comments=s1:/*,mb:*,ex:*/ commentstring&
setlocal formatoptions-=t formatoptions+=croql
setlocal omnifunc=csscomplete#CompleteCSS
setlocal iskeyword+=-
let &l:include = '^\s*@import\s\+\%(url(\)\='

View File

@@ -1,7 +1,7 @@
" Language: Dune buildsystem
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" Anton Kochkov <anton.kochkov@gmail.com>
" URL: https://github.com/rgrinberg/vim-ocaml
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2018 Nov 3 - Added commentstring (Markus Mottl)
" 2017 Sep 6 - Initial version (Etienne Millon)

View File

@@ -1,87 +1,83 @@
" Vim ftplugin file
" Language: Erlang
" Author: Oscar Hellstr<74>m <oscar@oscarh.net>
" Contributors: Ricardo Catalinas Jim<69>nez <jimenezrick@gmail.com>
" Language: Erlang (http://www.erlang.org)
" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
" Author: Oscar Hellström <oscar@oscarh.net>
" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
" Eduardo Lopez (http://github.com/tapichu)
" Arvid Bjurklint (http://github.com/slarwise)
" Last Update: 2021-Jan-08
" License: Vim license
" Version: 2012/01/25
" URL: https://github.com/vim-erlang/vim-erlang-runtime
if exists('b:did_ftplugin')
finish
else
let b:did_ftplugin = 1
endif
if exists('s:did_function_definitions')
call s:SetErlangOptions()
finish
else
let s:did_function_definitions = 1
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
if !exists('g:erlang_keywordprg')
let g:erlang_keywordprg = 'erl -man'
let &l:keywordprg = get(g:, 'erlang_keywordprg', 'erl -man')
if get(g:, 'erlang_folding', 0)
setlocal foldmethod=expr
setlocal foldexpr=GetErlangFold(v:lnum)
setlocal foldtext=ErlangFoldText()
endif
if !exists('g:erlang_folding')
let g:erlang_folding = 0
endif
setlocal comments=:%%%,:%%,:%
setlocal commentstring=%%s
setlocal formatoptions+=ro
setlocal suffixesadd=.erl,.hrl
let &l:include = '^\s*-\%(include\|include_lib\)\s*("\zs\f*\ze")'
let &l:define = '^\s*-\%(define\|record\|type\|opaque\)'
let s:erlang_fun_begin = '^\a\w*(.*$'
let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
function s:SetErlangOptions()
if g:erlang_folding
setlocal foldmethod=expr
setlocal foldexpr=GetErlangFold(v:lnum)
setlocal foldtext=ErlangFoldText()
endif
if !exists('*GetErlangFold')
function GetErlangFold(lnum)
let lnum = a:lnum
let line = getline(lnum)
setlocal comments=:%%%,:%%,:%
setlocal commentstring=%%s
if line =~ s:erlang_fun_end
return '<1'
endif
setlocal formatoptions+=ro
let &l:keywordprg = g:erlang_keywordprg
endfunction
if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
return '1'
endif
function GetErlangFold(lnum)
let lnum = a:lnum
let line = getline(lnum)
if line =~ s:erlang_fun_begin
return '>1'
endif
if line =~ s:erlang_fun_end
return '<1'
endif
return '='
endfunction
endif
if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
return '1'
endif
if !exists('*ErlangFoldText')
function ErlangFoldText()
let line = getline(v:foldstart)
let foldlen = v:foldend - v:foldstart + 1
let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
if foldlen < 10
let lines = ' ' . lines
endif
let retval = '+' . v:folddashes . lines
if line =~ s:erlang_fun_begin
return '>1'
endif
return retval
endfunction
endif
return '='
endfunction
function ErlangFoldText()
let line = getline(v:foldstart)
let foldlen = v:foldend - v:foldstart + 1
let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
if foldlen < 10
let lines = ' ' . lines
endif
let retval = '+' . v:folddashes . lines
return retval
endfunction
call s:SetErlangOptions()
let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<"
\ . " comments< commentstring< formatoptions<"
let b:undo_ftplugin = "setlocal keywordprg< foldmethod< foldexpr< foldtext<"
\ . " comments< commentstring< formatoptions< suffixesadd< include<"
\ . " define<"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=2 et

View File

@@ -0,0 +1,19 @@
" Vim ftplugin file
" Language: fstab file
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
" URL: https://raw.github.com/rid9/vim-fstab/master/ftplugin/fstab.vim
" Last Change: 2021 Jan 02
" Version: 1.0
"
" Credits:
" Subhaditya Nath <sn03.general@gmail.com>
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal commentstring=#%s
let b:undo_ftplugin = "setlocal commentstring<"
" vim: ts=8 ft=vim

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Make
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2019 Apr 02
" Last Change: 2020 Oct 16
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -9,10 +9,10 @@ if exists("b:did_ftplugin")
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<"
let b:undo_ftplugin = "setl et< sts< sw< fo< com< cms< inc<"
" Make sure a hard tab is used, required for most make programs
setlocal noexpandtab softtabstop=0
setlocal noexpandtab softtabstop=0 shiftwidth=0
" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".

View File

@@ -2,7 +2,7 @@
" Language: man
" Maintainer: Jason Franklin <vim@justemail.net>
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2020 Jun 01
" Last Change: 2020 Oct 09
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@@ -76,7 +76,7 @@ catch /E145:/
" Ignore the error in restricted mode
endtry
func <SID>PreGetPage(cnt)
func s:PreGetPage(cnt)
if a:cnt == 0
let old_isk = &iskeyword
if &ft == 'man'
@@ -99,24 +99,27 @@ func <SID>PreGetPage(cnt)
call s:GetPage('', sect, page)
endfunc
func <SID>GetCmdArg(sect, page)
if a:sect == ''
return a:page
func s:GetCmdArg(sect, page)
if empty(a:sect)
return shellescape(a:page)
endif
return s:man_sect_arg.' '.a:sect.' '.a:page
return s:man_sect_arg . ' ' . shellescape(a:sect) . ' ' . shellescape(a:page)
endfunc
func <SID>FindPage(sect, page)
let where = system("man ".s:man_find_arg.' '.s:GetCmdArg(a:sect, a:page))
if where !~ "^/"
if matchstr(where, " [^ ]*$") !~ "^ /"
return 0
endif
func s:FindPage(sect, page)
let l:cmd = printf('man %s %s', s:man_find_arg, s:GetCmdArg(a:sect, a:page))
call system(l:cmd)
if v:shell_error
return 0
endif
return 1
endfunc
func <SID>GetPage(cmdmods, ...)
func s:GetPage(cmdmods, ...)
if a:0 >= 2
let sect = a:1
let page = a:2
@@ -226,7 +229,7 @@ func <SID>GetPage(cmdmods, ...)
setl noma
endfunc
func <SID>PopPage()
func s:PopPage()
if s:man_tag_depth > 0
let s:man_tag_depth = s:man_tag_depth - 1
exec "let s:man_tag_buf=s:man_tag_buf_".s:man_tag_depth

View File

@@ -1,7 +1,9 @@
" Vim filetype plugin
" Language: roff(7)
" Maintainer: Chris Spiegel <cspiegel@gmail.com>
" Last Change: 2019 Apr 24
" Maintainer: Aman Verma
" Homepage: https://github.com/a-vrma/vim-nroff-ftplugin
" Previous Maintainer: Chris Spiegel <cspiegel@gmail.com>
" Last Change: 2020 Nov 21
if exists("b:did_ftplugin")
finish
@@ -9,3 +11,7 @@ endif
let b:did_ftplugin = 1
setlocal commentstring=.\\\"%s
setlocal comments=:.\\\"
setlocal sections+=Sh
let b:undo_ftplugin = 'setlocal commentstring< comments< sections<'

View File

@@ -5,7 +5,7 @@
" Pierre Vittet <pierre-vittet@pvittet.com>
" Stefano Zacchiroli <zack@bononia.it>
" Vincent Aravantinos <firstname.name@imag.fr>
" URL: https://github.com/rgrinberg/vim-ocaml
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2013 Oct 27 - Added commentstring (MM)
" 2013 Jul 26 - load default compiler settings (MM)
@@ -38,7 +38,8 @@ let s:cposet=&cpoptions
set cpo&vim
" Comment string
setlocal comments=
setlocal comments=sr:(*\ ,mb:\ ,ex:*)
setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal commentstring=(*%s*)
" Add mappings, unless the user didn't want this.
@@ -391,9 +392,9 @@ endfunction
endif
endfun
" This variable contain a dictionnary of list. Each element of the dictionnary
" represent an annotation system. An annotation system is a list with :
" - annotation file name as it's key
" This variable contains a dictionary of lists. Each element of the dictionary
" represents an annotation system. An annotation system is a list with:
" - annotation file name as its key
" - annotation file path as first element of the contained list
" - build path as second element of the contained list
" - annot_file_last_mod (contain the date of .annot file) as third element
@@ -521,7 +522,7 @@ endfunction
"c. link this stuff with what the user wants
" ie. get the expression selected/under the cursor
let s:ocaml_word_char = '\w|[<EFBFBD>-<2D>]|'''
let s:ocaml_word_char = '\w|[\xc0-\xff]|'''
"In: the current mode (eg. "visual", "normal", etc.)
"Out: the borders of the expression we are looking for the type

View File

@@ -0,0 +1,21 @@
" Vim filetype plugin file
" Language: Protobuf Text Format
" Maintainer: Lakshay Garg <lakshayg@outlook.in>
" Last Change: 2020 Nov 17
" Homepage: https://github.com/lakshayg/vim-pbtxt
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
setlocal commentstring=#\ %s
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 noet

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: RPL/2
" Maintainer: Jo<EFBFBD>l BERTRAND <rpl2@free.fr>
" Maintainer: Joël BERTRAND <rpl2@free.fr>
" Last Change: 2012 Mar 07
" Version: 0.1

View File

@@ -0,0 +1,15 @@
" Vim filetype plugin file
" Language: Sexplib
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2017 Apr 12 - First version (MM)
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin=1
" Comment string
setl commentstring=;\ %s
setl comments=:;

View File

@@ -73,23 +73,23 @@ if !exists("*s:SpecChangelog")
let chgline = -1
while (line <= line("$"))
let linestr = getline(line)
if (name == "" && linestr =~? '^Name:')
if name == "" && linestr =~? '^Name:'
let nameline = line
let name = substitute(strpart(linestr,5), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
elseif (ver == "" && linestr =~? '^Version:')
elseif ver == "" && linestr =~? '^Version:'
let verline = line
let ver = substitute(strpart(linestr,8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
elseif (rel == "" && linestr =~? '^Release:')
elseif rel == "" && linestr =~? '^Release:'
let relline = line
let rel = substitute(strpart(linestr,8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
elseif (linestr =~? '^%changelog')
elseif linestr =~? '^%changelog'
let chgline = line
execute line
break
endif
let line = line+1
endwhile
if (nameline != -1 && verline != -1 && relline != -1)
if nameline != -1 && verline != -1 && relline != -1
let include_release_info = exists("g:spec_chglog_release_info")
let name = s:ParseRpmVars(name, nameline)
let ver = s:ParseRpmVars(ver, verline)
@@ -100,20 +100,20 @@ if !exists("*s:SpecChangelog")
call s:GetRelVer()
if (chgline == -1)
if chgline == -1
let option = confirm("Can't find %changelog. Create one? ","&End of file\n&Here\n&Cancel",3)
if (option == 1)
if option == 1
call append(line("$"),"")
call append(line("$"),"%changelog")
execute line("$")
let chgline = line(".")
elseif (option == 2)
elseif option == 2
call append(line("."),"%changelog")
normal j
chgline = line(".")
let chgline = line(".")
endif
endif
if (chgline != -1)
if chgline != -1
let tmptime = v:lc_time
language time C
let parsed_format = "* ".strftime(format)." - ".ver."-".rel
@@ -122,16 +122,16 @@ if !exists("*s:SpecChangelog")
let wrong_format = 0
let wrong_release = 0
let insert_line = 0
if (getline(chgline+1) != parsed_format)
if getline(chgline+1) != parsed_format
let wrong_format = 1
endif
if (include_release_info && getline(chgline+2) != release_info)
if include_release_info && getline(chgline+2) != release_info
let wrong_release = 1
endif
if (wrong_format || wrong_release)
if (include_release_info && !wrong_release && !exists("g:spec_chglog_never_increase_release"))
if wrong_format || wrong_release
if include_release_info && !wrong_release && !exists("g:spec_chglog_never_increase_release")
let option = confirm("Increase release? ","&Yes\n&No",1)
if (option == 1)
if option == 1
execute relline
normal 
let rel = substitute(strpart(getline(relline),8), '^[ ]*\([^ ]\+\)[ ]*$','\1','')
@@ -171,13 +171,13 @@ if !exists("*s:ParseRpmVars")
let ret = ""
while (1)
let start = match(a:str, "\%{", end+1)
if (start == -1)
if start == -1
let ret = ret . strpart(a:str, end+1)
break
endif
let ret = ret . strpart(a:str, end+1, start-(end+1))
let end = match(a:str, "}", start)
if (end == -1)
if end == -1
let ret = ret . strpart(a:str, start)
break
endif
@@ -185,7 +185,7 @@ if !exists("*s:ParseRpmVars")
execute a:strline
let definestr = "^[ \t]*%\\(define\\|global\\)[ \t]\\+".varname."[ \t]\\+\\(.*\\)$"
let linenum = search(definestr, "bW")
if (linenum != 0)
if linenum != 0
let ret = ret . substitute(getline(linenum), definestr, "\\2", "")
endif
endwhile

View File

@@ -6,7 +6,16 @@
" See https://swift.org/LICENSE.txt for license information
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
"
" Vim maintainer: Emir SARI <bitigchi@me.com>
" Vim maintainer: Emir SARI <bitigchi@me.com>
" Last Change: 2021 Jan 08
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = "setlocal comments< expandtab< tabstop< shiftwidth< smartindent<"
setlocal comments=s1:/*,mb:*,ex:*/,:///,://
setlocal expandtab

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Aug 14
" Last Change: 2021 Jan 12
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -48,18 +48,23 @@ setlocal isk+=#
" Use :help to lookup the keyword under the cursor with K.
setlocal keywordprg=:help
" Set 'comments' to format dashed lists in comments
" Avoid that #{} starts a comment.
setlocal com=sO:\"\ -,mO:\"\ \ ,sO:#\ -,mO:#\ \ ,eO:##,:\",b:#
if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>'
" Set 'comments' to format dashed lists in comments
setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#
" Comments starts with # in Vim9 script
setlocal commentstring=#%s
else
setlocal com=sO:\"\ -,mO:\"\ \ ,:\"
" Comments starts with a double quote in legacy script
setlocal commentstring=\"%s
endif
" Format comments to be up to 78 characters long
if &tw == 0
setlocal tw=78
endif
" Comments start with a double quote; in Vim9 script # would also work
setlocal commentstring=\"%s
if !exists("no_plugin_maps") && !exists("no_vim_maps")
let b:did_add_maps = 1

View File

@@ -2,7 +2,7 @@
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2020-01-10
" Latest Revision: 2020-09-01
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
@@ -19,20 +19,21 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setl com< cms< fo< "
if executable('zsh')
if !has('gui_running') && executable('less')
command! -buffer -nargs=1 RunHelp silent exe '!zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null | LESS= less"' | redraw!
elseif has('terminal')
command! -buffer -nargs=1 RunHelp silent exe ':term zsh -ic "autoload -Uz run-help; run-help <args>"'
else
command! -buffer -nargs=1 RunHelp echo system('zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null"')
endif
if !has('gui_running') && executable('less')
command! -buffer -nargs=1 RunHelp silent exe '!MANPAGER= zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null | LESS= less"' | redraw!
elseif has('terminal')
command! -buffer -nargs=1 RunHelp silent exe ':term zsh -ic "autoload -Uz run-help; run-help <args>"'
else
command! -buffer -nargs=1 RunHelp echo system('zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null"')
endif
if !exists('current_compiler')
compiler zsh
endif
setlocal keywordprg=:RunHelp
setlocal makeprg=zsh\ -n\ --\ %:S
setlocal errorformat=%f:\ line\ %l:\ %m
let b:undo_ftplugin .= 'keywordprg< errorformat< makeprg<'
let b:undo_ftplugin .= 'keywordprg<'
endif
let b:match_words = ',\<if\>:\<elif\>:\<else\>:\<fi\>'
let b:match_words = '\<if\>:\<elif\>:\<else\>:\<fi\>'
\ . ',\<case\>:^\s*([^)]*):\<esac\>'
\ . ',\<\%(select\|while\|until\|repeat\|for\%(each\)\=\)\>:\<done\>'
let b:match_skip = 's:comment\|string\|heredoc\|subst'

View File

@@ -15,7 +15,7 @@ GenericName[eo]=Tekstoredaktilo
GenericName[fr]=Éditeur de texte
GenericName[ja]=テキストエディタ
GenericName[ru]=Текстовый редактор
GenericName[sr]=Текст Едитор
GenericName[sr]=Едитор текст
GenericName[tr]=Metin Düzenleyici
GenericName=Text Editor
# Translators: This is the comment used in the Vim desktop file
@@ -24,7 +24,7 @@ Comment[eo]=Redakti tekstajn dosierojn
Comment[fr]=Éditer des fichiers texte
Comment[ja]=テキストファイルを編集します
Comment[ru]=Редактирование текстовых файлов
Comment[sr]=Уређивање текст фајлова
Comment[sr]=Уређујте текст фајлове
Comment[tr]=Metin dosyaları düzenleyin
Comment=Edit text files
# The translations should come from the po file. Leave them here for now, they will
@@ -112,7 +112,6 @@ Icon[de]=gvim
Icon[eo]=gvim
Icon[fr]=gvim
Icon[ru]=gvim
Icon[sr]=gvim
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=true

13
runtime/indent/dune.vim Normal file
View File

@@ -0,0 +1,13 @@
" Vim indent file
" Language: dune
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/ocaml/vim-ocaml
" Last Change: 2021 Jan 01
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
" dune format-dune-file uses 1 space to indent
setlocal softtabstop=1 shiftwidth=1 expandtab

View File

@@ -1,7 +1,7 @@
" Vim indent script for HTML
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2020 Jul 06
" Last Change: 2020 Dec 11
" Version: 1.0 "{{{
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
@@ -815,7 +815,7 @@ func! s:Alien5()
let idx = match(prevtext, '^\s*\zs<!--')
if idx >= 0
" just below comment start, add a shiftwidth
return idx + shiftwidth()
return indent(prevlnum) + shiftwidth()
endif
" Some files add 4 spaces just below a TODO line. It's difficult to detect

View File

@@ -3,7 +3,7 @@
" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
" Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com>
" URL: http://www.ocaml.info/vim/indent/ocaml.vim
" URL: https://github.com/ocaml/vim-ocaml
" Last Change: 2017 Jun 13
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
@@ -30,7 +30,8 @@ setlocal nosmartindent
" Comment formatting
if !exists("no_ocaml_comments")
if (has("comments"))
setlocal comments=sr:(*,mb:*,ex:*)
setlocal comments=sr:(*\ ,mb:\ ,ex:*)
setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal fo=cqort
endif
endif

View File

@@ -2,7 +2,7 @@
" Language: RPL/2
" Version: 0.2
" Last Change: 2017 Jun 13
" Maintainer: BERTRAND Jo<EFBFBD>l <rpl2@free.fr>
" Maintainer: BERTRAND Joël <rpl2@free.fr>
" Only load this indent file when no other was loaded.
if exists("b:did_indent")

View File

@@ -227,4 +227,4 @@ endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
" vim:sw=2
" vim:sw=2

View File

@@ -21,8 +21,27 @@ let cmd =
" END_INDENT
" START_INDENT
" INDENT_EXE let g:vim_indent_cont = 5
let list = [
\ 'one',
\ 'two']
" END_INDENT
" START_INDENT
" INDENT_EXE unlet g:vim_indent_cont
let list = [
'one',
'two',
]
echo
" END_INDENT
" START_INDENT
" INDENT_AT this-line
func Some()
let f = x " this-line

View File

@@ -21,8 +21,27 @@ let cmd =
" END_INDENT
" START_INDENT
" INDENT_EXE let g:vim_indent_cont = 5
let list = [
\ 'one',
\ 'two']
" END_INDENT
" START_INDENT
" INDENT_EXE unlet g:vim_indent_cont
let list = [
'one',
'two',
]
echo
" END_INDENT
" START_INDENT
" INDENT_AT this-line
func Some()
let f = x " this-line

View File

@@ -1,5 +1,5 @@
"Description: Indent scheme for the tilde weblanguage
"Author: Tobias Rundstr<EFBFBD>m <tobi@tobi.nu>
"Author: Tobias Rundström <tobi@tobi.nu>
"URL: http://tilde.tildesoftware.net
"Last Change: May 8 09:15:09 CEST 2002

View File

@@ -1,7 +1,7 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Sep 27
" Last Change: 2021 Jan 06
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -52,6 +52,7 @@ function GetVimIndentIntern()
return 0
endif
let prev_text = getline(lnum)
let found_cont = 0
" Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function
" and :else. Add it three times for a line that starts with '\' or '"\ '
@@ -83,6 +84,7 @@ function GetVimIndentIntern()
endif
if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat
let found_cont = 1
if exists("g:vim_indent_cont")
let ind = ind + g:vim_indent_cont
else
@@ -114,10 +116,50 @@ function GetVimIndentIntern()
endif
endif
" For a line starting with "}" find the matching "{". If it is at the start
" of the line align with it, probably end of a block.
" Use the mapped "%" from matchit to find the match, otherwise we may match
" a { inside a comment or string.
if cur_text =~ '^\s*}'
if maparg('%') != ''
exe v:lnum
silent! normal %
if line('.') < v:lnum && getline('.') =~ '^\s*{'
let ind = indent('.')
endif
else
" todo: use searchpair() to find a match
endif
endif
" Below a line starting with "}" find the matching "{". If it is at the
" end of the line we must be below the end of a dictionary.
if prev_text =~ '^\s*}'
if maparg('%') != ''
exe lnum
silent! normal %
if line('.') == lnum || getline('.') !~ '^\s*{'
let ind = ind - shiftwidth()
endif
else
" todo: use searchpair() to find a match
endif
endif
" Below a line starting with "]" we must be below the end of a list.
if prev_text =~ '^\s*]'
let ind = ind - shiftwidth()
endif
" A line ending in "{"/"[} is most likely the start of a dict/list literal,
" indent the next line more. Not for a continuation line.
if prev_text =~ '[{[]\s*$' && !found_cont
let ind = ind + shiftwidth()
endif
" Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry,
" :endfun, :enddef, :else and :augroup END.
if cur_text =~ '^\s*\(ene\@!\|}\|cat\|finall\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
if cur_text =~ '^\s*\(ene\@!\|cat\|finall\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
let ind = ind - shiftwidth()
endif

View File

@@ -2,8 +2,9 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Changed: 2019 Dec 02
" Last Changed: 2020 Nov 4th
" Last Change:
" 20200529 - Handle empty closing tags correctly
" 20191202 - Handle docbk filetype
" 20190726 - Correctly handle non-tagged data
" 20190204 - correctly handle wrap tags
@@ -45,7 +46,7 @@ if !exists('b:xml_indent_open')
endif
if !exists('b:xml_indent_close')
let b:xml_indent_close = '.\{-}</'
let b:xml_indent_close = '.\{-}</\|/>.\{-}'
" end pre tag, e.g. </address>
" let b:xml_indent_close = '.\{-}</\(address\)\@!'
endif
@@ -81,7 +82,7 @@ endfun
" [-- return the sum of indents of a:lnum --]
fun! <SID>XmlIndentSum(line, style, add)
if <SID>IsXMLContinuation(a:line) && a:style == 0
if <SID>IsXMLContinuation(a:line) && a:style == 0 && !<SID>IsXMLEmptyClosingTag(a:line)
" no complete tag, add one additional indent level
" but only for the current line
return a:add + shiftwidth()
@@ -131,13 +132,25 @@ fun! XmlIndentGet(lnum, use_syntax_check)
endif
let syn_name_end = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name')
let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name')
let prev_syn_name_end = synIDattr(synID(ptag, strlen(pline) - 1, 1), 'name')
" not needed (yet?)
" let prev_syn_name_start = synIDattr(synID(ptag, match(pline, '\S') + 1, 1), 'name')
endif
if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment'
return <SID>XmlIndentComment(a:lnum)
elseif empty(syn_name_start) && empty(syn_name_end) && a:use_syntax_check
" non-xml tag content: use indent from 'autoindent'
return pind + shiftwidth()
if pline =~ b:xml_indent_close
return pind
elseif !empty(prev_syn_name_end)
" only indent by an extra shiftwidth, if the previous line ends
" with an XML like tag
return pind + shiftwidth()
else
" no extra indent, looks like a text continuation line
return pind
endif
endif
" Get indent from previous tag line
@@ -157,15 +170,28 @@ func! <SID>HasNoTagEnd(line)
return a:line !~ '>\s*$'
endfunc
func! <SID>IsXMLEmptyClosingTag(line)
" Checks whether the line ends with an empty closing tag such as <lb/>
return a:line =~? '<[^>]*/>\s*$'
endfunc
" return indent for a commented line,
" the middle part might be indented one additional level
func! <SID>XmlIndentComment(lnum)
let ptagopen = search(b:xml_indent_open, 'bnW')
let ptagopen = search('.\{-}<[:A-Z_a-z]\_[^/]\{-}>.\{-}', 'bnW')
let ptagclose = search(b:xml_indent_close, 'bnW')
if getline(a:lnum) =~ '<!--'
" if previous tag was a closing tag, do not add
" one additional level of indent
if ptagclose > ptagopen && a:lnum > ptagclose
" If the previous tag was closed on the same line as it was
" declared, we should indent with its indent level.
if !<SID>IsXMLContinuation(getline(ptagclose))
return indent(ptagclose)
else
return indent(ptagclose) - shiftwidth()
endif
elseif ptagclose == ptagopen
return indent(ptagclose)
else
" start of comment, add one indentation level

File diff suppressed because it is too large Load Diff

23
runtime/keymap/korean.vim Normal file
View File

@@ -0,0 +1,23 @@
" Maintainer: Jang Whemoon <palindrom615@gmail.com>
" Last Change: Nov 24, 2020
"
"
"
" Unlike Japanese or Chinese, modern Korean texts do not depends on conversion
" to Hanja (Chinese character). Thus, general Korean text totally can be
" covered without help of IME but this keymap.
"
" BUT, simply mapping each letter of Hangul with sequence of alphabet 1 by 1
" can fail to combine Hangul jamo (conconants and vowels) right.
" For example, sequentially pressing `ㅅㅓㅇㅜㄹㄷㅐㅎㅏㄱㅛ` can not only be
" combined as `서울대학교`, but alse `성ㅜㄹ댛ㅏㄱ교`, which is totally
" nonsense.
" Though combining Hangul is deterministic with law that each letter must be
" one of (consonant + vowel) or (consonant + vowel + consonant), there is no
" way to apply such law without implementing input engine.
"
" Thus, user of this keymap should wait until previous hangul letter is
" completed before typing next one. To reduce such inconvenience, I suggest to
" set `timeoutlen` with their own value. (default value is 1000ms)
source <sfile>:p:h/korean-dubeolsik_utf-8.vim

View File

@@ -1,3 +1,3 @@
" Menu Translations: Turkish
source <sfile>:p:h/menu_tr_tr.cp1254.vim
source <sfile>:p:h/menu_tr_tr.cp1254.vim

Some files were not shown because too many files have changed in this diff Show More