Compare commits

...

298 Commits

Author SHA1 Message Date
Yee Cheng Chin ab85313e67 MacVim Snapshot 166
Updated to Vim 8.2.1719.

Features
====================

Touch Bar improvements
--------------------

Touch Bar now supports submenus, and allows mixed icon/text displays
using `tmenu`. When in edit modes (e.g. insert), it will also display an
emoji picker as well. See `:help touchbar` for documentation. #1084

Fixes
====================

- Window menu no longer shows duplicate "Enter Full Screen" or "Tile
  Window to Left of Screen" entries whenever the user switches among
  different MacVim windows. #566 #992
- Fix issue where going to full screen mode when titlebar appearance is
  set to "hidden" would result in lost focus of the window. #1078
- The password dialog box when using `:!sudo` or other commands that
  require password entry (`macvim-askpass`) will no longer focus on
  Finder, and will keep the focus on MacVim. #1091
- Fix minor wrong tooltip in the "Appearance" preference pane. #1087
- "General" preference pane will now be correctly sized when Sparkle
  updater is disabled (e.g. Homebrew builds). #1089
- Misc issues were fixed by Vim upstream, e.g. `vimgrep` causing a
  crash, and odd behaviors with using Shift-O on the first line. #1082
  #1083

Compatibility
====================

Requires macOS 10.9 or above.

Script interfaces have compatibility with these versions:

- Lua 5.3
- Perl 5.18
- Python2 2.7
- Python3 3.8
- Ruby 2.7
2020-09-20 20:40:13 -07:00
Yee Cheng Chin a5a6f59cf3 Fix Touch Bar docs typos 2020-09-20 20:24:21 -07:00
Yee Cheng Chin 62c0c60c6c Merge pull request #1089 from sfsam/resizeprefs
Properly size General pane when DISABLE_SPARKLE=1
2020-09-20 14:28:05 -07:00
Yee Cheng Chin 0547968d7f Move CODEOWNERS to CODEOWNERS_vim
Just do a straight move (similar to README_vim.md) to a different
location instead of commenting out the lines to make it easier to manage
upstream merges in the future (git merge should detect rename
automatically). This also allows MacVim to set up a MacVim-specific
CODEOWNERS file in the future without having to manage merge conflicts.
2020-09-20 14:03:16 -07:00
Yee Cheng Chin f84a0ce278 Merge remote-tracking branch 'vim/master' 2020-09-20 14:02:51 -07:00
Bram Moolenaar 10e4f12bf4 patch 8.2.1719: Vim9: no error if comma is missing in between arguments
Problem:    Vim9: no error if comma is missing in between arguments.
Solution:   Give an error message.
2020-09-20 22:43:52 +02:00
Bram Moolenaar b816dae16d patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Problem:    Vim9: :def function disallows "firstline" and "lastline" argument
            names for no good reason.
Solution:   Don't check the arguments for a :def function. (closes #6986)
2020-09-20 22:04:00 +02:00
Bram Moolenaar 809fcecddc patch 8.2.1717
Problem:    MS-Windows installer doesn't have Russian translations.
Solution:   Add Russian translations. (closes #6985)
2020-09-20 21:43:03 +02:00
Bram Moolenaar b5cfff0b34 patch 8.2.1716: options window has duplicate translations
Problem:    Options window has duplicate translations.
Solution:   Make one entry for "global or local to buffer".  Fix wrong text.
            (closes #6983)
2020-09-20 21:32:03 +02:00
Bram Moolenaar 26cd3063b2 patch 8.2.1715: Motif GUI: commented out code missed {}
Problem:    Motif GUI: commented out code missed {}.
Solution:   Add {} and reenable the code. (similar to #6989)
2020-09-20 21:13:27 +02:00
Bram Moolenaar 8902b31f1b patch 8.2.1714: text properties corrupted with substitute command
Problem:    Text properties corrupted with substitute command. (Filipe
            Brandenburger)
Solution:   Get the changed line again after using u_savesub(). (closes #6984)
2020-09-20 21:04:35 +02:00
Bram Moolenaar 7795bfea6d patch 8.2.1713: Motif GUI: crash when setting menu colors
Problem:    Motif GUI: crash when setting menu colors. (Andrzej Bylicki)
Solution:   Add {} to make "n" incremented correctly. (closes #6989,
            closes #5948)
2020-09-20 19:57:15 +02:00
Yee Cheng Chin 944005edc4 Merge pull request #1092 from ychin/fix-duplicate-window-menu-items
Fix duplicate menu items in Window menu
2020-09-20 05:35:44 -07:00
Yee Cheng Chin d412800d3c Fix duplicate menu items in Window menu
Previously MacVim would see a lot of duplicate window menu items like
"Enter Full Screen" or "Tile Window to Left of Screen" when the user
toggles between two windows. This is because the `setWindowsMenu:` call
was injecting these items, but AppKit isn't smart enough to de-duplicate
them (unlike the window list at the bottom). Just fix this by making a
copy of the main menu before passing it in. This way every time we try
to set a main menu (which happens whenever we jump among Vim windows as
each Vim can have different menu items), it will be set with a fresh one
that doesn't have the injected menu items in it.

- This also requires adding a refresh functionality because
  adding/removing items to the original menu no longer get automatically
  reflected to the app since it only knows about the copied version.

Also, set NSFullScreenMenuItemEverywhere to prevent AppKit from
injecting "Enter Full Screen" items. MacVim already has similar menu
items to handle that.

Also, remove old private API call to `setAppleMenu:`. As far as I could
tell this is not useful anymore in recent macOS versions and that line
of code was written in 2008.

Fix #566, Fix #992
2020-09-20 03:59:50 -07:00
Bram Moolenaar 1d59aa1fdf Update runtime files. 2020-09-19 18:50:13 +02:00
Bram Moolenaar a05e524f3a patch 8.2.1712: Vim9: leaking memory when calling a lambda
Problem:    Vim9: leaking memory when calling a lambda.
Solution:   Decrement function reference from ISN_DCALL.
2020-09-19 18:19:19 +02:00
Bram Moolenaar fdeab65db6 patch 8.2.1711: Vim9: leaking memory when using partial
Problem:    Vim9: leaking memory when using partial.
Solution:   Do delete the function even when it was compiled.
2020-09-19 15:16:50 +02:00
Bram Moolenaar 77b20977dc patch 8.2.1710: Vim9: list of list type can be wrong
Problem:    Vim9: list of list type can be wrong.
Solution:   Use VAR_UNKNOWN for empty list.  Recognize VAR_UNKNOWN when
            looking for a common type. (closes #6979)
2020-09-19 14:12:34 +02:00
Yee Cheng Chin 8c117fcc92 Merge pull request #1093 from ychin/fix-askpass-focus
Fix macvim-askpass to send event to MacVim itself instead of Finder
2020-09-18 20:29:40 -07:00
Bram Moolenaar dec07510bb patch 8.2.1709: Vim9: memory leak when using multiple closures
Problem:    Vim9: memory leak when using multiple closures.
Solution:   Free the partial.
2020-09-18 23:11:10 +02:00
Bram Moolenaar b185a40745 patch 8.2.1708: Vim9: error message for function has unpritable characters
Problem:    Vim9: error message for function has unpritable characters.
Solution:   use printable_func_name(). (closes #6965)
2020-09-18 22:42:00 +02:00
Bram Moolenaar 2bbada8116 patch 8.2.1707: small inconsitency in highlight test
Problem:    Small inconsitency in highlight test.
Solution:   Use one argument for :execute. (Antony Scriven, #6975)
2020-09-18 21:55:26 +02:00
Bram Moolenaar 7cbfaa51de patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Problem:    Vim9: crash after running into the "Multiple closures" error.
Solution:   When a function fails still update any closures. (closes #6973)
2020-09-18 21:25:32 +02:00
Bram Moolenaar e8df010498 patch 8.2.1705: "verbose hi Name" reports incorrect info after ":hi clear"
Problem:    "verbose hi Name" reports incorrect info after ":hi clear".
Solution:   Store the script context. (Antony Scriven, closes #6975)
2020-09-18 19:40:45 +02:00
Yee Cheng Chin 82393c1173 Fix macvim-askpass to send event to MacVim itself instead of Finder
This fixes the focus issues with it and also makes the permission dialog
box a little less sketchy (previously it would appear MacVim is trying
to control Finder).

See #1091 for code contribution.

Close #1091.
2020-09-18 02:37:46 -07:00
Bram Moolenaar 77e5dcc36a patch 8.2.1704: Vim9: crash in for loop when autoload script has an error
Problem:    Vim9: crash in for loop when autoload script has an error.
Solution:   Reset suppress_errthrow.  Check for NULL list. (closes #6967)
2020-09-17 21:29:03 +02:00
Bram Moolenaar 213da551de patch 8.2.1703: ":highlight clear" does not restore default link
Problem:    ":highlight clear" does not restore default link.
Solution:   Remember the default link and restore it. (Antony Scriven,
            closes #6970, closes #4405)
2020-09-17 19:59:26 +02:00
Bram Moolenaar da697645d5 patch 8.2.1702: crash when using undo after deleting folded lines
Problem:    Crash when using undo after deleting folded lines.
Solution:   Check for NULL pointer. (closes #6968)
2020-09-17 19:36:04 +02:00
ichizok 650e63ac5e Merge remote-tracking branch 'vim/master' 2020-09-17 12:02:16 +09:00
Bram Moolenaar 08e51f446b patch 8.2.1701: Vim9: sort("i") does not work
Problem:    Vim9: sort("i") does not work.
Solution:   Don't try getting a number for a string argument. (closes #6958)
2020-09-16 23:23:36 +02:00
Bram Moolenaar 9939f57b7f patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Problem:    Vim9: try/catch causes wrong value to be returned.
Solution:   Reset tcd_return. (closes #6964)
2020-09-16 22:29:52 +02:00
Bram Moolenaar 916911f598 patch 8.2.1699: build failure due to missing error message
Problem:    Build failure due to missing error message.
Solution:   Add error message.
2020-09-16 21:41:53 +02:00
Bram Moolenaar a187c43cfe patch 8.2.1698: cannot lock a variable in legacy Vim script like in Vim9
Problem:    Cannot lock a variable in legacy Vim script like in Vim9.
Solution:   Make ":lockvar 0" work.
2020-09-16 21:08:28 +02:00
Bram Moolenaar 7707228aac patch 8.2.1697: inconsistent capitalization of error messages
Problem:    Inconsistent capitalization of error messages.
Solution:   Always start with a capital.
2020-09-16 17:55:40 +02:00
Bram Moolenaar 2c12f89055 patch 8.2.1696: unused (duplicate) macros
Problem:    Unused (duplicate) macros.
Solution:   Remove the macros.
2020-09-16 17:30:27 +02:00
Bram Moolenaar 2f8cbc4b22 patch 8.2.1695: Vim9: crash when using varargs type "any"
Problem:    Vim9: crash when using varargs type "any".
Solution:   Check if uf_va_type is &t_any. (closes #6957)
2020-09-16 17:22:59 +02:00
Bram Moolenaar 573545a55a patch 8.2.1694: compiler warning for loss if data
Problem:    Compiler warning for loss if data.
Solution:   Add typecast.
2020-09-16 15:46:08 +02:00
Bram Moolenaar 05eb5b9cae patch 8.2.1693: "hi def" does not work for cleared highlight
Problem:    "hi def" does not work for cleared highlight.
Solution:   Check the "sg_cleared" flag. (Maxim Kim, closes #6956,
            closes #4405)
2020-09-16 15:43:21 +02:00
Bram Moolenaar fb489af2ec patch 8.2.1692: build fails because TTFLAG_STATIC is missing
Problem:    Build fails because TTFLAG_STATIC is missing.
Solution:   Include missing change.
2020-09-16 15:41:09 +02:00
Bram Moolenaar 5e65423077 patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Problem:    Vim9: list<any> is not accepted where list<number> is expected.
Solution:   Add functions to allocate and free a type_T, use it in
            ISN_CHECKTYPE. (closes #6959)
2020-09-16 15:22:00 +02:00
Bram Moolenaar 8b51b7f0f1 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Problem:    Text properties not adjusted for "I" in Visual block mode.
Solution:   Call inserted_bytes().
2020-09-15 21:34:18 +02:00
Bram Moolenaar ad5e5631c5 patch 8.2.1689: 'colorcolumn' doesn't show in indent
Problem:    'colorcolumn' doesn't show in indent.
Solution:   Also draw the column when draw_state is WL_BRI or WL_SBR.
            (Alexey Demin, closes #6948, closes #6619)
2020-09-15 20:52:26 +02:00
Bram Moolenaar c8f12c9856 patch 8.2.1688: increment/decrement removes text property
Problem:    Increment/decrement removes text property.
Solution:   Insert the new number before deleting the old one. (closes #6962)
2020-09-15 20:34:10 +02:00
Sanjay Madan 5ab1544203 Properly size General pane when DISABLE_SPARKLE=1 2020-09-14 23:05:08 -07:00
Bram Moolenaar 9b123d8590 patch 8.2.1687: Vim9: out of bounds error
Problem:    Vim9: out of bounds error.
Solution:   Check that cmdidx is not negative.
2020-09-14 22:39:11 +02:00
Bram Moolenaar 71abe48289 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Problem:    Vim9: "const!" not sufficiently tested.
Solution:   Add a few more test cases.  Fix type checking.
2020-09-14 22:28:30 +02:00
Bram Moolenaar 0b4c66c67a patch 8.2.1685: Vim9: cannot declare a constant value
Problem:    Vim9: cannot declare a constant value.
Solution:   Introduce ":const!".
2020-09-14 21:39:44 +02:00
Bram Moolenaar efd5d8a967 patch 8.2.1684: "gF" does not use line number after file in Visual mode
Problem:    "gF" does not use line number after file in Visual mode.
Solution:   Look for ":123" after the Visual area. (closes #6952)
2020-09-14 19:11:45 +02:00
Bram Moolenaar 2b22b113c6 patch 8.2.1683: Vim9: assignment test fails
Problem:    Vim9: assignment test fails.
Solution:   Include changes to find Ex command.
2020-09-14 18:35:18 +02:00
Bram Moolenaar dbeecb2b6b patch 8.2.1682: Vim9: const works in an unexpected way
Problem:    Vim9: const works in an unexpected way.
Solution:   ":const" only disallows changing the variable, not the value.
            Make "list[0] = 9" work at the script level.
2020-09-14 18:15:09 +02:00
Bram Moolenaar 08052228a7 patch 8.2.1681: Vim9: unnessary :call commands in tests
Problem:    Vim9: unnessary :call commands in tests.
Solution:   Remove the commands. (issue #6936)
2020-09-14 17:04:31 +02:00
Bram Moolenaar eb26f4331f patch 8.2.1680: Vim9: line number for compare error is wrong
Problem:    Vim9: line number for compare error is wrong.
Solution:   Set SOURCING_LNUM. (closes #6936)
2020-09-14 16:50:05 +02:00
Bram Moolenaar 3bd8de40b4 patch 8.2.1679: Vim9: ":*" is not recognized as a range
Problem:    Vim9: ":*" is not recognized as a range.
Solution:   Move recognizing "*" into skip_range(). (closes #6838)
2020-09-14 16:37:34 +02:00
Yee Cheng Chin 0aa5bef561 Merge pull request #1088 from ychin/fix-titlebar-hidden-fullscreen-focus
Fix switching to fullscreen loses keyboard focus if titlebar is hidden
2020-09-14 02:51:05 -07:00
Yee Cheng Chin 560fae4e09 Fix switching to fullscreen loses keyboard focus if titlebar is hidden
For some reason, when the titlebar is hidden, if we use `set fullscreen`
in native full screen mode, the focus will be lost and the user needs to
manually click on the screen to be able to type in MacVim. Current
theory is that because fullscreen window always has a title bar,
sometime that resulted in the window being defocused when the OS is
fixing it up.

For an easy fix, simply assert the focus by using `makeFirstResponder`
on the text view. This may not work well if the program is more
complicated but for MacVim the text view should always be where the
focus goes.

Fix #1078
2020-09-14 01:33:32 -07:00
Bram Moolenaar d1f76afaf9 patch 8.2.1678: crash when using ":set" after ":ownsyntax"
Problem:    Crash when using ":set" after ":ownsyntax".
Solution:   Make sure 'spelloptions' is not NULL. (closes #6950)
2020-09-13 22:37:34 +02:00
Bram Moolenaar 4d170af0a9 patch 8.2.1677: memory access errors when calling setloclist() in autocommand
Problem:    Memory access errors when calling setloclist() in an autocommand.
Solution:   Give an error if the list was changed unexpectedly. (closes #6946)
2020-09-13 22:21:22 +02:00
Bram Moolenaar a4224860a4 patch 8.2.1676: compiler warnings for function typecast
Problem:    Compiler warnings for function typecast.
Solution:   Add an intermediate cast to "void *".
2020-09-13 22:00:12 +02:00
Bram Moolenaar 05c1acd5e1 patch 8.2.1675: MinGW: testdir makefile deletes non-existing file
Problem:    MinGW: testdir makefile deletes non-existing file.
Solution:   Use another way to delete the output file if it already exists.
            (Michael Soyka)
2020-09-13 21:01:22 +02:00
Bram Moolenaar f0afd9e182 patch 8.2.1674: Vim9: internal error when using variable that was not set
Problem:    Vim9: internal error when using variable that was not set.
Solution:   Give a meaningful error. (closes #6937)
2020-09-13 18:57:47 +02:00
Bram Moolenaar b806aa5bd9 patch 8.2.1673: complete_info() selected index has an invalid value
Problem:    complete_info() selected index has an invalid value. (Ben Jackson)
Solution:   Set the index when there is only one match. (closes #6945)
            Add test for complete_info().
2020-09-12 22:52:57 +02:00
Bram Moolenaar 4a091b9978 patch 8.2.1672: v_lock is used when it is not initialized
Problem:    v_lock is used when it is not initialized. (Yegappan Lakshmanan)
Solution:   Initialize the typval in eval1().
2020-09-12 22:10:00 +02:00
Bram Moolenaar c6e57b74fa patch 8.2.1671: Vim9: stray error for missing white space
Problem:    Vim9: stray error for missing white space.
Solution:   Do not skip over white space after member. (closes #6817)
2020-09-12 21:27:03 +02:00
Bram Moolenaar 8f13d82fa6 patch 8.2.1670: a couple of gcc compiler warnings
Problem:    A couple of gcc compiler warnings.
Solution:   Initialize local variables. (Dominique Pellé, closes #6944)
2020-09-12 21:04:23 +02:00
Bram Moolenaar b0fa5e17c5 patch 8.2.1669: Vim9: memory leak when storing a value fails
Problem:    Vim9: memory leak when storing a value fails.
Solution:   Free the value when not storing it.
2020-09-12 19:51:42 +02:00
Bram Moolenaar dadaddd59f patch 8.2.1668: Vim9: not accepting 0 or 1 as bool when type is any
Problem:    Vim9: not accepting 0 or 1 as bool when type is any.
Solution:   Convert the type with the CHECKTYPE instruction. (closes #6913)
2020-09-12 19:11:23 +02:00
Bram Moolenaar 0f769815c8 patch 8.2.1667: local function name cannot shadow a global function name
Problem:    Local function name cannot shadow a global function name.
Solution:   Ignore global functions when checking a script-local or scoped
            function name. (closes #6926)
2020-09-12 18:32:34 +02:00
Bram Moolenaar b00ef0508b patch 8.2.1666: the initial value of 'backupskip' can have duplicate items
Problem:    The initial value of 'backupskip' can have duplicate items.
Solution:   Remove duplicates, like when it is set later. (Tom Ryder,
            closes #6940)
2020-09-12 14:53:53 +02:00
Bram Moolenaar 635414dd2f patch 8.2.1665: cannot do fuzzy string matching
Problem:    Cannot do fuzzy string matching.
Solution:   Add matchfuzzy(). (Yegappan Lakshmanan, closes #6932)
2020-09-11 22:25:15 +02:00
Bram Moolenaar c2c8205634 patch 8.2.1664: memory leak when using :mkview with a terminal buffer
Problem:    Memory leak when using :mkview with a terminal buffer.
Solution:   Don't use a hastab for :mkview. (Rob Pilling, closes #6935)
2020-09-11 22:10:22 +02:00
Bram Moolenaar 14944c04bd patch 8.2.1663: options window entries cannot be translated
Problem:    Options window entries cannot be translated.
Solution:   Use AddOption() for all explanations. (closes #6800)
2020-09-11 20:51:26 +02:00
Bram Moolenaar 0e655111e9 patch 8.2.1662: :mksession does not restore shared terminal buffer properly
Problem:    :mksession does not restore shared terminal buffer properly.
Solution:   Keep a hashtab with terminal buffers. (Rob Pilling, closes #6930)
2020-09-11 20:36:36 +02:00
Bram Moolenaar c6a67c92bc patch 8.2.1661: cannot connect to 127.0.0.1 for host with only IPv6 addresses
Problem:    Cannot connect to 127.0.0.1 for host with only IPv6 addresses.
Solution:   pass AI_V4MAPPED flag to getaddrinfo. (Filipe Brandenburger,
            closes #6931)
2020-09-11 19:28:19 +02:00
Bram Moolenaar c0c71e9d98 patch 8.2.1660: assert functions require passing expected as first argument
Problem:    Assert functions require passing expected result as the first
            argument, which isn't obvious.
Solution:   Use a method, as in "runtest()->assert_equal(expected)".
2020-09-11 19:09:48 +02:00
Bram Moolenaar 96fdf4348a patch 8.2.1659: spellfile code not completely tested
Problem:    Spellfile code not completely tested.
Solution:   Add a few more test cases. (Yegappan Lakshmanan, closes #6929)
2020-09-11 18:11:50 +02:00
Bram Moolenaar a810db3f17 patch 8.2.1658: expand('<stack>') has trailing ".."
Problem:    Expand('<stack>') has trailing "..".
Solution:   Remove the "..". (closes #6927)
2020-09-11 17:59:23 +02:00
Yee Cheng Chin 8b25779788 Merge pull request #1087 from sfsam/tooltips
Remove incorrect tooltips in Appearance pref panel
2020-09-10 22:48:37 -07:00
Sanjay Madan 5b30f66be2 Remove incorrect tooltips in Appearance pref panel 2020-09-10 15:05:45 -07:00
Bram Moolenaar 8b848cafb0 patch 8.2.1657: Vim9: no proper error for nested ":def!"
Problem:    Vim9: no proper error for nested ":def!".
Solution:   Check for "!". (closes #6920)
2020-09-10 22:28:01 +02:00
Bram Moolenaar dfa3d5524e patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Problem:    Vim9: callstack wrong if :def function calls :def function.
Solution:   Set the line number before calling. (closes #6914)
2020-09-10 22:05:08 +02:00
Bram Moolenaar 895a7a472d patch 8.2.1655: cannot build with Strawberry Perl 5.32.0
Problem:    Cannot build with Strawberry Perl 5.32.0.
Solution:   Use Perl_sv_2pvbyte_flags. (closes #6921)
2020-09-10 21:36:11 +02:00
Bram Moolenaar ad9ec5e799 patch 8.2.1654: when job writes to hidden buffer current window is wrong
Problem:    When job writes to hidden buffer current window has display
            errors.  (Johnny McArthur)
Solution:   Use aucmd_prepbuf() instead of switch_to_win_for_buf().
            (closes #6925)
2020-09-10 21:25:45 +02:00
Bram Moolenaar 4f25b1aba0 patch 8.2.1653: expand('<stack>') does not include the final line number
Problem:    Expand('<stack>') does not include the final line number.
Solution:   Add the line nuber. (closes #6927)
2020-09-10 19:25:05 +02:00
Bram Moolenaar a953b5cf4f patch 8.2.1652: cannot translate lines in the options window
Problem:    Cannot translate lines in the options window.
Solution:   Use the AddOption() function to split descriptions where indicated
            by a line break. (issue #6800)
2020-09-10 14:25:25 +02:00
ichizok c5e68ff121 Fix build error
- Add the declaration for gui_mch_menu_set_tip in proto
- On prior to 10.12 comment out the declarations of touchbar methods
2020-09-10 16:22:16 +09:00
ichizok 8663578787 Merge remote-tracking branch 'vim/master' 2020-09-10 15:04:34 +09:00
Bram Moolenaar 64e2db6dc6 patch 8.2.1651: spellfile code not completely tested
Problem:    Spellfile code not completely tested.
Solution:   Add a few more test cases. (Yegappan Lakshmanan, closes #6918)
2020-09-09 22:43:19 +02:00
Bram Moolenaar c1ec0422e4 patch 8.2.1650: Vim9: result of && and || expression is not bool in script
Problem:    Vim9: result of && and || expression cannot be assigned to a bool
            at the script level.
Solution:   Add the VAR_BOOL_OK flag.  Convert to bool when needed.
2020-09-09 22:27:58 +02:00
Bram Moolenaar 3e4cc9671c patch 8.2.1649: GTK3: using old file chooser
Problem:    GTK3: using old file chooser.
Solution:   Use native file chooser on GTK 3.20 and above. (Yogeshwar
            Velingker, closes #6909)
2020-09-09 20:58:55 +02:00
Bram Moolenaar a62372be1f patch 8.2.1648: Amiga: no common build file for Amiga (-like) systems
Problem:    Amiga: no common build file for Amiga (-like) systems.
Solution:   Turn Make_morph.mak into Make_ami.mak. (Ola Söder, closes #6805)
2020-09-09 20:41:40 +02:00
Bram Moolenaar 4ed124cc6c patch 8.2.1647: Vim9: result of expression with && and || is not a bool
Problem:    Vim9: result of expression with && and || cannot be assigned to a
            bool variable.
Solution:   Add the TTFLAG_BOOL_OK flag and convert the value if needed.
2020-09-09 20:03:46 +02:00
Bram Moolenaar 33e3346322 patch 8.2.1646: Amiga: Unnecessary #include
Problem:    Amiga: Unnecessary #include.
Solution:   Remove the #include. (Ola Söder, closes #6908)
2020-09-09 19:25:09 +02:00
Bram Moolenaar 81a4cf469a patch 8.2.1645: GTK3: icons become broken images when resized
Problem:    GTK3: icons become broken images when resized.
Solution:   Use gtk_image_new_from_icon_name(). (closes #6916)
            Fix compiler warnings.
2020-09-09 19:05:13 +02:00
Bram Moolenaar ba7c0d7b4c patch 8.2.1644: Vim9: cannot assign 1 and 0 to bool at script level
Problem:    Vim9: cannot assign 1 and 0 to bool at script level.
Solution:   Add the TTFLAG_BOOL_OK flag to the type. Fix name of test
            function.
2020-09-09 18:54:42 +02:00
Bram Moolenaar 96f8f499ce patch 8.2.1643: Vim9: :defcompile compiles dead functions
Problem:    Vim9: :defcompile compiles dead functions.
Solution:   Skip over dead functions.
2020-09-09 17:08:51 +02:00
Bram Moolenaar 4507f6ada5 patch 8.2.1642: otions test fails
Problem:    Otions test fails.
Solution:   Correct call to OptionG().
2020-09-09 15:10:52 +02:00
Bram Moolenaar 29a86ffee7 patch 8.2.1641: Vim9: cannot use 0 or 1 where a bool is expected
Problem:    Vim9: cannot use 0 or 1 where a bool is expected.
Solution:   Allow using 0 and 1 for a bool type. (closes #6903)
2020-09-09 14:55:31 +02:00
Bram Moolenaar f842cd9e28 patch 8.2.1640: Amiga: missing header for getgrgid()
Problem:    Amiga: missing header for getgrgid().
Solution:   Add the grp.h header. (Ola Söder, closes #6906)
2020-09-09 13:01:27 +02:00
Bram Moolenaar 64075b0ab1 patch 8.2.1639: options window cannot be translated
Problem:    Options window cannot be translated.
Solution:   Get the translation for "local to" texts once and use them in many
            places. Fix that 'whichwrap' is not a local option. (issue #6800)
2020-09-09 12:56:30 +02:00
Yee Cheng Chin e34eb5913f Merge pull request #1086 from ychin/touchbar_tmenu_support
Fix tmenu in MacVim and submenu handling in TouchBar
2020-09-09 01:24:02 -07:00
Yee Cheng Chin 15eadd75e1 Fix tmenu in MacVim and submenu handling in TouchBar
Fix `tmenu` to work when it's called after the menu has already been
created, by implementing `gui_mch_menu_set_tip`. This works for menus,
tool bar, and Touch Bar (see #1084 which added tmenu support for
TouchBar).

Also, fix Touch Bar's submenu handling to reuse more common shared
function. Previously enabling/disabling/removing Touch Bar submenu items
didn't work as it had a hard-coded length check.
2020-09-09 01:14:48 -07:00
Bram Moolenaar 8e9be208ea patch 8.2.1638: leaking memory when popup filter function can't be called
Problem:    Leaking memory when popup filter function can't be called.
Solution:   Don't return too soon.
2020-09-08 22:55:26 +02:00
Bram Moolenaar c3516f7e45 patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function
Problem:    Vim9: :put ={expr} does not work inside :def function.
Solution:   Add ISN_PUT. (closes #6397)
2020-09-08 22:45:35 +02:00
Yee Cheng Chin f88fb5e66b Merge pull request #1085 from ychin/clean-up-docs
Clean up MacVim docs
2020-09-08 13:40:45 -07:00
Bram Moolenaar 6defa7bf0a patch 8.2.1636: get stuck if a popup filter causes an error
Problem:    Get stuck if a popup filter causes an error.
Solution:   Check whether the function can be called and does not cause an
            error.  (closes #6902)
2020-09-08 22:06:44 +02:00
Yee Cheng Chin 8f476ffe1a Clean up MacVim docs
Clean up misc docs, TODO's, outdated tips, etc.
2020-09-08 12:45:36 -07:00
Yee Cheng Chin e0d1117b3b Merge pull request #1084 from ychin/touchbar_subfolders_title_emoji
Touch Bar add submenu/title/emoji picker support
2020-09-08 12:16:29 -07:00
Bram Moolenaar 57ad94c5a9 patch 8.2.1635: no digraph for 0x2022 BULLET
Problem:    No digraph for 0x2022 BULLET.
Solution:   Use "oo". (Hans Ginzel, closes #6904)
2020-09-08 19:06:30 +02:00
Yee Cheng Chin e13d237836 Touch Bar add submenu/title/emoji picker support
Can now specify submenus. E.g. TouchBar.Debugger.Run. When trying to
create a submenu it will first create a popover item and then only
create the NSButton at the leaf.

- Unfortunatley macOS currently can't do multiple levels of submenus (the
  API will allow it, but it doesn't really work), presumably for
  usability concerns. Limit it to only one level of nesting for now.

Add ability to set a title on a Touch Bar button, using `tmenu`. This
allows us to override the displayed button name, and when an icon is
specified the override name will still be shown alongside the icon.

Add emoji picker support, and add it to the list of default Touch Bar
menus. Only enable it in modes where the user is typing (insert,
command, terminal, etc).

Fixed up the internal implementation of Touch Bar management so it's
easier to add metadata to it now.

Also, add documentation.

TODO:

- Using `tmenu` after `amenu` doesn't really work (unless it's specified
  in vimrc). This is because MacVim hasn't implemented
  `gui_mch_menu_set_tip`. Should fix it by adding support for it. For
  now, the user can just call `tmenu` before `amenu`.
- Disabling menus currently just hides the menu. Since the user can
  already do `aunmenu` to hide, should change the disable behavior to
  show the button but disabled instead, similar to how toolbars and
  normal menus work.
2020-09-08 02:35:53 -07:00
Bram Moolenaar 1c6737b20a Update runtime files. 2020-09-07 22:18:52 +02:00
Bram Moolenaar 9c929713b7 patch 8.2.1634: loop to handle keys for the command line is too long
Problem:    Loop to handle keys for the command line is too long.
Solution:   Move a few more parts to separate functions. (Yegappan Lakshmanan,
            closes #6895)
2020-09-07 22:05:28 +02:00
Bram Moolenaar e83cca2911 patch 8.2.1633: some error messages are internal but do not use iemsg()
Problem:    Some error messages are internal but do not use iemsg().
Solution:   Use iemsg(). (Dominique Pellé, closes #6894)
2020-09-07 18:53:21 +02:00
Bram Moolenaar 44d6652d56 patch 8.2.1632: not checking the context of test_fails()
Problem:    Not checking the context of test_fails().
Solution:   Add the line number and context arguments.  Give error if
            assert_fails() argument types are wrong.
2020-09-06 22:26:57 +02:00
Bram Moolenaar 9bd5d879c2 patch 8.2.1631: test_fails() does not check the context of the line number
Problem:    test_fails() does not check the context of the line number.
Solution:   Use another argument to specify the context of the line number.
2020-09-06 21:47:48 +02:00
Bram Moolenaar c98cdb3bc9 patch 8.2.1630: terminal test fails
Problem:    Terminal test fails.
Solution:   Correct argument to term_start().  Correct error number.
2020-09-06 21:13:00 +02:00
Bram Moolenaar 63969ef07e patch 8.2.1629: test fails without terminal feature
Problem:    Test fails without terminal feature.
Solution:   Check for terminal feature.
2020-09-06 20:06:59 +02:00
Bram Moolenaar 418155def2 patch 8.2.1628: Vim9: cannot pass "true" to timer_paused()
Problem:    Vim9: cannot pass "true" to timer_paused().
Solution:   Use tv_get_bool(). (closes #6891)
2020-09-06 18:39:38 +02:00
Bram Moolenaar ad30470610 patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start
Problem:    Vim9: cannot pass "true" to submatch(), term_gettty() and
            term_start()
Solution:   Use tv_get_bool_chk(). (closes #6888, closes #6890, closes #6889)
2020-09-06 18:22:53 +02:00
Bram Moolenaar 707be5f352 patch 8.2.1626: test for strchars() fails with different error number
Problem:    Test for strchars() fails with different error number.
Solution:   Adjust the error number.
2020-09-06 17:13:44 +02:00
Bram Moolenaar 30d6413782 patch 8.2.1625: compiler warning for use of fptr_T
Problem:    Compiler warning for use of fptr_T.
Solution:   Make the type less strict.
2020-09-06 17:09:12 +02:00
Bram Moolenaar 3986b94b09 patch 8.2.1624: Vim9: cannot pass "true" to split(), str2nr() and strchars()
Problem:    Vim9: cannot pass "true" to split(), str2nr() and strchars().
Solution:   Use tv_get_bool_chk(). (closes #6884, closes #6885, closes #6886)
2020-09-06 16:09:04 +02:00
Bram Moolenaar d2c617055a patch 8.2.1623: Vim9: using :call where it is not needed
Problem:    Vim9: using :call where it is not needed.
Solution:   Remove :call. (closes #6892)
2020-09-06 15:58:36 +02:00
Bram Moolenaar 2f3cd2e4ec patch 8.2.1622: loop to handle keys for the command line is too long
Problem:    Loop to handle keys for the command line is too long.
Solution:   Move code to functions. (Yegappan Lakshmanan, closes #6880)
2020-09-06 15:54:00 +02:00
Bram Moolenaar 8a0dcf4330 patch 8.2.1621: crash when using submatch(0, 1) in substitute()
Problem:    Crash when using submatch(0, 1) in substitute().
Solution:   Increment reference count. (closes #6887)
2020-09-06 15:14:45 +02:00
ichizok a9f6bac901 Comment out upstream CODEOWNERS 2020-09-06 19:49:59 +09:00
ichizok de86bd5b0e Merge remote-tracking branch 'vim/master' 2020-09-06 18:32:19 +09:00
Bram Moolenaar 4140c4f3ff patch 8.2.1620: searchcount() test fails
Problem:    searchcount() test fails.
Solution:   Restore default flag value.
2020-09-05 23:16:00 +02:00
Bram Moolenaar 7c27f337bf patch 8.2.1619: Vim9: cannot pass "true" to spellsuggest()
Problem:    Vim9: cannot pass "true" to spellsuggest().
Solution:   Use tv_get_bool_chk(). (closes #6883)
2020-09-05 22:45:55 +02:00
Bram Moolenaar 401f0c0798 patch 8.2.1618: Vim9: cannot pass "true" to setloclist()
Problem:    Vim9: cannot pass "true" to setloclist().
Solution:   Use dict_get_bool(). (closes #6882)
2020-09-05 22:37:39 +02:00
Bram Moolenaar 4b9bd692bd patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Problem:    Vim9: cannot pass "true" to win_splitmove().
Solution:   Use dict_get_bool(). (closes #6862)  Alphabetize test functions.
2020-09-05 21:57:53 +02:00
Bram Moolenaar fcb6d7082d patch 8.2.1616: Vim9: cannot pass "true" to synID()
Problem:    Vim9: cannot pass "true" to synID().
Solution:   Use tv_get_bool_chk(). (closes #6860)
2020-09-05 21:41:56 +02:00
Bram Moolenaar 30788d3d37 patch 8.2.1615: Vim9: cannot pass "true" to searchdecl()
Problem:    Vim9: cannot pass "true" to searchdecl().
Solution:   use tv_get_bool_chk(). (closes #6881)
2020-09-05 21:35:16 +02:00
Bram Moolenaar 597aaac9d2 patch 8.2.1614: Vim9: cannot pass "true" to searchcount()
Problem:    Vim9: cannot pass "true" to searchcount().
Solution:   Use tv_get_bool_chk(). (closes #6854)
2020-09-05 21:21:16 +02:00
Bram Moolenaar fa2e38df76 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Problem:    Vim9: cannot pass "true" to prop_type_add().
Solution:   Use tv_get_bool(). (closes #6850)
2020-09-05 21:00:00 +02:00
Bram Moolenaar a5a40c5696 patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Problem:    Vim9: cannot pass "true" to prop_remove().
Solution:   Use dict_get_bool(). (closes #6853)
2020-09-05 20:50:49 +02:00
Bram Moolenaar ed6a430fae patch 8.2.1611: Vim9: cannot pass "true" to nr2char()
Problem:    Vim9: cannot pass "true" to nr2char().
Solution:   use tv_get_bool_chk(). (closes #6878)
2020-09-05 20:29:41 +02:00
Bram Moolenaar a48f786787 patch 8.2.1610: Vim9: cannot pass "true" to list2str() and str2list()
Problem:    Vim9: cannot pass "true" to list2str() and str2list().
Solution:   Use tv_get_bool_chk(). (closes #6877)
2020-09-05 20:16:57 +02:00
Bram Moolenaar 7918238528 patch 8.2.1609: Vim9: test fails when build without +channel
Problem:    Vim9: test fails when build without +channel.
Solution:   Add check for +channel. (closes #6879)
2020-09-05 20:06:33 +02:00
Bram Moolenaar 15183b41c4 patch 8.2.1608: Vim9: getchar() test fails with GUI
Problem:    Vim9: getchar() test fails with GUI.
Solution:   Avoid that getchar(0) gets stuck on K_IGNORE.
2020-09-05 19:59:39 +02:00
Bram Moolenaar 636c5d5399 patch 8.2.1607: Vim9: getchar() test fails on MS-Windows
Problem:    Vim9: getchar() test fails on MS-Windows.
Solution:   First consume any available input.
2020-09-05 18:48:57 +02:00
Bram Moolenaar 04637e243d patch 8.2.1606: Vim9: cannot use "true" with has()
Problem:    Vim9: cannot use "true" with has().
Solution:   Use tv_get_bool(). (closes #6876)
2020-09-05 18:45:29 +02:00
Bram Moolenaar b02628b8a2 patch 8.2.1605: default maintainer on github is wrong
Problem:    Defyyyyyyyyyyyyyyyyyyyyyyyub is wrong.
Solution:   Use Bram's account.
2020-09-05 18:40:44 +02:00
Bram Moolenaar d217a87755 patch 8.2.1604: Vim9: cannot use "true" with getcompletion()
Problem:    Vim9: cannot use "true" with getcompletion().
Solution:   use tv_get_bool_chk(). (closes #6875)
2020-09-05 18:31:33 +02:00
Bram Moolenaar c08cc72947 patch 8.2.1603: Vim9: cannot use "true" with getchar()
Problem:    Vim9: cannot use "true" with getchar().
Solution:   use tv_get_bool_chk(). (closes #6874)
2020-09-05 17:51:23 +02:00
Bram Moolenaar 036c2cf719 patch 8.2.1602: Vim9: cannot use 'true" with getbufinfo()
Problem:    Vim9: cannot use 'true" with getbufinfo().
Solution:   Use dict_get_bool(). (closes #6873)
2020-09-05 17:37:07 +02:00
Bram Moolenaar 2df4731042 patch 8.2.1601: Vim9: cannot use 'true" with garbagecollect()
Problem:    Vim9: cannot use 'true" with garbagecollect().
Solution:   Use tv_get_bool(). (closes #6871)
2020-09-05 17:30:44 +02:00
Bram Moolenaar 44b4a246b6 patch 8.2.1600: Vim9: cannot use "true" with deepcopy()
Problem:    Vim9: cannot use "true" with deepcopy().
Solution:   Use tv_get_bool_chk(). (closes #6867)
2020-09-05 17:18:28 +02:00
Bram Moolenaar 59941cbd80 patch 8.2.1599: missing line end when skipping a long line with :cgetfile
Problem:    Missing line end when skipping a long line with :cgetfile.
Solution:   Fix off-by-one error. (closes #6870)
2020-09-05 17:03:40 +02:00
Bram Moolenaar 2ce14589f2 patch 8.2.1598: starting a hidden terminal resizes the current window
Problem:    Starting a hidden terminal resizes the current window.
Solution:   Do not resize the current window for a hidden terminal.
            (closes #6872)
2020-09-05 16:08:49 +02:00
Bram Moolenaar 8b5866ded6 patch 8.2.1597: the channel source file is too big
Problem:    The channel source file is too big.
Solution:   Move job related code to a new source file.
2020-09-05 15:48:51 +02:00
Bram Moolenaar 7dfc5ce7cf patch 8.2.1596: using win_screenpos('.') in tests works but is wrong
Problem:    Using win_screenpos('.') in tests works but is wrong.
Solution:   Use win_screenpos(0).
2020-09-05 15:05:30 +02:00
Bram Moolenaar 86394aa972 patch 8.2.1595: cannot easily see what Vim sends to the terminal
Problem:    Cannot easily see what Vim sends to the terminal.
Solution:   Write output to the channel log if it contains terminal control
            sequences.  Avoid warnings for tputs() argument.
2020-09-05 14:27:24 +02:00
Bram Moolenaar cf8aa6448b patch 8.2.1594: pull requests on github do not notify a maintainer
Problem:    Pull requests on github do not notify a maintainer.
Solution:   Add a CODEOWNERS file with a few initial entries.
2020-09-05 13:48:58 +02:00
Bram Moolenaar e2e4075fad patch 8.2.1593: tests do not check the error number properly
Problem:    Tests do not check the error number properly.0
Solution:   Add a colon after the error number. (closes #6869)
2020-09-04 21:18:46 +02:00
Bram Moolenaar 24f7750ffa patch 8.2.1592: Vim9: passing "true" to char2nr() fails
Problem:    Vim9: passing "true" to char2nr() fails.
Solution:   Use tv_get_bool_chk(). (closes #6865)
2020-09-04 19:50:57 +02:00
Bram Moolenaar c05d1c043a patch 8.2.1591: using winheight('.') in tests works but is wrong
Problem:    Using winheight('.') in tests works but is wrong.
Solution:   Use winheight(0). (issue #6863)
2020-09-04 18:38:06 +02:00
Bram Moolenaar fe136c9a85 patch 8.2.1590: Vim9: bufnr() doesn't take "true" argument
Problem:    Vim9: bufnr() doesn't take "true" argument.
Solution:   use tv_get_bool_chk(). (closes #6863)
2020-09-04 18:35:26 +02:00
Bram Moolenaar b936b79424 patch 8.2.1589: term_start() options for size are overruled by 'termwinsize'
Problem:    Term_start() options for size are overruled by 'termwinsize'.
            (Sergey Vlasov)
Solution:   Set 'termwinsize' to the specified size.
2020-09-04 18:34:09 +02:00
Bram Moolenaar 077cc7aa0e patch 8.2.1588: cannot read back the prompt of a prompt buffer
Problem:    Cannot read back the prompt of a prompt buffer.
Solution:   Add prompt_getprompt(). (Ben Jackson, closes #6851)
2020-09-04 16:35:35 +02:00
Bram Moolenaar eadee486c7 patch 8.2.1587: loop for handling keys for the command line is too long
Problem:    Loop for handling keys for the command line is too long.
Solution:   Move wild menu handling to separate functions. (Yegappan
            Lakshmanan, closes #6856)
2020-09-04 15:37:31 +02:00
Bram Moolenaar fe6dce8739 patch 8.2.1586: :resize command not fully tested
Problem:    :resize command not fully tested.
Solution:   Add a couple of tests. (Dominique Pellé, closes #6857)
2020-09-04 14:41:21 +02:00
Bram Moolenaar fa57335e53 patch 8.2.1585: messages in globals.h not translated
Problem:    Messages in globals.h not translated, xgettext on MS-Windows not
            fully supported.
Solution:   Add globals.h to list of input files.  Update MS-Windows makefiles
            to improve message translations. (Ken Takata, closes #6858)
2020-09-04 13:53:00 +02:00
ichizok 549abc27cb Merge remote-tracking branch 'vim/master' 2020-09-04 10:41:52 +09:00
Bram Moolenaar eb24556df3 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Problem:    Vim9: cannot use "true" for "skipstart" in prop_find().
Solution:   Use dict_get_bool() instead of tv_get_number(). (closes #6852)
2020-09-03 22:33:44 +02:00
Bram Moolenaar 18eedfa40b patch 8.2.1583: MS-Windows: cannot easily measure code coverage
Problem:    MS-Windows: cannot easily measure code coverage.
Solution:   Add the COVERAGE option. (Ken Takata, closes #6842)
2020-09-03 19:50:05 +02:00
Bram Moolenaar 7ca86fe8dc patch 8.2.1582: the channel log does not show typed text
Problem:    The channel log does not show typed text.
Solution:   Add raw typed text to the log file.
2020-09-03 19:25:11 +02:00
Bram Moolenaar 1f42f5a675 patch 8.2.1581: using line() for global popup window doesn't work
Problem:    Using line() for global popup window doesn't work.
Solution:   Set tabpage to "curtab". (closes #6847)
2020-09-03 18:52:24 +02:00
Bram Moolenaar a60053b8f4 patch 8.2.1580: wildmenu does not work properly
Problem:    Wildmenu does not work properly.
Solution:   Do not call may_do_incsearch_highlighting() if completion is in
            progress.
2020-09-03 16:50:13 +02:00
Bram Moolenaar 5b5aa11801 patch 8.2.1579: reports from asan are not optimal
Problem:    Reports from asan are not optimal.
Solution:   Use clang with ubsan. (James McCoy, closes #6811)
2020-09-03 16:05:04 +02:00
Bram Moolenaar 62f93f4ec9 patch 8.2.1578: Vim9: popup_clear() does not take "true" as argument
Problem:    Vim9: popup_clear() does not take "true" as argument.
Solution:   Use tv_get_bool(). (closes #6826)
2020-09-02 22:33:24 +02:00
Bram Moolenaar 04d594b9c1 patch 8.2.1577: Vim9: hasmapto()/mapcheck()/maparg() do nottake "true" arg
Problem:    Vim9: hasmapto(), mapcheck() and maparg() do not take "true" as
            argument.
Solution:   Use tv_get_bool(). (closes #6822, closes #6824)
2020-09-02 22:25:35 +02:00
Bram Moolenaar 6c553f9c04 patch 8.2.1576: Vim9: index() does not take "true" as argument
Problem:    Vim9: index() does not take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6823)
2020-09-02 22:10:34 +02:00
Bram Moolenaar f966ce5ea2 patch 8.2.1575: Vim9: globpath() doesnot take "true" as argument
Problem:    Vim9: globpath() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6821)
2020-09-02 21:57:07 +02:00
Bram Moolenaar 5892ea1511 patch 8.2.1574: Vim9: glob() doesnot take "true" as argument
Problem:    Vim9: glob() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6821)
2020-09-02 21:53:11 +02:00
Bram Moolenaar 67ff97ded7 patch 8.2.1573: Vim9: getreg() does not take "true" as argument
Problem:    Vim9: getreg() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes #6820)
2020-09-02 21:45:54 +02:00
Bram Moolenaar 551d25e765 patch 8.2.1572: Vim9: expand() does not take "true" as argument
Problem:    Vim9: expand() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes #6819)
2020-09-02 21:37:56 +02:00
Bram Moolenaar 119f557230 patch 8.2.1571: Vim9: count() third argument cannot be "true"
Problem:    Vim9: count() third argument cannot be "true".
Solution:   use tv_get_bool_chk(). (closes #6818)
2020-09-02 21:31:22 +02:00
Bram Moolenaar 9d8bfae50f patch 8.2.1570: configure check for dirfd() does not work on HPUX
Problem:    Configure check for dirfd() does not work on HPUX. (Michael Osipov)
Solution:   Use AC_TRY_LINK instead of AC_TRY_COMPILE. (closes #6838)
2020-09-02 21:21:35 +02:00
Bram Moolenaar a5d3841177 patch 8.2.1569: Vim9: fixes not tested; failure in getchangelist()
Problem:    Vim9: fixes for functions not tested; failure in getchangelist().
Solution:   Add tests. (closes #6813, closes #6815, closes #6817)
2020-09-02 21:02:35 +02:00
Bram Moolenaar 4da7a259f6 patch 8.2.1568: prop_find() skips properties in the same line
Problem:    prop_find() skips properties in the same line if "skipstart" is
            used.
Solution:   Use "continue" instead of "break". (closes #6840)
2020-09-02 19:59:00 +02:00
Bram Moolenaar 6efa46f4ef patch 8.2.1567: no example to use ubsan with clang
Problem:    No example to use ubsan with clang.
Solution:   Add example commands. (Dominique Pellé, issue #6811)
2020-09-02 19:23:06 +02:00
Bram Moolenaar 4488f5a545 patch 8.2.1566: not all Bazel files are recognized
Problem:    Not all Bazel files are recognized.
Solution:   Add *.bazel and *.BUILD. (closes #6836)
2020-09-02 17:08:59 +02:00
Bram Moolenaar e90d63ea90 patch 8.2.1565: spellfile test sometimes fails
Problem:    Spellfile test sometimes fails.
Solution:   Check running into the end of the file.
2020-09-02 12:58:48 +02:00
Bram Moolenaar 4ad739fc05 patch 8.2.1564: a few remaining errors from ubsan
Problem:    A few remaining errors from ubsan.
Solution:   Avoid the warnings. (Dominique Pellé, closes #6837)
2020-09-02 10:25:45 +02:00
Bram Moolenaar 6f84b6db10 patch 8.2.1563: Vim9: error when using '%" with setbufvar() r getbufvar()
Problem:    Vim9: error when using '%" with setbufvar() or getbufvar().
Solution:   Use tv_get_buf_from_arg(). (closes #6816)
2020-09-01 23:16:32 +02:00
Bram Moolenaar 3767e3a330 patch 8.2.1562: Vim9: error when using "%" where a buffer is expected
Problem:    Vim9: error when using "%" where a buffer is expected.
Solution:   Add tv_get_buf_from_arg(). (closes #6814)
2020-09-01 23:06:01 +02:00
Bram Moolenaar 81fcb67fb3 patch 8.2.1561: using NULL pointers in fold code
Problem:    Using NULL pointers in fold code.
Solution:   Avoid using a NULL pointer. (Dominique Pellé, closes #6831,
            closes #6831)
2020-09-01 21:21:24 +02:00
Bram Moolenaar 9c2b06637b patch 8.2.1560: using NULL pointers in some code
Problem:    Using NULL pointers in some code. (James McCoy)
Solution:   Avoid adding to a NULL pointer.  Use byte as unsigned.
2020-09-01 19:56:15 +02:00
Bram Moolenaar ca563b9b94 patch 8.2.1559: s390x tests work again
Problem:    s390x tests work again.
Solution:   re-enable s390x tests. (James McCoy, closes #6829)
2020-09-01 17:50:51 +02:00
Bram Moolenaar 2f1228463a patch 8.2.1558: signs test fails
Problem:    Signs test fails.
Solution:   Add missing change to sign.c.
2020-08-31 23:18:00 +02:00
Bram Moolenaar 997cd1a17f patch 8.2.1557: crash in :vimgrep when started as "vim -n"
Problem:    Crash in :vimgrep when started as "vim -n". (Raul Segura)
Solution:   Check mfp pointer. (Yegappan Lakshmanan, closes #6827)
2020-08-31 22:16:08 +02:00
Bram Moolenaar 39f7aa3c31 patch 8.2.1556: cursorline highlighting always overrules sign highlighting
Problem:    Cursorline highlighting always overrules sign highlighting.
Solution:   Combine the highlighting, use the priority to decide how.
            (closes #6812)
2020-08-31 22:00:05 +02:00
Bram Moolenaar 7d6979608e patch 8.2.1555: not all tests are executed on Github Actions
Problem:    Not all tests are executed on Github Actions.
Solution:   Copy "src" to "src2" earlier. Recognize "src2" in a couple more
            places.  Add two tests to the list of flaky tests. (Ken Takata,
            closes #6798)
2020-08-31 21:30:32 +02:00
Bram Moolenaar 07e87e9eb5 patch 8.2.1554: crash in normal test
Problem:    Crash in normal test.
Solution:   Skip adjusting marks if there are no folds.
2020-08-31 21:22:40 +02:00
Bram Moolenaar 2c93c685e3 patch 8.2.1553: crash in edit test
Problem:    Crash in edit test.
Solution:   Avoid using invalid pointer.
2020-08-31 21:15:02 +02:00
Bram Moolenaar 64f37d3090 patch 8.2.1552: warnings from asan with clang-11
Problem:    Warnings from asan with clang-11. (James McCoy)
Solution:   Avoid using a NULL pointer. (issue #6811)
2020-08-31 19:58:13 +02:00
ichizok 63e4039abd Merge remote-tracking branch 'vim/master' 2020-08-31 16:41:39 +09:00
Bram Moolenaar 8b565c2c15 patch 8.2.1551: Vim9: error for argument type does not mention the number
Problem:    Vim9: error for argument type does not mention the number.
Solution:   Pass the argument number to where the error is given.
2020-08-30 23:24:20 +02:00
Bram Moolenaar 02aaad9109 patch 8.2.1550: Vim9: bufname('%') gives an error
Problem:    Vim9: bufname('%') gives an error.
Solution:   Only give an error for wrong argument type. (closes #6807)
2020-08-30 21:26:57 +02:00
Bram Moolenaar ca774f6753 patch 8.2.1549: "r" fails if 'esckeys' is off and modifyOtherKeys is used
Problem:    The "r" command fails for keys with modifiers if 'esckeys' is off
            and modifyOtherKeys is used. (Lauri Tirkkonen)
Solution:   Temporarily disable bracketed paste and modifyOtherKeys if
            'esckeys' is off. (closes #6809)
2020-08-30 20:46:38 +02:00
Bram Moolenaar 0b8cf278ec patch 8.2.1548: cannot move position of "%%" in message translations
Problem:    Cannot move position of "%%" in message translations. (Emir Sarı)
Solution:   Improve the check script.
2020-08-30 19:42:06 +02:00
Bram Moolenaar 02c037a4be patch 8.2.1547: various comment problems
Problem:    Various comment problems.
Solution:   Update comments.
2020-08-30 19:26:45 +02:00
Bram Moolenaar cd80006ecb patch 8.2.1546: build rule for Vim.app is unused
Problem:    Build rule for Vim.app is unused.
Solution:   Delete the related build rules.
2020-08-30 18:11:54 +02:00
Bram Moolenaar 76603baac5 patch 8.2.1545: ch_logfile() is unclear about closing when forking
Problem:    ch_logfile() is unclear about closing when forking.
Solution:   Adjust the log messages.
2020-08-30 17:24:37 +02:00
Bram Moolenaar 207f009326 Update runtime files. 2020-08-30 17:20:20 +02:00
Bram Moolenaar 0b39c3fd4c patch 8.2.1544: cannot translate messages in a Vim script
Problem:    Cannot translate messages in a Vim script.
Solution:   Add gettext().  Try it out for a few messages in the options
            window.
2020-08-30 15:52:10 +02:00
Bram Moolenaar 25859dd74c patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Problem:    Vim9: test with invalid SID is skipped in the GUI.
Solution:   Read the CTRL-C that feedkeys() put in typeahead.
2020-08-30 12:54:53 +02:00
Bram Moolenaar a5639848cc patch 8.2.1542: Vim9: test with invalid SID does not work in the GUI
Problem:    Vim9: test with invalid SID does not work in the GUI.
Solution:   Skip the test in the GUI.
2020-08-29 22:59:17 +02:00
Bram Moolenaar 95006e3dca patch 8.2.1541: Vim9: cannot find function reference for s:Func
Problem:    Vim9: cannot find function reference for s:Func.
Solution:   Recognize <SNR> prefix. (closes #6805)
2020-08-29 17:47:08 +02:00
Bram Moolenaar 98945560c1 patch 8.2.1540: the user cannot try out emoji character widths
Problem:    The user cannot try out emoji character widths.
Solution:   Move the emoji script to the runtime/tools directory.
2020-08-29 16:41:27 +02:00
Bram Moolenaar e3d4685f1f patch 8.2.1539: using invalid script ID causes a crash
Problem:    Using invalid script ID causes a crash.
Solution:   Check the script ID to be valid. (closes #6804)
2020-08-29 13:39:17 +02:00
Bram Moolenaar 423a85a11a patch 8.2.1538: Python: iteration over vim objects fails to keep reference
Problem:    Python: iteration over vim objects fails to keep reference.
Solution:   Keep a reference for the object. (Paul Ollis, closes #6803,
            closes #6806)
2020-08-29 12:57:16 +02:00
Bram Moolenaar b06a6d59d1 patch 8.2.1537: memory acccess error when using setcellwidths()
Problem:    Memory acccess error when using setcellwidths().
Solution:   Use array and pointers correctly.
2020-08-28 23:27:20 +02:00
Bram Moolenaar 4e4473c927 patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Problem:    Cannot get the class of a character; emoji widths are wrong in
            some environments.
Solution:   Add charclass(). Update some emoji widths.  Add script to check
            emoji widths.
2020-08-28 22:24:57 +02:00
Bram Moolenaar 08aac3c619 patch 8.2.1535: it is not possible to specify cell widths of characters
Problem:    It is not possible to specify cell widths of characters.
Solution:   Add setcellwidths().
2020-08-28 21:04:24 +02:00
Bram Moolenaar ee8580e52e patch 8.2.1534: Vim9: type error for argument type is not at call position
Problem:    Vim9: type error for argument type is not at call position.
Solution:   Set the context and stack after checking the arguments.
            (issue #6785)
2020-08-28 17:19:07 +02:00
Bram Moolenaar 6a950581da patch 8.2.1533: Vim9: error when passing getreginfo() result to setreg()
Problem:    Vim9: error when passing getreginfo() result to setreg().
Solution:   Use dict_get_bool() for "isunnamed". (closes #6784)
2020-08-28 16:39:33 +02:00
Bram Moolenaar 2566054a7f patch 8.2.1532: compiler warning for conversion of size_t to long
Problem:    Compiler warning for conversion of size_t to long.
Solution:   Add type cast.
2020-08-28 16:38:11 +02:00
ichizok 0692eb5c46 Merge remote-tracking branch 'vim/master' 2020-08-28 14:38:45 +09:00
Bram Moolenaar 7a3330fc57 patch 8.2.1531: Vim9: test still fails on MS-Windows
Problem:    Vim9: test still fails on MS-Windows.
Solution:   When skipping expect function to be NULL.
2020-08-27 23:57:57 +02:00
Bram Moolenaar 5163fcce79 patch 8.2.1530: Vim9: test fails on MS-Windows
Problem:    Vim9: test fails on MS-Windows.
Solution:   Skip Ex command inside "if false".
2020-08-27 23:37:09 +02:00
Bram Moolenaar 749639ec72 patch 8.2.1529: Vim9: :elseif may be compiled when not needed
Problem:    Vim9: :elseif may be compiled when not needed.
Solution:   Do evaluate the :elseif expression.
2020-08-27 23:08:47 +02:00
Bram Moolenaar 3988f64f9d patch 8.2.1528: Vim9: :endif not found after "if false"
Problem:    Vim9: :endif not found after "if false".
Solution:   When skipping still check for a following command. (closes #6797)
2020-08-27 22:43:03 +02:00
Bram Moolenaar 601e76ac3c patch 8.2.1527: Vim9: cannot use a function name at script level
Problem:    Vim9: cannot use a function name as a function reference at script
            level.
Solution:   Check if a name is a function name. (closes #6789)
2020-08-27 21:33:10 +02:00
Bram Moolenaar 228e62975e patch 8.2.1526: line in testdir Makefile got commented out
Problem:    Line in testdir Makefile got commented out. (Christian Brabandt)
Solution:   Revert.
2020-08-27 16:06:46 +02:00
Bram Moolenaar 6e3aeec846 patch 8.2.1525: messages from tests were not always displayed
Problem:    Messages from tests were not always displayed.
Solution:   Always show messages, the timing is always useful. (Ken Takata,
            closes #6792)
2020-08-26 22:29:57 +02:00
Bram Moolenaar 2e0866128b patch 8.2.1524: no longer get an error for string concatenation with float
Problem:    No longer get an error for string concatenation with float.
            (Tsuyoshi Cho)
Solution:   Only convert float for Vim9 script. (closes #6787)
2020-08-25 22:37:48 +02:00
Bram Moolenaar b9fc192f92 patch 8.2.1523: still not enough test coverage for the spell file handling
Problem:    Still not enough test coverage for the spell file handling.
Solution:   Add spell file tests. (Yegappan Lakshmanan, closes #6790)
2020-08-25 21:19:36 +02:00
Bram Moolenaar c8ec5fe56f patch 8.2.1522: 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 #6763)
2020-08-24 20:28:56 +02:00
Bram Moolenaar 07399e7f07 patch 8.2.1521: reading past end of buffer when reading spellfile
Problem:    Reading past end of buffer when reading spellfile. (Yegappan
            Lakshmanan)
Solution:   Store the byte length and check for it.
2020-08-24 20:05:50 +02:00
Bram Moolenaar b3ea36c5bc patch 8.2.1520: Vim9: CTRL-] used in :def function does not work
Problem:    Vim9: CTRL-] used in :def function does not work.
Solution:   Omit count or prepend colon. (closes #6769)
2020-08-23 21:46:32 +02:00
Bram Moolenaar c2af0afff5 patch 8.2.1519: Vim9: Ex command default range is not set
Problem:    Vim9: Ex command default range is not set.
Solution:   When range is not given use default. (closes #6779)
2020-08-23 21:06:02 +02:00
Bram Moolenaar 2e80095501 patch 8.2.1518: Vim9: cannot assign to local option
Problem:    Vim9: cannot assign to local option.
Solution:   Skip over "&l:" and "&g:". (closes #6749)
2020-08-23 19:34:48 +02:00
Bram Moolenaar 6c53fca023 patch 8.2.1517: cannot easily get the character under the cursor
Problem:    Cannot easily get the character under the cursor.
Solution:   Add the {chars} argument to strpart().
2020-08-23 17:34:46 +02:00
Bram Moolenaar 430deb1945 patch 8.2.1516: Vim9: error for :exe has wrong line number
Problem:    Vim9: error for :exe has wrong line number.
Solution:   Set line number before calling do_cmdline_cmd(). (closes #6774)
2020-08-23 16:29:11 +02:00
Bram Moolenaar 8436773fad patch 8.2.1515: Vim9: can create s:var in legacy script but cannot unlet
Problem:    Vim9: can create s:var in legacy script but cannot unlet.
Solution:   Allow :unlet for legacy script var.
2020-08-23 15:21:55 +02:00
Bram Moolenaar dc0cf1db3e patch 8.2.1514: multibyte vertical separator is cleared when dragging popup
Problem:    Multibyte vertical separator is cleared when dragging a popup
            window using a multi-byte character for the border.
Solution:   Only clear the character before the window if it is double width.
            (closes #6766)
2020-08-23 15:09:36 +02:00
Bram Moolenaar 0981c8729e patch 8.2.1513: cannot interrupt shell used for filename expansion
Problem:    Cannot interrupt shell used for filename expansion. (Dominique
            Pellé)
Solution:   Do set tmode in mch_delay(). (closes #6770)
2020-08-23 14:28:37 +02:00
ichizok 7c9b86b53d Merge remote-tracking branch 'vim/master' 2020-08-23 21:16:36 +09:00
Bram Moolenaar 69e44552c5 patch 8.2.1512: failure after trinary expression fails
Problem:    Failure after trinary expression fails.
Solution:   Restore eval_flags. (Yasuhiro Matsumoto, closes #6776)
2020-08-22 22:37:20 +02:00
Bram Moolenaar cd94277f72 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Problem:    Putting a string in Visual block mode ignores multi-byte
            characters.
Solution:   Adjust the column for Visual block mode. (closes #6767)
2020-08-22 21:08:44 +02:00
Bram Moolenaar 5390099a97 patch 8.2.1510: using "var" in :def function may refer to legacy script var
Problem:    Using "var" in a :def function may refer to a legacy Vim script
            variable.
Solution:   Require using "s:" to refer to a legacy Vim script variable.
            (closes #6771)
2020-08-22 19:02:02 +02:00
Bram Moolenaar 9943b3d979 patch 8.2.1509: vertical separator is cleared when dragging a popup window
Problem:    Vertical separator is cleared when dragging a popup window using a
            multi-byte character for the border.
Solution:   Only clear the character before the window if it is using a
            multi-byte character. (closes #6766)
2020-08-22 17:21:14 +02:00
Bram Moolenaar c63b72b6dc patch 8.2.1508: not all debugger commands covered by tests
Problem:    Not all debugger commands covered by tests.
Solution:   Add tests for going up/down in the stack. (Ben Jackson,
            closes #6765)
2020-08-22 16:04:52 +02:00
Bram Moolenaar 51b6eb47b3 patch 8.2.1507: using malloc() directly
Problem:    Using malloc() directly.
Solution:   Use ALLOC_ONE().  Remove superfluous typecast.  (Hussam al-Homsi,
            closes #6768)
2020-08-22 15:19:18 +02:00
Bram Moolenaar d70840ed68 patch 8.2.1506: Vim9: no error when using a number other than 0 or 1 as bool
Problem:    Vim9: no error when using a number other than 0 or 1 as bool.
Solution:   Check the number is 0 or 1.
2020-08-22 15:06:35 +02:00
Bram Moolenaar 1b04ce2d40 patch 8.2.1505: not all file read and writecode is tested
Problem:    Not all file read and writecode is tested.
Solution:   Add a few tests. (Dominique Pellé, closes #6764)
2020-08-21 22:46:11 +02:00
Bram Moolenaar 7cb6fc29d0 patch 8.2.1504: Vim9: white space checks are only done for a :def function
Problem:    Vim9: white space checks are only done for a :def function.
Solution:   Also do checks at the script level.  Adjust the name of a few
            error messages.
2020-08-21 22:36:47 +02:00
Bram Moolenaar 81e17fbe00 patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Problem:    Vim9: error for an autocmd defined in a :def function in legacy
            Vim script.
Solution:   Don't check the variable type. (closes #6758)
2020-08-21 21:55:43 +02:00
Bram Moolenaar 122616d9c1 patch 8.2.1502: Vim9: can use += with a :let command at script level
Problem:    Vim9: can use += with a :let command at script level.
Solution:   Give an error.
2020-08-21 21:32:50 +02:00
Bram Moolenaar 3fc71285d5 patch 8.2.1501: Vim9: concatenating to constant reverses order
Problem:    Vim9: concatenating to constant reverses order.
Solution:   Generate constant before option, register and environment
            variable. (closes #6757)
2020-08-21 20:43:17 +02:00
Bram Moolenaar 5d72ce69c8 patch 8.2.1500: Vim9: error when using address without a command
Problem:    Vim9: error when using address without a command.
Solution:   Execute the range itself. (closes #6747)
2020-08-20 23:04:06 +02:00
Bram Moolenaar ec65d77fa2 patch 8.2.1499: Vim9: error when using "$" with col()
Problem:    Vim9: error when using "$" with col().
Solution:   Reorder getting the column value. (closes #6744)
2020-08-20 22:29:12 +02:00
Bram Moolenaar 733d259a83 patch 8.2.1498: on slow systems tests can be flaky
Problem:    On slow systems tests can be flaky.
Solution:   Use TermWait() instead of term-wait(). (Yegappan Lakshmanan,
            closes #6756)
2020-08-20 18:59:06 +02:00
Bram Moolenaar 17f67547f3 patch 8.2.1497: CursorHold test is flaky
Problem:    CursorHold test is flaky. (Jakub Kądziołka)
Solution:   Use WaitForAssert() (closes #6754)
2020-08-20 18:29:13 +02:00
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
Yee Cheng Chin caf7642c4b Merge pull request #1077 from ychin/add-EdDSA-sparkle-pubic-key
Add EdDSA key for Sparkle updater, as the old DSA path is deprecated
2020-08-15 21:22:04 -07:00
Yee Cheng Chin 53cd31388e Add EdDSA key for Sparkle updater, as the old DSA path is deprecated 2020-08-15 15:43:27 -07: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
349 changed files with 26229 additions and 8224 deletions
+152
View File
@@ -0,0 +1,152 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# You can use github users with @user or email addresses
# These owners will be the default owners for everything in the repo.
#* @brammool
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
src/iscygpty.* @k-takata
src/libvterm/ @leonerd
runtime/autoload/getscript.vim @cecamp
runtime/autoload/netrw.vim @cecamp
runtime/autoload/netrwFileHandlers.vim @cecamp
runtime/autoload/netrwSettings.vim @cecamp
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/tar.vim @cecamp
runtime/autoload/vimball.vim @cecamp
runtime/autoload/zip.vim @cecamp
runtime/compiler/checkstyle.vim @dkearns
runtime/compiler/cucumber.vim @tpope
runtime/compiler/dart.vim @dkearns
runtime/compiler/dart2js.vim @dkearns
runtime/compiler/dart2native.vim @dkearns
runtime/compiler/dartanalyser.vim @dkearns
runtime/compiler/dartdevc.vim @dkearns
runtime/compiler/dartdoc.vim @dkearns
runtime/compiler/dartfmt.vim @dkearns
runtime/compiler/eruby.vim @dkearns
runtime/compiler/gawk.vim @dkearns
runtime/compiler/gjs.vim @dkearns
runtime/compiler/haml.vim @tpope
runtime/compiler/javac.vim @dkearns
runtime/compiler/jest.vim @dkearns
runtime/compiler/jjs.vim @dkearns
runtime/compiler/jshint.vim @dkearns
runtime/compiler/jsonlint.vim @dkearns
runtime/compiler/php.vim @dkearns
runtime/compiler/rake.vim @tpope @dkearns
runtime/compiler/rhino.vim @dkearns
runtime/compiler/rspec.vim @tpope @dkearns
runtime/compiler/rubocop.vim @dkearns
runtime/compiler/ruby.vim @tpope @dkearns
runtime/compiler/rubyunit.vim @dkearns
runtime/compiler/sass.vim @tpope
runtime/compiler/se.vim @dkearns
runtime/compiler/stylelint.vim @dkearns
runtime/compiler/tcl.vim @dkearns
runtime/compiler/tidy.vim @dkearns
runtime/compiler/ts-node.vim @dkearns
runtime/compiler/tsc.vim @dkearns
runtime/compiler/typedoc.vim @dkearns
runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
runtime/doc/pi_getscript.txt @cecamp
runtime/doc/pi_logipat.txt @cecamp
runtime/doc/pi_netrw.txt @cecamp
runtime/doc/pi_tar.txt @cecamp
runtime/doc/pi_vimball.txt @cecamp
runtime/doc/pi_zip.txt @cecamp
runtime/ftplugin/bst.vim @tpope
runtime/ftplugin/css.vim @dkearns
runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/eiffel.vim @dkearns
runtime/ftplugin/eruby.vim @tpope @dkearns
runtime/ftplugin/git.vim @tpope
runtime/ftplugin/gitcommit.vim @tpope
runtime/ftplugin/gitconfig.vim @tpope
runtime/ftplugin/gitrebase.vim @tpope
runtime/ftplugin/gitsendemail.vim @tpope
runtime/ftplugin/haml.vim @tpope
runtime/ftplugin/hgcommit.vim @k-takata
runtime/ftplugin/javascript.vim @dkearns
runtime/ftplugin/javascriptreact.vim @dkearns
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/matlab.vim @cecamp
runtime/ftplugin/nsis.vim @k-takata
runtime/ftplugin/pdf.vim @tpope
runtime/ftplugin/ruby.vim @tpope @dkearns
runtime/ftplugin/sass.vim @tpope
runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/tmux.vim @ericpruitt
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/indent/bst.vim @tpope
runtime/indent/cucumber.vim @tpope
runtime/indent/dosbatch.vim @k-takata
runtime/indent/eruby.vim @tpope @dkearns
runtime/indent/gitconfig.vim @tpope
runtime/indent/haml.vim @tpope
runtime/indent/liquid.vim @tpope
runtime/indent/nsis.vim @k-takata
runtime/indent/ruby.vim @AndrewRadev @dkearns
runtime/indent/sass.vim @tpope
runtime/indent/scss.vim @tpope
runtime/indent/teraterm.vim @k-takata
runtime/plugin/getscriptPlugin.vim @cecamp
runtime/plugin/logiPat.vim @cecamp
runtime/plugin/netrwPlugin.vim @cecamp
runtime/plugin/tarPlugin.vim @cecamp
runtime/plugin/vimballPlugin.vim @cecamp
runtime/plugin/zipPlugin.vim @cecamp
runtime/syntax/amiga.vim @cecamp
runtime/syntax/bst.vim @tpope
runtime/syntax/csh.vim @cecamp
runtime/syntax/cucumber.vim @tpope
runtime/syntax/dcl.vim @cecamp
runtime/syntax/elmfilt.vim @cecamp
runtime/syntax/eruby.vim @tpope @dkearns
runtime/syntax/exports.vim @cecamp
runtime/syntax/git.vim @tpope
runtime/syntax/gitcommit.vim @tpope
runtime/syntax/gitconfig.vim @tpope
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/haml.vim @tpope
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/lex.vim @cecamp
runtime/syntax/liquid.vim @tpope
runtime/syntax/lisp.vim @cecamp
runtime/syntax/lynx.vim @dkearns
runtime/syntax/mailcap.vim @dkearns
runtime/syntax/make.vim @rohieb
runtime/syntax/make.vim @rohieb
runtime/syntax/maple.vim @cecamp
runtime/syntax/markdown.vim @tpope
runtime/syntax/netrw.vim @cecamp
runtime/syntax/nsis.vim @k-takata
runtime/syntax/pdf.vim @tpope
runtime/syntax/php.vim @TysonAndre
runtime/syntax/privoxy.vim @dkearns
runtime/syntax/rpcgen.vim @cecamp
runtime/syntax/ruby.vim @dkearns
runtime/syntax/sass.vim @tpope
runtime/syntax/scss.vim @tpope
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/tags.vim @cecamp
runtime/syntax/teraterm.vim @k-takata
runtime/syntax/tex.vim @cecamp
runtime/syntax/tidy.vim @dkearns
runtime/syntax/tmux.vim @ericpruitt
runtime/syntax/vim.vim @cecamp
runtime/syntax/wget.vim @dkearns
runtime/syntax/xbl.vim @dkearns
runtime/syntax/xmath.vim @cecamp
runtime/syntax/xslt.vim @Boobies
runtime/syntax/xxd.vim @cecamp
runtime/syntax/yacc.vim @cecamp
+5 -4
View File
@@ -127,6 +127,11 @@ jobs:
)
goto :eof
- name: Copy src directory to src2
shell: cmd
run: |
xcopy src src2\ /E > nul
- name: Build (MSVC)
if: matrix.toolchain == 'msvc'
shell: cmd
@@ -196,10 +201,6 @@ jobs:
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"
+6 -1
View File
@@ -10,6 +10,7 @@ SRC_ALL = \
.travis.yml \
.cirrus.yml \
.github/workflows/ci-windows.yaml \
.github/CODEOWNERS \
appveyor.yml \
ci/appveyor.bat \
ci/if_ver*.vim \
@@ -74,6 +75,7 @@ SRC_ALL = \
src/highlight.c \
src/indent.c \
src/insexpand.c \
src/job.c \
src/json.c \
src/json_test.c \
src/kword_test.c \
@@ -249,6 +251,7 @@ SRC_ALL = \
src/proto/highlight.pro \
src/proto/indent.pro \
src/proto/insexpand.pro \
src/proto/job.pro \
src/proto/json.pro \
src/proto/list.pro \
src/proto/locale.pro \
@@ -620,7 +623,7 @@ SRC_AMI = \
README_amisrc.txt.info \
src.info \
src/INSTALLami.txt \
src/Make_morph.mak \
src/Make_ami.mak \
src/os_amiga.c \
src/os_amiga.h \
src/proto/os_amiga.pro \
@@ -1028,6 +1031,8 @@ LANG_SRC = \
src/po/README_mvc.txt \
src/po/check.vim \
src/po/cleanup.vim \
src/po/tojavascript.vim \
src/po/fixfilenames.vim \
src/po/Makefile \
src/po/Make_all.mak \
src/po/Make_cyg.mak \
+1 -1
View File
@@ -98,7 +98,7 @@ Instead of using script language support in Vim:
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
+1 -1
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
+1
View File
@@ -174,6 +174,7 @@ Page custom SetCustom ValidateCustom
!include "lang\german.nsi"
!include "lang\italian.nsi"
!include "lang\japanese.nsi"
!include "lang\russian.nsi"
!include "lang\simpchinese.nsi"
!include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"
+3 -3
View File
@@ -58,10 +58,10 @@ LangString str_desc_console ${LANG_ITALIAN} \
"Versione console di Vim (vim.exe)."
LangString str_section_batch ${LANG_ITALIAN} \
"Crea file di invocazione (MS-DOS) .bat"
"Crea file .bat"
LangString str_desc_batch ${LANG_ITALIAN} \
"Crea file di invocazione .bat per varianti di Vim nella directory \
di Windows, per utilizzo da linea di comando (MS-DOS)."
"Crea file .bat per varianti di Vim nella directory \
di Windows, per utilizzo da riga di comando."
LangString str_group_icons ${LANG_ITALIAN} \
"Crea icone per Vim"
+287
View File
@@ -0,0 +1,287 @@
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
#
# russian.nsi: Russian language strings for gvim NSIS installer.
#
# Locale ID : 1049
# Locale name : ru-RU
# fileencoding : UTF-8
# Author : Restorer
!insertmacro MUI_LANGUAGE "Русский"
# Overwrite the default translation.
# These strings should be always English. Otherwise dosinst.c fails.
LangString ^SetupCaption ${LANG_RUSSIAN} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_RUSSIAN} \
"$(^Name) Uninstall"
##############################################################################
# MUI Configuration Strings {{{1
##############################################################################
#LangString str_dest_folder ${LANG_RUSSIAN} \
# "Маршрут к каталогу установки (должен оканчиваться каталогом $\"vim$\")"
LangString str_show_readme ${LANG_RUSSIAN} \
"После окончания установки ознакомиться с кратким описанием"
# Install types:
LangString str_type_typical ${LANG_RUSSIAN} \
"Стандартная"
LangString str_type_minimal ${LANG_RUSSIAN} \
"Минимальная"
LangString str_type_full ${LANG_RUSSIAN} \
"Полная"
##############################################################################
# Section Titles & Description {{{1
##############################################################################
LangString str_section_old_ver ${LANG_RUSSIAN} \
"Удаление предыдущих версий"
LangString str_desc_old_ver ${LANG_RUSSIAN} \
"Будут удалены предыдущие установленные версии программы"
LangString str_section_exe ${LANG_RUSSIAN} \
"Графический интерфейс и вспомогательные файлы"
LangString str_desc_exe ${LANG_RUSSIAN} \
"Графический интерфейс программы Vim и все необходимые для этого файлы. \
Это обязательный компонент"
LangString str_section_console ${LANG_RUSSIAN} \
"Консольная программа Vim"
LangString str_desc_console ${LANG_RUSSIAN} \
"Вариант редактора Vim (vim.exe), используемый в командной оболочке"
LangString str_section_batch ${LANG_RUSSIAN} \
"Создать командные файлы"
LangString str_desc_batch ${LANG_RUSSIAN} \
"Создание командных bat-файлов позволяющих работать с редактором \
Vim из командной строки Windows"
LangString str_group_icons ${LANG_RUSSIAN} \
"Создать ярлыки для редактора Vim"
LangString str_desc_icons ${LANG_RUSSIAN} \
"Создание ярлыков редактора Vim для облегчения запуска программы"
LangString str_section_desktop ${LANG_RUSSIAN} \
"На Рабочем столе"
LangString str_desc_desktop ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim на Рабочем столе"
LangString str_section_start_menu ${LANG_RUSSIAN} \
"В меню кнопки Пуск"
LangString str_desc_start_menu ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim в меню кнопки Пуск"
#LangString str_section_quick_launch ${LANG_RUSSIAN} \
# "На панели быстрого запуска"
#LangString str_desc_quick_launch ${LANG_RUSSIAN} \
# "Создание ярлыков программы GVim на панели быстрого запуска"
LangString str_section_edit_with ${LANG_RUSSIAN} \
"В контекстном меню"
LangString str_desc_edit_with ${LANG_RUSSIAN} \
"Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню"
#LangString str_section_edit_with32 ${LANG_RUSSIAN} \
# "32-разрядная версия программы"
#LangString str_desc_edit_with32 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 32-разрядных приложений"
#LangString str_section_edit_with64 ${LANG_RUSSIAN} \
# "64-разрядная версия программы"
#LangString str_desc_edit_with64 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 64-разрядных приложений"
LangString str_section_vim_rc ${LANG_RUSSIAN} \
"Настройки программы по умолчанию"
LangString str_desc_vim_rc ${LANG_RUSSIAN} \
"Создание файла _vimrc с предустановленными настройками, если нет других \
файлов настроек"
LangString str_group_plugin ${LANG_RUSSIAN} \
"Создать каталог для подключаемых модулей"
LangString str_desc_plugin ${LANG_RUSSIAN} \
"Создание каталога для размещения подключаемых модулей, которые расширяют \
возможности редактора Vim"
LangString str_section_plugin_home ${LANG_RUSSIAN} \
"Личный каталог"
LangString str_desc_plugin_home ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в домашнем каталоге пользователя"
LangString str_section_plugin_vim ${LANG_RUSSIAN} \
"Общий каталог"
LangString str_desc_plugin_vim ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в каталоге установки редактора Vim. \
Модули в этом каталоге будут доступны для любого пользователя \
зарегистрировавшегося в системе"
LangString str_section_vis_vim ${LANG_RUSSIAN} \
"Подключаемый модуль VisVim"
LangString str_desc_vis_vim ${LANG_RUSSIAN} \
"Подключаемый модуль VisVim используется для интеграции с Microsoft Visual Studio"
LangString str_section_nls ${LANG_RUSSIAN} \
"Поддержка региональных языков"
LangString str_desc_nls ${LANG_RUSSIAN} \
"Установка файлов для поддержки региональных языков операционной системы"
LangString str_unsection_register ${LANG_RUSSIAN} \
"Отменить регистрацию компонентов программы Vim"
LangString str_desc_unregister ${LANG_RUSSIAN} \
"Отмена регистрации компонентов программы Vim в операционной системе"
LangString str_unsection_exe ${LANG_RUSSIAN} \
"Удалить файлы редактора Vim"
LangString str_desc_rm_exe ${LANG_RUSSIAN} \
"Удаление всех исполняемых и вспомогательных файлов редактора Vim"
LangString str_ungroup_plugin ${LANG_RUSSIAN} \
"Удалить каталог подключаемых модулей"
LangString str_desc_rm_plugin ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей, если в нём нет файлов"
LangString str_unsection_plugin_home ${LANG_RUSSIAN} \
"Личный каталог"
LangString str_desc_rm_plugin_home ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей из домашнего каталога пользователя"
LangString str_unsection_plugin_vim ${LANG_RUSSIAN} \
"Общий каталог"
LangString str_desc_rm_plugin_vim ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей из каталога установки редактора Vim"
LangString str_unsection_rootdir ${LANG_RUSSIAN} \
"Удалить основной каталог программы Vim"
LangString str_desc_rm_rootdir ${LANG_RUSSIAN} \
"Удаление основного каталога программы Vim. В этом каталоге находятся файлы \
настроек!"
##############################################################################
# Messages {{{1
##############################################################################
#LangString str_msg_too_many_ver ${LANG_RUSSIAN} \
# "Обнаружено предыдущих версий программы Vim: $vim_old_ver_count.$\r$\n\
# Данная программа установки может удалить не более ${VIM_MAX_OLD_VER}.$\r$\n\
# Удалить лишние версии программы Vim и повторите установку"
#LangString str_msg_invalid_root ${LANG_RUSSIAN} \
# "Недопустимый каталог установки программы Vim $vim_install_root!$\r$\n\
# Маршрут установки должен оканчиваться каталогом $\"vim$\""
#LangString str_msg_bin_mismatch ${LANG_RUSSIAN} \
# "Недопустимый маршрут к каталогу с исполняемыми файлами!$\r$\n$\r$\n\
# Маршрут к каталогу с исполняемыми файлами должен быть $\"$vim_bin_path$\",$\r$\n\
# но от операционной системы получен как $\"$INSTDIR$\"."
#LangString str_msg_vim_running ${LANG_RUSSIAN} \
# "Программа Vim сейчас работает.$\r$\n\
# Прежде чем продолжить, закройте все работающие редакторы Vim"
#LangString str_msg_register_ole ${LANG_RUSSIAN} \
# "Попытка зарегистрировать компоненты программы Vim в пространстве OLE. \
# Но не получено уведомление об успешности данной операции"
#LangString str_msg_unreg_ole ${LANG_RUSSIAN} \
# "Попытка отменить регистрацию компонентов программы Vim в пространстве OLE. \
# Но не получено уведомление об успешности данной операции"
#LangString str_msg_rm_start ${LANG_RUSSIAN} \
# "Выполняется удаление следующих версий программы:"
#LangString str_msg_rm_fail ${LANG_RUSSIAN} \
# "Произошёл сбой при выполнении удаления следующих версий программы:"
#LangString str_msg_no_rm_key ${LANG_RUSSIAN} \
# "Не удалось найти раздел реестра, содержащий информацию об удалении программы"
#LangString str_msg_no_rm_reg ${LANG_RUSSIAN} \
# "Не удалось найти программу выполняющую удаление, указанную в разделе реестра"
#LangString str_msg_no_rm_exe ${LANG_RUSSIAN} \
# "Отсутствуют права на доступ к программе, выполняющей удаление"
#LangString str_msg_rm_copy_fail ${LANG_RUSSIAN} \
# "Произошла ошибка при копировании программы удаления во временный каталог"
#LangString str_msg_rm_run_fail ${LANG_RUSSIAN} \
# "Произошёл сбой при запуске программы, выполняющей удаление"
#LangString str_msg_abort_install ${LANG_RUSSIAN} \
# "Установка программы была отменена"
LangString str_msg_install_fail ${LANG_RUSSIAN} \
"Произошла ошибка при установке программы. Попробуйте повторить установку \
немного попозже"
# когда луна будет в другой фазе и ветер должен дуть с юго‐запада
LangString str_msg_rm_exe_fail ${LANG_RUSSIAN} \
"Некоторые файлы не были удалены из каталога $0 $\r$\n\
Необходимо выполнить их удаление самостоятельно"
#LangString str_msg_rm_root_fail ${LANG_RUSSIAN} \
# "Внимание! В каталоге $\"$vim_install_root$\" содержатся файлы. Удаление каталога не выполнено"
LangString str_msg_uninstalling ${LANG_RUSSIAN} \
"Удаление предыдущих версий программ..."
LangString str_msg_registering ${LANG_RUSSIAN} \
"Регистрация компонентов программы в системе..."
LangString str_msg_unregistering ${LANG_RUSSIAN} \
"Отмена регистрации компонентов программы в системе..."
##############################################################################
# Dialog Box {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_RUSSIAN} \
"Установка параметров программы"
LangString str_vimrc_page_subtitle ${LANG_RUSSIAN} \
"Параметры, используемые для клавиатуры, «мыши» и функциональности программы"
LangString str_msg_compat_title ${LANG_RUSSIAN} \
" Варианты использования программы "
LangString str_msg_compat_desc ${LANG_RUSSIAN} \
"Совместимость и функциональность программы"
LangString str_msg_compat_vi ${LANG_RUSSIAN} \
"Работа в варианте совместимости с редактором Vi"
LangString str_msg_compat_vim ${LANG_RUSSIAN} \
"Работа в варианте функциональности редактора Vim"
LangString str_msg_compat_defaults ${LANG_RUSSIAN} \
"Работа редактора Vim с некоторыми улучшениями (файл defaults.vim)"
LangString str_msg_compat_all ${LANG_RUSSIAN} \
"Работа редактора Vim со всеми улучшениями (файл vimrc_example.vim). \
Используется по умолчанию"
LangString str_msg_keymap_title ${LANG_RUSSIAN} \
" Клавиатурные команды "
LangString str_msg_keymap_desc ${LANG_RUSSIAN} \
"Клавиатурные команды используемые в ОС Windows (CTRL+V, CTRL+C, CTRL+S, CTRL+F и т. п.)"
LangString str_msg_keymap_default ${LANG_RUSSIAN} \
"Не изменять клавиатурные команды. Использовать принятые в редакторе Vim"
LangString str_msg_keymap_windows ${LANG_RUSSIAN} \
"Изменить указанные клавиатурные команды"
LangString str_msg_mouse_title ${LANG_RUSSIAN} \
" Манипулятор «мышь» "
LangString str_msg_mouse_desc ${LANG_RUSSIAN} \
"Действий правой и левой кнопки манипулятора «мышь»"
LangString str_msg_mouse_default ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим визуальный"
LangString str_msg_mouse_windows ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим выборки (как в ОС Windows)"
LangString str_msg_mouse_unix ${LANG_RUSSIAN} \
"Правая кнопка — расширяемый режим выбора, левая кнопка — режим визуальный (как в UNIX‐подобных ОС)"
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Mar 30
" Last Change: 2020 Aug 17
" These functions are moved here from runtime/filetype.vim to make startup
" faster.
@@ -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
+89 -37
View File
@@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
" Date: Jan 07, 2020
" Version: 168
" Date: Sep 18, 2020
" Version: 170
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
@@ -43,7 +43,7 @@ if exists("s:needspatches")
endfor
endif
let g:loaded_netrw = "v168"
let g:loaded_netrw = "v170"
if !exists("s:NOTE")
let s:NOTE = 0
let s:WARNING = 1
@@ -86,7 +86,16 @@ fun! netrw#ErrorMsg(level,msg,errnum)
endif
" call Decho("level=".level,'~'.expand("<slnum>"))
if g:netrw_use_errorwindow
if g:netrw_use_errorwindow == 2 && (v:version > 802 || (v:version == 802 && has("patch486")))
" use popup window
if type(a:msg) == 3
let msg = [level]+a:msg
else
let msg= level.a:msg
endif
let s:popuperr_id = popup_beval(msg,{})
let s:popuperr_text= ""
elseif g:netrw_use_errorwindow
" (default) netrw creates a one-line window to show error/warning
" messages (reliably displayed)
@@ -203,7 +212,11 @@ let g:netrw_localrmdiropt = ""
" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
call s:NetrwInit("g:netrw_use_errorwindow",1)
if (v:version > 802 || (v:version == 802 && has("patch486"))) && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on") && has("mouse")
call s:NetrwInit("g:netrw_use_errorwindow",2)
else
call s:NetrwInit("g:netrw_use_errorwindow",1)
endif
if !exists("g:netrw_dav_cmd")
if executable("cadaver")
@@ -559,6 +572,7 @@ call s:NetrwInit("s:netrw_posn",'{}')
if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
" call Decho("installed beval events",'~'.expand("<slnum>"))
let &l:bexpr = "netrw#BalloonHelp()"
" call Decho("&l:bexpr<".&l:bexpr."> buf#".bufnr())
au FileType netrw setl beval
au WinLeave * if &ft == "netrw" && exists("s:initbeval")|let &beval= s:initbeval|endif
au VimEnter * let s:initbeval= &beval
@@ -591,7 +605,18 @@ if v:version >= 700 && has("balloon_eval") && has("syntax") && exists("g:syntax_
if &ft != "netrw"
return ""
endif
if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
if exists("s:popuperr_id") && popup_getpos(s:popuperr_id) != {}
" popup error window is still showing
" s:pouperr_id and s:popuperr_text are set up in netrw#ErrorMsg()
if exists("s:popuperr_text") && s:popuperr_text != "" && v:beval_text != s:popuperr_text
" text under mouse hasn't changed; only close window when it changes
call popup_close(s:popuperr_id)
unlet s:popuperr_text
else
let s:popuperr_text= v:beval_text
endif
let mesg= ""
elseif !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
let mesg= ""
elseif v:beval_text == "Netrw" || v:beval_text == "Directory" || v:beval_text == "Listing"
let mesg = "i: thin-long-wide-tree gh: quick hide/unhide of dot-files qf: quick file info %:open new file"
@@ -1247,6 +1272,10 @@ fun! netrw#Lexplore(count,rightside,...)
setlocal winfixwidth
let g:netrw_altv = keep_altv
let t:netrw_lexbufnr = bufnr("%")
" done to prevent build-up of hidden buffers due to quitting and re-invocation of :Lexplore.
" Since the intended use of :Lexplore is to have an always-present explorer window, the extra
" effort to mis-use :Lex is warranted.
set bh=wipe
" call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr)
" call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a"))
if exists("t:netrw_lexposn")
@@ -1908,7 +1937,7 @@ fun! s:NetrwRestoreSetting(keepvar,setting)
if type(a:setting) == 0
exe "let ".a:setting."= ".keepvarval
elseif type(a:setting) == 1
exe "let ".a:setting."= '".keepvarval."'"
exe "let ".a:setting."= '".substitute(keepvarval,"'","''","g")."'"
else
call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
endif
@@ -3640,6 +3669,8 @@ fun! s:NetrwBookHistSave()
let savefile= s:NetrwHome()."/.netrwhist"
" call Decho("savefile<".savefile.">",'~'.expand("<slnum>"))
1split
" setting up a new buffer which will become .netrwhist
call s:NetrwEnew()
" call Decho("case g:netrw_use_noswf=".g:netrw_use_noswf.(exists("+acd")? " +acd" : " -acd"),'~'.expand("<slnum>"))
if g:netrw_use_noswf
@@ -4722,7 +4753,7 @@ endfun
" "new directory name" is actually a file,
" NetrwBrowseChgDir() edits the file.
fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." win#".winnr()." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
" call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
let ykeep= @@
@@ -4751,13 +4782,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let newdir = a:newdir
let dolockout = 0
let dorestore = 1
" call Decho("win#".winnr(),'~'.expand("<slnum>"))
" call Decho("dirname<".dirname.">",'~'.expand("<slnum>"))
" call Decho("newdir<".newdir.">",'~'.expand("<slnum>"))
" ignore <cr>s when done in the banner
" call Decho('(s:NetrwBrowseChgDir) ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>"))
if g:netrw_banner
" call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
" call Decho("win#".winnr()." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt
if getline(".") =~# 'Quick Help'
" call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
@@ -4794,7 +4826,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" ------------------------------
" NetrwBrowseChgDir: edit a file {{{3
" ------------------------------
" call Decho('(s:NetrwBrowseChgDir) edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
" call Decho('edit-a-file: case "handling a file": win#'.winnr().' newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
" save position for benefit of Rexplore
let s:rexposn_{bufnr("%")}= winsaveview()
@@ -4829,7 +4861,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
NetrwKeepj call s:NetrwOptionsRestore("s:")
let curdir= b:netrw_curdir
if !exists("s:didsplit")
" call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>"))
" " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr()." g:netrw_chgwin=".g:netrw_chgwin",'~'.expand("<slnum>"))
if type(g:netrw_browse_split) == 3
" open file in server
" Note that g:netrw_browse_split is a List: [servername,tabnr,winnr]
@@ -4837,22 +4869,27 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
call s:NetrwServerEdit(a:islocal,dirname)
" call Dret("s:NetrwBrowseChgDir")
return
elseif g:netrw_browse_split == 1
" horizontally splitting the window first
" call Decho("edit-a-file: horizontally splitting window prior to edit",'~'.expand("<slnum>"))
keepalt new
let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
exe "keepalt ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
if !&ea
keepalt wincmd _
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 2
" vertically splitting the window first
" call Decho("edit-a-file: vertically splitting window prior to edit",'~'.expand("<slnum>"))
keepalt rightb vert new
let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
exe "keepalt ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
if !&ea
keepalt wincmd |
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 3
" open file in new tab
" call Decho("edit-a-file: opening new tab prior to edit",'~'.expand("<slnum>"))
@@ -4861,6 +4898,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let b:netrw_curdir= getcwd()
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 4
" act like "P" (ie. open previous window)
" call Decho("edit-a-file: use previous window for edit",'~'.expand("<slnum>"))
@@ -4870,13 +4908,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
return
endif
call s:SetRexDir(a:islocal,curdir)
else
" handling a file, didn't split, so remove menu
" call Decho("edit-a-file: handling a file+didn't split, so remove menu",'~'.expand("<slnum>"))
call s:NetrwMenu(0)
" optional change to window
if g:netrw_chgwin >= 1
" call Decho("edit-a-file: changing window to #".g:netrw_chgwin,'~'.expand("<slnum>"))
" call Decho("edit-a-file: changing window to #".g:netrw_chgwin.": (due to g:netrw_chgwin)",'~'.expand("<slnum>"))
if winnr("$")+1 == g:netrw_chgwin
" if g:netrw_chgwin is set to one more than the last window, then
" vertically split the last window to make that window available.
@@ -4889,19 +4928,26 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
endif
call s:SetRexDir(a:islocal,curdir)
endif
endif
" the point where netrw actually edits the (local) file
" if its local only: LocalBrowseCheck() doesn't edit a file, but NetrwBrowse() will
" no keepalt to support :e # to return to a directory listing
if !&mod
" if e the new file would fail due to &mod, then don't change any of the flags
let dolockout= 1
endif
if a:islocal
" call Decho("edit-a-file: edit local file: exe e! ".fnameescape(dirname),'~'.expand("<slnum>"))
" some like c-^ to return to the last edited file
" others like c-^ to return to the netrw buffer
" Apr 30, 2020: used to have e! here. That can cause loss of a modified file,
" so emit error E37 instead.
if exists("g:netrw_altfile") && g:netrw_altfile
exe "NetrwKeepj keepalt e! ".fnameescape(dirname)
exe "NetrwKeepj keepalt e ".fnameescape(dirname)
else
exe "NetrwKeepj e! ".fnameescape(dirname)
exe "NetrwKeepj e ".fnameescape(dirname)
endif
" call Decho("edit-a-file: after e! ".dirname.": hidden=".&hidden." bufhidden<".&bufhidden."> mod=".&mod,'~'.expand("<slnum>"))
call s:NetrwCursor()
@@ -4912,7 +4958,6 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
else
" call Decho("edit-a-file: remote file: NetrwBrowse will edit it",'~'.expand("<slnum>"))
endif
let dolockout= 1
" handle g:Netrw_funcref -- call external-to-netrw functions
" This code will handle g:Netrw_funcref as an individual function reference
@@ -5376,16 +5421,6 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error
elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
let ret= v:shell_error
elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
" call Decho("(netrw#BrowseX) unix and atril",'~'.expand("<slnum>"))
if a:fname =~ '^https\=://'
@@ -5400,9 +5435,19 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error
elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir.'&')
let ret= v:shell_error
elseif has("unix") && executable("xdg-open")
" call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir.'&')
let ret= v:shell_error
elseif has("macunix") && executable("open")
@@ -6107,10 +6152,10 @@ fun! s:NetrwListHide()
" Duplicate characters don't matter.
" Remove all such characters from the '/~@#...890' string.
" Use the first character left as a separator character.
" call Decho("find a character not in the hide string to use as a separator")
" call Decho("find a character not in the hide string to use as a separator",'~'.expand("<slnum>"))
let listhide= g:netrw_list_hide
let sep = strpart(substitute('~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
" call Decho("sep=".sep," (sep not in hide string)'~'.expand("<slnum>"))
" call Decho("sep<".sep."> (sep not in hide string)",'~'.expand("<slnum>"))
while listhide != ""
if listhide =~ ','
@@ -6120,7 +6165,7 @@ fun! s:NetrwListHide()
let hide = listhide
let listhide = ""
endif
" call Decho("..extracted from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
" call Decho("..extracted pattern from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
if g:netrw_sort_by =~ '^[ts]'
if hide =~ '^\^'
" call Decho("..modify hide to handle a \"^...\" pattern",'~'.expand("<slnum>"))
@@ -6132,7 +6177,7 @@ fun! s:NetrwListHide()
endif
" Prune the list by hiding any files which match
" call Decho("..prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">")
" call Decho("..prune the list by hiding any files which ".((g:netrw_hide == 1)? "" : "don't")."match hide<".hide.">")
if g:netrw_hide == 1
" call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
@@ -9215,6 +9260,7 @@ endfun
" (full path directory with trailing slash returned)
fun! s:NetrwTreeDir(islocal)
" call Dfunc("s:NetrwTreeDir(islocal=".a:islocal.") getline(".line(".").")"."<".getline('.')."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft)
" call Decho("Determine tree directory given current cursor position")
" call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_treetop =".(exists("w:netrw_treetop")? w:netrw_treetop : 'n/a'),'~'.expand("<slnum>"))
@@ -9320,7 +9366,6 @@ fun! s:NetrwTreeDisplay(dir,depth)
call setline(line("$")+1,a:depth.shortdir.'/')
endif
" call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">",'~'.expand("<slnum>"))
" append a / to dir if its missing one
let dir= a:dir
@@ -9334,7 +9379,7 @@ fun! s:NetrwTreeDisplay(dir,depth)
let listhide= split(g:netrw_list_hide,',')
" call Decho("listhide=".string(listhide))
for pat in listhide
call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"')
call filter(w:netrw_treedict[dir],'v:val !~ "'.escape(pat,'\\').'"')
endfor
elseif g:netrw_hide == 2
@@ -9472,6 +9517,7 @@ fun! s:NetrwTreeListing(dirname)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
" display from treetop on down
" call Decho("(s:NetrwTreeListing) w:netrw_treetop<".w:netrw_treetop.">")
NetrwKeepj call s:NetrwTreeDisplay(w:netrw_treetop,"")
" call Decho("s:NetrwTreeDisplay) setl noma nomod ro",'~'.expand("<slnum>"))
@@ -9742,7 +9788,7 @@ fun! s:PerformListing(islocal)
" Hiding... -or- Showing... {{{3
if g:netrw_banner
" call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
" call Decho("--handle hiding/showing in banner (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
if g:netrw_list_hide != "" && g:netrw_hide
if g:netrw_hide == 1
NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide
@@ -9795,7 +9841,7 @@ fun! s:PerformListing(islocal)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
if !g:netrw_banner || line("$") >= w:netrw_bannercnt
" call Decho("manipulate directory listing (hide)",'~'.expand("<slnum>"))
" call Decho("manipulate directory listing (support hide)",'~'.expand("<slnum>"))
" call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">",'~'.expand("<slnum>"))
if g:netrw_hide && g:netrw_list_hide != ""
NetrwKeepj call s:NetrwListHide()
@@ -11808,7 +11854,7 @@ endfun
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
fun! s:NetrwEnew(...)
" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
" call Dfunc("s:NetrwEnew() a:0=".a:0." win#".winnr()." winnr($)=".winnr("$")." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
" call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
" grab a function-local-variable copy of buffer variables
@@ -11875,6 +11921,9 @@ fun! s:NetrwEnew(...)
endif
endif
endif
if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
let &l:bexpr = "netrw#BalloonHelp()"
endif
" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
endfun
@@ -11934,6 +11983,7 @@ endfun
" -1=failed
fun! s:NetrwLcd(newdir)
" call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
" call Decho("changing local directory",'~'.expand("<slnum>"))
let err472= 0
try
@@ -11969,6 +12019,8 @@ fun! s:NetrwLcd(newdir)
return -1
endif
" call Decho("getcwd <".getcwd().">")
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
" call Dret("s:NetrwLcd 0")
return 0
endfun
+3 -3
View File
@@ -1,8 +1,8 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell
" Date: May 03, 2013
" Version: 11b ASTRO-ONLY
" Date: Sep 18, 2020
" Version: 11
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -20,7 +20,7 @@
if exists("g:loaded_netrwFileHandlers") || &cp
finish
endif
let g:loaded_netrwFileHandlers= "v11b"
let g:loaded_netrwFileHandlers= "v11"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
+1 -1
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'
+15 -5
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
+26
View File
@@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Dart VM
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart"
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=dart
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+28
View File
@@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart to JavaScript Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart2js"
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=dart2js
CompilerSet errorformat=%E%f:%l:%c:,
\%-GError:\ Compilation\ failed.,
\%CError:\ %m,
\%Z\ %#^%\\+,
\%C%.%#,
\%trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+28
View File
@@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart to Native Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart2native"
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=dart2native
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%Z%$,
\%C%.%#,
\%E%f:\ %trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+23
View File
@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Dart Analyzer
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartanalyzer"
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=dartanalyzer\ --format\ machine
CompilerSet errorformat=%t%\\w%\\+\|%\\w%\\+\|%\\w%\\+\|%f\|%l\|%c\|%\\d%\\+\|%m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+28
View File
@@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart Development Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartdevc"
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=dartdevc
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%Z%$,
\%C%.%#,
\%E%f:\ %trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+26
View File
@@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Dart Documentation Generator
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartdoc"
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=dartdoc
CompilerSet errorformat=\ \ %tarning:\ %m,
\\ \ %trror:\ %m,
\%+EGeneration\ failed:\ %m,
\%+ISuccess!\ Docs\ generated\ into\ %f,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+25
View File
@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: Dart Formatter
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartfmt"
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=dartfmt
CompilerSet errorformat=%Eline\ %l\\,\ column\ %c\ of\ %f:\ %m,
\%Z\ %\\{3}│\ %\\+^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: ESLint for JavaScript
" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
" Last Change: 2020 May 17
" Last Change: 2020 August 20
if exists("current_compiler")
finish
@@ -12,5 +12,5 @@ if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=eslint\ --format\ compact
CompilerSet makeprg=npx\ eslint\ --format\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%#
+34
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
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
+13 -4
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: javac
" Compiler: Java Development Kit Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2004 Nov 27
" Last Change: 2019 Oct 21
if exists("current_compiler")
finish
@@ -12,6 +12,15 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=javac
let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
CompilerSet makeprg=javac
CompilerSet errorformat=%E%f:%l:\ error:\ %m,
\%W%f:%l:\ warning:\ %m,
\%-Z%p^,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+30
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
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
+25
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
+25
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
+30
View File
@@ -0,0 +1,30 @@
" Vim compiler file
" Compiler: Rhino Shell (JavaScript in Java)
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "rhino"
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=java\ -jar\ lib/rhino-X.X.XX.jar\ -w\ -strict
CompilerSet makeprg=rhino
CompilerSet errorformat=%-Gjs:\ %.%#Compilation\ produced%.%#,
\%Ejs:\ \"%f\"\\,\ line\ %l:\ %m,
\%Ejs:\ uncaught\ JavaScript\ runtime\ exception:\ %m,
\%Wjs:\ warning:\ \"%f\"\\,\ line\ %l:\ %m,
\%Zjs:\ %p^,
\%Cjs:\ %.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+23
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
+3 -3
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Standard for JavaScript
" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
" Last Change: 2020 May 17
" Last Change: 2020 August 20
if exists("current_compiler")
finish
@@ -12,5 +12,5 @@ if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=standard
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%#
CompilerSet makeprg=npx\ standard
CompilerSet errorformat=%f:%l:%c:\ %m,%-G%.%#
+26
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
+29
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
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
+28
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
+10 -8
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: xmllint
" Compiler: Libxml2 Command-Line Tool
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2013 Jul 8
" Last Change: 2020 Jul 30
if exists("current_compiler")
finish
@@ -13,14 +13,16 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
endif
let s:cpo_save = &cpo
set cpo-=C
set cpo&vim
CompilerSet makeprg=xmllint\ --valid\ --noout
CompilerSet errorformat=%+E%f:%l:\ %.%#\ error\ :\ %m,
\%+W%f:%l:\ %.%#\ warning\ :\ %m,
\%-Z%p^,
\%-G%.%#
CompilerSet errorformat=%E%f:%l:\ %.%#\ error\ :\ %m,
\%W%f:%l:\ %.%#\ warning\ :\ %m,
\%-Z%p^,
\%C%.%#,
\%terror:\ %m,
\%tarning:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+5 -5
View File
@@ -1,4 +1,4 @@
*change.txt* For Vim version 8.2. Last change: 2020 Jun 04
*change.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -153,7 +153,7 @@ the 'joinspaces' option is on, these commands insert two spaces after a '.',
'!' or '?' (but if 'cpoptions' includes the 'j' flag, they insert two spaces
only after a '.').
The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
spaces before and after a multi-byte character |fo-table|.
spaces before and after a multibyte character |fo-table|.
The '[ mark is set at the end of the first line that was joined, '] at the end
of the resulting line.
@@ -1680,11 +1680,11 @@ b Like 'v', but only auto-wrap if you enter a blank at or before
l Long lines are not broken in insert mode: When a line was longer than
'textwidth' when the insert command started, Vim does not
automatically format it.
m Also break at a multi-byte character above 255. This is useful for
m Also break at a multibyte character above 255. This is useful for
Asian text where every character is a word on its own.
M When joining lines, don't insert a space before or after a multi-byte
M When joining lines, don't insert a space before or after a multibyte
character. Overrules the 'B' flag.
B When joining lines, don't insert a space between two multi-byte
B When joining lines, don't insert a space between two multibyte
characters. Overruled by the 'M' flag.
1 Don't break a line after a one-letter word. It's broken before it
instead (if possible).
+8 -2
View File
@@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.2. Last change: 2020 Jul 10
*channel.txt* For Vim version 8.2. Last change: 2020 Sep 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -608,6 +608,10 @@ ch_logfile({fname} [, {mode}]) *ch_logfile()*
after every message, on Unix you can use "tail -f" to see what
is going on in real time.
To enable the log very early, to see what is received from a
terminal during startup, use |--cmd|: >
vim --cmd "call ch_logfile('logfile', 'w')"
<
This function is not available in the |sandbox|.
NOTE: the channel communication is stored in the file, be
aware that this may contain confidential and privacy sensitive
@@ -1256,7 +1260,9 @@ After setting 'buftype' to "prompt" Vim does not automatically start Insert
mode, use `:startinsert` if you want to enter Insert mode, so that the user
can start typing a line.
The text of the prompt can be set with the |prompt_setprompt()| function.
The text of the prompt can be set with the |prompt_setprompt()| function. If
no prompt is set with |prompt_setprompt()|, "% " is used. You can get the
effective prompt text for a buffer, with |prompt_getprompt()|.
The user can go to Normal mode and navigate through the buffer. This can be
useful to see older output or copy text.
+19 -9
View File
@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.2. Last change: 2020 Jul 26
*cmdline.txt* For Vim version 8.2. Last change: 2020 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -797,7 +797,7 @@ three lines: >
<
Visual Mode and Range *v_:*
*:star-visual-range*
{Visual}: Starts a command-line with the Visual selected lines as a
range. The code `:'<,'>` is used for this range, which makes
it possible to select a similar line from the command-line
@@ -873,34 +873,37 @@ it, no matter how many backslashes.
\\# \#
Also see |`=|.
*:<cword>* *<cword>* *:<cWORD>* *<cWORD>*
*:<cexpr>* *<cexpr>* *:<cfile>* *<cfile>*
*:<afile>* *<afile>* *:<abuf>* *<abuf>*
*:<amatch>* *<amatch>* *:<stack>* *<stack>*
*:<sfile>* *<sfile>* *:<slnum>* *<slnum>*
*:<sflnum>* *<sflnum>* *E499* *E500*
*E499* *E500*
Note: these are typed literally, they are not special keys!
*:<cword>* *<cword>*
<cword> is replaced with the word under the cursor (like |star|)
*:<cWORD>* *<cWORD>*
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
*:<cexpr>* *<cexpr>*
<cexpr> is replaced with the word under the cursor, including more
to form a C expression. E.g., when the cursor is on "arg"
of "ptr->arg" then the result is "ptr->arg"; when the
cursor is on "]" of "list[idx]" then the result is
"list[idx]". This is used for |v:beval_text|.
*:<cfile>* *<cfile>*
<cfile> is replaced with the path name under the cursor (like what
|gf| uses)
*:<afile>* *<afile>*
<afile> When executing autocommands, is replaced with the file name
of the buffer being manipulated, or the file for a read or
write. *E495*
*:<abuf>* *<abuf>*
<abuf> When executing autocommands, is replaced with the currently
effective buffer number (for ":r file" and ":so file" it is
the current buffer, the file being read/sourced is not in a
buffer). *E496*
*:<amatch>* *<amatch>*
<amatch> When executing autocommands, is replaced with the match for
which this autocommand was executed. *E497*
It differs from <afile> only when the file name isn't used
to match with (for FileType, Syntax and SpellFileMissing
events).
*:<sfile>* *<sfile>*
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with the call stack,
@@ -908,18 +911,24 @@ Note: these are typed literally, they are not special keys!
<stack> is preferred).
Note that filename-modifiers are useless when <sfile> is
not used inside a script.
*:<stack>* *<stack>*
<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>* *<slnum>*
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
the start of the function.
*:<sflnum>* *<sflnum>*
<sflnum> When executing a script, is replaced with the line number.
It differs from <slnum> in that <sflnum> is replaced with
the script line number in any situation. *E961*
*:<client>* *<client>*
<client> is replaced with the {clinetid} of the last received
message in |server2client()|
*filename-modifiers*
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S*
@@ -1130,7 +1139,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.
+2 -2
View File
@@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.2. Last change: 2020 Jul 27
*develop.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -473,7 +473,7 @@ available spell checking libraries and programs. Unfortunately, the result
was that none of them provided sufficient capabilities to be used as the spell
checking engine in Vim, for various reasons:
- Missing support for multi-byte encodings. At least UTF-8 must be supported,
- Missing support for multibyte encodings. At least UTF-8 must be supported,
so that more than one language can be used in the same file.
Doing on-the-fly conversion is not always possible (would require iconv
support).
+1
View File
@@ -921,6 +921,7 @@ char digraph hex dec official name ~
‟ 9" 201F 8223 DOUBLE HIGH-REVERSED-9 QUOTATION MARK
† /- 2020 8224 DAGGER
‡ /= 2021 8225 DOUBLE DAGGER
• oo 2022 8226 BULLET
‥ .. 2025 8229 TWO DOT LEADER
… ,. 2026 8230 HORIZONTAL ELLIPSIS
‰ %0 2030 8240 PER MILLE SIGN
+3 -3
View File
@@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.2. Last change: 2020 Jul 05
*editing.txt* For Vim version 8.2. Last change: 2020 Aug 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -652,7 +652,7 @@ list of the current window.
:args ## x
< This will add the "x" item and sort the new list.
:argd[elete] {pattern} .. *:argd* *:argdelete* *E480*
:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* *E610*
Delete files from the argument list that match the
{pattern}s. {pattern} is used like a file pattern,
see |file-pattern|. "%" can be used to delete the
@@ -662,7 +662,7 @@ list of the current window.
Example: >
:argdel *.obj
:[range]argd[elete] Delete the {range} files from the argument list.
:[range]argd[elete] Delete the [range] files from the argument list.
Example: >
:10,$argdel
< Deletes arguments 10 and further, keeping 1-9. >
+172 -38
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.2. Last change: 2020 Aug 07
*eval.txt* For Vim version 8.2. Last change: 2020 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -120,8 +120,9 @@ base, use |str2nr()|.
*TRUE* *FALSE* *Boolean*
For boolean operators Numbers are used. Zero is FALSE, non-zero is TRUE.
You can also use |v:false| and |v:true|. When TRUE is returned from a
function it is the Number one, FALSE is the number zero.
You can also use |v:false| and |v:true|. In Vim9 script |false| and |true|.
When TRUE is returned from a function it is the Number one, FALSE is the
number zero.
Note that in the command: >
:if "foo"
@@ -1131,19 +1132,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 multibyte 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
@@ -1157,10 +1164,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 or
characters 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
multibyte 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.
@@ -1173,6 +1186,7 @@ expr1b is smaller than expr1a the result is an empty string.
Examples: >
:let c = name[-1:] " last byte of a string
:let c = name[0:-1] " the whole string
:let c = name[-2:-2] " last but one byte of a string
:let s = line(".")[4:] " from the fifth byte to the end
:let s = s[:-3] " remove last two bytes
@@ -2359,7 +2373,7 @@ assert_equalfile({fname-one}, {fname-two} [, {msg}])
Number assert file contents are equal
assert_exception({error} [, {msg}])
Number assert {error} is in v:exception
assert_fails({cmd} [, {error} [, {msg}]])
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Number assert {cmd} fails
assert_false({actual} [, {msg}])
Number assert {actual} is false
@@ -2425,6 +2439,7 @@ ch_status({handle} [, {options}])
String status of channel {handle}
changenr() Number current change number
char2nr({expr} [, {utf8}]) Number ASCII/UTF8 value of first char in {expr}
charclass({string}) Number character class of {string}
chdir({dir}) String change current working directory
cindent({lnum}) Number C indent for line {lnum}
clearmatches([{win}]) none clear all matches
@@ -2545,6 +2560,7 @@ gettabvar({nr}, {varname} [, {def}])
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
gettagstack([{nr}]) Dict get the tag stack of window {nr}
gettext({text}) String lookup translation of {text}
getwininfo([{winid}]) List list of info about each window
getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
getwinposx() Number X coord in pixels of the Vim window
@@ -2637,6 +2653,7 @@ matcharg({nr}) List arguments of |:match|
matchdelete({id} [, {win}]) Number delete match identified by {id}
matchend({expr}, {pat} [, {start} [, {count}]])
Number position where {pat} ends in {expr}
matchfuzzy({list}, {str}) List fuzzy match {str} in {list}
matchlist({expr}, {pat} [, {start} [, {count}]])
List match and submatches of {pat} in {expr}
matchstr({expr}, {pat} [, {start} [, {count}]])
@@ -2681,6 +2698,7 @@ popup_show({id}) none unhide popup window {id}
pow({x}, {y}) Float {x} to the power of {y}
prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
printf({fmt}, {expr1}...) String format text
prompt_getprompt({buf}) String get prompt text
prompt_setcallback({buf}, {expr}) none set prompt callback function
prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
prompt_setprompt({buf}, {text}) none set prompt text
@@ -2768,6 +2786,7 @@ setbufline({expr}, {lnum}, {text})
{expr}
setbufvar({expr}, {varname}, {val})
none set {varname} in buffer {expr} to {val}
setcellwidths({list}) none set character cell width overrides
setcharsearch({dict}) Dict set character search from {dict}
setcmdpos({pos}) Number set cursor position in command-line
setenv({name}, {val}) none set environment variable
@@ -2836,7 +2855,8 @@ str2list({expr} [, {utf8}]) List convert each character of {expr} to
str2nr({expr} [, {base} [, {quoted}]])
Number convert String to Number
strcharpart({str}, {start} [, {len}])
String {len} characters of {str} at {start}
String {len} characters of {str} at
character {start}
strchars({expr} [, {skipcc}]) Number character length of the String {expr}
strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
strftime({format} [, {time}]) String format time with a specified format
@@ -2845,8 +2865,9 @@ stridx({haystack}, {needle} [, {start}])
Number index of {needle} in {haystack}
string({expr}) String String representation of {expr} value
strlen({expr}) Number length of the String {expr}
strpart({str}, {start} [, {len}])
String {len} bytes of {str} at byte {start}
strpart({str}, {start} [, {len} [, {chars}]])
String {len} bytes/chars of {str} at
byte {start}
strptime({format}, {timestring})
Number Convert {timestring} to unix timestamp
strridx({haystack}, {needle} [, {start}])
@@ -3355,7 +3376,7 @@ bufnr([{expr} [, {create}]])
above.
If the buffer doesn't exist, -1 is returned. Or, if the
{create} argument is present and not zero, a new, unlisted,
{create} argument is present and TRUE, a new, unlisted,
buffer is created and its number is returned. Example: >
let newbuf = bufnr('Scratch001', 1)
< Using an empty name uses the current buffer. To create a new
@@ -3418,7 +3439,8 @@ byte2line({byte}) *byte2line()*
byteidx({expr}, {nr}) *byteidx()*
Return byte index of the {nr}'th character in the string
{expr}. Use zero for the first character, it returns zero.
{expr}. Use zero for the first character, it then returns
zero.
This function is only useful when there are multibyte
characters, otherwise the returned value is equal to {nr}.
Composing characters are not counted separately, their byte
@@ -3505,7 +3527,7 @@ char2nr({expr} [, {utf8}]) *char2nr()*
Example for "utf-8": >
char2nr("á") returns 225
char2nr("á"[0]) returns 195
< With {utf8} set to 1, always treat as utf-8 characters.
< With {utf8} set to TRUE, always treat as utf-8 characters.
A combining character is a separate character.
|nr2char()| does the opposite.
To turn a string into a list of character numbers: >
@@ -3516,6 +3538,18 @@ char2nr({expr} [, {utf8}]) *char2nr()*
Can also be used as a |method|: >
GetChar()->char2nr()
charclass({string}) *charclass()*
Return the character class of the first character in {string}.
The character class is one of:
0 blank
1 punctuation
2 word character
3 emoji
other specific Unicode class
The class is used in patterns and word motions.
chdir({dir}) *chdir()*
Change the current working directory to {dir}. The scope of
the directory change depends on the directory of the current
@@ -4280,6 +4314,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()*
<afile> autocmd file name
<abuf> autocmd buffer number (as a String!)
<amatch> autocmd matched name
<cexpr> C expression under the cursor
<sfile> sourced script file or function name
<slnum> sourced script line number or function
line number
@@ -4287,6 +4322,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()*
a function
<SID> "<SNR>123_" where "123" is the
current script ID |<SID>|
<stack> call stack
<cword> word under the cursor
<cWORD> WORD under the cursor
<client> the {clientid} of the last received
@@ -5467,7 +5503,7 @@ getmarklist([{expr}]) *getmarklist()*
local marks defined in buffer {expr}. For the use of {expr},
see |bufname()|.
Each item in the retuned List is a |Dict| with the following:
Each item in the returned List is a |Dict| with the following:
name - name of the mark prefixed by "'"
pos - a |List| with the position of the mark:
[bufnum, lnum, col, off]
@@ -5704,6 +5740,7 @@ getreginfo([{regname}]) *getreginfo()*
If {regname} is invalid or not set, an empty Dictionary
will be returned.
If {regname} is not specified, |v:register| is used.
The returned Dictionary can be passed to |setreg()|.
Can also be used as a |method|: >
GetRegname()->getreginfo()
@@ -5810,6 +5847,19 @@ gettagstack([{nr}]) *gettagstack()*
Can also be used as a |method|: >
GetWinnr()->gettagstack()
gettext({text}) *gettext()*
Translate {text} if possible.
This is mainly for use in the distributed Vim scripts. When
generating message translations the {text} is extracted by
xgettext, the translator can add the translated message in the
.po file and Vim will lookup the translation when gettext() is
called.
For {text} double quoted strings are preferred, because
xgettext does not understand escaping in single quoted
strings.
getwininfo([{winid}]) *getwininfo()*
Returns information about windows as a |List| with Dictionaries.
@@ -5998,7 +6048,7 @@ has({feature} [, {check}])
zero otherwise. This is useful to check for a typo in
{feature} and to detect dead code. Keep in mind that an older
Vim version will not know about a feature added later and
features that have been abandoned will not be know by the
features that have been abandoned will not be known by the
current Vim version.
Also see |exists()|.
@@ -7272,6 +7322,29 @@ matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
Can also be used as a |method|: >
GetText()->matchend('word')
matchfuzzy({list}, {str}) *matchfuzzy()*
Returns a list with all the strings in {list} that fuzzy
match {str}. The strings in the returned list are sorted
based on the matching score. {str} is treated as a literal
string and regular expression matching is NOT supported.
The maximum supported {str} length is 256.
If there are no matching strings or there is an error, then an
empty list is returned. If length of {str} is greater than
256, then returns an empty list.
Example: >
:echo matchfuzzy(["clay", "crow"], "cay")
< results in ["clay"]. >
:echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
< results in a list of buffer names fuzzy matching "ndl". >
:echo v:oldfiles->matchfuzzy("test")
< results in a list of file names fuzzy matching "test". >
:let l = readfile("buffer.c")->matchfuzzy("str")
< results in a list of lines in "buffer.c" fuzzy matching "str".
matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
Same as |match()|, but return a |List|. The first item in the
list is the matched string, same as what matchstr() would
@@ -7574,7 +7647,7 @@ perleval({expr}) *perleval()*
< {only available when compiled with the |+perl| feature}
popup_ functions are documented here: |popup-functions|.
popup_ functions are documented here: |popup-functions|
pow({x}, {y}) *pow()*
@@ -7802,6 +7875,17 @@ printf({fmt}, {expr1} ...) *printf()*
arguments an error is given. Up to 18 arguments can be used.
prompt_getprompt({buf}) *prompt_getprompt()*
Returns the effective prompt text for buffer {buf}. {buf} can
be a buffer name or number. |prompt-buffer|.
If the buffer doesn't exist or isn't a prompt buffer, an empty
string is returned.
Can also be used as a |method|: >
GetBuffer()->prompt_getprompt()
prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
Set prompt callback for buffer {buf} to {expr}. When {expr}
is an empty string the callback is removed. This has only
@@ -7857,7 +7941,7 @@ prompt_setprompt({buf}, {text}) *prompt_setprompt()*
Can also be used as a |method|: >
GetBuffer()->prompt_setprompt('command: ')
prop_ functions are documented here: |text-prop-functions|.
prop_ functions are documented here: |text-prop-functions|
pum_getpos() *pum_getpos()*
If the popup menu (see |ins-completion-menu|) is not visible,
@@ -8934,6 +9018,31 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()*
third argument: >
GetValue()->setbufvar(buf, varname)
setcellwidths({list}) *setcellwidths()*
Specify overrides for cell widths of character ranges. This
tells Vim how wide characters are, counted in screen cells.
This overrides 'ambiwidth'. Example: >
setcellwidths([[0xad, 0xad, 1],
\ [0x2194, 0x2199, 2]])
< *E1109* *E1110* *E1111* *E1112* *E1113*
The {list} argument is a list of lists with each three
numbers. These three numbers are [low, high, width]. "low"
and "high" can be the same, in which case this refers to one
character. Otherwise it is the range of characters from "low"
to "high" (inclusive). "width" is either 1 or 2, indicating
the character width in screen cells.
An error is given if the argument is invalid, also when a
range overlaps with another.
Only characters with value 0x100 and higher can be used.
To clear the overrides pass an empty list: >
setcellwidths([]);
< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
the effect for known emoji characters.
setcharsearch({dict}) *setcharsearch()*
Set the current character search information to {dict},
which contains one or more of the following entries:
@@ -9948,17 +10057,22 @@ strlen({expr}) The result is a Number, which is the length of the String
{expr} in bytes.
If the argument is a Number it is first converted to a String.
For other types an error is given.
If you want to count the number of multi-byte characters use
If you want to count the number of multibyte characters use
|strchars()|.
Also see |len()|, |strdisplaywidth()| and |strwidth()|.
Can also be used as a |method|: >
GetString()->strlen()
strpart({src}, {start} [, {len}]) *strpart()*
strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
The result is a String, which is part of {src}, starting from
byte {start}, with the byte length {len}.
To count characters instead of bytes use |strcharpart()|.
When {chars} is present and TRUE then {len} is the number of
characters positions (composing characters are not counted
separately, thus "1" means one base character and any
following composing characters).
To count {start} as characters instead of bytes use
|strcharpart()|.
When bytes are selected which do not exist, this doesn't
result in an error, the bytes are simply omitted.
@@ -9970,8 +10084,8 @@ strpart({src}, {start} [, {len}]) *strpart()*
strpart("abcdefg", 3) == "defg"
< Note: To get the first character, {start} must be 0. For
example, to get three bytes under and after the cursor: >
strpart(getline("."), col(".") - 1, 3)
example, to get the character under the cursor: >
strpart(getline("."), col(".") - 1, 1, v:true)
<
Can also be used as a |method|: >
GetText()->strpart(5)
@@ -10965,7 +11079,8 @@ win_screenpos({nr}) *win_screenpos()*
Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position
[1, 1], unless there is a tabline, then it is [2, 1].
{nr} can be the window number or the |window-ID|.
{nr} can be the window number or the |window-ID|. Use zero
for the current window.
Return [0, 0] if the window cannot be found in the current
tabpage.
@@ -11386,7 +11501,7 @@ mouse_urxvt Compiled with support for urxvt mouse.
mouse_xterm Compiled with support for xterm mouse.
mouseshape Compiled with support for 'mouseshape'.
multi_byte Compiled with support for 'encoding' (always true)
multi_byte_encoding 'encoding' is set to a multi-byte encoding.
multi_byte_encoding 'encoding' is set to a multibyte encoding.
multi_byte_ime Compiled with support for IME input method.
multi_lang Compiled with support for multiple languages.
mzscheme Compiled with MzScheme interface |mzscheme|.
@@ -12267,10 +12382,20 @@ text...
:const x = 1
< is equivalent to: >
:let x = 1
:lockvar 1 x
< This is useful if you want to make sure the variable
is not modified.
*E995*
:lockvar! x
< NOTE: in Vim9 script `:const` works differently, see
|vim9-const|
This is useful if you want to make sure the variable
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!
@@ -12300,6 +12425,8 @@ text...
[depth] is relevant when locking a |List| or
|Dictionary|. It specifies how deep the locking goes:
0 Lock the variable {name} but not its
value.
1 Lock the |List| or |Dictionary| itself,
cannot add or remove items, but can
still change their values.
@@ -12313,7 +12440,14 @@ text...
|Dictionary|, one level deeper.
The default [depth] is 2, thus when {name} is a |List|
or |Dictionary| the values cannot be changed.
*E743*
Example with [depth] 0: >
let mylist = [1, 2, 3]
lockvar 0 mylist
let mylist[0] = 77 " OK
call add(mylist, 4] " OK
let mylist = [7, 8, 9] " Error!
< *E743*
For unlimited depth use [!] and omit [depth].
However, there is a maximum depth of 100 to catch
loops.
+2 -2
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"
+10 -7
View File
@@ -837,7 +837,7 @@ The window toolbar uses the ToolbarLine and ToolbarButton highlight groups.
When splitting the window the window toolbar is not copied to the new window.
*popup-menu*
In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the
In the Win32, MacVim, GTK+, Motif, Athena and Photon GUI, you can define the
special menu "PopUp". This is the menu that is displayed when the right mouse
button is pressed, if 'mousemodel' is set to popup or popup_setpos.
Example: >
@@ -967,13 +967,14 @@ See section |42.4| in the user manual.
*:tmenu* *:tm*
:tm[enu] {menupath} {rhs} Define a tip for a menu or tool. {only in
X11 and Win32 GUI}
X11, MacVim, and Win32 GUI}
:tm[enu] [menupath] List menu tips. {only in X11 and Win32 GUI}
:tm[enu] [menupath] List menu tips. {only in X11, MacVim, and
Win32 GUI}
*:tunmenu* *:tu*
:tu[nmenu] {menupath} Remove a tip for a menu or tool.
{only in X11 and Win32 GUI}
{only in X11, MacVim, and Win32 GUI}
Note: To create menus for terminal mode, use |:tlmenu| instead.
@@ -993,8 +994,9 @@ The tip is defined like this: >
And delete it with: >
:tunmenu MyMenu.Hello
Tooltips are currently only supported for the X11 and Win32 GUI. However, they
should appear for the other gui platforms in the not too distant future.
Tooltips are currently only supported for the X11, MacVim, and Win32 GUI.
However, they should appear for the other gui platforms in the not too distant
future.
The ":tmenu" command works just like other menu commands, it uses the same
arguments. ":tunmenu" deletes an existing menu tip, in the same way as the
@@ -1106,7 +1108,8 @@ Also see 'macatsui', it can help fix display problems {not in MacVim}.
In MacVim, fonts with spaces are set like this: >
:set guifont=DejaVu\ Sans\ Mono:h13
<
*E236*
Mono-spaced fonts *E236*
Note that the fonts must be mono-spaced (all characters have the same width).
An exception is MacVim and GTK: all fonts are accepted, but mono-spaced fonts
look best.
+70 -32
View File
@@ -124,7 +124,7 @@ These are the non-standard commands that MacVim supports:
*macvim-autocommands*
These are the non-standard events that MacVim supports:
|OSAppearanceChanged|
|OSAppearanceChanged|
*macvim-find*
Whenever you search for something in Vim (e.g. using "/"), or hit <D-e> when
@@ -514,10 +514,17 @@ icon can be found a warning triangle is displayed instead.
==============================================================================
8. Touch Bar *macvim-touchbar*
Touch Bar in MacVim works similar to the toolbar (see |macvim-toolbar|). The
difference is that you use the special menu "TouchBar" instead of "ToolBar": >
Touch Bar in MacVim is configurable, and works similar to the toolbar (see
|macvim-toolbar|). The difference is that you use the special menu "TouchBar"
instead of "ToolBar": >
:an TouchBar.Hello :echo "Hello"<CR>
<
You can also create submenus. Due to macOS restrictions, submenus can only be
one level deep: >
:an TouchBar.Navigate.Next :next<CR>
:an TouchBar.Navigate.Prev :prev<CR>
<
*macvim-touchbar-separator*
The separators work similar to how toolbars work: >
:an TouchBar.-Sep- <Nop>
:an TouchBar.-space1- <Nop>
@@ -530,24 +537,45 @@ separator and are specified by names that begin with "-space" and ends with
that items after it will be right-aligned, and is specified by names that
begin with "-flexspace" and ends with "-".
*macvim-touchbar-icon*
You can specify icons for Touch Bar buttons the same way for toolbar icons.
Touch Bar icons should ideally be 36x36 pixels, and no larger than 44x44
pixels. You can also use default template icons provided by Apple by using
their template names. An example: >
:an icon=NSTouchBarListViewTemplate TouchBar.ShowList <Nop>
:an icon=NSTouchBarListViewTemplate TouchBar.ShowList :ls<CR>
<
*macvim-touchbar-title*
By default, the Touch Bar buttons will use the menu names as the title. If an
icon is specified, the title will not be shown. You can override this by using
|tmenu| to set a tooltip. The tooltip will be displayed as the title of the
button. If an icon is specified, the tooltip override will be shown alongside
the icon. Example: >
:an icon=NSTouchBarAddTemplate TouchBar.AddItem <Nop>
:tmenu TouchBar.AddItem Add an Item
<
*macvim-touchbar-characterpicker* *macvim-touchbar-emoji*
You can also insert emojis by adding a character picker button (specified by
using a name that begin wtih "-characterpicker" and ends with "-"): >
:inoremenu TouchBar.-characterpicker- <Nop>
This feature only works on Mac devices that come with Touch Bars. On the ones
that don't, nothing will show up.
*macvim-touchbar-defaults*
*macvim-touchbar-defaults*
Here is a list of default Touch Bar buttons that MacVim sets up:
*macvim-touchbar-fullscreen*
*macvim-touchbar-fullscreen*
*g:macvim_default_touchbar_fullscreen*
EnterFullScreen Touch Bar buttons that allow you to toggle
ExitFullScreen |'fullscreen'| mode. To disable the button, add the
following to your vimrc file: >
ExitFullScreen |'fullscreen'| mode. To disable, add the following to
your vimrc file: >
let g:macvim_default_touchbar_fullscreen=0
<
*g:macvim_default_touchbar_characterpicker*
-characterpicker- Character picker that lets you add special characters
and emojis in insert and terminal modes. To disable,
add the following to your vimrc file: >
let g:macvim_default_touchbar_characterpicker=0
==============================================================================
9. Dialogs *macvim-dialogs*
@@ -733,6 +761,8 @@ See the section on |key-mapping| for more help on how to map keys.
==============================================================================
14. International *macvim-international*
Typing text ~
When editing non-English text it may be convenient to keep separate keyboard
layouts for normal and insert mode. This is supported via the 'imd' option on
macOS 10.5 or later (on 10.4 the 'imd' option support is not as useful as it
@@ -751,6 +781,13 @@ set (i.e when IM is enabled). If you find that MacVim switches to the
wrong layout when going back to normal mode, then select the layout you want
to use in normal mode and type ":set imd" followed by ":set noimd".
Translations ~
MacVim uses localized Vim messages (see |multilang-messages|), but there are
MacVim-specific messages that are not currently localized. Please file an
issue if you would like to see certain messages localized. Menus
(|multilang-menus|) are currently not localized in MacVim.
==============================================================================
15. Known bugs/missing features *macvim-todo*
@@ -760,22 +797,24 @@ prominent bugs/missing features.
- Under macOS Mojave (10.14), the default renderer (Core Text renderer) has
some performance issues and scrolling is not as smooth as previous macOS
versions (10.13 or below).
- Sound. MacVim does not currently support |+sound| yet.
- |modifyOtherKeys| support. This feature allows for more granular key
mapping (e.g. differentiating <C-I> and <Tab>) and isn't supported by the
MacVim GUI yet.
- Localized menus are not supported. Choosing anything but "English" in the
"International" pane of "System Prefences" may break the menus (and
toolbar).
- Some Unicode characters are not handled well (e.g. nonspacing marks)
- Sometimes multibyte characters look "too wide", i.e. they overlap the
following character. It might help to change 'ambiwidth', or override the
automatic font substitution by setting 'guifontwide' manually.
- Printing. As a temporary solution <D-p> creates a PostScript file which is
then opened in Preview where it may be printed.
- The toolbar looks ugly and is not very useful.
then opened in Preview where it may be printed. See |hardcopy|.
Other bugs and issues are tracked on Github. If you find new bugs then please
file an issue there: >
Other bugs and issues are tracked on Github. If you find new bugs or have
feature requests then please file an issue there: >
https://github.com/macvim-dev/macvim/issues
There is also a vim_mac mailing list. You can also post your findings of bugs
There is also a vim_mac mailing list. You can also post your findings of bugs
and issues there as well: *vim_mac_group* >
http://groups.google.com/group/vim_mac
@@ -788,6 +827,12 @@ general questions about MacVim.
In this section some general (not necessarily MacVim specific) hints are
given.
Scenario: ~
You would like to remap Caps Lock to Esc.
Solution: ~
Go to System Preferences → Keyboard → Modifier Keys…, and map Caps Lock Key to
Escape.
Scenario: ~
You try opening a bunch of files in tabs but not all files get opened in their
own tab.
@@ -825,11 +870,15 @@ Solution: ~
This is a known problem, see |macvim-todo|.
Scenario: ~
When you click the (green) zoom button you want the window to maximize
horizontally as well as vertically.
When you click the (green) full screen button you want the window to maximize
instead of going full screen. You would also like it to maximize both
horizontally and vertically.
Solution: ~
Hold down Cmd and click the zoom button. If you prefer this to be the default
action, then set the user default MMZoomBoth (see |macvim-prefs|).
Hole down Option, and the full screen button will become the zoom button,
which will by default only maximize vertically.
To maximize in both directions, hold down Cmd and click the zoom button. If
you prefer this to be the default action, then set the user default MMZoomBoth
(see |macvim-prefs|).
Scenario: ~
Typing feels sluggish when the cursor is just before a right bracket (i.e.
@@ -867,18 +916,6 @@ bring up an editor, you would set that option to something like: >
mvim -f -c "au VimLeave * maca hide:"
(See the above Scenario for an explanation of the "-f" switch.)
Scenario: ~
You would like to remap Caps Lock to Esc.
Solution: ~
The app "PCKeyboardHack" can be used to remap Caps Lock. It is available as a
free download from: >
http://pqrs.org/macosx/keyremap4macbook/extra.html
On some Apple keyboards the Caps Lock key doesn't immediately register and
this makes Caps Lock "drop" key presses. To work around this problem go into
the "Keyboard" System Preference and remap Caps Lock to Ctrl first (click the
"Modifier Keys..." button). This trick may also be necessary if the Caps Lock
light turns on/off despite having remapped to Esc.
Scenario: ~
You have problems creating custom mappings involving the Cmd key.
Solution: ~
@@ -893,6 +930,7 @@ Scenario: ~
You can't find the information on MacVim you thought should be in this manual
page.
Solution: ~
Post your question on the |vim_mac| mailing list and wait for an answer.
Post your question on the |vim_mac| mailing list or file an issue at
https://github.com/macvim-dev/macvim/issues.
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
+2 -2
View File
@@ -1,4 +1,4 @@
*help.txt* For Vim version 8.2. Last change: 2020 Apr 05
*help.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM - main help file
k
@@ -158,7 +158,7 @@ Programming language support ~
Language support ~
|digraph.txt| list of available digraphs
|mbyte.txt| multi-byte text support
|mbyte.txt| multibyte text support
|mlang.txt| non-English language support
|rileft.txt| right-to-left editing mode
|arabic.txt| Arabic language support and editing
+3 -1
View File
@@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.2. Last change: 2020 Apr 30
*insert.txt* For Vim version 8.2. Last change: 2020 Sep 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1843,6 +1843,7 @@ a Append text after the cursor [count] times. If the
*A*
A Append text at the end of the line [count] times.
For using "A" in Visual block mode see |v_b_A|.
<insert> or *i* *insert* *<Insert>*
i Insert text before the cursor [count] times.
@@ -1855,6 +1856,7 @@ I Insert text before the first non-blank in the line
When the 'H' flag is present in 'cpoptions' and the
line only contains blanks, insert start just before
the last blank.
For using "I" in Visual block mode see |v_b_I|.
*gI*
gI Insert text in column 1 [count] times.
+4 -4
View File
@@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.2. Last change: 2020 May 30
*intro.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -232,8 +232,8 @@ Vim would never have become what it is now, without the help of these people!
Flemming Madsen X11 client-server, various features and patches
Tony Mechelynck answers many user questions
Paul Moore Python interface extensions, many patches
Katsuhito Nagano Work on multi-byte versions
Sung-Hyun Nam Work on multi-byte versions
Katsuhito Nagano Work on multibyte versions
Sung-Hyun Nam Work on multibyte versions
Vince Negri Win32 GUI and generic console enhancements
Steve Oualline Author of the first Vim book |frombook|
Dominique Pelle Valgrind reports and many fixes
@@ -510,7 +510,7 @@ the ":map" command. The rules are:
<M-a> Meta- a ('a' with bit 8 set)
<M-A> Meta- A ('A' with bit 8 set)
<t_kd> "kd" termcap entry (cursor down key)
Although you can specify <M-{char}> with {char} being a multi-byte
Although you can specify <M-{char}> with {char} being a multibyte
character, Vim may not be able to know what byte sequence that is and then
it won't work.
+43 -32
View File
@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.2. Last change: 2020 Aug 01
*map.txt* For Vim version 8.2. Last change: 2020 Sep 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -191,6 +191,12 @@ whether to use the "," mapping or the longer one. To avoid this add the
<nowait> argument. Then the mapping will be used when it matches, Vim does
not wait for more characters to be typed. However, if the characters were
already typed they are used.
Note that this works when the <nowait> mapping fully matches and is found
before any partial matches. This works when:
- There is only one matching buffer-local mapping, since these are always
found before global mappings.
- There is another buffer-local mapping that partly matches, but it is
defined earlier (last defined mapping is found first).
*:map-<silent>* *:map-silent*
To define a mapping which will not be echoed on the command line, add
@@ -283,15 +289,8 @@ Here is an example that inserts a list number that increases: >
CTRL-L inserts the next number, CTRL-R resets the count. CTRL-R returns an
empty string, so that nothing is inserted.
Note that there are some tricks to make special keys work and escape CSI bytes
in the text. The |:map| command also does this, thus you must avoid that it
is done twice. This does not work: >
:imap <expr> <F3> "<Char-0x611B>"
Because the <Char- sequence is escaped for being a |:imap| argument and then
again for using <expr>. This does work: >
:imap <expr> <F3> "\u611B"
Using 0x80 as a single byte before other text does not work, it will be seen
as a special key.
Note that using 0x80 as a single byte before other text does not work, it will
be seen as a special key.
1.3 MAPPING AND MODES *:map-modes*
@@ -595,7 +594,7 @@ construct can be used:
<Char-033> character 27
<Char-0x7f> character 127
<S-Char-114> character 114 ('r') shifted ('R')
This is useful to specify a (multi-byte) character in a 'keymap' file.
This is useful to specify a (multibyte) character in a 'keymap' file.
Upper and lowercase differences are ignored.
*map-comments*
@@ -875,35 +874,47 @@ g@{motion} Call the function set by the 'operatorfunc' option.
Here is an example that counts the number of spaces with <F4>: >
nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
nnoremap <expr> <F4> CountSpaces()
xnoremap <expr> <F4> CountSpaces()
" doubling <F4> works on a line
nnoremap <expr> <F4><F4> CountSpaces() .. '_'
function CountSpaces(type = '') abort
if a:type == ''
set opfunc=CountSpaces
return 'g@'
endif
function! CountSpaces(type, ...)
let sel_save = &selection
let &selection = "inclusive"
let reg_save = @@
let reg_save = getreginfo('"')
let cb_save = &clipboard
let visual_marks_save = [getpos("'<"), getpos("'>")]
if a:0 " Invoked from Visual mode, use gv command.
silent exe "normal! gvy"
elseif a:type == 'line'
silent exe "normal! '[V']y"
else
silent exe "normal! `[v`]y"
endif
echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
let &selection = sel_save
let @@ = reg_save
try
set clipboard= selection=inclusive
let commands = #{line: "'[V']y", char: "`[v`]y", block: "`[\<c-v>`]y"}
silent exe 'noautocmd keepjumps normal! ' .. get(commands, a:type, '')
echom getreg('"')->count(' ')
finally
call setreg('"', reg_save)
call setpos("'<", visual_marks_save[0])
call setpos("'>", visual_marks_save[1])
let &clipboard = cb_save
let &selection = sel_save
endtry
endfunction
An <expr> mapping is used to be able to fetch any prefixed count and register.
This also avoids using a command line, which would trigger CmdlineEnter and
CmdlineLeave autocommands.
Note that the 'selection' option is temporarily set to "inclusive" to be able
to yank exactly the right text by using Visual mode from the '[ to the ']
mark.
Also note that there is a separate mapping for Visual mode. It removes the
"'<,'>" range that ":" inserts in Visual mode and invokes the function with
visualmode() and an extra argument.
Also note that the 'clipboard' option is temporarily emptied to avoid
clobbering the `"*` or `"+` registers, if its value contains the item `unnamed`
or `unnamedplus`.
==============================================================================
2. Abbreviations *abbreviations* *Abbreviations*
@@ -1495,7 +1506,7 @@ The valid escape sequences are
<bang> (See the '-bang' attribute) Expands to a ! if the
command was executed with a ! modifier, otherwise
expands to nothing.
*<mods>* *:command-modifiers*
*<mods>* *<q-mods>* *:command-modifiers*
<mods> The command modifiers, if specified. Otherwise, expands to
nothing. Supported modifiers are |:aboveleft|, |:belowright|,
|:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,
+12 -12
View File
@@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 8.2. Last change: 2019 Jul 04
*mbyte.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -36,7 +36,7 @@ characters or boxes when using another encoding.
This is a summary of the multibyte features in Vim. If you are lucky it works
as described and you can start using Vim without much trouble. If something
doesn't work you will have to read the rest. Don't be surprised if it takes
quite a bit of work and experimenting to make Vim use all the multi-byte
quite a bit of work and experimenting to make Vim use all the multibyte
features. Unfortunately, every system has its own way to deal with multibyte
languages and it is quite complicated.
@@ -123,7 +123,7 @@ You can also set 'guifont' alone, Vim will try to find a matching
INPUT
There are several ways to enter multi-byte characters:
There are several ways to enter multibyte characters:
- For X11 XIM can be used. See |XIM|.
- For MS-Windows IME can be used. See |IME|.
- For all systems keymaps can be used. See |mbyte-keymap|.
@@ -237,11 +237,11 @@ encoded with one byte, we call this a single-byte encoding. The most often
used one is called "latin1". This limits the number of characters to 256.
Some of these are control characters, thus even fewer can be used for text.
When some characters use two or more bytes, we call this a multi-byte
When some characters use two or more bytes, we call this a multibyte
encoding. This allows using much more than 256 characters, which is required
for most East Asian languages.
Most multi-byte encodings use one byte for the first 127 characters. These
Most multibyte encodings use one byte for the first 127 characters. These
are equal to ASCII, which makes it easy to exchange plain-ASCII text, no
matter what language is used. Thus you might see the right text even when the
encoding was set wrong.
@@ -488,11 +488,11 @@ possible.
==============================================================================
4. Using a terminal *mbyte-terminal*
The GUI fully supports multi-byte characters. It is also possible in a
The GUI fully supports multibyte characters. It is also possible in a
terminal, if the terminal supports the same encoding that Vim uses. Thus this
is less flexible.
For example, you can run Vim in a xterm with added multi-byte support and/or
For example, you can run Vim in a xterm with added multibyte support and/or
|XIM|. Examples are kterm (Kanji term) and hanterm (for Korean), Eterm
(Enlightened terminal) and rxvt.
@@ -544,7 +544,7 @@ For Vim you may need to set 'encoding' to "utf-8".
5. Fonts on X11 *mbyte-fonts-X11*
Unfortunately, using fonts in X11 is complicated. The name of a single-byte
font is a long string. For multi-byte fonts we need several of these...
font is a long string. For multibyte fonts we need several of these...
Note: Most of this is no longer relevant for GTK+ 2. Selecting a font via
its XLFD is not supported; see 'guifont' for an example of how to
@@ -610,7 +610,7 @@ written like:
X FONTSET
*fontset* *xfontset*
A single-byte charset is typically associated with one font. For multi-byte
A single-byte charset is typically associated with one font. For multibyte
charsets a combination of fonts is often used. This means that one group of
characters are used from one font and another group from another font (which
might be double wide). This collection of fonts is called a fontset.
@@ -1436,7 +1436,7 @@ not everybody is able to type a composing character.
==============================================================================
12. Overview of options *mbyte-options*
These options are relevant for editing multi-byte files. Check the help in
These options are relevant for editing multibyte files. Check the help in
options.txt for detailed information.
'encoding' Encoding used for the keyboard and display. It is also the
@@ -1456,14 +1456,14 @@ options.txt for detailed information.
languages where a sequence of characters can be broken
anywhere.
'guifontset' The list of font names used for a multi-byte encoding. When
'guifontset' The list of font names used for a multibyte encoding. When
this option is not empty, it replaces 'guifont'.
'keymap' Specify the name of a keyboard mapping.
==============================================================================
Contributions specifically for the multi-byte features by:
Contributions specifically for the multibyte features by:
Chi-Deok Hwang <hwang@mizi.co.kr>
SungHyun Nam <goweol@gmail.com>
K.Nagano <nagano@atese.advantest.co.jp>
+7 -6
View File
@@ -1,4 +1,4 @@
*message.txt* For Vim version 8.2. Last change: 2020 Jan 01
*message.txt* For Vim version 8.2. Last change: 2020 Sep 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -19,13 +19,14 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
:messages Show all messages.
:mes[sages] Show all messages.
:{count}messages Show the {count} most recent messages.
:{count}mes[sages] Show the {count} most recent messages.
:messages clear Clear all messages.
:mes[sages] clear Clear all messages.
:{count}messages clear Clear messages, keeping only the {count} most
:{count}mes[sages] clear
Clear messages, keeping only the {count} most
recent ones.
The number of remembered messages is fixed at 20 for the tiny version and 200
@@ -74,7 +75,7 @@ See `:messages` above.
LIST OF MESSAGES
*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
*E222* *E228* *E232* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* *E685* *E292* >
Add to read buffer
+2 -2
View File
@@ -1,4 +1,4 @@
*mlang.txt* For Vim version 8.2. Last change: 2020 Jun 16
*mlang.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -7,7 +7,7 @@
Multi-language features *multilang* *multi-lang*
This is about using messages and menus in various languages. For editing
multi-byte text see |multibyte|.
multibyte text see |multibyte|.
The basics are explained in the user manual: |usr_45.txt|.
+7 -6
View File
@@ -1,4 +1,4 @@
*motion.txt* For Vim version 8.2. Last change: 2019 Nov 16
*motion.txt* For Vim version 8.2. Last change: 2020 Aug 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -495,10 +495,11 @@ a set of section macros, specified by the pairs of characters in the
'sections' option. The default is "SHNHH HUnhsh", which defines a section to
start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
The "]" and "[" commands stop at the '{' or '}' in the first column. This is
useful to find the start or end of a function in a C program. Note that the
first character of the command determines the search direction and the
second character the type of brace found.
The "]]" and "[[" commands stop at the '{' in the first column. This is
useful to find the start of a function in a C program. To search for a '}' in
the first column, the end of a C function, use "][" (forward) or "[]"
(backward). Note that the first character of the command determines the
search direction.
If your '{' or '}' are not in the first column, and you would like to use "[["
and "]]" anyway, try these mappings: >
@@ -1142,7 +1143,7 @@ sequence of small changes in a line, for example "xxxxx", adds many positions
to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that
also isn't set a fixed number of 79 is used. Detail: For the computations
bytes are used, not characters, to avoid a speed penalty (this only matters
for multi-byte encodings).
for multibyte encodings).
Note that when text has been inserted or deleted the cursor position might be
a bit different from the position of the change. Especially when lines have
+3 -3
View File
@@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.2. Last change: 2020 Apr 19
*netbeans.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Gordon Prieur et al.
@@ -362,12 +362,12 @@ color Argument with either a decimal number, "none" (without the
offset A number argument that indicates a byte position in a buffer.
The first byte has offset zero. Line breaks are counted for
how they appear in the file (CR/LF counts for two bytes).
Note that a multi-byte character is counted for the number of
Note that a multibyte character is counted for the number of
bytes it takes.
lnum/col Argument with a line number and column number position. The
line number starts with one, the column is the byte position,
starting with zero. Note that a multi-byte character counts
starting with zero. Note that a multibyte character counts
for several columns.
pathname String argument: file name with full path.
+29 -32
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.2. Last change: 2020 Aug 07
*options.txt* For Vim version 8.2. Last change: 2020 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -703,6 +703,9 @@ A jump table for the options with a short description can be found at |Q_op|.
The value "double" cannot be used if 'listchars' or 'fillchars'
contains a character that would be double width.
The values are overruled for characters specified with
|setcellwidths()|.
There are a number of CJK fonts for which the width of glyphs for
those characters are solely based on how many octets they take in
legacy/traditional CJK encodings. In those encodings, Euro,
@@ -727,8 +730,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'antialias' 'anti' boolean (default off, on for MacVim)
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.
@@ -2748,8 +2751,9 @@ A jump table for the options with a short description can be found at |Q_op|.
is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//",
the swap file name will be built from the complete path to the file
with all path separators substituted to percent '%' signs. This will
ensure file name uniqueness in the preserve directory.
with all path separators replaced by percent '%' signs (including
the colon following the drive letter on Win32). This will ensure
file name uniqueness in the preserve directory.
On Win32, it is also possible to end with "\\". However, When a
separating comma is following, you must use "//", since "\\" will
include the comma in the file name. Therefore it is recommended to
@@ -2817,7 +2821,10 @@ A jump table for the options with a short description can be found at |Q_op|.
'emoji' 'emo' boolean (default: on)
global
When on all Unicode emoji characters are considered to be full width.
This excludes "text emoji" characters, which are normally displayed as
single width. Unfortunately there is no good specification for this
and it has been determined on trial-and-error basis. Use the
|setcellwidths()| function to change the behavior.
*'encoding'* *'enc'* *E543*
'encoding' 'enc' string (default: "latin1" or value from $LANG)
@@ -2847,7 +2854,7 @@ A jump table for the options with a short description can be found at |Q_op|.
This is specified with 'fileencoding'. The conversion is done with
iconv() or as specified with 'charconvert'.
If you need to know whether 'encoding' is a multi-byte encoding, you
If you need to know whether 'encoding' is a multibyte encoding, you
can use: >
if has("multi_byte_encoding")
<
@@ -4649,7 +4656,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
@@ -5026,19 +5033,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 Carbon 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'.
Note: MacVim does not use this option.
{not supported}
No longer supported, as the Mac OS X GUI code was removed.
*'macligatures'* *'nomacligatures'*
'macligatures' boolean (default off)
@@ -6338,7 +6334,7 @@ A jump table for the options with a short description can be found at |Q_op|.
screen. If the statusline is given by 'statusline' (i.e. not empty),
this option takes precedence over 'ruler' and 'rulerformat'
If the number of characters displayed is different from the number of
bytes in the text (e.g., for a TAB or a multi-byte character), both
bytes in the text (e.g., for a TAB or a multibyte character), both
the text column (byte number) and the screen column are shown,
separated with a dash.
For an empty line "0-1" is shown.
@@ -6366,7 +6362,7 @@ A jump table for the options with a short description can be found at |Q_op|.
<
*'runtimepath'* *'rtp'* *vimfiles*
'runtimepath' 'rtp' string (default:
Unix, Mac OS X: "$HOME/.vim,
Unix, macOS: "$HOME/.vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
@@ -6381,7 +6377,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 (pre-OS X): "$VIM:vimfiles,
Classic Mac OS: "$VIM:vimfiles,
$VIMRUNTIME,
$VIM:vimfiles:after"
Haiku: "$BE_USER_SETTINGS/vim,
@@ -6711,7 +6707,7 @@ A jump table for the options with a short description can be found at |Q_op|.
For the Amiga the default is ">". For MS-Windows the default is
">%s 2>&1". The output is directly saved in a file and not echoed to
the screen.
For Unix the default it "| tee". The stdout of the compiler is saved
For Unix the default is "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
@@ -7435,8 +7431,8 @@ A jump table for the options with a short description can be found at |Q_op|.
N N Printer page number. (Only works in the 'printheader' option.)
l N Line number.
L N Number of lines in buffer.
c N Column number.
v N Virtual column number.
c N Column number (byte index).
v N Virtual column number (screen column).
V N Virtual column number as -{num}. Not displayed if equal to 'c'.
p N Percentage through file in lines as in |CTRL-G|.
P S Percentage through file of displayed window. This is like the
@@ -7891,8 +7887,7 @@ A jump table for the options with a short description can be found at |Q_op|.
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+ and MacVim GUIs. After the GUI
has been successfully initialized, 'termencoding' is forcibly set to
@@ -7957,8 +7952,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'termwinsize'* *'tws'*
'termwinsize' 'tws' string (default "")
local to window
Size of the |terminal| window. Format: {rows}x{columns} or
{rows}*{columns}.
Size used when opening the |terminal| window. Format:
{rows}x{columns} or {rows}*{columns}.
- When empty the terminal gets the size from the window.
- When set with a "x" (e.g., "24x80") the terminal size is not
adjusted to the window size. If the window is smaller only the
@@ -7969,6 +7964,8 @@ A jump table for the options with a short description can be found at |Q_op|.
- When rows is zero then use the height of the window.
- When columns is zero then use the width of the window.
- Using "0x0" or "0*0" is the same as empty.
- Can be overruled in the |term_start()| options with "term_rows" and
"term_cols".
Examples:
"30x0" uses 30 rows and the current window width.
@@ -8549,7 +8546,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|
+20 -16
View File
@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.2. Last change: 2020 Jul 10
*pattern.txt* For Vim version 8.2. Last change: 2020 Sep 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -797,11 +797,12 @@ An ordinary atom can be:
^beep( the start of the C function "beep" (probably).
*/\^*
\^ Matches literal '^'. Can be used at any position in the pattern.
\^ Matches literal '^'. Can be used at any position in the pattern, but
not inside [].
*/\_^*
\_^ Matches start-of-line. |/zero-width| Can be used at any position in
the pattern.
the pattern, but not inside [].
Example matches ~
\_s*\_^foo white space and blank lines and then "foo" at
start-of-line
@@ -812,12 +813,13 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\$*
\$ Matches literal '$'. Can be used at any position in the pattern.
\$ Matches literal '$'. Can be used at any position in the pattern, but
not inside [].
*/\_$*
\_$ Matches end-of-line. |/zero-width| Can be used at any position in the
pattern. Note that "a\_$b" never matches, since "b" cannot match an
end-of-line. Use "a\nb" instead |/\n|.
pattern, but not inside []. Note that "a\_$b" never matches, since
"b" cannot match an end-of-line. Use "a\nb" instead |/\n|.
Example matches ~
foo\_$\_s* "foo" at end-of-line and following white space and
blank lines
@@ -840,8 +842,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\zs*
\zs Matches at any position, and sets the start of the match there: The
next char is the first char of the whole match. |/zero-width|
\zs Matches at any position, but not inside [], and sets the start of the
match there: The next char is the first char of the whole match.
|/zero-width|
Example: >
/^\s*\zsif
< matches an "if" at the start of a line, ignoring white space.
@@ -852,8 +855,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
This cannot be followed by a multi. *E888*
{not available when compiled without the |+syntax| feature}
*/\ze*
\ze Matches at any position, and sets the end of the match there: The
previous char is the last char of the whole match. |/zero-width|
\ze Matches at any position, but not inside [], and sets the end of the
match there: The previous char is the last char of the whole match.
|/zero-width|
Can be used multiple times, the last one encountered in a matching
branch is used.
Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
@@ -939,7 +943,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
These three can be used to match specific columns in a buffer or
string. The "23" can be any column number. The first column is 1.
Actually, the column is the byte number (thus it's not exactly right
for multi-byte characters).
for multibyte characters).
WARNING: When inserting or deleting text Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
@@ -994,7 +998,7 @@ Character classes:
\p printable character (see 'isprint' option) */\p*
\P like "\p", but excluding digits */\P*
NOTE: the above also work for multi-byte characters. The ones below only
NOTE: the above also work for multibyte characters. The ones below only
match ASCII characters, as indicated by the range.
*whitespace* *white-space*
@@ -1131,9 +1135,9 @@ x A single character, with no special meaning, matches itself
a list of at least one character, each of which is either '-', '.',
'/', alphabetic, numeric, '_' or '~'.
These items only work for 8-bit characters, except [:lower:] and
[:upper:] also work for multi-byte characters when using the new
[:upper:] also work for multibyte characters when using the new
regexp engine. See |two-engines|. In the future these items may
work for multi-byte characters. For now, to get all "alpha"
work for multibyte characters. For now, to get all "alpha"
characters you can use: [[:lower:][:upper:]].
The "Func" column shows what library function is used. The
@@ -1257,8 +1261,8 @@ When working with expression evaluation, a <NL> character in the pattern
matches a <NL> in the string. The use of "\n" (backslash n) to match a <NL>
doesn't work there, it only works to match text in the buffer.
*pattern-multi-byte*
Patterns will also work with multi-byte characters, mostly as you would
*pattern-multi-byte* *pattern-multibyte*
Patterns will also work with multibyte characters, mostly as you would
expect. But invalid bytes may cause trouble, a pattern with an invalid byte
will probably never match.
+64 -14
View File
@@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Jan 14
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Sep 19
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -437,9 +437,13 @@ settings are described below, in |netrw-browser-options|, and in
*g:netrw_silent* =0 : transfers done normally
=1 : transfers done silently
*g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one
*g:netrw_use_errorwindow* =2: messages from netrw will use a popup window
Move the mouse and pause to remove the popup window.
(default value if popup windows are availble)
=1 : messages from netrw will use a separate one
line window. This window provides reliable
delivery of messages. (default)
delivery of messages.
(default value if popup windows are not availble)
=0 : messages from netrw will use echoerr ;
messages don't always seem to show up this
way, but one doesn't have to quit the window.
@@ -725,6 +729,8 @@ just as easily as if they were local files! >
See |netrw-activate| for more on how to encourage your vim to use plugins
such as netrw.
For password-free use of scp:, see |netrw-ssh-hack|.
==============================================================================
7. Ex Commands *netrw-ex* {{{1
@@ -1063,7 +1069,7 @@ QUICK HELP *netrw-quickhelp* {{{2
Reverse sorting order.........................|netrw-r|
*netrw-quickmap* *netrw-quickmaps*
*netrw-quickmap* *netrw-quickmaps*
QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
>
--- ----------------- ----
@@ -1080,7 +1086,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
a Cycles between normal display, |netrw-a|
hiding (suppress display of files matching g:netrw_list_hide)
and showing (display only files which match g:netrw_list_hide)
c Make browsing directory the current directory |netrw-c|
cd Make browsing directory the current directory |netrw-cd|
C Setting the editing window |netrw-C|
d Make a directory |netrw-d|
D Attempt to remove the file(s)/directory(ies) |netrw-D|
@@ -2098,7 +2104,7 @@ the two directories the same, use the "cd" map (type cd). That map will
set Vim's notion of the current directory to netrw's current browsing
directory.
*netrw-c* : This map's name has been changed from "c" to cd (see |netrw-cd|).
|netrw-cd|: This map's name was changed from "c" to cd (see |netrw-cd|).
This change was done to allow for |netrw-cb| and |netrw-cB| maps.
Associated setting variable: |g:netrw_keepdir|
@@ -2753,7 +2759,7 @@ your browsing preferences. (see also: |netrw-settings|)
=0 keep the current directory the same as the
browsing directory.
The current browsing directory is contained in
b:netrw_curdir (also see |netrw-c|)
b:netrw_curdir (also see |netrw-cd|)
*g:netrw_keepj* ="keepj" (default) netrw attempts to keep the
|:jumps| table unaffected.
@@ -3124,7 +3130,8 @@ a file using the local browser (by putting the cursor on it) and pressing
Related topics:
* To see what the current directory is, use |:pwd|
* To make the currently browsed directory the current directory, see |netrw-c|
* To make the currently browsed directory the current directory, see
|netrw-cd|
* To automatically make the currently browsed directory the current
directory, see |g:netrw_keepdir|.
@@ -3799,9 +3806,15 @@ netrw:
or
http://vim.sourceforge.net/scripts/script.php?script_id=120
Decho.vim is provided as a "vimball"; see |vimball-intro|.
Decho.vim is provided as a "vimball"; see |vimball-intro|. You
should edit the Decho.vba.gz file and source it in: >
2. Edit the <netrw.vim> file by typing: >
vim Decho.vba.gz
:so %
:q
<
2. To turn on debug tracing in netrw, then edit the <netrw.vim>
file by typing: >
vim netrw.vim
:DechoOn
@@ -3823,14 +3836,34 @@ netrw:
read/write your file over the network in a separate tab or
server vim window.
To save the file, use >
Change the netrw.vimrc file to include the Decho plugin: >
set nocp
so $HOME/.vim/plugin/Decho.vim
so $HOME/.vim/plugin/netrwPlugin.vim
<
You should continue to run vim with >
vim -u netrw.vimrc --noplugins -i NONE [some path here]
<
to avoid entanglements with options and other plugins.
To save the file: under linux, the output will be in a separate
remote server window; in it, just save the file with >
:w! DBG
< Under a vim that doesn't support clientserver, your debugging
output will appear in another tab: >
:tabnext
:set bt=
:w! DBG
<
Furthermore, it'd be helpful if you would type >
< Furthermore, it'd be helpful if you would type >
:Dsep <command>
< where <command> is the command you're about to type next,
thereby making it easier to associate which part of the
debugging trace is due to which command.
@@ -3838,17 +3871,34 @@ netrw:
Please send that information to <netrw.vim>'s maintainer along
with the o/s you're using and the vim version that you're using
(see |:version|) (remove the embedded NOSPAM first) >
NcampObell@SdrPchip.AorgM-NOSPAM
<
==============================================================================
12. History *netrw-history* {{{1
v170: Mar 11, 2020 * (reported by Reiner Herrmann) netrw+tree
would not hide with the ^\..* pattern
correctly.
* (Marcin Szamotulski) NetrwOptionRestore
did not restore options correctly that
had a single quote in the option string.
Apr 13, 2020 * implemented error handling via popup
windows (see |popup_beval()|)
Apr 30, 2020 * (reported by Manatsu Takahashi) while
using Lexplore, a modified file could
be overwritten. Sol'n: will not overwrite,
but will emit an |E37| (although one cannot
add an ! to override)
Jun 07, 2020 * (reported by Jo Totland) repeatedly invoking
:Lexplore and quitting it left unused
hidden buffers. Netrw will now set netrw
buffers created by :Lexplore to |bh|=wipe.
v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
(|netrw-x|) would throw an error when
attempting to open a local directory.
v168: Dec 12, 2019 * scp timeout error message not reported,
hopefully now fixed (Shane Xb Qian)
v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
That causes problems with the clipboard.
Now restores occurs only if @* or @+ have
@@ -4306,4 +4356,4 @@ netrw:
==============================================================================
Modelines: {{{1
vim:tw=78:ts=8:noet:ft=help:norl:fdm=marker
vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker
+7 -1
View File
@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2020 Jul 27
*popup.txt* For Vim version 8.2. Last change: 2020 Sep 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -915,6 +915,12 @@ but since many keys start with an Esc character, there may be a delay before
Vim recognizes the Esc key. If you do use Esc, it is recommended to set the
'ttimeoutlen' option to 100 and set 'timeout' and/or 'ttimeout'.
*popup-filter-errors*
If the filter function can't be called, e.g. because the name is wrong, then
the popup is closed. If the filter causes an error then it is assumed to
return zero. If this happens three times in a row the popup is closed. If
the popup gives errors fewer than 10% of the calls then it won't be closed.
POPUP CALLBACK *popup-callback*
+7 -7
View File
@@ -1,4 +1,4 @@
*print.txt* For Vim version 8.2. Last change: 2019 Dec 17
*print.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -114,7 +114,7 @@ If 'printencoding' is empty or Vim cannot find the file then it will use
encoding file. If Vim is unable to find a character encoding file then it
will use the "latin1" print character encoding file.
When 'encoding' is set to a multi-byte encoding, Vim will try to convert
When 'encoding' is set to a multibyte encoding, Vim will try to convert
characters to the printing encoding for printing (if 'printencoding' is empty
then the conversion will be to latin1). Conversion to a printing encoding
other than latin1 will require Vim to be compiled with the |+iconv| feature.
@@ -269,7 +269,7 @@ Japanese text you would do the following; >
:set printmbcharset=JIS_X_1983
If 'printmbcharset' is not one of the above values then it is assumed to
specify a custom multi-byte character set and no check will be made that it is
specify a custom multibyte character set and no check will be made that it is
compatible with the value for 'printencoding'. Vim will look for a file
defining the character set in the "print" directory in 'runtimepath'.
@@ -304,7 +304,7 @@ printing of characters in the ASCII code range.
a:yes Use ASCII character set for codes in the ASCII
a:no (default) code range.
The following is an example of specifying two multi-byte fonts, one for normal
The following is an example of specifying two multibyte fonts, one for normal
and italic printing and one for bold and bold-italic printing, and using
Courier to print codes in the ASCII code range but using the national
character set: >
@@ -420,10 +420,10 @@ There are currently a number of limitations with PostScript printing:
possible to get all the characters in an encoding to print by installing a
new version of the Courier font family.
- Multi-byte support - Currently Vim will try to convert multi-byte characters
- Multi-byte support - Currently Vim will try to convert multibyte characters
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
empty). Any characters that are not successfully converted are shown as
unknown characters. Printing will fail if Vim cannot convert the multi-byte
unknown characters. Printing will fail if Vim cannot convert the multibyte
to the 8-bit encoding.
==============================================================================
@@ -508,7 +508,7 @@ print ASCII text using the national character set you may see some unexpected
characters. If you want true ASCII code printing then you need to configure
Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
It is possible to define your own multi-byte character set although this
It is possible to define your own multibyte character set although this
should not be attempted lightly. A discussion on the process if beyond the
scope of these help files. You can find details on CMap (character map) files
in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',
+2 -2
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
+3 -3
View File
@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.2. Last change: 2020 Jun 10
*quickref.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -698,7 +698,7 @@ Short explanation of each option: *option-list*
'eventignore' 'ei' autocommand events that are ignored
'expandtab' 'et' use spaces when <Tab> is inserted
'exrc' 'ex' read .vimrc and .exrc in the current directory
'fileencoding' 'fenc' file encoding for multi-byte text
'fileencoding' 'fenc' file encoding for multibyte text
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
@@ -732,7 +732,7 @@ Short explanation of each option: *option-list*
'grepprg' 'gp' program to use for ":grep"
'guicursor' 'gcr' GUI: settings for cursor shape and blinking
'guifont' 'gfn' GUI: Name(s) of font(s) to be used
'guifontset' 'gfs' GUI: Names of multi-byte fonts to be used
'guifontset' 'gfs' GUI: Names of multibyte fonts to be used
'guifontwide' 'gfw' list of font names for double-wide characters
'guiheadroom' 'ghr' GUI: pixels room for window decorations
'guioptions' 'go' GUI: Which components and options are used
+3 -3
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)
+3 -3
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
@@ -643,7 +643,7 @@ 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 choose 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
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
+5 -1
View File
@@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.2. Last change: 2019 Nov 30
*sign.txt* For Vim version 8.2. Last change: 2020 Aug 31
VIM REFERENCE MANUAL by Gordon Prieur
@@ -85,6 +85,10 @@ When the line on which the sign is placed is deleted, the sign is moved to the
next line (or the last line of the buffer, if there is no next line). When
the delete is undone the sign does not move back.
When a sign with line highlighting and 'cursorline' highlighting are both
present, if the priority is 100 or more then the sign highlighting takes
precedence, otherwise the 'cursorline' highlighting.
==============================================================================
2. Commands *sign-commands* *:sig* *:sign*
+3 -3
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
@@ -887,7 +887,7 @@ time ":mkspell" is used. Vim will then convert everything to 'encoding' and
generate a spell file for 'encoding'. If some of the used characters to not
fit in 'encoding' you will get an error message.
*spell-affix-mbyte*
When using a multi-byte encoding it's possible to use more different affix
When using a multibyte encoding it's possible to use more different affix
flags. But Myspell doesn't support that, thus you may not want to use it
anyway. For compatibility use an 8-bit encoding.
@@ -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
+3 -2
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.2. Last change: 2020 Jul 28
*syntax.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4348,7 +4348,7 @@ Notes:
- A negative offset for an end pattern may not always work, because the end
pattern may be detected when the highlighting should already have stopped.
- Before Vim 7.2 the offsets were counted in bytes instead of characters.
This didn't work well for multi-byte characters, so it was changed with the
This didn't work well for multibyte characters, so it was changed with the
Vim 7.2 release.
- The start of a match cannot be in a line other than where the pattern
matched. This doesn't work: "a\nb"ms=e. You can make the highlighting
@@ -4809,6 +4809,7 @@ in their own color.
highlighting for groups added by the user!
Uses the current value of 'background' to decide which
default colors to use.
If there was a default link, restore it. |:hi-link|
:hi[ghlight] clear {group-name}
:hi[ghlight] {group-name} NONE
+1 -1
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
+38 -3
View File
@@ -1998,6 +1998,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:<cWORD> cmdline.txt /*:<cWORD>*
:<cexpr> cmdline.txt /*:<cexpr>*
:<cfile> cmdline.txt /*:<cfile>*
:<client> cmdline.txt /*:<client>*
:<cword> cmdline.txt /*:<cword>*
:<sfile> cmdline.txt /*:<sfile>*
:<sflnum> cmdline.txt /*:<sflnum>*
@@ -3187,6 +3188,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:sta windows.txt /*:sta*
:stag windows.txt /*:stag*
:star repeat.txt /*:star*
:star-visual-range cmdline.txt /*:star-visual-range*
:start insert.txt /*:start*
:startgreplace insert.txt /*:startgreplace*
:startinsert insert.txt /*:startinsert*
@@ -3524,6 +3526,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->*
@@ -3655,6 +3658,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<cexpr> cmdline.txt /*<cexpr>*
<cfile> cmdline.txt /*<cfile>*
<character> intro.txt /*<character>*
<client> cmdline.txt /*<client>*
<count> map.txt /*<count>*
<cword> cmdline.txt /*<cword>*
<f-args> map.txt /*<f-args>*
@@ -3684,6 +3688,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<mods> map.txt /*<mods>*
<nomodeline> autocmd.txt /*<nomodeline>*
<q-args> map.txt /*<q-args>*
<q-mods> map.txt /*<q-mods>*
<range> map.txt /*<range>*
<reg> map.txt /*<reg>*
<register> map.txt /*<register>*
@@ -3863,6 +3868,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]*
@@ -3946,6 +3952,8 @@ E10 message.txt /*E10*
E100 diff.txt /*E100*
E101 diff.txt /*E101*
E102 diff.txt /*E102*
E1023 vim9.txt /*E1023*
E1024 vim9.txt /*E1024*
E103 diff.txt /*E103*
E104 digraph.txt /*E104*
E1042 vim9.txt /*E1042*
@@ -3958,7 +3966,12 @@ E1092 vim9.txt /*E1092*
E1094 vim9.txt /*E1094*
E11 cmdline.txt /*E11*
E110 eval.txt /*E110*
E1109 eval.txt /*E1109*
E111 eval.txt /*E111*
E1110 eval.txt /*E1110*
E1111 eval.txt /*E1111*
E1112 eval.txt /*E1112*
E1113 eval.txt /*E1113*
E112 eval.txt /*E112*
E113 eval.txt /*E113*
E114 eval.txt /*E114*
@@ -4116,7 +4129,6 @@ E252 options.txt /*E252*
E253 mbyte.txt /*E253*
E254 message.txt /*E254*
E255 sign.txt /*E255*
E256 message.txt /*E256*
E257 if_cscop.txt /*E257*
E258 remote.txt /*E258*
E259 if_cscop.txt /*E259*
@@ -4489,6 +4501,7 @@ E607 eval.txt /*E607*
E608 eval.txt /*E608*
E609 if_cscop.txt /*E609*
E61 pattern.txt /*E61*
E610 editing.txt /*E610*
E612 sign.txt /*E612*
E613 print.txt /*E613*
E614 editing.txt /*E614*
@@ -5802,6 +5815,7 @@ char2nr() eval.txt /*char2nr()*
characterwise motion.txt /*characterwise*
characterwise-register change.txt /*characterwise-register*
characterwise-visual visual.txt /*characterwise-visual*
charclass() eval.txt /*charclass()*
charconvert_from-variable eval.txt /*charconvert_from-variable*
charconvert_to-variable eval.txt /*charconvert_to-variable*
charity uganda.txt /*charity*
@@ -6398,6 +6412,7 @@ extension-removal cmdline.txt /*extension-removal*
extensions-improvements todo.txt /*extensions-improvements*
external-editor gui_mac.txt /*external-editor*
f motion.txt /*f*
false vim9.txt /*false*
false-variable eval.txt /*false-variable*
faq intro.txt /*faq*
farsi farsi.txt /*farsi*
@@ -6790,6 +6805,7 @@ g:html_use_encoding syntax.txt /*g:html_use_encoding*
g:html_use_input_for_pc syntax.txt /*g:html_use_input_for_pc*
g:html_use_xhtml syntax.txt /*g:html_use_xhtml*
g:html_whole_filler syntax.txt /*g:html_whole_filler*
g:macvim_default_touchbar_characterpicker gui_mac.txt /*g:macvim_default_touchbar_characterpicker*
g:macvim_default_touchbar_fullscreen gui_mac.txt /*g:macvim_default_touchbar_fullscreen*
g:netrw_altfile pi_netrw.txt /*g:netrw_altfile*
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
@@ -6950,6 +6966,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??*
@@ -7033,6 +7050,7 @@ gettabinfo() eval.txt /*gettabinfo()*
gettabvar() eval.txt /*gettabvar()*
gettabwinvar() eval.txt /*gettabwinvar()*
gettagstack() eval.txt /*gettagstack()*
gettext() eval.txt /*gettext()*
getwininfo() eval.txt /*getwininfo()*
getwinpos() eval.txt /*getwinpos()*
getwinposx() eval.txt /*getwinposx()*
@@ -7790,8 +7808,13 @@ macvim-tablabel gui_mac.txt /*macvim-tablabel*
macvim-todo gui_mac.txt /*macvim-todo*
macvim-toolbar gui_mac.txt /*macvim-toolbar*
macvim-touchbar gui_mac.txt /*macvim-touchbar*
macvim-touchbar-characterpicker gui_mac.txt /*macvim-touchbar-characterpicker*
macvim-touchbar-defaults gui_mac.txt /*macvim-touchbar-defaults*
macvim-touchbar-emoji gui_mac.txt /*macvim-touchbar-emoji*
macvim-touchbar-fullscreen gui_mac.txt /*macvim-touchbar-fullscreen*
macvim-touchbar-icon gui_mac.txt /*macvim-touchbar-icon*
macvim-touchbar-separator gui_mac.txt /*macvim-touchbar-separator*
macvim-touchbar-title gui_mac.txt /*macvim-touchbar-title*
macvim-url-handler gui_mac.txt /*macvim-url-handler*
macvim-user-defaults gui_mac.txt /*macvim-user-defaults*
macvim-window-title gui_mac.txt /*macvim-window-title*
@@ -7867,6 +7890,7 @@ matchaddpos() eval.txt /*matchaddpos()*
matcharg() eval.txt /*matcharg()*
matchdelete() eval.txt /*matchdelete()*
matchend() eval.txt /*matchend()*
matchfuzzy() eval.txt /*matchfuzzy()*
matchit-install usr_05.txt /*matchit-install*
matchlist() eval.txt /*matchlist()*
matchparen pi_paren.txt /*matchparen*
@@ -8047,7 +8071,6 @@ netrw-browser-options pi_netrw.txt /*netrw-browser-options*
netrw-browser-settings pi_netrw.txt /*netrw-browser-settings*
netrw-browser-var pi_netrw.txt /*netrw-browser-var*
netrw-browsing pi_netrw.txt /*netrw-browsing*
netrw-c pi_netrw.txt /*netrw-c*
netrw-c-tab pi_netrw.txt /*netrw-c-tab*
netrw-cB pi_netrw.txt /*netrw-cB*
netrw-cadaver pi_netrw.txt /*netrw-cadaver*
@@ -8282,6 +8305,7 @@ new-more-highlighting version7.txt /*new-more-highlighting*
new-more-unicode version7.txt /*new-more-unicode*
new-multi-byte version5.txt /*new-multi-byte*
new-multi-lang version6.txt /*new-multi-lang*
new-multibyte version5.txt /*new-multibyte*
new-netrw-explore version7.txt /*new-netrw-explore*
new-network-files version6.txt /*new-network-files*
new-omni-completion version7.txt /*new-omni-completion*
@@ -8295,7 +8319,7 @@ new-persistent-undo version7.txt /*new-persistent-undo*
new-plugins version6.txt /*new-plugins*
new-popup-window version8.txt /*new-popup-window*
new-posix version7.txt /*new-posix*
new-print-multi-byte version7.txt /*new-print-multi-byte*
new-print-multibyte version7.txt /*new-print-multibyte*
new-printing version6.txt /*new-printing*
new-python3 version7.txt /*new-python3*
new-regexp-engine version7.txt /*new-regexp-engine*
@@ -8433,12 +8457,14 @@ 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*
pattern-delimiter change.txt /*pattern-delimiter*
pattern-multi-byte pattern.txt /*pattern-multi-byte*
pattern-multi-items pattern.txt /*pattern-multi-items*
pattern-multibyte pattern.txt /*pattern-multibyte*
pattern-overview pattern.txt /*pattern-overview*
pattern-searches pattern.txt /*pattern-searches*
pattern.txt pattern.txt /*pattern.txt*
@@ -8509,6 +8535,7 @@ popup-callback popup.txt /*popup-callback*
popup-close popup.txt /*popup-close*
popup-examples popup.txt /*popup-examples*
popup-filter popup.txt /*popup-filter*
popup-filter-errors popup.txt /*popup-filter-errors*
popup-filter-mode popup.txt /*popup-filter-mode*
popup-function-details popup.txt /*popup-function-details*
popup-functions popup.txt /*popup-functions*
@@ -8602,6 +8629,7 @@ progname-variable eval.txt /*progname-variable*
progpath-variable eval.txt /*progpath-variable*
progress.vim syntax.txt /*progress.vim*
prompt-buffer channel.txt /*prompt-buffer*
prompt_getprompt() eval.txt /*prompt_getprompt()*
prompt_setcallback() eval.txt /*prompt_setcallback()*
prompt_setinterrupt() eval.txt /*prompt_setinterrupt()*
prompt_setprompt() eval.txt /*prompt_setprompt()*
@@ -8950,6 +8978,7 @@ set-option options.txt /*set-option*
set-spc-auto spell.txt /*set-spc-auto*
setbufline() eval.txt /*setbufline()*
setbufvar() eval.txt /*setbufvar()*
setcellwidths() eval.txt /*setcellwidths()*
setcharsearch() eval.txt /*setcharsearch()*
setcmdpos() eval.txt /*setcmdpos()*
setenv() eval.txt /*setenv()*
@@ -9760,6 +9789,7 @@ toupper() eval.txt /*toupper()*
tr() eval.txt /*tr()*
trim() eval.txt /*trim()*
trojan-horse starting.txt /*trojan-horse*
true vim9.txt /*true*
true-variable eval.txt /*true-variable*
trunc() eval.txt /*trunc()*
try-conditionals eval.txt /*try-conditionals*
@@ -9771,6 +9801,8 @@ 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-checking vim9.txt /*type-checking*
type-inference vim9.txt /*type-inference*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
@@ -10068,6 +10100,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*
@@ -10141,6 +10174,8 @@ vim.vim syntax.txt /*vim.vim*
vim7 version7.txt /*vim7*
vim8 version8.txt /*vim8*
vim9 vim9.txt /*vim9*
vim9-classes vim9.txt /*vim9-classes*
vim9-const vim9.txt /*vim9-const*
vim9-declaration vim9.txt /*vim9-declaration*
vim9-declarations usr_46.txt /*vim9-declarations*
vim9-differences vim9.txt /*vim9-differences*
+5 -3
View File
@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.2. Last change: 2020 Jun 06
*terminal.txt* For Vim version 8.2. Last change: 2020 Sep 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -476,9 +476,11 @@ term_dumpdiff({filename}, {filename} [, {options}])
"term_name" name to use for the buffer name, instead
of the first file name.
"term_rows" vertical size to use for the terminal,
instead of using 'termwinsize'
instead of using 'termwinsize', but
respecting the minimal size
"term_cols" horizontal size to use for the terminal,
instead of using 'termwinsize'
instead of using 'termwinsize', but
respecting the minimal size
"vertical" split the window vertically
"curwin" use the current window, do not split the
window; fails if the current buffer
+17 -4
View File
@@ -1,4 +1,4 @@
*testing.txt* For Vim version 8.2. Last change: 2020 Jul 11
*testing.txt* For Vim version 8.2. Last change: 2020 Sep 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -291,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} [, {context}]]]])
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|.
@@ -311,13 +312,25 @@ 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.
When {context} is present it is used as a pattern and matched
against the context (script name or function name) where
{lnum} is located in.
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|.
+95 -66
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2020 Aug 05
*todo.txt* For Vim version 8.2. Last change: 2020 Sep 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,26 +38,58 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
Why does Test_invalid_sid() not work in the GUI?
Add matchfuzzy() and matchfuzzypos() Yegappan, #6947
should be ready now
Making everything work:
- Check that when sourcing a Vim9 script, only the global items can be used.
- Make string indexes character indexes instead of byte indexes. (#6574)
explain how to use byte index when needed. Use blob?
- :put with a "=" register argument doesn't work, need to find the expression
and compile it. (#6397)
- 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.
- Fix memory leak in test_vim9_func (through compile_nested_function and
get_lambda_tv())
- Fix memory leaks in test_vim9_script
- At the Vim9 script level, keep script variables local to the block they are
declared in, like in Javascript (using :let).
-> Need to remember what variables were declared and delete them when
leaving the block.
-> if a function is defined it may need to keep the block-locals
Then Implement { } block at the script level.
- Recognize call to assert_fails() and execute it in the function context?
Won't work if the command itself fails, not an expression failure:
assert_fails("unknown", "E99:")
Use try/catch is complicated:
let did_catch = false
try
unknown
catch
assert_caught('E99:')
did_catch = true
endtry
assert_true('did_catch')
Add a new command,
assertfail
unknown
endassertfail E99:.*unknown
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- In autocmd: use legacy syntax, not whatever the current script uses?
- need to check type when a declaration specifies a type: #6507
let nr: number = 'asdf'
- Make sure that in vim9script a function call without namespace only finds
the script-local function, not a global one.
- Make sure that where a callback is expected a function can be used (without
quotes). E.g. sort() and map(). Also at the script level.
- assignment to more complex lval: list[1][2][3] = 8
- ":put" with ISN_PUT does not handle range correctly, e.g. ":$-2put".
Add command to parse range at runtime?
- 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()
- Slice of list: [1, 2, 3][1:2].
- give error for variable name:
let p = function('NoSuchFunc')
- Give runtime error if function argument is wrong.
@@ -69,6 +101,9 @@ Making everything work:
- 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.
- Does this work already: can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
- 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
@@ -79,14 +114,11 @@ 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:
islocked()
- possible memory leak in test_vim9_func through compile_nested_function.
- memory leaks in test_vim9_expr
- memory leaks in test_vim9_script
- memory leaks in test_vim9_cmd
- When evaluating constants for script variables, some functions could work:
has('asdf'), len('string')
- Implement "as Name" in "import Item as Name from ..."
@@ -103,8 +135,6 @@ Making everything work:
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.
@@ -113,26 +143,23 @@ Also:
- Make Foo.Bar() work to call the dict function. (#5676)
- Error in any command in "vim9script" aborts sourcing.
- Find a way to test expressions in legacy and Vim9 script without duplication
- Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script
- 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)
- Test: Function declared inside a :def function is local, disappears at the
end of the function. Unless g: is used, just like with variables.
- implement :type
- import type declaration?
- implement class
- implement interface
- predefined class: Promise<T>
- Future work: See |vim9-classes|
- implement enum
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varags idx)
- Make debugging work - at least per function. Need to recompile a function
to step through it line-by-line? Evaluate the stack and variables on the
stack?
- Make profiling work - Add ISN_PROFILE instructions after every line?
- List commands when 'verbose' is set or :verbose is used.
Further improvements:
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
@@ -155,6 +182,8 @@ Popup windows:
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
@@ -173,10 +202,8 @@ Text properties:
- :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)
- Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
- Text properties spanning more than one line. #5683
- See remarks at top of src/textprop.c
'incsearch' with :s:
@@ -253,23 +280,28 @@ Terminal emulator window:
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
Error numbers available:
E610, E611, E653
Error numbers available: E653
Clean up empty entries in testdir/Make_all.mak
Patch to implement the vimtutor with a plugin: #6414
Was originally written by Felipe Morales.
Remove SPACE_IN_FILENAME ? It is only used for completion.
Patch to use collaction based sorting. (Christian Brabandt, #6229)
Patch to use collation based sorting. (Christian Brabandt, #6229)
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
Patch for blockwise paste reporting changes: #6660.
Expanding <mods> should put the tab number from cmdmod.tab before "tab".
Any way to convert "$" back by using a special value? (#6901)
Can we detect true color support? https://gist.github.com/XVilka/8346728
Try setting a color then request the current color, like using t_u7.
Check out PR #543 (Roland Puntaier).
Patch for multi-byte characters in langmap and applying a mapping on them.
Patch for multibyte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution? Need to cleanup langmap behavior:
- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
@@ -359,13 +391,13 @@ When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but
":find testfile.c" does not ignore case.
Might be related to #6088.
Error for reverse range when using :vimgrep in file "[id-01] file.txt".
(#6919)
When changing the crypt key the buffer should be considered modified.
Like when changing 'fileformat'. Save the old key in save_file_ff().
(Ninu-Ciprian Marginean)
Patch to implement the vimtutor with a plugin: #6414
Was originally writtten by Felipe Morales.
Strange sequence of BufWipeout and BufNew events while doing omni-complete.
(Paul Jolly, #5656)
Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
@@ -388,6 +420,7 @@ 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.
Also for ":profile".
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
Dec 19)
@@ -402,6 +435,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)
@@ -413,6 +449,7 @@ Should do current file first and not split it up when more results are found.
Undo history wrong when ":next file" re-uses a buffer. (#5426)
ex_next() should pass flag to do_argfile(), then to do_ecmd().
Is there a test for this?
Help for ":argadd fname" says that if "fname" is already in the argument list
that entry is used. But instead it's always added. (#6210)
@@ -474,7 +511,7 @@ Better: use the "z" prefix. or ]t) and [t(.
Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534.
Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
Visual highlight not removed when 'display' is "lastline" and line doesn't
fit. (Kevin Lawler, #4457)
Current position in the changelist should be local to the buffer. (#2173)
@@ -1209,8 +1246,6 @@ Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15,
Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
Completion for :!cmd shows each match twice. #1435
GTK: When adding a timer from 'balloonexpr' it won't fire, because
g_main_context_iteration() doesn't return. Need to trigger an event when the
timer expires.
@@ -1220,7 +1255,7 @@ Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532)
Rule to use "^" for statusline does not work if a space is defined with
highlighting for both stl and stlnc. Patch by Ken Hamada (itchyny, 2016 Dec 11)
8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
8 "stl" and "stlnc" in 'fillchars' don't work for multibyte characters.
Patch by Christian Wellenbrock, 2013 Jul 5.
Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
@@ -1371,7 +1406,7 @@ Regexp problems:
- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
(Lech Lorens, 2014 Feb 3)
- Issue 164: freeze on regexp search.
- Ignorecase not handled properly for multi-byte characters. (Axel Bender,
- Ignorecase not handled properly for multibyte characters. (Axel Bender,
2013 Dec 11)
- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin
Szamotulski; Remark from Brett 2014 Jan 6 and 7.
@@ -1409,9 +1444,6 @@ Undo message is not always properly displayed. Patch by Ken Takata, 2013 oct
3. Doesn't work properly according to Yukihiro Nakadaira.
Also see #1635.
When 'keywordprg' starts with ":" the argument is still escaped as a shell
command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
Idea from Sven: record sequence of keys. Useful to show others what they are
doing (look over the shoulder), and also to see what happened.
Probably list of keystrokes, with some annotations for mode changes.
@@ -1586,7 +1618,7 @@ Patch to add :mapgroup, put mappings in a group like augroup.
Value returned by virtcol() changes depending on how lines wrap. This is
inconsistent with the documentation.
Value of virtcol() for '[ and '] depend on multi-byte character.
Value of virtcol() for '[ and '] depend on multibyte character.
(Luchr, #277)
Can we cache the syntax attributes, so that updates for 'relativenumber' and
@@ -2118,7 +2150,7 @@ Also for another example (ZyX, 2011 Jan 24)
Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
"0g@$" puts '] on last byte of multibyte. (ZyX, 2011 Jan 22)
Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
@@ -2625,7 +2657,7 @@ work, the backslash is removed, assuming that it escapes the (. (Valery
Kondakoff, 2009 May 13)
Win32: Using "gvim --remote-tab-silent elŝuti.txt" doesn't work, the
multi-byte character isn't passed and edits elsuti.txt.
multibyte character isn't passed and edits elsuti.txt.
(Raúl Núñez de Arenas Coronado, 2015 Dec 18)
Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
@@ -2863,9 +2895,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)
@@ -3189,7 +3218,7 @@ Awaiting updated patches:
7 ATTENTION dialog choices are more logical when "Delete it" appears
before "Quit". Patch by Robert Webb, 2004 May 3.
- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work
for multi-byte characters.
for multibyte characters.
- Win32: add options to print dialog. Patch from Vipin Aravind.
- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
use the patch that keeps using HLF_8 if HLF_WS has not
@@ -3685,8 +3714,8 @@ Macintosh:
8 'hkmap' should probably be global-local.
8 Using ":s" in a function changes the previous replacement string. Save
"old_sub" in save_search_patterns()?
8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
is a multi-byte character.
8 Should allow multibyte characters for the delimiter: ":s+a+b+" where "+"
is a multibyte character.
8 When appending to a file and 'patchmode' isn't empty, a backup file is
always written, even when the original file already exists.
9 When getting focus while writing a large file, could warn for this file
@@ -3841,7 +3870,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.
that the user knows the files have to be deleted.
I can't reproduce these (if you can, let me know how!):
@@ -3989,7 +4018,7 @@ Documentation:
- change to cursor position and curswant
- if it can be undone (u/CTRL-R) and redone (.)
- how it works for folded lines
- how it works with multi-byte characters
- how it works with multibyte characters
9 In change.txt, remark about Javadoc isn't right. Right alignment would
work too.
8 Spread the windows commands over the other files. For example, ":stag"
@@ -4012,7 +4041,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).
@@ -4225,8 +4254,8 @@ Multi-byte characters:
8 Add configure option to be able to disable using the iconv library. (Udo
Schweigert)
9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
8 Should add test for using various commands with multi-byte characters.
8 'infercase' doesn't work with multi-byte characters.
8 Should add test for using various commands with multibyte characters.
8 'infercase' doesn't work with multibyte characters.
8 toupper() function doesn't handle byte count changes.
7 Searching and composing characters:
When searching, should order of composing characters be ignored?
@@ -4234,7 +4263,7 @@ Multi-byte characters:
characters can be manipulated.
8 Should implement 'delcombine' for command line editing.
8 Detect overlong UTF-8 sequences and handle them like illegal bytes.
8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multibyte
characters.
8 UTF-8: "r" in Visual mode doesn't take composing characters.
8 UTF-8: When there is a precomposed character in the font, use it instead
@@ -4258,14 +4287,14 @@ Multi-byte characters:
convert_input() for Mac GUI.
- Add mnemonics from RFC1345 longer than two characters.
Support CTRL-K _{mnemonic}_
- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup
- Make 'breakat' accept multibyte characters. Problem: can't use a lookup
table anymore (breakat_flags[]).
Simplistic solution: when 'formatoptions' contains "m" also break a line
at a multi-byte character >= 0x100.
at a multibyte character >= 0x100.
- Add the possibility to enter mappings which are used whenever normal text
could be entered. E.g., for "f" command. But not in Normal mode. Sort
of opposite of 'langmap'. Use ":amap" command?
- When breaking a line, take properties of multi-byte characters into
- When breaking a line, take properties of multibyte characters into
account. The "linebreak" program from Bruno Haible can do it:
ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
But it's very complicated...
@@ -5330,11 +5359,11 @@ Text objects:
8 Add test script for text object commands "aw", "iW", etc.
8 Add text object for part of a CamelHumpedWord and under_scored_word.
(Scott Graham) "ac" and "au"?
8 Add a text object for any kind of quoting, also with multi-byte
8 Add a text object for any kind of quoting, also with multibyte
characters. Option to specify what quotes are recognized (default: all)
use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like
'matchpairs'?
8 Add text object for any kind of parens, also multi-byte ones.
8 Add text object for any kind of parens, also multibyte ones.
8 Add a way to make an ":omap" for a user-defined text object. Requires
changing the starting position in oap->start.
8 Add "gp" and "gP" commands: insert text and make sure there is a single
@@ -5779,7 +5808,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.
@@ -6110,7 +6139,7 @@ Various improvements:
regexp which triggers auto-formatting (for one line).
":set autoformat=\\s$".
- Be able to redefine where a sentence stops. Use a regexp pattern?
- Support multi-byte characters for sentences. Example from Ben Peterson.
- Support multibyte characters for sentences. Example from Ben Peterson.
7 Add command "g)" to go to the end of a sentence, "g(" to go back to the
end of a sentence. (Servatius Brandt)
- Be able to redefine where a paragraph starts. For "[[" where the '{' is
+10 -9
View File
@@ -1,4 +1,4 @@
*usr_03.txt* For Vim version 8.2. Last change: 2020 Feb 29
*usr_03.txt* For Vim version 8.2. Last change: 2020 Sep 03
VIM USER MANUAL - by Bram Moolenaar
@@ -30,10 +30,11 @@ Table of contents: |usr_toc.txt|
To move the cursor forward one word, use the "w" command. Like most Vim
commands, you can use a numeric prefix to move past multiple words. For
example, "3w" moves three words. This figure shows how it works:
example, "3w" moves three words. This figure shows how it works (starting at
the position marked with "x"):
This is a line with example text ~
--->-->->----------------->
x-->-->->----------------->
w w w 3w
Notice that "w" moves to the start of the next word if it already is at the
@@ -41,15 +42,15 @@ start of a word.
The "b" command moves backward to the start of the previous word:
This is a line with example text ~
<----<--<-<---------<---
<----<--<-<---------<--x
b b b 2b b
There is also the "e" command that moves to the next end of a word and "ge",
which moves to the previous end of a word:
This is a line with example text ~
<- <--- -----> ---->
ge ge e e
<----<----x---->------------>
2ge ge e we
If you are at the last word of a line, the "w" command will take you to the
first word in the next line. Thus you can use this to move through a
@@ -82,12 +83,12 @@ an <End> key it will do the same thing.
The "^" command moves to the first non-blank character of the line. The "0"
command (zero) moves to the very first character of the line, and the <Home>
key does the same thing. In a picture:
key does the same thing. In a picture ("." indicates a space):
^
<------------
<-----------x
.....This is a line with example text ~
<----------------- --------------->
<----------------x x-------------->
0 $
(the "....." indicates blanks here)
+5 -5
View File
@@ -1,4 +1,4 @@
*usr_40.txt* For Vim version 8.2. Last change: 2020 Jul 28
*usr_40.txt* For Vim version 8.2. Last change: 2020 Sep 02
VIM USER MANUAL - by Bram Moolenaar
@@ -453,15 +453,15 @@ 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
"*.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.
The optional [++nested] flag allows for nesting of autocommands (see below),
and finally, {command} is the command to be executed.
EVENTS
@@ -578,7 +578,7 @@ trigger any new events. If you read a file in response to a FileChangedShell
event, it will not trigger the autocommands that would set the syntax, for
example. To make the events triggered, add the "nested" argument: >
:autocmd FileChangedShell * nested edit
:autocmd FileChangedShell * ++nested edit
EXECUTING AUTOCOMMANDS
+55 -50
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 30
VIM USER MANUAL - by Bram Moolenaar
@@ -327,9 +327,9 @@ Grouping is done with parentheses. No surprises here. Example: >
:echo (10 + 5) * 2
< 30 ~
Strings can be concatenated with ".". Example: >
Strings can be concatenated with ".." (see |expr6|). Example: >
:echo "foo" . "bar"
:echo "foo" .. "bar"
< foobar ~
When the ":echo" command gets multiple arguments, it separates them with a
@@ -496,9 +496,9 @@ So far the commands in the script were executed by Vim directly. The
very powerful way to build commands and execute them.
An example is to jump to a tag, which is contained in a variable: >
:execute "tag " . tag_name
:execute "tag " .. tag_name
The "." is used to concatenate the string "tag " with the value of variable
The ".." is used to concatenate the string "tag " with the value of variable
"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that
will be executed is: >
@@ -514,7 +514,7 @@ This jumps to the first line and formats all lines with the "=" operator.
To make ":normal" work with an expression, combine ":execute" with it.
Example: >
:execute "normal " . normal_commands
:execute "normal " .. normal_commands
The variable "normal_commands" must contain the Normal mode commands.
Make sure that the argument for ":normal" is a complete command. Otherwise
@@ -531,12 +531,12 @@ If you don't want to execute a string but evaluate it to get its expression
value, you can use the eval() function: >
:let optname = "path"
:let optval = eval('&' . optname)
:let optval = eval('&' .. optname)
A "&" character is prepended to "path", thus the argument to eval() is
"&path". The result will then be the value of the 'path' option.
The same thing can be done with: >
:exe 'let optval = &' . optname
:exe 'let optval = &' .. optname
==============================================================================
*41.6* Using functions
@@ -600,8 +600,10 @@ String manipulation: *string-functions*
strtrans() translate a string to make it printable
tolower() turn a string to lowercase
toupper() turn a string to uppercase
charclass() class of a character
match() position where a pattern matches in a string
matchend() position where a pattern match ends in a string
matchfuzzy() fuzzy matches a string in a list of strings
matchstr() match of a pattern in a string
matchstrpos() match and positions of a pattern in a string
matchlist() like matchstr() and also return submatches
@@ -611,6 +613,7 @@ String manipulation: *string-functions*
strchars() length of a string in characters
strwidth() size of string when displayed
strdisplaywidth() size of string when displayed, deals with tabs
setcellwidths() set character cell width overrides
substitute() substitute a pattern match with a string
submatch() get a specific match in ":s" and substitute()
strpart() get part of a string using byte index
@@ -626,6 +629,7 @@ String manipulation: *string-functions*
execute() execute an Ex command and get the output
win_execute() like execute() but in a specified window
trim() trim characters from a string
gettext() lookup message translation
List manipulation: *list-functions*
get() get an item without error for wrong index
@@ -1115,6 +1119,7 @@ Tags: *tag-functions*
settagstack() modify the tag stack of a window
Prompt Buffer: *promptbuffer-functions*
prompt_getprompt() get the effective prompt text for a buffer
prompt_setcallback() set prompt callback for a buffer
prompt_setinterrupt() set interrupt callback for a buffer
prompt_setprompt() set the prompt text for a buffer
@@ -1284,7 +1289,7 @@ Example: >
: let n = n + len(split(getline(lnum)))
: let lnum = lnum + 1
: endwhile
: echo "found " . n . " words"
: echo "found " .. n .. " words"
:endfunction
You can call this function with: >
@@ -1297,7 +1302,7 @@ It will be executed once and echo the number of words.
range, with the cursor in that line. Example: >
:function Number()
: echo "line " . line(".") . " contains: " . getline(".")
: echo "line " .. line(".") .. " contains: " .. getline(".")
:endfunction
If you call this function with: >
@@ -1321,11 +1326,11 @@ so on. The variable "a:0" contains the number of extra arguments.
:function Show(start, ...)
: echohl Title
: echo "start is " . a:start
: echo "start is " .. a:start
: echohl None
: let index = 1
: while index <= a:0
: echo " Arg " . index . " is " . a:{index}
: echo " Arg " .. index .. " is " .. a:{index}
: let index = index + 1
: endwhile
: echo ""
@@ -1733,10 +1738,10 @@ Another useful mechanism is the ":finally" command: >
:let tmp = tempname()
:try
: exe ".,$write " . tmp
: exe "!filter " . tmp
: exe ".,$write " .. tmp
: exe "!filter " .. tmp
: .,$delete
: exe "$read " . tmp
: exe "$read " .. tmp
:finally
: call delete(tmp)
:endtry
@@ -2044,9 +2049,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 +2067,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".
@@ -2087,8 +2092,8 @@ prepending it with "s:".
We will define a function that adds a new typing correction: >
30 function s:Add(from, correct)
31 let to = input("type the correction for " . a:from . ": ")
32 exe ":iabbrev " . a:from . " " . to
31 let to = input("type the correction for " .. a:from .. ": ")
32 exe ":iabbrev " .. a:from .. " " .. to
..
36 endfunction
@@ -2100,15 +2105,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 was 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 +2154,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
@@ -2193,7 +2198,7 @@ a few lines to count the number of corrections: >
30 function s:Add(from, correct)
..
34 let s:count = s:count + 1
35 echo s:count . " corrections now"
35 echo s:count .. " corrections now"
36 endfunction
First s:count is initialized to 4 in the script itself. When later the
@@ -2226,21 +2231,21 @@ 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
28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR>
29
30 function s:Add(from, correct)
31 let to = input("type the correction for " . a:from . ": ")
32 exe ":iabbrev " . a:from . " " . to
31 let to = input("type the correction for " .. a:from .. ": ")
32 exe ":iabbrev " .. a:from .. " " .. to
33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif
34 let s:count = s:count + 1
35 echo s:count . " corrections now"
35 echo s:count .. " corrections now"
36 endfunction
37
38 if !exists(":Correct")
@@ -2279,7 +2284,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 +2422,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 +2445,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:
@@ -2488,7 +2493,7 @@ should be undone. Set the b:undo_ftplugin variable to the commands that will
undo the settings in your filetype plugin. Example: >
let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<"
\ . "| unlet b:match_ignorecase b:match_words b:match_skip"
\ .. "| unlet b:match_ignorecase b:match_words b:match_skip"
Using ":setlocal" with "<" after the option name resets the option to its
global value. That is mostly the best way to reset the option value.
@@ -2609,17 +2614,17 @@ The following example shows how it's done: >
map <F19> :call BufNetWrite('something')<CR>
let s:did_load = 1
exe 'au FuncUndefined BufNet* source ' . expand('<sfile>')
exe 'au FuncUndefined BufNet* source ' .. expand('<sfile>')
finish
endif
function BufNetRead(...)
echo 'BufNetRead(' . string(a:000) . ')'
echo 'BufNetRead(' .. string(a:000) .. ')'
" read functionality here
endfunction
function BufNetWrite(...)
echo 'BufNetWrite(' . string(a:000) . ')'
echo 'BufNetWrite(' .. string(a:000) .. ')'
" write functionality here
endfunction
+7 -7
View File
@@ -1,4 +1,4 @@
*various.txt* For Vim version 8.2. Last change: 2020 Jul 10
*various.txt* For Vim version 8.2. Last change: 2020 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -92,7 +92,7 @@ g8 Print the hex values of the bytes used in the
encoding because it contains illegal bytes.
Does not wrap around the end of the file.
Note that when the cursor is on an illegal byte or the
cursor is halfway a multi-byte character the command
cursor is halfway a multibyte character the command
won't move the cursor.
*:p* *:pr* *:print* *E749*
@@ -145,16 +145,16 @@ g8 Print the hex values of the bytes used in the
:{range}z[+-^.=]{count} Display several lines of text surrounding the line
specified with {range}, or around the current line
if there is no {range}. If there is a {count}, that's
how many lines you'll see; if there is only one window
then twice the value of the 'scroll' option is used,
otherwise the current window height minus 3 is used.
how many lines you'll see; if there is no {count} and
only one window then twice the value of the 'scroll'
option is used, otherwise the current window height
minus 3 is used.
If there is a {count} the 'window' option is set to
its value.
:z can be used either alone or followed by any of
several punctuation marks. These have the following
effect:
several marks. These have the following effect:
mark first line last line new cursor line ~
---- ---------- --------- ------------
+27 -27
View File
@@ -1,4 +1,4 @@
*version5.txt* For Vim version 8.2. Last change: 2016 Feb 27
*version5.txt* For Vim version 8.2. Last change: 2020 Sep 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2133,12 +2133,12 @@ it is invoked.
Deleted the "os_archie" files, they were not working anyway.
Multi-byte support *new-multi-byte*
Multi-byte support *new-multi-byte* *new-multibyte*
------------------
MultiByte support for Win32 GUI. (Baek)
The 'fileencoding' option decides how the text in the file is encoded.
":ascii" works for multi-byte characters. Multi-byte characters work on
":ascii" works for multibyte characters. Multi-byte characters work on
Windows 95, even when using the US version. (Aaron)
Needs to be enabled in feature.h.
This has not been tested much yet!
@@ -3671,10 +3671,10 @@ For the ":clist" command, you can scroll backwards with "b" (one screenful),
"u" (half a screenful) and "k" (one line).
Multi-byte support:
- X-input method for multi-byte characters. And various fixes for multi-byte
- X-input method for multibyte characters. And various fixes for multibyte
support. (Nam)
- Hangul input method feature: |hangul|. (Nam)
- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul
- Cleaned up configuration of multibyte support, XIM, fontset and Hangul
input. Each is now configurable separately.
- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam)
- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam)
@@ -3682,10 +3682,10 @@ Multi-byte support:
- First attempt to include support for SJIS encoding. (Nagano)
- When a double-byte character doesn't fit at the end of the line, put a "~"
there and print it on the next line.
- Optimize output of multi-byte text. (Park)
- Optimize output of multibyte text. (Park)
- Win32 IME: preedit style is like over-the-spot. (Nagano)
- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano)
- GUI Athena: file selection dialog can display multi-byte characters.
- GUI Athena: file selection dialog can display multibyte characters.
(Nagano)
- Selection reply for XA_TEXT as XA_STRING. (Nagano)
@@ -3720,7 +3720,7 @@ X11:
with the VisualNOS group to show this. (Madsen)
- Support for requesting the type of clipboard support. Used for AIX and
dtterm. (Wittig)
- Support compound_text selection (even when compiled without multi-byte).
- Support compound_text selection (even when compiled without multibyte).
Swap file:
- New variation for naming swap files: Replace path separators into %, place
@@ -4063,7 +4063,7 @@ compiling pathdef.c. Replaced it with "tr".
Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files.
Various XIM and multi-byte fixes:
Various XIM and multibyte fixes:
- Fix user cannot see his language while he is typing his language with
off-the-spot method. (Nagano)
- Fix preedit position using text/edit area (using gui.wid). (Nagano)
@@ -4080,7 +4080,7 @@ Various XIM and multi-byte fixes:
- XIM: Composed strings were sometimes ignored. Vim crashed when compose
string was longer than 256 bytes. IM's geometry control is fixed. (Nam,
Nagano)
- Win32 multi-byte: hollowed cursor width on a double byte char was wrong.
- Win32 multibyte: hollowed cursor width on a double byte char was wrong.
(Nagano)
- When there is no GUI, selecting XIM caused compilation problems.
Automatically disable XIM when there is no GUI in configure.
@@ -4417,7 +4417,7 @@ Now map <xF4> to <F4>, so that the user can override this.
When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be
used. (Aaron)
This autocommand looped forever: ":au FileChangedShell * nested e <afile>"
This autocommand looped forever: ":au FileChangedShell * ++nested e <afile>"
Now FileChangeShell never nests. (Roemer)
When evaluating an ":elseif" that was not going to matter anyway, ignore
@@ -5496,7 +5496,7 @@ Solution: When there is a comment leader for the new line, but 'autoindent'
Files: src/misc1.c
Patch 5.4.26
Problem: Multi-byte: a multi-byte character is never recognized in a file
Problem: Multi-byte: a multibyte character is never recognized in a file
name, causing a backslash before it to be removed on Windows.
Solution: Assume that a leading-byte character is a file name character in
vim_isfilec().
@@ -5945,7 +5945,7 @@ __TIME__. (John Card II)
BeOS: Adjust computing the char_height and char_ascent. Round them up
separately, avoids redrawing artifacts. (Mike Steed)
Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and
Fix a few multibyte problems in menu_name_skip(), set_reg_ic(), searchc() and
findmatchlimit(). (Taro Muraoka)
GTK GUI:
@@ -6631,9 +6631,9 @@ Solution: Use a shell extension dll. (Tianmiao Hu)
Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
Patch 5.6a.028 (extra)
Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte
Problem: Win32 GUI: Dialogs and tear-off menus can't handle multibyte
characters.
Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters
Solution: Adjust nCopyAnsiToWideChar() to handle multibyte characters
correctly.
Files: src/gui_w32.c
@@ -6727,9 +6727,9 @@ Many fixes to Macintosh specific parts: (mostly by Dany StAmant)
- Add digraphs table. (Axel Kielhorn)
- Multi-byte support: (Kenichi Asai)
Switch keyscript when going in/out of Insert mode.
Draw multi-byte character correctly.
Don't use mblen() but highest bit of char to detect multi-byte char.
Display value of multi-byte in statusline (also for other systems).
Draw multibyte character correctly.
Don't use mblen() but highest bit of char to detect multibyte char.
Display value of multibyte in statusline (also for other systems).
- mouse button was not initialized properly to MOUSE_LEFT when
USE_CTRLCLICKMENU not defined.
- With Japanese SJIS characters: Make "w", "b", and "e" work
@@ -6981,7 +6981,7 @@ Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)
Files: src/gui_gtk_x11.c
Patch 5.6.037
Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI.
Problem: Multi-byte: Can't use "f" command with multibyte character in GUI.
Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam)
Files: src/gui_gtk_x11.c, src/multbyte.c
@@ -7094,7 +7094,7 @@ Files: src/fileio.c, src/tag.c
Patch 5.6.052
Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte,
it terminates the command.
Solution: Skip second byte of multi-byte char when checking for '|' and '"'.
Solution: Skip second byte of multibyte char when checking for '|' and '"'.
(Asai Kenichi)
Files: src/ex_docmd.c
@@ -7246,7 +7246,7 @@ Files: src/Makefile.bor, src/dosinst.c
Patch 5.6.074 (extra)
Problem: Entering CSI directly doesn't always work, because it's recognized
as the start of a special key. Mostly a problem with multi-byte
as the start of a special key. Mostly a problem with multibyte
in the GUI.
Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI,
<xCSI> for a CSI typed in the GUI.
@@ -7337,7 +7337,7 @@ Solution: Use IsBadStringPtr() to check if the pointer is valid.
Files: src/os_win32.c
Patch 5.6.087
Problem: Multi-byte: Commands and messages with multi-byte characters are
Problem: Multi-byte: Commands and messages with multibyte characters are
displayed wrong.
Solution: Detect double-byte characters. (Yasuhiro Matsumoto)
Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
@@ -7384,9 +7384,9 @@ Solution: Don't write a message about the file read from stdin until the GUI
Files: src/fileio.c
Patch 5.6.094
Problem: Problem with multi-byte string for ":echo var".
Problem: Problem with multibyte string for ":echo var".
Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam)
Also make do_echo() aware of multi-byte characters.
Also make do_echo() aware of multibyte characters.
Files: src/eval.c, src/message.c
Patch 5.6.095
@@ -7417,9 +7417,9 @@ Files: src/misc1.c
Patch 5.7a.003
Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at
the end of the line on a multi-byte character the cursor moves to
the end of the line on a multibyte character the cursor moves to
the left.
Solution: Check for multi-byte character at end-of-line. (Taro Muraoka)
Solution: Check for multibyte character at end-of-line. (Taro Muraoka)
Also: fix cls() to detect a double-byte character. (Chong-Dae Park)
Files: src/edit.c, src/search.c
@@ -7736,7 +7736,7 @@ Solution: Disallow executing a shell command in get_cmd_output() and
Files: src/misc1.c, src/os_unix.c
Patch 5.7.019
Problem: Multibyte: In a substitute string, a multi-byte character isn't
Problem: Multibyte: In a substitute string, a multibyte character isn't
skipped properly, can be a problem when the second byte is a
backslash.
Solution: Skip an extra byte for a double-byte character. (Muraoka Taro)
+120 -120
View File
@@ -1,4 +1,4 @@
*version6.txt* For Vim version 8.2. Last change: 2019 Jan 17
*version6.txt* For Vim version 8.2. Last change: 2020 Aug 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -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'
@@ -623,7 +623,7 @@ For syntax items:
Removed limit of matching only up to 32767 times with *, \+, etc.
Added support to match multi-byte characters. (partly by Muraoka Taro)
Added support to match multibyte characters. (partly by Muraoka Taro)
Made "\<" and "\>" work for UTF-8. (Muraoka Taro)
@@ -664,10 +664,10 @@ Many new items for Multi-byte support:
- Added 'guifontwide' to specify a font for double-wide characters.
- Added Korean support for character class detection. Also fix cls() in
search.c. (Chong-Dae Park)
- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev)
- Win32: Typing multibyte characters without IME. (Alexander Smishlajev)
- Win32 with Mingw: compile with iconv library. (Ron Aaron)
- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro)
- Make it possible to build a version with multi-byte and iconv support with
- Make it possible to build a version with multibyte and iconv support with
Borland 5.5. (Yasuhiro Matsumoto)
- Added 'delcombine' option: Delete combining character separately. (Ron
Aaron)
@@ -680,19 +680,19 @@ Many new items for Multi-byte support:
- Support "CursorIM" for XIM. (Nam SungHyun)
- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at
each multibyte character, not only at a space.
- Made ":syntax keyword" work with multi-byte characters.
- Made ":syntax keyword" work with multibyte characters.
- Added support for Unicode upper/lowercase flipping and comparing. (based on
patch by Raphael Finkel)
Let "~" on multi-byte characters that have a third case ("title case")
Let "~" on multibyte characters that have a third case ("title case")
switch between the three cases. (Raphael Finkel)
Allow defining digraphs for multi-byte characters.
Allow defining digraphs for multibyte characters.
Added RFC1345 digraphs for Unicode.
Most Normal mode commands that accept a character argument, like "r", "t" and
"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain
Vi compatible.
Added Language mapping and 'keymap' to be able to type multi-byte characters:
Added Language mapping and 'keymap' to be able to type multibyte characters:
- Added the ":lmap" command and friends: Define mappings that are used when
typing characters in the language of the text. Also for "r", "t", etc. In
Insert and Command-line mode CTRL-^ switches the use of the mappings on/off.
@@ -715,7 +715,7 @@ Added Language mapping and 'keymap' to be able to type multi-byte characters:
- When typing a mapping that's not finished yet, display the last character
under the cursor in Insert mode and Command-line mode. Looks good for dead
characters.
- Made the 'langmap' option recognize multi-byte characters. But mapping only
- Made the 'langmap' option recognize multibyte characters. But mapping only
works for 8-bit characters. Helps when using UTF-8.
- Use a different cursor for when ":lmap" mappings are active. Can specify
two highlight groups for an item in 'guicursor'. By default "lCursor" and
@@ -726,7 +726,7 @@ Added Language mapping and 'keymap' to be able to type multi-byte characters:
Also works for "f", which now works to find a character that includes a
composing character.
Other multi-byte character additions:
Other multibyte character additions:
- Support double-byte single-width characters for euc-jp: Characters starting
with 0x8E. Added ScreenLines2[] to store the second byte.
@@ -1004,7 +1004,7 @@ systems a PostScript file is generated, which can be printed with the
(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and
Mike Williams)
Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro
Made ":hardcopy" work with multibyte characters. (Muraoka Taro, Yasuhiro
Matsumoto)
Added options to tune the way printing works: (Vince Negri)
@@ -1703,7 +1703,7 @@ GUI:
- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem
Khodush)
- When no --enable-xim argument is given, automatically enable it when a X GUI
is used. Required for dead key support (and multi-byte input).
is used. Required for dead key support (and multibyte input).
- After a file selection dialog, check that the edited files were not changed
or deleted. The Win32 dialog allows deleting and renaming files.
- Motif and Athena: Added support for "editres". (Marcin Dalecki)
@@ -2025,8 +2025,8 @@ Timestamps:
file that steadily grows.
Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to
"utf-8" causes the first byte of a multi-byte to be mapped. Can cause very
hard to find problems. Disallow mapping part of a multi-byte character.
"utf-8" causes the first byte of a multibyte to be mapped. Can cause very
hard to find problems. Disallow mapping part of a multibyte character.
For ":python" and ":tcl" accept an in-line script. (Johannes Zellner)
Also for ":ruby" and ":perl". (Benoit Cerrina)
@@ -2467,7 +2467,7 @@ Motif: When adding many menu items, the "Help" menu disappeared but the
menubar didn't wrap. Now manually set the menubar height.
When using <BS> in Insert mode to remove a line break, or using "J" to join
lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro)
lines, the cursor could end up halfway a multibyte character. (Muraoka Taro)
Removed defining SVR4 in configure. It causes problems for some X header
files and doesn't appear to be used anywhere.
@@ -2617,12 +2617,12 @@ column. Can't encode a larger number in a character. Now limit the number to
222, don't jump back to the first column.
GUI: In some versions CSI would cause trouble, either when typed directly or
when part of a multi-byte sequence.
when part of a multibyte sequence.
When using multibyte characters in a ":normal" command, a trailing byte that
is CSI or K_SPECIAL caused problems.
Wildmenu didn't handle multi-byte characters.
Wildmenu didn't handle multibyte characters.
":sleep 10" could not be interrupted on Windows, while "gs" could. Made them
both work the same.
@@ -2673,7 +2673,7 @@ path.
Multi-byte:
- Using an any-but character range [^x] in a regexp didn't work for UTF-8.
(Muraoka Taro)
- When backspacing over inserted characters in Replace mode multi-byte
- When backspacing over inserted characters in Replace mode multibyte
characters were not handled correctly. (Muraoka Taro)
- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka
Taro)
@@ -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.
@@ -2701,8 +2701,8 @@ Multi-byte:
- When a multibyte character contained a 0x80 byte, it didn't work (was using
a CSI byte instead). (Muraoka Taro)
- Wordwise selection with the mouse didn't work.
- Yanking a modeless selection of multi-byte characters didn't work.
- When 'selection' is "exclusive", selecting a word that ends in a multi-byte
- Yanking a modeless selection of multibyte characters didn't work.
- When 'selection' is "exclusive", selecting a word that ends in a multibyte
character used wrong highlighting for the following character.
Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse)
@@ -2795,13 +2795,13 @@ 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.
- When using a double-byte encoding and there is a lead byte at the end of the
line, the preceding line would be displayed. "ga" also showed wrong info.
- "gf" didn't include multi-byte characters before the cursor properly.
- "gf" didn't include multibyte characters before the cursor properly.
(Muraoka Taro)
GUI: The cursor was sometimes not removed when scrolling. Changed the policy
@@ -2919,7 +2919,7 @@ The message remembered for displaying later (keep_msg) was sometimes pointing
into a generic buffer, which might be changed by the time the message is
displayed. Now make a copy of the message.
When using multi-byte characters in a menu and a trailing byte is a backslash,
When using multibyte characters in a menu and a trailing byte is a backslash,
the menu would not be created correctly. (Muraoka Taro)
Using a multibyte character in the substitute string where a trail byte is a
backslash didn't work. (Muraoka Taro)
@@ -2958,7 +2958,7 @@ the output.
Don't define the <NetMouse> termcode in an xterm, reduces the problem when
someone types <Esc> } in Insert mode.
Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro
Made slash_adjust() work correctly for multibyte characters. (Yasuhiro
Matsumoto)
Using a filename in Big5 encoding for autocommands didn't work (backslash in
trailbyte). (Yasuhiro Matsumoto)
@@ -3147,7 +3147,7 @@ available space correctly. Was counting the menu height twice.
Conversion of the docs to HTML didn't handle the line with the +quickfix tag
correctly. (Antonio Colombo)
Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro
Win32: fname_case() didn't handle multibyte characters correctly. (Yasuhiro
Matsumoto)
The Cygwin version had trouble with fchdir(). Don't use that function for
@@ -3164,10 +3164,10 @@ 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.
character before the cursor was a double-wide multibyte character the cursor
would be on the right half, which causes problems with some terminals.
Didn't handle multi-byte characters correctly when expanding a file name.
Didn't handle multibyte characters correctly when expanding a file name.
(Yasuhiro Matsumoto)
Win32 GUI: Errors generated before the GUI is decided to start were not
@@ -3307,7 +3307,7 @@ started from the desktop (no place to display messages) it would hang. Now
open the GUI window early to be able to display the messages and pop up the
dialog.
"r<CR>" on a multi-byte character deleted only the first byte of the
"r<CR>" on a multibyte character deleted only the first byte of the
character. "3r<CR>" deleted three bytes instead of three characters.
When interrupting reading a file, Vi considers the buffer modified. Added the
@@ -3431,7 +3431,7 @@ Solution: Change slashes to backslashes in the directory passed to the file
Files: src/gui_w48.c
Athena file browser: On some systems wcstombs() can't be used to get the
length of a multi-byte string. Use the maximum length then. (Yasuhiro
length of a multibyte string. Use the maximum length then. (Yasuhiro
Matsumoto)
Patch 6.0ax.001
@@ -3784,7 +3784,7 @@ Solution: Check for a NULL pointer.
Files: src/mbyte.c
Patch 6.0.019
Problem: Converting a string with multi-byte characters to a printable
Problem: Converting a string with multibyte characters to a printable
string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin)
Solution: Correctly compute the length of the result in transstr().
Files: src/charset.c
@@ -4148,9 +4148,9 @@ Solution: Position the system cursor before starting the shell.
Files: src/os_msdos.c
Patch 6.0.074
Problem: When using "&" in a substitute string a multi-byte character with
Problem: When using "&" in a substitute string a multibyte character with
a trailbyte 0x5c is not handled correctly.
Solution: Recognize multi-byte characters inside the "&" part. (Muraoka Taro)
Solution: Recognize multibyte characters inside the "&" part. (Muraoka Taro)
Files: src/regexp.c
Patch 6.0.075
@@ -4311,7 +4311,7 @@ Files: src/ex_cmds.c
Patch 6.0.097
Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a
multi-byte encoding.
multibyte encoding.
Solution: Avoid using a character before the start of a line. (Sergey
Vlasov)
Files: src/edit.c
@@ -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
@@ -4669,14 +4669,14 @@ Solution: Correctly report "operand could be empty" when using "\{-}".
Files: src/regexp.c
Patch 6.0.150
Problem: When using a multi-byte encoding, patch 6.0.148 causes "p" to work
Problem: When using a multibyte encoding, patch 6.0.148 causes "p" to work
like "P". (Sung-Hyun Nam)
Solution: Compute the byte length of a multi-byte character.
Solution: Compute the byte length of a multibyte character.
Files: src/ops.c
Patch 6.0.151
Problem: Redrawing the status line and ruler can be wrong when it contains
multi-byte characters.
multibyte characters.
Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto)
Files: src/screen.c
@@ -4878,7 +4878,7 @@ Solution: Free the allocated memory. Also avoid an uninitialized memory
Files: src/misc2.c
Patch 6.0.182
Problem: When using a regexp on multi-byte characters, could try to read a
Problem: When using a regexp on multibyte characters, could try to read a
character before the start of the line.
Solution: Don't decrement a pointer to before the start of the line.
Files: src/regexp.c
@@ -5060,7 +5060,7 @@ Files: src/edit.c
Patch 6.0.209
Problem: GUI GTK: After selecting a 'guifont' with the font dialog there
are redraw problems for multi-byte characters.
are redraw problems for multibyte characters.
Solution: Separate the font dialog from setting the new font name to avoid
that "*" is used to find wide and bold fonts.
When redrawing extra characters for the bold trick, take care of
@@ -5203,14 +5203,14 @@ Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c,
Patch 6.0.229
Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break
at a multi-byte char followed by an ASCII char, and the other way
at a multibyte char followed by an ASCII char, and the other way
around. (Muraoka Taro)
When joining lines a space is inserted between multi-byte
When joining lines a space is inserted between multibyte
characters, which is not always wanted.
Solution: Check for multi-byte character before and after the breakpoint.
Don't insert a space before or after a multi-byte character when
Solution: Check for multibyte character before and after the breakpoint.
Don't insert a space before or after a multibyte character when
joining lines and the 'M' flag is in 'formatoptions'. Don't
insert a space between multi-byte characters when the 'B' flag is
insert a space between multibyte characters when the 'B' flag is
in 'formatoptions'.
Files: src/edit.c, src/ops.c, src/option.h
@@ -5290,7 +5290,7 @@ Patch 6.0.241
Problem: Win32: Expanding the old value of an option that is a path that
starts with a backslash, an extra backslash is inserted.
Solution: Only insert backslashes where needed.
Also handle multi-byte characters properly when removing
Also handle multibyte characters properly when removing
backslashes.
Files: src/option.c
@@ -5312,7 +5312,7 @@ Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and
file name (e.g., icon text, status line).
Solution: Correctly handle unprintable characters. Catch illegal UTF-8
characters and replace them with <xx>. Truncating the status line
wasn't done correctly at a multi-byte character. (Yasuhiro
wasn't done correctly at a multibyte character. (Yasuhiro
Matsumoto)
Added correct_cmdspos() and transchar_byte().
Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c,
@@ -5424,7 +5424,7 @@ Solution: Don't call gui_write() when still starting up. Don't give error
Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c
Patch 6.0.261
Problem: nr2char() and char2nr() don't work with multi-byte characters.
Problem: nr2char() and char2nr() don't work with multibyte characters.
Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto)
Files: runtime/doc/eval.txt, src/eval.c
@@ -5517,7 +5517,7 @@ Solution: Don't keep the driver context when using ":hardcopy!". (Vince
Files: src/os_mswin.c
Patch 6.1a.006
Problem: multi-byte: after setting 'encoding' the window title might be
Problem: multibyte: after setting 'encoding' the window title might be
wrong.
Solution: Force resetting the title. (Yasuhiro Matsumoto)
Files: src/option.c
@@ -5654,7 +5654,7 @@ Files: src/globals.h, src/mbyte.c, src/screen.c
Patch 6.1a.029
Problem: After patch 6.1a.028 can't compile GTK version with XIM but
without multi-byte chars.
without multibyte chars.
Solution: Add an #ifdef. (Aschwin Marsman)
Files: src/mbyte.c
@@ -5701,9 +5701,9 @@ Solution: Remove the ACL checks, go back to how it worked in Vim 6.0.
Files: src/os_win32.c
Patch 6.1a.035
Problem: multi-byte: When using ":sh" in the GUI, typed and displayed
multi-byte characters are not handled correctly.
Solution: Deal with multi-byte characters to and from the shell. (Yasuhiro
Problem: multibyte: When using ":sh" in the GUI, typed and displayed
multibyte characters are not handled correctly.
Solution: Deal with multibyte characters to and from the shell. (Yasuhiro
Matsumoto) Also handle UTF-8 composing characters.
Files: src/os_unix.c
@@ -5748,9 +5748,9 @@ Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro
Patch 6.1b.001 (extra)
Problem: Checking for wildcards in a path does not handle multi-byte
Problem: Checking for wildcards in a path does not handle multibyte
characters with a trail byte which is a wildcard.
Solution: Handle multi-byte characters correctly. (Muraoka Taro)
Solution: Handle multibyte characters correctly. (Muraoka Taro)
Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c,
src/os_unix.c
@@ -6393,7 +6393,7 @@ wrong (back)slashes.
Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto)
When using a multi-byte character with a K_SPECIAL byte or a special key code
When using a multibyte character with a K_SPECIAL byte or a special key code
with "--remote-send" the received byte sequence was mangled. Put it in the
typeahead buffer instead of the input buffer.
@@ -6438,7 +6438,7 @@ library version of fgets() to work correctly for Metrowerks 2.2. (Axel
Kielhorn)
When typing a password a "*" was shown for each byte instead of for each
character. Added multi-byte handling to displaying the stars. (Yasuhiro
character. Added multibyte handling to displaying the stars. (Yasuhiro
Matsumoto)
When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use
@@ -6690,9 +6690,9 @@ Solution: Overrule 'lazyredraw' when do_redraw is set.
Files: src/main.c, src/screen.c
Patch 6.1.038
Problem: Multi-byte: When a ":s" command contains a multi-byte character
Problem: Multi-byte: When a ":s" command contains a multibyte character
where the trail byte is '~' the text is messed up.
Solution: Properly skip multi-byte characters in regtilde() (Muraoka Taro)
Solution: Properly skip multibyte characters in regtilde() (Muraoka Taro)
Files: src/regexp.c
Patch 6.1.039
@@ -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
@@ -7105,7 +7105,7 @@ Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa".
Files: runtime/optwin.vim
Patch 6.1.102
Problem: Unprintable and multi-byte characters in a statusline item are not
Problem: Unprintable and multibyte characters in a statusline item are not
truncated correctly. (Yasuhiro Matsumoto)
Solution: Count the width of characters instead of the number of bytes.
Files: src/buffer.c
@@ -7480,7 +7480,7 @@ Solution: Take 'siso' into account when computing the horizontal scroll
Files: src/normal.c
Patch 6.1.159
Problem: When expanding an abbreviation that includes a multi-byte
Problem: When expanding an abbreviation that includes a multibyte
character too many characters are deleted. (Andrey Urazov)
Solution: Delete the abbreviation counting characters instead of bytes.
Files: src/getchar.c
@@ -7964,10 +7964,10 @@ Files: src/gui_w48.c
Patch 6.1.231
Problem: Double clicking with the mouse to select a word does not work for
multi-byte characters.
multibyte characters.
Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword'
is used instead of 'isident'. Also fix that mixing ASCII with
multi-byte word characters doesn't work, the mouse class for
multibyte word characters doesn't work, the mouse class for
punctuation and word characters was mixed up.
Files: src/normal.c
@@ -8056,7 +8056,7 @@ Files: src/vim.h
Patch 6.1.245
Problem: Comparing with ignored case does not work properly for Unicode
with a locale where case folding an ASCII character results in a
multi-byte character. (Glenn Maynard)
multibyte character. (Glenn Maynard)
Solution: Handle ignore-case compare for Unicode differently.
Files: src/mbyte.c
@@ -8081,8 +8081,8 @@ Files: src/eval.c
Patch 6.1.249
Problem: Can't expand a path on the command line if it includes a "|" as a
trail byte of a multi-byte character.
Solution: Check for multi-byte characters. (Yasuhiro Matsumoto)
trail byte of a multibyte character.
Solution: Check for multibyte characters. (Yasuhiro Matsumoto)
Files: src/ex_docmd.c
Patch 6.1.250
@@ -8177,9 +8177,9 @@ Solution: Set the previous context mark before jumping.
Files: src/fold.c
Patch 6.1.263
Problem: When typing a multi-byte character that triggers an abbreviation
Problem: When typing a multibyte character that triggers an abbreviation
it is not inserted properly.
Solution: Handle adding the typed multi-byte character. (Yasuhiro Matsumoto)
Solution: Handle adding the typed multibyte character. (Yasuhiro Matsumoto)
Files: src/getchar.c
Patch 6.1.264 (depends on patch 6.1.254)
@@ -8207,7 +8207,7 @@ Solution: Allocate enough memory for saving the register contents. (Muraoka
Files: src/ops.c
Patch 6.1.268
Problem: When triggering an abbreviation with a multi-byte character, this
Problem: When triggering an abbreviation with a multibyte character, this
character is not correctly inserted after expanding the
abbreviation. (Taro Muraoka)
Solution: Add ABBR_OFF to all characters above 0xff.
@@ -8321,7 +8321,7 @@ Files: runtime/doc/options.txt, src/buffer.c, src/option.c,
src/quickfix.c
Patch 6.1.286
Problem: 'showbreak' cannot contain multi-byte characters.
Problem: 'showbreak' cannot contain multibyte characters.
Solution: Allow using all printable characters for 'showbreak'.
Files: src/charset.c, src/move.c, src/option.c
@@ -8343,9 +8343,9 @@ Solution: Add a typecast for " ".
Files: src/screen.c
Patch 6.1.290 (extra)
Problem: Truncating long text for message box may break multi-byte
Problem: Truncating long text for message box may break multibyte
character.
Solution: Adjust to start of multi-byte character. (Yasuhiro Matsumoto)
Solution: Adjust to start of multibyte character. (Yasuhiro Matsumoto)
Files: src/os_mswin.c
Patch 6.1.291 (extra)
@@ -8368,7 +8368,7 @@ Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith)
Files: src/memline.c
Patch 6.1.294
Problem: Can't include a multi-byte character in a string by its hex value.
Problem: Can't include a multibyte character in a string by its hex value.
(Benji Fisher)
Solution: Add "\u....": a character specified with up to four hex numbers
and stored according to the value of 'encoding'.
@@ -8791,7 +8791,7 @@ Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka)
Files: src/gui_mac.c
Patch 6.1.360 (depends on 6.1.341)
Problem: In Insert mode CTRL-K ESC messes up a multi-byte character.
Problem: In Insert mode CTRL-K ESC messes up a multibyte character.
(Anders Helmersson)
Solution: Save all bytes of a character when displaying a character
temporarily.
@@ -8962,7 +8962,7 @@ Files: src/gui_w32.c
Patch 6.1.383
Problem: The filling of the status line doesn't work properly for
multi-byte characters. (Nam SungHyun)
multibyte characters. (Nam SungHyun)
There is no check for going past the end of the buffer.
Solution: Properly distinguish characters and bytes. Properly check for
running out of buffer space.
@@ -8976,13 +8976,13 @@ Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro,
src/version.c
Patch 6.1.385 (depends on 6.1.383)
Problem: Can't compile without the multi-byte feature.
Problem: Can't compile without the multibyte feature.
Solution: Move an #ifdef. (Christian J. Robinson)
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)
@@ -9201,10 +9201,10 @@ Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded
Files: src/netbeans.c
Patch 6.1.417
Problem: Unprintable multi-byte characters are not handled correctly.
Problem: Unprintable multibyte characters are not handled correctly.
Multi-byte characters above 0xffff are displayed as another
character.
Solution: Handle unprintable multi-byte characters. Display multi-byte
Solution: Handle unprintable multibyte characters. Display multibyte
characters above 0xffff with a marker. Recognize UTF-16 words and
BOM words as unprintable. (Daniel Elstner)
Files: src/charset.c, src/mbyte.c, src/screen.c
@@ -9326,7 +9326,7 @@ Solution: Add the line number to the error message.
Files: src/fileio.c
Patch 6.1.437 (extra, depends on 6.1.421)
Problem: Using multi-byte functions when they are not available.
Problem: Using multibyte functions when they are not available.
Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri)
Also fix a pointer type mistake. (Walter Briscoe)
Files: src/os_mswin.c
@@ -9526,8 +9526,8 @@ Solution: Only store folds for a buffer with 'buftype' empty and help files.
Files: src/ex_docmd.c
Patch 6.1.469
Problem: 'listchars' cannot contain multi-byte characters.
Solution: Handle multi-byte UTF-8 list characters. (Matthew Samsonoff)
Problem: 'listchars' cannot contain multibyte characters.
Solution: Handle multibyte UTF-8 list characters. (Matthew Samsonoff)
Files: src/message.c, src/option.c, src/screen.c
Patch 6.1.470 (lang)
@@ -10009,7 +10009,7 @@ Files: nsis/gvim.nsi
Patch 6.2.010
Problem: When 'virtualedit' is effective and a line starts with a
multi-byte character, moving the cursor right doesn't work.
multibyte character, moving the cursor right doesn't work.
Solution: Obtain the right character to compute the column offset. (Taro
Muraoka)
Files: src/charset.c
@@ -10109,7 +10109,7 @@ Files: src/fileio.c
Patch 6.2.027
Problem: Warning for uninitialized variable.
Solution: Set mb_l to one when not using multi-byte characters.
Solution: Set mb_l to one when not using multibyte characters.
Files: src/message.c
Patch 6.2.028
@@ -10271,15 +10271,15 @@ Files: src/osdef1.h.in
Patch 6.2.054
Problem: A double-byte character with a second byte that is a backslash
causes problems inside a string.
Solution: Skip over multi-byte characters in a string properly. (Yasuhiro
Solution: Skip over multibyte characters in a string properly. (Yasuhiro
Matsumoto)
Files: src/eval.c
Patch 6.2.055
Problem: Using col('.') from CTRL-O in Insert mode does not return the
correct value for multi-byte characters.
correct value for multibyte characters.
Solution: Correct the cursor position when it is necessary, move to the
first byte of a multi-byte character. (Yasuhiro Matsumoto)
first byte of a multibyte character. (Yasuhiro Matsumoto)
Files: src/edit.c
Patch 6.2.056 (extra)
@@ -10851,7 +10851,7 @@ Files: Makefile, src/Makefile, src/auto/configure, src/configure.in,
Patch 6.2.143
Problem: Using "K" on Visually selected text doesn't work if it ends in
a multi-byte character.
a multibyte character.
Solution: Include all the bytes of the last character. (Taro Muraoka)
Files: src/normal.c
@@ -11269,12 +11269,12 @@ Files: src/gui_w32.c, src/gui_w48.c
Patch 6.2.206
Problem: Multi-byte characters cannot be used as hotkeys in a console
dialog. (Mattias Erkisson)
Solution: Handle multi-byte characters properly. Also put () or [] around
Solution: Handle multibyte characters properly. Also put () or [] around
default hotkeys.
Files: src/message.c, src/macros.h
Patch 6.2.207
Problem: When 'encoding' is a multi-byte encoding, expanding an
Problem: When 'encoding' is a multibyte encoding, expanding an
abbreviation that starts where insertion started results in
characters before the insertion to be deleted. (Xiangjiang Ma)
Solution: Stop searching leftwards for the start of the word at the position
@@ -11344,7 +11344,7 @@ Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro,
Patch 6.2.216 (after 6.2.206)
Problem: Multi-byte characters still cannot be used as hotkeys in a console
dialog. (Mattias Erkisson)
Solution: Make get_keystroke() handle multi-byte characters.
Solution: Make get_keystroke() handle multibyte characters.
Files: src/misc1.c
Patch 6.2.217
@@ -11710,7 +11710,7 @@ Files: src/gui.c
Patch 6.2.269
Problem: Diff mode does not highlight a change in a combining character.
(Raphael Finkel)
Solution: Make diff_find_change() multi-byte aware: find the start byte of
Solution: Make diff_find_change() multibyte aware: find the start byte of
a character that contains a change.
Files: src/diff.c
@@ -12505,7 +12505,7 @@ Solution: Don't redraw the bottom line if no rows were inserted or deleted.
Files: src/screen.c
Patch 6.2.390
Problem: Using "r*" in Visual mode on multi-byte characters only replaces
Problem: Using "r*" in Visual mode on multibyte characters only replaces
every other character. (Tyson Roberts)
Solution: Correct the cursor position after replacing each character.
Files: src/ops.c
@@ -12745,7 +12745,7 @@ Solution: Also use the line number of the position where the region
Files: src/syntax.c
Patch 6.2.427 (extra)
Problem: When pasting a lot of text in a multi-byte encoding, conversion
Problem: When pasting a lot of text in a multibyte encoding, conversion
from 'termencoding' to 'encoding' may fail for some characters.
(Kuang-che Wu)
Solution: When there is an incomplete byte sequence at the end of the read
@@ -12984,7 +12984,7 @@ Files: src/normal.c
Patch 6.2.462
Problem: Finding a matching parenthesis does not correctly handle a
backslash in a trailing byte.
Solution: Handle multi-byte characters correctly. (Taro Muraoka)
Solution: Handle multibyte characters correctly. (Taro Muraoka)
Files: src/search.c
Patch 6.2.463 (extra)
@@ -13015,7 +13015,7 @@ Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro
Files: src/os_win32.c
Patch 6.2.467 (extra, after 6.2.463)
Problem: Win32: can't compile without multi-byte feature. (Ajit Thakkar)
Problem: Win32: can't compile without multibyte feature. (Ajit Thakkar)
Solution: Add #ifdefs around the info stream code.
Files: src/os_win32.c
@@ -13183,8 +13183,8 @@ Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or
Files: src/search.c
Patch 6.2.491
Problem: Decrementing a position doesn't take care of multi-byte chars.
Solution: Adjust the column for multi-byte characters. Remove mb_dec().
Problem: Decrementing a position doesn't take care of multibyte chars.
Solution: Adjust the column for multibyte characters. Remove mb_dec().
(Yasuhiro Matsumoto)
Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro
@@ -13354,12 +13354,12 @@ Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c,
src/screen.c, src/syntax.c, src/vim.h
Patch 6.2.517
Problem: Using "r*" in Visual mode on multi-byte characters replaces
Problem: Using "r*" in Visual mode on multibyte characters replaces
too many characters. In Visual Block mode replacing with a
multi-byte character doesn't work.
multibyte character doesn't work.
Solution: Adjust the operator end for the difference in byte length of the
original and the replaced character. Insert all bytes of a
multi-byte character, take care of double-wide characters.
multibyte character, take care of double-wide characters.
Files: src/ops.c
Patch 6.2.518
@@ -13438,7 +13438,7 @@ Problem: NetBeans: Changes of the "~" command are not reported.
Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur)
Also change NetBeans debugging to append to the log file.
Also fix that "~" in Visual block mode changes too much if there
are multi-byte characters.
are multibyte characters.
Files: src/nbdebug.c, src/normal.c, src/ops.c
Patch 6.2.529 (extra)
@@ -13552,7 +13552,7 @@ Solution: Convert menu strings from 'encoding' to the active codepage.
Files: src/gui_w32.c, src/gui_w48.c
Patch 6.3a.014
Problem: Using multi-byte text and highlighting in a statusline causes gaps
Problem: Using multibyte text and highlighting in a statusline causes gaps
to appear. (Helmut Stiegler)
Solution: Advance the column by text width instead of number of bytes. Add
the vim_strnsize() function.
@@ -14040,19 +14040,19 @@ Solution: Correctly check that one character is being deleted.
Files: src/misc1.c
Patch 6.3.021
Problem: When the last character of a file name is a multi-byte character
Problem: When the last character of a file name is a multibyte character
and the last byte is a path separator, the file cannot be edited.
Solution: Check for the last byte to be part of a multi-byte character.
Solution: Check for the last byte to be part of a multibyte character.
(Taro Muraoka)
Files: src/fileio.c
Patch 6.3.022 (extra)
Problem: Win32: When the last character of a file name is a multi-byte
Problem: Win32: When the last character of a file name is a multibyte
character and the last byte is a path separator, the file cannot
be written. A trail byte that is a space makes that a file cannot
be opened from the command line.
Solution: Recognize double-byte characters when parsing the command line.
In mch_stat() check for the last byte to be part of a multi-byte
In mch_stat() check for the last byte to be part of a multibyte
character. (Taro Muraoka)
Files: src/gui_w48.c, src/os_mswin.c
@@ -14222,7 +14222,7 @@ Solution: Don't allow setting termcap options or 'printdevice' in a
Files: src/option.c, runtime/doc/options.txt
Patch 6.3.046
Problem: ":registers" doesn't show multi-byte characters properly.
Problem: ":registers" doesn't show multibyte characters properly.
(Valery Kondakoff)
Solution: Get the length of each character before displaying it.
Files: src/ops.c
@@ -14250,9 +14250,9 @@ Solution: Ignore SIGHUP when exiting because of an error. (Scott Anderson)
Files: src/misc1.c, src/main.c
Patch 6.3.051
Problem: When 'wildmenu' is set and completed file names contain multi-byte
Problem: When 'wildmenu' is set and completed file names contain multibyte
characters Vim may crash.
Solution: Reserve room for multi-byte characters. (Yasuhiro Matsumoto)
Solution: Reserve room for multibyte characters. (Yasuhiro Matsumoto)
Files: src/screen.c
Patch 6.3.052 (extra)
@@ -14286,9 +14286,9 @@ Solution: When moving ccline out of the way for recursive use, make it
Files: src/ex_getln.c
Patch 6.3.056
Problem: The last characters of a multi-byte file name may not be displayed
Problem: The last characters of a multibyte file name may not be displayed
in the window title.
Solution: Avoid to remove a multi-byte character where the last byte looks
Solution: Avoid to remove a multibyte character where the last byte looks
like a path separator character. (Yasuhiro Matsumoto)
Files: src/buffer.c, src/ex_getln.c
@@ -14319,9 +14319,9 @@ Files: src/edit.c
Patch 6.3.061
Problem: When editing a utf-8 file in an utf-8 xterm and there is a
multi-byte character in the last column, displaying is messed up.
multibyte character in the last column, displaying is messed up.
(Joël Rio)
Solution: Check for a multi-byte character, not a multi-column character.
Solution: Check for a multibyte character, not a multi-column character.
Files: src/screen.c
Patch 6.3.062
@@ -14384,7 +14384,7 @@ Files: src/edit.c
Patch 6.3.072
Problem: Crash in giving substitute message when language is Chinese and
encoding is utf-8. (Yongwei)
Solution: Make the msg_buf size larger when using multi-byte.
Solution: Make the msg_buf size larger when using multibyte.
Files: src/vim.h
Patch 6.3.073
@@ -14508,7 +14508,7 @@ Solution: Change "a" to "b". (Tony Mechelynck)
Files: src/version.h
Patch 6.4b.002
Problem: In Insert mode, pasting a multi-byte character after the end of
Problem: In Insert mode, pasting a multibyte character after the end of
the line leaves the cursor just before that character.
Solution: Make sure "gP" leaves the cursor in the right place when
'virtualedit' is set.
+72 -72
View File
@@ -1,4 +1,4 @@
*version7.txt* For Vim version 8.2. Last change: 2016 Jul 17
*version7.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -22,7 +22,7 @@ Vim script enhancements |new-vim-script|
Spell checking |new-spell|
Omni completion |new-omni-completion|
MzScheme interface |new-MzScheme|
Printing multi-byte text |new-print-multi-byte|
Printing multibyte text |new-print-multibyte|
Tab pages |new-tab-pages|
Undo branches |new-undo-branches|
Extended Unicode support |new-more-unicode|
@@ -302,10 +302,10 @@ The |:mzfile| command can be used to execute an MzScheme script file
This depends on Vim being compiled with the |+mzscheme| feature.
Printing multi-byte text *new-print-multi-byte*
Printing multibyte text *new-print-multibyte*
------------------------
The |:hardcopy| command now supports printing multi-byte characters when using
The |:hardcopy| command now supports printing multibyte characters when using
PostScript.
The 'printmbcharset' and 'printmbfont' options are used for this.
@@ -1213,7 +1213,7 @@ Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
Mac: GUI font selector. (Peter Cucka)
Mac: support for multi-byte characters. (Da Woon Jung)
Mac: support for multibyte characters. (Da Woon Jung)
This doesn't always work properly. If you see text drawing problems try
switching the 'macatsui' option off.
@@ -1363,7 +1363,7 @@ When C, C++ or IDL syntax is used, may additionally load doxygen syntax.
Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb"
filetype or syntax.
The ":registers" command now displays multi-byte characters properly.
The ":registers" command now displays multibyte characters properly.
VMS: In the usage message mention that a slash can be used to make a flag
upper case. Add color support to the builtin vt320 terminal codes.
@@ -1462,7 +1462,7 @@ To count items (pattern matches) without changing the buffer the 'n' flag has
been added to |:substitute|. See |count-items|.
In a |:substitute| command the \u, \U, \l and \L items now also work for
multi-byte characters.
multibyte characters.
The "screen.linux" $TERM name is recognized to set the default for
'background' to "dark". (Ciaran McCreesh) Also for "cygwin" and "putty".
@@ -1738,7 +1738,7 @@ variables like for a regular command with a file argument.
'cindent': When the argument of a #define looks like a C++ class the next line
is indented too much.
When 'comments' includes multi-byte characters inserting the middle part and
When 'comments' includes multibyte characters inserting the middle part and
alignment may go wrong. 'cindent' also suffers from this for right-aligned
items.
@@ -2311,7 +2311,7 @@ characters in v:this_session.
":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.
In a multi-byte file the foldmarker could be recognized in the trail byte.
In a multibyte file the foldmarker could be recognized in the trail byte.
(Taro Muraoka)
Pasting with CTRL-V and menu didn't work properly when some commands are
@@ -2506,7 +2506,7 @@ a crash.
For a new tab page the 'scroll' option wasn't set to a good default.
Using an end offset for a search "/pat/e" didn't work properly for multi-byte
Using an end offset for a search "/pat/e" didn't work properly for multibyte
text. (Yukihiro Nakadaira)
":s/\n/,/" doubled the text when used on the last line.
@@ -2606,7 +2606,7 @@ recursively. But after a ":normal" command the protection was reset.
":s/a/b/n" didn't work when 'modifiable' was off.
When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be
When $VIMRUNTIME includes a multibyte character then rgb.txt could not be
found. (Yukihiro Nakadaira)
":mkspell" didn't work correctly for non-ASCII affix flags when conversion is
@@ -2672,7 +2672,7 @@ keep them in the original order.
Fixed a crash when editing a directory in diff mode. Don't trigger
autocommands when executing the diff command.
Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and
Getting a keystroke could get stuck if 'encoding' is a multibyte encoding and
typing a special key.
When 'foldignore' is set the folds were not updated right away.
@@ -2713,7 +2713,7 @@ When using ":vsp" or ":sp" the available space wasn't used equally between
windows. (Servatius Brandt)
Expanding <cWORD> on a trailing blank resulted in the first word in the line
if 'encoding' is a multi-byte encoding.
if 'encoding' is a multibyte encoding.
Spell checking: spellbadword() didn't see a missing capital in the first word
of a line. Popup menu now only suggest the capitalized word when appropriate.
@@ -2736,7 +2736,7 @@ background, which made magenta text disappear. Now use reverse in this
specific situation.
After completing the longest match "." didn't insert the same text. Repeating
also didn't work correctly for multi-byte text.
also didn't work correctly for multibyte text.
When using Insert mode completion and BS the whole word that was completed
would result in all possible matches. Now stop completion. Also fixes that
@@ -2753,7 +2753,7 @@ non-ASCII characters looked wrong. (Yegappan Lakshmanan)
Motif: building failed when Xm/Notebook.h doesn't exist. Added a configure
check, disable GUI tabline when it's missing.
Mac: When compiled without multi-byte feature the clipboard didn't work.
Mac: When compiled without multibyte feature the clipboard didn't work.
It was possible to switch to another tab page when the cmdline window is open.
@@ -2764,7 +2764,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.
@@ -2869,7 +2869,7 @@ a crash.
GTK: The tab pages line menu was not converted from 'encoding' to utf-8.
Typing a multi-byte character or a special key at the hit-enter prompt did not
Typing a multibyte character or a special key at the hit-enter prompt did not
work.
When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the
@@ -3389,7 +3389,7 @@ Solution: When running Vim as root don't become a Vim server without an
Files: src/main.c
Patch 7.0.053
Problem: Shortening a directory name may fail when there are multi-byte
Problem: Shortening a directory name may fail when there are multibyte
characters.
Solution: Copy the correct bytes. (Titov Anatoly)
Files: src/misc1.c
@@ -3623,7 +3623,7 @@ Solution: Remove the "-pipe" argument from PERL_CFLAGS.
Files: src/auto/configure, src/configure.in
Patch 7.0.089
Problem: "ga" does not work properly for a non-Unicode multi-byte encoding.
Problem: "ga" does not work properly for a non-Unicode multibyte encoding.
Solution: Only check for composing chars for utf-8. (Taro Muraoka)
Files: src/ex_cmds.c
@@ -3861,7 +3861,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
@@ -4226,7 +4226,7 @@ Files: src/if_cscope.c
Patch 7.0.185
Problem: Multi-byte characters in a message are displayed with attributes
from what comes before it.
Solution: Don't use the attributes for a multi-byte character. Do use
Solution: Don't use the attributes for a multibyte character. Do use
attributes for special characters. (Yukihiro Nakadaira)
Files: src/message.c
@@ -4309,7 +4309,7 @@ Solution: Add type casts. Use "*" for processorArchitecture. (George Reilly)
Files: src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c
Patch 7.0.199
Problem: When using multi-byte characters the combination of completion and
Problem: When using multibyte characters the combination of completion and
formatting may result in a wrong cursor position.
Solution: Don't decrement the cursor column, use dec_cursor(). (Yukihiro
Nakadaira) Also check for the column to be zero.
@@ -5904,10 +5904,10 @@ Solution: Don't advance the cursor when it's already on the NUL after a
Files: src/normal.c
Patch 7.1.185
Problem: Using "gR" with a multi-byte encoding and typing a CR pushes
Problem: Using "gR" with a multibyte encoding and typing a CR pushes
characters onto the replace stack incorrectly, resulting in BS
putting back the wrong characters. (Paul B. Mahol)
Solution: Push multi-byte characters onto the replace stack in reverse byte
Solution: Push multibyte characters onto the replace stack in reverse byte
order. Add replace_push_mb().
Files: src/edit.c, src/misc1.c, src/proto/edit.pro
@@ -6114,7 +6114,7 @@ Files: runtime/doc/eval.txt, src/eval.c, src/hardcopy.c,
Patch 7.1.220
Problem: When a ")" or word movement command moves the cursor back from the
end of the line it may end up on the trail byte of a multi-byte
end of the line it may end up on the trail byte of a multibyte
character. It's also moved back when it isn't needed.
Solution: Add the adjust_cursor() function.
Files: src/normal.c
@@ -6243,7 +6243,7 @@ Problem: When "gUe" turns a German sharp s into SS the operation stops
before the end of the word. Latin2 has the same sharp s but it's
not changed to SS there.
Solution: Make sure all the characters are operated upon. Detect the sharp
s in latin2. Also fixes that changing case of a multi-byte
s in latin2. Also fixes that changing case of a multibyte
character that changes the byte count doesn't always work.
Files: src/ops.c
@@ -6759,9 +6759,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
@@ -6773,7 +6773,7 @@ Files: src/misc1.c
Warning for missing sentinel in gui_xmldlg.c. (Dominique Pelle)
A search offset from the end of a match didn't work properly for multi-byte
A search offset from the end of a match didn't work properly for multibyte
characters. (Yukihiro Nakadaira)
When displaying the value of 'key' don't show "*****" when the value is empty.
@@ -6967,7 +6967,7 @@ The #ifdef for including "vimio.h" was inconsistent. In a few files it
depended on MSWIN, which isn't defined until later.
Patch 7.2b.001
Problem: Compilation problem: mb_fix_col() missing with multi-byte feature
Problem: Compilation problem: mb_fix_col() missing with multibyte feature
but without GUI or clipboard.
Solution: Remove #ifdef.
Files: src/mbyte.c
@@ -7806,7 +7806,7 @@ Solution: Don't change "Columns" back to an old value at a wrong moment.
Files: src/gui.c
Patch 7.2.066
Problem: It's not easy to see whether 'encoding' is a multi-byte encoding.
Problem: It's not easy to see whether 'encoding' is a multibyte encoding.
Solution: Add has('multi_byte_encoding').
Files: runtime/doc/eval.txt, src/eval.c
@@ -7951,7 +7951,7 @@ Solution: Don't use a WM_OLE message of zero size. (Ray Megal)
Files: src/if_ole.cpp, src/gui_w48.c
Patch 7.2.090
Problem: User command containing 0x80 in multi-byte character does not work
Problem: User command containing 0x80 in multibyte character does not work
properly. (Yasuhiro Matsumoto)
Solution: Undo replacement of K_SPECIAL and CSI characters when executing
the command.
@@ -7969,7 +7969,7 @@ Files: src/eval.c
Patch 7.2.093 (extra)
Problem: Win32: inputdialog() and find/replace dialogs can't handle
multi-byte text.
multibyte text.
Solution: Use the wide version of dialog functions when available. (Yanwei
Jia)
Files: src/gui_w32.c, src/gui_w48.c
@@ -8064,8 +8064,8 @@ Solution: Add #ifdef.
Files: src/option.c
Patch 7.2.109
Problem: 'langmap' does not work for multi-byte characters.
Solution: Add a list of mapped multi-byte characters. (based on work by
Problem: 'langmap' does not work for multibyte characters.
Solution: Add a list of mapped multibyte characters. (based on work by
Konstantin Korikov, Agathoklis Hatzimanikas)
Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h,
src/normal.c, src/option.c, src/proto/option.pro, src/window.c
@@ -8910,7 +8910,7 @@ Solution: Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle)
Files: src/auto/configure, src/configure.in
Patch 7.2.252
Problem: When using a multi-byte 'enc' the 'iskeyword' option cannot
Problem: When using a multibyte 'enc' the 'iskeyword' option cannot
contain characters above 128.
Solution: Use mb_ptr2char_adv().
Files: src/charset.c
@@ -9055,7 +9055,7 @@ Files: src/memline.c
Patch 7.2.276
Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado)
Solution: Check for the character to be < 256. Also make it possible to
specify a range of multi-byte characters. (Lech Lorens)
specify a range of multibyte characters. (Lech Lorens)
Files: src/charset.c
Patch 7.2.277
@@ -9146,7 +9146,7 @@ Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique
Files: src/screen.c
Patch 7.2.292
Problem: Block right-shift doesn't work properly with multi-byte encoding
Problem: Block right-shift doesn't work properly with multibyte encoding
and 'list' set.
Solution: Add the missing "else". (Lech Lorens)
Files: src/ops.c
@@ -9432,7 +9432,7 @@ Files: src/screen.c
Patch 7.2.342
Problem: Popup menu displayed wrong in 'rightleft' mode when there are
multi-byte characters.
multibyte characters.
Solution: Adjust the column computations. (Dominique Pelle)
Files: src/popupmnu.c
@@ -10113,7 +10113,7 @@ Fix compile warnings, esp. for 64-bit systems. (Mike Williams)
Fix: :redir to a dictionary that is changed before ":redir END" causes a
memory access error.
Fix: terminal title not properly restored when there are multi-byte
Fix: terminal title not properly restored when there are multibyte
characters. (partly by James Vega)
Set 'wrapscan' when checking the .po files. (Mike Williams)
@@ -10134,7 +10134,7 @@ Changed readfile() to ignore byte order marks, unless in binary mode.
On MS-Windows completion of shell commands didn't work.
An unprintable multi-byte character at the start of the screen line caused the
An unprintable multibyte character at the start of the screen line caused the
following text to be drawn at the wrong position.
Got ml_get errors when using undo with 'virtualedit'.
@@ -10393,7 +10393,7 @@ Solution: Increase the list reference count. Add a test for undotree()
Files: src/eval.c, src/testdir/Makefile, src/testdir/test61.in
Patch 7.3.006
Problem: Can't build some multi-byte code with C89.
Problem: Can't build some multibyte code with C89.
Solution: Move code to after declarations. (Joachim Schmitz)
Files: src/mbyte.c, src/spell.c
@@ -11163,7 +11163,7 @@ Solution: Call update_screen() before waiting for input.
Files: src/misc1.c, src/getchar.c
Patch 7.3.138
Problem: ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov)
Problem: ":com" changes the multibyte text of :echo. (Dimitar Dimitrov)
Solution: Search for K_SPECIAL as a byte, not a character. (Ben Schmidt)
Files: src/ex_docmd.c
@@ -11488,7 +11488,7 @@ Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile,
src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist
Patch 7.3.192
Problem: Ex command ":s/ \?/ /g" splits multi-byte characters into bytes.
Problem: Ex command ":s/ \?/ /g" splits multibyte characters into bytes.
(Dominique Pelle)
Solution: Advance over whole character instead of one byte.
Files: src/ex_cmds.c
@@ -12018,15 +12018,15 @@ Solution: Only restore the cursor position when there is a command line.
Files: src/ex_getln.c
Patch 7.3.283
Problem: An expression mapping with a multi-byte character containing a
Problem: An expression mapping with a multibyte character containing a
0x80 byte gets messed up. (ZyX)
Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira)
Files: src/getchar.c
Patch 7.3.284
Problem: The str2special() function doesn't handle multi-byte characters
Problem: The str2special() function doesn't handle multibyte characters
properly.
Solution: Recognize multi-byte characters. (partly by Vladimir Vichniakov)
Solution: Recognize multibyte characters. (partly by Vladimir Vichniakov)
Files: src/getchar.c, src/message.c, src/misc2.c
Patch 7.3.285 (after 7.3.284)
@@ -12114,7 +12114,7 @@ Solution: Adjust the style. (Elias Diem)
Files: src/gui_photon.c
Patch 7.3.300
Problem: Python doesn't parse multi-byte argument correctly.
Problem: Python doesn't parse multibyte argument correctly.
Solution: Use "t" instead of "s". (lilydjwg)
Files: src/if_py_both.h
@@ -12272,7 +12272,7 @@ Files: src/ex_cmds.c
Patch 7.3.328
Problem: When command line wraps the cursor may be displayed wrong when
there are multi-byte characters.
there are multibyte characters.
Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto)
Files: src/ex_getln.c
@@ -13379,7 +13379,7 @@ Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro
Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
Patch 7.3.521
Problem: Using "z=" on a multi-byte character may cause a crash.
Problem: Using "z=" on a multibyte character may cause a crash.
Solution: Don't use strlen() on an int pointer.
Files: src/spell.c
@@ -13477,7 +13477,7 @@ Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok
Patch 7.3.539
Problem: Redrawing a character on the command line does not work properly
for multi-byte characters.
for multibyte characters.
Solution: Count the number of bytes in a character. (Yukihiro Nakadaira)
Files: src/ex_getln.c
@@ -13856,7 +13856,7 @@ Solution: Add #ifdef for MEMORYSTATUSEX.
Files: src/os_win32.c
Patch 7.3.606
Problem: CTRL-P completion has a problem with multi-byte characters.
Problem: CTRL-P completion has a problem with multibyte characters.
Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto)
Files: src/search.c, src/macros.h
@@ -14192,7 +14192,7 @@ Files: src/ex_docmd.c
Patch 7.3.664
Problem: Buffer overflow in unescaping text. (Raymond Ko)
Solution: Limit check for multi-byte character to 4 bytes.
Solution: Limit check for multibyte character to 4 bytes.
Files: src/mbyte.c
Patch 7.3.665
@@ -14359,8 +14359,8 @@ Solution: Add the shiftwidth() function. (so8res)
Files: runtime/doc/eval.txt, src/eval.c
Patch 7.3.695
Problem: Balloon cannot show multi-byte text.
Solution: Properly deal with multi-byte characters. (Dominique Pelle)
Problem: Balloon cannot show multibyte text.
Solution: Properly deal with multibyte characters. (Dominique Pelle)
Files: src/gui_beval.c, src/ui.c
Patch 7.3.696
@@ -14658,7 +14658,7 @@ Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro,
src/testdir/test88.ok,
Patch 7.3.749
Problem: Python interface doesn't build without the multi-byte feature.
Problem: Python interface doesn't build without the multibyte feature.
Solution: Add #ifdef. (Ken Takata)
Files: src/if_py_both.h
@@ -14764,7 +14764,7 @@ Solution: Save and restore the cursor position when appropriate. (idea by
Files: src/edit.c
Patch 7.3.769
Problem: 'matchpairs' does not work with multi-byte characters.
Problem: 'matchpairs' does not work with multibyte characters.
Solution: Make it work. (Christian Brabandt)
Files: src/misc1.c, src/option.c, src/proto/option.pro, src/search.c,
src/testdir/test69.in, src/testdir/test69.ok
@@ -15184,9 +15184,9 @@ Solution: Add lines for new files.
Files: Filelist
Patch 7.3.840
Problem: "\@<!" in regexp does not work correctly with multi-byte
Problem: "\@<!" in regexp does not work correctly with multibyte
characters, especially cp932.
Solution: Move column to start of multi-byte character. (Yasuhiro Matsumoto)
Solution: Move column to start of multibyte character. (Yasuhiro Matsumoto)
Files: src/regexp.c
Patch 7.3.841
@@ -15256,7 +15256,7 @@ Solution: Use Xutf8TextPropertyToTextList(). (Christian Brabandt)
Files: src/ui.c, src/ops.c
Patch 7.3.853
Problem: Using "ra" in multiple lines on multi-byte characters leaves a few
Problem: Using "ra" in multiple lines on multibyte characters leaves a few
characters not replaced.
Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto)
Files: src/testdir/test69.in, src/testdir/test69.ok, src/ops.c
@@ -15273,7 +15273,7 @@ Solution: Add type casts. (Mike Williams)
Files: src/misc1.c
Patch 7.3.856
Problem: When calling system() multi-byte clipboard contents is garbled.
Problem: When calling system() multibyte clipboard contents is garbled.
Solution: Save and restore the clipboard contents. (Yukihiro Nakadaira)
Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/ops.c,
src/proto/ops.pro, src/os_unix.c, src/proto/ui.pro, src/ui.c
@@ -15381,9 +15381,9 @@ Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok,
src/testdir/test80.in, src/testdir/test80.ok
Patch 7.3.874
Problem: Comparing file names does not handle multi-byte characters
Problem: Comparing file names does not handle multibyte characters
properly.
Solution: Implement multi-byte handling.
Solution: Implement multibyte handling.
Files: src/misc1.c, src/misc2.c
Patch 7.3.875 (after 7.3.866)
@@ -15445,7 +15445,7 @@ Solution: Do not unref list and dict. (Yasuhiro Matsumoto)
Files: src/if_lua.c
Patch 7.3.886
Problem: Can't build with multi-byte on Solaris 10.
Problem: Can't build with multibyte on Solaris 10.
Solution: Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume)
Files: src/ui.c
@@ -15459,7 +15459,7 @@ Files: src/testdir/test94.in, src/testdir/test94.ok,
Patch 7.3.888
Problem: Filename completion with 'fileignorecase' does not work for
multi-byte characters.
multibyte characters.
Solution: Make 'fileignorecase' work properly. (Hirohito Higashi)
Files: src/misc2.c
@@ -15935,7 +15935,7 @@ Files: src/if_py_both.h
Patch 7.3.968
Problem: Multi-byte support is only available when compiled with "big"
features.
Solution: Include multi-byte by default, with "normal" features.
Solution: Include multibyte by default, with "normal" features.
Files: src/feature.h
Patch 7.3.969
@@ -16011,19 +16011,19 @@ Files: src/regexp_nfa.c
Patch 7.3.980
Problem: Regexp logs may contain garbage. Character classes don't work
correctly for multi-byte characters.
correctly for multibyte characters.
Solution: Check for end of post list. Only use "is" functions for
characters up to 255. (Ken Takata)
Files: src/regexp_nfa.c
Patch 7.3.981
Problem: In the old regexp engine \i, \I, \f and \F don't work on
multi-byte characters.
multibyte characters.
Solution: Dereference pointer properly.
Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok
Patch 7.3.982
Problem: In the new regexp engine \p does not work on multi-byte
Problem: In the new regexp engine \p does not work on multibyte
characters.
Solution: Don't point to an integer but the characters.
Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok
@@ -16171,7 +16171,7 @@ Files: src/memfile.c
Patch 7.3.1008
Problem: Test 95 fails on MS-Windows.
Solution: Set 'nomore'. Change \i to \f. Change multi-byte character to
Solution: Set 'nomore'. Change \i to \f. Change multibyte character to
something that is not matching \i. (Ken Takata)
Files: src/testdir/test95.in, src/testdir/test95.ok
@@ -16187,7 +16187,7 @@ Solution: Only apply ireg_icombine for composing characters.
Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok
Patch 7.3.1011
Problem: New regexp engine is inefficient with multi-byte characters.
Problem: New regexp engine is inefficient with multibyte characters.
Solution: Handle a character at a time instead of a byte at a time. Also
make \Z partly work.
Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok
@@ -16315,7 +16315,7 @@ Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok,
src/regexp.h
Patch 7.3.1034
Problem: New regexp code using strange multi-byte code.
Problem: New regexp code using strange multibyte code.
Solution: Use the normal code to advance and backup pointers.
Files: src/regexp_nfa.c
+8571 -66
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,4 +1,4 @@
*vi_diff.txt* For Vim version 8.2. Last change: 2020 Jun 07
*vi_diff.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -467,7 +467,7 @@ Editing binary files. |edit-binary|
last line in the file.
Multi-language support. |multi-lang|
Files in double-byte or multi-byte encodings can be edited. There is
Files in double-byte or multibyte encodings can be edited. There is
UTF-8 support to be able to edit various languages at the same time,
without switching fonts. |UTF-8|
Messages and menus are available in different languages.
+320 -139
View File
@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 8.2. Last change: 2020 Aug 01
*vim9.txt* For Vim version 8.2. Last change: 2020 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -19,6 +19,7 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
3. New style functions |fast-functions|
4. Types |vim9-types|
5. Namespace, Import and Export |vim9script|
6. Future work: classes |vim9-classes|
9. Rationale |vim9-rationale|
@@ -49,12 +50,14 @@ errors are handled.
The Vim9 script syntax and semantics are used in:
- a function defined with the `:def` command
- a script file where the first command is `vim9script`
- an autocommand defined in the context of the above
When using `:function` in a Vim9 script file the legacy syntax is used.
However, this can be confusing and is therefore discouraged.
Vim9 script and legacy Vim script can be mixed. There is no requirement to
rewrite old scripts, they keep working as before.
rewrite old scripts, they keep working as before. You may want to use a few
`:def` functions for code that needs to be fast.
==============================================================================
@@ -70,10 +73,10 @@ comments start with #. >
let count = 0 # number of occurrences
The reason is that a double quote can also be the start of a string. In many
places, especially halfway 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.
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.
In Vi # is a command to list text with numbers. In Vim9 script you can use
`:number` for that. >
@@ -92,9 +95,13 @@ often 10x to 100x times.
Many errors are already found when compiling, before the function is executed.
The syntax is strict, to enforce code that is easy to read and understand.
Compilation is done when the function is first called, or when the
`:defcompile` command is encountered in the script where the function was
defined. `:disassemble` also compiles the function.
Compilation is done when:
- the function is first called
- when the `:defcompile` command is encountered in the script where the
function was defined
- `:disassemble` is used for the function.
- a function that is compiled calls the function or uses it as a function
reference
`:def` has no options like `:function` does: "range", "abort", "dict" or
"closure". A `:def` function always aborts on an error, does not get a range
@@ -104,12 +111,12 @@ 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. Just like any other language.
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: >
def MyFunc(...itemlist: list<number>)
list type, similar to TypeScript. For example, a list of numbers: >
def MyFunc(...itemlist: list<number>)
for item in itemlist
...
@@ -123,8 +130,8 @@ 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 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,
@@ -142,7 +149,7 @@ 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 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.
@@ -168,7 +175,7 @@ blocks. Once the block ends the variable is no longer accessible: >
else
let inner = 0
endif
echo inner " Error!
echo inner # Error!
The declaration must be done earlier: >
let inner: number
@@ -185,7 +192,10 @@ To intentionally avoid a variable being available later, a block can be used:
let temp = 'temp'
...
}
echo temp " Error!
echo temp # Error!
Declaring a variable with a type but without an initializer will initialize to
zero, false or empty.
An existing variable cannot be assigned to with `:let`, since that implies a
declaration. Global, window, tab, buffer and Vim variables can only be used
@@ -205,6 +215,40 @@ at the script level. >
Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
used to repeat a `:substitute` command.
*vim9-const*
In legacy Vim script "const list = []" would make the variable "list"
immutable and also the value. Thus you cannot add items to the list. This
differs from what many languages do. Vim9 script does it like TypeScript: only
"list" is immutable, the value can be changed.
One can use `:const!` to make both the variable and the value immutable. Use
this for composite structures that you want to make sure will not be modified.
How this works: >
vim9script
const list = [1, 2]
list = [3, 4] # Error!
list[0] = 2 # OK
const! LIST = [1, 2]
LIST = [3, 4] # Error!
LIST[0] = 2 # Error!
It is common to write constants as ALL_CAPS, but you don't have to.
The constant only applies to the value itself, not what it refers to. >
cont females = ["Mary"]
const! NAMES = [["John", "Peter"], females]
NAMES[0] = ["Jack"] # Error!
NAMES[0][0] = ["Jack"] # Error!
NAMES[1] = ["Emma"] # Error!
Names[1][0] = "Emma" # OK, now females[0] == "Emma"
Rationale: TypeScript has no way to make the value immutable. One can use
immutable types, but that quickly gets complicated for nested values. And
with a type cast the value can be made mutable again, which means there is no
guarantee the value won't change. Vim supports immutable values, in legacy
script this was done with `:lockvar`. But that is an extra statement and also
applies to nested values. Therefore the solution to use `:const!`.
*E1092*
Declaring more than one variable at a time, using the unpack notation, is
@@ -217,7 +261,7 @@ isn't that easy.
Omitting :call and :eval ~
Functions can be called without `:call`: >
writefile(lines, 'file')
writefile(lines, 'file')
Using `:call` is still possible, but this is discouraged.
A method call without `eval` is possible, so long as the start is an
@@ -232,7 +276,7 @@ identifier or can't be an Ex command. Examples: >
'foobar'->Process()
('foobar')->Process()
In rare case there is ambiguity between a function name and an Ex command,
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
@@ -240,8 +284,8 @@ 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 function is called.
@@ -324,26 +368,26 @@ Notes:
current function.
- No line break is allowed in the LHS of an assignment. Specifically when
unpacking a list |:let-unpack|. This is OK: >
[var1, var2] =
[var1, var2] =
Func()
< This does not work: >
[var1,
[var1,
var2] =
Func()
- No line break is allowed in between arguments of an `:echo`, `:execute` and
similar commands. This is OK: >
echo [1,
echo [1,
2] [3,
4]
< This does not work: >
echo [1, 2]
echo [1, 2]
[3, 4]
- No line break is allowed in the arguments of a lambda, between the "{" and
"->". This is OK: >
filter(list, {k, v ->
filter(list, {k, v ->
v > 0})
< This does not work: >
filter(list, {k,
filter(list, {k,
v -> v > 0})
@@ -367,11 +411,11 @@ The 'ignorecase' option is not used for comparators that use strings.
White space ~
Vim9 script enforces proper use of white space. This is no longer allowed: >
let var=234 " Error!
let var= 234 " Error!
let var =234 " Error!
let var=234 # Error!
let var= 234 # Error!
let var =234 # Error!
There must be white space before and after the "=": >
let var = 234 " OK
let var = 234 # OK
White space must also be put before the # that starts a comment after a
command: >
let var = 234# Error!
@@ -381,20 +425,20 @@ White space is required around most operators.
White space is not allowed:
- Between a function name and the "(": >
call Func (arg) " Error!
call Func
\ (arg) " Error!
call Func(arg) " OK
call Func(
\ arg) " OK
call Func(
\ arg " OK
call Func (arg) # Error!
call Func
\ (arg) # Error!
call Func(arg) # OK
call Func(
\ arg) # OK
call Func(
\ arg # OK
\ )
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.
@@ -403,7 +447,7 @@ for using a list or job. This is very much like JavaScript, but there are a
few exceptions.
type TRUE when ~
bool v:true
bool v:true or 1
number non-zero
float non-zero
string non-empty
@@ -429,13 +473,19 @@ The boolean operators "||" and "&&" do not change the value: >
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.
*false* *true*
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*
@@ -444,16 +494,16 @@ same time tries to support the legacy Vim commands. Some compromises had to
be made. Here is a summary of what might be unexpected.
Ex command ranges need to be prefixed with a colon. >
-> " legacy Vim: shifts the previous line to the right
->func() " Vim9: method call in continuation line
:-> " Vim9: shifts the previous line to the right
-> # legacy Vim: shifts the previous line to the right
->func() # Vim9: method call in continuation line
:-> # Vim9: shifts the previous line to the right
%s/a/b " legacy Vim: substitute on all lines
%s/a/b # legacy Vim: substitute on all lines
x = alongname
% another " Vim9: line continuation without a backslash
:%s/a/b " Vim9: substitute on all lines
'text'->func() " Vim9: method call
:'t " legacy Vim: jump to mark m
% another # Vim9: 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
@@ -473,7 +523,7 @@ Vim9 functions are compiled as a whole: >
if !has('feature')
return
endif
use-feature " May give compilation error
use-feature # May give compilation error
enddef
For a workaround, split it in two functions: >
func Maybe()
@@ -486,6 +536,18 @@ For a workaround, split it in two functions: >
use-feature
enddef
endif
Or put the unsupported code inside an `if` with a constant expression that
evaluates to false: >
def Maybe()
if has('feature')
use-feature
endif
enddef
Note that for unrecognized commands there is no check for "|" and a following
command. This will give an error for missing `endif`: >
def Maybe()
if has('feature') | use-feature | endif
enddef
==============================================================================
@@ -494,7 +556,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`.
@@ -533,7 +595,7 @@ If the script the function is defined in is Vim9 script, then script-local
variables can be accessed without the "s:" prefix. They must be defined
before the function is compiled. If the script the function is defined in is
legacy script, then script-local variables must be accessed with the "s:"
prefix.
prefix and they do not need to exist (they can be deleted any time).
*:defc* *:defcompile*
:defc[ompile] Compile functions defined in the current script that
@@ -676,8 +738,8 @@ Type inference *type-inference*
In general: Whenever the type is clear it can be omitted. For example, when
declaring a variable and giving it a value: >
let var = 0 " infers number type
let var = 'hello' " infers string type
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
@@ -686,6 +748,22 @@ dictionary. If there is a mix of types, the "any" type is used. >
['a', 'b', 'c'] list<string>
[1, 'x', 3] list<any>
Stricter type checking *type-checking*
In legacy Vim script, where a number was expected, a string would be
automatically converted to a number. This was convenient for an actual number
such as "123", but leads to unexpected problems (but no error message) if the
string doesn't start with a number. Quite often this leads to hard-to-find
bugs.
In Vim9 script this has been made stricter. In most places it works just as
before, if the value used matches the expected type. There will sometimes be
an error, thus breaking backwards compatibility. For example:
- Using a number other than 0 or 1 where a boolean is expected. *E1023*
- Using a string value when setting a number options.
- Using a number where a string is expected. *E1024*
==============================================================================
5. Namespace, Import and Export
@@ -697,6 +775,9 @@ A Vim9 script can be written to be imported. This means that everything in
the script is local, unless exported. Those exported items, and only those
items, can then be imported in another script.
You can cheat by using the global namespace explicitly. We will assume here
that you don't do that.
Namespace ~
*:vim9script* *:vim9*
@@ -755,10 +836,15 @@ In case the name is ambiguous, another name can be specified: >
To import all exported items under a specific identifier: >
import * as That from 'thatscript.vim'
{not implemented yet: using "This as That"}
Then you can use "That.EXPORTED_CONST", "That.someValue", etc. You are free
to choose the name "That", but it is highly recommended to use the name of the
script file to avoid confusion.
`:import` can also be used in legacy Vim script. The imported items still
become script-local, even when the "s:" prefix is not given.
The script name after `import` can be:
- A relative path, starting "." or "..". This finds a file relative to the
location of the script file itself. This is useful to split up a large
@@ -789,7 +875,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"
@@ -804,7 +890,7 @@ actually needed. A recommended mechanism:
items and any private items. >
vim9script
let localVar = 'local'
export def FilterFunc(arg: string): string
export def FilterFunc(arg: string): string
...
< This goes in .../import/someother.vim.
@@ -818,13 +904,44 @@ If an `import` statement is used in legacy Vim script, the script-local "s:"
namespace will be used for the imported item, even when "s:" is not specified.
==============================================================================
6. Future work: classes *vim9-classes*
Above "class" was mentioned a few times, but it has not been implemented yet.
Most of Vim9 script can be created without this funcionality, and since
implementing classes is going to be a lot of work, it is left for the future.
For now we'll just make sure classes can be added later.
Thoughts:
- `class` / `endclass`, everything in one file
- Class names are always CamelCase
- Single constructor
- Single inheritance with `class ThisClass extends BaseClass`
- `abstract class`
- `interface` (Abstract class without any implementation)
- `class SomeClass implements SomeInterface`
- Generics for class: `class <Tkey, Tentry>`
- Generics for function: `def <Tkey> GetLast(key: Tkey)`
Again, much of this is from TypeScript.
Some things that look like good additions:
- Use a class as an interface (like Dart)
- Extend a class with methods, using an import (like Dart)
An important class that will be provided is "Promise". Since Vim is single
threaded, connecting asynchronous operations is a natural way of allowing
plugins to do their work without blocking the user. It's a uniform way to
invoke callbacks and handle timeouts and errors.
==============================================================================
9. Rationale *vim9-rationale*
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
@@ -851,13 +968,135 @@ instruction, at execution time the instruction would have to inspect the type
of the arguments and decide what kind of addition to do. And when the
type is dictionary throw an error. If the types are known to be numbers then
an "add number" instruction can be used, which is faster. The error can be
given at compile time, no error handling is needed at runtime.
given at compile time, no error handling is needed at runtime, adding two
numbers cannot fail.
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".
Removing clutter and weirdness ~
Once decided that `:def` functions have different syntax than legacy functions,
we are free to add improvements to make the code more familiar for users who
know popular programming languages. In other words: remove weird things that
only Vim uses.
We can also remove clutter, mainly things that were done to make Vim script
backwards compatible with good old Vi commands.
Examples:
- Drop `:call` for calling a function and `:eval` for manipulating data.
- Drop using a leading backslash for line continuation, automatically figure
out where an expression ends.
However, this does require that some things need to change:
- Comments start with # instead of ", to avoid confusing them with strings.
- Ex command ranges need to be prefixed with a colon, to avoid confusion with
expressions (single quote can be a string or a mark, "/" can be divide or a
search command, etc.).
Goal is to limit the differences. A good criteria is that when the old syntax
is used you are very likely to get an error message.
TypeScript syntax and semantics ~
Script writers have complained that the Vim script syntax is unexpectedly
different from what they are used to. To reduce this complaint popular
languages are used as an example. At the same time, we do not want to abandon
the well-known parts of legacy Vim script.
Since Vim already uses `:let` and `:const` and optional type checking is
desirable, the JavaScript/TypeScript syntax fits best for variable
declarations: >
const greeting = 'hello' # string type is inferred
let name: string
...
name = 'John'
Expression evaluation was already close to what JavaScript and other languages
are doing. Some details are unexpected and can be fixed. For example how the
|| and && operators work. Legacy Vim script: >
let value = 44
...
let result = value || 0 # result == 1
Vim9 script works like JavaScript/TypeScript, keep the value: >
let value = 44
...
let result = value || 0 # result == 44
Another reason why TypeScript can be used as an example for Vim9 script is the
mix of static typing (a variable always has a known value type) and dynamic
typing (a variable can have different types, this hanges at runtime). Since
legacy Vim script is dynamically typed and a lot of existing functionality
(esp. builtin functions) depends on that, while static typing allows for much
faster execution, we need to have this mix in Vim9 script.
There is no intention to completely match TypeScript syntax and semantics. We
just want to take those parts that we can use for Vim and we expect Vim users
will be happy with. TypeScript is a complex language with its own history,
advantages and disadvantages. To get an idea of the disadvantages read the
book: "JavaScript: The Good Parts". Or find the article "TypeScript: the good
parts" and read the "Things to avoid" section.
People familiar with other languages (Java, Python, etc.) will also find
things in TypeScript that they do not like or do not understand. We'll try to
avoid those things.
Specific items from TypeScript we avoid:
- Overloading "+", using it both for addition and string concatenation. This
goes against legacy Vim script and often leads to mistakes. For that reason
we will keep using ".." for string concatenation. Lua also uses ".." this
way. And it allows for conversion to string for more values.
- TypeScript can use an expression like "99 || 'yes'" in a condition, but
cannot assign the value to a boolean. That is inconsistent and can be
annoying. Vim recognizes an expression with && or || and allows using the
result as a bool.
- TypeScript considers an empty string as Falsy, but an empty list or dict as
Truthy. That is inconsistent. In Vim an empty list and dict are also
Falsy.
- TypeScript has various "Readonly" types, which have limited usefulness,
since a type cast can remove the immutable nature. Vim locks the value,
which is more flexible, but is only checked at runtime.
Import and Export ~
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. This defies the concept of a package that only
exports selected items and keeps the rest local.
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,
unless exported.
- When importing a script the symbols that are imported are explicitly listed,
avoiding name conflicts and failures if functionality is added later.
- The mechanism allows for writing a big, long script with a very clear API:
the exported function(s) and class(es).
- By using relative paths loading can be much faster for an import inside of a
package, no need to search many directories.
- Once an import has been used, it can be cached and loading it again can be
avoided.
- The Vim-specific use of "s:" to make things script-local can be dropped.
When sourcing a Vim9 script from a legacy script, only the items defined
globally can be used, not the exported items. Alternatives considered:
- All the exported items become available as script-local items. This makes
it uncontrollable what items get defined and likely soon leads to trouble.
- Use the exported items and make them global. Disadvantage is that it's then
not possible to avoid name clashes in the global namespace.
- Completely disallow sourcing a Vim9 script, require using `:import`. That
makes it difficult to use scripts for testing, or sourcing them from the
command line to try them out.
Note that you can also use `:import` in legacy Vim script, see above.
Compiling functions early ~
Functions are compiled when called or when `:defcompile` is used. Why not
@@ -883,92 +1122,34 @@ only reported then. In case these errors should be found early, e.g. when
testing, the `:defcompile` command will help out.
TypeScript syntax and semantics ~
Why not use an embeded language? ~
Script writers have complained that the Vim script syntax is unexpectedly
different from what they are used to. To reduce this complaint popular
languages are used as an example. At the same time, we do not want to abandon
the well-known parts of legacy Vim script.
Vim supports interfaces to Perl, Python, Lua, Tcl and a few others. But
these interfaces have never become widely used, for various reasons. When
Vim9 was designed a decision was made to make these interfaces lower priority
and concentrate on Vim script.
Since Vim already uses `:let` and `:const` and optional type checking is
desirable, the JavaScript/TypeScript syntax fits best for variable
declarations. >
const greeting = 'hello' " string type is inferred
let name: string
...
name = 'John'
Still, plugin writers may find other languages more familiar, want to use
existing libraries or see a performance benefit. We encourage plugin authors
to write code in any language and run it as an external tool, using jobs and
channels. We can try to make this easier somehow.
Expression evaluation was already close to what JavaScript and other languages
are doing. Some details are unexpected and can be fixed. For example how the
|| and && operators work. Legacy Vim script: >
let result = 44
...
return result || 0 " returns 1
Vim9 script works like JavaScript/Typescript, keep the value: >
let result = 44
...
return result || 0 " returns 44
On the other hand, overloading "+" to use both for addition and string
concatenation goes against legacy Vim script and often leads to mistakes.
For that reason we will keep using ".." for string concatenation. Lua also
uses ".." this way.
Import and Export ~
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
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,
unless exported.
- When importing a script the symbols that are imported are listed, avoiding
name conflicts and failures if later functionality is added.
- The mechanism allows for writing a big, long script with a very clear API:
the exported function(s) and class(es).
- By using relative paths loading can be much faster for an import inside of a
package, no need to search many directories.
- Once an import has been used, it can be cached and loading it again can be
avoided.
- The Vim-specific use of "s:" to make things script-local can be dropped.
When sourcing a Vim9 script from a legacy script, only the items defined
globally can be used, not the exported items. Alternatives considered:
- All the exported items become available as script-local items. This makes
it uncontrollable what items get defined.
- Use the exported items and make them global. Disadvantage is that it's then
not possible to avoid name clashes in the global namespace.
- Completely disallow sourcing a Vim9 script, require using `:import`. That
makes it difficult to use scripts for testing, or sourcing them from the
command line to try them out.
Using an external tool also has disadvantages. An alternative is to convert
the tool into Vim script. For that to be possible without too much
translation, and keeping the code fast at the same time, the constructs of the
tool need to be supported. Since most languages support classes the lack of
support for classes in Vim is then a problem.
Classes ~
Vim supports interfaces to Perl, Python, Lua, Tcl and a few others. But
these have never become widespread. When Vim 9 was designed a decision was
made to phase out these interfaces and concentrate on Vim script, while
encouraging plugin authors to write code in any language and run it as an
external tool, using jobs and channels.
Still, using an external tool has disadvantages. An alternative is to convert
the tool into Vim script. For that to be possible without too much
translation, and keeping the code fast at the same time, the constructs of the
tool need to be supported. Since most languages support classes the lack of
class support in Vim is then a problem.
Previously Vim supported a kind-of object oriented programming by adding
methods to a dictionary. With some care this could be made to work, but it
does not look like real classes. On top of that, it's very slow, because of
the use of dictionaries.
Vim supports a kind-of object oriented programming by adding methods to a
dictionary. With some care this can be made to work, but it does not look
like real classes. On top of that, it's quite slow, because of the use of
dictionaries.
The support of classes in Vim9 script is a "minimal common functionality" of
class support in most languages. It works mostly like Java, which is the most
class support in most languages. It works much like Java, which is the most
popular programming language.
+7 -5
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 Sep 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -955,12 +955,12 @@ CTRL-W g } *CTRL-W_g}*
cursor. This is less clever than using |:ptag|, but you don't
need a tags file and it will also find matches in system
include files. Example: >
:au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
:au! CursorHold *.[ch] ++nested exe "silent! psearch " . expand("<cword>")
< Warning: This can be slow.
Example *CursorHold-example* >
:au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
:au! CursorHold *.[ch] ++nested exe "silent! ptag " . expand("<cword>")
This will cause a ":ptag" to be executed for the keyword under the cursor,
when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
@@ -973,7 +973,7 @@ be found. Also see |CursorHold|. To disable this again: >
A nice addition is to highlight the found tag, avoid the ":ptag" when there
is no word under the cursor, and a few other things: >
:au! CursorHold *.[ch] nested call PreviewWord()
:au! CursorHold *.[ch] ++nested call PreviewWord()
:func PreviewWord()
: if &previewwindow " don't do this in the preview window
: return
@@ -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.
+4 -4
View File
@@ -184,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
@@ -240,10 +240,10 @@ au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml
au BufNewFile,BufRead *bsd,*.bsdl setf bsdl
" Bazel (http://bazel.io)
autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel setf bzl
autocmd BufRead,BufNewFile *.bzl,*.bazel,WORKSPACE setf bzl
if has("fname_case")
" There is another check for BUILD further below.
autocmd BufRead,BufNewFile BUILD setf bzl
autocmd BufRead,BufNewFile *.BUILD,BUILD setf bzl
endif
" C or lpc
@@ -2042,7 +2042,7 @@ au BufNewFile,BufRead bzr_log.* setf bzr
" Bazel build file
if !has("fname_case")
au BufNewFile,BufRead BUILD setf bzl
au BufNewFile,BufRead *.BUILD,BUILD setf bzl
endif
" BIND zone
+3 -2
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
+4 -3
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
+49 -12
View File
@@ -1,11 +1,11 @@
" Vim filetype plugin file
" Language: Javascript
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2008 Jun 15
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/ftplugin/javascript.vim
" Language: Javascript
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Jun 23
" Contributor: Romain Lafourcade <romainlafourcade@gmail.com>
if exists("b:did_ftplugin")
finish
finish
endif
let b:did_ftplugin = 1
@@ -13,7 +13,7 @@ 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".
" and insert the comment leader when hitting <CR> or using "o".
setlocal formatoptions-=t formatoptions+=croql
" Set completion with CTRL-X CTRL-O to autoloaded function.
@@ -26,13 +26,50 @@ setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
setlocal commentstring=//%s
" Change the :browse e filter to primarily show Java-related files.
if has("gui_win32")
let b:browsefilter="Javascript Files (*.js)\t*.js\n" .
\ "All Files (*.*)\t*.*\n"
" Change the :browse e filter to primarily show JavaScript-related files.
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter =
\ "JavaScript Files (*.js)\t*.js\n"
\ .. "JSX Files (*.jsx)\t*.jsx\n"
\ .. "JavaScript Modules (*.es, *.es6, *.cjs, *.mjs, *.jsm)\t*.es;*.es6;*.cjs;*.mjs;*.jsm\n"
\ .. "Vue Templates (*.vue)\t*.vue\n"
\ .. "JSON Files (*.json)\t*.json\n"
\ .. "All Files (*.*)\t*.*\n"
endif
let b:undo_ftplugin = "setl fo< ofu< com< cms<"
" The following suffixes should be implied when resolving filenames
setlocal suffixesadd+=.js,.jsx,.es,.es6,.cjs,.mjs,.jsm,.vue,.json
" The following suffixes should have low priority
" .snap jest snapshot
setlocal suffixes+=.snap
" Remove irrelevant part of 'path'.
" User is expected to augment it with contextually-relevant paths
setlocal path-=/usr/include
" Matchit configuration
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words =
\ '\<do\>:\<while\>,'
\ .. '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,'
\ .. '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
endif
" Set 'define' to a comprehensive value
let &l:define =
\ '\(^\s*(*async\s\+function\|(*function\)'
\ .. '\|^\s*\(\*\|static\|async\|get\|set\|\i\+\.\)'
\ .. '\|^\s*\(\ze\i\+\)\(([^)]*).*{$\|\s*[:=,]\)'
\ .. '\|^\s*\(export\s\+\|export\s\+default\s\+\)*\(var\|let\|const\|function\|class\)'
\ .. '\|\<as\>'
let b:undo_ftplugin =
\ "setl fo< ofu< com< cms< sua< su< def< pa<"
\ .. "| unlet! b:browsefilter b:match_ignorecase b:match_words"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: textwidth=78 tabstop=8 shiftwidth=4 softtabstop=4 expandtab
+5
View File
@@ -1,2 +1,7 @@
" Vim filetype plugin file
" Language: JavaScript React
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Aug 19
" Placeholder for backwards compatilibity: .jsx used to stand for JavaScript.
runtime! ftplugin/javascript.vim
+3 -5
View File
@@ -183,12 +183,10 @@ if !exists("*s:ParseRpmVars")
endif
let varname = strpart(a:str, start+2, end-(start+2))
execute a:strline
let definestr = "^[ \t]*%(?:global|define)[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$"
let definestr = "^[ \t]*%\\(define\\|global\\)[ \t]\\+".varname."[ \t]\\+\\(.*\\)$"
let linenum = search(definestr, "bW")
if (linenum != -1)
let ret = ret . substitute(getline(linenum), definestr, "\\1", "")
else
let ret = ret . strpart(str, start, end+1-start)
if (linenum != 0)
let ret = ret . substitute(getline(linenum), definestr, "\\2", "")
endif
endwhile
return ret
+39
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
+33
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
+3 -2
View File
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Jul 26
" 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
+120 -27
View File
@@ -4,9 +4,9 @@
" Contributors: Edwin Fine <efine145_nospam01 at usa dot net>
" Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
" Last Update: 2013-Jul-21
" Last Update: 2020-Jun-11
" License: Vim license
" URL: https://github.com/hcs42/vim-erlang
" URL: https://github.com/vim-erlang/vim-erlang-runtime
" Note About Usage:
" This indentation script works best with the Erlang syntax file created by
@@ -56,7 +56,8 @@ endfunction
" Line tokenizer library {{{1
" ======================
" Indtokens are "indentation tokens".
" Indtokens are "indentation tokens". See their exact format in the
" documentaiton of the s:GetTokensFromLine function.
" Purpose:
" Calculate the new virtual column after the given segment of a line.
@@ -119,9 +120,10 @@ endfunction
" Returns:
" indtokens = [indtoken]
" indtoken = [token, vcol, col]
" token = string (examples: 'begin', '<variable>', '}')
" vcol = integer (the virtual column of the first character of the token)
" col = integer
" token = string (examples: 'begin', '<quoted_atom>', '}')
" vcol = integer (the virtual column of the first character of the token;
" counting starts from 0)
" col = integer (counting starts from 0)
function! s:GetTokensFromLine(line, string_continuation, atom_continuation,
\tabstop)
@@ -386,9 +388,12 @@ endfunction
" lnum: integer
" direction: 'up' | 'down'
" Returns:
" result: [] -- the result is an empty list if we hit the beginning or end
" of the file
" | indtoken
" result: [[], 0, 0]
" -- the result is an empty list if we hit the beginning or end of
" the file
" | [indtoken, lnum, i]
" -- the content, lnum and token index of the next (or previous)
" indtoken
function! s:FindIndToken(lnum, dir)
let lnum = a:lnum
while 1
@@ -396,9 +401,12 @@ function! s:FindIndToken(lnum, dir)
let [lnum, indtokens] = s:TokenizeLine(lnum, a:dir)
if lnum ==# 0
" We hit the beginning or end of the file
return []
return [[], 0, 0]
elseif !empty(indtokens)
return indtokens[a:dir ==# 'up' ? -1 : 0]
" We found a non-empty line. If we were moving up, we return the last
" token of this line. Otherwise we return the first token if this line.
let i = (a:dir ==# 'up' ? len(indtokens) - 1 : 0)
return [indtokens[i], lnum, i]
endif
endwhile
endfunction
@@ -417,7 +425,7 @@ function! s:PrevIndToken(lnum, i)
" If the current line has a previous token, return that
if a:i > 0
return s:all_tokens[a:lnum][a:i - 1]
return [s:all_tokens[a:lnum][a:i - 1], a:lnum, a:i - 1]
else
return s:FindIndToken(a:lnum, 'up')
endif
@@ -437,7 +445,7 @@ function! s:NextIndToken(lnum, i)
" If the current line has a next token, return that
if len(s:all_tokens[a:lnum]) > a:i + 1
return s:all_tokens[a:lnum][a:i + 1]
return [s:all_tokens[a:lnum][a:i + 1], a:lnum, a:i + 1]
else
return s:FindIndToken(a:lnum, 'down')
endif
@@ -518,7 +526,9 @@ endfunction
" ok. % IsLineAtomContinuation = false
function! s:IsLineAtomContinuation(lnum)
if has('syntax_items')
return synIDattr(synID(a:lnum, 1, 0), 'name') =~# '^erlangQuotedAtom'
let syn_name = synIDattr(synID(a:lnum, 1, 0), 'name')
return syn_name =~# '^erlangQuotedAtom' ||
\ syn_name =~# '^erlangQuotedRecord'
else
return 0
endif
@@ -535,7 +545,7 @@ endfunction
" is_standalone: bool
function! s:IsCatchStandalone(lnum, i)
call s:Log(' IsCatchStandalone called: lnum=' . a:lnum . ', i=' . a:i)
let prev_indtoken = s:PrevIndToken(a:lnum, a:i)
let [prev_indtoken, _, _] = s:PrevIndToken(a:lnum, a:i)
" If we hit the beginning of the file, it is not a catch in a try block
if prev_indtoken == []
@@ -544,7 +554,7 @@ function! s:IsCatchStandalone(lnum, i)
let prev_token = prev_indtoken[0]
if prev_token =~# '[A-Z_@0-9]'
if prev_token =~# '^[A-Z_@0-9]'
let is_standalone = 0
elseif prev_token =~# '[a-z]'
if index(['after', 'and', 'andalso', 'band', 'begin', 'bnot', 'bor', 'bsl',
@@ -659,11 +669,14 @@ endfunction
" stack: [token]
" token: string
" stored_vcol: integer
" lnum: the line number of the "end of clause" mark (or 0 if we hit the
" beginning of the file)
" i: the index of the "end of clause" token within its own line
" Returns:
" result: [should_return, indent]
" should_return: bool -- if true, the caller should return `indent` to Vim
" indent -- integer
function! s:BeginningOfClauseFound(stack, token, stored_vcol)
function! s:BeginningOfClauseFound(stack, token, stored_vcol, lnum, i)
if !empty(a:stack) && a:stack[0] ==# 'when'
call s:Log(' BeginningOfClauseFound: "when" found in stack')
call s:Pop(a:stack)
@@ -681,13 +694,45 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
return [1, a:stored_vcol + shiftwidth()]
elseif a:stack[0] ==# ';'
call s:Pop(a:stack)
if empty(a:stack)
call s:Log(' Stack is ["->", ";"], so LTI is in a function head ' .
\'-> return')
return [0, a:stored_vcol]
else
if !empty(a:stack)
return [1, s:UnexpectedToken(a:token, a:stack)]
endif
if a:lnum ==# 0
" Set lnum and i to be NextIndToken-friendly
let lnum = 1
let i = -1
else
let lnum = a:lnum
let i = a:i
endif
" Are we after a "-spec func() ...;" clause?
let [next1_indtoken, next1_lnum, next1_i] = s:NextIndToken(lnum, i)
if !empty(next1_indtoken) && next1_indtoken[0] =~# '-'
let [next2_indtoken, next2_lnum, next2_i] =
\s:NextIndToken(next1_lnum, next1_i)
if !empty(next2_indtoken) && next2_indtoken[0] =~# 'spec'
let [next3_indtoken, next3_lnum, next3_i] =
\s:NextIndToken(next2_lnum, next2_i)
if !empty(next3_indtoken)
let [next4_indtoken, next4_lnum, next4_i] =
\s:NextIndToken(next3_lnum, next3_i)
if !empty(next4_indtoken)
" Yes, we are.
call s:Log(' Stack is ["->", ";"], so LTI is in a "-spec" ' .
\'attribute -> return')
return [1, next4_indtoken[1]]
endif
endif
endif
endif
call s:Log(' Stack is ["->", ";"], so LTI is in a function head ' .
\'-> return')
return [1, a:stored_vcol]
else
return [1, s:UnexpectedToken(a:token, a:stack)]
endif
@@ -714,7 +759,7 @@ function! s:SearchEndPair(lnum, curr_col)
return s:SearchPair(
\ a:lnum, a:curr_col,
\ '\C\<\%(case\|try\|begin\|receive\|if\)\>\|' .
\ '\<fun\>\%(\s\|\n\|%.*$\)*(',
\ '\<fun\>\%(\s\|\n\|%.*$\|[A-Z_@][a-zA-Z_@]*\)*(',
\ '',
\ '\<end\>')
endfunction
@@ -756,7 +801,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
" Hit the start of the file
if lnum ==# 0
let [ret, res] = s:BeginningOfClauseFound(stack, 'beginning_of_file',
\stored_vcol)
\stored_vcol, 0, 0)
if ret | return res | endif
return 0
@@ -775,7 +820,8 @@ function! s:ErlangCalcIndent2(lnum, stack)
endif
if token ==# '<end_of_clause>'
let [ret, res] = s:BeginningOfClauseFound(stack, token, stored_vcol)
let [ret, res] = s:BeginningOfClauseFound(stack, token, stored_vcol,
\lnum, i)
if ret | return res | endif
if stored_vcol ==# -1
@@ -787,7 +833,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
endif
elseif stack == ['prev_term_plus']
if token =~# '[a-zA-Z_@]' ||
if token =~# '[a-zA-Z_@#]' ||
\ token ==# '<string>' || token ==# '<string_start>' ||
\ token ==# '<quoted_atom>' || token ==# '<quoted_atom_start>'
call s:Log(' previous token found: curr_vcol + plus = ' .
@@ -917,9 +963,18 @@ function! s:ErlangCalcIndent2(lnum, stack)
if ret | return res | endif
elseif token ==# 'fun'
let next_indtoken = s:NextIndToken(lnum, i)
let [next_indtoken, next_lnum, next_i] = s:NextIndToken(lnum, i)
call s:Log(' Next indtoken = ' . string(next_indtoken))
if !empty(next_indtoken) && next_indtoken[0] =~# '^[A-Z_@]'
" The "fun" is followed by a variable, so we might have a named fun:
" "fun Fun() -> ok end". Thus we take the next token to decide
" whether this is a function definition ("fun()") or just a function
" reference ("fun Mod:Fun").
let [next_indtoken, _, _] = s:NextIndToken(next_lnum, next_i)
call s:Log(' Next indtoken = ' . string(next_indtoken))
endif
if !empty(next_indtoken) && next_indtoken[0] ==# '('
" We have an anonymous function definition
" (e.g. "fun () -> ok end")
@@ -1327,6 +1382,26 @@ function! ErlangIndent()
return -1
endif
" If the line starts with the comment, and so is the previous non-blank line
if currline =~# '^\s*%'
let lnum = prevnonblank(v:lnum - 1)
if lnum ==# 0
call s:Log('First non-empty line of the file -> return 0.')
return 0
else
let ml = matchlist(getline(lnum), '^\(\s*\)%')
" If the previous line also starts with a comment, then return the same
" indentation that line has. Otherwise exit from this special "if" and
" don't care that the current line is a comment.
if !empty(ml)
let new_col = s:CalcVCol(ml[1], 0, len(ml[1]) - 1, 0, &tabstop)
call s:Log('Comment line after another comment line -> ' .
\'use same indent: ' . new_col)
return new_col
endif
endif
endif
let ml = matchlist(currline,
\'^\(\s*\)\(\%(end\|of\|catch\|after\)\>\|[)\]}]\|>>\)')
@@ -1381,6 +1456,24 @@ function! ErlangIndent()
endfunction
" ErlangShowTokensInLine functions {{{1
" ================================
" These functions are useful during development.
function! ErlangShowTokensInLine(line)
echo "Line: " . a:line
let indtokens = s:GetTokensFromLine(a:line, 0, 0, &tabstop)
echo "Tokens:"
for it in indtokens
echo it
endfor
endfunction
function! ErlangShowTokensInCurrentLine()
return ErlangShowTokensInLine(getline('.'))
endfunction
" Cleanup {{{1
" =======
+12 -10
View File
@@ -1,7 +1,7 @@
" Vim indent file
" Language: JSON
" Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
" Last Change: 2017 Jun 13
" Last Change: 2020 Aug 30
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
@@ -19,7 +19,7 @@ let b:did_indent = 1
setlocal nosmartindent
" Now, set up our indentation expression and keys that trigger it.
setlocal indentexpr=GetJSONIndent()
setlocal indentexpr=GetJSONIndent(v:lnum)
setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
" Only define the function once.
@@ -86,26 +86,28 @@ endfunction
" 3. GetJSONIndent Function {{{1
" =========================
function GetJSONIndent()
function GetJSONIndent(...)
" 3.1. Setup {{{2
" ----------
" For the current line, use the first argument if given, else v:lnum
let clnum = a:0 ? a:1 : v:lnum
" Set up variables for restoring position in file. Could use v:lnum here.
" Set up variables for restoring position in file. Could use clnum here.
let vcol = col('.')
" 3.2. Work on the current line {{{2
" -----------------------------
" Get the current line.
let line = getline(v:lnum)
let line = getline(clnum)
let ind = -1
" If we got a closing bracket on an empty line, find its match and indent
" according to it.
let col = matchend(line, '^\s*[]}]')
if col > 0 && !s:IsInString(v:lnum, col)
call cursor(v:lnum, col)
if col > 0 && !s:IsInString(clnum, col)
call cursor(clnum, col)
let bs = strpart('{}[]', stridx('}]', line[col - 1]) * 2, 2)
let pairstart = escape(bs[0], '[')
@@ -122,14 +124,14 @@ function GetJSONIndent()
endif
" If we are in a multi-line string, don't do anything to it.
if s:IsInString(v:lnum, matchend(line, '^\s*') + 1)
if s:IsInString(clnum, matchend(line, '^\s*') + 1)
return indent('.')
endif
" 3.3. Work on the previous line. {{{2
" -------------------------------
let lnum = prevnonblank(v:lnum - 1)
let lnum = prevnonblank(clnum - 1)
if lnum == 0
return 0
@@ -151,7 +153,7 @@ function GetJSONIndent()
if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
return ind + shiftwidth()
else
call cursor(v:lnum, vcol)
call cursor(clnum, vcol)
end
endif
+81
View File
@@ -0,0 +1,81 @@
" Vim Keymap file for French standard keyboard layout (without AltGr keys as
" they don't work reliably in all version of vim)
" Maintainer: Yerlan Sergaziyev <yerlaser@outlook.com>
" Last Changed: 2020-07-18
scriptencoding utf-8
let b:keymap_name = "fr"
loadkeymap
1 & ASCII AMPERSAND
2 é LATIN SMALL LETTER E WITH ACUTE
3 " ASCII DOUBLE QUOTES
4 ' ASCII SINGLE QUOTE
5 ( ASCII LEFT PARENTHESIS
6 - ASCII MINUS
7 è LATIN SMALL LETTER E WITH GRAVE
8 _ ASCII UNDERSCORE
9 ç LATIN SMALL LETTER C WITH CEDILLA
0 à LATIN SMALL LETTER A WITH GRAVE
- ) ASCII RIGHT PARENTHESIS
! 1 ASCII DIGIT 1
@ 2 ASCII DIGIT 2
# 3 ASCII DIGIT 3
$ 4 ASCII DIGIT 4
% 5 ASCII DIGIT 5
^ 6 ASCII DIGIT 6
& 7 ASCII DIGIT 7
* 8 ASCII DIGIT 8
( 9 ASCII DIGIT 9
) 0 ASCII DIGIT 0
_ ° DEGREE SIGN
q a LATIN SMALL LETTER A
a q LATIN SMALL LETTER Q
z w LATIN SMALL LETTER W
w z LATIN SMALL LETTER Z
Q A LATIN CAPITAL LETTER A
A Q LATIN CAPITAL LETTER Q
Z W LATIN CAPITAL LETTER W
W Z LATIN CAPITAL LETTER Z
[[ ^ ASCII CIRCUMFLEX
[q â LATIN SMALL LETTER A WITH CIRCUMFLEX
[e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
[u û LATIN SMALL LETTER U WITH CIRCUMFLEX
[i î LATIN SMALL LETTER I WITH CIRCUMFLEX
[o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
[Q Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
[E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
[U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
[I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
[O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
{{ ¨ UMLAUT
{q ä LATIN SMALL LETTER A WITH UMLAUT
{e ë LATIN SMALL LETTER E WITH UMLAUT
{y ÿ LATIN SMALL LETTER Y WITH UMLAUT
{u ü LATIN SMALL LETTER U WITH UMLAUT
{i ï LATIN SMALL LETTER I WITH UMLAUT
{o ö LATIN SMALL LETTER O WITH UMLAUT
{Q Ä LATIN CAPITAL LETTER A WITH UMLAUT
{E Ë LATIN CAPITAL LETTER E WITH UMLAUT
{Y Ÿ LATIN CAPITAL LETTER Y WITH UMLAUT
{U Ü LATIN CAPITAL LETTER U WITH UMLAUT
{I Ï LATIN CAPITAL LETTER I WITH UMLAUT
{O Ö LATIN CAPITAL LETTER O WITH UMLAUT
] $ ASCII GRAVE
} £ POUND SIGN
; m LATIN SMALL LETTER M
: M LATIN CAPITAL LETTER M
' ù LATIN SMALL LETTER U WITH GRAVE
\" % ASCII PERCENT
\\ * ASCII ASTERISK
| µ GREEK LETTER MU
m , ASCII COMMA
M ? ASCII QUESTION MARK
, ; ASCII SEMICOLON
< . ASCII DOT
. : ASCII COLON
> / ASCII SLASH
/ ! ASCII EXCLAMATION MARK
? § SECTION SIGN
+76
View File
@@ -0,0 +1,76 @@
" Vim Keymap file for German standard keyboard layout (without AltGr keys as
" they don't work reliably in all version of vim)
" Maintainer: Yerlan Sergaziyev <yerlaser@outlook.com>
" Last Changed: 2020-07-18
scriptencoding utf-8
let b:keymap_name = "de"
loadkeymap
`` ^ ASCII CIRCUMFLEX
`e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
`u û LATIN SMALL LETTER U WITH CIRCUMFLEX
`i î LATIN SMALL LETTER I WITH CIRCUMFLEX
`o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
`a â LATIN SMALL LETTER A WITH CIRCUMFLEX
`E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
`U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
`I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
`O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
`A Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- ß LATIN SMALL LETTER SZ
== ´ ASCII ACUTE ACCENT
=e é LATIN SMALL LETTER E WITH ACUTE
=u ú LATIN SMALL LETTER U WITH ACUTE
=i í LATIN SMALL LETTER I WITH ACUTE
=o ó LATIN SMALL LETTER O WITH ACUTE
=a á LATIN SMALL LETTER A WITH ACUTE
=z ý LATIN SMALL LETTER Y WITH ACUTE
=E É LATIN CAPITAL LETTER E WITH ACUTE
=U Ú LATIN CAPITAL LETTER U WITH ACUTE
=I Í LATIN CAPITAL LETTER I WITH ACUTE
=O Ó LATIN CAPITAL LETTER O WITH ACUTE
=A Á LATIN CAPITAL LETTER A WITH ACUTE
=Z Ý LATIN CAPITAL LETTER Y WITH ACUTE
=S LATIN CAPITAL LETTER SZ
++ ` ASCII GRAVE
+e è LATIN SMALL LETTER E WITH GRAVE
+u ù LATIN SMALL LETTER U WITH GRAVE
+i ì LATIN SMALL LETTER I WITH GRAVE
+o ò LATIN SMALL LETTER O WITH GRAVE
+a à LATIN SMALL LETTER A WITH GRAVE
+E È LATIN CAPITAL LETTER E WITH GRAVE
+U Ù LATIN CAPITAL LETTER U WITH GRAVE
+I Ì LATIN CAPITAL LETTER I WITH GRAVE
+O Ò LATIN CAPITAL LETTER O WITH GRAVE
+A À LATIN CAPITAL LETTER A WITH GRAVE
y z LATIN SMALL LETTER Z
[ ü LATIN SMALL LETTER U WITH UMLAUT
] + ASCII PLUS
\\ # ASCII NUMBER SIGN
; ö LATIN SMALL LETTER O WITH UMLAUT
' ä LATIN SMALL LETTER A WITH UMLAUT
z y LATIN SMALL LETTER Y
/ - ASCII MINUS
~ ° DEGREE SIGN
@ " ASCII DOUBLE QUOTES
# § SECTION SIGN
^ & ASCII AMPERSAND
& / ASCII SLASH
* ( ASCII LEFT PARENTHESIS
( ) ASCII RIGHT PARENTHESIS
) = ASCII EQUAL SIGN
_ ? ASCII QUESTION MARK
+ ` ASCII GRAVE
Y Z LATIN CAPITAL LETTER Z
{ Ü LATIN CAPITAL LETTER U WITH UMLAUT
} * ASCII ASTERISK
| ' ASCII SINGLE QUOTE
: Ö LATIN CAPITAL LETTER O WITH UMLAUT
\" Ä LATIN CAPITAL LETTER A WITH UMLAUT
Z Y LATIN CAPITAL LETTER Y
< ; ASCII SEMICOLON
> : ASCII COLON
? _ ASCII UNDERSCORE
+190
View File
@@ -0,0 +1,190 @@
" Vim Keymap file for Russian characters
" layout English-US standard 104 key 'QWERTY', 'JCUKEN'
"
" Maintainer: Restorer <restorers@users.sourceforge.net>
" Last Changed: 20 Jan 2019
" Description: Раскладка сделана на основе раскладки «русская машинопись»
" (KBDRU1.DLL), поставляемой в составе ОС MS Windows. Эта раскладка позволяет
" печать практически все знаки препинания используя цифровой ряд и не требуя при
" этом нажатия дополнительных клавиш, ну и также удобное расположение буквы «Ё».
" Однако были внесены некоторые дополнения (улучшения?), в частности:
" ‐ раздельные символы круглых скобок (), расположены на тех же позициях, что и
" в US-International;
" ‐ раздельные символы типографских кавычек «», расположены на клавишах «3» и
" «4» соответственно;
" ‐ на этих же клавишах находятся внутренние кавычки “лапки”, набираемые при
" нажатой клавише «ALT»;
" ‐ возможность набирать символы, отсутствующие в русской раскладке клавиатуры,
" а именно @#$^&*{}[]"'`~<>, которые расположены на тех же местах, что и раньше.
" Для этого не требуется переключаться в латинскую раскладку клавиатуры, а
" оставаясь в русской, использовать для этого дополнительные клавиши «SHIFT» и
" «ALT»;
" ‐ и ещё несколько удобств, которые позволяют быстро и с минимальными усилиями
" набирать текст.
scriptencoding utf-8
" Переключение языка ввода со стандартного сочетания <CTRL+^> на указанные ниже
" Для режимов вставки и замены
""или SHIFT+SPACE
" inoremap <S-Space> <C-^>
""или CTRL+SPACE"
" inoremap <C-Space> <C-^>
" Для режима командной строки
""или SHIFT+SPACE
" cnoremap <S-Space> <C-^>
""или CTRL+SPACE"
" cnoremap <C-Space> <C-^>
" Одной командой для режимов вставки, замены и командной строки
" noremap! <S-Space> <C-^>
" noremap! <C-Space> <C-^>
"
" Стандартное переключение по CTRL+^ после этих переназначений также сохраняется
let b:keymap_name ="RUS"
loadkeymap
" DIGITAL ROW
" The Shift key is not pressed
"
<char-0x0060> <char-0x0025> " PERCENT SIGN
<char-0x0031> <char-0x0021> " EXCLAMATION MARK
<char-0x0032> <char-0x2014> " EM DASH
<char-0x0033> <char-0x00ab> " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
<char-0x0034> <char-0x00bb> " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
<char-0x0035> <char-0x003a> " COLON
<char-0x0036> <char-0x002c> " COMMA
<char-0x0037> <char-0x002e> " FULL STOP
<char-0x0038> <char-0x003f> " QUESTION MARK
<char-0x0039> <char-0x0028> " LEFT PARENTHESIS
<char-0x0030> <char-0x0029> " RIGHT PARENTHESIS
<char-0x002d> <char-0x2010> " HYPHEN
<char-0x003d> <char-0x003b> " SEMICOLON
" The Shift key is pressed
<char-0x007e> <char-0x003d> " EQUALS SIGN
<char-0x0021> <char-0x0031> " DIGIT ONE
<char-0x0040> <char-0x0032> " DIGIT TWO
<char-0x0023> <char-0x0033> " DIGIT THREE
<char-0x0024> <char-0x0034> " DIGIT FOUR
<char-0x0025> <char-0x0035> " DIGIT FIVE
<char-0x005e> <char-0x0036> " DIGIT SIX
<char-0x0026> <char-0x0037> " DIGIT SEVEN
<char-0x002a> <char-0x0038> " DIGIT EIGHT
<char-0x0028> <char-0x0039> " DIGIT NINE
<char-0x0029> <char-0x0030> " DIGIT ZERO
<char-0x005f> <char-0x002d> " HYPHEN-MINUS
<char-0x002b> <char-0x002b> " PLUS SIGN
" ALPHABETICAL 1st ROW
<char-0x0071> <char-0x0439> " CYRILLIC SMALL LETTER SHORT I
<char-0x0051> <char-0x0419> " CYRILLIC CAPITAL LETTER SHORT I
<char-0x0077> <char-0x0446> " CYRILLIC SMALL LETTER TSE
<char-0x0057> <char-0x0426> " CYRILLIC CAPITAL LETTER TSE
<char-0x0065> <char-0x0443> " CYRILLIC SMALL LETTER U
<char-0x0045> <char-0x0423> " CYRILLIC CAPITAL LETTER U
<char-0x0072> <char-0x043a> " CYRILLIC SMALL LETTER KA
<char-0x0052> <char-0x041a> " CYRILLIC CAPITAL LETTER KA
<char-0x0074> <char-0x0435> " CYRILLIC SMALL LETTER IE
<char-0x0054> <char-0x0415> " CYRILLIC CAPITAL LETTER IE
<char-0x0079> <char-0x043d> " CYRILLIC SMALL LETTER EN
<char-0x0059> <char-0x041d> " CYRILLIC CAPITAL LETTER EN
<char-0x0075> <char-0x0433> " CYRILLIC SMALL LETTER GHE
<char-0x0055> <char-0x0413> " CYRILLIC CAPITAL LETTER GHE
<char-0x0069> <char-0x0448> " CYRILLIC SMALL LETTER SHA
<char-0x0049> <char-0x0428> " CYRILLIC CAPITAL LETTER SHA
<char-0x006f> <char-0x0449> " CYRILLIC SMALL LETTER SHCHA
<char-0x004f> <char-0x0429> " CYRILLIC CAPITAL LETTER SHCHA
<char-0x0070> <char-0x0437> " CYRILLIC SMALL LETTER ZE
<char-0x0050> <char-0x0417> " CYRILLIC CAPITAL LETTER ZE
<char-0x005b> <char-0x0445> " CYRILLIC SMALL LETTER HA
<char-0x007b> <char-0x0425> " CYRILLIC CAPITAL LETTER HA
<char-0x005d> <char-0x044a> " CYRILLIC SMALL LETTER HARD SIGN
<char-0x007d> <char-0x042a> " CYRILLIC CAPITAL LETTER HARD SIGN
" ALPHABETIC 2st ROW
<char-0x0061> <char-0x0444> " CYRILLIC SMALL LETTER EF
<char-0x0041> <char-0x0424> " CYRILLIC CAPITAL LETTER EF
<char-0x0073> <char-0x044b> " CYRILLIC SMALL LETTER YERU
<char-0x0053> <char-0x042b> " CYRILLIC CAPITAL LETTER YERU
<char-0x0064> <char-0x0432> " CYRILLIC SMALL LETTER VE
<char-0x0044> <char-0x0412> " CYRILLIC CAPITAL LETTER VE
<char-0x0066> <char-0x0430> " CYRILLIC SMALL LETTER A
<char-0x0046> <char-0x0410> " CYRILLIC CAPITAL LETTER A
<char-0x0067> <char-0x043f> " CYRILLIC SMALL LETTER PE
<char-0x0047> <char-0x041f> " CYRILLIC CAPITAL LETTER PE
<char-0x0068> <char-0x0440> " CYRILLIC SMALL LETTER ER
<char-0x0048> <char-0x0420> " CYRILLIC CAPITAL LETTER ER
<char-0x006a> <char-0x043e> " CYRILLIC SMALL LETTER O
<char-0x004a> <char-0x041e> " CYRILLIC CAPITAL LETTER O
<char-0x006b> <char-0x043b> " CYRILLIC SMALL LETTER EL
<char-0x004b> <char-0x041b> " CYRILLIC CAPITAL LETTER EL
<char-0x006c> <char-0x0434> " CYRILLIC SMALL LETTER DE
<char-0x004c> <char-0x0414> " CYRILLIC CAPITAL LETTER DE
<char-0x003b> <char-0x0436> " CYRILLIC SMALL LETTER ZHE
<char-0x003a> <char-0x0416> " CYRILLIC CAPITAL LETTER ZHE
<char-0x0027> <char-0x044d> " CYRILLIC SMALL LETTER E
<char-0x0022> <char-0x042d> " CYRILLIC CAPITAL LETTER E
" ALPHABETIC 3st ROW
<char-0x007a> <char-0x044f> " CYRILLIC SMALL LETTER YA
<char-0x005a> <char-0x042f> " CYRILLIC CAPITAL LETTER YA
<char-0x0078> <char-0x0447> " CYRILLIC SMALL LETTER CHE
<char-0x0058> <char-0x0427> " CYRILLIC CAPITAL LETTER CHE
<char-0x0063> <char-0x0441> " CYRILLIC SMALL LETTER ES
<char-0x0043> <char-0x0421> " CYRILLIC CAPITAL LETTER ES
<char-0x0076> <char-0x043c> " CYRILLIC SMALL LETTER EM
<char-0x0056> <char-0x041c> " CYRILLIC CAPITAL LETTER EM
<char-0x0062> <char-0x0438> " CYRILLIC SMALL LETTER I
<char-0x0042> <char-0x0418> " CYRILLIC CAPITAL LETTER I
<char-0x006e> <char-0x0442> " CYRILLIC SMALL LETTER TE
<char-0x004e> <char-0x0422> " CYRILLIC CAPITAL LETTER TE
<char-0x006d> <char-0x044c> " CYRILLIC SMALL LETTER SOFT SIGN
<char-0x004d> <char-0x042c> " CYRILLIC CAPITAL LETTER SOFT SIGN
<char-0x002c> <char-0x0431> " CYRILLIC SMALL LETTER BE
<char-0x003c> <char-0x0411> " CYRILLIC CAPITAL LETTER BE
<char-0x002e> <char-0x044e> " CYRILLIC SMALL LETTER YU
<char-0x003e> <char-0x042e> " CYRILLIC CAPITAL LETTER YU
<char-0x002f> <char-0x0451> " CYRILLIC SMALL LETTER IO
<char-0x003f> <char-0x0401> " CYRILLIC CAPITAL LETTER IO
" VK_OEM_5 key (scan code 2b)
" The Shift key is not pressed
<char-0x005c> <char-0x002f> " SOLIDUS
" The Shift key is pressed
<char-0x007c> <char-0x005c> " REVERSE SOLIDUS
" Alt key pressed
<A-char-0x0060> <char-0x0060> " GRAVE ACCENT
<A-char-0x0031> <char-0x2116> " NUMERO SIGN
<A-char-0x0033> <char-0x201c> " LEFT DOUBLE QUOTATION MARK
<A-char-0x0034> <char-0x201d> " RIGHT DOUBLE QUOTATION MARK
<A-char-0x005b> <char-0x005b> " LEFT SQUARE BRACKET
<A-char-0x005d> <char-0x005d> " RIGHT SQUARE BRACKET
<A-char-0x0027> <char-0x0027> " APOSTROPHE
" Alt and Shift keys pressed
<A-char-0x007e> <char-0x007e> " TILDE
<A-char-0x0040> <char-0x0040> " COMMERCIAL AT
<A-char-0x0023> <char-0x0023> " NUMBER SIGN
<A-char-0x0024> <char-0x0024> " DOLLAR SIGN
<A-char-0x005e> <char-0x005e> " CIRCUMFLEX ACCENT
<A-char-0x0026> <char-0x0026> " AMPERSAND
<A-char-0x002a> <char-0x002a> " ASTERISK
<A-char-0x005f> <char-0x005f> " LOW LINE
<A-char-0x007b> <char-0x007b> " LEFT CURLY BRACKET
<A-char-0x007d> <char-0x007d> " RIGHT CURLY BRACKET
<A-char-0x0022> <char-0x0022> " QUOTATION MARK
<A-char-0x003c> <char-0x003c> " LESS-THAN SIGN
<A-char-0x003e> <char-0x003e> " GREATER-THAN SIGN
<A-char-0x007c> <char-0x007c> " VERTICAL LINE
+2 -3
View File
@@ -55,7 +55,6 @@ _ ? QUESTION MARK
Å Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
Í Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
Ï Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
` » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
f a LATIN SMALL LETTER A
, b LATIN SMALL LETTER B
@@ -100,7 +99,7 @@ n z LATIN SMALL LETTER Z
• [ LEFT SQUARE BRACKET
ª ] RIGHT SQUARE BRACKET
º } RIGHT CURLY BRACKET
\ REVERSE SOLIDUS
\\ REVERSE SOLIDUS
| VERTICAL LINE
œ @ COMMERCIAL AT
~ TILDE
@@ -111,4 +110,4 @@ n z LATIN SMALL LETTER Z
˙ ₺ TURKISH LIRA SIGN
¬ £ POUND SIGN
… ¥ YEN SIGN
` « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
« ` GRAVE ACCENT
+1 -1
View File
@@ -51,7 +51,7 @@ i ı LATIN SMALL LETTER DOTLESS I
• [ LEFT SQUARE BRACKET
ª ] RIGHT SQUARE BRACKET
º } RIGHT CURLY BRACKET
\ REVERSE SOLIDUS
\\ REVERSE SOLIDUS
| VERTICAL LINE
œ @ COMMERCIAL AT
´EURO SIGN
+14 -6
View File
@@ -1332,8 +1332,8 @@ if has("touchbar")
" 1. Smart fullscreen icon that toggles between going full screen or not.
if !exists("g:macvim_default_touchbar_fullscreen") || g:macvim_default_touchbar_fullscreen
an icon=NSTouchBarEnterFullScreenTemplate 1.10 TouchBar.EnterFullScreen :set fullscreen<CR>
tln icon=NSTouchBarEnterFullScreenTemplate 1.10 TouchBar.EnterFullScreen <C-W>:set fullscreen<CR>
an icon=NSTouchBarEnterFullScreenTemplate 1.20 TouchBar.EnterFullScreen :set fullscreen<CR>
tln icon=NSTouchBarEnterFullScreenTemplate 1.20 TouchBar.EnterFullScreen <C-W>:set fullscreen<CR>
endif
let s:touchbar_fullscreen=0
@@ -1342,16 +1342,16 @@ if has("touchbar")
silent! aun TouchBar.EnterFullScreen
silent! tlun TouchBar.EnterFullScreen
if !exists("g:macvim_default_touchbar_fullscreen") || g:macvim_default_touchbar_fullscreen
an icon=NSTouchBarExitFullScreenTemplate 1.10 TouchBar.ExitFullScreen :set nofullscreen<CR>
tln icon=NSTouchBarExitFullScreenTemplate 1.10 TouchBar.ExitFullScreen <C-W>:set nofullscreen<CR>
an icon=NSTouchBarExitFullScreenTemplate 1.20 TouchBar.ExitFullScreen :set nofullscreen<CR>
tln icon=NSTouchBarExitFullScreenTemplate 1.20 TouchBar.ExitFullScreen <C-W>:set nofullscreen<CR>
endif
let s:touchbar_fullscreen = 1
elseif !&fullscreen && s:touchbar_fullscreen != 0
silent! aun TouchBar.ExitFullScreen
silent! tlun TouchBar.ExitFullScreen
if !exists("g:macvim_default_touchbar_fullscreen") || g:macvim_default_touchbar_fullscreen
an icon=NSTouchBarEnterFullScreenTemplate 1.10 TouchBar.EnterFullScreen :set fullscreen<CR>
tln icon=NSTouchBarEnterFullScreenTemplate 1.10 TouchBar.EnterFullScreen <C-W>:set fullscreen<CR>
an icon=NSTouchBarEnterFullScreenTemplate 1.20 TouchBar.EnterFullScreen :set fullscreen<CR>
tln icon=NSTouchBarEnterFullScreenTemplate 1.20 TouchBar.EnterFullScreen <C-W>:set fullscreen<CR>
endif
let s:touchbar_fullscreen = 0
endif
@@ -1360,6 +1360,14 @@ if has("touchbar")
au!
au VimEnter,VimResized * call <SID>SetupFullScreenTouchBar()
aug END
" 2. Character (i.e. emojis) picker. Only in modes where user is actively
" entering text.
if !exists("g:macvim_default_touchbar_characterpicker") || g:macvim_default_touchbar_characterpicker
inoremenu 1.40 TouchBar.-characterpicker- <Nop>
cnoremenu 1.40 TouchBar.-characterpicker- <Nop>
tlnoremenu 1.40 TouchBar.-characterpicker- <Nop>
endif
endif
" vim: set sw=2 :

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