Compare commits

...

279 Commits

Author SHA1 Message Date
Bram Moolenaar
b8a9296ced patch 8.2.1496: Vim9: cannot use " #" in a mapping
Problem:    Vim9: cannot use " #" in a mapping.
Solution:   Do not remove a comment with the EX_NOTRLCOM flag. (closes #6746)
2020-08-20 18:02:47 +02:00
Bram Moolenaar
df2524bbb4 patch 8.2.1495: "make clean" may delete too many files
Problem:    "make clean" may delete too many files.
Solution:   Do not delete $APPDIR. (closes #6751)
2020-08-20 16:16:27 +02:00
Bram Moolenaar
825b54415f patch 8.2.1494: missing change to calling eval_getline()
Problem:    Missing change to calling eval_getline().
Solution:   Change last argument.
2020-08-20 15:52:21 +02:00
Bram Moolenaar
fc2a47ffc4 patch 8.2.1493: not enough test coverage for the spell file handling
Problem:    Not enough test coverage for the spell file handling.
Solution:   Add spell file tests. (Yegappan Lakshmanan, closes #6728)
2020-08-20 15:41:55 +02:00
Bram Moolenaar
20b23c6358 patch 8.2.1492: build failures
Problem:    Build failures.
Solution:   Move typedef out of #ifdef.  Adjust argument types.  Discover
            America.
2020-08-20 15:25:00 +02:00
Bram Moolenaar
66250c932e patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Problem:    Vim9: crash when compiling heredoc lines start with comment.
Solution:   Skip over NULL pointers. Do not remove comment and empty lines
            when fetching function lines. (closes #6743)
2020-08-20 15:02:42 +02:00
Bram Moolenaar
93ad14710b patch 8.2.1490: Vim9: using /= with float and number doesn't work
Problem:    Vim9: using /= with float and number doesn't work.
Solution:   Better support assignment with operator. (closes #6742)
2020-08-19 22:02:41 +02:00
Bram Moolenaar
191929b182 patch 8.2.1489: Vim9: error when setting an option with setbufvar()
Problem:    Vim9: error when setting an option with setbufvar().
Solution:   Do not get a number from a string value. (closes #6740)
2020-08-19 21:20:49 +02:00
Bram Moolenaar
9dc1917f42 patch 8.2.1488: text does not scroll when inserting above first line
Problem:    Text does not scroll when inserting above first line.
Solution:   Adjust off-by-one error. (Ken Takata, closes #6739)
2020-08-19 20:19:48 +02:00
Bram Moolenaar
a7c4e74763 patch 8.2.1487: Travis: installing snd-dummy is not always useful
Problem:    Travis: installing snd-dummy is not always useful.
Solution:   Only install snd-dummy on amd64. (Ozaki Kiichi, closes #6738)
2020-08-19 19:46:12 +02:00
Bram Moolenaar
f8abbf37d6 patch 8.2.1486: Vim9: readdir() expression doesn't accept bool
Problem:    Vim9: readdir() expression doesn't accept bool.
Solution:   Merge with code for readdirex(). (closes #6737)
2020-08-19 16:00:06 +02:00
Bram Moolenaar
af8822ce08 patch 8.2.1485: Vim9: readdirex() expression doesn't accept bool
Problem:    Vim9: readdirex() expression doesn't accept bool.
Solution:   Accept both -1 and bool. (closes #6737)
2020-08-19 13:55:01 +02:00
Bram Moolenaar
9b02d64cff patch 8.2.1484: flaky failure in assert_fails()
Problem:    Flaky failure in assert_fails().
Solution:   Only used fourth argument if there is a third argument.
2020-08-18 23:24:13 +02:00
Bram Moolenaar
165036ddba patch 8.2.1483: Vim9: error for using special as number
Problem:    Vim9: error for using special as number when returning "false"
            from a popup filter.
Solution:   Use tv_get_bool(). (closes #6733)
2020-08-18 22:50:38 +02:00
Bram Moolenaar
aeb2bdd0de patch 8.2.1482: Vim9: crash when using a nested lambda
Problem:    Vim9: crash when using a nested lambda.
Solution:   Do not clear the growarray when not evaluating.  Correct pointer
when getting the next line. (closes #6731)
2020-08-18 22:32:03 +02:00
Bram Moolenaar
3affe7a6c6 patch 8.2.1481: Vim9: line number reported with error may be wrong
Problem:    Vim9: line number reported with error may be wrong.
Solution:   Check line number in tests.
2020-08-18 20:34:13 +02:00
Bram Moolenaar
e15eebd202 patch 8.2.1480: Vim9: skip expression in search() gives error
Problem:    Vim9: skip expression in search() gives error.
Solution:   use tv_get_bool() eval_expr_to_bool(). (closes #6729)
2020-08-18 19:11:38 +02:00
Bram Moolenaar
1d634542cf patch 8.2.1479: Vim9: error for list index uses wrong line number
Problem:    Vim9: error for list index uses wrong line number.
Solution:   Set source line number. (closes #6724)  Add a way to assert the
            line number of the error with assert_fails().
2020-08-18 13:41:50 +02:00
Bram Moolenaar
558813314d patch 8.2.1478: Vim9: cannot use "true" for some popup options
Problem:    Vim9: cannot use "true" for some popup options.
Solution:   Add dict_get_bool(). (closes #6725)
2020-08-18 13:04:15 +02:00
Bram Moolenaar
f39397e515 patch 8.2.1477: Vim9: error when using bufnr('%')
Problem:    Vim9: error when using bufnr('%').
Solution:   Don't give an error for using a string argument. (closes #6723)
2020-08-17 22:21:36 +02:00
Bram Moolenaar
aa9675a61d patch 8.2.1476: filetype test fails on MS-Windows
Problem:    Filetype test fails on MS-Windows.
Solution:   Remove "^" from pattern.
2020-08-17 21:57:09 +02:00
Bram Moolenaar
36967b32fd patch 8.2.1475: Vim9: can't use v:true for option flags
Problem:    Vim9: can't use v:true for option flags.
Solution:   Add tv_get_bool_chk(). (closes #6725)
2020-08-17 21:41:02 +02:00
Bram Moolenaar
624b6eaf20 patch 8.2.1474: /usr/lib/udef/rules.d not recognized as udevrules
Problem:    /usr/lib/udef/rules.d not recognized as udevrules.
Solution:   Adjust match pattern. (Haochen Tong, closes 36722)
2020-08-17 21:17:25 +02:00
Bram Moolenaar
021bda5671 patch 8.2.1473: items in a list given to :const can still be modified
Problem:    Items in a list given to :const can still be modified.
Solution:   Work like ":lockvar! name" but don't lock referenced items.
            Make locking a blob work.
2020-08-17 21:07:22 +02:00
Bram Moolenaar
7b22117c4e patch 8.2.1472: ":argdel" does not work like ":.argdel" as documented
Problem:    ":argdel" does not work like ":.argdel" as documented. (Alexey
            Demin)
Solution:   Make ":argdel" work like ":.argdel". (closes #6727)
            Also fix giving the error "0 more files to edit".
2020-08-17 19:34:10 +02:00
Bram Moolenaar
241572794f patch 8.2.1471: :const only locks the variable, not the value
Problem:    :const only locks the variable, not the value.
Solution:   Lock the value as ":lockvar 1 var" would do. (closes #6719)
2020-08-16 22:50:01 +02:00
Bram Moolenaar
c0f8823ee4 patch 8.2.1470: errors in spell file not tested
Problem:    Errors in spell file not tested.
Solution:   Add test for spell file errors. (Yegappan Lakshmanan,
            closes #6721)
2020-08-16 21:51:49 +02:00
Bram Moolenaar
0aae4809fd patch 8.2.1469: Vim9: cannot assign string to string option
Problem:    Vim9: cannot assign string to string option.
Solution:   Change checks for option value. (closes #6720)
2020-08-16 21:29:05 +02:00
Bram Moolenaar
f923571ec1 patch 8.2.1468: Vim9: invalid error for missing white space
Problem:    Vim9: invalid error for missing white space.
Solution:   Don't skip over white space after index. (closes #6718)
2020-08-16 18:42:53 +02:00
Bram Moolenaar
e5abf7af08 patch 8.2.1467: Vim9: :echomsg doesn't like a dict argument
Problem:    Vim9: :echomsg doesn't like a dict argument.
Solution:   Convert arguments like in legacy script. (closes #6717)
2020-08-16 18:29:35 +02:00
Bram Moolenaar
cc673e746a patch 8.2.1466: Vim9: cannot index or slice a variable with type "any"
Problem:    Vim9: cannot index or slice a variable with type "any".
Solution:   Add runtime index and slice.
2020-08-16 17:33:35 +02:00
Bram Moolenaar
56acb0943e patch 8.2.1465: Vim9: subscript not handled properly
Problem:    Vim9: subscript not handled properly.
Solution:   Adjust error message.  Remove dead code.  Disallow string to
            number conversion in scripts.
2020-08-16 14:48:19 +02:00
Bram Moolenaar
829ac868b7 patch 8.2.1464: Vim9: build warning for unused variable
Problem:    Vim9: build warning for unused variable.
Solution:   Delete the variable declaration.
2020-08-15 22:48:48 +02:00
Bram Moolenaar
ed5918771f patch 8.2.1463: Vim9: list slice not supported yet
Problem:    Vim9: list slice not supported yet.
Solution:   Add support for list slicing.
2020-08-15 22:14:53 +02:00
Bram Moolenaar
11107bab7e patch 8.2.1462: Vim9: string slice not supported yet
Problem:    Vim9: string slice not supported yet.
Solution:   Add support for string slicing.
2020-08-15 21:10:16 +02:00
Bram Moolenaar
3d1cde8a2f Update runtime files. 2020-08-15 18:55:18 +02:00
Bram Moolenaar
e3c37d8ebf patch 8.2.1461: Vim9: string indexes are counted in bytes
Problem:    Vim9: string indexes are counted in bytes.
Solution:   Use character indexes. (closes #6574)
2020-08-15 18:39:05 +02:00
Bram Moolenaar
451c2e3536 patch 8.2.1460: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more messages into errors.h.
2020-08-15 16:33:28 +02:00
Bram Moolenaar
53b29e4845 patch 8.2.1459: Vim9: declaring script var in script does not infer the type
Problem:    Vim9: declaring ascript variable at the script level does not
            infer the type.
Solution:   Get the type from the value. (closes #6716)
2020-08-15 14:31:20 +02:00
Bram Moolenaar
9a5c553f79 patch 8.2.1458: .gawk files not recognized
Problem:    .gawk files not recognized.
Solution:   Recognize .gawk files. (Doug Kearns)
2020-08-15 14:07:23 +02:00
Bram Moolenaar
793dcc540d patch 8.2.1457: Vim9: the output of :disassemble cannot be interrupted
Problem:    Vim9: the output of :disassemble cannot be interrupted.
Solution:   Check got_int. (closes #6715)
2020-08-15 13:49:17 +02:00
Bram Moolenaar
1623619119 patch 8.2.1456: MS-Windows: test files are not deleted
Problem:    MS-Windows: test files are not deleted.
Solution:   use "del" instead of $(DEL).
2020-08-14 23:08:22 +02:00
Bram Moolenaar
d1103587cf patch 8.2.1455: Vim9: crash when using typecast before constant
Problem:    Vim9: crash when using typecast before constant.
Solution:   Generate constant before checking type.  Add tets.
2020-08-14 22:44:25 +02:00
Bram Moolenaar
79e8db9a21 patch 8.2.1454: Vim9: failure invoking lambda with wrong arguments
Problem:    Vim9: failure invoking lambda with wrong arguments.
Solution:   Handle invalid arguments.  Add a test.
2020-08-14 22:16:33 +02:00
Bram Moolenaar
8de2f44ac6 patch 8.2.1453: Vim9: failure to compile lambda not tested
Problem:    Vim9: failure to compile lambda not tested.
Solution:   Add a test case.
2020-08-14 21:49:08 +02:00
Bram Moolenaar
8d56622944 patch 8.2.1452: Vim9: dead code in to_name_end()
Problem:    Vim9: dead code in to_name_end().
Solution:   Remove check for lambda and dict, it won't be used.
2020-08-14 21:42:54 +02:00
Bram Moolenaar
41fab3eac8 patch 8.2.1451: Vim9: list type at script level only uses first item
Problem:    Vim9: list type at script level only uses first item.
Solution:   Use all members, like in a compiled function. (closes #6712)
            Also for dictionary.
2020-08-14 21:27:37 +02:00
Bram Moolenaar
7d6997015d patch 8.2.1450: Vim9: no check that script-local items don't become global
Problem:    Vim9: no check that script-local items don't become global.
Solution:   Add a test.
2020-08-14 20:52:28 +02:00
Bram Moolenaar
32a23ac615 patch 8.2.1449: some test makefiles delete files that are not generated
Problem:    Some test makefiles delete files that are not generated.
Solution:   Remove the deletion commands.
2020-08-14 19:20:23 +02:00
Bram Moolenaar
4ac97f4761 patch 8.2.1448: test 77a for VMS depends on small.vim which does not exist
Problem:    Test 77a for VMS depends on small.vim which does not exist.
Solution:   Use the 'silent while 0" trick. (issue #6696)
2020-08-14 19:11:03 +02:00
Bram Moolenaar
32f335f75c patch 8.2.1447: Vim9: return type of keys() is list<any>
Problem:    Vim9: return type of keys() is list<any>.
Solution:   Should be list<string>. (closes #6711)
2020-08-14 18:56:45 +02:00
Bram Moolenaar
7517ffdbb5 patch 8.2.1446: Vim9: line number in error message is not correct
Problem:    Vim9: line number in error message is not correct.
Solution:   Set SOURCING_LNUM before calling emsg(). (closes #6708)
2020-08-14 18:35:07 +02:00
Bram Moolenaar
c4ce36d486 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Problem:    Vim9: function expanded name is cleared when sourcing a script
            again.
Solution:   Only clear the expanded name when deleting the function.
            (closes #6707)
2020-08-14 17:08:15 +02:00
Bram Moolenaar
bc4c505166 patch 8.2.1444: error messages are spread out and names can be confusing
Problem:    Error messages are spread out and names can be confusing.
Solution:   Start moving error messages to a separate file and use clear
            names.
2020-08-13 22:47:35 +02:00
Bram Moolenaar
cdd70f09a5 patch 8.2.1443: Vim9: crash when interrupting a nested :def function
Problem:    Vim9: crash when interrupting a nested :def function.
Solution:   Push a dummy return value onto the stack. (closes #6701)
2020-08-13 21:40:18 +02:00
Bram Moolenaar
be7529e889 patch 8.2.1442: outdated references to the Mac Carbon GUI
Problem:    Outdated references to the Mac Carbon GUI.
Solution:   Remove or update references. (Yee Cheng Chin, closes #6703)
2020-08-13 21:05:39 +02:00
Bram Moolenaar
c771908681 patch 8.2.1441: running tests in tiny version gives error for summarize.vim
Problem:    Running tests in tiny version gives error for summarize.vim.
Solution:   Set 'cpoptions' to allow for line continuation.  Restore
            redirecting test output to /dev/null.
2020-08-13 19:42:39 +02:00
Bram Moolenaar
16c6232cad patch 8.2.1440: debugger code insufficiently tested
Problem:    Debugger code insufficiently tested.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #6700)
2020-08-13 19:20:04 +02:00
Bram Moolenaar
b96a32ef1a patch 8.2.1439: tiny and small builds have no test coverage
Problem:    Tiny and small builds have no test coverage.
Solution:   Restore tests that do not depend on the +eval feature.
            (Ken Takata, closes #6696)
2020-08-13 18:59:55 +02:00
Bram Moolenaar
7ac616cb0a patch 8.2.1438: missing tests for interrupting script execution from debugger
Problem:    Missing tests for interrupting script execution from debugger.
Solution:   Add tests. (Yegappan Lakshmanan, closes #6697)
2020-08-12 22:22:09 +02:00
Bram Moolenaar
c9edd6b582 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Problem:    Vim9: 'statusline' is evaluated using Vim9 script syntax.
Solution:   Always use legacy script syntax.
2020-08-12 22:18:23 +02:00
Bram Moolenaar
66e0014ba6 patch 8.2.1436: function implementing :substitute has unexpected name
Problem:    Function implementing :substitute has unexpected name.
Solution:   Rename from do_sub() to ex_substitute().
2020-08-12 21:58:12 +02:00
Bram Moolenaar
418f1df547 patch 8.2.1435: Vim9: always converting to string for ".." leads to mistakes
Problem:    Vim9: always converting to string for ".." leads to mistakes.
Solution:   Only automatically convert simple types.
2020-08-12 21:34:49 +02:00
Bram Moolenaar
fd77748df2 patch 8.2.1434: Vim9: crash when lambda uses outer function argument
Problem:    Vim9: crash when lambda uses outer function argument.
Solution:   Set the flag that the outer context is used.
2020-08-12 19:42:01 +02:00
Bram Moolenaar
ba60cc45e7 patch 8.2.1433: Vim9: cannot mingle comments in multi-line lambda
Problem:    Vim9: cannot mingle comments in multi-line lambda.
Solution:   Skip over NULL lines. (closes #6694)
2020-08-12 19:15:33 +02:00
Bram Moolenaar
6d91bcb4d2 patch 8.2.1432: various inconsistencies in test files
Problem:    Various inconsistencies in test files.
Solution:   Add modelines where they were missing.  Use Check commands instead
            of silently skipping over tests.  Adjust indents and comments.
            (Ken Takata, closes #6695)
2020-08-12 18:50:36 +02:00
Bram Moolenaar
c3d6e8a46a patch 8.2.1431: Vim9: no error for white space before comma in dict
Problem:    Vim9: no error for white space before comma in dict.
Solution:   Check for extra white space. (closes #6674)
2020-08-12 18:34:28 +02:00
Bram Moolenaar
db199216e8 patch 8.2.1430: Vim9: error for missing comma instead of extra white space
Problem:    Vim9: error for missing comma instead of extra white space.
Solution:   Check if comma can be found after white space. (closes #6668)
            Also check for extra white space in literal dict. (closes #6670)
2020-08-12 18:01:53 +02:00
Bram Moolenaar
17a836cbee patch 8.2.1429: Vim9: no error for missing white after : in dict
Problem:    Vim9: no error for missing white after : in dict.
Solution:   Check for white space. (closes #6671)  Also check that there is no
            white before the :.
2020-08-12 17:35:58 +02:00
Bram Moolenaar
ed677f5587 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Problem:    Vim9: :def function does not abort on nested function error.
Solution:   Check whether an error message was given. (closes #6691)
2020-08-12 16:38:10 +02:00
Bram Moolenaar
7c5ad34878 patch 8.2.1427: Vim9: cannot use a range with marks in :def function
Problem:    Vim9: cannot use a range with marks in :def function.
Solution:   Parse range after colon. (closes #6686)
2020-08-12 15:48:55 +02:00
Bram Moolenaar
a177344dc0 patch 8.2.1426: Vim9: cannot call autoload function in :def function
Problem:    Vim9: cannot call autoload function in :def function.
Solution:   Load the autoload script. (closes #6690)
2020-08-12 15:21:22 +02:00
Bram Moolenaar
575f24b3f3 patch 8.2.1425: Vim9: cannot use call() without :call
Problem:    Vim9: cannot use call() without :call.
Solution:   Do not skip over "call(". (closes #6689)
2020-08-12 14:21:11 +02:00
Bram Moolenaar
040f975fc1 patch 8.2.1424: Mac build fails
Problem:    Mac build fails.
Solution:   Adjust configure to not fall back to Athena.  Adjust some other
            files.
2020-08-11 23:08:48 +02:00
Bram Moolenaar
035d6e91bd patch 8.2.1423: Vim9: find global function when looking for script-local
Problem:    Vim9: find global function when looking for script-local.
Solution:   Don't strip prefix if name starts with "s:". (closes #6688)
2020-08-11 22:30:42 +02:00
Bram Moolenaar
097148e849 patch 8.2.1422: the Mac GUI implementation is outdated
Problem:    The Mac GUI implementation is outdated and probably doesn't even
            work.
Solution:   Remove the Mac GUI code.  The MacVim project provides the
            supported Vim GUI version.
2020-08-11 21:58:20 +02:00
Bram Moolenaar
4301a729ea patch 8.2.1421: Vim9: handling "+" and "-" before number differs from script
Problem:    Vim9: handling "+" and "-" before number differs from Vim script.
Solution:   Use the same sequence of commands.
2020-08-11 20:51:08 +02:00
Bram Moolenaar
f7c4d83609 patch 8.2.1420: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert remaining parts to new style. Remove obsolete items.
            (Yegappan Lakshmanan, closes #6683)
2020-08-11 20:42:19 +02:00
Bram Moolenaar
59eccb92e3 patch 8.2.1419: Vim9: not operator applied too early
Problem:    Vim9: not operator applied too early.
Solution:   Implement the "numeric_only" argument. (closes #6680)
2020-08-10 23:09:37 +02:00
Bram Moolenaar
8294d49937 patch 8.2.1418: Vim9: invalid error for missing white space
Problem:    Vim9: invalid error for missing white space after function.
Solution:   Do not skip over white space. (closes #6679)
2020-08-10 22:40:56 +02:00
Bram Moolenaar
efb6482949 patch 8.2.1417: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert more parts to new style test. (Yegappan Lakshmanan,
            closes #6682)
2020-08-10 22:15:30 +02:00
Bram Moolenaar
3e06a1e2a8 patch 8.2.1416: Vim9: boolean evaluation does not work as intended
Problem:    Vim9: boolean evaluation does not work as intended.
Solution:   Use tv2bool() in Vim9 script. (closes #6681)
2020-08-10 21:57:54 +02:00
Bram Moolenaar
6f8f7337c1 patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Problem:    Closing a popup window with CTRL-C interrupts 'statusline' if it
            calls a function.
Solution:   Reset got_int while redrawing. (closes #6675)
2020-08-10 21:19:23 +02:00
Bram Moolenaar
bf61fdd008 patch 8.2.1414: popupwindow missing last couple of lines
Problem:    Popupwindow missing last couple of lines when cursor is in the
            first line.
Solution:   Compute the max height also when top aligned. (closes #6664)
2020-08-10 20:39:17 +02:00
Bram Moolenaar
94f4ffa770 patch 8.2.1413: previous tab page not usable from an Ex command
Problem:    Previous tab page not usable from an Ex command.
Solution:   Add the "#" argument for :tabnext et al. (Yegappan Lakshmanan,
            closes #6677)
2020-08-10 19:21:15 +02:00
Bram Moolenaar
6e4cfffe80 patch 8.2.1412: Vim: not operator does not result in boolean
Problem:    Vim: not operator does not result in boolean.
Solution:   Make type depend on operator. (issue 6678)  Fix using "false" and
            "true" in Vim9 script.
2020-08-09 22:17:55 +02:00
Bram Moolenaar
a9a47d157a patch 8.2.1411: when splitting a window localdir is copied but prevdir is not
Problem:    when splitting a window localdir is copied but prevdir is not.
Solution:   Also copy prevdir. (closes #6667)
2020-08-09 21:45:52 +02:00
Bram Moolenaar
7f7a888869 patch 8.2.1410: adding compiler plugin requires test change
Problem:    Adding compiler plugin requires test change.
Solution:   Include compiler plugin and adjust test.
2020-08-09 20:05:41 +02:00
Bram Moolenaar
1e91eafc2e patch 8.2.1409: nmpmrc and php.ini filetypes not recognized
Problem:    Nmpmrc and php.ini filetypes not recognized.
Solution:   Add filetype detection. (Doug Kearns)
2020-08-09 19:32:39 +02:00
Bram Moolenaar
64d662d5fc patch 8.2.1408: Vim9: type casting not supported
Problem:    Vim9: type casting not supported.
Solution:   Introduce type casting.
2020-08-09 19:02:50 +02:00
Bram Moolenaar
127542bceb patch 8.2.1407: Vim9: type of list and dict only depends on first item
Problem:    Vim9: type of list and dict only depends on first item.
Solution:   Use all items to decide about the type.
2020-08-09 17:22:04 +02:00
Bram Moolenaar
a1b9b0cc01 patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Problem:    Popupwindow lacks scrollbar if no "maxheight" is used.
Solution:   Compute the max height depending on the position. (closes #6664)
2020-08-09 16:37:48 +02:00
Bram Moolenaar
a7cc9e697b patch 8.2.1405: Vim9: vim9compile.c is getting too big
Problem:    Vim9: vim9compile.c is getting too big.
Solution:   Split off type code to vim9type.c.
2020-08-09 15:25:14 +02:00
Bram Moolenaar
b3ca982407 patch 8.2.1404: Vim9: script test fails in the GUI
Problem:    Vim9: script test fails in the GUI.
Solution:   Use another key to map.  Improve cleanup.
2020-08-09 14:43:58 +02:00
Bram Moolenaar
3896a105eb patch 8.2.1403: Vim9: Vim highlighting may fail in cmdline window
Problem:    Vim9: Vim highlighting fails in cmdline window if it uses Vim9
            commands.
Solution:   Allow using :vim9script, :import and :export while in the cmdline
            window. (closes #6656)
2020-08-09 14:33:55 +02:00
Bram Moolenaar
94f6c06ac5 patch 8.2.1402: s390x tests always fail
Problem:    s390x tests always fail.
Solution:   Temporarily disable s390x tests.
2020-08-09 14:07:52 +02:00
Bram Moolenaar
62a232506d patch 8.2.1401: cannot jump to the last used tabpage
Problem:    Cannot jump to the last used tabpage.
Solution:   Add g<Tab> and tabpagnr('#'). (Yegappan Lakshmanan, closes #6661,
            neovim #11626)
2020-08-09 14:04:42 +02:00
Bram Moolenaar
730b248339 patch 8.2.1400: Vim9: test does not delete written files
Problem:    Vim9: test does not delete written files.
Solution:   Correct file names.
2020-08-09 13:02:10 +02:00
Bram Moolenaar
efa94447e8 patch 8.2.1399: Vim9: may find imported item in wrong script
Problem:    Vim9: may find imported item in wrong script.
Solution:   When looking up script-local function use the embedded script ID.
            (issue #6644)
2020-08-08 22:16:00 +02:00
Bram Moolenaar
daa2f36573 patch 8.2.1398: autoload script sourced twice if sourced directly
Problem:    Autoload script sourced twice if sourced directly.
Solution:   Do not source an autoload script again. (issue #6644)
2020-08-08 21:33:21 +02:00
Bram Moolenaar
4a6d1b660f patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Problem:    Vim9: return type of maparg() not adjusted for fourth argument.
Solution:   Check if fourth argument is present. (closes #6645)
2020-08-08 17:55:49 +02:00
Bram Moolenaar
5a849da57c patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Problem:    Vim9: no error for unexpectedly returning a value.
Solution:   Only set the return type for lambda's.  Make using function type
            in a function reference work.
2020-08-08 16:47:30 +02:00
Bram Moolenaar
98b4f145eb patch 8.2.1395: Vim9: no error if declaring a funcref with lower case letter
Problem:    Vim9: no error if declaring a funcref with a lower case letter.
Solution:   Check the name after the type is inferred. Fix confusing name.
2020-08-08 15:46:01 +02:00
Bram Moolenaar
2dd0a2c39a patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Problem:    Vim9: compiling a function interferes with command modifiers.
Solution:   Save and restore command modifiers. (closes #6658)
2020-08-08 15:10:27 +02:00
Bram Moolenaar
b7f4fa5177 patch 8.2.1393: insufficient testing for script debugging
Problem:    Insufficient testing for script debugging.
Solution:   Add more tests. (Ben Jackson)
2020-08-08 14:41:52 +02:00
Bram Moolenaar
bf8feb5aeb patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Problem:    Vim9: error line number incorrect after skipping over comment
            lines.
Solution:   Insert empty lines for skipped lines.
2020-08-08 14:26:31 +02:00
Bram Moolenaar
fa211f3c6d patch 8.2.1391: Vim9: no error for shadowing a script function
Problem:    Vim9: no error for shadowing a script function.
Solution:   Check for already defined items. (closes #6652)
2020-08-07 22:00:26 +02:00
Bram Moolenaar
1c199f9c70 patch 8.2.1390: Vim9: type error after storing an option value
Problem:    Vim9: type error after storing an option value.
Solution:   Drop the type after a STOREOPT instruction. (closes #6632)
2020-08-07 21:28:34 +02:00
Bram Moolenaar
74d95b5b58 patch 8.2.1389: file missing from the distribution
Problem:    File missing from the distribution.
Solution:   Add script_util.vim to the list of distributes files.
2020-08-07 20:47:39 +02:00
Bram Moolenaar
dd29f1b056 patch 8.2.1388: Vim9: += only works for numbers
Problem:    Vim9: += only works for numbers.
Solution:   Use += as concatenate for a list. (closes #6646)
2020-08-07 20:46:20 +02:00
Bram Moolenaar
e7b1ea0276 Update runtime files. 2020-08-07 19:54:59 +02:00
Bram Moolenaar
95dd9f2571 patch 8.2.1387: Vim9: cannot assign to single letter variable with type
Problem:    Vim9: cannot assign to single letter variable with type.
Solution:   Exclude the colon from the variable name. (closes #6647)
2020-08-07 19:28:08 +02:00
Bram Moolenaar
994b89d28d patch 8.2.1386: backslash not removed afer space with space in 'isfname'
Problem:    Backslash not removed afer space in option with space in
            'isfname'.
Solution:   Do remove backslash before space, also when it is in 'isfname'.
            (Yasuhiro Matsumoto, closes #6651)
2020-08-07 19:12:41 +02:00
Bram Moolenaar
de6804d871 patch 8.2.1385: no testing on ARM
Problem:    No testing on ARM.
Solution:   Add a test on Travis for ARM. (Ozaki Kiichi, closes #6615)
2020-08-07 18:33:19 +02:00
Bram Moolenaar
8ce4b7ed85 patch 8.2.1384: no ATTENTION prompt for :vimgrep first match file
Problem:    No ATTENTION prompt for :vimgrep first match file.
Solution:   When there is an existing swap file do not keep the dummy buffer.
            (closes #6649)
2020-08-07 18:12:18 +02:00
Bram Moolenaar
9470a4d88a patch 8.2.1383: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert test cases to new style. (Yegappan Lakshmanan,
            closes #6638)
2020-08-07 16:49:11 +02:00
Bram Moolenaar
8e1986e389 patch 8.2.1382: Vim9: using :import in filetype plugin gives an error
Problem:    Vim9: using :import in filetype plugin gives an error.
Solution:   Allow commands with the EX_LOCK_OK flag. (closes #6636)
2020-08-06 22:11:06 +02:00
Bram Moolenaar
56b8dc331d patch 8.2.1381: MS-Windows: crash with Python 3.5 when stdin is redirected
Problem:    MS-Windows: crash with Python 3.5 when stdin is redirected.
Solution:   Reconnect stdin. (Yasuhiro Matsumoto, Ken Takata, closes #6641)
2020-08-06 21:47:11 +02:00
Bram Moolenaar
3d945cc925 patch 8.2.1380: Vim9: return type of getreg() is always a string
Problem:    Vim9: return type of getreg() is always a string.
Solution:   Use list of strings when there are three arguments. (closes #6633)
2020-08-06 21:26:59 +02:00
Bram Moolenaar
ae95a3946b patch 8.2.1379: curly braces expression ending in " }" does not work
Problem:    Curly braces expression ending in " }" does not work.
Solution:   Skip over white space when checking for "}". (closes #6634)
2020-08-06 16:38:12 +02:00
Bram Moolenaar
bbd3e3c357 patch 8.2.1378: cannot put space between function name and paren
Problem:    Cannot put space between function name and paren.
Solution:   Allow this for backwards compatibility.
2020-08-06 11:23:36 +02:00
Bram Moolenaar
b8d732e93e patch 8.2.1377: triggering the ATTENTION prompt causes typeahead mess up
Problem:    Triggering the ATTENTION prompt causes typeahead to be messed up.
Solution:   Increment tb_change_cnt. (closes #6541)
2020-08-05 22:07:26 +02:00
Bram Moolenaar
803af686e2 patch 8.2.1376: Vim9: expression mapping causes error for using :import
Problem:    Vim9: expression mapping causes error for using :import.
Solution:   Add EX_LOCK_OK to :import and :export. (closes 3606)
2020-08-05 16:20:03 +02:00
Bram Moolenaar
c5da1fb7ea patch 8.2.1375: Vim9: method name with digit not accepted
Problem:    Vim9: method name with digit not accepted.
Solution:   Use eval_isnamec() instead of eval_isnamec1(). (closes #6613)
2020-08-05 15:43:44 +02:00
Bram Moolenaar
a71e263320 patch 8.2.1374: Vim9: error for assigning empty list to script variable
Problem:    Vim9: error for assigning empty list to script variable.
Solution:   Use t_unknown for empty list member. (closes #6595)
2020-08-05 15:11:03 +02:00
Bram Moolenaar
f9b2b49663 patch 8.2.1373: Vim9: no error for assigning to non-existing script var
Problem:    Vim9: no error for assigning to non-existing script var.
Solution:   Check that in Vim9 script the variable was defined. (closes #6630)
2020-08-05 14:34:14 +02:00
Bram Moolenaar
fdac71c507 patch 8.2.1372: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around ? and :.
2020-08-05 12:44:41 +02:00
Bram Moolenaar
3c1c9fd94b patch 8.2.1371: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around && and ||.
2020-08-05 12:32:38 +02:00
Bram Moolenaar
c753478b82 patch 8.2.1370: MS-Windows: warning for using fstat() with stat_T
Problem:    MS-Windows: warning for using fstat() with stat_T.
Solution:   use _fstat64() if available. (Naruhiko Nishino, closes #6625)
2020-08-05 12:10:50 +02:00
Bram Moolenaar
14ddd226da patch 8.2.1369: MS-Windows: autocommand test sometimes fails
Problem:    MS-Windows: autocommand test sometimes fails.
Solution:   Do not rely on the cat command.
2020-08-05 12:02:40 +02:00
Bram Moolenaar
ff1cd39cfe patch 8.2.1368: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around <, !=, etc.
2020-08-05 11:51:30 +02:00
Bram Moolenaar
b4caa163ff patch 8.2.1367: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around *, / and %.
2020-08-05 11:36:52 +02:00
Bram Moolenaar
a6296200bd patch 8.2.1366: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert several tests to new style. (Yegappan Lakshmanan,
            closes #6629)
2020-08-05 11:23:13 +02:00
Bram Moolenaar
bb1b5e24ec patch 8.2.1365: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space. (closes #6618)
2020-08-05 10:53:21 +02:00
Bram Moolenaar
282f9c64e5 patch 8.2.1364: invalid memory access when searching for raw string
Problem:    Invalid memory access when searching for raw string.
Solution:   Check for delimiter match before following quote. (closes #6578)
2020-08-04 21:46:18 +02:00
Bram Moolenaar
e46a2ed0d8 patch 8.2.1363: test trying to run terminal when it is not supported
Problem:    Test trying to run terminal when it is not supported.
Solution:   Check if Vim can be run in a terminal.
2020-08-04 21:04:57 +02:00
Bram Moolenaar
ecd34bf55d patch 8.2.1362: last entry of ":set term=xxx" overwritten by error message
Problem:    Last entry of ":set term=xxx" overwritten by error message when
            'cmdheight' is two or more. (Tony Mechelynck)
Solution:   Output extra line breaks.
2020-08-04 20:17:31 +02:00
Bram Moolenaar
6a25026262 patch 8.2.1361: error for white space after expression in assignment
Problem:    Error for white space after expression in assignment.
Solution:   Skip over white space. (closes #6617)
2020-08-04 15:53:01 +02:00
Bram Moolenaar
f96e9dec63 patch 8.2.1360: stray error for white space after expression
Problem:    Stray error for white space after expression.
Solution:   Ignore trailing white space. (closes #6608)
2020-08-03 22:39:28 +02:00
Bram Moolenaar
8314454648 patch 8.2.1359: Vim9: cannot assign to / register in Vim9 script
Problem:    Vim9: cannot assign to / register in Vim9 script.
Solution:   Adjust check for assignment in Vim9 script. (closes #6567)
2020-08-02 20:40:43 +02:00
Bram Moolenaar
434d72cbf2 patch 8.2.1358: Vim9: test fails with +dnd is not available
Problem:    Vim9: test fails with +dnd is not available.
Solution:   Add condition.
2020-08-02 20:03:25 +02:00
Bram Moolenaar
658217276f patch 8.2.1357: Vim9: cannot assign to / register
Problem:    Vim9: cannot assign to / register.
Solution:   Adjust check for assignment.
2020-08-02 18:58:54 +02:00
Bram Moolenaar
7226e5b19b patch 8.2.1356: Vim9: cannot get the percent register
Problem:    Vim9: cannot get the percent register.
Solution:   Check for readable registers instead of writable. (closes #6566)
2020-08-02 17:33:26 +02:00
Bram Moolenaar
c2ee44cc38 patch 8.2.1355: Vim9: no error using :let for options and registers
Problem:    Vim9: no error using :let for options and registers.
Solution:   Give an error. (closes #6568)
2020-08-02 16:59:00 +02:00
Bram Moolenaar
aa970abd0a patch 8.2.1354: test 59 is old style
Problem:    Test 59 is old style.
Solution:   Convert into a new style test. (Yegappan Lakshmanan, closes #6604)
2020-08-02 16:10:39 +02:00
Bram Moolenaar
8b89614e69 patch 8.2.1353: crash when drawing double-wide character in terminal window
Problem:    Crash when drawing double-wide character in terminal window.
            (Masato Nishihata)
Solution:   Check getcell() returning NULL. (issue #6141)
2020-08-02 15:05:05 +02:00
Bram Moolenaar
ad486a0f0d patch 8.2.1352: Vim9: no error for shadowing a script-local function
Problem:    Vim9: no error for shadowing a script-local function by a nested
            function.
Solution:   Check for script-local function. (closes #6586)
2020-08-01 23:22:18 +02:00
Bram Moolenaar
bcbf41395f patch 8.2.1351: Vim9: no proper error if using namespace for nested function
Problem:    Vim9: no proper error if using namespace for nested function.
Solution:   Specifically check for a namespace. (closes #6582)
2020-08-01 22:35:13 +02:00
Bram Moolenaar
b9a2cac3ef patch 8.2.1350: Vim9: no test for error message when redefining function
Problem:    Vim9: no test for error message when redefining function.
Solution:   Add a test.
2020-08-01 22:23:20 +02:00
Bram Moolenaar
eef2102e20 patch 8.2.1349: Vim9: can define a function with the name of an import
Problem:    Vim9: can define a function with the name of an import.
Solution:   Disallow using an existing name. (closes #6585)
2020-08-01 22:16:43 +02:00
Bram Moolenaar
e4218b9416 patch 8.2.1348: build failure without the eval feature
Problem:    Build failure without the eval feature.
Solution:   Add #ifdef.
2020-08-01 21:11:38 +02:00
Bram Moolenaar
909443028b patch 8.2.1347: cannot easily get the script ID
Problem:    Cannot easily get the script ID.
Solution:   Support expand('<SID>').
2020-08-01 20:45:11 +02:00
Bram Moolenaar
491799be50 patch 8.2.1346: small build fails
Problem:    Small build fails.
Solution:   Add #ifdef.
2020-08-01 19:23:43 +02:00
Bram Moolenaar
f8992d47cd patch 8.2.1345: Redraw error when using visual block and scroll
Problem:    Redraw error when using visual block and scroll.
Solution:   Add check for w_topline. ( closes #6597)
2020-08-01 19:14:13 +02:00
Bram Moolenaar
2c79e9d14d patch 8.2.1344: Vim9: No test for trying to redefine global function
Problem:    Vim9: No test for trying to redefine global function.
Solution:   Add a test.
2020-08-01 18:57:52 +02:00
Bram Moolenaar
333894b195 patch 8.2.1343: Vim9: cannot find global function when using g:
Problem:    Vim9: cannot find global function when using g: when local
            function with the same name exists.
Solution:   Find global function when using g:.
2020-08-01 18:53:07 +02:00
Bram Moolenaar
f5a48010ef patch 8.2.1342: Vim9: accidentally using "t" gives a confusing error
Problem:    Vim9: accidentally using "x" gives a confusing error.
Solution:   Disallow using ":t" in Vim9 script. (issue #6399)
2020-08-01 17:00:03 +02:00
Bram Moolenaar
2ec208172c patch 8.2.1341: build failures
Problem:    Build failures.
Solution:   Add missing error message.
2020-08-01 16:35:08 +02:00
Bram Moolenaar
b86abadf87 patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Problem:    Some tests fail on Cirrus CI and/or with FreeBSD.
Solution:   Make 'backupskip' empty. Do not run tests as root. Check for
            directory when using viminfo. (Ozaki Kiichi, closes #6596)
2020-08-01 16:08:19 +02:00
Bram Moolenaar
2caa1594e7 patch 8.2.1339: Vim9: assigning to global dict variable doesn't work
Problem:    Vim9: assigning to global dict variable doesn't work.
Solution:   Guess variable type based in index type. (issue #6591)
2020-08-01 15:53:19 +02:00
Bram Moolenaar
8e4c8c853e patch 8.2.1338: Vim9: assigning to script-local variable doesn't check type
Problem:    Vim9: assigning to script-local variable doesn't check type.
Solution:   Use the type. (issue #6591)
2020-08-01 15:38:38 +02:00
Bram Moolenaar
586268721d patch 8.2.1337: Vim9: cannot use empty key in dict assignment
Problem:    Vim9: cannot use empty key in dict assignment.
Solution:   Allow empty key. (closes #6591)
2020-08-01 14:06:38 +02:00
Bram Moolenaar
af50e899e7 patch 8.2.1336: build failure on non-Unix systems
Problem:    Build failure on non-Unix systems.
Solution:   Add #ifdef.
2020-08-01 13:22:10 +02:00
Bram Moolenaar
4e1d8bd79b patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Problem:    CTRL-C in the GUI doesn't interrupt. (Sergey Vlasov)
Solution:   Recognize "C" with CTRL modifier as CTRL-C. (issue #6565)
2020-08-01 13:10:14 +02:00
Bram Moolenaar
b53da7918c patch 8.2.1334: Github workflow timeout needs tuning
Problem:    Github workflow timeout needs tuning
Solution:   Use a 10 minute timeout. Fail when timing out. (Ken Takata,
            closes #6590)
2020-08-01 12:26:04 +02:00
Bram Moolenaar
af8edbb8dc patch 8.2.1333: Vim9: memory leak when using nested global function
Problem:    Vim9: memory leak when using nested global function.
Solution:   Swap from and to when copying the lines.
2020-08-01 00:03:09 +02:00
Bram Moolenaar
ce6583568f patch 8.2.1332: Vim9: memory leak when using nested global function
Problem:    Vim9: memory leak when using nested global function.
Solution:   Delete the function when deleting the instruction.  Disable test
            that still causes a leak.
2020-07-31 23:47:12 +02:00
Bram Moolenaar
badd8486f7 patch 8.2.1331: Vim9: :echo with two lists doesn't work
Problem:    Vim9: :echo with two lists doesn't work.
Solution:   Do not skip white space before []. (closes #6552)
2020-07-31 22:38:17 +02:00
Bram Moolenaar
3a53ec8bdd patch 8.2.1330: Github workflow takes longer than needed
Problem:    Github workflow takes longer than needed.
Solution:   Do two test runs in parallel instead of sequentially. (Ken Takata,
            closes #6579)
2020-07-31 22:17:32 +02:00
Bram Moolenaar
38ddf333f6 patch 8.2.1329: Vim9: cannot define global function inside :def function
Problem:    Vim9: cannot define global function inside :def function.
Solution:   Assign to global variable instead of local. (closes #6584)
2020-07-31 22:05:04 +02:00
Bram Moolenaar
4d4d1cd5c8 patch 8.2.1328: no space allowed before comma in list
Problem:    No space allowed before comma in list.
Solution:   Legacy Vim script allows it. (closes #6577)
2020-07-30 22:14:33 +02:00
Bram Moolenaar
f4ee528086 patch 8.2.1327: Mac: configure can't find Tcl libraries
Problem:    Mac: configure can't find Tcl libraries.
Solution:   Adjust configure check. (closes #6575)
2020-07-30 20:18:08 +02:00
Bram Moolenaar
9d48956681 patch 8.2.1326: Vim9: skipping over white space after list
Problem:    Vim9: skipping over white space after list.
Solution:   Do not skip white space, a following [] would be misinterpreted.
            (closes #6552)  Fix a few side effects.
2020-07-30 20:08:50 +02:00
Bram Moolenaar
ea2d8d2571 patch 8.2.1325: Vim9: using Vim9 script for autaload not tested
Problem:    Vim9: using Vim9 script for autaload not tested.
Solution:   Add a test.  Update help.
2020-07-29 22:11:05 +02:00
Bram Moolenaar
c7e44a7e4c patch 8.2.1324: Vim9: line break after "=" does not work
Problem:    Vim9: line break after "=" does not work.
Solution:   Also allow for NUL after "=". (closes #6549)
2020-07-29 21:37:43 +02:00
Bram Moolenaar
696ba23149 patch 8.2.1323: Vim9: invalid operators only rejected in :def function
Problem:    Vim9: invalid operators only rejected in :def function.
Solution:   Also reject them at script level. (closes #6564)
2020-07-29 21:20:41 +02:00
Bram Moolenaar
1040956292 patch 8.2.1322: Vim9: method on double quoted string doesn't work
Problem:    Vim9: method on double quoted string doesn't work.
Solution:   Recognize double quoted string. (closes #6562)
2020-07-29 20:00:38 +02:00
Bram Moolenaar
7b7f78f51d patch 8.2.1321: GitHub CI also runs on tag push
Problem:    GitHub CI also runs on tag push.
Solution:   Skip CI on push. (Ken Takata, closes #6571)
2020-07-29 19:29:23 +02:00
Bram Moolenaar
33afa2447b patch 8.2.1320: Vim9: cannot declare some single letter variables
Problem:    Vim9: cannot declare some single letter variables.
Solution:   Do not recognize a colon for a namespace for single letter
            variables. (closes #6547)
2020-07-29 19:18:00 +02:00
Bram Moolenaar
ac7bf8c4bf patch 8.2.1319: status badge for Github CI has wrong link
Problem:    Status badge for Github CI has wrong link.
Solution:   Rename and use the right link
2020-07-29 17:43:55 +02:00
Bram Moolenaar
ed3c7e6339 patch 8.2.1318: no status badge for Github CI
Problem:    No status badge for Github CI.
Solution:   Add a badge.
2020-07-29 17:34:33 +02:00
Bram Moolenaar
f9a343f8bd patch 8.2.1317: MS-Windows tests on AppVeyor are slow
Problem:    MS-Windows tests on AppVeyor are slow.
Solution:   Use GitHub Actions. (Ken Takata, closes #6569)
2020-07-29 16:32:21 +02:00
Bram Moolenaar
b61ef01cce patch 8.2.1316: test 42 is still old style
Problem:    Test 42 is still old style.
Solution:   Turn it into a new style test. (Yegappan Lakshmanan, closes #6561)
2020-07-29 16:08:21 +02:00
Bram Moolenaar
45df2a01a7 patch 8.2.1315: MS-Windows: test log contains escape sequences
Problem:    MS-Windows: test log contains escape sequences.
Solution:   Do not use t_md and t_me but ANSI escape sequences. (Ken Takata,
            closes #6559)
2020-07-29 15:03:01 +02:00
Bram Moolenaar
9898107f54 patch 8.2.1314: Vim9: rule for comment after :function is confusing
Problem:    Vim9: rule for comment after :function is confusing.
Solution:   Allow double quoted comment after :function in vim9script.
            (closes #6556)
2020-07-29 14:40:25 +02:00
Bram Moolenaar
b5ed266037 patch 8.2.1313: Vim9 script: cannot assign to environment variable
Problem:    Vim9 script: cannot assign to environment variable.
Solution:   Recognize environment variable assignment. (closes #6548)
            Also options and registers.
2020-07-28 22:38:37 +02:00
Bram Moolenaar
066b12e36c patch 8.2.1312: MS-Windows: terminal test may fail if dir.exe exists
Problem:    MS-Windows: terminal test may fail if dir.exe exists.
Solution:   Use dir.com. (Ken Takata, closes #6557)
2020-07-28 21:40:27 +02:00
Bram Moolenaar
68e30449a2 patch 8.2.1311: test failures with legacy Vim script
Problem:    Test failures with legacy Vim script.
Solution:   Actually check for Vim9 script.
2020-07-28 21:15:07 +02:00
Bram Moolenaar
bd7f7c123d patch 8.2.1310: configure with Xcode 12 fails to check for tgetent
Problem:    Configure with Xcode 12 fails to check for tgetent.
Solution:   Declare tgetent(). (Ozaki Kiichi, closes #6558)
2020-07-28 21:03:37 +02:00
Bram Moolenaar
461f21242a patch 8.2.1309: build failure with tiny version
Problem:    Build failure with tiny version.
Solution:   Add #ifdef.
2020-07-28 20:25:47 +02:00
Bram Moolenaar
ae616494d7 patch 8.2.1308: Vim9: accidentally using "x" causes Vim to exit
Problem:    Vim9: accidentally using "x" causes Vim to exit.
Solution:   Disallow using ":x" or "xit" in Vim9 script. (closes #6399)
2020-07-28 20:07:27 +02:00
Bram Moolenaar
0aac67a431 patch 8.2.1307: popup window width does not include number of sign columns
Problem:    popup window width does not include number, fold of sign column
            width.
Solution:   Take number, fold and sign column with into account.
2020-07-27 22:40:37 +02:00
Bram Moolenaar
b13ab99908 patch 8.2.1306: checking for first character of dict key is inconsistent
Problem:    Checking for first character of dict key is inconsistent.
Solution:   Add eval_isdictc(). (closes #6546)
2020-07-27 21:43:28 +02:00
Bram Moolenaar
622b3568fa patch 8.2.1305: some tests are still old style
Problem:    Some tests are still old style.
Solution:   Convert tests 52 and 70 to new style. (Yegappan Lakshmanan,
            closes #6544)  Fix error in FinishTesting().
2020-07-27 20:02:41 +02:00
Bram Moolenaar
6ca6ca4889 patch 8.2.1304: debug backtrace isn't tested much
Problem:    Debug backtrace isn't tested much.
Solution:   Add more specific tests. (Ben Jackson, closes #6540)
2020-07-27 19:47:07 +02:00
Bram Moolenaar
6d585f4c5c patch 8.2.1303: calling popup_setoptions() resets 'signcolumn'
Problem:    Calling popup_setoptions() resets 'signcolumn'.
Solution:   Only set 'signcolumn' when creating the popup. (closes #6542)
2020-07-26 22:20:54 +02:00
Bram Moolenaar
01865ade85 patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Problem:    Vim9: varargs arg after optional arg does not work
Solution:   Check for the "..." first. (issue #6507)
2020-07-26 18:33:09 +02:00
Bram Moolenaar
ace6132aa8 patch 8.2.1301: Vim9: varargs argument type not parsed properly
Problem:    Vim9: varargs argument type not parsed properly.
Solution:   Skip over the "...". (issue #6507)
2020-07-26 18:16:58 +02:00
Bram Moolenaar
4fc224ca1c patch 8.2.1300: Vim9: optional argument type not parsed properly
Problem:    Vim9: optional argument type not parsed properly.
Solution:   Skip over the "?". (issue #6507)
2020-07-26 17:56:25 +02:00
Bram Moolenaar
2547aa930b Update runtime files. 2020-07-26 17:00:44 +02:00
Bram Moolenaar
d3bb6a82a5 patch 8.2.1299: compiler warning for using size_t for int and void pointer
Problem:    Compiler warning for using size_t for int and void pointer.
Solution:   Add type casts.
2020-07-26 15:55:25 +02:00
Bram Moolenaar
cb4f69c2fd patch 8.2.1298: compiler warning for unused argument in small version
Problem:    Compiler warning for unused argument in small version.
Solution:   Add UNUSED.
2020-07-26 15:51:06 +02:00
Bram Moolenaar
a5d0423fa1 patch 8.2.1297: when a test fails it's often not easy to see where
Problem:    When a test fails it's often not easy to see what the call stack
            is.
Solution:   Add more entries from the call stack in the exception message.
2020-07-26 15:37:02 +02:00
Bram Moolenaar
d66cdcd43a patch 8.2.1296: some part of using 'smarcase' was not tested
Problem:    Some part of using 'smarcase' was not tested.
Solution:   Add more tests. (Dominique Pellé, closes #6538)
2020-07-26 13:27:16 +02:00
Bram Moolenaar
7d40b8a532 patch 8.2.1295: tests 44 and 99 are old style
Problem:    Tests 44 and 99 are old style.
Solution:   Convert to new style tests. (Yegappan Lakshmanan, closes #6536)
2020-07-26 12:52:59 +02:00
Bram Moolenaar
37394ff752 patch 8.2.1294: Vim9: error when using vim9script in TextYankPost
Problem:    Vim9: error when using vim9script in TextYankPost.
Solution:   Use EX_LOCKOK instead of the EX_CMDWIN flag for command that can
            be used when text is locked. (closes #6529)
2020-07-25 19:38:18 +02:00
Bram Moolenaar
2d6b20d6a9 patch 8.2.1293: Vim9: error when using vim9script in TextYankPost
Problem:    Vim9: error when using vim9script in TextYankPost.
Solution:   Use EX_LOCKOK instead of the EX_CMDWIN flag for command that can
            be used when text is locked. (closes #6529)
2020-07-25 19:30:59 +02:00
Bram Moolenaar
2afc3b4f77 patch 8.2.1292: AIDL filetype not recognized
Problem:    AIDL filetype not recognized.
Solution:   Add filetype detection. (Dominique Pellé, closes #6533)
2020-07-25 16:53:12 +02:00
Bram Moolenaar
24aa48b7a2 patch 8.2.1291: Vim9: type of varargs items is not checked
Problem:    Vim9: type of varargs items is not checked.
Solution:   Check the list item types. (closes #6523)
2020-07-25 16:33:02 +02:00
Bram Moolenaar
925e9fd633 patch 8.2.1290: Vim9: cannot replace a global function
Problem:    Vim9: cannot replace a global function.
Solution:   Allow for "!" on a global function. (closes #6524)  Also fix that
            :delfunc on a :def function only made it empty.
2020-07-25 15:41:11 +02:00
Bram Moolenaar
c841afff6a patch 8.2.1289: crash when using a custom completion function
Problem:    Crash when using a custom completion function.
Solution:   Initialize all of the expand_T. (closes #6532)
2020-07-25 14:11:55 +02:00
Bram Moolenaar
13e12b8a3c patch 8.2.1288: Vim9: cannot use mark in range
Problem:    Vim9: cannot use mark in range.
Solution:   Use the flag that a colon was seen. (closes #6528)
2020-07-24 18:47:22 +02:00
Bram Moolenaar
40f4f7a48c patch 8.2.1287: Vim9: crash when using an imported function
Problem:    Vim9: crash when using an imported function.
Solution:   Add the function type to the imported entry. (closes #6522)
2020-07-23 22:41:43 +02:00
Bram Moolenaar
43e969d3f9 patch 8.2.1286: Vim9: No error when using a type to a window variable
Problem:    Vim9: No error when using a type to a window variable
Solution:   Recognize the syntax and give an error. (closes #6521)
2020-07-23 21:14:43 +02:00
Bram Moolenaar
b8070e3173 patch 8.2.1285: Vim9: argument types are not checked on assignment
Problem:    Vim9: argument types are not checked on assignment.
Solution:   Check function argument types. (issue #6507)
2020-07-23 20:56:04 +02:00
Bram Moolenaar
bfba8651a5 patch 8.2.1284: Vim9: skipping over type includes following white space
Problem:    Vim9: skipping over type includes following white space, leading
            to an error for missing white space.
Solution:   Do not skip over white space after the type.
2020-07-23 20:09:10 +02:00
Bram Moolenaar
637cd7d1c9 patch 8.2.1283: Vim9: error for misplaced -> lacks argument
Problem:    Vim9: error for misplaced -> lacks argument.
Solution:   Use the pointer before it was advanced.
2020-07-23 19:06:23 +02:00
Bram Moolenaar
6c4bfe4b31 patch 8.2.1282: Vim9: crash when using CheckScriptFailure()
Problem:    Vim9: crash when using CheckScriptFailure() in
            Test_vim9script_call_fail_decl().
Solution:   Do not decrement the def_functions len unless the function was
            newly added.
2020-07-23 18:26:30 +02:00
Bram Moolenaar
2d06bfde29 patch 8.2.1281: the "trailing characters" error can be hard to understand
Problem:    The "trailing characters" error can be hard to understand.
Solution:   Add the trailing characters to the message.
2020-07-23 17:16:18 +02:00
Bram Moolenaar
8930caaa1a patch 8.2.1280: Ex command error cannot contain an argument
Problem:    Ex command error cannot contain an argument.
Solution:   Add ex_errmsg() and translate earlier.  Use e_trailing_arg where
            possible.
2020-07-23 16:37:03 +02:00
Bram Moolenaar
8d5f6af5e5 patch 8.2.1279: some tests on Travis have EXITFREE duplicated
Problem:    Some tests on Travis have EXITFREE duplicated.
Solution:   Remove EXITFREE from shadowopt.  Add "shadow" to job name.
2020-07-23 15:50:40 +02:00
Bram Moolenaar
dd1a9af00f patch 8.2.1278: Vim9: line break after "->" only allowed in :def function
Problem:    Vim9: line break after "->" only allowed in :def function.
Solution:   Only allow line break after "->". (closes #6492)
2020-07-23 15:38:03 +02:00
Bram Moolenaar
7a87b4e3fe patch 8.2.1277: tests on Travis do not run with EXITFREE
Problem:    Tests on Travis do not run with EXITFREE.
Solution:   Add EXITFREE to all builds to uncover any mistakes.
2020-07-23 14:59:07 +02:00
Bram Moolenaar
4cc45a3673 patch 8.2.1276: MS-Windows: system test may fail if more.exe is installed
Problem:    MS-Windows: system test may fail if more.exe is installed.
Solution:   Explicitly use more.com. (Taro Muraoka, Ken Takata, closes #6517)
2020-07-23 14:51:02 +02:00
Bram Moolenaar
5a67c37a55 patch 8.2.1275: Vim9: compiler warning for buffer size
Problem:    Vim9: compiler warning for buffer size.
Solution:   Change the offset from 10 to 15. (Dominique Pellé, closes #6518)
2020-07-23 14:39:47 +02:00
Bram Moolenaar
63be3d4ba0 patch 8.2.1274: Vim9: no error for missing white space at script level
Problem:    Vim9: no error for missing white space in assignment at script
            level.
Solution:   Check for white space. (closes #6495)
2020-07-23 13:11:37 +02:00
Bram Moolenaar
c69950ac17 patch 8.2.1273: MS-Windows: terminal test may leave file behind
Problem:    MS-Windows: terminal test may leave file behind.
Solution:   Wait a moment for process to end before deleting the file.
            (Taro Muraoka, closes #6513)
2020-07-22 22:23:40 +02:00
Bram Moolenaar
4cdb13ce81 patch 8.2.1272: Vim9: type not checked if declaration also assigns value
Problem:    Vim9: type not checked if declaration also assigns value.
Solution:   Check the type. (issue #6507)
2020-07-22 21:45:14 +02:00
Bram Moolenaar
0f60e80f9b patch 8.2.1271: Vim9: Error for Funcref function argument type
Problem:    Vim9: Error for Funcref function argument type.
Solution:   Find the actual function type if possible. (issue #6507)
2020-07-22 20:16:11 +02:00
Bram Moolenaar
2f1980f7b7 patch 8.2.1270: Vim9: not skipping over function type declaration
Problem:    Vim9: not skipping over function type declaration with only a
            return type.
Solution:   Skip over the return type. (issue #6507)
2020-07-22 19:30:06 +02:00
Bram Moolenaar
054f14bbe5 patch 8.2.1269: language and locale code spread out
Problem:    Language and locale code spread out.
Solution:   Move relevant code to src/locale.c. (Yegappan Lakshmanan,
            closes #6509)
2020-07-22 19:11:19 +02:00
Bram Moolenaar
e7e4838f25 patch 8.2.1268: Vim9: no error for using double quote comment
Problem:    Vim9: no error for using double quote comment after :func or :def.
Solution:   Only accept double quote when not in Vim9 script and not after
            :def. (closes #6483)
2020-07-22 18:17:08 +02:00
Bram Moolenaar
2690b5aed8 patch 8.2.1267: MS-Windows: tests may fail due to $PROMPT value
Problem:    MS-Windows: tests may fail due to $PROMPT value.
Solution:   Set $PROMPT for testing. (Taro Muraoka, closes #6510)
2020-07-22 18:14:58 +02:00
Bram Moolenaar
bc6fcbe4ce patch 8.2.1266: Makefile preference were accidentally included
Problem:    Makefile preference were accidentally included.
Solution:   Revert the Makefile changes.
2020-07-21 22:34:41 +02:00
Bram Moolenaar
7d5e744162 patch 8.2.1265: crash with EXITFREE when split() fails
Problem:    Crash with EXITFREE when split() fails.
Solution:   Restore 'cpoptions'.
2020-07-21 22:25:51 +02:00
Bram Moolenaar
420952175a patch 8.2.1264: terminal getwinpos() test is a bit flaky
Problem:    Terminal getwinpos() test is a bit flaky.
Solution:   Call getwinpos() a bit later.
2020-07-21 21:48:58 +02:00
Bram Moolenaar
c71f36a889 patch 8.2.1263: Vim9: comperators use 'ignorecase' in Vim9 script
Problem:    Vim9: comperators use 'ignorecase' in Vim9 script.
Solution:   Ignore 'ignorecase'.  Use true and false instead of 1 and 0.
            (closes #6497)
2020-07-21 21:31:00 +02:00
Bram Moolenaar
f868ba8903 patch 8.2.1262: src/ex_cmds.c file is too big
Problem:    src/ex_cmds.c file is too big.
Solution:   Move help related code to src/help.c. (Yegappan Lakshmanan,
            closes #6506)
2020-07-21 21:07:20 +02:00
Bram Moolenaar
c7db57788b patch 8.2.1261: Vim9: common type of function not tested
Problem:    Vim9: common type of function not tested.
Solution:   Add a test.  Fix uncovered problems.
2020-07-21 20:55:50 +02:00
Bram Moolenaar
7591116acf patch 8.2.1260: there is no good test for CursorHold
Problem:    There is no good test for CursorHold.
Solution:   Add a test.  Remove duplicated test. (Yegappan Lakshmanan,
            closes #6503
2020-07-21 19:44:47 +02:00
Bram Moolenaar
f56c95fdad patch 8.2.1259: empty group in 'tabline' may cause using an invalid pointer
Problem:    Empty group in 'tabline' may cause using an invalid pointer.
Solution:   Set the group start position. (closes #6505)
2020-07-21 19:25:18 +02:00
Bram Moolenaar
08815a1d03 patch 8.2.1258: CursorHold does not work well
Problem:    CursorHold does not work well.a (Shane-XB-Qian)
Solution:   Only restore did_cursorhold when using :normal.
2020-07-20 23:10:56 +02:00
Bram Moolenaar
b31be3f909 patch 8.2.1257: Vim9: list unpack doesn't work at the script level
Problem:    Vim9: list unpack doesn't work at the script level.
Solution:   Detect unpack assignment better. (closes #6494)
2020-07-20 22:37:44 +02:00
Bram Moolenaar
7892b953e0 patch 8.2.1256: Vim9: type wrong after getting dict item in lambda
Problem:    Vim9: type wrong after getting dict item in lambda.
Solution:   Set the type to "any" after enforcing dict type. (closes #6491)
2020-07-20 22:09:34 +02:00
Bram Moolenaar
d43906d2e5 patch 8.2.1255: cannot use a lambda with quickfix functions
Problem:    Cannot use a lambda with quickfix functions.
Solution:   Add support for lambda. (Yegappan Lakshmanan, closes #6499)
2020-07-20 21:31:32 +02:00
Bram Moolenaar
470adb827f patch 8.2.1254: MS-Windows: regexp test may fail if 'iskeyword' set wrongly
Problem:    MS-Windows: regexp test may fail if 'iskeyword' set wrongly.
Solution:   Override the 'iskeyword' value. (Taro Muraoka, closes #6502)
2020-07-20 21:21:30 +02:00
Bram Moolenaar
b146e01a7e patch 8.2.1253: CTRL-K in Insert mode gets <CursorHold> inserted
Problem:    CTRL-K in Insert mode gets <CursorHold> inserted. (Roland
            Puntaier)
Solution:   Do not reset did_cursorhold, restore it. (closes #6447)
2020-07-19 23:06:05 +02:00
Bram Moolenaar
54c3fcd852 patch 8.2.1252: ":marks" may show '< and '> mixed up
Problem:    ":marks" may show '< and '> mixed up.
Solution:   Show the mark position as where '< and '> would jump.
2020-07-19 22:09:06 +02:00
Bram Moolenaar
682d0a1546 patch 8.2.1251: Vim9: warning for pointer usage, test failure undetected
Problem:    Vim9: warning for pointer usage, test failure undetected.
Solution:   Fix pointer indirection.  Give error when executing function
            failed for any reason.  Fix instruction names.
2020-07-19 20:48:59 +02:00
Bram Moolenaar
2f8ce0ae8a patch 8.2.1250: Vim9: cannot use the g:, b:, t: and w: namespaces
Problem:    Vim9: cannot use the g:, b:, t: and w: namespaces.
Solution:   Add instructions to push a dict for the namespaces. (closes #6480)
2020-07-19 19:47:35 +02:00
Bram Moolenaar
747f11ad6e patch 8.2.1249: Vim9: disassemble test fails
Problem:    Vim9: disassemble test fails.
Solution:   Change INDEX to LISTINDEX.  Add test for STRINDEX.
2020-07-19 18:38:37 +02:00
Bram Moolenaar
956501594e patch 8.2.1248: Netbeans test is flaky in the GUI
Problem:    Netbeans test is flaky in the GUI.
Solution:   Filter out geometry messages. (Taro Muraoka, closes #6487)
2020-07-19 18:24:32 +02:00
Bram Moolenaar
bf9d8c3765 patch 8.2.1247: Vim9: cannot index a character in a string
Problem:    Vim9: cannot index a character in a string.
Solution:   Add ISN_STRINDEX instruction. (closes #6478)
2020-07-19 17:55:44 +02:00
Bram Moolenaar
b209750b5e patch 8.2.1246: Vim9: comment after assignment doesn't work
Problem:    Vim9: comment after assignment doesn't work.
Solution:   Skip over white space. (closes #6481)
2020-07-19 17:17:02 +02:00
Bram Moolenaar
f398238a37 patch 8.2.1245: build failure in tiny version
Problem:    Build failure in tiny version.
Solution:   Add #ifdef.
2020-07-19 16:32:09 +02:00
Bram Moolenaar
6802cce407 patch 8.2.1244: Vim9: in lambda index assumes a list
Problem:    Vim9: in lambda index assumes a list.
Solution:   Use the value type to decide about list or dict. (closes #6479)
2020-07-19 15:49:49 +02:00
Bram Moolenaar
75783bd84e patch 8.2.1243: Vim9: cannot have a comment line halfway a list
Problem:    Vim9: cannot have a comment or empty line halfway a list at script
            level.
Solution:   Skip more than one line if needed.
2020-07-19 14:41:58 +02:00
Bram Moolenaar
65b9545f44 patch 8.2.1242: Vim9: no error if calling a function with wrong type
Problem:    Vim9: no error if calling a function with wrong argument type.
Solution:   Check types of arguments. (closes #6469)
2020-07-19 14:03:09 +02:00
Bram Moolenaar
6434fc574d patch 8.2.1241: cannot use getbufinfo() as a method
Problem:    Cannot use getbufinfo() as a method.
Solution:   Support using getbufinfo() as a method. (closes #6458)
2020-07-18 22:24:22 +02:00
Bram Moolenaar
10e1d01aaf patch 8.2.1240: GUI tests sometimes fail because of translations
Problem:    GUI tests sometimes fail because of translations.
Solution:   Reload the menus without translation. (Taro Muraoka, closes #6486)
2020-07-18 22:03:11 +02:00
Bram Moolenaar
de2396fc87 patch 8.2.1239: "maxwidth" in 'completepopup' not obeyed
Problem:    "maxwidth" in 'completepopup' not obeyed. (Jay Sitter)
Solution:   Add separate field for value from option. (closes #6470)
2020-07-18 21:40:41 +02:00
Bram Moolenaar
d032f34a51 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Problem:    Vim9: a few remaining errors not caught by try/catch.
Solution:   Do not bail out if an error is inside try/catch.
2020-07-18 18:13:02 +02:00
Bram Moolenaar
447bfba24b patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Problem:    Changing 'completepopup' after opening a popup has no effect. (Jay
            Sitter)
Solution:   Close the popup when the options are changed. (closes #6471)
2020-07-18 16:07:16 +02:00
Bram Moolenaar
e859312e74 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Problem:    Vim9: a few errors not caught by try/catch.
Solution:   Do not bail out if an error is inside try/catch.  Fix that a not
            matching catch doesn't jump to :endtry.
2020-07-18 15:17:02 +02:00
Bram Moolenaar
2764d06ab7 patch 8.2.1235: Not all mouse codes covered by tests
Problem:    Not all mouse codes covered by tests.
Solution:   Add more tests for the mouse. (Yegappan Lakshmanan, closes #6472)
2020-07-18 12:59:19 +02:00
Bram Moolenaar
066e7da3cd patch 8.2.1234: Lua build problem with old compiler
Problem:    Lua build problem with old compiler.
Solution:   Move declarations to start of the block. (Taro Muraoka,
            closes #6477)
2020-07-18 12:50:35 +02:00
Bram Moolenaar
f0b9f43c31 patch 8.2.1233: Vim9: various errors not caught by try/catch
Problem:    Vim9: various errors not caught by try/catch.
Solution:   Do not bail out if an error is inside try/catch.
2020-07-17 23:03:17 +02:00
Bram Moolenaar
b68ced5f07 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Problem:    MS-Windows GUI: Snap cancelled by split command.
Solution:   Do not cancel Snap when splitting a window. (Ken Takata,
            closes #6467)
2020-07-17 22:26:53 +02:00
Bram Moolenaar
945c857844 patch 8.2.1231: MS-Windows: GUI code can be cleaned up
Problem:    MS-Windows: GUI code can be cleaned up.
Solution:   Do a bit of cleaning up. (Ken Takata, closes #6465)
2020-07-17 22:17:03 +02:00
Bram Moolenaar
68d130c618 patch 8.2.1230: Vim9: list index error not caught by try/catch
Problem:    Vim9: list index error not caught by try/catch.
Solution:   Do not bail out if an error is inside try/catch. (closes #6462)
2020-07-17 22:06:44 +02:00
Bram Moolenaar
6e36b1c18e patch 8.2.1229: build error without the eval feature
Problem:    Build error without the eval feature.
Solution:   Declare starts_with_colon. Make function local.
2020-07-17 20:47:51 +02:00
Bram Moolenaar
203ec7760d patch 8.2.1228: scrollbars not flush against the window edges when maximised
Problem:    Scrollbars not flush against the window edges when maximised.
Solution:   Add padding. (Ken Takata, closes #5602, closes #6466)
2020-07-17 20:43:43 +02:00
Bram Moolenaar
f5be8cdb77 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Problem:    Vim9: allowing both quoted and # comments is confusing.
Solution:   Only support # comments in Vim9 script.
2020-07-17 20:36:00 +02:00
Bram Moolenaar
98af99f2d7 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Problem:    MS-Windows: windows positioning wrong when the taskbar is placed
            at the top or left of the screen.
Solution:   Use GetWindowRect and MoveWindow APIs. (Yukihiro Nakadaira,
            Ken Takata, closes #6455)
2020-07-16 22:30:31 +02:00
Bram Moolenaar
ee1b93169d patch 8.2.1225: linker errors when building with dynamic Python 3.9
Problem:    Linker errors when building with dynamic Python 3.9.
Solution:   Add #defined items. (closes #6461)
2020-07-16 22:15:53 +02:00
Bram Moolenaar
a90afb9a59 patch 8.2.1224: Vim9: arguments from partial are not used
Problem:    Vim9: arguments from partial are not used.
Solution:   Put the partial arguments on the stack. (closes #6460)
2020-07-15 22:38:56 +02:00
Bram Moolenaar
e30f64b4b5 patch 8.2.1223: Vim9: invalid type error for function default value
Problem:    Vim9: invalid type error for function default value.
Solution:   Use right argument index. (closes #6458)
2020-07-15 19:48:20 +02:00
Bram Moolenaar
657a826c07 patch 8.2.1222: using valgrind in Vim command started by test doesn't work
Problem:    When using valgrind a Vim command started by a test uses the same
            log file name which gets overwritten.
Solution:   Fix regexp to rename the log file.
2020-07-15 18:29:18 +02:00
Bram Moolenaar
02f9e6a60f patch 8.2.1221: memory leak when updating popup window
Problem:    Memory leak when updating popup window.
Solution:   Clear search highlighting.
2020-07-15 18:27:08 +02:00
485 changed files with 32134 additions and 23189 deletions

View File

@@ -11,6 +11,9 @@ freebsd_12_task:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
- make -j${NPROC}
- src/vim --version
test_script:
- make test
- src/vim --version
# run tests as user "cirrus" instead of root
- pw useradd cirrus -m
- chown -R cirrus:cirrus .
- sudo -u cirrus make test

227
.github/workflows/ci-windows.yaml vendored Normal file
View File

@@ -0,0 +1,227 @@
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 "::set-env name=PYTHON_DIR::$python_dir"
echo "::set-env name=PYTHON3_DIR::$python3_dir"
- 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: 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
mkdir ..\src2
xcopy testdir ..\src2\testdir\ /E > nul || exit 1
copy evalfunc.c ..\src2 > nul
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,600) do (
if exist done.txt goto exitloop
ping -n 2 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

@@ -1,23 +1,29 @@
language: c
env:
global:
- BUILD=yes TEST=test CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
_anchors:
envs:
- &tiny-nogui
BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=tiny TEST=testtiny CONFOPT="--disable-gui"
- &tiny
BUILD=yes TEST=test FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=tiny TEST=testtiny
- &small
BUILD=yes TEST=test FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=small TEST=testtiny
- &normal
BUILD=yes TEST=test FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=normal
- &linux-huge
BUILD=yes TEST="scripttests test_libvterm" CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=huge TEST="scripttests test_libvterm"
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &osx-huge # macOS build
BUILD=yes TEST=test FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
FEATURES=huge
CONFOPT="--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &unittests
BUILD=no TEST=unittests CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
BUILD=no TEST=unittests FEATURES=huge CHECK_AUTOCONF=yes
- &coverage
CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage
- &asan # ASAN build
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
@@ -63,7 +69,11 @@ _anchors:
fi
before_script:
- sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
- sudo bash ci/load-snd-dummy.sh || true
# It appears we can load "snd-dummy" on only amd64.
- |
if [[ "${TRAVIS_CPU_ARCH}" = amd64 ]]; then
sudo bash ci/load-snd-dummy.sh || true
fi
- sudo usermod -a -G audio $USER
- do_test() { sg audio "sg $(id -gn) '$*'"; }
@@ -87,7 +97,7 @@ _anchors:
# Lua is not installed on macOS
- export LUA_PREFIX=/usr/local
coverage: &coverage
coverage: &eval-coverage
# needed for https support for coveralls building cffi only works with gcc,
# not with clang
- CC=gcc pip install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1
@@ -191,20 +201,27 @@ jobs:
compiler: gcc
env: *small
- <<: *linux
name: normal/clang
name: normal+shadow/clang
compiler: clang
env:
- *normal
- *shadowopt
- <<: *linux
name: normal/gcc
name: normal+shadow/gcc
compiler: gcc
env:
- *normal
- *shadowopt
# Temporarily disabled, always fails
#- <<: *linux
# arch: s390x
# name: huge/gcc-s390x
# compiler: gcc
# env: *linux-huge
# services: []
- <<: *linux
arch: s390x
name: huge/gcc-s390x
arch: arm64
name: huge/gcc-arm64
compiler: gcc
env: *linux-huge
services: []
@@ -213,14 +230,17 @@ jobs:
compiler: clang
env:
- *linux-huge
- *coverage
# Clang cannot compile test_libvterm with "--coverage" flag.
- TEST=scripttests
after_success: *coverage
after_success: *eval-coverage
- <<: *linux
name: huge+coverage/gcc
compiler: gcc
env: *linux-huge
after_success: *coverage
env:
- *linux-huge
- *coverage
after_success: *eval-coverage
- <<: *linux # ASAN
name: huge+asan/gcc
compiler: gcc
@@ -233,13 +253,16 @@ jobs:
compiler: gcc
env:
- *linux-huge
- *coverage
- TEST="-C src testgui"
after_success: *coverage
after_success: *eval-coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env: *unittests
after_success: *coverage
env:
- *unittests
- *coverage
after_success: *eval-coverage
- <<: *linux
name: vimtags/gcc
compiler: gcc

View File

@@ -9,6 +9,7 @@ SRC_ALL = \
.lgtm.yml \
.travis.yml \
.cirrus.yml \
.github/workflows/ci-windows.yaml \
appveyor.yml \
ci/appveyor.bat \
ci/if_ver*.vim \
@@ -44,6 +45,7 @@ SRC_ALL = \
src/drawline.c \
src/drawscreen.c \
src/edit.c \
src/errors.h \
src/eval.c \
src/evalbuffer.c \
src/evalfunc.c \
@@ -68,6 +70,7 @@ SRC_ALL = \
src/gui_beval.c \
src/hardcopy.c \
src/hashtab.c \
src/help.c \
src/highlight.c \
src/indent.c \
src/insexpand.c \
@@ -75,6 +78,7 @@ SRC_ALL = \
src/json_test.c \
src/kword_test.c \
src/list.c \
src/locale.c \
src/keymap.h \
src/macros.h \
src/main.c \
@@ -146,6 +150,7 @@ SRC_ALL = \
src/vim9compile.c \
src/vim9execute.c \
src/vim9script.c \
src/vim9type.c \
src/viminfo.c \
src/winclip.c \
src/window.c \
@@ -169,12 +174,12 @@ SRC_ALL = \
src/testdir/setup_gui.vim \
src/testdir/shared.vim \
src/testdir/vim9.vim \
src/testdir/script_util.vim \
src/testdir/summarize.vim \
src/testdir/term_util.vim \
src/testdir/view_util.vim \
src/testdir/test[0-9]*.ok \
src/testdir/test[0-9]*a.ok \
src/testdir/test49.vim \
src/testdir/test77a.ok \
src/testdir/test83-tags? \
src/testdir/test77a.com \
src/testdir/test_*.vim \
@@ -240,11 +245,13 @@ SRC_ALL = \
src/proto/gui_beval.pro \
src/proto/hardcopy.pro \
src/proto/hashtab.pro \
src/proto/help.pro \
src/proto/highlight.pro \
src/proto/indent.pro \
src/proto/insexpand.pro \
src/proto/json.pro \
src/proto/list.pro \
src/proto/locale.pro \
src/proto/main.pro \
src/proto/map.pro \
src/proto/mark.pro \
@@ -298,6 +305,7 @@ SRC_ALL = \
src/proto/vim9compile.pro \
src/proto/vim9execute.pro \
src/proto/vim9script.pro \
src/proto/vim9type.pro \
src/proto/viminfo.pro \
src/proto/winclip.pro \
src/proto/window.pro \
@@ -633,13 +641,11 @@ SRC_HAIKU = \
SRC_MAC = \
src/INSTALLmac.txt \
src/dehqx.py \
src/gui_mac.c \
src/os_mac_rsrc/*.icns \
src/os_mac.h \
src/os_mac.rsr.hqx \
src/os_mac_conv.c \
src/os_macosx.m \
src/proto/gui_mac.pro \
src/proto/os_mac_conv.pro \
# source files for VMS (in the extra archive)

View File

@@ -32,7 +32,7 @@ first:
# Some make programs use the last target for the $@ default; put the other
# targets separately to always let $@ expand to "first" by default.
all install uninstall tools config configure reconfig proto depend lint tags types test scripttests test_libvterm unittests testclean clean distclean:
all install uninstall tools config configure reconfig proto depend lint tags types test scripttests testtiny test_libvterm unittests testclean clean distclean:
@if test ! -f src/auto/config.mk; then \
cp src/config.mk.dist src/auto/config.mk; \
fi

View File

@@ -2,6 +2,7 @@
[![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)

View File

@@ -5,8 +5,8 @@
This is an experimental side of [Vim](https://github.com/vim/vim).
It explores ways of making Vim script faster and better.
WARNING: The Vim9 script features are in the early stages of development,
anything can break!
WARNING: The Vim9 script features are still under development, anything can
break!
# Why Vim9?
@@ -52,7 +52,7 @@ we can gain, and also that Vim script can be faster than builtin
interfaces.
In practice the script would not do something useless as counting but change
the text. For example, re-indent all the lines:
the text. For example, reindent all the lines:
``` vim
let totallen = 0
@@ -91,14 +91,14 @@ Instead of using script language support in Vim:
with them. The job and channel support already makes this possible.
Really any language can be used, also Java and Go, which are not
available built-in.
* Phase out the built-in language interfaces, make maintenance a bit easier
and executables easier to build. They will be kept for backwards
compatibility, no new features.
* No priority for the built-in language interfaces. They will have to be kept
for backwards compatibility, but many users won't need a Vim build with these
interfaces.
* Improve the Vim script language, it is used to communicate with the external
tool and implements the Vim side of the interface. Also, it can be used when
an external tool is undesired.
All together this creates a clear situation: Vim with the +eval feature
Altogether this creates a clear situation: Vim with the +eval feature
will be sufficient for most plugins, while some plugins require
installing a tool that can be written in any language. No confusion
about having Vim but the plugin not working because some specific
@@ -140,6 +140,9 @@ Taking this one step further is also dropping "s:" for script-local variables;
everything at the script level is script-local by default. Since this is not
backwards compatible it requires a new script style: Vim9 script!
To avoid having more variations, the syntax inside a compiled function is the
same as in Vim9 script. Thus you have legacy syntax and Vim9 syntax.
It should be possible to convert code from other languages to Vim
script. We can add functionality to make this easier. This still needs
to be discussed, but we can consider adding type checking and a simple

View File

@@ -16,7 +16,6 @@ src/os_amiga.* Files for the Amiga port.
src/os_msdos.*
src/os_dos.* Files for the MS-DOS port.
src/gui_mac.*
src/os_mac.* Files for the Mac port.
src/os_vms* Files for the VMS port.

View File

@@ -5,16 +5,17 @@ skip_tags: true
environment:
matrix:
- FEATURE: HUGE
- FEATURE: NORMAL
# disabled
# - FEATURE: TINY
# - FEATURE: SMALL
# - FEATURE: NORMAL
# - FEATURE: BIG
matrix:
fast_finish: true
before_build:
# Use Windows SDK 7.1 (= MSVC 2010)
- '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release'
- 'set INCLUDE=%INCLUDE%C:\Program Files (x86)\Windows Kits\8.1\Include\um'
@@ -25,9 +26,9 @@ test_script:
- cd src/testdir
# Testing with MSVC gvim
- path C:\Python35-x64;%PATH%
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\gvim
- nmake -f Make_dos.mak VIMPROG=..\gvim
- nmake -f Make_dos.mak clean
# Testing with MingW console version
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\vim
# Testing with MSVC console version
- nmake -f Make_dos.mak VIMPROG=..\vim
# vim: sw=2 sts=2 et ts=8 sr

View File

@@ -5,48 +5,32 @@ setlocal ENABLEDELAYEDEXPANSION
cd %APPVEYOR_BUILD_FOLDER%
cd src
echo "Building MinGW 32bit console version"
set PATH=c:\msys64\mingw32\bin;%PATH%
mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
.\vim -u NONE -c "redir @a | ver |0put a | wq" ver_ming.txt
:: Save vim.exe before Make clean, moved back below.
copy vim.exe testdir
mingw32-make.exe -f Make_ming.mak clean
:: Build Mingw huge version with python and channel support, or
:: with specified features without python.
echo "Building MinGW 32bit GUI version"
if "%FEATURE%" == "HUGE" (
mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1
) ELSE (
mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
)
.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_ming_gui.txt
:: Filter out the progress bar from the build log
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
echo "Building MSVC 64bit console Version"
nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
:: The executable is not used
nmake -f Make_mvc2.mak clean
nmake -f Make_mvc2.mak CPU=AMD64 ^
OLE=no GUI=no IME=yes ICONV=yes DEBUG=no ^
FEATURES=%FEATURE% || exit 1
:: build MSVC huge version with python and channel support
:: GUI needs to be last, so that testing works
echo "Building MSVC 64bit GUI Version"
if "%FEATURE%" == "HUGE" (
nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1
nmake -f Make_mvc2.mak CPU=AMD64 ^
OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no POSTSCRIPT=yes ^
PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 ^
PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 ^
FEATURES=%FEATURE% || exit 1
) ELSE (
nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
nmake -f Make_mvc2.mak CPU=AMD64 ^
OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no ^
FEATURES=%FEATURE% || exit 1
)
.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_msvc.txt
:: Restore vim.exe, tests will run with this.
move /Y testdir\vim.exe .
echo "version output MinGW"
type ver_ming.txt
echo "version output MinGW GUI"
type ver_ming_gui.txt
echo "version output MVC"
echo "version output MSVC console"
.\vim --version
echo "version output MSVC GUI"
type ver_msvc.txt
cd ..

View File

@@ -3,6 +3,6 @@ set -e
if ! modprobe snd-dummy; then
# snd-dummy is contained in linux-modules-extra (if exists)
apt install -y "linux-modules-extra-$(uname -r)"
apt-get install -yq --no-install-suggests --no-install-recommends "linux-modules-extra-$(uname -r)"
modprobe snd-dummy
fi

View File

@@ -25,7 +25,7 @@ function decada#Unit_Name () dict " {{{1
" Convert filename into acs unit:
" 1: remove the file extenstion.
" 2: replace all double '_' or '-' with an dot (which denotes a separate)
" 3: remove a trailing '_' (wich denotes a specification)
" 3: remove a trailing '_' (which denotes a specification)
return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '')
endfunction decada#Unit_Name " }}}1

View File

@@ -575,7 +575,7 @@ endfunc
let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
func dist#ft#FTRules()
let path = expand('<amatch>:p')
if path =~ '^/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
if path =~ '/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|\%(usr/\)\=lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
setf udevrules
return
endif

View File

@@ -1,7 +1,9 @@
" Vim completion script
" Language: Java Script
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2017 Mar 04
" Maintainer: Jay Sitter (jay@jaysitter.com)
" URL: https://github.com/jsit/javascriptcomplete.vim/
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2020 Jul 30
function! javascriptcomplete#CompleteJS(findstart, base)
if a:findstart
@@ -154,12 +156,30 @@ function! javascriptcomplete#CompleteJS(findstart, base)
\ 'text', 'vLink']
let bodys = bodyprop
" Document - document.
let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets',
\ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL']
let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById',
\ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln',
\ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp',
\ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize']
let docuprop = ['anchors', 'body', 'characterSet', 'doctype',
\ 'documentElement', 'documentURI', 'embeds', 'fonts', 'forms',
\ 'head', 'hidden', 'images', 'implementation', 'lastStyleSheetSet',
\ 'links', 'plugins', 'preferredStyleSheetSet', 'scripts',
\ 'scrollingElement', 'selectedStyleSheetSet', 'styleSheetSets',
\ 'timeline', 'visibilityState', 'cookie', 'defaultView',
\ 'designMode', 'dir', 'domain', 'lastModified', 'location',
\ 'readyState', 'referrer', 'title', 'URL', 'activeElement',
\ 'fullscreenElement', 'styleSheets']
let documeth = ['adoptNode', 'close', 'createAttribute',
\ 'createAttributeNS', 'createCDATASection', 'createComment',
\ 'createDocumentFragment', 'createElement', 'createElementNS',
\ 'createEvent', 'createExpression', 'createNSResolver',
\ 'createNodeIterator', 'createProcessingInstruction', 'createRange',
\ 'createTextNode', 'createTouchList', 'createTreeWalker',
\ 'enableStyleSheetsForSet', 'evaluate', 'focus', 'getElementById',
\ 'getElementById', 'getElementsByClassName', 'getElementsByName',
\ 'getElementsByTagName', 'getElementsByTagNameNS',
\ 'hasStorageAccess', 'importNode', 'onClick', 'onDblClick',
\ 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp', 'onMouseDown',
\ 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp',
\ 'onResize', 'open', 'querySelector', 'querySelectorAll',
\ 'requestStorageAccess', 'write', 'writeln']
call map(documeth, 'v:val."("')
let docuxprop = ['attributes', 'childNodes', 'doctype', 'documentElement', 'firstChild',
\ 'implementation', 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType',
@@ -368,9 +388,11 @@ function! javascriptcomplete#CompleteJS(findstart, base)
let xdomelemprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling', 'tagName']
let xdomelemmeth = ['appendChild', 'cloneNode', 'getAttribute', 'getAttributeNode',
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore', 'normalize',
\ 'removeAttribute', 'removeAttributeNode', 'removeChild', 'replaceChild',
let xdomelemmeth = ['appendChild', 'addEventListener', 'cloneNode',
\ 'dispatchEvent', 'getAttribute', 'getAttributeNode',
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore',
\ 'normalize', 'removeAttribute', 'removeAttributeNode',
\ 'removeChild', 'removeEventListener', 'replaceChild',
\ 'setAttribute', 'setAttributeNode']
call map(xdomelemmeth, 'v:val."("')
let xdomelems = xdomelemprop + xdomelemmeth

View File

@@ -185,7 +185,7 @@ func! Test_check_colors()
" 9) Normal should be defined first, not use reverse, fg or bg
call cursor(1,1)
let pat = 'hi\%[light] \+\%(link\|clear\)\@!\w\+\>'
let pat = 'hi\%[ghlight] \+\%(link\|clear\)\@!\w\+\>'
call search(pat, 'cW') " Look for the first hi def, skipping `hi link` and `hi clear`
if getline('.') !~# '\m\<Normal\>'
let err['highlight']['Normal'] = 'Should be defined first'

View File

@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Checkstyle
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2013 Jun 26
" Last Change: 2020 Aug 2
if exists("current_compiler")
finish
@@ -12,8 +12,18 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
let s:cpo_save = &cpo
set cpo&vim
" sample error: WebTable.java:282: '+=' is not preceeded with whitespace.
" WebTable.java:201:1: '{' should be on the previous line.
CompilerSet errorformat=%f:%l:%v:\ %m,%f:%l:\ %m,%-G%.%#
" CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain\ -c\ /sun_checks.xml
" CompilerSet makeprg=java\ -jar\ checkstyle-X.XX-all.jar\ -f\ plain\ -c\ /sun_checks.xml
CompilerSet makeprg=checkstyle\ -f\ plain
CompilerSet errorformat=[%tRROR]\ %f:%l:%v:\ %m,
\[%tARN]\ %f:%l:%v:\ %m,
\[%tRROR]\ %f:%l:\ %m,
\[%tARN]\ %f:%l:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

34
runtime/compiler/gawk.vim Normal file
View File

@@ -0,0 +1,34 @@
" Vim compiler file
" Compiler: GNU Awk
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "gawk"
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=gawk
CompilerSet errorformat=%Z%.awk:\ %f:%l:\ %p^\ %m,
\%Eg%\\=awk:\ %f:%l:\ fatal:\ %m,
\%Egawk:\ %f:%l:\ error:\ %m,
\%Wgawk:\ %f:%l:\ warning:\ %m,
\%Egawk:\ %f:%l:\ %.%#,
\gawk:\ %f:%l:\ %tatal:\ %m,
\gawk:\ %f:%l:\ %trror:\ %m,
\gawk:\ %f:%l:\ %tarning:\ %m,
\gawk:\ %tatal:\ %m,
\gawk:\ %trror:\ %m,
\gawk:\ %tarning:\ %m,
\%+C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

25
runtime/compiler/gjs.vim Normal file
View File

@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: GJS (Gnome JavaScript Bindings)
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "gjs"
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=gjs
CompilerSet errorformat=%.%#JS\ %tRROR:\ %m\ @\ %f:%c,
\%E%.%#JS\ ERROR:\ %m,
\%Z@%f:%l:%c,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

30
runtime/compiler/jest.vim Normal file
View File

@@ -0,0 +1,30 @@
" Vim compiler file
" Compiler: Jest
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 May 15
if exists("current_compiler")
finish
endif
let current_compiler = "jest"
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=npx\ jest\ --no-colors
CompilerSet makeprg=jest\ --no-colors
CompilerSet errorformat=%E\ \ ●\ %m,
\%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=,
\%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c),
\%+C\ %\\{4}%\\w%.%#,
\%+C\ %\\{4}%[-+]%.%#,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

24
runtime/compiler/jjs.vim Normal file
View File

@@ -0,0 +1,24 @@
" Vim compiler file
" Compiler: Nashorn Shell
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 Jan 9
if exists("current_compiler")
finish
endif
let current_compiler = "jjs"
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=jjs
CompilerSet errorformat=%f:%l:%c\ %m,
\%f:%l\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: JSHint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "jshint"
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=npx\ jshint\ --verbose
CompilerSet makeprg=jshint\ --verbose
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m\ (%t%n),
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: JSON Lint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "jsonlint"
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=npx\ jsonlint\ --compact\ --quiet
CompilerSet makeprg=jsonlint\ --compact\ --quiet
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ found:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: RuboCop
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "rubocop"
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=rubocop\ --format\ emacs
CompilerSet errorformat=%f:%l:%c:\ %t:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Stylelint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Jun 10
if exists("current_compiler")
finish
endif
let current_compiler = "stylelint"
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=npx\ stylelint\ --formatter\ compact
CompilerSet makeprg=stylelint\ --formatter\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ -\ %m,
\%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ -\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,29 @@
" Vim compiler file
" Compiler: TypeScript Runner
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "node"
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=npx\ ts-node
CompilerSet makeprg=ts-node
CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
\%E%f:%l,
\%+Z%\\w%\\+Error:\ %.%#,
\%C%p^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

26
runtime/compiler/tsc.vim Normal file
View File

@@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: TypeScript Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "tsc"
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=npx\ tsc
CompilerSet makeprg=tsc
CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
\%trror\ TS%n:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: TypeDoc
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "typedoc"
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=npx\ typedoc
CompilerSet makeprg=typedoc
CompilerSet errorformat=%EError:\ %f(%l),
\%WWarning:\ %f(%l),
\%+IDocumentation\ generated\ at\ %f,
\%Z\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

26
runtime/compiler/xo.vim Normal file
View File

@@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: XO
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "xo"
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=npx\ xo\ --reporter\ compact
CompilerSet makeprg=xo\ --reporter\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ %m,
\%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -77,7 +77,7 @@ Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
(without Form-B, Arabic will _NOT_ be usable). It is highly
recommended that users search for so-called 'ISO-10646-1' fonts.
Do an Internet search or check www.arabeyes.org for further
info on where to attain the necessary Arabic fonts.
info on where to obtain the necessary Arabic fonts.
Font Installation
@@ -123,7 +123,7 @@ o Setting the appropriate character Encoding
>
:set encoding=utf-8
<
to your .vimrc file (entering the command manually into you Vim
to your .vimrc file (entering the command manually into your Vim
window is highly discouraged). In short, include ':set
encoding=utf-8' to your .vimrc file.

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jun 10
*autocmd.txt* For Vim version 8.2. Last change: 2020 Aug 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1425,8 +1425,8 @@ name!
:aug[roup]! {name} Delete the autocmd group {name}. Don't use
this if there is still an autocommand using
this group! You will get a warning if doing
it anyway. when the group is the current group
you will get error E936.
it anyway. When the group is the current
group you will get error E936.
To enter autocommands for a specific group, use this method:
1. Select the group with ":augroup {name}".

View File

@@ -1755,7 +1755,7 @@ Some examples:
Automatic formatting *auto-format* *autoformat*
When the 'a' flag is present in 'formatoptions' text is formatted
automatically when inserting text or deleting text. This works nice for
automatically when inserting text or deleting text. This works nicely for
editing text paragraphs. A few hints on how to use this:
- You need to properly define paragraphs. The simplest is paragraphs that are

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.2. Last change: 2020 Apr 23
*cmdline.txt* For Vim version 8.2. Last change: 2020 Aug 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -876,7 +876,7 @@ Also see |`=|.
*:<cword>* *<cword>* *:<cWORD>* *<cWORD>*
*:<cexpr>* *<cexpr>* *:<cfile>* *<cfile>*
*:<afile>* *<afile>* *:<abuf>* *<abuf>*
*:<amatch>* *<amatch>*
*:<amatch>* *<amatch>* *:<stack>* *<stack>*
*:<sfile>* *<sfile>* *:<slnum>* *<slnum>*
*:<sflnum>* *<sflnum>* *E499* *E500*
Note: these are typed literally, they are not special keys!
@@ -903,12 +903,16 @@ Note: these are typed literally, they are not special keys!
events).
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with:
"function {function-name}[{lnum}]"
function call nesting is indicated like this:
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
When executing a function, is replaced with the call stack,
as with <stack> (this is for backwards compatibility, using
<stack> is preferred).
Note that filename-modifiers are useless when <sfile> is
used inside a function.
not used inside a script.
<stack> is replaced with the call stack, using
"function {function-name}[{lnum}]" for a function line
and "script {file-name}[{lnum}]" for a script line, and
".." in between items. E.g.:
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
@@ -1126,7 +1130,8 @@ CTRL-C Continue in Command-line mode. The command-line under the
in Normal mode. There is no redraw, thus the window will
remain visible.
:quit Discard the command line and go back to Normal mode.
":close", ":exit", ":xit" and CTRL-\ CTRL-N also work.
":close", CTRL-W c, ":exit", ":xit" and CTRL-\ CTRL-N also
work.
:qall Quit Vim, unless there are changes in some buffer.
:qall! Quit Vim, discarding changes to any buffer.

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.2. Last change: 2020 Apr 13
*develop.txt* For Vim version 8.2. Last change: 2020 Jul 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,8 +34,8 @@ balance must be found between them.
VIM IS... VI COMPATIBLE *design-compatible*
First of all, it should be possible to use Vim as a drop-in replacement for
Vi. When the user wants to, he can use Vim in compatible mode and hardly
notice any difference with the original Vi.
Vi. When the user wants to, Vim can be used in compatible mode and hardly
any differences with the original Vi will be noticed.
Exceptions:
- We don't reproduce obvious Vi bugs in Vim.

View File

@@ -1,4 +1,4 @@
*digraph.txt* For Vim version 8.2. Last change: 2019 May 05
*digraph.txt* For Vim version 8.2. Last change: 2020 Jul 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -33,6 +33,8 @@ An alternative is using the 'keymap' option.
it is the Unicode character, see |digraph-encoding|.
Example: >
:digr e: 235 a: 228
< You can use `:exe` to enter a hex number: >
:exe 'digr += ' .. 0x2A72
< Avoid defining a digraph with '_' (underscore) as the
first character, it has a special meaning in the
future.

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.2. Last change: 2020 Jul 09
*eval.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -94,8 +94,9 @@ the Number. Examples:
Number 0 --> String "0" ~
Number -1 --> String "-1" ~
*octal*
Conversion from a String to a Number is done by converting the first digits to
a number. Hexadecimal "0xf9", Octal "017" or "0o17", and Binary "0b10"
Conversion from a String to a Number only happens in legacy Vim script, not in
Vim9 script. It is done by converting the first digits to a number.
Hexadecimal "0xf9", Octal "017" or "0o17", and Binary "0b10"
numbers are recognized (NOTE: when using |scriptversion-4| octal with a
leading "0" is not recognized). If the String doesn't start with digits, the
result is zero.
@@ -1130,19 +1131,25 @@ Evaluation is always from left to right.
expr8[expr1] item of String or |List| *expr-[]* *E111*
*E909* *subscript*
In legacy Vim script:
If expr8 is a Number or String this results in a String that contains the
expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
Number. This doesn't recognize multi-byte encodings, see `byteidx()` for
an alternative, or use `split()` to turn the string into a list of characters.
Index zero gives the first byte. This is like it works in C. Careful:
text column numbers start with one! Example, to get the byte under the
cursor: >
expr1'th single byte from expr8. expr8 is used as a String (a number is
automatically converted to a String), expr1 as a Number. This doesn't
recognize multi-byte encodings, see `byteidx()` for an alternative, or use
`split()` to turn the string into a list of characters. Example, to get the
byte under the cursor: >
:let c = getline(".")[col(".") - 1]
In Vim9 script:
If expr8 is a String this results in a String that contains the expr1'th
single character from expr8. To use byte indexes use |strpart()|.
Index zero gives the first byte or character. Careful: text column numbers
start with one!
If the length of the String is less than the index, the result is an empty
String. A negative index always results in an empty string (reason: backward
compatibility). Use [-1:] to get the last byte.
compatibility). Use [-1:] to get the last byte or character.
If expr8 is a |List| then it results the item at index expr1. See |list-index|
for possible index values. If the index is out of range this results in an
@@ -1156,10 +1163,16 @@ error.
expr8[expr1a : expr1b] substring or sublist *expr-[:]*
If expr8 is a Number or String this results in the substring with the bytes
from expr1a to and including expr1b. expr8 is used as a String, expr1a and
expr1b are used as a Number. This doesn't recognize multi-byte encodings, see
|byteidx()| for computing the indexes.
If expr8 is a String this results in the substring with the bytes from expr1a
to and including expr1b. expr8 is used as a String, expr1a and expr1b are
used as a Number.
In legacy Vim script the indexes are byte indexes. This doesn't recognize
multi-byte encodings, see |byteidx()| for computing the indexes. If expr8 is
a Number it is first converted to a String.
In Vim9 script the indexes are character indexes. To use byte indexes use
|strpart()|.
If expr1a is omitted zero is used. If expr1b is omitted the length of the
string minus one is used.
@@ -1993,6 +2006,8 @@ v:mouse_col Column number for a mouse click obtained with |getchar()|.
*v:none* *none-variable* *None*
v:none An empty String. Used to put an empty item in JSON. See
|json_encode()|.
This can also be used as a function argument to use the
default value, see |none-function_argument|.
When used as a number this evaluates to zero.
When used as a string this evaluates to "v:none". >
echo v:none
@@ -2831,7 +2846,7 @@ stridx({haystack}, {needle} [, {start}])
string({expr}) String String representation of {expr} value
strlen({expr}) Number length of the String {expr}
strpart({str}, {start} [, {len}])
String {len} characters of {str} at {start}
String {len} bytes of {str} at byte {start}
strptime({format}, {timestring})
Number Convert {timestring} to unix timestamp
strridx({haystack}, {needle} [, {start}])
@@ -4270,6 +4285,8 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()*
line number
<sflnum> script file line number, also when in
a function
<SID> "<SNR>123_" where "123" is the
current script ID |<SID>|
<cword> word under the cursor
<cWORD> WORD under the cursor
<client> the {clientid} of the last received
@@ -4890,31 +4907,32 @@ getbufinfo([{dict}])
Each returned List item is a dictionary with the following
entries:
bufnr buffer number.
bufnr Buffer number.
changed TRUE if the buffer is modified.
changedtick number of changes made to the buffer.
changedtick Number of changes made to the buffer.
hidden TRUE if the buffer is hidden.
lastused timestamp in seconds, like
lastused Timestamp in seconds, like
|localtime()|, when the buffer was
last used.
{only with the |+viminfo| feature}
listed TRUE if the buffer is listed.
lnum current line number in buffer.
linecount number of lines in the buffer (only
lnum Line number used for the buffer when
opened in the current window.
linecount Number of lines in the buffer (only
valid when loaded)
loaded TRUE if the buffer is loaded.
name full path to the file in the buffer.
signs list of signs placed in the buffer.
name Full path to the file in the buffer.
signs List of signs placed in the buffer.
Each list item is a dictionary with
the following fields:
id sign identifier
lnum line number
name sign name
variables a reference to the dictionary with
variables A reference to the dictionary with
buffer-local variables.
windows list of |window-ID|s that display this
windows List of |window-ID|s that display this
buffer
popups list of popup |window-ID|s that
popups List of popup |window-ID|s that
display this buffer
Examples: >
@@ -4929,8 +4947,11 @@ getbufinfo([{dict}])
<
To get buffer-local options use: >
getbufvar({bufnr}, '&option_name')
<
Can also be used as a |method|: >
GetBufnr()->getbufinfo()
<
*getbufline()*
getbufline({expr}, {lnum} [, {end}])
Return a |List| with the lines starting from {lnum} to {end}
@@ -5438,7 +5459,7 @@ getloclist({nr} [, {what}]) *getloclist()*
:echo getloclist(5, {'filewinid': 0})
getmarklist([{expr}] *getmarklist()*
getmarklist([{expr}]) *getmarklist()*
Without the {expr} argument returns a |List| with information
about all the global marks. |mark|
@@ -8701,7 +8722,8 @@ searchcount([{options}]) *searchcount()*
pos |List| `[lnum, col, off]` value
when recomputing the result.
this changes "current" result
value. see |cursor()|, |getpos()
value. see |cursor()|,
|getpos()|
(default: cursor's position)
@@ -9103,7 +9125,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
argument is ignored. See below for the supported items in
{what}.
*setqflist-what*
When {what} is not present, the items in {list} or used. Each
When {what} is not present, the items in {list} are used. Each
item must be a dictionary. Non-dictionary items in {list} are
ignored. Each dictionary item can contain the following
entries:
@@ -9180,7 +9202,8 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
the last quickfix list.
quickfixtextfunc
function to get the text to display in the
quickfix window. Refer to
quickfix window. The value can be the name of
a function or a funcref or a lambda. Refer to
|quickfix-window-function| for an explanation
of how to write the function and an example.
title quickfix list title text. See |quickfix-title|
@@ -9323,7 +9346,7 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
Returns zero for success, -1 for failure.
Examples (for more examples see |tagstack-examples||):
Examples (for more examples see |tagstack-examples|):
Empty the tag stack of window 3: >
call settagstack(3, {'items' : []})
@@ -10123,7 +10146,7 @@ swapname({expr}) *swapname()*
The result is the swap file path of the buffer {expr}.
For the use of {expr}, see |bufname()| above.
If buffer {expr} is the current buffer, the result is equal to
|:swapname| (unless no swap file).
|:swapname| (unless there is no swap file).
If buffer {expr} has no swap file, returns an empty string.
Can also be used as a |method|: >
@@ -10346,8 +10369,13 @@ tabpagebuflist([{arg}]) *tabpagebuflist()*
tabpagenr([{arg}]) *tabpagenr()*
The result is a Number, which is the number of the current
tab page. The first tab page has number 1.
When the optional argument is "$", the number of the last tab
page is returned (the tab page count).
The optional argument {arg} supports the following values:
$ the number of the last tab page (the tab page
count).
# the number of the last accessed tab page
(where |g<Tab>| goes to). if there is no
previous tab page 0 is returned.
The number can be used with the |:tab| command.
@@ -11705,7 +11733,7 @@ The argument default expressions are evaluated at the time of the function
call, not definition. Thus it is possible to use an expression which is
invalid the moment the function is defined. The expressions are also only
evaluated when arguments are not specified during a call.
*none-function_argument*
You can pass |v:none| to use the default expression. Note that this means you
cannot pass v:none as an ordinary value when an argument has a default
expression.
@@ -12122,7 +12150,8 @@ text...
{endmarker}
Set internal variable {var-name} to a |List|
containing the lines of text bounded by the string
{endmarker}.
{endmarker}. The lines of text is used as a
|literal-string|.
{endmarker} must not contain white space.
{endmarker} cannot start with a lower case character.
The last line should end only with the {endmarker}
@@ -12233,10 +12262,18 @@ text...
:const x = 1
< is equivalent to: >
:let x = 1
:lockvar 1 x
:lockvar! x
< This is useful if you want to make sure the variable
is not modified.
*E995*
is not modified. If the value is a List or Dictionary
literal then the items also cannot be changed: >
const ll = [1, 2, 3]
let ll[1] = 5 " Error!
< Nested references are not locked: >
let lvar = ['a']
const lconst = [0, lvar]
let lconst[0] = 2 " Error!
let lconst[1][0] = 'b' " OK
< *E995*
|:const| does not allow to for changing a variable: >
:let x = 1
:const x = 2 " Error!

View File

@@ -163,8 +163,8 @@ file. It will be overwritten when installing a new version of Vim.
A. If you want to overrule all default file type checks.
This works by writing one file for each filetype. The disadvantage is that
means there can be many files. The advantage is that you can simply drop
this file in the right directory to make it work.
there can be many files. The advantage is that you can simply drop this
file in the right directory to make it work.
*ftdetect*
1. Create your user runtime directory. You would normally use the first
item of the 'runtimepath' option. Then create the directory "ftdetect"

View File

@@ -312,7 +312,7 @@ can create any of the following: >
$VIM/vimfiles/indent/sqlite.vim
No changes are necessary to the SQLSetType function. It will automatically
pickup the new SQL files and load them when you issue the SQLSetType command.
pick up the new SQL files and load them when you issue the SQLSetType command.
==============================================================================
@@ -519,7 +519,7 @@ beginning with those characters. >
4.3.2 Column Completion: *sql-completion-columns*
The SQL completion plugin can also display a list of columns for particular
tables. The column completion is trigger via <C-C>c.
tables. The column completion is triggered via <C-C>c.
NOTE: The following example uses <Right> to trigger a column list while
the popup window is active.
@@ -727,7 +727,7 @@ your platform (often a case on *nix) you define the following variable in
your |vimrc|: >
let g:omni_sql_no_default_maps = 1
Do no edit ftplugin/sql.vim directly! If you change this file your changes
Do not edit ftplugin/sql.vim directly! If you change this file your changes
will be over written on future updates. Vim has a special directory structure
which allows you to make customizations without changing the files that are
included with the Vim distribution. If you wish to customize the maps

View File

@@ -1096,8 +1096,9 @@ That's all. XLFDs are not used. For Chinese this is reported to work well: >
For Mac OSX you can use something like this: >
:set guifont=Monaco:h10
Also see 'macatsui', it can help fix display problems.
*E236*
Mono-spaced fonts *E236*
Note that the fonts must be mono-spaced (all characters have the same width).
An exception is GTK: all fonts are accepted, but mono-spaced fonts look best.

View File

@@ -451,7 +451,7 @@ with the Intellimouse driver 2.2 and when "Universal Scrolling" is turned on.
XPM support *w32-xpm-support*
GVim can be build on MS-Windows with support for XPM files. |+xpm_w32|
GVim can be built on MS-Windows with support for XPM files. |+xpm_w32|
See the Make_mvc.mak file for instructions, search for XPM.
To try out if XPM support works do this: >

View File

@@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 8.2. Last change: 2020 Mar 01
*helphelp.txt* For Vim version 8.2. Last change: 2020 Jul 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -369,14 +369,16 @@ highlighting. So do these:
You can find the details in $VIMRUNTIME/syntax/help.vim
*inclusion*
Some people make a big deal about using "his" when referring to the user,
thinking it means we assume the user is male. That is of course not the case,
it's just a habit of writing help text, which quite often is many years old.
Also, a lot of the text is written by contributors for who English is not
their first language. We do not make any assumptions about the gender of the
user, no matter how the text is phrased. And we do not want to waste time on
this discussion. The goal is that the reader understands how Vim works, the
exact wording is secondary.
Vim is for everybody, no matter race, gender or anything. Some people make a
big deal about using "he" or "his" when referring to the user, thinking it
means we assume the user is male. That is not the case, it's just a habit of
writing help text, which quite often is many years old. Also, a lot of the
text is written by contributors for whom English is not their first language.
We do not make any assumptions about the gender of the user, no matter how the
text is phrased. Some people have suggested using "they", but that is not
regular English. We do not want to spend much time on this discussion. The
goal is that the reader understands how Vim works, the exact wording is
secondary.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -199,8 +199,8 @@ Vim evaluation and command execution, and others.
returns it. Note that the buffer is not set as
current.
vim.call({name} [,{args}])
Proxy to call Vim function named {name} with
vim.call({name} [, {args}])
Proxy to call Vim function named {name} with
arguments {args}. Example: >
:lua print(vim.call('has', 'timers'))
<

View File

@@ -275,7 +275,7 @@ Options:
$win delcmd {cmd} *tcl-window-delcmd*
Registers the Tcl command {cmd} as a deletion callback for the window.
This command is executed (in the global scope) just before the window
is closed. Complex commands should be build with "list": >
is closed. Complex commands should be built with "list": >
$win delcmd [list puts vimerr "window deleted"]
< See also |tcl-buffer-delcmd|.
@@ -357,7 +357,7 @@ Options:
$buf delcmd {cmd} *tcl-buffer-delcmd*
Registers the Tcl command {cmd} as a deletion callback for the buffer.
This command is executed (in the global scope) just before the buffer
is deleted. Complex commands should be build with "list": >
is deleted. Complex commands should be built with "list": >
$buf delcmd [list puts vimerr "buffer [$buf number] gone"]
< See also |tcl-window-delcmd|.

View File

@@ -414,11 +414,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-(*
(N When in unclosed parentheses, indent N characters from the line
with the unclosed parentheses. Add a 'shiftwidth' for every
with the unclosed parenthesis. Add a 'shiftwidth' for every
extra unclosed parentheses. When N is 0 or the unclosed
parentheses is the first non-white character in its line, line
parenthesis is the first non-white character in its line, line
up with the next non-white character after the unclosed
parentheses. (default 'shiftwidth' * 2).
parenthesis. (default 'shiftwidth' * 2).
cino= cino=(0 >
if (c1 && (c2 || if (c1 && (c2 ||
@@ -439,7 +439,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-U*
UN When N is non-zero, do not ignore the indenting specified by
( or u in case that the unclosed parentheses is the first
( or u in case that the unclosed parenthesis is the first
non-white character in its line. (default 0).
cino= or cino=(s cino=(s,U1 >
@@ -452,8 +452,8 @@ The examples below assume a 'shiftwidth' of 4.
*cino-w*
wN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively, or using "U0" and the unclosed
parentheses is the first non-white character in its line, line
up with the character immediately after the unclosed parentheses
parenthesis is the first non-white character in its line, line
up with the character immediately after the unclosed parenthesis
rather than the first non-white character. (default 0).
cino=(0 cino=(0,w1 >
@@ -464,11 +464,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-W*
WN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively and the unclosed parentheses is
using "(0" or "u0", respectively and the unclosed parenthesis is
the last non-white character in its line and it is not the
closing parentheses, indent the following line N characters
closing parenthesis, indent the following line N characters
relative to the outer context (i.e. start of the line or the
next unclosed parentheses). (default: 0).
next unclosed parenthesis). (default: 0).
cino=(0 cino=(0,W4 >
a_long_line( a_long_line(
@@ -495,8 +495,8 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-m*
mN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the line with the
matching opening parentheses. (default 0).
parenthesis with the first character of the line with the
matching opening parenthesis. (default 0).
cino=(s cino=(s,m1 >
c = c1 && ( c = c1 && (
@@ -510,7 +510,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-M*
MN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the previous line.
parenthesis with the first character of the previous line.
(default 0).
cino= cino=M1 >
@@ -569,7 +569,7 @@ The examples below assume a 'shiftwidth' of 4.
recognize preprocessor lines; right-shifting lines that start
with "#" does not work.
*cino-P*
PN When N is non-zero recognize C pragmas, and indent them like any
other code; does not concern other preprocessor directives.
When N is zero (default): don't recognize C pragmas, treating
@@ -996,7 +996,7 @@ Indent after a nested paren: >
Indent for a continuation line: >
let g:pyindent_continue = 'shiftwidth() * 2'
The method uses |searchpair()| to look back for unclosed parenthesis. This
The method uses |searchpair()| to look back for unclosed parentheses. This
can sometimes be slow, thus it timeouts after 150 msec. If you notice the
indenting isn't correct, you can set a larger timeout in msec: >
let g:pyindent_searchpair_timeout = 500

View File

@@ -440,6 +440,7 @@ tag char note action in Normal mode ~
|<C-LeftMouse>| <C-LeftMouse> ":ta" to the keyword at the mouse click
|<C-Right>| <C-Right> 1 same as "w"
|<C-RightMouse>| <C-RightMouse> same as "CTRL-T"
|<C-Tab>| <C-Tab> same as "g<Tab>"
|<Del>| ["x]<Del> 2 same as "x"
|N<Del>| {count}<Del> remove the last digit from {count}
|<Down>| <Down> 1 same as "j"
@@ -587,6 +588,8 @@ tag command action in Normal mode ~
following the file name.
|CTRL-W_gt| CTRL-W g t same as `gt`: go to next tab page
|CTRL-W_gT| CTRL-W g T same as `gT`: go to previous tab page
|CTRL-W_g<Tab>| CTRL-W g <Tab> same as |g<Tab>|: go to last accessed tab
page.
|CTRL-W_h| CTRL-W h go to Nth left window (stop at first window)
|CTRL-W_i| CTRL-W i split window and jump to declaration of
identifier under the cursor
@@ -805,6 +808,7 @@ tag char note action in Normal mode ~
|g<LeftMouse>| g<LeftMouse> same as <C-LeftMouse>
g<MiddleMouse> same as <C-MiddleMouse>
|g<RightMouse>| g<RightMouse> same as <C-RightMouse>
|g<Tab>| g<Tab> go to the last accessed tab page.
|g<Up>| g<Up> 1 same as "gk"
==============================================================================

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.2. Last change: 2020 Apr 23
*map.txt* For Vim version 8.2. Last change: 2020 Aug 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -843,11 +843,10 @@ When modifyOtherKeys is enabled you can map <C-[> and <C-S-{>: >
imap <C-S-{> {{{
Without modifyOtherKeys <C-[> and <C-S-{> are indistinguishable from Esc.
A known side effect effect is that in Insert mode the raw escape sequence is
inserted after the CTRL-V key. This can be used to check whether
modifyOtherKeys is enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you
get one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is
on.
A known side effect is that in Insert mode the raw escape sequence is inserted
after the CTRL-V key. This can be used to check whether modifyOtherKeys is
enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you get one byte then
modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
Insert mode to avoid every key with a modifier causing Insert mode to end.
@@ -1168,6 +1167,10 @@ When executing an autocommand or a user command, it will run in the context of
the script it was defined in. This makes it possible that the command calls a
local function or uses a local mapping.
In case the value is used in a context where <SID> cannot be correctly
expanded, use the expand() function: >
let &includexpr = expand('<SID>') .. 'My_includeexpr()'
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

View File

@@ -128,7 +128,7 @@ There are several ways to enter multi-byte characters:
- For MS-Windows IME can be used. See |IME|.
- For all systems keymaps can be used. See |mbyte-keymap|.
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose
the different input methods or disable them temporarily.
==============================================================================
@@ -141,8 +141,8 @@ in, or just use a certain locale inside Vim.
WHAT IS A LOCALE? *locale*
There are many of languages in the world. And there are different cultures
and environments at least as much as the number of languages. A linguistic
There are many languages in the world. And there are different cultures and
environments at least as many as the number of languages. A linguistic
environment corresponding to an area is called "locale". This includes
information about the used language, the charset, collating order for sorting,
date format, currency format and so on. For Vim only the language and charset
@@ -889,7 +889,7 @@ input_server_name is your |IM-server| name (check your |IM-server|
your_input_style is one of |OverTheSpot|, |OffTheSpot|, |Root|. See
also |xim-input-style|.
*international may not necessary if you use X11R6.
*international may not be necessary if you use X11R6.
*.inputMethod and *.preeditType are optional if you use X11R6.
For example, when you are using kinput2 as |IM-server|, >
@@ -952,7 +952,7 @@ automatically.
This works on not only insert-normal mode, but also search-command input and
replace mode.
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose
the different input methods or disable them temporarily.
WHAT IS IME

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.2. Last change: 2020 Jul 05
*options.txt* For Vim version 8.2. Last change: 2020 Aug 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -727,8 +727,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'antialias' 'anti' boolean (default: off)
global
{only available when compiled with GUI enabled
on Mac OS X}
This option only has an effect in the GUI version of Vim on Mac OS X
on macOS}
This option only has an effect in the GUI version of Vim on macOS
v10.2 or later. When on, Vim will use smooth ("antialiased") fonts,
which can be easier to read at certain sizes on certain displays.
Setting this option can sometimes cause problems if 'guifont' is set
@@ -1951,9 +1951,11 @@ A jump table for the options with a short description can be found at |Q_op|.
{not available when compiled without the |+textprop|
or |+quickfix| feature}
When 'completeopt' contains "popup" then this option is used for the
properties of the info popup when it is created. You can also use
|popup_findinfo()| and then set properties for an existing info popup
with |popup_setoptions()|. See |complete-popup|.
properties of the info popup when it is created. If an info popup
window already exists it is closed, so that the option value is
applied when it is created again.
You can also use |popup_findinfo()| and then set properties for an
existing info popup with |popup_setoptions()|. See |complete-popup|.
*'concealcursor'* *'cocu'*
@@ -2713,6 +2715,11 @@ A jump table for the options with a short description can be found at |Q_op|.
for Unix: ".,~/tmp,/var/tmp,/tmp")
global
List of directory names for the swap file, separated with commas.
Recommended value: ".,~/vimswap//" - this will put the swap file next
to the edited file if possible, and in your personal swap directory
otherwise. Make sure "~/vimswap//" is only readable for you.
Possible items:
- The swap file will be created in the first directory where this is
possible.
- Empty means that no swap file will be used (recovery is
@@ -2747,9 +2754,10 @@ A jump table for the options with a short description can be found at |Q_op|.
the same file twice will result in a warning. Using "/tmp" on Unix is
discouraged: When the system crashes you lose the swap file.
"/var/tmp" is often not cleared when rebooting, thus is a better
choice than "/tmp". But it can contain a lot of files, your swap
files get lost in the crowd. That is why a "tmp" directory in your
home directory is tried first.
choice than "/tmp". But others on the computer may be able to see the
files, and it can contain a lot of files, your swap files get lost in
the crowd. That is why a "tmp" directory in your home directory is
tried first.
The use of |:set+=| and |:set-=| is preferred when adding or removing
directories from the list. This avoids problems when a future version
uses another default.
@@ -4538,7 +4546,7 @@ A jump table for the options with a short description can be found at |Q_op|.
set and to the Vim default value when 'compatible' is reset.
*'isprint'* *'isp'*
'isprint' 'isp' string (default for Win32 and Macintosh:
'isprint' 'isp' string (default for Win32 and macOS:
"@,~-255"; otherwise: "@,161-255")
global
The characters given by this option are displayed directly on the
@@ -4915,18 +4923,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'macatsui'* *'nomacatsui'*
'macatsui' boolean (default on)
global
{only available in Mac GUI version}
This is a workaround for when drawing doesn't work properly. When set
and compiled with multi-byte support ATSUI text drawing is used. When
not set ATSUI text drawing is not used. Switch this option off when
you experience drawing problems. In a future version the problems may
be solved and this option becomes obsolete. Therefore use this method
to unset it: >
if exists('&macatsui')
set nomacatsui
endif
< Another option to check if you have drawing problems is
'termencoding'.
{not supported}
No longer supported, as the Mac OS X GUI code was removed.
*'magic'* *'nomagic'*
'magic' boolean (default on)
@@ -5911,7 +5909,8 @@ A jump table for the options with a short description can be found at |Q_op|.
customize the information displayed in the quickfix or location window
for each entry in the corresponding quickfix or location list. See
|quickfix-window-function| for an explanation of how to write the
function and an example.
function and an example. The value can be the name of a function or a
lambda.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -6231,7 +6230,7 @@ A jump table for the options with a short description can be found at |Q_op|.
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/vimfiles/after"
Macintosh: "$VIM:vimfiles,
macOS: "$VIM:vimfiles,
$VIMRUNTIME,
$VIM:vimfiles:after"
Haiku: "$BE_USER_SETTINGS/vim,
@@ -7708,7 +7707,6 @@ A jump table for the options with a short description can be found at |Q_op|.
on Amiga: "amiga"
on Haiku: "xterm"
on Mac: "mac-ansi"
on MiNT: "vt52"
on Unix: "ansi"
on VMS: "ansi"
on Win 32: "win32")
@@ -7736,14 +7734,12 @@ A jump table for the options with a short description can be found at |Q_op|.
For further details see |arabic.txt|.
*'termencoding'* *'tenc'*
'termencoding' 'tenc' string (default ""; with GTK+ GUI: "utf-8"; with
Macintosh GUI: "macroman")
'termencoding' 'tenc' string (default ""; with GTK+ GUI: "utf-8")
global
Encoding used for the terminal. This specifies what character
encoding the keyboard produces and the display will understand. For
the GUI it only applies to the keyboard ('encoding' is used for the
display). Except for the Mac when 'macatsui' is off, then
'termencoding' should be "macroman".
display).
*E617* *E950*
Note: This does not apply to the GTK+ GUI. After the GUI has been
successfully initialized, 'termencoding' is forcibly set to "utf-8".
@@ -8366,7 +8362,7 @@ A jump table for the options with a short description can be found at |Q_op|.
>= 14 Anything pending in a ":finally" clause.
>= 15 Every executed Ex command from a script (truncated at 200
characters).
>= 16 Every executed Ex command
>= 16 Every executed Ex command.
This option can also be set with the "-V" argument. See |-V|.
This option is also set by the |:verbose| command.
@@ -8389,7 +8385,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'viewdir' 'vdir' string (default for Amiga and Win32:
"$VIM/vimfiles/view",
for Unix: "~/.vim/view",
for Macintosh: "$VIM:vimfiles:view"
for macOS: "$VIM:vimfiles:view"
for VMS: "sys$login:vimfiles/view")
global
{not available when compiled without the |+mksession|
@@ -8905,7 +8901,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{only available when compiled with the |terminal|
feature on MS-Windows}
Specifies the name of the winpty shared library, used for the
|:terminal| command. The default depends on whether was build as a
|:terminal| command. The default depends on whether Vim was built as a
32-bit or 64-bit executable. If not found, "winpty.dll" is tried as
a fallback.
Environment variables are expanded |:set_env|.

View File

@@ -30,8 +30,8 @@ can be changed at compile time.
Because terminal updating under Unix is often slow (e.g. serial line
terminal, shell window in suntools), the 'showcmd' and 'ruler' options
are default off. If you have a fast terminal, try setting them on. You might
also want to set 'ttyfast'.
are off by default. If you have a fast terminal, try setting them on. You
might also want to set 'ttyfast'.
When using Vim in an xterm the mouse clicks can be used by Vim by setting
'mouse' to "a". If there is access to an X-server gui style copy/paste will

View File

@@ -88,7 +88,7 @@ VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program that will do the lion
part of the job. For detailed instructions read file INSTALLvms.txt
MMS_VIM.EXE is build together with VIM.EXE, but for XXD.EXE you should
MMS_VIM.EXE is built together with VIM.EXE, but for XXD.EXE you should
change to a subdirectory and build it separately.
CTAGS is not part of the Vim source distribution anymore, however the OpenVMS

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2020 May 18
*popup.txt* For Vim version 8.2. Last change: 2020 Jul 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -74,9 +74,9 @@ wrapping, lines in the buffer. It can be limited with the "maxheight"
property. You can use empty lines to increase the height or the "minheight"
property.
The width of the window is normally equal to the longest line in the buffer.
It can be limited with the "maxwidth" property. You can use spaces to
increase the width or use the "minwidth" property.
The width of the window is normally equal to the longest visible line in the
buffer. It can be limited with the "maxwidth" property. You can use spaces
to increase the width or use the "minwidth" property.
By default the 'wrap' option is set, so that no text disappears. Otherwise,
if there is not enough space then the window is shifted left in order to

View File

@@ -1705,7 +1705,7 @@ special problem here is that it doesn't print information on leaving the
directory and that it doesn't print the absolute path.
To solve the problem with relative paths and missing "leave directory"
messages Vim uses following algorithm:
messages Vim uses the following algorithm:
1) Check if the given directory is a subdirectory of the current directory.
If this is true, store it as the current directory.
@@ -1938,7 +1938,7 @@ list window is:
The values displayed in each line correspond to the "bufnr", "lnum", "col" and
"text" fields returned by the |getqflist()| function.
For some quickfix/location lists, the displayed text need to be customized.
For some quickfix/location lists, the displayed text needs to be customized.
For example, if only the filename is present for a quickfix entry, then the
two "|" field separator characters after the filename are not needed. Another
use case is to customize the path displayed for a filename. By default, the
@@ -1964,7 +1964,10 @@ The function should return a single line of text to display in the quickfix
window for each entry from start_idx to end_idx. The function can obtain
information about the entries using the |getqflist()| function and specifying
the quickfix list identifier "id". For a location list, getloclist() function
can be used with the 'winid' argument.
can be used with the 'winid' argument. If an empty list is returned, then the
default format is used to display all the entries. If an item in the returned
list is an empty string, then the default format is used to display the
corresponding entry.
If a quickfix or location list specific customization is needed, then the
'quickfixtextfunc' attribute of the list can be set using the |setqflist()| or

View File

@@ -1,4 +1,4 @@
*recover.txt* For Vim version 8.2. Last change: 2020 May 09
*recover.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -64,8 +64,8 @@ Disadvantages:
directories (although Vim tries to avoid that by comparing the path name).
This will result in bogus ATTENTION warning messages.
- When you use your home directory, and somebody else tries to edit the same
file, he will not see your swap file and will not get the ATTENTION warning
message.
file, that user will not see your swap file and will not get the ATTENTION
warning message.
On the Amiga you can also use a recoverable ram disk, but there is no 100%
guarantee that this works. Putting swap files in a normal ram disk (like RAM:
on the Amiga) or in a place that is cleared when rebooting (like /tmp on Unix)

View File

@@ -179,7 +179,7 @@ name on the 'VimRegistry' property on the root window.
A non GUI Vim with access to the X11 display (|xterm-clipboard| enabled), can
also act as a command server if a server name is explicitly given with the
--servername argument, or when Vim was build with the |+autoservername|
--servername argument, or when Vim was built with the |+autoservername|
feature.
An empty --servername argument will cause the command server to be disabled.

View File

@@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.2. Last change: 2020 May 14
*repeat.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -642,8 +642,8 @@ disallowed though.
This assumes you write one or more plugins that you distribute as a package.
If you have two unrelated plugins you would use two packages, so that Vim
users can chose what they include or not. Or you can decide to use one
package with optional plugins, and tell the user to add the ones he wants with
users can choose what they include or not. Or you can decide to use one
package with optional plugins, and tell the user to add the preferred ones with
`:packadd`.
Decide how you want to distribute the package. You can create an archive or
@@ -679,7 +679,7 @@ You could add this packadd command in one of your plugins, to be executed when
the optional plugin is needed.
Run the `:helptags` command to generate the doc/tags file. Including this
generated file in the package means that the user can drop the package in his
generated file in the package means that the user can drop the package in the
pack directory and the help command works right away. Don't forget to re-run
the command after changing the plugin help: >
:helptags path/start/foobar/doc

View File

@@ -69,7 +69,7 @@ o Invocations
+ 'rightleft' ('rl') sets window orientation to right-to-left.
+ 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
allows one to remove a composing character which gets superimposed
on those that proceeded them (some languages require this).
on those that preceded them (some languages require this).
+ 'rightleftcmd' ('rlc') sets the command-line within certain modes
(such as search) to be utilized in right-to-left orientation as well.

View File

@@ -78,7 +78,7 @@ used by popup windows where 'cursorline' is set.
*sign-priority*
Each placed sign is assigned a priority value. When multiple signs are placed
on the same line, the attributes of the sign with the highest priority is used
independent of the sign group. The default priority for a sign is 10. The
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 the line on which the sign is placed is deleted, the sign is moved to the

View File

@@ -1,4 +1,4 @@
*spell.txt* For Vim version 8.2. Last change: 2020 Jul 10
*spell.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1445,7 +1445,7 @@ are spelling mistakes this may not be quite right.
Common words can be specified with the COMMON item. This will give better
suggestions when editing a short file. Example:
COMMON the of to and a in is it you that he was for on are ~
COMMON the of to and a in is it you that he she was for on are ~
The words must be separated by white space, up to 25 per line.
When multiple regions are specified in a ":mkspell" command the common words

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.2. Last change: 2020 Jul 08
*syntax.txt* For Vim version 8.2. Last change: 2020 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1937,7 +1937,7 @@ new highlightings for the following groups.:
Debug, DebugSpecial, DebugString, DebugBoolean, DebugType
which are used for the statement itself, special characters used in debug
strings, strings, boolean constants and types (this, super) respectively. I
have opted to chose another background for those statements.
have opted to choose another background for those statements.
Javadoc is a program that takes special comments out of Java program files and
creates HTML pages. The standard configuration will highlight this HTML code
@@ -3648,7 +3648,7 @@ DEFINING FOLDLEVEL *:syn-foldlevel*
start: Use level of item containing start of line.
minimum: Use lowest local-minimum level of items on line.
The default is 'start'. Use 'minimum' to search a line horizontally
The default is "start". Use "minimum" to search a line horizontally
for the lowest level contained on the line that is followed by a
higher level. This produces more natural folds when syntax items
may close and open horizontally within a line.
@@ -3795,9 +3795,9 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
[keepend]
[extend]
[excludenl]
start={start_pattern} ..
[skip={skip_pattern}]
end={end_pattern} ..
start={start-pattern} ..
[skip={skip-pattern}]
end={end-pattern} ..
[{options}]
This defines one region. It may span several lines.
@@ -3819,12 +3819,12 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
extend a containing match or item. Only
useful for end patterns. Must be given before
the patterns it applies to. |:syn-excludenl|
start={start_pattern} The search pattern that defines the start of
start={start-pattern} The search pattern that defines the start of
the region. See |:syn-pattern| below.
skip={skip_pattern} The search pattern that defines text inside
skip={skip-pattern} The search pattern that defines text inside
the region where not to look for the end
pattern. See |:syn-pattern| below.
end={end_pattern} The search pattern that defines the end of
end={end-pattern} The search pattern that defines the end of
the region. See |:syn-pattern| below.
Example: >

View File

@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.2. Last change: 2020 Feb 06
*tabpage.txt* For Vim version 8.2. Last change: 2020 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -142,6 +142,7 @@ something else.
:tabclose + " close the next tab page
:tabclose 3 " close the third tab page
:tabclose $ " close the last tab page
:tabclose # " close the last accessed tab page
<
*:tabo* *:tabonly*
:tabo[nly][!] Close all other tab pages.
@@ -170,6 +171,8 @@ something else.
" one
:tabonly 1 " close all tab pages except the first one
:tabonly $ " close all tab pages except the last one
:tabonly # " close all tab pages except the last
" accessed one
SWITCHING TO ANOTHER TAB PAGE:
@@ -192,6 +195,7 @@ 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 previous tab page
:tabnext -1 " as above
@@ -221,6 +225,8 @@ 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> Go to the last accessed tab page.
Other commands:
*:tabs*
@@ -253,6 +259,8 @@ 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
" tab page
:tabm[ove] +[N]
:tabm[ove] -[N]

View File

@@ -1979,6 +1979,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:<sfile> cmdline.txt /*:<sfile>*
:<sflnum> cmdline.txt /*:<sflnum>*
:<slnum> cmdline.txt /*:<slnum>*
:<stack> cmdline.txt /*:<stack>*
:= various.txt /*:=*
:> change.txt /*:>*
:? cmdline.txt /*:?*
@@ -3496,6 +3497,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<C-ScrollWheelLeft> scroll.txt /*<C-ScrollWheelLeft>*
<C-ScrollWheelRight> scroll.txt /*<C-ScrollWheelRight>*
<C-ScrollWheelUp> scroll.txt /*<C-ScrollWheelUp>*
<C-Tab> tabpage.txt /*<C-Tab>*
<CR> motion.txt /*<CR>*
<CSI> intro.txt /*<CSI>*
<Char-> map.txt /*<Char->*
@@ -3647,6 +3649,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<sfile> cmdline.txt /*<sfile>*
<sflnum> cmdline.txt /*<sflnum>*
<slnum> cmdline.txt /*<slnum>*
<stack> cmdline.txt /*<stack>*
<xCSI> intro.txt /*<xCSI>*
<xDown> term.txt /*<xDown>*
<xEnd> term.txt /*<xEnd>*
@@ -3814,6 +3817,7 @@ CTRL-W_bar windows.txt /*CTRL-W_bar*
CTRL-W_c windows.txt /*CTRL-W_c*
CTRL-W_d tagsrch.txt /*CTRL-W_d*
CTRL-W_f windows.txt /*CTRL-W_f*
CTRL-W_g<Tab> tabpage.txt /*CTRL-W_g<Tab>*
CTRL-W_gF windows.txt /*CTRL-W_gF*
CTRL-W_gT windows.txt /*CTRL-W_gT*
CTRL-W_g] windows.txt /*CTRL-W_g]*
@@ -3898,6 +3902,7 @@ E1050 vim9.txt /*E1050*
E107 eval.txt /*E107*
E108 eval.txt /*E108*
E109 eval.txt /*E109*
E1092 vim9.txt /*E1092*
E1094 vim9.txt /*E1094*
E11 cmdline.txt /*E11*
E110 eval.txt /*E110*
@@ -5741,6 +5746,7 @@ cino-J indent.txt /*cino-J*
cino-L indent.txt /*cino-L*
cino-M indent.txt /*cino-M*
cino-N indent.txt /*cino-N*
cino-P indent.txt /*cino-P*
cino-U indent.txt /*cino-U*
cino-W indent.txt /*cino-W*
cino-^ indent.txt /*cino-^*
@@ -6859,6 +6865,7 @@ g<End> motion.txt /*g<End>*
g<Home> motion.txt /*g<Home>*
g<LeftMouse> tagsrch.txt /*g<LeftMouse>*
g<RightMouse> tagsrch.txt /*g<RightMouse>*
g<Tab> tabpage.txt /*g<Tab>*
g<Up> motion.txt /*g<Up>*
g? change.txt /*g?*
g?? change.txt /*g??*
@@ -8198,6 +8205,7 @@ no_plugin_maps filetype.txt /*no_plugin_maps*
nocombine syntax.txt /*nocombine*
non-greedy pattern.txt /*non-greedy*
non-zero-arg eval.txt /*non-zero-arg*
none-function_argument eval.txt /*none-function_argument*
none-variable eval.txt /*none-variable*
normal-index index.txt /*normal-index*
not-compatible usr_01.txt /*not-compatible*
@@ -8295,6 +8303,7 @@ pascal.vim syntax.txt /*pascal.vim*
patches-8 version8.txt /*patches-8*
patches-8.1 version8.txt /*patches-8.1*
patches-8.2 version8.txt /*patches-8.2*
patches-after-8.2 version8.txt /*patches-after-8.2*
pathshorten() eval.txt /*pathshorten()*
pattern pattern.txt /*pattern*
pattern-atoms pattern.txt /*pattern-atoms*
@@ -9633,6 +9642,7 @@ tutor usr_01.txt /*tutor*
twice if_cscop.txt /*twice*
two-engines pattern.txt /*two-engines*
type() eval.txt /*type()*
type-casting vim9.txt /*type-casting*
type-inference vim9.txt /*type-inference*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
@@ -9929,6 +9939,7 @@ valgrind debug.txt /*valgrind*
values() eval.txt /*values()*
var-functions usr_41.txt /*var-functions*
variable-scope eval.txt /*variable-scope*
variable-types vim9.txt /*variable-types*
variables eval.txt /*variables*
various various.txt /*various*
various-cmds various.txt /*various-cmds*

View File

@@ -1,4 +1,4 @@
*testing.txt* For Vim version 8.2. Last change: 2020 Jul 09
*testing.txt* For Vim version 8.2. Last change: 2020 Jul 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -20,18 +20,17 @@ and for testing plugins.
Vim can be tested after building it, usually with "make test".
The tests are located in the directory "src/testdir".
There are several types of tests added over time:
test33.in oldest, don't add any of these
test_something.in old style tests
There are two types of tests added over time:
test20.in oldest, only for tiny and small builds
test_something.vim new style tests
*new-style-testing*
New tests should be added as new style tests. These use functions such as
|assert_equal()| to keep the test commands and the expected result in one
place.
New tests should be added as new style tests. The test scripts are named
test_<feature>.vim (replace <feature> with the feature under test). These use
functions such as |assert_equal()| to keep the test commands and the expected
result in one place.
*old-style-testing*
In some cases an old style test needs to be used. E.g. when testing Vim
without the |+eval| feature.
These tests are used only for testing Vim without the |+eval| feature.
Find more information in the file src/testdir/README.txt.
@@ -292,8 +291,9 @@ assert_exception({error} [, {msg}]) *assert_exception()*
catch
call assert_exception('E492:')
endtry
assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
<
*assert_fails()*
assert_fails({cmd} [, {error} [, {msg} [, {lnum}]]])
Run {cmd} and add an error message to |v:errors| if it does
NOT produce an error or when {error} is not found in the
error message. Also see |assert-return|.
@@ -312,13 +312,21 @@ assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
string for the first error: >
assert_fails('cmd', ['', 'E987:'])
<
If {msg} is empty then it is not used. Do this to get the
default message when passing the {lnum} argument.
When {lnum} is present and not negative, and the {error}
argument is present and matches, then this is compared with
the line number at which the error was reported. That can be
the line number in a function or in a script.
Note that beeping is not considered an error, and some failing
commands only beep. Use |assert_beeps()| for those.
Can also be used as a |method|: >
GetCmd()->assert_fails('E99:')
assert_false({actual} [, {msg}]) *assert_false()*
assert_false({actual} [, {msg}]) *assert_false()*
When {actual} is not false an error message is added to
|v:errors|, like with |assert_equal()|.
Also see |assert-return|.

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2020 Jul 10
*todo.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,26 +38,47 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
What is the way to get the character under the cursor? With or without
composing characters. getline(".") and then use col(".") somehow?
Add charidx() perhaps?
Making everything work:
- in Vim9 script expressions are evaluated differently, not using a type.
e.g. "'' == 0" does not give an error and evaluates to true.
- cannot put # comment after assert() in :def function
- more return types depending on the first argument, like sort().
- Check that when sourcing a Vim9 script, only the global items can be used.
- Slice of list: [1, 2, 3][1:2].
- Slice of string: "abc"[1:2]. (#6709)
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- :put with a "=" register argument doesn't work, need to find the expression
and compile it. (#6397)
- should "'text'->method()" work? 't is a range, but 'text isn't.
- Slice of list: [1, 2, 3][1:2].
- At the script level, keep script variables local to the block they are
declared in? Need to remember what variables were declared and delete them
when leaving the block.
- Implement { } block at the script level.
- 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 map() give an error if the resulting type is wrong.
Add mapnew() to create a new List/Dict for the result, which can have a
different value type.
- 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')
- Give runtime error if function argument is wrong.
def Increment(nr: number)
range(3)->Increment()
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
- Expand `=expr` in :mkspell
- Make "true" and "false" work in vim9script
- 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.
- Support passing v:none to use the default argument value. (#6504)
- 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.
@@ -67,6 +88,7 @@ Making everything work:
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().
- Compile builtin functions that access local variables:
@@ -77,10 +99,6 @@ Making everything work:
- memory leaks in test_vim9_cmd
- When evaluating constants for script variables, some functions could work:
has('asdf'), len('string')
- Support type for ":let"/":const" at script level for Vim9 script.
(Ben Jackson, #5671)
Can we share the code from ex_let_const() between direct execution and
compiling?
- Implement "as Name" in "import Item as Name from ..."
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
@@ -91,11 +109,10 @@ Making everything work:
- 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.
Test:
- Using a Vim9 autoload script (functions must be global).
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.
@@ -108,8 +125,6 @@ Also:
- 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.
- call autoload function.
- Implement more expressions, e.g. [a:b]
- can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
@@ -139,11 +154,17 @@ Further improvements:
Popup windows:
- 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.?
- Fire some autocommand event after a new popup window was created and
positioned? PopupNew? Could be used to set some options or move it out of
the way. (#5737)
However, it may also cause trouble, changing the popup of another plugin.
- Width is not computed correctly when minwidth and maxwidth are &columns
and padding and a scrollbar are used. (#6676)
- Add a way to use popup_menu() synchronously: instead of invoking the
callback, return the choice. (Ben Jackson, #6534)
- Use popup (or popup menu) for command line completion
- When using a popup for the info of a completion menu, and there is not
enough space, let the popup overlap with the menu. (#4544)
@@ -157,7 +178,7 @@ Popup windows:
- Figure out the size and position better if wrapping inserts indent
Text properties:
- :goto does not go to the right place when test properties are present.
- :goto does not go to the right place when text properties are present.
(#5930)
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
- Get E685 with a sequence of commands. (#5674)
@@ -188,7 +209,7 @@ Terminal debugger:
an already running program. (M. Kelly)
- When only gdb window exists, on "quit" edit another buffer.
- Use a sign group
- Termdebug does not work when Vim was build with mzscheme: gdb hangs just
- Termdebug does not work when Vim was built with mzscheme: gdb hangs just
after "run". Everything else works, including communication channel. Not
initializing mzscheme avoid the problem, thus it's not some #ifdef.
- Add support for lldb? issue #3565
@@ -199,6 +220,9 @@ Terminal debugger:
Terminal emulator window:
- 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".
:term bash -c "for V in {0..5}; do echo $V; sleep 1; done"
- When started with ":terminal ++close" and the shell exits but there is a
background process, the window remains open, because the channel still
exists (and output still shows). Perhaps close the window when an explicit
@@ -238,12 +262,17 @@ Terminal emulator window:
conversions.
Error numbers available:
E489, E610, E611, E653, E856
E610, E611, E653
Clean up empty entries in testdir/Make_all.mak
Remove SPACE_IN_FILENAME ? It is only used for completion.
Patch to use collaction based sorting. (Christian Brabandt, #6229)
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
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.
@@ -269,8 +298,15 @@ autocommands for the buffer lifecycle:
BufIsRenamed (after buffer ID gets another name)
The buffer list and windows are locked, no changes possible
How about removing Atari MiNT support?
src/Make_mint.mak, src/os_mint.h, matches with __MINT__
Make it possible to map (console and GUI): #6457
<C-[> 0x27 or is this <Esc> ?
<C-\> 0x28
<C-]> 0x29
<C-^> 0x30
<C-_> 0x31
Patch for Template string: #4634
Have another look at the implementation.
Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
replace this:
@@ -281,6 +317,13 @@ Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper
Patch to make :q work with local arglist. (Christian Brabandt, #6286)
Lua: updating wrong buffer when using newly created, unloaded buffer.
(#6539)
When "+ register is set then "" points to it. If another Vim grabs the "+
register, then "" doesn't contain anything. Make it still follow "+.
(#6435)
Patch to fix drawing error with DirectX. (James Grant, #5688)
Causes flicker on resizing. Workaround from Ken Takata.
How about only setting the attribute when part of the Vim window is offscreen?
@@ -304,6 +347,9 @@ character. (#6154)
undo result wrong: Masato Nishihata, #4798
After recovering from a swap file the undofile should not be used, it causes
corruption. (#6631)
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
@@ -347,6 +393,10 @@ Test loose_clipboard() by selecting text before suspending.
Undo puts cursor in wrong line after "cG<Esc>" undo.
Implement completion for "breakadd". Should expand the second argument, e.g.
"func", and then function names after ":breakadd func". Including
script-local functions.
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
Dec 19)
@@ -360,6 +410,9 @@ 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)
@@ -386,10 +439,6 @@ behavior of i_CTRl-R_CTRL-R differs from documentation. (Paul Desmond Parker,
goes to any buffer, and then :bnext skips help buffers, since they are
unlisted. (#4478)
Patch for Template string: #4634
Copies the text twice, not very efficient. Requires a separate implementation
for Vim9 script, compiling the string parts and expressions.
Statusline highlighting error, off by one. (#5599)
":find" with 'path' set to "data*" does not find files, while completion does
@@ -1442,7 +1491,7 @@ Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)
Add stronger encryption. Could use libsodium (NaCl).
https://github.com/jedisct1/libsodium/
Possibly include the needed code so that it can be build everywhere.
Possibly include the needed code so that it can be built everywhere.
Add a way to restart a timer. It's similar to timer_stop() and timer_start(),
but the reference remains valid.
@@ -1928,13 +1977,6 @@ Szamotulski, 2012 Nov 8)
Session file creation: 'autochdir' causes trouble. Keep it off until after
loading all files.
MS-Windows resizing problems:
- Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
20. Uses getWindowRect() instead of GetWindowPlacement()
- Win32: When the taskbar is at the top of the screen creating the tabbar
causes the window to move unnecessarily. (William E. Skeith III, 2012 Jan
12) Patch: 2012 Jan 13 Needs more work (2012 Feb 2)
'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23)
Patch to append regexp to tag commands to make it possible to select one out
@@ -2832,9 +2874,6 @@ Jun 18)
If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
Feature request: Command to go to previous tab, like what CTRL-W p does for
windows. (Adam George)
In debug mode, using CTRL-R = to evaluate a function causes stepping through
the function. (Hari Krishna Dara, 2006 Jun 28)
@@ -3810,9 +3849,7 @@ Macintosh:
two lines at a time. "k" doesn't do this. (Cory T. Echols)
8 When write_viminfo() is used while there are many orphaned viminfo
tempfiles writing the viminfo file fails. Give a clear error message so
that the user knows he has to delete the files.
7 It's possible to redefine a script-local function with ":func
<SNR>123_Test()". (Krishna) Disallow this.
that the user knows the files have to be deleted.
I can't reproduce these (if you can, let me know how!):
@@ -3983,7 +4020,7 @@ Help:
- Support a way to view (and edit) .info files.
- Implement a "sticky" help window, some help text lines that are always
displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file,
user can edit it to insert his favorite commands, new account can contain a
user can edit it to insert favorite commands, new account can contain a
default contents.
- Make 'winminheight' a local option, so that the user can set a minimal
height for the help window (and other windows).
@@ -5651,7 +5688,7 @@ Buffer list:
Also for other windows: ":inwin {winnr} {cmd}". How to make sure that
this works properly for all commands, and still be able to return to the
current buffer/window? E.g.: ":inbuf xxx only".
8 Add File.{recent_files} menu entries: Recently edited files.
8 Add File.{recent-files} menu entries: Recently edited files.
Ron Aaron has a plugin for this: mru.vim.
8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
inode too.
@@ -5750,7 +5787,7 @@ Modelines:
.cpp files.
- Support the "abbreviate" command in modelines (Kearns). Careful for
characters after <Esc>, that is a security leak.
- Add option setting to ask user if he wants to have the modelines executed
- Add an option setting to ask the user if the modelines are to be executed
or not. Same for .exrc in local dir.

View File

@@ -161,7 +161,7 @@ line break.
==============================================================================
*04.3* Repeating a change
The "." command is one of the most simple yet powerful commands in Vim. It
The "." command is one of the simplest yet powerful commands in Vim. It
repeats the last change. For instance, suppose you are editing an HTML file
and want to delete all the <B> tags. You position the cursor on the first <
and delete the <B> with the command "df>". You then go to the < of the next

View File

@@ -58,8 +58,8 @@ This initializes Vim for new users (as opposed to traditional Vi users). See
|defaults.vim| for the details.
The vimrc file can contain all the commands that you type after a colon. The
most simple ones are for setting options. For example, if you want Vim to
always start with the 'incsearch' option on, add this line your vimrc file: >
simplest ones are for setting options. For example, if you want Vim to always
start with the 'incsearch' option on, add this line your vimrc file: >
set incsearch

View File

@@ -327,10 +327,10 @@ for next.
==============================================================================
*20.5* Command line window
Typing the text in the command line works different from typing text in Insert
mode. It doesn't allow many commands to change the text. For most commands
that's OK, but sometimes you have to type a complicated command. That's where
the command line window is useful.
Typing the text in the command line works differently from typing text in
Insert mode. It doesn't allow many commands to change the text. For most
commands that's OK, but sometimes you have to type a complicated command.
That's where the command line window is useful.
Open the command line window with this command: >

View File

@@ -434,7 +434,7 @@ redefined without changing the search pattern.
/\f\+
The "\f" items stands for file name characters. Thus this matches a sequence
The "\f" item stands for file name characters. Thus this matches a sequence
of characters that can be a file name.
Which characters can be part of a file name depends on the system you are
using. On MS-Windows, the backslash is included, on Unix it is not. This is

View File

@@ -336,7 +336,7 @@ How to do that is explained here: |indent-expression|.
==============================================================================
*30.4* Other indenting
The most simple form of automatic indenting is with the 'autoindent' option.
The simplest form of automatic indenting is with the 'autoindent' option.
It uses the indent from the previous line. A bit smarter is the 'smartindent'
option. This is useful for languages where no indent file is available.
'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'.

View File

@@ -1,4 +1,4 @@
*usr_31.txt* For Vim version 8.2. Last change: 2007 May 08
*usr_31.txt* For Vim version 8.2. Last change: 2020 Jul 28
VIM USER MANUAL - by Bram Moolenaar
@@ -198,9 +198,9 @@ is not possible in most terminals.
You can start the X-Windows version of gvim with an argument to specify the
size and position of the window: >
gvim -geometry {width}x{height}+{x_offset}+{y_offset}
gvim -geometry {width}x{height}+{x-offset}+{y-offset}
{width} and {height} are in characters, {x_offset} and {y_offset} are in
{width} and {height} are in characters, {x-offset} and {y-offset} are in
pixels. Example: >
gvim -geometry 80x25+100+300

View File

@@ -1,4 +1,4 @@
*usr_40.txt* For Vim version 8.2. Last change: 2013 Aug 05
*usr_40.txt* For Vim version 8.2. Last change: 2020 Jul 28
VIM USER MANUAL - by Bram Moolenaar
@@ -453,12 +453,12 @@ matching BufWritePre autocommands and executes them, and then it
performs the ":write".
The general form of the :autocmd command is as follows: >
:autocmd [group] {events} {file_pattern} [nested] {command}
:autocmd [group] {events} {file-pattern} [nested] {command}
The [group] name is optional. It is used in managing and calling the commands
(more on this later). The {events} parameter is a list of events (comma
separated) that trigger the command.
{file_pattern} is a filename, usually with wildcards. For example, using
{file-pattern} is a filename, usually with wildcards. For example, using
"*.txt" makes the autocommand be used for all files whose name end in ".txt".
The optional [nested] flag allows for nesting of autocommands (see below), and
finally, {command} is the command to be executed.
@@ -489,7 +489,7 @@ See |autocmd-events| for a complete list of events.
PATTERNS
The {file_pattern} argument can actually be a comma-separated list of file
The {file-pattern} argument can actually be a comma-separated list of file
patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h".
The usual file wildcards can be used. Here is a summary of the most often
used ones:

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.2. Last change: 2020 Jun 13
*usr_41.txt* For Vim version 8.2. Last change: 2020 Aug 13
VIM USER MANUAL - by Bram Moolenaar
@@ -44,7 +44,7 @@ script file. You can think of other uses yourself.
If you are familiar with Python, you can find a comparison between
Python and Vim script here, with pointers to other documents:
https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
And if you are familiar with Javascript:
And if you are familiar with JavaScript:
https://w0rp.com/blog/post/vim-script-for-the-javascripter/
Let's start with a simple example: >
@@ -2044,9 +2044,9 @@ for this mapping, but the user might already use it for something else. To
allow the user to define which keys a mapping in a plugin uses, the <Leader>
item can be used: >
22 map <unique> <Leader>a <Plug>TypecorrAdd
22 map <unique> <Leader>a <Plug>TypecorrAdd;
The "<Plug>TypecorrAdd" thing will do the work, more about that further on.
The "<Plug>TypecorrAdd;" thing will do the work, more about that further on.
The user can set the "mapleader" variable to the key sequence that he wants
this mapping to start with. Thus if the user has done: >
@@ -2062,15 +2062,15 @@ already happened to exist. |:map-<unique>|
But what if the user wants to define his own key sequence? We can allow that
with this mechanism: >
21 if !hasmapto('<Plug>TypecorrAdd')
22 map <unique> <Leader>a <Plug>TypecorrAdd
21 if !hasmapto('<Plug>TypecorrAdd;')
22 map <unique> <Leader>a <Plug>TypecorrAdd;
23 endif
This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only
This checks if a mapping to "<Plug>TypecorrAdd/" already exists, and only
defines the mapping from "<Leader>a" if it doesn't. The user then has a
chance of putting this in his vimrc file: >
map ,c <Plug>TypecorrAdd
map ,c <Plug>TypecorrAdd;
Then the mapped key sequence will be ",c" instead of "_a" or "\a".
@@ -2100,15 +2100,15 @@ function (without the "s:"), which is again another function.
<SID> can be used with mappings. It generates a script ID, which identifies
the current script. In our typing correction plugin we use it like this: >
24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add
24 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add
..
28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR>
Thus when a user types "\a", this sequence is invoked: >
\a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add()
\a -> <Plug>TypecorrAdd; -> <SID>Add -> :call <SID>Add()
If another script would also map <SID>Add, it would get another script ID and
If another script also maps <SID>Add, it will get another script ID and
thus define another mapping.
Note that instead of s:Add() we use <SID>Add() here. That is because the
@@ -2149,9 +2149,9 @@ difference between using <SID> and <Plug>:
To make it very unlikely that other plugins use the same sequence of
characters, use this structure: <Plug> scriptname mapname
In our example the scriptname is "Typecorr" and the mapname is "Add".
This results in "<Plug>TypecorrAdd". Only the first character of
scriptname and mapname is uppercase, so that we can see where mapname
starts.
We add a semicolon as the terminator. This results in
"<Plug>TypecorrAdd;". Only the first character of scriptname and
mapname is uppercase, so that we can see where mapname starts.
<SID> is the script ID, a unique identifier for a script.
Internally Vim translates <SID> to "<SNR>123_", where "123" can be any
@@ -2226,10 +2226,10 @@ Here is the resulting complete example: >
18 \ synchronization
19 let s:count = 4
20
21 if !hasmapto('<Plug>TypecorrAdd')
22 map <unique> <Leader>a <Plug>TypecorrAdd
21 if !hasmapto('<Plug>TypecorrAdd;')
22 map <unique> <Leader>a <Plug>TypecorrAdd;
23 endif
24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add
24 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add
25
26 noremenu <script> Plugin.Add\ Correction <SID>Add
27
@@ -2279,7 +2279,7 @@ Here is a simple example for a plugin help file, called "typecorr.txt": >
6 There are currently only a few corrections. Add your own if you like.
7
8 Mappings:
9 <Leader>a or <Plug>TypecorrAdd
9 <Leader>a or <Plug>TypecorrAdd;
10 Add a correction for the word under the cursor.
11
12 Commands:
@@ -2417,13 +2417,13 @@ To make sure mappings will only work in the current buffer use the >
command. This needs to be combined with the two-step mapping explained above.
An example of how to define functionality in a filetype plugin: >
if !hasmapto('<Plug>JavaImport')
map <buffer> <unique> <LocalLeader>i <Plug>JavaImport
if !hasmapto('<Plug>JavaImport;')
map <buffer> <unique> <LocalLeader>i <Plug>JavaImport;
endif
noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc>
noremap <buffer> <unique> <Plug>JavaImport; oimport ""<Left><Esc>
|hasmapto()| is used to check if the user has already defined a map to
<Plug>JavaImport. If not, then the filetype plugin defines the default
<Plug>JavaImport;. If not, then the filetype plugin defines the default
mapping. This starts with |<LocalLeader>|, which allows the user to select
the key(s) he wants filetype plugin mappings to start with. The default is a
backslash.
@@ -2440,12 +2440,12 @@ plugin for the mail filetype: >
" Add mappings, unless the user didn't want this.
if !exists("no_plugin_maps") && !exists("no_mail_maps")
" Quote text by inserting "> "
if !hasmapto('<Plug>MailQuote')
vmap <buffer> <LocalLeader>q <Plug>MailQuote
nmap <buffer> <LocalLeader>q <Plug>MailQuote
if !hasmapto('<Plug>MailQuote;')
vmap <buffer> <LocalLeader>q <Plug>MailQuote;
nmap <buffer> <LocalLeader>q <Plug>MailQuote;
endif
vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>
nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>
vnoremap <buffer> <Plug>MailQuote; :s/^/> /<CR>
nnoremap <buffer> <Plug>MailQuote; :.,$s/^/> /<CR>
endif
Two global variables are used:

View File

@@ -210,8 +210,8 @@ argument: >
:amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR>
Don't use "<silent>" too often. It is not needed for short commands. If you
make a menu for someone else, being able the see the executed command will
give him a hint about what he could have typed, instead of using the mouse.
make a menu for someone else, being able to see the executed command will give
him a hint about what he could have typed, instead of using the mouse.
LISTING MENUS

View File

@@ -34,7 +34,7 @@ That makes very clear what is defined where.
Let's start with an example, a script that exports one function and has one
private function: >
vim9script " This indicates a Vim9 script file,
vim9script " This indicates a Vim9 script file.
export def GetMessage(): string
let result = ''

View File

@@ -226,7 +226,7 @@ We will use "82" here, which is version 8.2.
This is all you need for the second method. Just launch the executable, and
follow the prompts.
For the first method you must chose one of the binary archives. These are
For the first method you must choose one of the binary archives. These are
available:
gvim82.zip The normal MS-Windows GUI version.

View File

@@ -333,7 +333,7 @@ Make Vim work as you like it.
|44.11| Installing a syntax file
|44.12| Portable syntax file layout
|usr_45.txt| Select your language
|usr_45.txt| Select your language (locale)
|45.1| Language for Messages
|45.2| Language for Menus
|45.3| Using another encoding

View File

@@ -449,7 +449,7 @@ The help window is opened at the top, like ":topleft" was used, if the current
window is fewer than 80 characters wide.
A few options can be used to set the preferences for vertically split windows.
They work similar to their existing horizontal equivalents:
They work similarly to their existing horizontal equivalents:
horizontal vertical ~
'splitbelow' 'splitright'
'winheight' 'winwidth'
@@ -2690,9 +2690,9 @@ Multi-byte:
wrong error number. (Muraoka Taro)
- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce
the right character.
- When using Visual block selection and only the left halve of a double-wide
- When using Visual block selection and only the left half of a double-wide
character is selected, the highlighting continued to the end of the line.
- Visual-block delete didn't work properly when deleting the right halve of a
- Visual-block delete didn't work properly when deleting the right half of a
double-wide character.
- Overstrike mode for the cmdline replaced only the first byte of a multibyte
character.
@@ -2795,7 +2795,7 @@ GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of
exit() when the child couldn't execute the shell.
Multi-byte:
- GUI with double-byte encoding: a mouse click in left halve of double-wide
- GUI with double-byte encoding: a mouse click in left half of double-wide
character put the cursor in previous char.
- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey"
included the character after the word.
@@ -3165,7 +3165,7 @@ the terminal it was started in.
When using ESC in Insert mode, an autoindent that wraps to the next line
caused the cursor to move to the end of the line temporarily. When the
character before the cursor was a double-wide multi-byte character the cursor
would be on the right halve, which causes problems with some terminals.
would be on the right half, which causes problems with some terminals.
Didn't handle multi-byte characters correctly when expanding a file name.
(Yasuhiro Matsumoto)
@@ -4356,7 +4356,7 @@ Files: src/normal.c
Patch 6.0.104
Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide
character that overwrites the left halve of an old double-wide
character that overwrites the left half of an old double-wide
character causes a redraw problem and the cursor stops blinking.
Solution: Clear the right half of the old character. (Yasuhiro Matsumoto)
Files: src/edit.c, src/screen.c
@@ -5894,7 +5894,7 @@ Files: src/move.c
Patch 6.1b.023
Problem: On MS-Windows system() may cause checking timestamps, because Vim
loses and gains input focus, while this doesn't happen on Unix.
looses and gains input focus, while this doesn't happen on Unix.
Solution: Don't check timestamps while system() is busy.
Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c
@@ -7069,7 +7069,7 @@ Solution: Don't free the item on the stack. Use NULL instead of "none" for
Files: src/gui_x11.c
Patch 6.1.096
Problem: When erasing the right halve of a double-byte character, it may
Problem: When erasing the right half of a double-byte character, it may
cause further characters to be erased. (Yasuhiro Matsumoto)
Solution: Make sure only one character is erased.
Files: src/screen.c
@@ -7882,7 +7882,7 @@ Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h,
Patch 6.1.221
Problem: Changing case may not work properly, depending on the current
locale.
Solution: Add the 'casemap' option to let the user chose how changing case
Solution: Add the 'casemap' option to let the user choose how changing case
is to be done.
Also fix lowering case when an UTF-8 character doesn't keep the
same byte length.
@@ -8982,7 +8982,7 @@ Files: src/buffer.c
Patch 6.1.386
Problem: Get duplicate tags when running ":helptags".
Solution: Do the other halve of moving a section to another help file.
Solution: Do the other half of moving a section to another help file.
Files: runtime/tagsrch.txt
Patch 6.1.387 (depends on 6.1.373)

View File

@@ -2762,7 +2762,7 @@ number following the file name.
Added 'guitabtooltip'. Implemented for Win32 (Yegappan Lakshmanan).
Added "throw" to 'debug' option: throw an exception for error messages even
whey they would otherwise be ignored.
when they would otherwise be ignored.
When 'keymap' is set and a line contains an invalid entry could get a "No
mapping found" warning instead of a proper error message.
@@ -3859,7 +3859,7 @@ Solution: Set ins_need_undo after using 'formatexpr'.
Files: src/edit.c
Patch 7.0.127
Problem: Crash when swap files has invalid timestamp.
Problem: Crash when swap file has invalid timestamp.
Solution: Check return value of ctime() for being NULL.
Files: src/memline.c
@@ -6757,9 +6757,9 @@ Solution: Use separate buffer for posix path. (Ben Schmidt)
Files: src/os_unix.c
Patch 7.1.329
Problem: When the popup menu is removed a column of cells, the right halve
Problem: When the popup menu is removed a column of cells, the right half
of double-wide characters, may not be redrawn.
Solution: Check if the right halve of a character needs to be redrawn.
Solution: Check if the right half of a character needs to be redrawn.
(Yukihiro Nakadaira)
Files: src/screen.c

File diff suppressed because it is too large Load Diff

View File

@@ -147,7 +147,7 @@ Se ":help search\-pattern" for tilg
{kommando} fortolkes som en Ex-kommando.
Hvis {kommando} indeholder mellemrum, s<> skal den omsluttes af
dobbelte citationstegn (det afh<66>nger af den skal der bruges).
Eksempel: Vim "+set si" main.c
Eksempel: vim "+set si" main.c
.br
Bem<EFBFBD>rk: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer.
.TP

View File

@@ -147,7 +147,7 @@ Se ":help search\-pattern" for tilgængelige søgemønstre.
{kommando} fortolkes som en Ex-kommando.
Hvis {kommando} indeholder mellemrum, så skal den omsluttes af
dobbelte citationstegn (det afhænger af den skal der bruges).
Eksempel: Vim "+set si" main.c
Eksempel: vim "+set si" main.c
.br
Bemærk: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer.
.TP

View File

@@ -156,7 +156,7 @@ Ex
{commande} est interpr<70>t<EFBFBD>e comme une commande Ex.
Si la {commande} contient des espaces, elle doit <20>tre entour<75>e
de doubles-apostrophes (cela d<>pend du shell utilis<69>).
Exemple : Vim "+set si" main.c
Exemple : vim "+set si" main.c
.br
Note : vous pouvez utiliser jusqu'<27> 10 commandes "+" ou "\-c".
.TP

View File

@@ -156,7 +156,7 @@ Exécute {commande} après la lecture du premier fichier.
{commande} est interprétée comme une commande Ex.
Si la {commande} contient des espaces, elle doit être entourée
de doubles-apostrophes (cela dépend du shell utilisé).
Exemple : Vim "+set si" main.c
Exemple : vim "+set si" main.c
.br
Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c".
.TP

View File

@@ -150,7 +150,7 @@ primo file
{comando} <20> interpretato come un comando Ex.
Se il {comando} contiene spazi deve essere incluso fra doppi apici
(o altro delimitatore, a seconda della shell che si sta usando).
Esempio: Vim "+set si" main.c
Esempio: vim "+set si" main.c
.br
Note: Si possono avere fino a 10 comandi "+" o "\-c".
.TP

View File

@@ -150,7 +150,7 @@ primo file è stato letto.
{comando} è interpretato come un comando Ex.
Se il {comando} contiene spazi deve essere incluso fra doppi apici
(o altro delimitatore, a seconda della shell che si sta usando).
Esempio: Vim "+set si" main.c
Esempio: vim "+set si" main.c
.br
Note: Si possono avere fino a 10 comandi "+" o "\-c".
.TP

View File

@@ -150,7 +150,7 @@ wzorce wyszukiwania.
{polecenie} jest interpretowane jako polecenie Ex.
Je<EFBFBD>li {poleceni} zawiera bia<69>e znaki musi by<62> umieszczone w podw<64>jnych
cudzys<EFBFBD>owach (zale<6C>y to od u<>ywanej pow<6F>oki).
Przyk<EFBFBD>ad: Vim "+set si" main.c
Przyk<EFBFBD>ad: vim "+set si" main.c
.br
Uwaga: Mo<4D>na u<>y<EFBFBD> do 10 polece<63> "+" lub "\-c".
.TP

View File

@@ -150,7 +150,7 @@ wzorce wyszukiwania.
{polecenie} jest interpretowane jako polecenie Ex.
Jeśli {poleceni} zawiera białe znaki musi być umieszczone w podwójnych
cudzysłowach (zależy to od używanej powłoki).
Przykład: Vim "+set si" main.c
Przykład: vim "+set si" main.c
.br
Uwaga: Można użyć do 10 poleceń "+" lub "\-c".
.TP

View File

@@ -145,7 +145,7 @@ Kullan
{komut} bir Ex komutu olarak i<>letilir.
E<EFBFBD>er {komut} bo<62>luk i<>eriyorsa <20>ift t<>rnak i<>erisine al<61>nmal<61>d<EFBFBD>r (bu
kullan<EFBFBD>lan kabu<62>a ba<62>l<EFBFBD>d<EFBFBD>r).
<EFBFBD>rnek: Vim "+set si" main.c
<EFBFBD>rnek: vim "+set si" main.c
.br
Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz.
.TP

View File

@@ -145,7 +145,7 @@ Kullanılabilir arama dizgileri için ":help search\-pattern" yazın.
{komut} bir Ex komutu olarak işletilir.
Eğer {komut} boşluk içeriyorsa çift tırnak içerisine alınmalıdır (bu
kullanılan kabuğa bağlıdır).
Örnek: Vim "+set si" main.c
Örnek: vim "+set si" main.c
.br
Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz.
.TP

View File

@@ -146,7 +146,7 @@ See ":help search\-pattern" for the available search patterns.
{command} is interpreted as an Ex command.
If the {command} contains spaces it must be enclosed in double quotes (this
depends on the shell that is used).
Example: Vim "+set si" main.c
Example: vim "+set si" main.c
.br
Note: You can use up to 10 "+" or "\-c" commands.
.TP

View File

@@ -110,7 +110,7 @@ OPTIONS
read. {command} is interpreted as an Ex command. If the
{command} contains spaces it must be enclosed in double
quotes (this depends on the shell that is used). Example:
Vim "+set si" main.c
vim "+set si" main.c
Note: You can use up to 10 "+" or "-c" commands.
-S {file} {file} will be sourced after the first file has been read.

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 8.2. Last change: 2020 Jul 10
*vim9.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -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|
@@ -64,19 +64,24 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
Comments starting with # ~
In Vim script comments start with double quote. That can also be the start of
a string, thus in many places it cannot be used. In Vim9 script a comment
normally starts with #. In Vi this is a command to list text with numbers,
but you can also use `:number` for that. >
In legacy Vim script comments start with double quote. In Vim9 script
comments start with #. >
# declarations
let count = 0 # number of occurrences
To improve readability there must be a space between the command and the #
that starts a comment. Note that #{ is the start of a dictionary, therefore
it cannot start a comment.
The reason is that a double quote can also be the start of a string. In many
places, especially halfway through an expression with a line break, it's hard
to tell what the meaning is, since both a string and a comment can be followed
by arbitrary text. To avoid confusion only # comments are recognized. This
is the same as in shell scripts and Python programs.
Since Vim9 script allows for line breaks in many places, the double quoted
comment also cannot be used at the start of a line after an expression. To
avoid confusion it is best to only use # comments.
In Vi # is a command to list text with numbers. In Vim9 script you can use
`:number` for that. >
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.
Vim9 functions ~
@@ -89,7 +94,7 @@ The syntax is strict, to enforce code that is easy to read and understand.
Compilation is done when the function is first called, or when the
`:defcompile` command is encountered in the script where the function was
defined.
defined. `:disassemble` also compiles the function.
`: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
@@ -99,11 +104,11 @@ 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
functions.
Arguments are accessed by name, without "a:". There is no "a:" dictionary or
"a:000" list.
Arguments are accessed by name, without "a:", just like any other language.
There is no "a:" dictionary or "a:000" list.
Variable arguments are defined as the last argument, with a name and have a
list type, similar to Typescript. For example, a list of numbers: >
list type, similar to TypeScript. For example, a list of numbers: >
def MyFunc(...itemlist: list<number>)
for item in itemlist
...
@@ -113,9 +118,14 @@ Functions and variables are script-local by default ~
*vim9-scopes*
When using `:function` or `:def` to specify a new function at the script level
in a Vim9 script, the function is local to the script, as if "s:" was
prefixed. Using the "s:" prefix is optional.
To define or use a global function or variable the "g:" prefix must be used.
prefixed. Using the "s:" prefix is optional. To define or use a global
function or variable the "g:" prefix should be used. For functions in an
autoload script the "name#" prefix is sufficient. >
def ThisFunction() # script-local
def s:ThisFunction() # script-local
def g:ThatFunction() # global
def ThatFunction() # global if no local ThatFunction()
def scriptname#function() # autoload
When using `:function` or `:def` to specify a new function inside a function,
the function is local to the function. It is not possible to define a
@@ -123,18 +133,16 @@ script-local function inside a function. It is possible to define a global
function, using the "g:" prefix.
When referring to a function and no "s:" or "g:" prefix is used, Vim will
search for the function in this order:
- Local to the current scope and outer scopes up to the function scope.
- Local to the current script file.
- Imported functions, see `:import`.
prefer using a local function (in the function scope, script scope or
imported) before looking for a global function.
In all cases the function must be defined before used. That is when it is
first called or when `:defcompile` causes the call to be compiled.
The result is that functions and variables without a namespace can always be
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
variables could be defined anywhere (good luck finding where!).
variables could be defined anywhere (good luck finding out where!).
Global functions can be still be defined and deleted at nearly any time. In
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.
@@ -180,22 +188,31 @@ To intentionally avoid a variable being available later, a block can be used:
echo temp " Error!
An existing variable cannot be assigned to with `:let`, since that implies a
declaration. An exception is global variables: these can be both used with
and without `:let`, because there is no rule about where they are declared.
declaration. Global, window, tab, buffer and Vim variables can only be used
without `:let`, because they are not really declared, they can also be deleted
with `:unlet`.
Variables cannot shadow previously defined variables.
Variables and functions cannot shadow previously defined or imported variables
and functions.
Variables may shadow Ex commands, rename the variable if needed.
Global variables and user defined functions must be prefixed with "g:", also
at the script level. >
vim9script
let script_local = 'text'
let g:global = 'value'
g:global = 'value'
let Funcref = g:ThatFunction
Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
used to repeat a `:substitute` command.
*E1092*
Declaring more than one variable at a time, using the unpack notation, is
currently not supported: >
let [v1, v2] = GetValues() # Error!
That is because the type needs to be inferred from the list item type, which
isn't that easy.
Omitting :call and :eval ~
@@ -204,29 +221,29 @@ Functions can be called without `:call`: >
Using `:call` is still possible, but this is discouraged.
A method call without `eval` is possible, so long as the start is an
identifier or can't be an Ex command. It does NOT work for string constants: >
myList->add(123) " works
g:myList->add(123) " works
[1, 2, 3]->Process() " works
#{a: 1, b: 2}->Process() " works
{'a': 1, 'b': 2}->Process() " works
"foobar"->Process() " does NOT work
("foobar")->Process() " works
'foobar'->Process() " does NOT work
('foobar')->Process() " works
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()
"foobar"->Process()
("foobar")->Process()
'foobar'->Process()
('foobar')->Process()
In case there is ambiguity between a function name and an Ex command, use ":"
to make clear you want to use the Ex command. For example, there is both the
`:substitute` command and the `substitute()` function. When the line starts
with `substitute(` this will use the function, prepend a colon to use the
command instead: >
In the rare case there is ambiguity between a function name and an Ex command,
prepend ":" to make clear you want to use the Ex command. For example, there
is both the `:substitute` command and the `substitute()` function. When the
line starts with `substitute(` this will use the function. Prepend a colon to
use the command instead: >
:substitute(pattern (replacement (
Note that while variables need to be defined before they can be used,
functions can be called before being defined. This is required to be able
have cyclic dependencies between functions. It is slightly less efficient,
functions can be called before being defined. This is required to allow
for cyclic dependencies between functions. It is slightly less efficient,
since the function has to be looked up by name. And a typo in the function
name will only be found when the call is executed.
name will only be found when the function is called.
Omitting function() ~
@@ -244,8 +261,8 @@ number of arguments and any return type. The function can be defined later.
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. For
example, when a list spans multiple lines: >
those cases there is no need to prefix the line with a backslash
|line-continuation|. For example, when a list spans multiple lines: >
let mylist = [
'one',
'two',
@@ -273,10 +290,14 @@ possible just before or after the operator. For example: >
? PosFunc(arg)
: NegFunc(arg)
For a method call using "->" and a member using a dot, a line break is allowed
before it: >
let result = GetBuilder()
->BuilderSetWidth(333)
->BuilderSetHeight(777)
->BuilderBuild()
let result = MyDict
.member
< *E1050*
To make it possible for the operator at the start of the line to be
@@ -331,9 +352,11 @@ No curly braces expansion ~
|curly-braces-names| cannot be used.
No :append, :change or :insert ~
No :xit, :t, :append, :change or :insert ~
These commands are too quickly confused with local variable names.
These commands are too easily confused with local variable names.
Instead of `:x` or `:xit` you can use `:exit`.
Instead of `:t` you can use `:copy`.
Comparators ~
@@ -371,7 +394,7 @@ White space is not allowed:
Conditions and expressions ~
Conditions and expression are mostly working like they do in JavaScript. A
Conditions and expressions are mostly working like they do in JavaScript. A
difference is made where JavaScript does not work like most people expect.
Specifically, an empty list is falsey.
@@ -400,15 +423,25 @@ The boolean operators "||" and "&&" do not change the value: >
0 || '' == ''
8 && 2 == 2
0 && 2 == 0
2 && 0 == 0
[] && 2 == []
When using `..` for string concatenation the arguments are always converted to
string. >
When using `..` for string concatenation arguments of simple types are always
converted to string. >
'hello ' .. 123 == 'hello 123'
'hello ' .. v:true == 'hello true'
'hello ' .. v:true == 'hello v:true'
Simple types are string, float, special and bool. For other types |string()|
can be used.
In Vim9 script one can use "true" for v:true and "false" for v:false.
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 'á'.
What to watch out for ~
*vim9-gotchas*
@@ -418,13 +451,20 @@ 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
->func() " Vim9: method call in continuation line
:-> " Vim9: shifts the previous line to the right
%s/a/b " legacy Vim: substitute on all lines
x = alongname
% another " Vim9: line continuation without a backslash
:%s/a/b " Vim9: substitute on all lines
'text'->func() " Vim9: method call
:'t " legacy Vim: jump to mark m
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
Functions defined with `:def` compile the whole function. Legacy functions
can bail out, and the following lines are not parsed: >
@@ -460,7 +500,7 @@ For a workaround, split it in two functions: >
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
*:def*
:def[!] {name}([arguments])[: {return-type}
:def[!] {name}([arguments])[: {return-type}]
Define a new function by the name {name}. The body of
the function follows in the next lines, until the
matching `:enddef`.
@@ -479,19 +519,20 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
When the caller omits an argument the {value} is used.
The function will be compiled into instructions when
called, or when `:defcompile` is used. Syntax and
type errors will be produced at that time.
called, or when `:disassemble` or `:defcompile` is
used. Syntax and type errors will be produced at that
time.
NOTE: It is possible to nest `:def` inside another
`:def`, but it is not possible to nest `:def` inside
`:function`, for backwards compatibility.
It is possible to nest `:def` inside another `:def` or
`:function` up to about 50 levels deep.
[!] is used as with `:function`. Note that in Vim9
script script-local functions cannot be deleted or
redefined later in the same script.
*:enddef*
:enddef End of a function defined with `:def`.
:enddef End of a function defined with `:def`. It should be on
a line by its own.
If the script the function is defined in is Vim9 script, then script-local
@@ -552,7 +593,7 @@ Not supported yet:
tuple<a: {type}, b: {type}, ...>
These types can be used in declarations, but no value will have this type:
{type}|{type}
{type}|{type} {not implemented yet}
void
any
@@ -587,6 +628,8 @@ called in the same way the declaration is the same.
Custom types can be defined with `:type`: >
:type MyList list<string>
Custom types must start with a capital letter, to avoid name clashes with
builtin types added later, similarly to user functions.
{not implemented yet}
And classes and interfaces can be used as types: >
@@ -606,6 +649,35 @@ And classes and interfaces can be used as types: >
{not implemented yet}
Variable types and type casting *variable-types*
Variables declared in Vim9 script or in a `:def` function have a type, either
specified explicitly or inferred from the initialization.
Global, buffer, window and tab page variables do not have a specific type, the
value can be changed at any time, possibly changing the type. Therefore, in
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: >
let l: list<number> = [1, g:two]
This will give an error, because "g:two" has type "any". To avoid this, use a
type cast: >
let 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 syntax of a type cast is: "<" {type} ">". There cannot be white space
after the "<" or before the ">" (to avoid them being confused with
smaller-than and bigger-than operators).
The semantics is that, if needed, a runtime type check is performed. The
value is not actually changed. If you need to change the type, e.g. to change
it to a string, use the |string()| function. Or use |str2nr()| to convert a
string to a number.
Type inference *type-inference*
In general: Whenever the type is clear it can be omitted. For example, when
@@ -613,6 +685,12 @@ declaring a variable and giving it a value: >
let var = 0 " infers number type
let var = 'hello' " infers string type
The type of a list and dictionary comes from the common type of the values.
If the values all have the same type, that type is used for the list or
dictionary. If there is a mix of types, the "any" type is used. >
[1, 2, 3] list<number>
['a', 'b', 'c'] list<string>
[1, 'x', 3] list<any>
==============================================================================
@@ -654,19 +732,15 @@ The original value of 'cpoptions' is restored at the end of the script.
Export ~
*:export* *:exp*
Exporting one item can be written as: >
Exporting an item can be written as: >
export const EXPORTED_CONST = 1234
export let someValue = ...
export def MyFunc() ...
export class MyClass ...
As this suggests, only constants, variables, `:def` functions and classes can
be exported.
be exported. {classes are not implemented yet}
Alternatively, an export statement can be used to export several already
defined (otherwise script-local) items: >
export {EXPORTED_CONST, someValue, MyFunc, MyClass}
<
*E1042*
`:export` can only be used in Vim9 script, at the script level.
@@ -721,7 +795,7 @@ actually needed. A recommended mechanism:
< This goes in .../plugin/anyname.vim. "anyname.vim" can be freely chosen.
2. In the autocommand script do the actual work. You can import items from
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"
@@ -740,6 +814,9 @@ actually needed. A recommended mechanism:
...
< This goes in .../import/someother.vim.
When compiling a `:def` function and a function in an autoload script is
encountered, the script is not loaded until the `:def` function is called.
Import in legacy Vim script ~
@@ -753,7 +830,7 @@ namespace will be used for the imported item, even when "s:" is not specified.
The :def command ~
Plugin writers have asked for a much faster Vim script. Investigation have
Plugin writers have asked for a much faster Vim script. Investigations have
shown that keeping the existing semantics of function calls make this close to
impossible, because of the overhead involved with calling a function, setting
up the local function scope and executing lines. There are many details that
@@ -783,7 +860,7 @@ 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.
The syntax for types is similar to Java, since it is easy to understand and
widely used. The type names are what was used in Vim before, with some
widely used. The type names are what were used in Vim before, with some
additions such as "void" and "bool".
@@ -834,7 +911,7 @@ are doing. Some details are unexpected and can be fixed. For example how the
...
return result || 0 " returns 1
Vim9 script works like JavaScript/Typescript, keep the value: >
Vim9 script works like JavaScript/TypeScript, keep the value: >
let result = 44
...
return result || 0 " returns 44
@@ -851,7 +928,7 @@ A problem of legacy Vim script is that by default all functions and variables
are global. It is possible to make them script-local, but then they are not
available in other scripts.
In Vim9 script a mechanism very similar to the Javascript import and export
In Vim9 script a mechanism very similar to the JavaScript import and export
mechanism is supported. It is a variant to the existing `:source` command
that works like one would expect:
- Instead of making everything global by default, everything is script-local,

View File

@@ -125,7 +125,7 @@ gN Like |gn| but searches backward, like with `N`.
*<LeftMouse>*
<LeftMouse> Set the current cursor position. If Visual mode is
active it is stopped. Only when 'mouse' option is
active it is stopped. Only when 'mouse' option
contains 'n' or 'a'. If the position is within 'so'
lines from the last line on the screen the text is
scrolled up. If the position is within 'so' lines from
@@ -136,7 +136,7 @@ gN Like |gn| but searches backward, like with `N`.
<RightMouse> Start Visual mode if it is not active. The text from
the cursor position to the position of the click is
highlighted. If Visual mode was already active move
the start or end of the highlighted text, which ever
the start or end of the highlighted text, whichever
is closest, to the position of the click. Only when
'mouse' option contains 'n' or 'a'.
@@ -236,7 +236,7 @@ The objects that can be used are:
is inner sentence |v_is|
ap a paragraph (with white space) |v_ap|
ip inner paragraph |v_ip|
ab a () block (with parenthesis) |v_ab|
ab a () block (with parentheses) |v_ab|
ib inner () block |v_ib|
aB a {} block (with braces) |v_aB|
iB inner {} block |v_iB|
@@ -347,7 +347,7 @@ Visual-block Shift *v_b_>*
The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The
LHS of the block determines the point from which to apply a right shift, and
padding includes TABs optimally according to 'ts' and 'et'. The LHS of the
block determines the point upto which to shift left.
block determines the point up to which to shift left.
See |v_b_>_example|.
See |v_b_<_example|.

View File

@@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.2. Last change: 2020 May 10
*windows.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1112,7 +1112,9 @@ list of buffers. |unlisted-buffer|
<
*:bad* *:badd*
:bad[d] [+lnum] {fname}
Add file name {fname} to the buffer list, without loading it.
Add file name {fname} to the buffer list, without loading it,
if it wasn't listed yet. If the buffer was previously
deleted, not wiped, it will be made listed again.
If "lnum" is specified, the cursor will be positioned at that
line when the buffer is first entered. Note that other
commands after the + will be ignored.

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Jun 25
" Last Change: 2020 Aug 04
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -88,6 +88,9 @@ endif
" AHDL
au BufNewFile,BufRead *.tdf setf ahdl
" AIDL
au BufNewFile,BufRead *.aidl setf aidl
" AMPL
au BufNewFile,BufRead *.run setf ampl
@@ -181,7 +184,7 @@ au BufNewFile,BufRead *.at setf m4
au BufNewFile,BufRead *.ave setf ave
" Awk
au BufNewFile,BufRead *.awk setf awk
au BufNewFile,BufRead *.awk,*.gawk setf awk
" B
au BufNewFile,BufRead *.mch,*.ref,*.imp setf b
@@ -1090,6 +1093,9 @@ au BufNewFile,BufRead .netrc setf netrc
" Ninja file
au BufNewFile,BufRead *.ninja setf ninja
" NPM RC file
au BufNewFile,BufRead npmrc,.npmrc setf dosini
" Novell netware batch files
au BufNewFile,BufRead *.ncf setf ncf
@@ -1196,6 +1202,9 @@ au BufNewFile,BufRead *.pod6 setf pod6
" Also .ctp for Cake template file
au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php
" PHP config
au BufNewFile,BufRead php.ini,php.ini-* setf dosini
" Pike and Cmod
au BufNewFile,BufRead *.pike,*.pmod setf pike
au BufNewFile,BufRead *.cmod setf cmod

View File

@@ -2,7 +2,7 @@
" Language: cobol
" Maintainer: Ankit Jain <ajatkj@yahoo.co.in>
" (formerly Tim Pope <vimNOSPAM@tpope.info>)
" Last Update: By Ankit Jain (changed maintainer) on 22.03.2019
" Last Update: By Ankit Jain (add gtk support) on 15.08.2020
" Insert mode mappings: <C-T> <C-D> <Tab>
" Normal mode mappings: < > << >> [[ ]] [] ][
@@ -37,7 +37,8 @@ if exists("loaded_matchit")
\ '-\@<!\<\%(delete\|rewrite\|start\|write\|read\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>:\<end-\%(delete\|rewrite\|start\|write\|read\)\>' .s:ordot
endif
if has("gui_win32") && !exists("b:browsefilter")
" add gtk support
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n".
\ "All Files (*.*)\t*.*\n"
endif

View File

@@ -1,12 +1,17 @@
" Vim filetype plugin file
" Language: C++
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2001 Jan 15
" Last Change: 2020 Jul 26
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Behaves just like C
" Behaves mostly just like C
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim
" C++ uses templates with <things>
" Disabled, because it gives an error for typing an unmatched ">".
" set matchpairs+=<:>
" let b:undo_ftplugin ..= ' | setl matchpairs<'

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: CSS
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
" Language: CSS
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
if exists("b:did_ftplugin")
finish

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Diff
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2005 Jul 27
" Last Change: 2020 Jul 18
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -13,3 +13,6 @@ let b:undo_ftplugin = "setl modeline<"
" Don't use modelines in a diff, they apply to the diffed file
setlocal nomodeline
" If there are comments they start with #
let &commentstring = "# %s"

View File

@@ -0,0 +1,39 @@
" Vim filetype plugin file
" Language: TypeScript
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Aug 30
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo-=C
" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal formatoptions-=t formatoptions+=croql
" Set 'comments' to format dashed lists in comments.
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
setlocal commentstring=//%s
setlocal suffixesadd+=.ts,.d.ts,.tsx,.js,.jsx,.cjs,.mjs
" Change the :browse e filter to primarily show TypeScript-related files.
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter="TypeScript Files (*.ts)\t*.ts\n" .
\ "TypeScript Declaration Files (*.d.ts)\t*.d.ts\n" .
\ "TSX Files (*.tsx)\t*.tsx\n" .
\ "JavaScript Files (*.js)\t*.js\n" .
\ "JavaScript Modules (*.es, *.cjs, *.mjs)\t*.es;*.cjs;*.mjs\n" .
\ "JSON Files (*.json)\t*.json\n" .
\ "All Files (*.*)\t*.*\n"
endif
let b:undo_ftplugin = "setl fo< com< cms< sua< | unlet! b:browsefilter"
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,33 @@
" Vim filetype plugin file
" Language: TypeScript React
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Aug 09
let s:match_words = ""
let s:undo_ftplugin = ""
runtime! ftplugin/typescript.vim
let s:cpo_save = &cpo
set cpo-=C
if exists("b:match_words")
let s:match_words = b:match_words
endif
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin
endif
" Matchit configuration
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words = s:match_words .
\ '<:>,' .
\ '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,' .
\ '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
endif
let b:undo_ftplugin = "unlet! b:match_words b:match_ignorecase | " . s:undo_ftplugin
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Jul 06
" Last Change: 2020 Aug 14
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -49,7 +49,8 @@ setlocal isk+=#
setlocal keywordprg=:help
" Set 'comments' to format dashed lists in comments
setlocal com=sO:\"\ -,mO:\"\ \ ,sO:#\ -,mO:#\ \ ,eO:##,:\",:#
" Avoid that #{} starts a comment.
setlocal com=sO:\"\ -,mO:\"\ \ ,sO:#\ -,mO:#\ \ ,eO:##,:\",b:#
" Format comments to be up to 78 characters long
if &tw == 0
@@ -83,7 +84,7 @@ endif
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words =
\ '\<\%(fu\%[nction]\|def\)\>:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
\ '\<\%(fu\%[nction]\|def\)\>)\@!:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
\ '{:},' .

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