Compare commits

...

718 Commits

Author SHA1 Message Date
9bc4dde45d patch 8.1.1738: testing lambda with timer is slow
Problem:    Testing lambda with timer is slow.
Solution:   Do not test timer accuracy, only that it works. (Daniel Hahler,
            closes #4723)
2019-07-24 13:08:29 +02:00
949f1989cb patch 8.1.1737: :args command that outputs one line gives more prompt
Problem:    :args command that outputs one line gives more prompt.
Solution:   Only output line break if needed. (Daniel Hahler, closes #4715)
2019-07-23 23:00:08 +02:00
c3328169d5 patch 8.1.1736: viminfo support is spread out
Problem:    Viminfo support is spread out.
Solution:   Move more viminfo code to viminfo.c. (Yegappan Lakshmanan,
            closes #4717)  Reorder code to make most functions static.
2019-07-23 22:15:25 +02:00
c61a48d259 patch 8.1.1735: can't build with tiny features
Problem:    Can't build with tiny features.
Solution:   Add missing #ifdefs.
2019-07-22 23:16:33 +02:00
29b7d7a9aa patch 8.1.1734: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move some functions to other files.
2019-07-22 23:03:57 +02:00
e5e6950193 patch 8.1.1733: the man ftplugin leaves an empty buffer behind
Problem:    The man ftplugin leaves an empty buffer behind.
Solution:   Don't make new window and edit, use split. (Jason Franklin)
2019-07-22 22:09:21 +02:00
f03e328348 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Problem:    Completion in cmdwin does not work for buffer-local commands.
Solution:   Use the right buffer. (closes #4711)
2019-07-22 21:55:18 +02:00
26b654a5df patch 8.1.1731: command line history not read from viminfo on startup
Problem:    Command line history not read from viminfo on startup.
Solution:   Get history length after initializing it.
2019-07-22 20:50:17 +02:00
1e78e69680 patch 8.1.1730: wrong place for mark viminfo support
Problem:    Wrong place for mark viminfo support.
Solution:   Move it to viminfo.c. (Yegappan Lakshmanan, closes #4716)
2019-07-22 20:18:27 +02:00
ecaa75b4ce patch 8.1.1729: heredoc with trim not properly handled in function
Problem:    Heredoc with trim not properly handled in function.
Solution:   Allow for missing indent. (FUJIWARA Takuya, closes #4713)
2019-07-21 23:04:21 +02:00
5f32ece459 patch 8.1.1728: wrong place for command line history viminfo support
Problem:    Wrong place for command line history viminfo support.
Solution:   Move it to viminfo.c.
2019-07-21 21:51:59 +02:00
defa067c54 patch 8.1.1727: code for viminfo support is spread out
Problem:    Code for viminfo support is spread out.
Solution:   Move to code to viminfo.c. (Yegappan Lakshmanan, closes #4686)
2019-07-21 19:25:37 +02:00
ed997adaa1 patch 8.1.1726: the eval.txt help file is too big
Problem:    The eval.txt help file is too big.
Solution:   Split off testing support to testing.txt.  Move function details
            to where the functionality is explained.
2019-07-21 16:42:00 +02:00
663bbc09ba patch 8.1.1725: MS-Windows: E325 message may use incorrect date format
Problem:    MS-Windows: E325 message may use incorrect date format.
Solution:   Convert strftime() result to 'encoding'.  Also make the message
            translatable. (Ken Takata, closes #4685, closes #4681)
2019-07-21 15:23:35 +02:00
b4fe0eb4b4 patch 8.1.1724: too much overhead checking for CTRL-C while processing text
Problem:    Too much overhead checking for CTRL-C while processing text.
Solution:   Increase BREAKCHECK_SKIP.  Remove the difference for when built
            with the GUI. (suggested by Andy Massimino, closes #4708)
2019-07-21 14:50:21 +02:00
2458200729 patch 8.1.1723: heredoc assignment has no room for new features
Problem:    Heredoc assignment has no room for new features. (FUJIWARA Takuya)
Solution:   Require the marker does not start with a lower case character.
            (closes #4705)
2019-07-21 14:14:26 +02:00
61343f0c44 patch 8.1.1722: error when scriptversion is 2 a making a dictionary access
Problem:    Error when scriptversion is 2 a making a dictionary access.
Solution:   Parse the subscript even when not evaluating the sub-expression.
            (closes #4704)
2019-07-20 21:11:13 +02:00
63187f7932 patch 8.1.1721: build failure with normal features without netbeans interface
Problem:    Build failure with normal features without netbeans interface.
Solution:   Enable signs when using the text properties feature.
2019-07-20 19:14:49 +02:00
2a5b52758b patch 8.1.1720: crash with very long %[] pattern
Problem:    Crash with very long %[] pattern. (Reza Mirzazade farkhani)
Solution:   Check for reg_toolong. (closes #4703)
2019-07-20 18:56:06 +02:00
331bafd481 patch 8.1.1719: popup too wide when 'showbreak' is set
Problem:    Popup too wide when 'showbreak' is set.
Solution:   Set window width when computing line length. (closes #4701)
2019-07-20 17:46:05 +02:00
cb5ff34c1b patch 8.1.1718: popup menu highlighting does not look good
Problem:    Popup menu highlighting does not look good.
Solution:   Highlight the whole window line.  Fix that sign line HL is not
            displayed in a window with a background color.
2019-07-20 16:51:19 +02:00
f914a33c9c patch 8.1.1717: last char in menu popup window highlighted
Problem:    Last char in menu popup window highlighted.
Solution:   Do not highlight an extra character twice.
2019-07-20 15:09:56 +02:00
ab0a789808 patch 8.1.1716: old style comments are wasting space
Problem:    Old style comments are wasting space
Solution:   Use new style comments in option header file.
2019-07-19 23:15:12 +02:00
06e6377009 patch 8.1.1715: emoji characters are seen as word characters for spelling
Problem:    Emoji characters are seen as word characters for spelling. (Gautam
            Iyer)
Solution:   Exclude class 3 from word characters.
2019-07-19 23:04:34 +02:00
85850f3a5e Update runtime files 2019-07-19 22:05:51 +02:00
7964873afe patch 8.1.1714: cannot preview a file in a popup window
Problem:    Cannot preview a file in a popup window.
Solution:   Add the 'previewpopup' option.
2019-07-18 21:43:07 +02:00
df9c6cad8c patch 8.1.1713: highlighting cursor line only works with popup_menu()
Problem:    Highlighting cursor line only works with popup_menu().
Solution:   Add the "cursorline" property. (Naruhiko Nishino, closes #4671)
2019-07-18 13:46:42 +02:00
d6bcff4577 patch 8.1.1712: signs in number column cause text to be misaligned
Problem:    Signs in number column cause text to be misaligned.
Solution:   Improve alignment. (Yasuhiro Matsumoto, closes #4694)
2019-07-18 12:48:16 +02:00
acf7544cf6 patch 8.1.1711: listener callback called at the wrong moment
Problem:    Listener callback called at the wrong moment
Solution:   Invoke listeners before calling ml_delete_int(). (closes #4657)
2019-07-17 22:55:35 +02:00
4a0a161a9b patch 8.1.1710: Coverity found dead code
Problem:    Coverity found dead code.
Solution:   Remove merging of listener changes.
2019-07-17 22:00:19 +02:00
403d090e39 patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Problem:    Coverity warns for possibly using a NULL pointer.
Solution:   Make sure no NULL pointer is used.
2019-07-17 21:37:32 +02:00
3fb4f4762b patch 8.1.1708: Coverity warns for using uninitialized variable
Problem:    Coverity warns for using uninitialized variable.
Solution:   Set the start col when col is set.
2019-07-17 21:32:14 +02:00
cfdbc5adde patch 8.1.1707: Coverity warns for possibly using a NULL pointer
Problem:    Coverity warns for possibly using a NULL pointer.
Solution:   Change the logic to make sure no NULL pointer is used.
2019-07-17 21:27:52 +02:00
99a764bccd patch 8.1.1706: typo in #ifdef
Problem:    Typo in #ifdef.
Solution:   Change PROT to PROTO.
2019-07-17 20:01:48 +02:00
4c6d90458b patch 8.1.1705: using ~{} for a literal dict is not nice
Problem:    Using ~{} for a literal dict is not nice.
Solution:   Use #{} instead.
2019-07-16 22:04:02 +02:00
69a5b86794 patch 8.1.1704: C-R C-W does not work after C-G when using 'incsearch'
Problem:    C-R C-W does not work after C-G when using 'incsearch'.
Solution:   Put cursor at end of the match. (Yasuhiro Matsumoto, closes #4664)
2019-07-16 21:38:51 +02:00
6138640806 patch 8.1.1703: breaking out of loop by checking window pointer insufficient
Problem:    Breaking out of loop by checking window pointer is insufficient.
Solution:   Check the window ID and the buffer number. (closes #4683)
2019-07-16 21:19:55 +02:00
c7283078c3 patch 8.1.1702: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize it. (Christian Brabandt)
2019-07-16 20:12:44 +02:00
7ce2aa01c2 patch 8.1.1701: Appveyor build with MSVC fails puts progress bar in log
Problem:    Appveyor build with MSVC fails puts progress bar in log.
Solution:   Adjust the sed command. (Ken Takata)
2019-07-16 20:00:11 +02:00
250e3112c6 patch 8.1.1700: listener callback called for the wrong buffer
Problem:    Listener callback called for the wrong buffer.
Solution:   Invoke listeners before calling ml_append_int().
2019-07-15 23:02:14 +02:00
2ac6e82a4e patch 8.1.1699: highlight_ga can be local instead of global
Problem:    Highlight_ga can be local instead of global.
Solution:   Move highlight_ga into highlight.c. (Yegappan Lakshmanan,
            closes #4675)
2019-07-15 22:40:22 +02:00
5d6844566a patch 8.1.1698: Appveyor build with MSVC fails
Problem:    Appveyor build with MSVC fails.
Solution:   Remove the sed command
2019-07-15 22:03:40 +02:00
c9afd15bc8 patch 8.1.1697: cannot build with MSVC
Problem:    Cannto build with MSVC.
Solution:   Remove the backslashes after the @<< mechanism.
2019-07-15 21:15:05 +02:00
cea2a15687 patch 8.1.1696: MSVC: link command line is too long
Problem:    MSVC: link command line is too long.
Solution:   Use the @<< mechanism to pass the arguments via a file. (Christian
            Brabandt)
2019-07-15 20:44:57 +02:00
f49a692259 patch 8.1.1695: Windows 10: crash when cursor is at bottom of terminal
Problem:    Windows 10: crash when cursor is at bottom of terminal.
Solution:   Position the cursor before resizing. (Yasuhiro Matsumoto,
            closes #4679)
2019-07-15 20:37:05 +02:00
41a8260445 patch 8.1.1694: the RUN_VIM variable is longer than needed
Problem:    The RUN_VIM variable is longer than needed.
Solution:   Shorten RUN_VIM. (Daniel Hahler, closes #4643)
2019-07-14 21:54:26 +02:00
f9cc9f209e patch 8.1.1693: syntax coloring and highlighting is in one big file
Problem:    Syntax coloring and highlighting is in one big file.
Solution:   Move the highlighting to a separate file. (Yegappan Lakshmanan,
            closes #4674)
2019-07-14 21:29:22 +02:00
b8be54dcc5 patch 8.1.1692: using *{} for literal dict is not backwards compatible
Problem:    Using *{} for literal dict is not backwards compatible. (Yasuhiro
            Matsumoto)
Solution:   Use ~{} instead.
2019-07-14 18:22:59 +02:00
37d9f175a4 patch 8.1.1691: diff test fails on some systems
Problem:    Diff test fails on some systems. (Elimar Riesebieter)
Solution:   Add a term_wait() call.
2019-07-14 17:26:46 +02:00
0346413c24 patch 8.1.1690: default padding for popup window menu is too much
Problem:    Default padding for popup window menu is too much.
Solution:   Only add padding left and right.
2019-07-14 16:28:13 +02:00
660a10ad41 patch 8.1.1689: profiling code is spread out
Problem:    Profiling code is spread out.
Solution:   Move more profiling code to profiler.c. (Yegappan Lakshmanan,
            closes #4668)
2019-07-14 15:48:38 +02:00
1850b14c0d patch 8.1.1688: old makefiles are no longer useful
Problem:    Old makefiles are no longer useful.
Solution:   Delete the makefiles, they most likely don't work anyway.
2019-07-14 15:09:59 +02:00
ecaa70ea29 patch 8.1.1687: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move testing support to a separate file.
2019-07-14 14:55:39 +02:00
2898ebb44c patch 8.1.1686: "*" of "*{" is recognized as multipy operator
Problem:    "*" of "*{" is recognized as multipy operator. (Yasuhiro Matsumoto)
Solution:   Check for the "{".
2019-07-14 13:41:34 +02:00
a099da3572 patch 8.1.1685: missing file in distributed file list
Problem:    Missing file in distributed file list.
Solution:   Add profiling.pro
2019-07-13 23:06:26 +02:00
396e829fa3 Update runtime files 2019-07-13 23:04:31 +02:00
fa55cfc69d patch 8.1.1684: profiling functionality is spread out
Problem:    Profiling functionality is spread out.
Solution:   Put profiling functionality in profiling.c. (Yegappan Lakshmanan,
            closes #4666)
2019-07-13 22:59:32 +02:00
d5abb4c877 patch 8.1.1683: dictionary with string keys is longer than needed
Problem:    Dictionary with string keys is longer than needed.
Solution:   Use *{key: val} for literaly keys.
2019-07-13 22:46:10 +02:00
809ce4d317 patch 8.1.1682: placing a larger number of signs is slow
Problem:    Placing a larger number of signs is slow.
Solution:   Add functions for dealing with a list of signs. (Yegappan
            Lakshmanan, closes #4636)
2019-07-13 21:21:40 +02:00
0fb286e82d patch 8.1.1681: insert stray "{" when listener gets buffer line
Problem:    Insert stray "{" when listener gets buffer line. (Paul Jolly)
Solution:   Flush the cached line after invoking listeners. (closes #4455)
2019-07-13 20:14:45 +02:00
63d0dad874 patch 8.1.1680: the command table is not well aligned
Problem:    The command table is not well aligned.
Solution:   Adjust indent.
2019-07-13 18:17:23 +02:00
eaa49e40d7 patch 8.1.1679: test using SwapExists autocommand file may fail
Problem:    Test using SwapExists autocommand file may fail.
Solution:   Remove the SwapExists autocommand.
2019-07-13 18:08:59 +02:00
a901a37bae patch 8.1.1678: using popup_menu() does not scroll to show the selected line
Problem:    When using popup_menu() does not scroll to show the selected line.
Solution:   Scroll the text. (Naruhiko Nishino, closes #4651)
2019-07-13 16:38:50 +02:00
b073da8929 patch 8.1.1677: tests get stuck when running into an existing swapfile
Problem:    Tests get stuck when running into an existing swapfile.
Solution:   Set v:swapchoice to "q" and report an error. (Daniel Hahler,
            closes #4644)
2019-07-13 14:47:26 +02:00
017c269938 patch 8.1.1676: "maxwidth" of popup window does not always work properly
Problem:    "maxwidth" of popup window does not always work properly.
Solution:   Adjust the computation. (Naruhiko Nishino, closes #4653)
2019-07-13 14:17:51 +02:00
7b73f914c4 patch 8.1.1675: listener list not correctly updated on listener_remove()
Problem:    Listener list not correctly updated on listener_remove().
Solution:   Only set "prev" when not removing a listener.  Return one if the
            listener was found and removed.
2019-07-13 13:03:02 +02:00
4e63f9425e patch 8.1.1674: script to check a colorscheme can be improved
Problem:    Script to check a colorscheme can be improved.
Solution:   Match the whole group name. Don't warn for what is usually omitted.
2019-07-12 22:46:47 +02:00
b4f0628fc5 patch 8.1.1673: cannot easily find the popup window at a certain position
Problem:    Cannot easily find the popup window at a certain position.
Solution:   Add popup_locate().
2019-07-12 21:07:54 +02:00
d94ac0caca patch 8.1.1672: "make cmdidxs" doesn't work
Problem:    "make cmdidxs" doesn't work.
Solution:   Update macro names. (Naruhiko Nishino, closes #4660)
2019-07-12 20:24:59 +02:00
b7b9efbccf patch 8.1.1671: copying a blob may result in it being locked
Problem:    Copying a blob may result in it being locked.
Solution:   Reset v_lock. (Ken Takata, closes #4648)
2019-07-12 20:17:03 +02:00
0231f8312b patch 8.1.1670: sign column not always properly aligned
Problem:    Sign column not always properly aligned.
Solution:   Use "col" only after it was calculated. (Yee Cheng Chin,
            closes #4649)
2019-07-12 19:22:22 +02:00
efef9fea72 patch 8.1.1669: Travis: test results section is closed even when failed
Problem:    Travis: test results section is closed even when some tests
            failed.
Solution:   Only close the section on success. (Daniel Hahler, closes #4659)
2019-07-12 18:45:40 +02:00
8ccabf624e patch 8.1.1668: popup window test is a bit flaky on some systems
Problem:    Popup window test is a bit flaky on some systems.
Solution:   Clear the command line. (Naruhiko Nishino, closes #4656)
2019-07-12 18:12:51 +02:00
8071cb2c64 patch 8.1.1667: flags for Ex commands may clash with other symbols
Problem:    Flags for Ex commands may clash with other symbols.
Solution:   Prepend with EX_.
2019-07-12 17:58:01 +02:00
bd42b31780 patch 8.1.1666: click in popup window scrollbar with border doesn't scroll
Problem:    Click in popup window scrollbar with border doesn't scroll.
Solution:   Correct column for the border. (Naruhiko Nishino, closes #4650)
2019-07-12 16:35:34 +02:00
b420747478 patch 8.1.1665: crash when popup window with mask is below the screen
Problem:    Crash when popup window with mask is below the screen.
Solution:   Correct boundary check.
2019-07-12 16:05:45 +02:00
847a5d69a8 patch 8.1.1664: GUI resize may cause changing Rows at a bad time
Problem:    GUI resize may cause changing Rows at a bad time. (Dominique
            Pelle)
Solution:   Postpone resizing while updating the screen.
2019-07-12 15:37:13 +02:00
1072768b91 patch 8.1.1663: compiler warning for using size_t
Problem:    Compiler warning for using size_t.
Solution:   Add type cast. (Mike Williams)
2019-07-12 13:59:20 +02:00
e28cfb2812 patch 8.1.1662: cannot build uninstal.exe with some version of MinGW
Problem:    Cannot build uninstal.exe with some version of MinGW.
Solution:   Add -lole32. (Rene Nyffenegger, closes #4646)
2019-07-11 22:04:21 +02:00
247bf0de46 patch 8.1.1661: cannot build with +textprop but without +balloon_eval
Problem:    Cannot build with +textprop but without +balloon_eval.
Solution:   Adjust #ifdefs. (closes #4645)
2019-07-10 22:21:48 +02:00
7780e5c1c5 patch 8.1.1660: assert_fails() does not fail inside try/catch
Problem:    Assert_fails() does not fail inside try/catch.
Solution:   Set trylevel to zero. (Ozaki Kiichi, closes #4639)
2019-07-10 22:04:48 +02:00
b05caa782d patch 8.1.1659: popup window "mousemoved" values not correct
Problem:    Popup window "mousemoved" values not correct.
Solution:   Convert text column to mouse column.
2019-07-10 21:55:54 +02:00
3b849af90a patch 8.1.1658: debug statements included in patch
Problem:    Debug statements included in patch.
Solution:   Remove the debug statements.
2019-07-10 16:15:04 +02:00
7ba343e634 patch 8.1.1657: Terminal: screen updates from 'balloonexpr' are not displayed
Problem:    Terminal: screen updates from 'balloonexpr' are not displayed.
Solution:   Update the screen if needed.  Fix the word position for
            "mousemoved".
2019-07-09 23:22:15 +02:00
e089c3fd69 patch 8.1.1656: popup window width is wrong when using Tabs
Problem:    Popup window width is wrong when using Tabs. (Paul Jolly)
Solution:   Count tabs correctly. (closes #4637)
2019-07-09 20:25:25 +02:00
3dabd718f4 patch 8.1.1655: popup window border drawn wrong with multi-byte char
Problem:    Popup window border drawn wrong with multi-byte char. (Marcin
            Szamotulski)
Solution:   Correct check in mb_fix_col(). (closes #4635)
2019-07-08 23:30:22 +02:00
8a7383b6d2 patch 8.1.1654: GUI: screen updates from 'balloonexpr' are not displayed
Problem:    GUI: screen updates from 'balloonexpr' are not displayed.
Solution:   Update the screen if needed.  Also avoid the cursor being
            displayed in the wrong position.
2019-07-08 22:23:33 +02:00
0d07155c8b patch 8.1.1653: ubsan warns for possibly passing NULL pointer
Problem:    Ubsan warns for possibly passing NULL pointer.
Solution:   Skip code when length is zero. (Dominique Pelle, closes #4631)
2019-07-08 22:04:03 +02:00
49fe95f225 patch 8.1.1652: GUI: popup window doesn't close on mouse movement
Problem:    GUI: popup window doesn't close on mouse movement. (Paul Jolly)
Solution:   Generate mouse-move events when a popup window is visible.
2019-07-08 21:57:30 +02:00
9992244226 patch 8.1.1651: suspend test is flaky on some systems
Problem:    Suspend test is flaky on some systems.
Solution:   Wait for the shell prompt to show. (Yee Cheng Chin, closes #4632)
2019-07-08 20:58:25 +02:00
ee9e604124 patch 8.1.1650: warning for using uninitialized variable
Problem:    Warning for using uninitialized variable. (Tony Mechelynck)
Solution:   Simplify the code by always using the mouse coordinates.
2019-07-08 20:08:44 +02:00
3e35d05b1f patch 8.1.1649: Illegal memory access when closing popup window
Problem:    Illegal memory access when closing popup window.
Solution:   Get w_next before closing the window.
2019-07-07 20:43:34 +02:00
3f3e954d96 patch 8.1.1648: MS-Windows: build error with normal feaures
Problem:    MS-Windows: build error with normal feaures.
Solution:   Adjust #ifdef for find_word_under_cursor().
2019-07-07 20:30:48 +02:00
d84b2c3d88 patch 8.1.1647: build error with GTK and hangulinput feature
Problem:    Build error with GTK and hangulinput feature, im_get_status()
            defined twice. (Dominique Pelle)
Solution:   Adjust im_get_status(). (closes #4628)
2019-07-07 19:16:58 +02:00
56a6312099 patch 8.1.1646: build failure
Problem:    build failure
Solution:   Add changes to structure.
2019-07-07 18:38:34 +02:00
b3d17a20d2 patch 8.1.1645: cannot use a popup window for a balloon
Problem:    Cannot use a popup window for a balloon.
Solution:   Add popup_beval().  Add the "mousemoved" property.  Add the
            screenpos() function.
2019-07-07 18:28:14 +02:00
5b19e5b919 patch 8.1.1644: sound test does not work on Travis
Problem:    Sound test does not work on Travis.
Solution:   Use "sg" command to enable audio. (Ozaki Kiichi, closes #4624)
2019-07-07 15:12:12 +02:00
899f20deae patch 8.1.1643: sign placement is wrong when 'foldcolumn' is set
Problem:    Sign placement is wrong when 'foldcolumn' is set.
Solution:   Adjust the column computation. (Yee Cheng Chin, closes #4627)
2019-07-07 14:56:25 +02:00
ec572ad6a6 patch 8.1.1642: may use uninitialized variable
Problem:    May use uninitialized variable. (Patrick Palka)
Solution:   Initialize variables earlier. (closes #4623)
2019-07-07 14:26:59 +02:00
6cc7e21412 patch 8.1.1641: garbage collection may run at a wrong moment
Problem:    Garbage collection may run at a wrong moment. (Trygve Aaberge)
Solution:   Postpone garbage collection while parsing messages. (closes #4620)
2019-07-07 14:05:24 +02:00
c2f5054be9 patch 8.1.1640: the CursorHold autocommand takes down a balloon
Problem:    The CursorHold autocommand takes down a balloon. (Paul Jolly)
Solution:   Ignore the CursorHold pseudo-key.
2019-07-05 23:24:56 +02:00
28fc247f8d patch 8.1.1639: changing an autoload name into a file name is inefficient
Problem:    Changing an autoload name into a script file name is inefficient.
Solution:   Remember the last replaced #. (Ozaki Kiichi, closes #4618)
2019-07-05 22:14:16 +02:00
3940ec6d41 patch 8.1.1638: running tests leaves some files behind
Problem:    Running tests leaves some files behind.
Solution:   Delete the files. (Ozaki Kiichi, closes #4617)
2019-07-05 21:53:24 +02:00
4f5b0e5355 patch 8.1.1637: after running tests and clean the XfakeHOME directory remains
Problem:    After running tests and clean the XfakeHOME directory remains.
Solution:   Use "rm -rf". (Hirohito Higashi)
2019-07-05 20:43:52 +02:00
437a746b4c patch 8.1.1636: crash when popup has fitting scrollbar
Problem:    Crash when popup has fitting scrollbar. (Trygve Aaberge)
Solution:   Don't divide by zero if the scrollbar just fits. (closes #4615)
2019-07-05 20:17:22 +02:00
b4d9b893d3 patch 8.1.1635: warnings for unused variables in small version
Problem:    Warnings for unused variables in small version. (John Marriott)
Solution:   Adjust #ifdefs.
2019-07-04 22:59:06 +02:00
981d9dc8f3 patch 8.1.1634: terminal test fails when term_getansicolors() is missing
Problem:    Terminal test fails when term_getansicolors() is missing.
            Diff test fails without +rightleft.  (Dominique Pelle)
Solution:   Check if term_getansicolors() is supported. (closes #4597)
2019-07-04 22:32:39 +02:00
b7ed839976 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Problem:    Cannot generate prototypes with X11 but without GUI.
Solution:   Include X11/Intrinsic.h.
2019-07-04 21:24:34 +02:00
48ac671fe5 patch 8.1.1632: build with EXITFREE but without +arabic fails
Problem:    Build with EXITFREE but without +arabic fails.
Solution:   Rename the function and adjust #ifdefs. (closes #4613)
2019-07-04 20:26:21 +02:00
4e038571aa patch 8.1.1631: displaying signs is inefficient
Problem:    Displaying signs is inefficient.
Solution:   Avoid making multiple calls to get information about a placed
            sign. (Yegappan Lakshmanan, closes #4586)
2019-07-04 18:28:35 +02:00
e809a4ed30 patch 8.1.1630: various small problems
Problem:    Various small problems.
Solution:   Various small improvements.
2019-07-04 17:35:05 +02:00
790c18bfa5 Update runtime files 2019-07-04 17:22:06 +02:00
6bf2c6264b patch 8.1.1629: terminal function help is in the wrong file
Problem:    Terminal function help is in the wrong file.
Solution:   Move the function details to terminal.txt.
2019-07-04 17:12:09 +02:00
931a277145 patch 8.1.1628: popup window functions not in list of functions
Problem:    Popup window functions not in list of functions.
Solution:   Add popup window functins to the list of functions.  Reorganise
            the popup window help.
2019-07-04 16:54:54 +02:00
6cb39f924a patch 8.1.1627: header file contains mixed comment style
Problem:    Header file contains mixed comment style.
Solution:   Use // style comments.
2019-07-04 16:05:14 +02:00
5ca1ac373a patch 8.1.1626: no test for closing a popup window with a modified buffer
Problem:    No test for closing a popup window with a modified buffer.
Solution:   Add a test.  Add "popups" to getbufinfo().
2019-07-04 15:39:28 +02:00
bc2cfe4672 patch 8.1.1625: script line numbers are not exactly right
Problem:    Script line numbers are not exactly right.
Solution:   Handle heredoc and continuation lines better. (Ozaki Kiichi,
            closes #4611, closes #4511)
2019-07-04 14:57:12 +02:00
0d702028fe patch 8.1.1624: when testing in the GUI may try to run gvim in a terminal
Problem:    When testing in the GUI may try to run gvim in a terminal.
Solution:   Add the -v argument. (Yee Cheng Chin, closes #4605)  Don't skip
            tests that work now.
2019-07-04 14:20:41 +02:00
e4b407f536 patch 8.1.1623: display wrong with signs in narrow number column
Problem:    Display wrong with signs in narrow number column.
Solution:   Increase the numbercolumn width if needed. (Yegappan Lakshmanan,
            closes #4606)
2019-07-04 11:59:28 +02:00
e296e3177b patch 8.1.1622: wrong width if displaying a lot of lines in a popup window
Problem:    Wrong width if displaying a lot of lines in a popup window.
Solution:   Accurately compute the line overflow.
2019-07-03 23:20:18 +02:00
80edda1cf5 patch 8.1.1621: Amiga: time.h included twice
Problem:    Amiga: time.h included twice.
Solution:   Remove include from evalfunc.c, move outside of #ifdef in
            os_amiga.h. (Ola Söder, closes #4607)
2019-07-03 22:53:06 +02:00
ba45f1f4fb patch 8.1.1620: no test for popup window with border and mask
Problem:    No test for popup window with border and mask.
Solution:   Add this popup window, fix problems.
2019-07-03 22:50:41 +02:00
435f9f06ca patch 8.1.1619: tests are not run with GUI on Travis
Problem:    Tests are not run with GUI on Travis.
Solution:   Add a testgui job. (Ozaki Kiichi, closes #4609)
2019-07-03 21:40:16 +02:00
9ee3d161f7 patch 8.1.1618: Amiga-like systems quickly run out of stack
Problem:    Amiga-like systems quickly run out of stack.
Solution:   Reserve a Megabyte stack. (Ola Söder, closes #4608)
2019-07-02 23:22:43 +02:00
d529ba58dc patch 8.1.1617: no test for popup window with mask and position fixed
Problem:    No test for popup window with mask and position fixed.
Solution:   Add a couple of screenshots.  Fix deteced problems.
2019-07-02 23:13:53 +02:00
8531dc66e8 patch 8.1.1616: build failure with gcc on Amiga
Problem:    Build failure with gcc on Amiga.
Solution:   Add missing header includes. (Ola Söder, closes #4603)
2019-07-01 22:28:20 +02:00
7866b87958 patch 8.1.1615: crash when passing buffer number to popup_create()
Problem:    Crash when passing buffer number to popup_create(). (Yasuhiro
            Matsumoto)
Solution:   Initialze the window properly.
2019-07-01 22:21:01 +02:00
f8a0712655 patch 8.1.1614: 'numberwidth' can only go up to 10
Problem:    'numberwidth' can only go up to 10.
Solution:   Allow up to 20. (Charlie Stanton, closes #4584)
2019-07-01 22:06:07 +02:00
a83e70000f patch 8.1.1613: popup window test fails with Athena and Motif
Problem:    Popup window test fails with Athena and Motif.
Solution:   Compute the highlight attribut when the GUI is not active.
2019-07-01 21:47:35 +02:00
5b8cfedfbd patch 8.1.1612: cannot show an existing buffer in a popup window
Problem:    Cannot show an existing buffer in a popup window.
Solution:   Support buffer number argument in popup_create().
2019-06-30 22:16:10 +02:00
892ae723ab patch 8.1.1611: bufadd() reuses existing buffer without a name
Problem:    Bufadd() reuses existing buffer without a name.
Solution:   When the name is empty always create a new buffer.
2019-06-30 20:33:01 +02:00
15e248e37f patch 8.1.1610: there is no way to add or load a buffer without side effects
Problem:    There is no way to add or load a buffer without side effects.
Solution:   Add the bufadd() and bufload() functions.
2019-06-30 20:21:37 +02:00
2e62b568e9 patch 8.1.1609: the user cannot easily close a popup window
Problem:    The user cannot easily close a popup window.
Solution:   Add the "close" property. (mostly by Masato Nishihata,
            closes #4601)
2019-06-30 18:07:00 +02:00
b60d8514b8 patch 8.1.1608: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move sign functionality to sign.c.
2019-06-29 07:59:04 +02:00
f9c85f580b patch 8.1.1608: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move sign functionality to sign.c.
2019-06-29 07:41:35 +02:00
548be7f126 patch 8.1.1606: on a narrow screen ":hi" output is confusing
Problem:    On a narrow screen ":hi" output is confusing.
Solution:   Insert a space between highlight group name and "xxx". (Masato
            Nishihaga, closes #4599)
2019-06-29 03:42:42 +02:00
4340fc95d5 patch 8.1.1605: Vim may delay processing messages on a json channel
Problem:    Vim may delay processing messages on a json channel. (Pontus
            Leitzler)
Solution:   Try parsing json when checking if there is readahead.
2019-06-28 22:06:49 +02:00
13b47c37a6 patch 8.1.1604: popup window scroll test is flaky
Problem:    Popup window scroll test is flaky.
Solution:   Add a delay between scroll events.
2019-06-28 21:55:48 +02:00
d74af4227b patch 8.1.1603: crash when using unknown highlighting in text property
Problem:    Crash when using unknown highlighting in text property.
Solution:   Check for zero highlight ID.
2019-06-28 21:38:00 +02:00
711d02c96d patch 8.1.1602: popup window cannot overflow on the left or right
Problem:    Popup window cannot overflow on the left or right.
Solution:   Only set the "fixed" option when it is in the dict. Set w_leftcol
            to allow for the popup overflowing on the left and use it when
            applying the mask.
2019-06-28 04:06:50 +02:00
8da4181631 patch 8.1.1601: missing changes to popup window test file
Problem:    Missing changes to popup window test file.
Solution:   Add those changes.
2019-06-26 18:04:54 +02:00
4cd583c6da patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Problem:    Cannot specify highlighting for popup window scrollbar.
Solution:   Add "scrollbarhighlight" and "thumbhighlight" options.
2019-06-26 05:13:57 +02:00
6efd76ae4a patch 8.1.1599: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Add a dummy assignment.
2019-06-26 04:06:57 +02:00
53a95d6584 patch 8.1.1598: update to test file missing
Problem:    Update to test file missing.
Solution:   Update the popup window test file.
2019-06-26 03:54:08 +02:00
68acb41f99 patch 8.1.1597: cannot scroll a popup window with the mouse
Problem:    Cannot scroll a popup window with the mouse.
Solution:   If the popup window has a scrollbar let the mouse scroll wheel
            scroll the window.
2019-06-26 03:40:36 +02:00
c2a4316500 patch 8.1.1596: when resizing the screen may draw popup in wrong position
Problem:    When resizing the screen may draw popup in wrong position. (Masato
            Nishihata)
Solution:   Check the popup is not outside of the screen. (fixes #4592)
2019-06-26 01:03:53 +02:00
88c47aa692 patch 8.1.1595: MS-Windows with VIMDLL: colors wrong in console
Problem:    MS-Windows with VIMDLL: colors wrong in console.
Solution:   Do not set the GUI colors when not using the GUI. (Ken Takata,
            closes #4588)
2019-06-26 00:34:15 +02:00
2eed9bafa0 patch 8.1.1594: may still start file dialog while exiting
Problem:    May still start file dialog while exiting.
Solution:   Ignore the "browse" modifier in another place when exiiting.
            (Ozaki Kiichi, closes #4582)
2019-06-25 23:40:29 +02:00
6a7af8e2db patch 8.1.1593: filetype not detected for C++ header files without extension
Problem:    Filetype not detected for C++ header files without extension.
Solution:   Recognize the file by the Emacs file mode. (Dmitry Ilyin,
            closes #4593)
2019-06-25 21:34:26 +02:00
5c381eb9e7 patch 8.1.1592: may start file dialog while exiting
Problem:    May start file dialog while exiting.
Solution:   Ignore the "browse" modifier when exiting. (Ozaki Kiichi,
            closes #4582
2019-06-25 06:50:31 +02:00
7d491c4253 patch 8.1.1591: on error garbage collection may free memory in use
Problem:    On error garbage collection may free memory in use.
Solution:   Reset may_garbage_collect when evaluating expression mapping.
            Add tests. (Ozaki Kiichi, closes #4579)
2019-06-25 06:28:02 +02:00
6c6a603cd2 patch 8.1.1590: popup window test fails
Problem:    Popup window test fails.
Solution:   Add "scrollbar" to expected result.
2019-06-25 05:33:36 +02:00
75fb0854e9 patch 8.1.1589: popup window does not indicate scroll position
Problem:    Popup window does not indicate scroll position.
Solution:   Add a scrollbar.
2019-06-25 05:15:58 +02:00
e96a2498f9 patch 8.1.1588: in :let-heredoc line continuation is recognized
Problem:    In :let-heredoc line continuation is recognized.
Solution:   Do not consume line continuation. (Ozaki Kiichi, closes #4580)
2019-06-25 04:12:16 +02:00
2b044ffb5a patch 8.1.1587: redraw problem when sign icons in the number column
Problem:    Redraw problem when sign icons in the number column.
Solution:   Clear and redraw when changing related options.  Right aligh the
            sign icon in the GUI. (Yegappan Lakshmanan, closes #4578)
2019-06-24 05:45:14 +02:00
b2cda0dd1d patch 8.1.1586: error number used in two places
Problem:    Error number used in two places.
Solution:   Renumber one. (Ken Takata)
2019-06-24 05:06:36 +02:00
e7eb92708e patch 8.1.1585: :let-heredoc does not trim enough
Problem:    :let-heredoc does not trim enough.
Solution:   Trim indent from the contents based on the indent of the first
            line.  Use let-heredoc in more tests.
2019-06-24 00:58:07 +02:00
0a1f56fcfe patch 8.1.1584: the evalfunc.c file is getting too big
Problem:    The evalfunc.c file is getting too big.
Solution:   Move channel and job related functions to channel.c.
2019-06-24 00:43:35 +02:00
7be3ab2589 patch 8.1.1583: set_ref_in_list() only sets ref in items
Problem:    Set_ref_in_list() only sets ref in items.
Solution:   Rename to set_ref_in_list_items() to avoid confusion.
2019-06-23 01:46:15 +02:00
0fcf26ba4f patch 8.1.1582: cannot build with +textprop but without +timers
Problem:    Cannot build with +textprop but without +timers.
Solution:   Add #ifdef. (Ola Söder, closes #4574)
2019-06-23 01:03:51 +02:00
7a39dd7f00 patch 8.1.1581: shared functions for testing are disorganised
Problem:    Shared functions for testing are disorganised.
Solution:   Group finctions in script files. (Ozaki Kiichi, closes #4573)
2019-06-23 00:50:15 +02:00
c662ec9978 patch 8.1.1580: cannot make part of a popup transparent
Problem:    Cannot make part of a popup transparent.
Solution:   Add the "mask" option.
2019-06-23 00:15:57 +02:00
6c1e1570b1 Update runtime files 2019-06-22 02:13:00 +02:00
adc6714aac patch 8.1.1579: dict and list could be GC'ed while displaying error
Problem:    Dict and list could be GC'ed while displaying error in a timer.
            (Yasuhiro Matsumoto)
Solution:   Block garbage collection when executing a timer.  Add
            test_garbagecollect_soon(). Add "no_wait_return" to
            test_override(). (closes #4571)
2019-06-22 01:40:42 +02:00
dfc1455728 patch 8.1.1578: MS-Windows: pathdef.c should depend on build options
Problem:    MS-Windows: pathdef.c should depend on build options.
Solution:   Generate pathdef.c in the object directory.  Fix dependencies.
            (Ken Takata, closes #4565)
2019-06-21 17:36:10 +02:00
693f7dc818 patch 8.1.1577: command line redrawn for +arabic without Arabic characters
Problem:    Command line redrawn for +arabic without Arabic characters.
            (Dominique Pelle)
Solution:   Check if there actually are any Arabic characters.  Do redraw
            after displaying incsearch. (closes #4569)
2019-06-21 02:30:38 +02:00
405bb42734 patch 8.1.1576: compiler warning for unused argument
Problem:    Compiler warning for unused argument.
Solution:   Add "UNUSED" annotation. (Dominique Pelle, closes #4570)
2019-06-21 00:12:29 +02:00
75a1a9415b patch 8.1.1575: callbacks may be garbage collected
Problem:    Callbacks may be garbage collected.
Solution:   Set reference in callbacks. (Ozaki Kiichi, closes #4564)
2019-06-20 03:45:36 +02:00
a3fce62c91 patch 8.1.1574: tabpage option not yet implemented for popup window
Problem:    Tabpage option not yet implemented for popup window.
Solution:   Implement tabpage option, also for popup_getoptions().
2019-06-20 02:31:49 +02:00
37e66cf0f6 patch 8.1.1573: textprop test fails if screenhots do not work
Problem:    Textprop test fails if screenhots do not work.
Solution:   Add check for screenhots working.
2019-06-19 18:16:10 +02:00
e9726e31fe patch 8.1.1572: compiler warnings with tiny build
Problem:    Compiler warnings with tiny build. (Tony Mechelynck)
Solution:   Add #ifdef.
2019-06-19 18:01:21 +02:00
a956bf6ca3 patch 8.1.1571: textprop highlight starts too early if just after a tab
Problem:    textprop highlight starts too early if just after a tab.
Solution:   Check if still drawing a previous character. (closes #4558)
2019-06-19 17:34:24 +02:00
4dff4aed09 patch 8.1.1570: icon signs not displayed properly in the number column
Problem:    Icon signs not displayed properly in the number column.
Solution:   Display them properly. (Yegappan Lakshmanan, closes #4559)
2019-06-19 16:31:28 +02:00
bf8c3adef2 patch 8.1.1569: cannot build with signs but without diff feature
Problem:    Cannot build with signs but without diff feature.
Solution:   Move #ifdef. (Tom Ryder)
2019-06-19 14:28:43 +02:00
87652a7e3b patch 8.1.1568: strftime() test fails on MS-Windows
Problem:    Strftime() test fails on MS-Windows.
Solution:   Skip the check for using the $TZ environment variable.
2019-06-18 23:07:37 +02:00
db51730df1 patch 8.1.1567: localtime_r() does not respond to $TZ changes
Problem:    Localtime_r() does not respond to $TZ changes.
Solution:   If $TZ changes then call tzset(). (Tom Ryder)
2019-06-18 22:53:24 +02:00
517f71ab17 patch 8.1.1566: error message when terminal closes in another tab
Problem:    Error message when terminal closes while it is not in the current
            tab.
Solution:   Also set "do_set_w_closing" when using the special autocommand
            window. (closes #4552)
2019-06-17 22:40:41 +02:00
9b283523f2 patch 8.1.1565: MS-Windows: no sound support
Problem:    MS-Windows: no sound support.
Solution:   Add sound support for MS-Windows. (Yasuhiro Matsumoto, Ken Takata,
            closes #4522)
2019-06-17 22:19:33 +02:00
394c5d8870 patch 8.1.1564: sign column takes up space
Problem:    Sign column takes up space.  (Adam Stankiewicz)
Solution:   Optionally put signs in the number column. (Yegappan Lakshmanan,
            closes #4555, closes #4515)
2019-06-17 21:48:05 +02:00
6e5000d493 patch 8.1.1563: crash when using closures
Problem:    Crash when using closures.
Solution:   Set reference in varlist of funccal when running the garbage
            collector. (Ozaki Kiichi, closes #4554, closes #4547)
2019-06-17 21:18:41 +02:00
ad24a71e22 patch 8.1.1562: popup window not always redrawn after popup_setoptions()
Problem:    Popup window not always redrawn after popup_setoptions().
Solution:   Force a redraw.
2019-06-17 20:05:45 +02:00
ae943150d3 patch 8.1.1561: popup_setoptions() is not implemented yet
Problem:    Popup_setoptions() is not implemented yet.
Solution:   Implement popup_setoptions().  Also add more fields to
            popup_getoptions().
2019-06-16 22:54:14 +02:00
6313c4f41d patch 8.1.1560: popup window hidden option not implemented yet
Problem:    Popup window hidden option not implemented yet.
Solution:   Implement the hidden option.
2019-06-16 20:39:13 +02:00
eb2310d47d patch 8.1.1559: popup window title property not implemented yet
Problem:    Popup window title property not implemented yet.
Solution:   Implement the title property.
2019-06-16 20:09:10 +02:00
a730e55cc2 patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Problem:    Popup_menu() and popup_filter_menu() are not implemented yet.
Solution:   Implement the functions. Fix that centering didn't take the border
            and padding into account.
2019-06-16 19:05:31 +02:00
983f2f1403 patch 8.1.1557: compiler warning for unused variables in tiny version
Problem:    Compiler warning for unused variables in tiny version. (Tony
            Mechelynck)
Solution:   Add #ifdef.
2019-06-16 16:41:41 +02:00
8a5c7ef9bb patch 8.1.1556: command for failing screenshot does not include directory
Problem:    The command displayed to show a failing screenshot does not include
            the "testdir" directory.
Solution:   Prefix the directory name so that it can be copy-pasted.
2019-06-16 16:14:20 +02:00
8cdbd5b3c4 patch 8.1.1555: NOT_IN_POPUP_WINDOW is confusing
Problem:    NOT_IN_POPUP_WINDOW is confusing. (Andy Massimino)
Solution:   Rename to ERROR_IF_POPUP_WINDOW().
2019-06-16 15:50:45 +02:00
1c196e7b17 patch 8.1.1554: docs and tests for :const can be improved
Problem:    Docs and tests for :const can be improved.
Solution:   Improve documentation, add a few more tests. (Ryuichi Hayashida,
            closes #4551)
2019-06-16 15:41:58 +02:00
dc2ce58b5a patch 8.1.1553: not easy to change the text in a popup window
Problem:    Not easy to change the text in a popup window.
Solution:   Add popup_settext(). (Ben Jackson, closes #4549)
            Also display a space for an empty popup.
2019-06-16 15:32:14 +02:00
f85e40afc2 patch 8.1.1552: cursor position is wrong after sign column changes
Problem:    Cursor position is wrong after sign column appears or disappears.
            (Yegappan Lakshmanan)
Solution:   Call changed_line_abv_curs() instead of changed_cline_bef_curs().
2019-06-16 13:55:40 +02:00
6c17543b56 patch 8.1.1551: warning for shadowing popup_dragwin
Problem:    Warning for shadowing popup_dragwin. (Dominique Pelle)
Solution:   Add missing change.
2019-06-15 23:10:30 +02:00
51c3131040 patch 8.1.1550: when a popup has left padding text may be cut off
Problem:    When a popup has left padding text may be cut off.
Solution:   Add the border and padding when computing the size.
2019-06-15 22:27:23 +02:00
61eeeea8e6 patch 8.1.1549: quickfix test fails
Problem:    Quickfix test fails.
Solution:   Negate result of bt_quickfix().
2019-06-15 21:56:17 +02:00
a42d945efc patch 8.1.1548: popup_dialog() is not implemented
Problem:    Popup_dialog() is not implemented.
Solution:   Implement popup_dialog() and popup_filter_yesno().
2019-06-15 21:46:30 +02:00
26910de8b0 patch 8.1.1547: functionality of bt_nofile() is confusing
Problem:    Functionality of bt_nofile() is confusing.
Solution:   Split into bt_nofile() and bt_nofilename().
2019-06-15 19:37:15 +02:00
0331faf712 patch 8.1.1546: in some tests 'tags' is set but not restored
Problem:    In some tests 'tags' is set but not restored. (Daniel Hahler)
Solution:   Restore 'tags'. (closes #4535)
2019-06-15 18:40:37 +02:00
45aa07d3c1 patch 8.1.1545: when the screen is to small there is no message about that
Problem:    When the screen is to small there is no message about that.
            (Daniel Hahler)
Solution:   Do not use :cquit. (closes #4534)
2019-06-15 18:20:38 +02:00
b46fecd345 patch 8.1.1544: some balloon tests don't run when they can
Problem:    Some balloon tests don't run when they can.
Solution:   Split GUI balloon tests off into a separate file. (Ozaki Kiichi,
            closes #4538)  Change the feature check into a command for
            consistency.
2019-06-15 17:58:09 +02:00
b6e3b88ec8 patch 8.1.1543: const test fails with small features
Problem:    Const test fails with small features.
Solution:   Don't unlet non-existing variables.
2019-06-15 17:50:57 +02:00
d7c9687947 patch 8.1.1542: an OptionSet autocommand does not get enough info
Problem:    An OptionSet autocommand does not get enough info.
Solution:   Add v:option_command, v:option_oldlocal and v:option_oldglobal.
            (Latrice Wilgus, closes #4118)
2019-06-15 17:12:48 +02:00
bffc50494d patch 8.1.1541: check for ASAN is not reliable
Problem:    Check for ASAN is not reliable.
Solution:   Check the version output. (Dominique Pelle, closes #4543)
2019-06-15 16:34:21 +02:00
0abb4273f6 patch 8.1.1540: cannot build without the +eval feature
Problem:    Cannot build without the +eval feature.
Solution:   Define ex_const if needed.
2019-06-15 16:06:00 +02:00
9937a05543 patch 8.1.1539: not easy to define a variable and lock it
Problem:    Not easy to define a variable and lock it.
Solution:   Add ":const".
2019-06-15 15:45:06 +02:00
dfa97f2aed patch 8.1.1538: cannot specify highlighting for notifications
Problem:    Cannot specify highlighting for notifications.
Solution:   Use the PopupNotification group if it exists. Add a minimal width
            to notifications.
2019-06-15 14:31:55 +02:00
fc06cbbf86 patch 8.1.1537: using "tab" for popup window can be confusing
Problem:    Using "tab" for popup window can be confusing.
Solution:   Use "tabpage". (Hirohito Higashi, closes #4532)
2019-06-15 14:14:31 +02:00
1755ec4278 patch 8.1.1536: popup select test still fails on Mac
Problem:    Popup select test still fails on Mac.
Solution:   Set 'clipboard' to "autoselect"
2019-06-15 13:13:54 +02:00
650a63748c patch 8.1.1535: popup select test fails on Mac
Problem:    Popup select test fails on Mac.
Solution:   Skip test if clipboard feature not available.
2019-06-15 00:29:33 +02:00
bd75b5333d patch 8.1.1534: modeless selection in popup window selects too much
Problem:    Modeless selection in popup window selects too much.
Solution:   Restrict the selection to insde of the popup window.
2019-06-14 23:41:55 +02:00
2fc39aeeb5 patch 8.1.1533: GUI build fails on Mac
Problem:    GUI build fails on Mac.
Solution:   Change VimClipboard type in non-C file.
2019-06-14 23:27:29 +02:00
d2cea96f6c patch 8.1.1532: build fails
Problem:    Build fails.
Solution:   Add missing changes.
2019-06-14 23:14:45 +02:00
0554fa478d patch 8.1.1531: clipboard type name is inconsistent
Problem:    Clipboard type name is inconsistent.
Solution:   Rename VimClipboard to Clipboard_T.
2019-06-14 21:36:54 +02:00
f42397c395 patch 8.1.1530: Travis config is not optimal
Problem:    Travis config is not optimal.
Solution:   Remove system conditions.  Do not use excluding matrix. Cache OSX
            results. (Ozaki Kiichi, closes #4521)
2019-06-14 20:47:49 +02:00
21606676d9 patch 8.1.1529: libcanberra is linked with even when not used
Problem:    Libcanberra is linked with even when not used.
Solution:   Have configure check for libcanberra only when wanted.
            (suggestions by Libor Bukata)
2019-06-14 20:40:58 +02:00
b4086ffa32 patch 8.1.1528: popup_any_visible() is unused
Problem:    Popup_any_visible() is unused.
Solution:   Remove it.
2019-06-14 20:00:48 +02:00
a540f8aa3b patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Problem:    When moving a popup window over the command line it is not
            redrawn.
Solution:   Redraw the command line. Move popup redrawing code to the popupwin
            file.
2019-06-14 19:23:57 +02:00
37df9a4401 patch 8.1.1526: no numerical value for the patchlevel
Problem:    No numerical value for the patchlevel.
Solution:   Add v:versionlong.
2019-06-14 14:39:51 +02:00
b53fb31a1e patch 8.1.1525: cannot move a popup window with the mouse
Problem:    Cannot move a popup window with the mouse.
Solution:   Add the "drag" property and make it possible to drag a popup
            window by its border.
2019-06-13 23:59:52 +02:00
b0f94c1ff3 patch 8.1.1524: tests are silently skipped
Problem:    Tests are silently skipped.
Solution:   Throw an exception for skipped tests in more places.
2019-06-13 22:19:53 +02:00
8d24104031 patch 8.1.1523: cannot show range of buffer lines in popup window
Problem:    Cannot show range of buffer lines in popup window.
Solution:   Add the "firstline" property. (closes #4523)
2019-06-12 23:40:01 +02:00
68d48f40a4 patch 8.1.1522: poup_notification() not implemented yet
Problem:    Popup_notification() not implemented yet.
Solution:   Implement it.
2019-06-12 22:42:41 +02:00
7c7f01e2b2 patch 8.1.1521: when a popup window is closed the buffer remains
Problem:    When a popup window is closed the buffer remains.
Solution:   Wipe out the buffer.
2019-06-12 21:06:32 +02:00
451d4b5b7c patch 8.1.1520: popup windows are ignored when dealing with mouse position
Problem:    Popup windows are ignored when dealing with mouse position
Solution:   Find the mouse position inside a popup window.  Allow for modeless
            selection.
2019-06-12 20:22:27 +02:00
06e2c81f6d patch 8.1.1519: 'backupskip' may contain duplicates
Problem:    'backupskip' may contain duplicates.
Solution:   Add the P_NODUP flag. (Tom Ryder)
2019-06-12 19:05:48 +02:00
202d982b36 patch 8.1.1518: crash when setting 'columns' while a popup is visible
Problem:    Crash when setting 'columns' while a popup is visible.
Solution:   Recompute all positions when clearing the screen. (closes #4467)
2019-06-11 21:56:30 +02:00
12ee7ff00b Update runtime files 2019-06-10 22:47:40 +02:00
4c063a0dab patch 8.1.1517: when a popup changes all windows are redrawn
Problem:    When a popup changes all windows are redrawn.
Solution:   Only update the lines that were affected.  Add a file for
            profiling popup windows efficiency.
2019-06-10 21:24:12 +02:00
640d4f0c97 patch 8.1.1516: time reported for a test measured wrong
Problem:    Time reported for a test measured wrong.
Solution:   Move the computation to the end of RunTheTest(). (Ozaki Kiichi,
            closes #4520)
2019-06-10 17:43:46 +02:00
82febc16e4 patch 8.1.1515: memory leak reported for sound when build with EXITFREE
Problem:    Memory leak reported for sound when build with EXITFREE.
Solution:   Free sound stuff when exiting.
2019-06-10 14:48:59 +02:00
01257a7a8e patch 8.1.1514: MS-Windows: wrong shell command with ! in 'guioptions'
Problem:    MS-Windows: wrong shell command with ! in 'guioptions'.
Solution:   Do not check for ! in 'guioptions' when applying 'shellxquote'.
            (Yasuhiro Matsumoto, closes #4519)
2019-06-10 14:46:04 +02:00
3ff5f0f05d patch 8.1.1513: all popup functionality is in functions, except :popupclear
Problem:    All popup functionality is in functions, except :popupclear.
Solution:   Add popup_clear() for consistency.  Also rename sound_stopall() to
            sound_clear().
2019-06-10 13:11:22 +02:00
38ea784fec patch 8.1.1512: ch_evalexpr() hangs when used recursively
Problem:    ch_evalexpr() hangs when used recursively. (Paul Jolly)
Solution:   Change ch_block_id from a single number to a list of IDs to wait
            on.
2019-06-09 19:51:58 +02:00
ac2450a9a8 patch 8.1.1511: matches in a popup window are not displayed properly
Problem:    Matches in a popup window are not displayed properly.
Solution:   Do display matches in a popup window. (closes #4517)
2019-06-09 18:04:28 +02:00
80dad48c50 patch 8.1.1510: a plugin cannot easily expand a command like done internally
Problem:    A plugin cannot easily expand a command like done internally.
Solution:   Add the expandcmd() function. (Yegappan Lakshmanan, closes #4514)
2019-06-09 17:22:31 +02:00
954bb06363 patch 8.1.1509: cmdline_row can become negative, causing a crash
Problem:    Cmdline_row can become negative, causing a crash.
Solution:   Make sure cmdline_row does not become negagive. (closes #4102)
2019-06-09 16:40:46 +02:00
541faf7a73 patch 8.1.1508: sound keeps failing on Travis
Problem:    Sound keeps failing on Travis.
Solution:   Throw a skipped exception in the test.
2019-06-09 15:35:41 +02:00
a90998d93a patch 8.1.1507: sound test still fails on Travis
Problem:    Sound test still fails on Travis.
Solution:   Try another dummy sound approach.
2019-06-09 15:21:27 +02:00
b29cfb8c28 patch 8.1.1506: syntax error in Travis config
Problem:    Syntax error in Travis config.
Solution:   Set AUDIODEV in another section.
2019-06-09 14:51:30 +02:00
8ed75cb0b4 patch 8.1.1505: running "make clean" twice gives errors
Problem:    Running "make clean" twice gives errors.
Solution:   Add "-f" to "rm". (closes #4516)
2019-06-09 14:39:13 +02:00
ef23c527bd patch 8.1.1504: sound test still fails on Travis
Problem:    Sound test still fails on Travis.
Solution:   Add more lines to the install section.
2019-06-09 14:15:29 +02:00
ffa60dda0a patch 8.1.1503: sound test fails on Travis
Problem:    Sound test fails on Travis.
Solution:   Set AUDIODEV to "null".
2019-06-09 13:56:27 +02:00
427f5b66ce patch 8.1.1502: cannot play any sound
Problem:    Cannot play any sound.
Solution:   Use libcanberra if available.  Add sound functions.
2019-06-09 13:43:51 +02:00
260addf795 patch 8.1.1501: new behavior of b:changedtick not tested
Problem:    New behavior of b:changedtick not tested.
Solution:   Add a few test cases. (Daniel Hahler)
2019-06-08 20:48:36 +02:00
21f8d93c71 patch 8.1.1500: wrong shell command when building with VIMDLL and "!" in 'go'
Problem:    Wrong shell command when building with VIMDLL and "!" in
            'guioptions'.
Solution:   Add check for GUI in use. (Ken Takata)
2019-06-08 20:17:18 +02:00
24a5ac5d4d patch 8.1.1499: ruler not updated after popup window was removed
Problem:    Ruler not updated after popup window was removed.
Solution:   use popup_mask in screen_puts().
2019-06-08 19:01:18 +02:00
c024b46678 patch 8.1.1498: ":write" increments b:changedtick even though nothing changed
Problem:    ":write" increments b:changedtick even though nothing changed.
            (Daniel Hahler)
Solution:   Only increment b:changedtick if the modified flag is reset.
2019-06-08 18:07:21 +02:00
aef5c62a6f patch 8.1.1497: accessing memory beyond allocated space
Problem:    Accessing memory beyond allocated space.
Solution:   Check column before accessing popup mask.
2019-06-08 17:25:33 +02:00
acc682bd7c patch 8.1.1496: popup window height is not recomputed
Problem:    Popup window height is not recomputed.
Solution:   Recompute the height when needed.
2019-06-08 17:15:51 +02:00
1748c7f77e patch 8.1.1495: memory access error
Problem:    Memory access error.
Solution:   Use the correct size for clearing the popup mask.
2019-06-08 16:55:15 +02:00
6c009a3974 patch 8.1.1494: build failure
Problem:    Build failure.
Solution:   Add missing changes.
2019-06-08 16:06:28 +02:00
33796b39b9 patch 8.1.1493: redrawing with popups is slow and causes flicker
Problem:    Redrawing with popups is slow and causes flicker.
Solution:   Avoid clearing and redrawing using a zindex mask.
2019-06-08 16:01:13 +02:00
7c348bb5ad patch 8.1.1492: MS-Windows: when "!" is in 'guioptions' ":!start" fails
Problem:    MS-Windows: when "!" is in 'guioptions' ":!start" fails.
Solution:   Do not use a terminal window when the shell command begins with
            "!start". (Yasuhiro Matsumoto, closes #4504)
2019-06-08 12:05:22 +02:00
6064073841 patch 8.1.1491: when skipping over code a function call may cause trouble
Problem:    When skipping over code after an exception was thrown expression
            evaluation is aborted after a function call. (Ingo Karkat)
Solution:   Do not fail if not executing the expression. (closes #4507)
2019-06-07 23:15:22 +02:00
4e0bf84627 patch 8.1.1490: when a single test fails the exit code is not set
Problem:    When a single test fails the exit code is not set. (Daniel Hahler)
Solution:   Add an exit command. (closes #4506)
2019-06-07 22:40:25 +02:00
64416127fc patch 8.1.1489: sign order wrong when priority was changed
Problem:    Sign order wrong when priority was changed.
Solution:   Reorder signs when priority is changed. (Yegappan Lakshmanan,
            closes #4502)
2019-06-07 21:37:13 +02:00
150f0550f4 patch 8.1.1488: summary of tests has incorrect failed count
Problem:    Summary of tests has incorrect failed count.
Solution:   Add to the failed count instead of setting it. (Christian Brabandt)
2019-06-07 21:29:50 +02:00
62a88f498a patch 8.1.1487: older msgfmt cannot generate proper .desktop file
Problem:    Older msgfmt cannot generate proper .desktop file.
Solution:   Add a configure check to not use this msgfmt version. (Ken Takata)
2019-06-07 20:44:40 +02:00
1253704591 patch 8.1.1486: a listener change is merged even when it adds a line
Problem:    A listener change is merged even when it adds a line. (Paul Jolly)
Solution:   Do not merge a change that adds or removes a line. (closes #4490)
2019-06-06 22:50:35 +02:00
773a97c254 Update runtime files - Add typescript syntax and indent. 2019-06-06 20:39:55 +02:00
c07f67ad0e patch 8.1.1485: double free when garbage_collect() is used in autocommand
Problem:    Double free when garbage_collect() is used in autocommand.
Solution:   Have garbage collection also set the copyID in funccal_stack.
2019-06-06 19:03:17 +02:00
75ee544f99 patch 8.1.1484: some tests are slow
Problem:    Some tests are slow.
Solution:   Add timing to the test messages.  Fix double free when quitting in
            VimLeavePre autocmd.
2019-06-06 18:05:25 +02:00
5d30ff1964 patch 8.1.1483: skipped tests are not properly listed
Problem:    Skipped tests are not properly listed.
Solution:   Throw a "Skipped" exception instead of using ":finish" or ":return".
2019-06-06 16:12:12 +02:00
f6d50f1da8 patch 8.1.1482: no test for wincol() depending on the 'number' option
Problem:    No test for wincol() depending on the 'number' option.
Solution:   Add a couple of tests. (Christian Brabandt, closes #4500)
2019-06-06 15:40:08 +02:00
12e71eb8a8 patch 8.1.1481: length for two-digit rgb termresponse is off by one
Problem:    Length for two-digit rgb termresponse is off by one.
Solution:   Adjust the length. (closes #4494)
2019-06-06 15:19:31 +02:00
8e228e21cc patch 8.1.1480: desktop file check doesn't run on CI
Problem:    Desktop file check doesn't run on CI.
Solution:   Install the desktip-file-utils packages. (Christian Brabandt,
            closes #4498)
2019-06-06 15:13:19 +02:00
133c737357 patch 8.1.1479: change included for debugging only
Problem:    Change included for debugging only.
Solution:   Restore the REDIR_TEST_TO_NULL line.
2019-06-06 14:38:06 +02:00
18250e291a patch 8.1.1478: still an error when running tests with the tiny version
Problem:    Still an error when running tests with the tiny version.
Solution:   Do not try reading test.log
2019-06-06 14:28:54 +02:00
c7500f9cb5 patch 8.1.1477: test summary fails in the tiny version
Problem:    Test summary fails in the tiny version.
Solution:   set 'nocompatible'.
2019-06-06 14:08:50 +02:00
9c0cec65f8 patch 8.1.1476: no statistics displayed after running tests
Problem:    No statistics displayed after running tests.
Solution:   Summarize the test results. (Christian Brabandt, closes #4391)
            Also make it possible to report a skipped file.
2019-06-06 13:38:15 +02:00
db294adc65 patch 8.1.1475: search string not displayed when 'rightleft' is set
Problem:    Search string not displayed when 'rightleft' is set.
Solution:   Clear the right part of the old text. (closes #4488, closes #4489)
2019-06-06 12:49:29 +02:00
9aeb33639f patch 8.1.1474: 'ttybuiltin' is not tested
Problem:    'ttybuiltin' is not tested.
Solution:   At least test that it doesn't break things.
2019-06-06 12:36:15 +02:00
4a792c87b9 patch 8.1.1473: new resolve() implementation causes problem for plugins
Problem:    New resolve() implementation causes problem for plugins.
Solution:   Only resolve a resparse point after checking it is needed. (Ken
            Takata, closes #4492)
2019-06-06 12:22:41 +02:00
61da1bfa6c Update runtime files. 2019-06-06 12:14:49 +02:00
de6dbb452a patch 8.1.1472: add_termcap_entry() is not tested
Problem:    Add_termcap_entry() is not tested.
Solution:   Add a simple test.
2019-06-06 11:59:18 +02:00
32e1977012 patch 8.1.1471: 'background' not correctly set for 2-digit rgb termresponse
Problem:    'background' not correctly set for 2-digit rgb termresponse.
Solution:   Adjust what digit to use. (closes #4495)
2019-06-05 22:57:04 +02:00
6d718c4c38 patch 8.1.1470: new Unicode character U32FF missing from double-width table
Problem:    New Unicode character U32FF missing from double-width table.
Solution:   Add the character.
2019-06-05 22:46:13 +02:00
66761db11d patch 8.1.1469: no test for checking the cursor style response
Problem:    No test for checking the cursor style response.
Solution:   Add a simple test.  Also include the missing part of 8.1.1464.
2019-06-05 22:07:51 +02:00
d0380dc782 patch 8.1.1468: the generated desktop files may be invalid
Problem:    The generated desktop files may be invalid.
Solution:   Check validity with desktop-file-validate. (Christian Brabandt,
            Will Thompson, closes #4480)
2019-06-05 21:25:34 +02:00
d6ec1730ba patch 8.1.1467: cscope test fails
Problem:    Cscope test fails.
Solution:   Update expected text.
2019-06-04 23:20:23 +02:00
58a7f87c86 patch 8.1.1466: not updating priority on existing sign
Problem:    Not updating priority on existing sign.
Solution:   Set the sign priority.  Add a test. (Yegappan Lakshmanan)
2019-06-04 22:48:15 +02:00
a37833dbd7 patch 8.1.1465: allocating wrong amount of memory
Problem:    Allocating wrong amount of memory. (Yegappan Lakshmanan)
Solution:   Use sizeof() for right type of struct.
2019-06-04 22:29:10 +02:00
cea254f5a7 patch 8.1.1464: only 4-digit rgb termresponse is recognized
Problem:    Only 4-digit rgb termresponse is recognized.
Solution:   Also recognize 2-digit rgb response. (closes #4486)
2019-06-04 21:41:28 +02:00
277e79adc4 patch 8.1.1463: gcc warns for uninitialized variable
Problem:    Gcc warns for uninitialized variable.
Solution:   Put usage inside "if".  (Ken Takata)
2019-06-04 19:16:29 +02:00
c974022c31 patch 8.1.1462: MS-Windows: using special character requires quoting
Problem:    MS-Windows: using special character requires quoting.
Solution:   Add quotes. (Ken Takata)
2019-06-04 08:22:53 +02:00
ddd3308782 patch 8.1.1461: tests do not run or are not reliable on some systems
Problem:    Tests do not run or are not reliable on some systems.
Solution:   Use "findstr" instead of "grep" on MS-Windows. Clear
            PROMPT_COMMAND in the terminal test. Delete temp file. Wait for
            output after executing a debug command. (Yegappan Lakshmanan,
            closes #4479)
2019-06-03 23:07:25 +02:00
02e15072be patch 8.1.1460: popup window border characters may be wrong
Problem:    Popup window border characters may be wrong.
Solution:   Reset the border characters for each popup.  Correct use of
            'ambiwidth'.
2019-06-03 22:53:30 +02:00
3f6aeba18b patch 8.1.1459: popup window border looks bad when 'ambiwidth' is "double"
Problem:    Popup window border looks bad when 'ambiwidth' is "double".
            (Yasuhiro Matsumoto)
Solution:   Only use line drawing characters when 'ambiwidth' is "single".
            (Ken Takata, closes #4477)
2019-06-03 22:21:27 +02:00
0b4c9eddb5 patch 8.1.1458: crash when using gtags
Problem:    Crash when using gtags. (issue #4102)
Solution:   Check for negative row or col in screen_puts_len(). (Christian
            Brabandt)
2019-06-03 22:04:23 +02:00
87abab92f5 patch 8.1.1457: cannot reuse a buffer when loading a screen dump
Problem:    Cannot reuse a buffer when loading a screen dump.
Solution:   Add the "bufnr" option.
2019-06-03 21:14:59 +02:00
98fb65cb05 patch 8.1.1456: WinBar not redrawn after scrolling one line
Problem:    WinBar not redrawn after scrolling one line.
Solution:   Exclude the winbar height when deciding what to redraw.
            (closes #4473)
2019-06-02 20:33:32 +02:00
1762731f20 patch 8.1.1455: popup_atcursor() not completely implemented
Problem:    Popup_atcursor() not completely implemented.
Solution:   Add the default for the "moved" property.
2019-06-02 19:53:44 +02:00
6116b6abb1 patch 8.1.1454: build failure without the conceal feature
Problem:    Build failure without the conceal feature.
Solution:   Remove #ifdef.
2019-06-02 19:02:27 +02:00
3397f74ac2 patch 8.1.1453: popup window "moved" property not implemented yet
Problem:    Popup window "moved" property not implemented yet.
Solution:   Implement it.
2019-06-02 18:40:06 +02:00
b0ebbda06c patch 8.1.1452: line and col property of popup windows not properly checked
Problem:    Line and col property of popup windows not properly checked.
Solution:   Check for "+" or "-" sign.
2019-06-02 16:51:21 +02:00
ca2f7037c1 patch 8.1.1451: CTRL-L does not clear screen with a popup window
Problem:    CTRL-L does not clear screen with a popup window.
Solution:   Do not change the type to NOT_VALID.  Redraw all windows.
            (closes #4471)
2019-06-02 15:56:15 +02:00
399d898ac1 patch 8.1.1450: popup window positioning wrong when using padding or borders
Problem:    Popup window positioning wrong when using padding or borders.
Solution:   Fix computing the position.
2019-06-02 15:34:29 +02:00
042fb4b449 patch 8.1.1449: popup text truncated at end of screen
Problem:    Popup text truncated at end of screen.
Solution:   Move popup left if needed.  Add the "fixed" property to disable
            that. (Ben Jackson , closes #4466)
2019-06-02 14:49:56 +02:00
988c43310a patch 8.1.1448: statusline is sometimes drawn on top of popup
Problem:    Statusline is sometimes drawn on top of popup.
Solution:   Redraw popups after the statusline. (Naruhiko Nishino,
            closes #4468)
2019-06-02 14:12:11 +02:00
7b29dd8507 patch 8.1.1447: not allowed to create an empty popup
Problem:    Not allowed to create an empty popup.
Solution:   Remove restriction that there is some text. (closes #4470)
2019-06-02 13:22:11 +02:00
9eaac89650 patch 8.1.1446: popup window callback not implemented yet
Problem:    Popup window callback not implemented yet.
Solution:   Implement the callback.
2019-06-01 22:49:29 +02:00
790498b509 patch 8.1.1445: popup window border highlight not implemented yet
Problem:    Popup window border highlight not implemented yet.
Solution:   Implement the "borderhighlight" option.
2019-06-01 22:15:29 +02:00
3bfd04e672 patch 8.1.1444: not using double line characters for popup border
Problem:    Not using double line characters for popup border.
Solution:   Use double line characters if using utf-8.
2019-06-01 20:45:21 +02:00
2fd8e35e16 patch 8.1.1443: popup window padding and border not implemented yet
Problem:    Popup window padding and border not implemented yet.
Solution:   Implement padding and border.  Add core position and size to
            popup_getpos().
2019-06-01 20:16:48 +02:00
8caaf82569 patch 8.1.1442: popup windows not considered when the Vim window is resized
Problem:    Popup windows not considered when the Vim window is resized.
            (Ben Jackson)
Solution:   Reallocate the w_lines structure. (closes #4467)
2019-06-01 18:11:22 +02:00
bf0eff0b72 patch 8.1.1441: popup window filter not yet implemented
Problem:    Popup window filter not yet implemented.
Solution:   Implement the popup filter.
2019-06-01 17:13:36 +02:00
2d247849ce patch 8.1.1440: win_execute() test fails
Problem:    Win_execute() test fails.
Solution:   Adjust the expected error number.  Move to popup test.
2019-06-01 17:06:25 +02:00
c47ed44be7 patch 8.1.1439: json_encode() is very slow for large results
Problem:    Json_encode() is very slow for large results.
Solution:   In the growarray use a growth of at least 50%. (Ken Takata,
            closes #4461)
2019-06-01 14:36:26 +02:00
815b76bff6 patch 8.1.1438: some commands cause trouble in a popup window
Problem:    Some commands cause trouble in a popup window.
Solution:   Add NOT_IN_POPUP_WINDOW.
2019-06-01 14:15:52 +02:00
3a97bb3f0f patch 8.1.1437: code to handle callbacks is duplicated
Problem:    Code to handle callbacks is duplicated.
Solution:   Add callback_T and functions to deal with it.
2019-06-01 13:28:35 +02:00
7dd64a3e57 Update runtime files. 2019-05-31 21:41:05 +02:00
c28cb5b16d patch 8.1.1436: writefile test fails when run under /tmp
Problem:    Writefile test fails when run under /tmp.
Solution:   Adjust 'backupskip. (Kenta Sato, closes #4462)
2019-05-31 20:42:09 +02:00
5d508dd39e patch 8.1.1435: memory usage test is a bit too flaky
Problem:    Memory usage test is a bit too flaky.
Solution:   Adjust the tolerances a bit. (Christian Brabandt)
2019-05-31 20:23:25 +02:00
1ab74a5af3 patch 8.1.1434: test 3 is old style
Problem:    Test 3 is old style.
Solution:   Turn into a new style test. (Yegappan Lakshmanan, closes #4460)
2019-05-31 20:02:53 +02:00
eea1699836 patch 8.1.1433: win_execute() may leave popup window focused
Problem:    Win_execute() may leave popup window focused, eventually leading
            to a crash. (Bjorn Linse)
Solution:   When previous window was closed, go to the first window.
2019-05-31 17:34:48 +02:00
ccd6e3471d patch 8.1.1432: can't build with eval feature
Problem:    Can't build with eval feature.
Solution:   Add missing rename.
2019-05-30 22:35:18 +02:00
c6896e20f8 patch 8.1.1431: popup window listed as "Scratch"
Problem:    Popup window listed as "Scratch".
Solution:   List them as "Popup".
2019-05-30 22:32:34 +02:00
402502d0e4 patch 8.1.1430: popup window option "wrap" not supported
Problem:    Popup window option "wrap" not supported.
Solution:   Implement it.
2019-05-30 22:07:36 +02:00
ac1f1bc222 patch 8.1.1429: "pos" option of popup window not supported yet
Problem:    "pos" option of popup window not supported yet.
Solution:   Implement the option. Rename popup_getposition() to
            popup_getpos().
2019-05-30 21:24:26 +02:00
cc31ad9f9b patch 8.1.1428: popup_atcursor() not implemented yet
Problem:    Popup_atcursor() not implemented yet.
Solution:   Implement it. (Yasuhiro Matsumoto, closes #4456)
2019-05-30 19:25:06 +02:00
54fabd4b5e patch 8.1.1427: popup window screenshot test fails
Problem:    Popup window screenshot test fails.
Solution:   Add missing change to popup window code.
2019-05-30 19:03:22 +02:00
b42301247d patch 8.1.1426: no test for syntax highlight in popup window
Problem:    No test for syntax highlight in popup window.
Solution:   Add a screenshot test.  Update associated documentation. Avoid
            'buftype' being reset by setbufvar().
2019-05-30 18:40:53 +02:00
89adc3a137 patch 8.1.1425: win_execute() does not set window pointers properly
Problem:    Win_execute() does not set window pointers properly.
Solution:   Use switch_win_noblock().  Also execute autocommands in a popup
            window.
2019-05-30 17:29:40 +02:00
5c3fb04623 patch 8.1.1424: crash when popup menu is deleted while waiting for char
Problem:    Crash when popup menu is deleted while waiting for char.
Solution:   Bail out when pum_array was cleared.
2019-05-30 15:53:29 +02:00
cacc6a5c98 patch 8.1.1423: popup windows use options from current window and buffer
Problem:    Popup windows use options from current window and buffer.
Solution:   Clear all local options when creating a popup window.
2019-05-30 15:22:43 +02:00
8c2a600f72 patch 8.1.1422: popup_getoptions() not implemented yet
Problem:    Popup_getoptions() not implemented yet.
Solution:   Implement it. (closes #4452)
2019-05-30 14:29:45 +02:00
1714696600 patch 8.1.1421: drawing "~" line in popup window
Problem:    Drawing "~" line in popup window.
Solution:   Just draw text in the last line of the popup window.
2019-05-30 00:12:11 +02:00
88c4e1f069 patch 8.1.1420: popup window size only uses first line length
Problem:    Popup window size only uses first line length.
Solution:   Use the longest line. (Ben Jackson, closes #4451)  Also deal with
            wrapping lines.
2019-05-29 23:14:28 +02:00
68a4b04a8d patch 8.1.1419: listener callbacks may be called recursively
Problem:    Listener callbacks may be called recursively.
Solution:   Set "updating_screen" while listener callbacks are invoked.
2019-05-29 22:28:29 +02:00
868b7b6712 patch 8.1.1418: win_execute() is not implemented yet
Problem:    Win_execute() is not implemented yet.
Solution:   Implement it.
2019-05-29 21:44:40 +02:00
1bbebab525 patch 8.1.1417: MS-Windows: resolve() does not resolve all components of path
Problem:    MS-Windows: resolve() does not resolve all components of the path.
            (David Briscoe)
Solution:   Do not bail out for a reparse point. (Yasuhiro Matsumoto,
            closes #4211, closes #4447)
2019-05-29 20:36:54 +02:00
bc133543b8 patch 8.1.1416: popup_getposition() not implemented yet
Problem:    Popup_getposition() not implemented yet.
Solution:   Implement it. (Yasuhiro Matsumoto, closes #4449)
2019-05-29 20:26:46 +02:00
59edb00e22 patch 8.1.1415: build error in MS-Windows GUI
Problem:    Build error in MS-Windows GUI.
Solution:   Fix the LALLOC_MULT() argument.
2019-05-28 23:32:47 +02:00
c799fe206e patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Problem:    Alloc() returning "char_u *" causes a lot of type casts.
Solution:   Have it return "void *". (Mike Williams)  Define ALLOC_ONE() to
            check the simple allocations.
2019-05-28 23:08:19 +02:00
b58a4b938c patch 8.1.1413: error when the drive of the swap file was disconnected
Problem:    Error when the drive of the swap file was disconnected.
Solution:   Try closing and re-opening the swap file. (closes #4378)
2019-05-27 23:36:21 +02:00
72fcf07b06 patch 8.1.1412: test 30 is old style
Problem:    Test 30 is old style.
Solution:   Turn it into a new style test. (Yegappan Lakshmanan, closes #4440)
2019-05-27 22:21:44 +02:00
7833dab73c patch 8.1.1411: Coverity warns for divide by zero
Problem:    Coverity warns for divide by zero.
Solution:   Make sure width is larger than zero.
2019-05-27 22:01:40 +02:00
60cdb3004a patch 8.1.1410: popup_move() is not implemented yet
Problem:    Popup_move() is not implemented yet.
Solution:   Implement it. (Yasuhiro Matsumoto, closes #4441)  Improve the
            positioning and resizing.
2019-05-27 21:54:10 +02:00
b43683729b patch 8.1.1409: Coverity warns for using uninitialized memory
Problem:    Coverity warns for using uninitialized memory.
Solution:   Add a condition to clearing the growarray.
2019-05-27 20:01:41 +02:00
bf0ecb2cb6 patch 8.1.1408: PFL_HIDDEN conflicts with system header file
Problem:    PFL_HIDDEN conflicts with system header file.
Solution:   Rename to POPF_HIDDEN.
2019-05-27 10:04:40 +02:00
7a8d0278bd patch 8.1.1407: popup_create() does not support text properties
Problem:    Popup_create() does not support text properties.
Solution:   Support the third form of the text argument.
2019-05-26 23:32:06 +02:00
2cd0dce898 patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Problem:    popup_hide() and popup_show() not implemented yet.
Solution:   Implement the functions.
2019-05-26 22:17:52 +02:00
68e6560b84 Update runtime files. 2019-05-26 21:33:31 +02:00
20c023aee0 patch 8.1.1405: "highlight" option of popup windows not supported
Problem:    "highlight" option of popup windows not supported.
Solution:   Implement the "highlight" option.
2019-05-26 21:03:24 +02:00
9d591525a5 patch 8.1.1404: cannot change the patch level when building with NSIS
Problem:    Cannot change the patch level when building with NSIS.
Solution:   Use $PATCHLEVEL if defined. (Christian Brabandt)
2019-05-26 20:49:42 +02:00
35d5af6c0b patch 8.1.1403: cannot build without the timer feature
Problem:    Cannot build without the timer feature.
Solution:   Add #ifdef.
2019-05-26 20:44:10 +02:00
51fe3b14f6 patch 8.1.1402: "timer" option of popup windows not supported
Problem:    "timer" option of popup windows not supported.
Solution:   Implement the "timer" option. (Yasuhiro Matsumoto, closes #4439)
2019-05-26 20:10:06 +02:00
076073950c patch 8.1.1401: misspelled mkspellmem as makespellmem
Problem:    Misspelled mkspellmem as makespellmem.
Solution:   Drop duplicate help entry, fix test. (Naruhiko Nishino, Ken
            Takata, closes #4437)
2019-05-26 19:20:43 +02:00
9c27b1c6d1 patch 8.1.1400: using global pointer for tab-local popups is clumsy
Problem:    Using global pointer for tab-local popups is clumsy.
Solution:   Use the pointer in tabpage_T.
2019-05-26 18:48:13 +02:00
ec58384afa patch 8.1.1399: popup windows not adjusted when switching tabs
Problem:    Popup windows not adjusted when switching tabs.
Solution:   Save and restore first_tab_popupwin. Fix closing a tabpage.
2019-05-26 14:11:23 +02:00
a8c99fb78e patch 8.1.1398: duplicate line in MSVC build file
Problem:    Duplicate line in MSVC build file.
Solution:   Remove the line. (Ken Takata, closes #4436)
2019-05-26 13:14:02 +02:00
80f95425cf patch 8.1.1397: build fails in tiny version
Problem:    Build fails in tiny version.
Solution:   Always define hl_combine_attr().
2019-05-25 23:42:13 +02:00
193ffd1d9f patch 8.1.1396: 'wincolor' does not apply to lines below the buffer
Problem:    'wincolor' does not apply to lines below the buffer.
Solution:   Also apply 'wincolor' to the "~" lines and the number column.
2019-05-25 22:57:30 +02:00
adfde115d5 patch 8.1.1395: saving for undo may access invalid memory
Problem:    Saving for undo may access invalid memory. (Dominique Pelle)
Solution:   Set ml_line_len also when returning a constant string.
2019-05-25 22:11:45 +02:00
a5e44600eb patch 8.1.1394: not restoring t_F2 in registers test
Problem:    Not restoring t_F2 in registers test.
Solution:   Assign to &t_F2 instead of t_F2. (Andy Massimino, closes #4434)
2019-05-25 21:52:30 +02:00
51e14387f1 patch 8.1.1393: unnecessary type casts
Problem:    Unnecessary type casts.
Solution:   Remove type casts from alloc() and lalloc() calls. (Mike Williams)
2019-05-25 20:21:28 +02:00
682725c141 patch 8.1.1392: build failure in tiny version
Problem:    Build failure in tiny version.
Solution:   Define ex_popupclear to ex_ni if not implemented.  Add UNUSED.
2019-05-25 20:10:37 +02:00
4d784b21d1 patch 8.1.1391: no popup window support
Problem:    No popup window support.
Solution:   Add initial code for popup windows.  Add the 'wincolor' option.
2019-05-25 19:51:39 +02:00
8f46e4c4bd patch 8.1.1390: search stats are off when using count or offset
Problem:    Search stats are off when using count or offset.
Solution:   Recompute the stats when needed. (Masato Nishihata, closes #4410)
2019-05-24 22:08:15 +02:00
7b31a181c8 patch 8.1.1389: changes are not flushed when end and start overlap
Problem:    Changes are not flushed when end and start overlap. (Paul Jolly)
Solution:   When end of a previous changes overlaps with start of a new
            change, first flush listeners.
2019-05-24 21:39:27 +02:00
f0884c5f3f patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Problem:    Errors when calling prop_remove() for an unloaded buffer.
Solution:   Bail out when the buffer is not loaded.  Add a few more tests for
            failing when the buffer number is invalid.
2019-05-24 21:22:29 +02:00
d79eef2eb1 patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Problem:    Calling prop_add() in an empty buffer doesn't work. (Dominique
            Pelle)
Solution:   Open the memline before adding a text property. (closes #4412)
2019-05-24 20:41:55 +02:00
18a4ba29ae patch 8.1.1386: unessesary type casts for lalloc()
Problem:    Unessesary type casts for lalloc().
Solution:   Remove type casts.  Change lalloc(size, TRUE) to alloc(size).
2019-05-24 19:39:03 +02:00
71de720c2c patch 8.1.1385: signed/unsigned compiler warning
Problem:    Signed/unsigned compiler warning.
Solution:   Use STRLEN() instead of strlen().
2019-05-24 19:04:29 +02:00
964b3746b9 patch 8.1.1384: using "int" for alloc() often results in compiler warnings
Problem:    Using "int" for alloc() often results in compiler warnings.
Solution:   Use "size_t" and remove type casts.  Remove alloc_check(), Vim
            only works with 32 bit ints anyway.
2019-05-24 18:54:09 +02:00
d33a764123 patch 8.1.1383: warning for size_t/int mixup
Problem:    Warning for size_t/int mixup.
Solution:   Change type. (Mike Williams)
2019-05-24 17:56:14 +02:00
3020a87cb1 patch 8.1.1382: error when editing test file
Problem:    Error when editing test file.
Solution:   Remove part of modeline.
2019-05-24 17:33:01 +02:00
d22a6f8aaf patch 8.1.1381: MS-Windows: missing build dependency
Problem:    MS-Windows: missing build dependency.
Solution:   Make gui_dwrite.cpp depend on gui_dwrite.h. (Ken Takata,
            closes #4423
2019-05-24 17:17:54 +02:00
fa8f861957 patch 8.1.1380: MS-Windows building VIMDLL with MSVC: SUBSYSTEM is not set
Problem:    MS-Windows building VIMDLL with MSVC: SUBSYSTEM is not set.
Solution:   Invert condition. (closes #4422)
2019-05-24 17:05:44 +02:00
8239c62067 patch 8.1.1379: filechanged test hangs
Problem:    Filechanged test hangs.
Solution:   Do not check 'autoread'.
2019-05-24 16:46:01 +02:00
701ff0a3e5 patch 8.1.1378: delete() can not handle a file name that looks like a pattern
Problem:    Delete() can not handle a file name that looks like a pattern.
Solution:   Use readdir() instead of appending "/*" and expanding wildcards.
            (Ken Takata, closes #4424, closes #696)
2019-05-24 14:14:14 +02:00
fcc4d921d6 patch 8.1.1377: MS-Windows GUI uses wrong shell command for bash
Problem:    MS-Windows GUI uses wrong shell command for bash. (Robert Bogomip)
Solution:   Check that 'shellcmdflag' is "/c". (Ken Takata, closes #4418)
2019-05-24 13:32:36 +02:00
e2ad826f43 patch 8.1.1376: warnings for size_t/int mixups
Problem:    Warnings for size_t/int mixups.
Solution:   Change types, add type casts. (Mike Williams)
2019-05-24 13:22:22 +02:00
984f031fb0 patch 8.1.1375: without "TS" in 'shortmess' get a hit-enter prompt often
Problem:    Without "TS" in 'shortmess' get a hit-enter prompt often.
Solution:   Always truncate the search message.  Also avoid putting it in the
            message history. (closes #4413)
2019-05-24 13:11:47 +02:00
c97582b029 patch 8.1.1374: check for file changed triggers too often
Problem:    Check for file changed triggers too often.
Solution:   Don't use "b_p_ar" when it is negative.
2019-05-24 11:45:22 +02:00
0ab190c057 patch 8.1.1373: "[p" in Visual mode puts in wrong line
Problem:    "[p" in Visual mode puts in wrong line.
Solution:   Call nv_put() instead of duplicating the functionality.
            (closes #4408)
2019-05-23 23:27:36 +02:00
1c6fd1e100 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Problem:    When evaluating 'statusline' the current window is unknown.
            (Daniel Hahler)
Solution:   Set "g:actual_curwin" for %{} items.  Set "g:statusline_winid"
            when evaluationg %!. (closes #4406, closes #3299)
2019-05-23 22:11:59 +02:00
99499b1c05 patch 8.1.1371: cannot recover from a swap file
Problem:    Cannot recover from a swap file.
Solution:   Do not expand environment variables in the swap file name.
            Do not check the extension when we already know a file is a swap
            file.  (Ken Takata, closes 4415, closes #4369)
2019-05-23 21:35:48 +02:00
05b8b07e27 patch 8.1.1370: not using the new github feature for donations
Problem:    Not using the new github feature for donations.
Solution:   Add a Sponsor button. (closes #4417)
2019-05-23 20:42:10 +02:00
294d9bf966 patch 8.1.1369: get E484 when using system() during GUI startup
Problem:    Get E484 when using system() during GUI startup.
Solution:   Check "gui.starting". (Ken Takata)
2019-05-23 20:12:46 +02:00
e09244ee35 patch 8.1.1368: modeline test fails with python but without pythonhome
Problem:    Modeline test fails with python but without pythonhome.
Solution:   Correct test argument.
2019-05-23 17:35:55 +02:00
7e800c6047 patch 8.1.1367: can set 'modelineexpr' in modeline
Problem:    can set 'modelineexpr' in modeline.
Solution:   Add P_SECURE flag.
2019-05-23 17:08:49 +02:00
110289e781 patch 8.1.1366: using expressions in a modeline is unsafe
Problem:    Using expressions in a modeline is unsafe.
Solution:   Disallow using expressions in a modeline, unless the
            'modelineexpr' option is set.  Update help, add more tests.
2019-05-23 15:38:06 +02:00
5357552140 patch 8.1.1365: source command doesn't check for the sandbox
Problem:    Source command doesn't check for the sandbox. (Armin Razmjou)
Solution:   Check for the sandbox when sourcing a file.
2019-05-22 22:38:25 +02:00
5c017b2de2 patch 8.1.1364: design for popup window support needs more details
Problem:    Design for popup window support needs more details.
Solution:   Add details about using a window and buffer.  Rename popup_show()
            to popup_create() and add popup_show() and popup_hide().
2019-05-21 23:09:01 +02:00
e0b5949a3b patch 8.1.1363: ":vert options" does not make a vertical split
Problem:    ":vert options" does not make a vertical split.
Solution:   Pass the right modifiers in $OPTWIN_CMD. (Ken Takata,
            closes #4401)
2019-05-21 20:54:45 +02:00
c79745a82f patch 8.1.1362: code and data in tests can be hard to read
Problem:    Code and data in tests can be hard to read.
Solution:   Use the new heredoc style. (Yegappan Lakshmanan, closes #4400)
2019-05-20 22:12:34 +02:00
0b0ad35c33 patch 8.1.1361: Python setuptools don't work with Python 3
Problem:    Python setuptools don't work with Python 3.
Solution:   Add dummy implementation for find_module. (Joel Frederico,
            closes #4402, closes #3984
2019-05-20 21:52:45 +02:00
80341bcd89 patch 8.1.1360: buffer left 'nomodifiable' after :substitute
Problem:    Buffer left 'nomodifiable' after :substitute. (Ingo Karkat)
Solution:   Save the value of 'modifiable' earlier' (Christian Brabandt,
            closes #4403)
2019-05-20 20:34:51 +02:00
f3333b02f3 patch 8.1.1359: text property wrong after :substitute with backslash
Problem:    Text property wrong after :substitute with backslash.
Solution:   Adjust text property columns when removing backslashes.
            (closes #4397)
2019-05-19 22:53:40 +02:00
386b43e594 patch 8.1.1358: cannot enter character with a CSI byte
Problem:    Cannot enter character with a CSI byte.
Solution:   Only check "gui.in_use" when VIMDLL is defined. (Ken Takata,
            closes #4396)
2019-05-19 21:57:11 +02:00
999dc14644 patch 8.1.1357: test 37 is old style
Problem:    Test 37 is old style.
Solution:   Turn it into a new style test. (Yegappan Lakshmanan, closes #4398)
2019-05-19 21:44:08 +02:00
8471e57026 patch 8.1.1356: some text in heredoc assignment ends the text
Problem:    Some text in heredoc assignment ends the text. (Ozaki Kiichi)
Solution:   Recognize "let v =<<" and skip until the end.
2019-05-19 21:37:18 +02:00
16e9b85113 patch 8.1.1355: obvious mistakes are accepted as valid expressions
Problem:    Obvious mistakes are accepted as valid expressions.
Solution:   Be more strict about parsing numbers. (Yasuhiro Matsumoto,
            closes #3981)
2019-05-19 19:59:35 +02:00
f5842c5a53 patch 8.1.1354: getting a list of text lines is clumsy
Problem:    Getting a list of text lines is clumsy.
Solution:   Add the =<< assignment. (Yegappan Lakshmanan, closes #4386)
2019-05-19 18:41:26 +02:00
2b39d806f0 patch 8.1.1353: undo test fails on Mac
Problem:    Undo test fails on Mac.
Solution:   Expect "private" on the Mac.
2019-05-19 16:38:56 +02:00
e9ebc9a91c patch 8.1.1352: undofile() reports wrong name
Problem:    Undofile() reports wrong name. (Francisco Giordano)
Solution:   Clean up the name before changing path separators. (closes #4392,
            closes #4394)
2019-05-19 15:27:14 +02:00
338dfdad38 patch 8.1.1351: text property wrong after :substitute
Problem:    Text property wrong after :substitute.
Solution:   Save for undo before changing any text properties.
2019-05-19 15:19:57 +02:00
dc6855af97 patch 8.1.1350: "W" for wrapping not shown when more than 99 matches
Problem:    "W" for wrapping not shown when more than 99 matches.
Solution:   Adjust check for length. (Masato Nishihata, closes #4388)
2019-05-18 19:26:29 +02:00
cf0bfd9ade patch 8.1.1349: if writing runs into conversion error backup file is deleted
Problem:    If writing runs into a conversion error the backup file is
            deleted. (Arseny Nasokin)
Solution:   Don't delete the backup file is the file was overwritten and a
            conversion error occurred. (Christian Brabandt, closes #4387)
2019-05-18 18:52:04 +02:00
f8191c5f07 patch 8.1.1348: running tests may cause the window to move
Problem:    Running tests may cause the window to move.
Solution:   Correct the reported window position for the offset with the
            position after ":winpos".  Works around an xterm bug.
2019-05-18 17:22:54 +02:00
bd2d68c2f4 patch 8.1.1347: fractional scroll position not restored after closing window
Problem:    Fractional scroll position not restored after closing window.
Solution:   Do restore fraction if topline is not one.
2019-05-18 15:36:11 +02:00
7f3a28490a patch 8.1.1346: error for Python exception does not show useful info
Problem:    Error for Python exception does not show useful info.
Solution:   Show the last line instead of the first one. (Ben Jackson,
            closes #4381)
2019-05-18 15:02:25 +02:00
6349e9411f patch 8.1.1345: stuck in sandbox with ":s/../\=Function/gn"
Problem:    Stuck in sandbox with ":s/../\=Function/gn".
Solution:   Don't skip over code to restore sandbox. (Christian Brabandt)
2019-05-18 13:41:22 +02:00
0d3cb73012 patch 8.1.1344: Coverity complains about possibly using a NULL pointer
Problem:    Coverity complains about possibly using a NULL pointer and copying
            a string into a fixed size buffer.
Solution:   Check for NULL, even though it should not happen.  Use
            vim_strncpy() instead of strcpy().
2019-05-18 13:05:18 +02:00
8055d17388 patch 8.1.1343: text properties not adjusted for Visual block mode delete
Problem:    Text properties not adjusted for Visual block mode delete.
Solution:   Call adjust_prop_columns(). (closes #4384)
2019-05-17 22:57:26 +02:00
787880a86d patch 8.1.1342: using freed memory when joining line with text property
Problem:    Using freed memory when joining line with text property.
Solution:   Use already computed length.
2019-05-17 20:17:40 +02:00
80e737cc6a patch 8.1.1341: text properties are lost when joining lines
Problem:    Text properties are lost when joining lines.
Solution:   Move the text properties to the joined line.
2019-05-17 19:56:34 +02:00
bfd451283f patch 8.1.1340: attributes from 'cursorline' overwrite textprop
Problem:    Attributes from 'cursorline' overwrite textprop.
Solution:   Combine the attributes. (closes #3912)
2019-05-17 13:05:07 +02:00
dabfde04fe patch 8.1.1339: installer needs to product name et al.
Problem:    Installer needs to product name et al.
Solution:   Add a few lines to the NSIS installer script. (Christian Brabandt)
2019-05-17 12:37:27 +02:00
0ebe12be86 patch 8.1.1338: hang when concealing the '>' shown for half of wide char
Problem:    Hang when concealing the '>' shown for a wide char that doesn't
            fit in the last cell.
Solution:   Put back the pointer when the '>' is not going to be displayed.
            (closes #4377)
2019-05-17 12:31:44 +02:00
5c65e6a062 patch 8.1.1337: get empty text prop when splitting line just after text prop
Problem:    Get empty text prop when splitting line just after text prop.
Solution:   Do not create an empty text prop at the start of the line.
2019-05-17 11:08:56 +02:00
17aca707f9 patch 8.1.1336: some eval functionality is not covered by tests
Problem:    Some eval functionality is not covered by tests.
Solution:   Add a few more test cases. (Masato Nishihata, closes #4374)
2019-05-16 22:24:55 +02:00
dda4144d39 patch 8.1.1335: listener callback is called after inserting text
Problem:    Listener callback is called after inserting text.
Solution:   Flush the changes before inserting or deleting a line.  Store
            changes per buffer.
2019-05-16 22:11:47 +02:00
eda652215a patch 8.1.1334: when buffer is hidden "F" in 'shortmess' is not used
Problem:    When buffer is hidden "F" in 'shortmess' is not used.
Solution:   Check the "F" flag in 'shortmess' when the buffer is already
            loaded. (Jason Franklin)  Add test_getvalue() to be able to test
            this.
2019-05-16 20:29:44 +02:00
45dd07f10a patch 8.1.1333: text properties don't always move after changes
Problem:    Text properties don't always move after changes.
Solution:   Update properties before reporting changes to listeners. Move text
            property when splitting a line.
2019-05-15 22:45:37 +02:00
fe1ade0a78 patch 8.1.1332: cannot flush listeners without redrawing, mix of changes
Problem:    Cannot flush change listeners without also redrawing.  The line
            numbers in the list of changes may become invalid.
Solution:   Add listener_flush().  Invoke listeners before adding a change
            that makes line numbers invalid.
2019-05-14 21:20:36 +02:00
fb222df28d patch 8.1.1331: test 29 is old style
Problem:    Test 29 is old style.
Solution:   Turn it into a new style test. (Yegappan Lakshmanan, closes #4370)
2019-05-14 17:57:19 +02:00
9e58787de7 patch 8.1.1330: using bold attribute in terminal changes the color
Problem:    Using bold attribute in terminal changes the color. (Jason
            Franklin)
Solution:   Don't set the "bold-highbright" flag in vterm unless the terminal
            supports less than 16 colors.
2019-05-13 20:27:23 +02:00
957f85d54e patch 8.1.1329: plans for popup window support are spread out
Problem:    Plans for popup window support are spread out.
Solution:   Add a first version of the popup window help.
2019-05-12 21:43:48 +02:00
bc4fd43160 patch 8.1.1328: no test for listener with undo operation
Problem:    No test for listener with undo operation.
Solution:   Add a test.
2019-05-12 14:36:27 +02:00
a9b2535f44 patch 8.1.1327: unnecessary scroll after horizontal split
Problem:    Unnecessary scroll after horizontal split.
Solution:   Don't adjust to fraction if all the text fits in the window.
            (Martin Kunev, closes #4367)
2019-05-12 14:25:30 +02:00
8aad88d8de patch 8.1.1326: no test for listener with partial
Problem:    No test for listener with partial.
Solution:   Add a test.  Add example to help.
2019-05-12 13:53:50 +02:00
97b0075b0d patch 8.1.1325: cannot build with +eval but without +channel and +timers
Problem:    Cannot build with +eval but without +channel and +timers. (John
            Marriott)
Solution:   Adjust #ifdef for get_callback().
2019-05-12 13:07:14 +02:00
b73fbc76c6 patch 8.1.1324: stray comma in VMS makefile
Problem:    Stray comma in VMS makefile.
Solution:   Remove the comma. (Naruhiko Nishino, closes #4368)
2019-05-11 21:50:07 +02:00
5d0183b706 patch 8.1.1323: 'mouse' option is reset when using GPM mouse
Problem:    'mouse' option is reset when using GPM mouse.
Solution:   Add flag for GPM mouse.
2019-05-11 21:38:58 +02:00
6e75e0a400 patch 8.1.1322: Cygwin makefile is not nicely indented
Problem:    Cygwin makefile is not nicely indented.
Solution:   Addjust spaces in preprocessor directives. (Ken Takata)
2019-05-11 21:24:26 +02:00
a334772967 patch 8.1.1321: no docs or tests for listener functions
Problem:    No docs or tests for listener functions.
Solution:   Add help and tests for listener_add() and listener_remove().
            Invoke the callbacks before redrawing.
2019-05-11 21:14:24 +02:00
6d2399bd10 patch 8.1.1320: it is not possible to track changes to a buffer
Problem:    It is not possible to track changes to a buffer.
Solution:   Add listener_add() and listener_remove(). No docs or tests yet.
2019-05-11 19:14:16 +02:00
6ed8819822 patch 8.1.1319: computing function length name in many places
Problem:    Computing function length name in many places.
Solution:   compute name length in call_func().
2019-05-11 18:37:44 +02:00
ec28d1516e patch 8.1.1318: code for text changes is in a "misc" file
Problem:    Code for text changes is in a "misc" file.
Solution:   Move the code to change.c.
2019-05-11 18:36:34 +02:00
3f86ca0faa Add missing files from patch 8.1.1318 2019-05-11 18:30:00 +02:00
dc9f9e93f5 patch 8.1.1317: output from Travis can be improved
Problem:    Output from Travis can be improved.
Solution:   Add section headers.  Handle errors better. (closes #4098)
2019-05-11 14:34:13 +02:00
d6896731ec patch 8.1.1316: duplicated localtime() call
Problem:    Duplicated localtime() call.
Solution:   Delete one.
2019-05-11 13:09:42 +02:00
afd78266c5 patch 8.1.1315: there is always a delay if a termrequest is never answered
Problem:    There is always a delay if a termrequest is never answered.
Solution:   When the response is not received within two seconds consider the
            request to have failed.
2019-05-10 23:10:31 +02:00
c049b52b90 patch 8.1.1314: MSVC makefile is not nicely indented
Problem:    MSVC makefile is not nicely indented.
Solution:   Addjust spaces in preprocessor directives. (Ken Takata)
2019-05-10 21:38:54 +02:00
63d2555c9c patch 8.1.1313: warnings for using localtime() and ctime()
Problem:    Warnings for using localtime() and ctime().
Solution:   Use localtime_r() if available.  Avoid using ctime().
2019-05-10 21:28:38 +02:00
4ca41534b7 patch 8.1.1312: Coverity warning for using uninitialized variable
Problem:    Coverity warning for using uninitialized variable.
Solution:   Clear exarg_T.
2019-05-09 21:48:37 +02:00
23b5139234 patch 8.1.1311: aborting an autocmd with an exception is not tested
Problem:    Aborting an autocmd with an exception is not tested.
Solution:   Add a test.  Also shows how to abort a command by throwing an
            exception.
2019-05-09 21:38:43 +02:00
42ae78cfff patch 8.1.1310: named function arguments are never optional
Problem:    Named function arguments are never optional.
Solution:   Support optional function arguments with a default value. (Andy
            Massimino, closes #3952)
2019-05-09 21:08:58 +02:00
6b528fa062 patch 8.1.1309: test for Normal highlight fails on MS-Windows GUI
Problem:    Test for Normal highlight fails on MS-Windows GUI.
Solution:   Skip the test for MS-Windows GUI.
2019-05-09 20:07:33 +02:00
f90b6e03a9 patch 8.1.1308: the Normal highlight is not defined when compiled with GUI
Problem:    The Normal highlight is not defined when compiled with GUI.
Solution:   Always define Normal. (Christian Brabandt, closes #4072)
2019-05-09 19:26:38 +02:00
a6c27c47dd Update runtime files 2019-05-09 19:16:22 +02:00
d4aa83af1d patch 8.1.1307: cannot reconnect to the X server after it restarted
Problem:    Cannot reconnect to the X server after it restarted.
Solution:   Add the :xrestore command. (Adrian Kocis, closes #844)
2019-05-09 18:59:31 +02:00
eae1b91fea patch 8.1.1306: Borland support is outdated and doesn't work
Problem:    Borland support is outdated and doesn't work.
Solution:   Remove Borland support, there are other (free) compilers
            available. (Thomas Dziedzic, Ken Takata, closes #4364)
2019-05-09 15:12:55 +02:00
691ddeefb5 patch 8.1.1305: there is no easy way to manipulate environment variables
Problem:    There is no easy way to manipulate environment variables.
Solution:   Add environ(), getenv() and setenv(). (Yasuhiro Matsumoto,
            closes #2875)
2019-05-09 14:52:41 +02:00
68cbb14bae patch 8.1.1304: MS-Windows: compiler warning for unused value
Problem:    MS-Windows: compiler warning for unused value.
Solution:   Adjust #ifdefs. (Ken Takata, closes #4363)
2019-05-09 14:14:42 +02:00
be0a2597ae patch 8.1.1303: not possible to hide a balloon
Problem:    Not possible to hide a balloon.
Solution:   Hide the balloon when balloon_show() is called with an empty
            string or list.  Add balloon_gettext().
2019-05-09 13:50:16 +02:00
06bd824869 patch 8.1.1302: v:beval_text is not tested in Visual mode
Problem:    v:beval_text is not tested in Visual mode.
Solution:   Add a screenshot of the balloon in Visual mode.
2019-05-08 22:55:16 +02:00
0b75f7c97c patch 8.1.1301: when compiled with VIMDLL some messages are not shown
Problem:    When compiled with VIMDLL some messages are not shown.
Solution:   Set/reset gui.in_use and gui.starting as needed. (Ken Takata,
            closes #4361)
2019-05-08 22:28:46 +02:00
2f10658b06 patch 8.1.1300: in a terminal 'ballooneval' does not work right away
Problem:    In a terminal 'ballooneval' does not work right away.
Solution:   Flush output after drawing the balloon.  Add the <Ignore> key
            code.  Add a test.
2019-05-08 21:59:25 +02:00
a5c6a0b6c7 patch 8.1.1299: "extends" from 'listchars' is used when 'list' is off
Problem:    "extends" from 'listchars' is used when 'list' is off. (Hiroyuki
            Yoshinaga)
Solution:   Only use the "extends" character when 'list' is on. (Hirohito
            Higashi, closes #4360)
2019-05-08 20:20:46 +02:00
5416b75031 patch 8.1.1298: invalid argument test fails without X clipboard
Problem:    Invalid argument test fails without X clipboard.
Solution:   Test -display only with the +xterm_clipboard feature.
2019-05-08 18:36:43 +02:00
240f7abab0 patch 8.1.1297: invalid argument test fails without GTK
Problem:    Invalid argument test fails without GTK.
Solution:   Test -display and --display separately.
2019-05-08 17:58:15 +02:00
27821260c0 patch 8.1.1296: crash when using invalid command line argument
Problem:    Crash when using invalid command line argument.
Solution:   Check for options not being initialized.
2019-05-08 16:41:09 +02:00
98ffe4c6d8 patch 8.1.1295: when vimrun.exe does not exist external command may fail
Problem:    When vimrun.exe does not exist external command may fail.
Solution:   Use "cmd /c" twice to get the same behavior. (Ken Takata,
            closes #4355)
2019-05-07 23:01:39 +02:00
93d77b2cbe patch 8.1.1294: MS-Windows: Some fonts return wrong average char width
Problem:    MS-Windows: Some fonts return wrong average char width.
Solution:   Compute the average ourselves. (Ken Takata, closes #4356)
2019-05-07 22:52:50 +02:00
fda9784dc9 patch 8.1.1293: MSVC files are no longer useful
Problem:    MSVC files are no longer useful for debugging.  Newer Visual
            Studio versions cannot read them.
Solution:   Delete the files. (Ken Takata, closes #4357)
2019-05-07 22:25:27 +02:00
ba9ea91beb patch 8.1.1292: invalid command line arguments not tested
Problem:    Invalid command line arguments not tested.
Solution:   Add a test. (Dominique Pelle, closes #4346)
2019-05-07 22:10:50 +02:00
1063f3d200 patch 8.1.1291: not easy to change directory and restore
Problem:    Not easy to change directory and restore.
Solution:   Add the chdir() function. (Yegappan Lakshmanan, closes #4358)
2019-05-07 22:06:52 +02:00
fd31e45e4b patch 8.1.1290: .hgignore and .gitignore are either distributed or in git
Problem:    .hgignore and .gitignore are either distributed or in git, not
            both.
Solution:   Add .gitignore to the distribution and .hgignore to git.  Update
            the entries. (Christian Brabandt, Ken Takata)
2019-05-07 21:48:51 +02:00
b6cb26ffe1 patch 8.1.1289: may not have enough space to add "W" to search stats
Problem:    May not have enough space to add "W" to search stats.
Solution:   Reserve a bit more space. (Christian Brabandt)
2019-05-07 21:34:37 +02:00
9ce3fa828d patch 8.1.1288: search stats don't show for mapped command
Problem:    Search stats don't show for mapped command.
Solution:   Remove SEARCH_PEEK from searchit flags.  Add a test. (Christian
            Brabandt)
2019-05-07 21:29:11 +02:00
7e1a5af540 patch 8.1.1287: cannot build with +eval but without +mouse
Problem:    Cannot build with +eval but without +mouse.
Solution:   Add #ifdefs around f_test_setmouse(). (John Marriott)
2019-05-07 16:28:13 +02:00
4fa06870e5 patch 8.1.1286: running tests leaves XTest_tabpage_cmdheight file behind
Problem:    Running tests leaves XTest_tabpage_cmdheight file behind.
Solution:   Delete the right file. (closes #4350)
2019-05-06 22:03:39 +02:00
f0ab01f6d8 patch 8.1.1285: test17 is old style
Problem:    Test17 is old style.
Solution:   Turn into new style test. (Yegappan Lakshmanan, closes #4347)
2019-05-06 22:00:00 +02:00
d136221129 patch 8.1.1284: detecting *.tmpl as htmlcheetah is outdated
Problem:    Detecting *.tmpl as htmlcheetah is outdated.
Solution:   Use the generic name "template". (closes #4348)
2019-05-06 21:46:10 +02:00
c7a10b35de patch 8.1.1283: delaying half a second after the top-bot message
Problem:    Delaying half a second after the top-bot message.
Solution:   Instead of the delay add "W" to the search count.
2019-05-06 21:37:18 +02:00
91882cf712 patch 8.1.1282: running make in src/po leaves LINGUAS file behind
Problem:    Running make in src/po leaves LINGUAS file behind. (Ken Takata)
Solution:   Delete LINGUAS after running msgfmt.
2019-05-05 21:01:51 +02:00
8ffc7c8b5f patch 8.1.1281: cannot specify a count with :chistory
Problem:    Cannot specify a count with :chistory.
Solution:   Add a count to :chistory and :lhistory. (Yegappan Lakshmanan,
            closes #4344)
2019-05-05 21:00:26 +02:00
25c9c680ec patch 8.1.1280: remarks about functionality not in Vi clutters the help
Problem:    Remarks about functionality not in Vi clutters the help.
Solution:   Move all info about what is new in Vim or already existed in Vi to
            vi_diff.txt.  Remove {not in Vi} remarks. (closes #4268) Add
            "noet" to the help files modeline.  Also include many other help
            file improvements.
2019-05-05 18:13:34 +02:00
9a061cb78c patch 8.1.1279: cannot set 'spellang' to "sr@latin"
Problem:    Cannot set 'spellang' to "sr@latin". (Bojan Stipic)
Solution:   Allow using '@' in 'spellang'. (closes #4342)
2019-05-05 16:55:03 +02:00
58187f1c8a patch 8.1.1278: missing change for "combine" field
Problem:    Missing change for "combine" field.
Solution:   Also change the textprop implementation.
2019-05-05 16:33:47 +02:00
8fc0271e9a patch 8.1.1277: missing screenshot update
Problem:    Missing screenshot update.
Solution:   Update the screenshot.
2019-05-05 16:10:32 +02:00
de24a87013 patch 8.1.1276: cannot combine text properties with syntax highlighting
Problem:    Cannot combine text properties with syntax highlighting.
Solution:   Add the "combine" field to prop_type_add(). (closes #4343)
2019-05-05 15:48:00 +02:00
cf6a55c4b0 patch 8.1.1275: cannot navigate to errors before/after the cursor
Problem:    Cannot navigate to errors before/after the cursor.
Solution:   Add the :cbefore and :cafter commands. (Yegappan Lakshmanan,
            closes #4340)
2019-05-05 15:02:30 +02:00
ce79353ace patch 8.1.1274: after :unmenu can still execute the menu with :emenu
Problem:    After :unmenu can still execute the menu with :emenu.
Solution:   Do not execute a menu that was disabled for the specified mode.
2019-05-05 14:19:20 +02:00
f653a6bcff patch 8.1.1273: compiler warning in direct write code
Problem:    Compiler warning in direct write code.
Solution:   Add a type cast.
2019-05-05 13:20:02 +02:00
711f02da65 patch 8.1.1272: click on WinBar of other window not tested
Problem:    Click on WinBar of other window not tested.
Solution:   Add a test case.
2019-05-05 13:14:28 +02:00
b3de6c4a76 patch 8.1.1271: compiler warnings for use of STRNCPY()
Problem:    Compiler warnings for use of STRNCPY(). (John Marriott)
Solution:   Use mch_memmove() instead of STRNCPY().
2019-05-05 13:02:28 +02:00
9dfa313919 patch 8.1.1270: cannot see current match position
Problem:    Cannot see current match position.
Solution:   Show "3/44" when using the "n" command and "S" is not in
            'shortmess'. (Christian Brabandt, closes #4317)
2019-05-04 21:08:40 +02:00
ed5ab2a959 patch 8.1.1269: MS-Windows GUI: multibyte chars with a 0x80 byte do not work
Problem:    MS-Windows GUI: multibyte chars with a 0x80 byte do not work when
            compiled with VIMDLL.
Solution:   Adjust the condition for fixing the input buffer. (Ken Takata,
            closes #4330)
2019-05-04 20:00:00 +02:00
510671a055 patch 8.1.1268: map completion test fails in GUI
Problem:    Map completion test fails in GUI.
Solution:   Skip the test that fails.
2019-05-04 19:26:56 +02:00
4b8366b56e patch 8.1.1267: cannot check if GPM mouse support is working
Problem:    Cannot check if GPM mouse support is working.
Solution:   Add the "mouse_gpm_enable" feature.
2019-05-04 17:34:34 +02:00
8caef443b2 patch 8.1.1266: winbar test doesn't test enough
Problem:    Winbar test doesn't test enough.
Solution:   Check that the WinBar actually shows up.  Correct check for clicks
            with no effect. (Ben Jackson, closes #4338)
2019-05-04 17:30:04 +02:00
bedf091a95 patch 8.1.1265: when GPM mouse support is enabled double clicks do not work
Problem:    When GPM mouse support is enabled double clicks in xterm do not
            work.
Solution:   Use KS_GPM_MOUSE for GPM mouse events.
2019-05-04 16:58:45 +02:00
d2fad67e3e patch 8.1.1264: crash when closing window from WinBar click
Problem:    Crash when closing window from WinBar click. (Ben Jackson)
Solution:   Check that window pointer is still valid. (closes #4337)
2019-05-04 16:55:25 +02:00
66f8311152 patch 8.1.1263: mouse clicks in WinBar not tested
Problem:    Mouse clicks in WinBar not tested.
Solution:   Add a test for clicking on the WinBar entries.
2019-05-04 16:06:12 +02:00
bb8476be87 patch 8.1.1262: cannot simulate a mouse click in a test
Problem:    Cannot simulate a mouse click in a test.
Solution:   Add test_setmouse().
2019-05-04 15:47:48 +02:00
25190db225 patch 8.1.1261: no error for quickfix commands with negative range
Problem:    No error for quickfix commands with negative range.
Solution:   Add ADDR_UNSIGNED and use it for quickfix commands.  Make
            assert_fails() show the command if the error doesn't match.
2019-05-04 15:05:28 +02:00
e4f5f3aa3d patch 8.1.1260: comparing with pointer instead of value
Problem:    Comparing with pointer instead of value.
Solution:   Add a "*". (Ken Takata, closes #4336)
2019-05-04 14:05:08 +02:00
e5c83286bb patch 8.1.1259: crash when exiting early
Problem:    Crash when exiting early. (Ralf Schandl)
Solution:   Only pop/push the title when it was set. (closes #4334)
2019-05-03 23:15:37 +02:00
9404a18ad9 patch 8.1.1258: the "N files to edit" message can not be surpressed
Problem:    The "N files to edit" message can not be surpressed.
Solution:   Surpress the message with --not-a-term. (closes #4320)
2019-05-03 22:25:40 +02:00
819d3e52a1 patch 8.1.1257: MSVC: name of object directory now always right
Problem:    MSVC: name of object directory now always right.
Solution:   Adjust comment.  Don't use different directory for DIRECTX.  Do
            use different directory for USE_MSVCRT. (Ken Takata, closes #4333)
2019-05-03 22:15:03 +02:00
3ff33114d7 patch 8.1.1256: cannot navigate through errors relative to the cursor
Problem:    Cannot navigate through errors relative to the cursor.
Solution:   Add :cabove, :cbelow, :labove and :lbelow. (Yegappan Lakshmanan,
            closes #4316)
2019-05-03 21:56:35 +02:00
12e91862c1 patch 8.1.1255: building desktop files fails on FreeBSD
Problem:    Building desktop files fails on FreeBSD. (Adam Weinberger)
Solution:   Avoid using non-portable construct in Makefile. (closes #4332)
2019-05-03 21:20:03 +02:00
61df0c7996 patch 8.1.1254: mapping completion contains dead code
Problem:    Mapping completion contains dead code.
Solution:   Remove the code.
2019-05-03 21:10:36 +02:00
92b9e60cb5 patch 8.1.1253: mapping completion test fails
Problem:    Mapping completion test fails.
Solution:   Fix expected output.
2019-05-03 16:49:25 +02:00
1776a28e9c patch 8.1.1252: not all mapping completion is tested
Problem:    Not all mapping completion is tested.
Solution:   Add a few more mapping completion tests.
2019-05-03 16:05:41 +02:00
2cb9f02532 patch 8.1.1251: no test for completion of mapping keys
Problem:    No test for completion of mapping keys.
Solution:   Add a test.  Also clean up the code.
2019-05-03 15:13:57 +02:00
d788543ac6 patch 8.1.1250: no test for netterm mouse
Problem:    No test for netterm mouse.
Solution:   Add some tests for netterm mouse.
2019-05-03 13:44:10 +02:00
c6b1cc967f patch 8.1.1249: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize it. (Christian Brabandt)
2019-05-03 11:21:05 +02:00
92fd599e0d patch 8.1.1248: no test for dec mouse
Problem:    No test for dec mouse.
Solution:   Add some tests for dec mouse.  Add "no_query_mouse".
2019-05-02 23:00:22 +02:00
d0621d85a6 patch 8.1.1247: urxvt mouse codes are not tested
Problem:    Urxvt mouse codes are not tested.
Solution:   Also set 'ttymouse' to "urxvt" in the termcodes test.
2019-05-02 21:12:19 +02:00
bb7e1b4ba8 patch 8.1.1246: cannot handle negative mouse coordinate from urxvt
Problem:    Cannot handle negative mouse coordinate from urxvt.
Solution:   Accept '-' where a digit is expected. (Vincent Vinel,
            closes #4326)
2019-05-02 20:24:12 +02:00
36d502225c patch 8.1.1245: ":copen 10" sets height in full-height window
Problem:    ":copen 10" sets height in full-height window. (Daniel Hahler)
Solution:   Don't set the height if the quickfix window is full height.
            (closes #4325)
2019-05-02 20:17:40 +02:00
1ee36d6ff5 patch 8.1.1244: no tests for CTRL-mouse-click
Problem:    No tests for CTRL-mouse-click.
Solution:   Add a few tests. (Dominique Pelle, closes #4323)
2019-05-01 23:13:56 +02:00
26f0cb145a patch 8.1.1243: compiler warnings for incomplete switch statement
Problem:    Compiler warnings for incomplete switch statement. (Tony
            Mechelynck)
Solution:   Add ADDR_QUICKFIX to the list.
2019-05-01 21:43:42 +02:00
0fef0aeb1c patch 8.1.1242: no cmdline redraw when tabpages have different 'cmdheight'
Problem:    No cmdline redraw when tabpages have different 'cmdheight'.
Solution:   redraw the command line when 'cmdheight' changes when switching
            tabpages. (closes #4321)
2019-05-01 20:30:40 +02:00
b731689e85 patch 8.1.1241: Ex command info contains confusing information
Problem:    Ex command info contains confusing information.
Solution:   When using the NOTADR flag use ADDR_OTHER for the address type.
            Cleanup code using NOTADR.  Check for errors in
            create_cmdidxs.vim.  Adjust Makefile to see the errors.
2019-05-01 18:08:42 +02:00
d96dbd6f95 patch 8.1.1240: runtime desktop files are overwritten by build
Problem:    Runtime desktop files are overwritten by build. (Tony Mechelynck)
Solution:   Instead of copying the files find them with "make install".
2019-04-30 21:27:34 +02:00
a9dd2d3c75 patch 8.1.1239: key with byte sequence containing CSI does not work
Problem:    Key with byte sequence containing CSI does not work.
Solution:   Do not recognize CSI as special unless the GUI is active. (Ken
            Takata, closes #4318)
2019-04-29 21:58:41 +02:00
a0e67fc166 patch 8.1.1238: MS-Windows: compiler warning for sprintf() format
Problem:    MS-Windows: compiler warning for sprintf() format.
Solution:   Change %d to %ld. (Ken Takata)
2019-04-29 21:46:26 +02:00
52111f8231 patch 8.1.1237: error for using "compl", reserved word in C++
Problem:    Error for using "compl", reserved word in C++.
Solution:   Rename to "complp". (suggestion by Ken Takata)
2019-04-29 21:30:45 +02:00
fe368edcc0 patch 8.1.1236: sjiscorr.c not found in shadow directory
Problem:    sjiscorr.c not found in shadow directory. (Tony Mechelynck)
Solution:   Link po/*.c files with "make shadow".
2019-04-29 20:30:54 +02:00
602abeb20f Update .gitignore 2019-04-29 20:26:05 +02:00
c0af78fa08 patch 8.1.1235: compiler warnings for using STRLEN() value
Problem:    Compiler warnings for using STRLEN() value.
Solution:   Cast to int. (Christian Brabandt, Mike Williams)
2019-04-29 19:47:22 +02:00
701df4eb64 patch 8.1.1234: swap file test fails on MS-Windows
Problem:    Swap file test fails on MS-Windows.
Solution:   Only compare the tail of the file names.
2019-04-28 23:07:18 +02:00
c779c674ac patch 8.1.1233: cannot build tiny version
Problem:    Cannot build tiny version.
Solution:   Remove #ifdef for verb_msg().
2019-04-28 22:53:41 +02:00
1b243eafb0 patch 8.1.1232: can't build on MS-Windows
Problem:    Can't build on MS-Windows.
Solution:   Define process_still_running.
2019-04-28 22:50:40 +02:00
67cf86bfff patch 8.1.1231: asking about existing swap file unnecessarily
Problem:    Asking about existing swap file unnecessarily.
Solution:   When it is safe, delete the swap file.  Remove
            HAS_SWAP_EXISTS_ACTION, it is always defined. (closes #1237)
2019-04-28 22:25:38 +02:00
afde13b62b patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Problem:    A lot of code is shared between vim.exe and gvim.exe.
Solution:   Optionally put the shared code in vim.dll. (Ken Takata,
            closes #4287)
2019-04-28 19:46:49 +02:00
ab4cece605 patch 8.1.1229: warning for posix_openpt() not declared
Problem:    Warning for posix_openpt() not declared. (Tony Mechelynck)
Solution:   Add declaration.
2019-04-28 18:40:03 +02:00
45e18cbdc4 patch 8.1.1228: not possible to process tags with a function
Problem:    Not possible to process tags with a function.
Solution:   Add tagfunc() (Christian Brabandt, Andy Massimino, closes #4010)
2019-04-28 18:05:35 +02:00
7a9df9dd00 patch 8.1.1227: duplicate entries in the generate .desktop files
Problem:    Duplicate entries in the generate .desktop files. (Ralf Schandl)
Solution:   Remove translated entries from the .in files. (closes #4313)
2019-04-28 16:08:30 +02:00
6c60f47fb9 patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Problem:    {not in Vi} remarks get in the way of useful help text.
Solution:   Make a list of all Vi options, instead of mentioning what Vi does
            not have.  Update the help text for options.
2019-04-28 16:00:35 +02:00
1e44968780 patch 8.1.1225: cannot create a pty to use with :terminal on FreeBSD
Problem:    Cannot create a pty to use with :terminal on FreeBSD.
Solution:   Add support for posix_openpt(). (Ozaki Kiichi, closes #4306,
            closes #4289)
2019-04-28 14:59:59 +02:00
f720d0a77e patch 8.1.1224: MS-Windows: cannot specify font weight
Problem:    MS-Windows: cannot specify font weight.
Solution:   Add the "W" option to 'guifont'. (closes #4309)  Move GUI font
            explanation out of options.txt.
2019-04-28 14:02:47 +02:00
564344ace9 patch 8.1.1223: middle mouse click test fails without a clipboard
Problem:    Middle mouse click test fails without a clipboard.
Solution:   Check if the clipboard can be used. (Dominique Pelle, Christian
            Brabandt)  Also use WorkingClipboard() instead of checking for the
            "clipboard" feature.
2019-04-28 13:00:12 +02:00
dcaa54dded patch 8.1.1222: build still fails on MS-Windows
Problem:    Build still fails on MS-Windows.
Solution:   Move another declaration to start of block.
2019-04-27 22:45:00 +02:00
ad6dc49a75 patch 8.1.1221: filtering does not work when listing marks
Problem:    Filtering does not work when listing marks.
Solution:   Implement filtering marks. (Marcin Szamotulski, closes #3895)
2019-04-27 22:40:08 +02:00
0ee1bdff7d patch 8.1.1220: build fails on MS-Windows
Problem:    Build fails on MS-Windows.
Solution:   Move declaration to start of block.
2019-04-27 22:38:30 +02:00
6ee9658774 patch 8.1.1219: not checking for NULL return from alloc()
Problem:    Not checking for NULL return from alloc().
Solution:   Add checks. (Martin Kunev, closes #4303, closes #4174)
2019-04-27 22:06:37 +02:00
00aa069db8 patch 8.1.1218: cannot set a directory for a tab page
Problem:    Cannot set a directory for a tab page.
Solution:   Add the tab-local directory. (Yegappan Lakshmanan, closes #4212)
2019-04-27 20:37:57 +02:00
2155a6abaa patch 8.1.1217: MS-Windows: no space reserved for font quality name
Problem:    MS-Windows: no space reserved for font quality name.
Solution:   Add quality_name length if present. (Ken Takata, closes #4311)
2019-04-27 19:15:45 +02:00
c1b8160b44 patch 8.1.1216: mouse middle click is not tested
Problem:    Mouse middle click is not tested.
Solution:   Add a test. (Dominique Pelle, closes #4310)
2019-04-27 19:11:35 +02:00
49543fbced patch 8.1.1215: "make clean" does not remove generated src/po files
Problem:    "make clean" does not remove generated src/po files.
Solution:   Remove the files for "make clean". (Christian Brabandt)
2019-04-27 18:32:31 +02:00
c6b37db1ba patch 8.1.1214: old style tests
Problem:    Old style tests.
Solution:   Move tests from test14 to new style test files. (Yegappan
            Lakshmanan, closes #4308)
2019-04-27 18:00:34 +02:00
e13a3901ca patch 8.1.1213: "make clean" in top dir does not cleanup indent test output
Problem:    "make clean" in top dir does not cleanup indent test output.
Solution:   Clean the indent test output.  Do not rely on the vim executable
            for that. (closes #4307)
2019-04-27 17:57:31 +02:00
520e245237 patch 8.1.1212: signal PWR is not tested
Problem:    Signal PWR is not tested.
Solution:   Test that PWR updates the swap file. (Dominique Pelle,
            closes #4312)
2019-04-27 17:32:40 +02:00
e61e548dd6 patch 8.1.1211: not all user command code is tested
Problem:    Not all user command code is tested.
Solution:   Add more tests.
2019-04-27 15:05:12 +02:00
ac9fb18020 patch 8.1.1210: support for user commands is spread out
Problem:    Support for user commands is spread out. No good reason to make
            user commands optional.
Solution:   Move user command support to usercmd.c.  Always enable the
            user_commands feature.
2019-04-27 13:04:13 +02:00
5431589d25 patch 8.1.1209: clever compiler warns for buffer being too small
Problem:    Clever compiler warns for buffer being too small.
Solution:   Make the buffer bigger (even though it's not really needed).
2019-04-26 22:33:49 +02:00
c8cc0ad477 patch 8.1.1208: links to repository use wrong file name
Problem:    Links to repository use wrong file name.
Solution:   Swap the file names. (Nahuel Ourthe, closes #4304)
2019-04-26 21:31:38 +02:00
1f3601e92e patch 8.1.1207: some compilers give warning messages
Problem:    Some compilers give warning messages.
Solution:   Initialize variables, change printf() argument. (Christian
            Brabandt, closes #4305)
2019-04-26 20:33:00 +02:00
d1f90bbcab patch 8.1.1206: user command parsing and listing not properly tested
Problem:    User command parsing and listing not properly tested.
Solution:   Add more tests. (Dominique Pelle, closes #4296)
2019-04-25 22:42:07 +02:00
a68e595909 patch 8.1.1205: a BufReadPre autocommand may cause the cursor to move
Problem:    A BufReadPre autocommand may cause the cursor to move.
Solution:   Restore the cursor position after executing the autocommand,
            unless the autocommand moved it. (Christian Brabandt,
            closes #4302, closes #4294)
2019-04-25 22:22:01 +02:00
a561a41a70 patch 8.1.1204: output of :command with address completion is not nice
Problem:    Output of :command with address completion is not nice.
Solution:   Shorten the address completion names.
2019-04-25 21:27:58 +02:00
69ea587289 patch 8.1.1203: some autocmd tests are old style
Problem:    Some autocmd tests are old style.
Solution:   Turn the tests into new style. (Yegappan Lakshmanan, closes #4295)
2019-04-25 20:29:00 +02:00
c2d09c9f2c patch 8.1.1202: always get regexp debugging logs when building with -DDEBUG
Problem:    Always get regexp debugging logs when building with -DDEBUG.
Solution:   By default do not create regexp debugging logs. (Ken Takata)
2019-04-25 20:07:51 +02:00
725310d89e patch 8.1.1201: output of :command is hard to read
Problem:    Output of :command is hard to read.
Solution:   Make some columns wider, some narrower.  Truncate the command when
            listing all.
2019-04-24 23:08:23 +02:00
31fc39e47b patch 8.1.1200: old style comments in debugger source
Problem:    Old style comments in debugger source.
Solution:   Use new style comments. (Yegappan Lakshmanan, closes #4286)
2019-04-23 18:39:49 +02:00
8485be4e49 patch 8.1.1199: no test for :abclear
Problem:    No test for :abclear.
Solution:   Add a test. (Dominique Pelle, closes #4292)
2019-04-23 16:36:05 +02:00
958eabe5e5 patch 8.1.1198: bracketed paste may remain active after Vim exists
Problem:    Bracketed paste may remain active after Vim exists, because the
            terminal emulater restores the setting.
Solution:   Set/reset bracketed paste mode before setting the terminal mode.
            (closes #3579)
2019-04-21 17:22:33 +02:00
c75e812623 patch 8.1.1197: when starting with multiple tabs file messages is confusing
Problem:    When starting with multiple tabs file messages is confusing.
Solution:   Set 'shortmess' when loading the other tabs. (Christian Brabandt)
2019-04-21 15:55:10 +02:00
7bde95a461 patch 8.1.1196: parallel build may fail
Problem:    Parallel build may fail.
Solution:   Update dependencies.
2019-04-21 15:22:39 +02:00
eead75c5e8 patch 8.1.1195: Vim script debugger functionality needs cleanup
Problem:    Vim script debugger functionality needs cleanup.
Solution:   Move debugger code to a separate file.  Add more tests. (Yegappan
            Lakshmanan, closes #4285)
2019-04-21 11:35:00 +02:00
911ead1269 Update runtime files 2019-04-21 00:03:35 +02:00
ad3ec76bb8 patch 8.1.1194: typos and small problems in source files
Problem:    Typos and small problems in source files.
Solution:   Small fixes.
2019-04-21 00:00:13 +02:00
037c54f261 patch 8.1.1193: typos and small problems in test files
Problem:    Typos and small problems in test files.
Solution:   Small improvements.
2019-04-20 23:47:46 +02:00
4c25bd785a patch 8.1.1192: mode is not cleared when leaving Insert mode with mapped Esc
Problem:    Mode is not cleared when leaving Insert mode with mapped Esc.
Solution:   Clear the mode when redraw_cmdline is set. (closes #4269)
2019-04-20 23:38:07 +02:00
0fdd943595 patch 8.1.1191: not all debug commands are covered by a test
Problem:    Not all debug commands are covered by a test.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #4282)
2019-04-20 22:28:48 +02:00
93a4879c20 patch 8.1.1190: has('vimscript-3') does not work
Problem:    has('vimscript-3') does not work.
Solution:   Add "vimscript-3" to the list of features.
2019-04-20 21:54:28 +02:00
abc7c7fc5a patch 8.1.1189: mode is not cleared when leaving Insert mode
Problem:    Mode is not cleared when leaving Insert mode.
Solution:   Clear the mode when got_int is set. (Ozaki Kiichi, closes #4270)
2019-04-20 15:10:13 +02:00
d2e716e6df patch 8.1.1188: not all Vim variables require the v: prefix
Problem:    Not all Vim variables require the v: prefix.
Solution:   When scriptversion is 3 all Vim variables can only be used with
            the v: prefix.  (Ken Takata, closes #4274)
2019-04-20 14:39:52 +02:00
3a4c53ba51 patch 8.1.1187: cannot recognize Pipfile
Problem:    Cannot recognize Pipfile.
Solution:   Use existing filetypes. (Charles Ross, closes #4280)
2019-04-19 23:33:14 +02:00
334ad41504 patch 8.1.1186: readdir() allocates list twice
Problem:    readdir() allocates list twice.
Solution:   Remove second allocation.  Also check for zero length.
2019-04-19 15:20:46 +02:00
86ec6d7e1e patch 8.1.1185: mapping for CTRL-X is inconsistent
Problem:    Mapping for CTRL-X is inconsistent.
Solution:   Map CTRL-X to "*d also for the MS-Windows console. (Ken Takata,
            closes #4265)
2019-04-18 21:09:02 +02:00
137c14bb4f patch 8.1.1184: undo file left behind after running test
Problem:    Undo file left behind after running test.
Solution:   Delete the undo file. (Dominique Pelle, closes #4279)
2019-04-18 20:30:55 +02:00
b49e3563b9 patch 8.1.1183: typos in VisVim comments
Problem:    Typos in VisVim comments.
Solution:   Correct the typos. (Christ van Willegen)
2019-04-17 18:31:18 +02:00
b9cdb37176 patch 8.1.1182: some function prototypes are outdated
Problem:    Some function prototypes are outdated.
Solution:   Update function prototypes. (Ken Takata, closes #4267)
2019-04-17 18:24:35 +02:00
2b00b9b0f3 patch 8.1.1181: tests for mouse clicks are a bit flaky
Problem:    Tests for mouse clicks are a bit flaky when run in an interactive
            terminal.
Solution:   Use "xterm2" instead of "xterm" for 'ttymouse' to avoid spurious
            drag events.
2019-04-17 17:08:27 +02:00
113bf0672b patch 8.1.1180: Vim script debugger tests are old style
Problem:    Vim script debugger tests are old style.
Solution:   Turn into new style tests. (Yegappan Lakshmanan, closes #4259)
2019-04-17 16:54:05 +02:00
696d637728 patch 8.1.1179: no test for mouse clicks in the fold column
Problem:    No test for mouse clicks in the fold column.
Solution:   Add a test. (Dominique Pelle, closes #4261)
2019-04-17 16:33:46 +02:00
4945219b99 patch 8.1.1178: when mouse click tests fails value of 'ttytype' is unknown
Problem:    When mouse click tests fails value of 'ttytype' is unknown.
Solution:   Add a message to the assert.
2019-04-17 16:27:02 +02:00
1a4dce7cad patch 8.1.1177: .ts files are recognized as xml, typescript is more common
Problem:    .ts files are recognized as xml, while typescript is more common.
Solution:   Recognize .ts files as typescript. (closes #4264)
2019-04-16 22:21:05 +02:00
7f27976589 patch 8.1.1176: test for dragging a tab is flaky
Problem:    Test for dragging a tab is flaky.
Solution:   Add a brief sleep.
2019-04-15 21:48:22 +02:00
e3e3828f93 patch 8.1.1175: no test for dragging a tab and double click for new tab
Problem:    No test for dragging a tab with the mouse and for creating a new
            tab by double clicking in the tabline.
Solution:   Add two tests. (Dominique Pelle, closes #4258)
2019-04-15 20:55:31 +02:00
8dc4c72923 patch 8.1.1174: cannot build with Ruby 1.8
Problem:    Cannot build with Ruby 1.8. (Tom G. Christensen)
Solution:   Include ruby/st.h. (Ozaki Kiichi, closes #4257)
2019-04-14 19:42:13 +02:00
a8356bc173 patch 8.1.1173: suspend test has duplicated lines
Problem:    Suspend test has duplicated lines.
Solution:   Use a function.
2019-04-14 14:31:11 +02:00
74e3d4ec11 patch 8.1.1172: cursor properties were not fully tested
Problem:    Cursor properties were not fully tested.
Solution:   Add a test. (Dominique Pelle, closes #4256)
2019-04-14 14:16:46 +02:00
316c16797a patch 8.1.1171: statusline test could fail in large terminal
Problem:    Statusline test could fail in large terminal.
Solution:   Make the test work on a huge terminal. (Dominique Pelle,
            closes #4255)
2019-04-14 13:23:40 +02:00
a0aaf3c4df patch 8.1.1170: terminal ANSI color test does not cover all colors
Problem:    Terminal ANSI color test does not cover all colors.
Solution:   Use the color number, the name is not always resulting in an ANSI
            color when t_Co is 256.
2019-04-13 23:18:21 +02:00
837854d1bc patch 8.1.1169: writing coverage info in a separate dir is not needed
Problem:    Writing coverage info in a separate dir is not needed.
Solution:   Revert the changes to use a separate directory.
2019-04-13 22:44:51 +02:00
87dcfd75c2 patch 8.1.1168: not all screen update code of terminal is executed in tests
Problem:    Not all screen update code of the terminal window is executed in
            tests.
Solution:   Redraw before taking a screenshot.
2019-04-13 22:35:29 +02:00
39f76c6ac0 patch 8.1.1167: no test for closing tab by click in tabline
Problem:    No test for closing tab by click in tabline.
Solution:   Add a test.  Also fix that dragging window separator could fail in
            a large terminal. (Dominique Pelle, closes #4253)
2019-04-13 22:13:23 +02:00
9c35d05f45 patch 8.1.1166: gettitle test can still fail when another Vim is running
Problem:    Gettitle test can still fail when another Vim is running.
Solution:   Accept any server name number. (Dominique Pelle, closes #4252)
2019-04-13 20:39:15 +02:00
ca57ab54d7 patch 8.1.1165: no test for mouse clicks in the terminal tabpage line
Problem:    No test for mouse clicks in the terminal tabpage line.
Solution:   Add a test. (Dominique Pelle, closes #4247).  Also init
            TabPageIdxs[], in case it's used before a redraw.
2019-04-13 14:53:16 +02:00
700dfaa86a patch 8.1.1164: gettitle test is failing when server name differs
Problem:    Gettitle test is failing when server name differs. (Kenta Sato)
Solution:   Accept "VIM1" when 'autoservername' is used. (Dominique Pelle,
            closes #4250, closes #4249)
2019-04-13 14:21:19 +02:00
5d48e0d99a patch 8.1.1163: codecov does not report all the coverage information
Problem:    Codecov does not report all the coverage information.
Solution:   Make a second run with the nested execution output, expect that
            Codecov will merge the results.
2019-04-13 13:44:31 +02:00
f587ef345e patch 8.1.1162: incorrect coverage information; typo in color name
Problem:    Incorrect coverage information; typo in color name.
Solution:   Fix the typo.  Set environment variables to have a nested Vim
            write the coverage info in another directory.
2019-04-13 13:13:54 +02:00
1d79ce81e7 patch 8.1.1161: unreachable code
Problem:    Unreachable code.
Solution:   Remove condition that will never be true.  Add tests for all ANSI
            colors.
2019-04-12 22:27:39 +02:00
c8b3ddab51 patch 8.1.1160: termcodes test would fail in a very big terminal
Problem:    Termcodes test would fail in a very big terminal.
Solution:   Bail out when the row is larger than what will work. (Dominique
            Pelle, closes #4246)
2019-04-12 21:42:52 +02:00
a8d22e3a40 patch 8.1.1159: MS-Windows: with a silent (un)install $VIM/_vimrc is removed
Problem:    MS-Windows: with a silent (un)install $VIM/_vimrc is removed.
Solution:   Don't delete _vimrc in silent mode. (Ken Takata, closes #4242)
2019-04-12 21:29:33 +02:00
04af19637c patch 8.1.1158: json encoded string is sometimes missing the final NUL
Problem:    Json encoded string is sometimes missing the final NUL.
Solution:   Add the NUL.  Also for log messages.
2019-04-12 21:19:04 +02:00
f9b89b4679 patch 8.1.1157: Unicode tables are out of date
Problem:    Unicode tables are out of date.
Solution:   Update to Unicode 12. (Christian Brabandt, closes #4240)
2019-04-12 20:08:55 +02:00
d489c9801b patch 8.1.1156: Unicode emoji and other image characters not recognized
Problem:    Unicode emoji and other image characters not recognized.
Solution:   Add ranges for musical notation, game pieces, etc. (Martin
            Tournoij, closes #4238)
2019-04-12 20:00:21 +02:00
3fbd2d7c31 patch 8.1.1155: termcodes tests can be improved
Problem:    Termcodes tests can be improved.
Solution:   Add helper functions to simplify tests.  Dragging statusline for
            xterm and sgr. (Dominique Pelle, closes #4237)
2019-04-11 23:56:16 +02:00
496555fd18 patch 8.1.1154: getting a newer msgfmt on Travis is too complicated
Problem:    Getting a newer msgfmt on Travis is too complicated.
Solution:   Use a "sourcline" entry. (Ozaki Kiichi, closes #4236)
2019-04-11 20:14:56 +02:00
9a419ffb93 patch 8.1.1154 2019-04-11 18:44:11 +02:00
7edf0baef4 patch 8.1.1152: compiler warning with VS2019
Problem:    Compiler warning with VS2019.
Solution:   Specify different offset for "AMD64". (closes #4235)
2019-04-11 17:22:57 +02:00
679beba800 patch 8.1.1151: build fails when using shadow directory
Problem:    Build fails when using shadow directory.
Solution:   Link the desktop.in files.
2019-04-11 16:21:33 +02:00
29a9baa077 patch 8.1.1150: generating desktop files not tested on Travis
Problem:    Generating desktop files not tested on Travis.
Solution:   Install a newer msgfmt package. (Christian Brabandt)
2019-04-11 15:49:11 +02:00
26096cc96f patch 8.1.1149: building desktop files fails with older msgfmt
Problem:    Building desktop files fails with older msgfmt.
Solution:   Add autoconf check.  Avoid always building the desktop files.
2019-04-11 15:25:40 +02:00
730f48fe36 patch 8.1.1148: CTRL-L with 'incsearch' does not pick up char under cursor
Problem:    CTRL-L with 'incsearch' does not pick up char under cursor.
            (Smylers)
Solution:   Do not compare the position with the cursor position. (Hirohito
            Higashi, closes #3620)
2019-04-11 13:45:57 +02:00
a60e536a29 patch 8.1.1147: desktop file translations are requiring manual updates
Problem:    Desktop file translations are requiring manual updates.
Solution:   Use the .po files for desktop file translations. (Christian
            Brabandt)
2019-04-11 13:11:39 +02:00
ef8c83c550 patch 8.1.1146: in MS-Windows console colors in a terminal window are wrong
Problem:    In MS-Windows console colors in a terminal window are wrong.
Solution:   Use the ansi index also for 16 colors. (Ken Takata)
2019-04-11 11:40:13 +02:00
a7be0f2451 patch 8.1.1145: compiler warning for unused function
Problem:    Compiler warning for unused function. (Tony Mechelynck)
Solution:   Add #ifdef.
2019-04-11 11:19:32 +02:00
862f1e17ea patch 8.1.1144: too strict checking of the 'spellfile' option
Problem:    Too strict checking of the 'spellfile' option.
Solution:   Allow for a path.
2019-04-10 22:33:41 +02:00
8f130eda47 patch 8.1.1143: may pass weird strings to file name expansion
Problem:    May pass weird strings to file name expansion.
Solution:   Check for matching characters.  Disallow control characters.
2019-04-10 22:15:19 +02:00
3fb01a53c6 patch 8.1.1142: no test for dragging the window separators with the mouse
Problem:    No test for dragging the window separators with the mouse.
Solution:   Add a test. (Dominique Pelle, closes #4226)
2019-04-09 21:52:02 +02:00
1b55797e90 patch 8.1.1141: terminal winpos test fails with very large terminal
Problem:    Terminal winpos test fails with very large terminal. (Dominique
            Pelle)
Solution:   Compute the expected size more accurately. (closes #4228)
2019-04-09 21:17:32 +02:00
46ad288b9b patch 8.1.1140: not easy to find out what neighbors a window has
Problem:    Not easy to find out what neighbors a window has.
Solution:   Add more arguments to winnr(). (Yegappan Lakshmanan, closes #3993)
2019-04-08 20:01:47 +02:00
9845f36aa6 patch 8.1.1139: no test for what is fixed in patch 8.1.0716
Problem:    No test for what is fixed in patch 8.1.0716.
Solution:   Add a test. (Yasuhiro Matsumoto, closes #3797)
2019-04-08 18:59:54 +02:00
d7f246c68c patch 8.1.1138: plugins don't get notified when the popup menu changes
Problem:    Plugins don't get notified when the popup menu changes.
Solution:   Add the CompleteChanged event. (Andy Massimino. closes #4176)
2019-04-08 18:15:41 +02:00
62e1bb4a11 Update runtime files. 2019-04-08 16:25:07 +02:00
049736fa8a patch 8.1.1137: xterm mouse wheel escape sequence is not tested
Problem:    Xterm mouse wheel escape sequence is not tested.
Solution:   Add a test using low-level input. (Dominique Pelle, closes #4221)
2019-04-07 21:55:07 +02:00
905dd905de patch 8.1.1136: decoding of mouse click escape sequence is not tested
Problem:    Decoding of mouse click escape sequence is not tested.
Solution:   Add a test for xterm and SGR using low-level input.  Make
            low-level input execution with feedkeys() work.
2019-04-07 14:21:47 +02:00
d85c396d51 patch 8.1.1135: build failure for small version
Problem:    Build failure for small version. (Tony Mechelynck)
Solution:   Add #ifdef.
2019-04-07 14:19:14 +02:00
39803d82db patch 8.1.1134: buffer for quickfix window is reused for another file
Problem:    Buffer for quickfix window is reused for another file.
Solution:   Don't reuse the quickfx buffer. (Yegappan Lakshmanan)
2019-04-07 12:04:51 +02:00
08499f5a4d patch 8.1.1133: compiler warning for uninitialized struct member
Problem:    Compiler warning for uninitialized struct member. (Yegappan
            Lakshmanan)
Solution:   Add initializer field.
2019-04-07 11:56:49 +02:00
616aeef21f patch 8.1.1132: getwinpos() test fails on MS-Windows
Problem:    getwinpos() test fails on MS-Windows.
Solution:   Don't try running this test.
2019-04-06 22:21:22 +02:00
16c34c3765 patch 8.1.1131: getwinpos() does not work in the MS-Windows console
Problem:    getwinpos() does not work in the MS-Windows console.
Solution:   Implement getwinpos().
2019-04-06 22:01:24 +02:00
1164023828 patch 8.1.1130: MS-Windows: warning for unused variable
Problem:    MS-Windows: warning for unused variable.
Solution:   Remove the variable.
2019-04-06 20:53:29 +02:00
2d7260d665 patch 8.1.1129: when making a new screendump test have to create the file
Problem:    When making a new screendump test have to create the file.
Solution:   Continue creating the failed screendump, so it can be moved once
            it is correct.
2019-04-06 20:51:52 +02:00
94a7242ad1 patch 8.1.1128: getwinpos() test does not work on MS-Windows
Problem:    getwinpos() test does not work on MS-Windows.
Solution:   Skip the test.
2019-04-06 20:40:35 +02:00
6bc9305a02 patch 8.1.1127: getwinpos() doesn't work in terminal on MS-Windows console
Problem:    getwinpos() doesn't work in terminal on MS-Windows console.
Solution:   Adjust #ifdefs.  Disable test for MS-Windows console.
2019-04-06 20:00:19 +02:00
3d3f21764a patch 8.1.1126: build failure with +terminal but without tgetent
Problem:    Build failure with +terminal but without tgetent.
Solution:   Adjust #ifdef.
2019-04-06 17:56:05 +02:00
fa1e90cd4d patch 8.1.1125: libvterm does not handle the window position report
Problem:    Libvterm does not handle the window position report.
Solution:   Let libvterm call the fallback CSI handler when not handling CSI
            sequence.  Handle the window position report in Vim.
2019-04-06 17:47:40 +02:00
d9eefe3155 patch 8.1.1124: insert completion flags are mixed up
Problem:    Insert completion flags are mixed up.
Solution:   Clean up flags use of ins_compl_add() and cp_flags.
2019-04-06 14:22:21 +02:00
73655cf0ca patch 8.1.1123: no way to avoid filtering for autocomplete function
Problem:    No way to avoid filtering for autocomplete function, causing
            flickering of the popup menu.
Solution:   Add the "equal" field to complete items. (closes #3887)
2019-04-06 13:45:55 +02:00
9d40128afd patch 8.1.1122: char2nr() does not handle composing characters
Problem:    char2nr() does not handle composing characters.
Solution:   Add str2list() and list2str(). (Ozaki Kiichi, closes #4190)
2019-04-06 13:18:12 +02:00
4a5711b5ea patch 8.1.1121: test for term_gettitle() was disabled
Problem:    Test for term_gettitle() was disabled.
Solution:   Enable the test and bail out only when it doesn't work. (Dominique
            Pelle, closes #3776)
2019-04-06 12:39:55 +02:00
543c9b1921 patch 8.1.1120: cannot easily get directory entry matches
Problem:    Cannot easily get directory entry matches.
Solution:   Add the readdir() function. (Yasuhiro Matsumoto, closes #2439)
2019-04-05 22:50:40 +02:00
577fadfc10 patch 8.1.1119: no support for Windows on ARM64.
Problem:    No support for Windows on ARM64.
Solution:   Add ARM64 support (Leendert van Doorn)
2019-04-04 20:32:24 +02:00
652de23dc7 patch 8.1.1118: a couple of conditions are hard to understand
Problem:    A couple of conditions are hard to understand.
Solution:   Split the conditions into pieces. (Ozaki Kiichi, closes #3879)
2019-04-04 20:13:09 +02:00
1cd4dc444a patch 8.1.1117: build failure without the +eval feature
Problem:    Build failure without the +eval feature.
Solution:   Add #ifdef.
2019-04-04 19:06:14 +02:00
558ca4ae55 patch 8.1.1116: cannot enforce a Vim script style
Problem:    Cannot enforce a Vim script style.
Solution:   Add the :scriptversion command. (closes #3857)
2019-04-04 18:15:38 +02:00
8f4aeb5572 patch 8.1.1115: cannot build with older C compiler
Problem:    Cannot build with older C compiler.
Solution:   Move variable declaration to start of block.
2019-04-04 15:40:56 +02:00
0f248b006c patch 8.1.1114: confusing overloaded operator "." for string concatenation
Problem:    Confusing overloaded operator "." for string concatenation.
Solution:   Add ".." for string concatenation.  Also "let a ..= b".
2019-04-04 15:36:05 +02:00
eb93f3f0e2 patch 8.1.1113: making an autocommand trigger once is not so easy
Problem:    Making an autocommand trigger once is not so easy.
Solution:   Add the ++once argument.  Also add ++nested as an alias for
            "nested". (Justin M. Keyes, closes #4100)
2019-04-04 15:04:56 +02:00
87f59b09ea patch 8.1.1112: duplicate code in quickfix file
Problem:    Duplicate code in quickfix file.
Solution:   Move code into functions. (Yegappan Lakshmanan, closes #4207)
2019-04-04 14:04:11 +02:00
fda1bff39f patch 8.1.1111: it is not easy to check for infinity
Problem:    It is not easy to check for infinity.
Solution:   Add isinf(). (Ozaki Kiichi, closes #3787)
2019-04-04 13:44:37 +02:00
e5e4e22c1c patch 8.1.1110: composing chars on space wrong when 'listchars' is set
Problem:    Composing chars on space wrong when 'listchars' is set.
Solution:   Do not use "space" and "nbsp" entries of 'listchars' when there is
            a composing character.  (Yee Cheng Chin, closes #4197)
2019-04-04 13:28:45 +02:00
39b76b7df8 patch 8.1.1109: deleted file still in list of distributed files
Problem:    Deleted file still in list of distributed files.
Solution:   Remove the src/os_w32dll.c entry.
2019-04-04 13:12:07 +02:00
723dd946f9 Update runtime files. 2019-04-04 13:11:03 +02:00
7a66627cf4 patch 8.1.1108: test for 'visualbell' doesn't work
Problem:    Test for 'visualbell' doesn't work.
Solution:   Make 'belloff' empty.
2019-04-03 22:52:34 +02:00
b4e6a2d075 patch 8.1.1107: no test for 'visualbell'
Problem:    No test for 'visualbell'.
Solution:   Add a test.
2019-04-03 21:53:33 +02:00
449ac47f93 patch 8.1.1106: no test for 'writedelay'
Problem:    No test for 'writedelay'.
Solution:   Add a test.
2019-04-03 21:42:35 +02:00
5da04ef1b4 patch 8.1.1105: long escape sequences may be split up
Problem:    Long escape sequences may be split up.
Solution:   Assume esccape sequences can be up to 80 bytes long. (Nobuhiro
            Takasaki, closes #4196)
2019-04-03 21:15:58 +02:00
796cc42d3a patch 8.1.1104: MS-Windows: not all environment variables can be used
Problem:    MS-Windows: not all environment variables can be used.
Solution:   Use the wide version of WinMain() and main(). (Ken Takata,
            closes #4206)
2019-04-03 20:31:00 +02:00
0eb035c974 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Problem:    MS-Windows: old API calls are no longer needed.
Solution:   Always use the wide functions. (Ken Takata, closes #4199)
2019-04-02 22:15:55 +02:00
b26705afb5 patch 8.1.1102: Win32 exe file contains unused code
Problem:    Win32 exe file contains unused code.
Solution:   Remove unused #ifdefs and code. (Ken Takata, closes #4198)
2019-04-02 22:02:32 +02:00
690a905a01 patch 8.1.1101: signals test may fail in the GUI
Problem:    Signals test may fail in the GUI.
Solution:   Skip the test for the GUI. (Yee Checng Chin, closes #4202)
2019-04-02 21:45:41 +02:00
fd700393be patch 8.1.1100: tag file without trailing newline no longer works
Problem:    Tag file without trailing newline no longer works. (Marco Hinz)
Solution:   Don't expect a newline at the end of the file. (closes #4200)
2019-04-02 21:26:07 +02:00
b4a6020ac6 patch 8.1.1099: the do_tag() function is too long
Problem:    The do_tag() function is too long.
Solution:   Factor parts out to separate functions.  Move simplify_filename()
            to a file where it fits better. (Andy Massimino, closes #4195)
2019-03-31 19:40:07 +02:00
95946f1209 patch 8.1.1098: quickfix code duplication
Problem:    Quickfix code duplication.
Solution:   Refactor the qf_init_ext() function. (Yegappan Lakshmanan,
            closes #4193)
2019-03-31 15:31:59 +02:00
4fc8e2f8bb patch 8.1.1097: Motif build fails
Problem:    Motif build fails. (Paul Jolly)
Solution:   Only use gui_mch_maximized() for MS-Windows. (closes #4194)
2019-03-30 22:26:38 +01:00
b70a47b774 patch 8.1.1096: MS-Windows: cannot distinguish BS and CTRL-H
Problem:    MS-Windows: cannot distinguish BS and CTRL-H.
Solution:   Add code for VK_BACK. (Linwei, closes #1833)
2019-03-30 22:11:21 +01:00
8662189736 patch 8.1.1095: MS-Windows: executable() fails on very long filename
Problem:    MS-Windows: executable() fails on very long filename.
Solution:   (Ken Takata, closes #4015)
2019-03-30 21:51:28 +01:00
5209334c55 patch 8.1.1094: long line in tags file causes error
Problem:    Long line in tags file causes error.
Solution:   Check for overlong line earlier. (Andy Massimino, closes #4051,
            closes #4084)
2019-03-30 21:41:48 +01:00
96428dd4e9 patch 8.1.1093: support for outdated tags format slows down tag parsing
Problem:    Support for outdated tags format slows down tag parsing.
Solution:   Remove FEAT_TAG_OLDSTATIC.
2019-03-30 21:19:34 +01:00
372674fca3 patch 8.1.1092: setting 'guifont' when maximized resizes the Vim window
Problem:    Setting 'guifont' when maximized resizes the Vim window. When
            'guioptions' contains "k" gvim may open with a tiny window.
Solution:   Avoid un-maximizing when setting 'guifont'. (Yee Cheng Chin,
            closes #3808)
2019-03-30 20:31:22 +01:00
f0908e6fe1 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Problem:    MS-Windows: cannot use multi-byte chars in environment var.
Solution:   Use the wide API. (Ken Takata, closes #4008)
2019-03-30 20:11:50 +01:00
2d04a91d69 patch 8.1.1090: MS-Windows: modify_fname() has problems with some 'encoding'
Problem:    MS-Windows: modify_fname() has problems with some 'encoding'.
Solution:   Use GetLongPathNameW() instead of GetLongPathName(). (Ken Takata,
            closes #4007)
2019-03-30 20:04:08 +01:00
b44b7add8a patch 8.1.1089: tutor does not check $LC_MESSAGES
Problem:    Tutor does not check $LC_MESSAGES.
Solution:   Let $LC_MESSAGES overrule $LANG. (Miklos Vajna, closes #4112)
2019-03-30 19:56:46 +01:00
9e1e358d37 patch 8.1.1088: height of quickfix window not retained with vertical split
Problem:    Height of quickfix window not retained with vertical split.
Solution:   Use frame_fixed_height() and frame_fixed_width(). (Hongbo Liu,
            closes #4013, closes #2998)
2019-03-30 19:49:06 +01:00
7559dcef6c patch 8.1.1087: tag stack is incorrect after CTRL-T and then :tag
Problem:    tag stack is incorrect after CTRL-T and then :tag
Solution:   Handle DT_TAG differently. (test by Andy Massimino, closes #3944,
            closes #4177)
2019-03-30 19:12:02 +01:00
abab0b0fdd patch 8.1.1086: too many curly braces
Problem:    Too many curly braces.
Solution:   Remove curly braces where they are not needed. (Hirohito Higashi,
            closes #3982)
2019-03-30 18:47:01 +01:00
bd9bf266fc patch 8.1.1085: compiler warning for possibly uninitialized variable
Problem:    Compiler warning for possibly uninitialized variable. (Tony
            Mechelynck)
Solution:   Make conditions more logical.
2019-03-30 18:25:39 +01:00
aff749145e patch 8.1.1084: cannot delete a match from another window
Problem:    Cannot delete a match from another window. (Paul Jolly)
Solution:   Add window ID argument to matchdelete(), clearmatches(),
            getmatches() and setmatches(). (Andy Massimino, closes #4178)
2019-03-30 18:11:49 +01:00
8bb41b3d06 patch 8.1.1083: MS-Windows: hang when opening a file on network share
Problem:    MS-Windows: hang when opening a file on network share.
Solution:   Avoid using FindFirstFile(), use GetLongPathNameW(). (Ken Takata,
            closes #3923)
2019-03-30 17:28:16 +01:00
ab62c19ea0 patch 8.1.1082: "Conceal" match is mixed up with 'hlsearch' match.
Problem:    "Conceal" match is mixed up with 'hlsearch' match.
Solution:   Check that a match is found, not a 'hlsearch' item. (Andy
            Massimino, closes #4073)
2019-03-30 16:39:05 +01:00
433a5eb9de patch 8.1.1081: MS-Windows: cannot use some fonts
Problem:    MS-Windows: cannot use fonts whose name cannot be represented in
            the current code page.
Solution:   Use wide font functions. (Ken Takata, closes #4000)
2019-03-30 16:24:16 +01:00
ef7f0e367e patch 8.1.1080: when a screendump test fails, moving the file is a hassle
Problem:    When a screendump test fails, moving the file is a hassle.
Solution:   Instead of appending ".failed" to the file name, keep the same
            file name but put the screendump in the "failed" directory.
            Then the file name only needs to be typed once when moving a
            screendump.
2019-03-30 15:59:51 +01:00
48aed0824e patch 8.1.1079: no need for a separate ScreenLinesUtf8() test function
Problem:    No need for a separate ScreenLinesUtf8() test function.
Solution:   Get the composing characters with ScreenLines().
2019-03-30 15:44:17 +01:00
5f8069bbf5 patch 8.1.1078: when 'listchars' is set a composing char on a space is wrong
Problem:    When 'listchars' is set a composing char on a space is wrong.
Solution:   Separate handling a non-breaking space and a space. (Yasuhiro
            Matsumoto, closes #4046)
2019-03-30 15:34:47 +01:00
9a2c091a74 patch 8.1.1077: reg_executing() is reset by calling input()
Problem:    reg_executing() is reset by calling input().
Solution:   Implement a more generic way to save and restore reg_executing.
            (Ozaki Kiichi, closes #4192)
2019-03-30 14:26:18 +01:00
7591bb39d5 patch 8.1.1076: file for Insert mode is much too big
Problem:    File for Insert mode is much too big.
Solution:   Split off the code for Insert completion. (Yegappan Lakshmanan,
            closes #4044)
2019-03-30 13:53:47 +01:00
de5b380042 patch 8.1.1075: function reference count wrong in Python code
Problem:    Function reference count wrong in Python code.
Solution:   Use "O" instead of "N" for the arguments. (Ben Jackson,
            closes #4188)
2019-03-30 12:51:22 +01:00
bfd3603670 patch 8.1.1074: Python test doesn't wipe out hidden buffer
Problem:    Python test doesn't wipe out hidden buffer.
Solution:   Wipe out the buffer. (Ben Jackson, closes #4189)
2019-03-30 12:33:13 +01:00
e73f911c53 patch 8.1.1073: space in number column is on wrong side with 'rightleft' set
Problem:    Space in number column is on wrong side with 'rightleft' set.
Solution:   Move the space to the text side.  Add a test.
2019-03-29 18:29:54 +01:00
8ee4c01b8c patch 8.1.1072: extending sign and foldcolumn below the text is confusing
Problem:    Extending sign and foldcolumn below the text is confusing.
Solution:   Let the sign and foldcolumn stop at the last text line, just like
            the line number column.  Also stop the command line window leader.
            (Christian Brabandt, closes #3964)
2019-03-29 18:08:18 +01:00
2912abb3a2 patch 8.1.1071: cannot get composing characters from the screen
Problem:    Cannot get composing characters from the screen.
Solution:   Add screenchars() and screenstring(). (partly by Ozaki Kiichi,
            closes #4059)
2019-03-29 14:16:42 +01:00
e46736b23b patch 8.1.1070: issue templates are not good enough
Problem:    Issue templates are not good enough.
Solution:   Rephrase to anticipate unexperienced users.
2019-03-29 13:12:39 +01:00
8ac8a77f24 patch 8.1.1069: source README file doesn't look nice on github
Problem:    Source README file doesn't look nice on github.
Solution:   Turn it into markdown, still readable as plain text.
            (WenxuanHuang, closes #4141)
2019-03-29 13:10:08 +01:00
fd133323d4 patch 8.1.1068: cannot get all the information about current completion
Problem:    Cannot get all the information about current completion.
Solution:   Add complete_info(). (Shougo, Hirohito Higashi, closes #4106)
2019-03-29 12:20:27 +01:00
723d165c2f patch 8.1.1067: issues added on github are unstructured
Problem:    Issues added on github are unstructured.
Solution:   Add a bug and feature request template. (Ken Takata, closes #4183)
2019-03-29 10:54:37 +01:00
89828e9fe6 patch 8.1.1066: VIMDLL isn't actually used
Problem:    VIMDLL isn't actually used.
Solution:   Remove VIMDLL support.
2019-03-28 22:43:16 +01:00
47cf1cc257 patch 8.1.1065: no test for using and deleting menu in the GUI
Problem:    No test for using and deleting menu in the GUI.
Solution:   Add a test.
2019-03-28 22:04:56 +01:00
c701f320e8 patch 8.1.1064: no test for output conversion in the GTK GUI
Problem:    No test for output conversion in the GTK GUI.
Solution:   Add a simplistic test.
2019-03-28 21:49:21 +01:00
37db642083 patch 8.1.1063: insufficient testing for wildmenu completion
Problem:    Insufficient testing for wildmenu completion.
Solution:   Extend the test case. (Dominique Pelle, closes #4182)
2019-03-28 21:26:23 +01:00
a16123a666 patch 8.1.1062: quickfix code is repeated
Problem:    Quickfix code is repeated.
Solution:   Define FOR_ALL_QFL_ITEMS(). Move some code to separate functions.
            (Yegappan Lakshmanan, closes #4166)
2019-03-28 20:31:07 +01:00
0e97b94875 patch 8.1.1061: when substitute string throws error, substitute happens anyway
Problem:    When substitute string throws error, substitute happens anyway.
Solution:   Skip substitution when aborting. (closes #4161)
2019-03-27 22:53:53 +01:00
760285dd4f patch 8.1.1060: MS-Windows: get_cmd_args() is no longer needed
Problem:    MS-Windows: get_cmd_args() is no longer needed, get_cmd_argsW() is
            always used.
Solution:   Remove get_cmd_args(). (Ken Takata, closes #4171)
2019-03-27 21:59:45 +01:00
90d0cf69aa patch 8.1.1059: MS-Windows: PlatformId() is called unnecessarily
Problem:    MS-Windows: PlatformId() is called unnecessarily.
Solution:   Remove calls to PlatformId(). (Ken Takata, closes #4170)
2019-03-27 21:49:14 +01:00
3a731ee0c2 patch 8.1.1058: memory usage test may still fail on some systems
Problem:    Memory usage test may still fail on some systems.
Solution:   Use 98% of the lower limit. (Christian Brabandt)
2019-03-27 21:41:36 +01:00
6a95c889bf patch 8.1.1057: nsis config is too complicated
Problem:    Nsis config is too complicated.
Solution:   Use "File /r" for the macros and pack directories. (Ken Takata,
            closes #4169)
2019-03-26 23:02:46 +01:00
e99be0e6d2 patch 8.1.1056: no eval function for Ruby
Problem:    No eval function for Ruby.
Solution:   Add rubyeval(). (Ozaki Kiichi, closes #4152)
2019-03-26 22:51:09 +01:00
75bf3d22f4 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Problem:    CTRL-G U in Insert mode doesn't work to avoid splitting the undo
            sequence for shift-left and shift-right.
Solution:   Also check dont_sync_undo for shifted cursor keys. (Christian
            Brabandt)
2019-03-26 22:46:05 +01:00
6fb5c97242 patch 8.1.1054: not checking return value of ga_grow()
Problem:    Not checking return value of ga_grow(). (Coverity)
Solution:   Only append when ga_grow() returns OK.
2019-03-26 21:44:20 +01:00
d6c3f1fa2b patch 8.1.1053: warning for missing return statement
Problem:    Warning for missing return statement. (Dominique Pelle)
Solution:   Add return statement.
2019-03-26 00:31:21 +01:00
553e5a5c56 patch 8.1.1052: test for CTRL-C message sometimes fails
Problem:    test for CTRL-C message sometimes fails
Solution:   Make sure there are no changed buffers.
2019-03-25 23:16:34 +01:00
a4c2a24cc7 patch 8.1.1051: not all ways to switch terminal mode are tested
Problem:    Not all ways to switch terminal mode are tested.
Solution:   Add more test cases.
2019-03-25 23:01:38 +01:00
3dd174abbf patch 8.1.1050: blank srceen when DirectWrite failed
Problem:    Blank srceen when DirectWrite failed.
Solution:   Call redraw_later_clear() after recreating the Direct2D render
            target. (Ken Takata, closes #4172)
2019-03-25 22:48:18 +01:00
a84a3dd663 patch 8.1.1049: when user tries to exit with CTRL-C message is confusing
Problem:    When user tries to exit with CTRL-C message is confusing.
Solution:   Only mention ":qa!" when there is a changed buffer. (closes #4163)
2019-03-25 22:21:24 +01:00
b45125b374 patch 8.1.1048: minor issues with tests
Problem:    Minor issues with tests.
Solution:   Delete unused test OK file.  Add missing entries in list of tests.
            Fix readme file. (Masato Nishihata, closes #4160)
2019-03-24 20:18:40 +01:00
63b74a8362 Update runtime files. 2019-03-24 15:09:13 +01:00
db77b84ac2 patch 8.1.1047: WINCH signal is not tested
Problem:    WINCH signal is not tested.
Solution:   Add a test. (Dominique Pelle, closes #4158)
2019-03-24 14:58:31 +01:00
82b033eff8 patch 8.1.1046: the "secure" variable is used inconsistently
Problem:    the "secure" variable is used inconsistently. (Justin M. Keyes)
Solution:   Set it to one instead of incrementing.
2019-03-24 14:02:04 +01:00
63dbfd33c1 patch 8.1.1045: E315 ml_get error when using Python and hidden buffer
Problem:    E315 ml_get error when using Python and hidden buffer.
Solution:   Make sure the cursor position is valid. (Ben Jackson,
            closes #4153, closes #4154)
2019-03-23 17:41:59 +01:00
c3e92c161d patch 8.1.1044: no way to check the reference count of objects
Problem:    No way to check the reference count of objects.
Solution:   Add test_refcount(). (Ozaki Kiichi, closes #4124)
2019-03-23 14:23:07 +01:00
b782869033 patch 8.1.1043: Lua interface does not support Blob
Problem:    Lua interface does not support Blob.
Solution:   Add support to Blob. (Ozaki Kiichi, closes #4151)
2019-03-23 13:57:02 +01:00
832615be12 patch 8.1.1042: the paste test doesn't work properly in the Windows console
Problem:    The paste test doesn't work properly in the Windows console.
Solution:   Disable the test.
2019-03-23 13:30:22 +01:00
295e3ba31f patch 8.1.1041: test for Arabic no longer needed
Problem:    Test for Arabic no longer needed.
Solution:   Remove the test for something that was intentionally left out.
2019-03-23 12:59:40 +01:00
b99abaa480 patch 8.1.1040: FEAT_TAG_ANYWHITE is not enabled in any build
Problem:    FEAT_TAG_ANYWHITE is not enabled in any build.
Solution:   Remove the feature.
2019-03-22 17:03:05 +01:00
e37368c496 patch 8.1.1039: MS-Windows build fails
Problem:    MS-Windows build fails.
Solution:   Remove dependency on arabic.h
2019-03-22 16:57:45 +01:00
dc4fa190e7 patch 8.1.1038: Arabic support excludes Farsi
Problem:    Arabic support excludes Farsi.
Solution:   Add Farsi support to the Arabic support. (Ali Gholami Rudi,
            Ameretat Reith)
2019-03-22 16:33:15 +01:00
6b6f7aae4a patch 8.1.1037: memory usage test may still fail on some systems
Problem:    Memory usage test may still fail on some systems.
Solution:   Increase tolerance from 3% to 20%.
2019-03-22 14:36:59 +01:00
720 changed files with 87267 additions and 51653 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
custom: https://www.vim.org/sponsor/index.php

34
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,34 @@
---
name: Bug report
about: Create a report to help us improve Vim
title: ''
labels: ''
---
_Instructions: Replace the template text and remove irrelevant text (including this line)_
**Describe the bug**
A clear and concise description of what the bug is.
(Issues related to the runtime files should be reported to their maintainer, check the file header.)
**To Reproduce**
Detailed steps to reproduce the behavior:
1. Run `vim --clean` (or `gvim --clean`, etc.)
2. Edit `filename`
3. Type '....'
4. Describe the error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, copy/paste the text or add screenshots to help explain your problem.
**Environment (please complete the following information):**
- Vim version [e.g. 8.1.1234] (Or paste the result of `vim --version`.)
- OS: [e.g. Ubuntu 18.04, Windows 10 1809, macOS 10.14]
- Terminal: [e.g. GNOME Terminal, mintty, iTerm2, tmux, GNU screen] (Use GUI if you use the GUI.)
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,22 @@
---
name: Feature request
about: Suggest an enhancement for Vim
title: ''
labels: enhancement
---
_Instructions: Replace the template text and remove irrelevant text (including this line)_
**Is your feature request related something that is currently hard to do? Please describe.**
A clear and concise description of what is hard to do. Ex. It is difficult to [...] when [...]
(If it is related to runtime files, please check their header for where to discuss enhancements.)
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

35
.gitignore vendored
View File

@ -6,16 +6,15 @@ src/auto/if_perl.c
src/auto/gui_gtk_gresources.c
src/auto/gui_gtk_gresources.h
src/objects/.dirstamp
src/objects
src/tags
# We do need src/auto/configure.
src/auto/config.aap
src/auto/config.cache
src/auto/config.h
src/auto/config.log
src/auto/config.mk
src/auto/config.status
src/auto/configure.aap
src/auto/osdef.h
src/auto/link.log
src/auto/link.sed
@ -26,6 +25,7 @@ src/auto/pathdef.c
*.idb
*.manifest
*.exp
*.map
*.obj
*.pdb
*.ilk
@ -33,22 +33,17 @@ src/auto/pathdef.c
*.suo
*.res
*.RES
src/if_perl.c
src/pathdef.c
vim*.dll
vim*.lib
src/dobj*/pathdef.c
src/gobj*/pathdef.c
src/obj*/pathdef.c
src/Obj*/pathdef.c
gvimext.dll
gvimext.lib
gvim.lib
runtime/doc/uganda.nsis.txt
# Borland C++
bcc.cfg
*.ilc
*.ild
*.ilf
*.ils
*.map
*.tds
nsis/icons/*
# NetBeans
nbproject/*
@ -68,6 +63,7 @@ src/po/vim.pot
# Generated by "make test"
src/po/*.ck
src/po/*.desktop
src/testdir/mbyte.vim
src/testdir/mzscheme.vim
src/testdir/lua.vim
@ -85,3 +81,16 @@ src/memfile_test
src/json_test
src/message_test
src/kword_test
# Generated by "make install"
runtime/doc/tags
# Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-*
src/shadow
src/shadow-*
src/runtime
src/pixmaps
# other possible files build by tools
src/cscope.out

98
.hgignore Normal file
View File

@ -0,0 +1,98 @@
syntax: glob
# Unixen: object and executable files.
*.o
src/vim
src/xxd/xxd
src/auto/if_perl.c
src/auto/gui_gtk_gresources.c
src/auto/gui_gtk_gresources.h
src/objects/.dirstamp
src/objects
src/tags
# We do need src/auto/configure.
src/auto/config.cache
src/auto/config.h
src/auto/config.log
src/auto/config.mk
src/auto/config.status
src/auto/osdef.h
src/auto/link.log
src/auto/link.sed
src/auto/pathdef.c
# Windows
*.exe
*.idb
*.manifest
*.exp
*.map
*.obj
*.pdb
*.ilk
*.sln
*.suo
*.res
*.RES
vim*.dll
vim*.lib
src/dobj*/pathdef.c
src/gobj*/pathdef.c
src/obj*/pathdef.c
src/Obj*/pathdef.c
gvimext.dll
gvimext.lib
gvim.lib
runtime/doc/uganda.nsis.txt
nsis/icons/*
# NetBeans
nbproject/*
# Mac OSX
src/xxd/xxd.dSYM
# All platforms
*.rej
*.orig
*.mo
*.swp
*~
*.pyc
*.log
src/po/vim.pot
# Generated by "make test"
src/po/*.ck
src/po/*.desktop
src/testdir/mbyte.vim
src/testdir/mzscheme.vim
src/testdir/lua.vim
src/testdir/small.vim
src/testdir/tiny.vim
src/testdir/test*.out
src/testdir/test*.failed
src/testdir/test.log
src/testdir/dostmp/*
src/testdir/messages
src/testdir/viminfo
src/testdir/opt_test.vim
runtime/indent/testdir/*.out
src/memfile_test
src/json_test
src/message_test
src/kword_test
# Generated by "make install"
runtime/doc/tags
# Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-*
src/shadow
src/shadow-*
src/runtime
src/pixmaps
# other possible files build by tools
src/cscope.out

View File

@ -1,78 +1,41 @@
language: c
dist: trusty
os:
- osx
- linux
compiler:
- clang
- gcc
env:
anchors:
envs:
- &tiny-nogui
BUILD=yes TEST=test COVERAGE=no FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &tiny
BUILD=yes TEST=test COVERAGE=no FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &asan # ASAN build
BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
- &small
BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &normal
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
- &linux-huge
BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
- &unittests
BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
- &normal
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
- &small
BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &osx-huge # Mac OSX build
- &osx-huge # macOS build
BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
- &unittests
BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
- &asan # ASAN build
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
sudo: false
# instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env),
# exclude some builds on mac os x and linux
# on mac os x "tiny" is always without GUI
# linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
matrix:
exclude:
- os: osx
env: *tiny
- os: osx
env: *normal
- os: osx
env: *unittests
- os: osx
env: *small
- os: osx
env: *linux-huge
- os: osx
env: *asan
- os: linux
compiler: clang
env: *asan
- os: linux
compiler: clang
env: *unittests
- os: linux
compiler: clang
env: *small
- os: linux
env: *osx-huge
branches:
except:
- /^v[0-9]/
addons:
linux: &linux
os: linux
dist: trusty
addons:
apt:
sources:
# Need msgfmt 0.19.8 to be able to generate .desktop files
- sourceline: 'ppa:ricotz/toolchain'
packages:
- autoconf
- clang
- lcov
- gettext
- libcanberra-dev
- libperl-dev
- python-dev
- python3-dev
@ -82,17 +45,13 @@ addons:
- tcl-dev
- cscope
- libgtk2.0-dev
homebrew:
packages:
- lua
update: true
before_install:
- desktop-file-utils
before_install:
- rvm reset
# Remove /opt/python/3.x.x/bin from $PATH for using system python3.
# ("pyenv global system" doesn't seem to work.)
- |
if [[ "${TRAVIS_OS_NAME}" = "linux" ]] && [[ "$(which python3)" =~ ^/opt/python/ ]]; then
if [[ "$(which python3)" =~ ^/opt/python/ ]]; then
export PATH=$(py3=$(which python3); echo ${PATH//${py3%/python3}:/})
fi
- |
@ -105,27 +64,57 @@ before_install:
if [[ "${COVERAGE}" = "yes" ]]; then
CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1
fi
# Lua is not installed on Travis OSX
- |
if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then
export LUA_PREFIX=/usr/local
fi
# Use llvm-cov instead of gcov when compiler is clang.
- |
if [[ "${TRAVIS_OS_NAME}" = "linux" ]] && [[ "${CC}" = "clang" ]]; then
if [[ "${CC}" = "clang" ]]; then
ln -sf "$(which llvm-cov)" /home/travis/bin/gcov
fi
before_script:
before_script:
# Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start && sleep 3
- sudo modprobe snd-dummy
- sudo usermod -a -G audio $USER
- do_test() { sg audio "sg $(id -gn) '$*'"; }
osx: &osx
os: osx
addons:
homebrew:
packages:
- lua
update: true
cache:
directories:
- /usr/local/Homebrew/Library/Homebrew/vendor/
- /usr/local/Homebrew/Library/Taps/
before_install:
- rvm reset
# Lua is not installed on Travis OSX
- export LUA_PREFIX=/usr/local
before_script:
- do_test() { "$@"; }
coverage: &coverage
- ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8 latin-1 EUC-KR
- (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
asan_symbolize: &asan_symbolize
- |
if [[ "${TRAVIS_OS_NAME}" = "linux" ]]; then
export DISPLAY=:99.0
sh -e /etc/init.d/xvfb start && sleep 3
fi
while read log; do
asan_symbolize < "${log}"
done < <(find . -type f -name 'asan.*' -size +0)
sudo: false
branches:
except:
- /^v[0-9]/
script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- set -o errexit
- echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
- |
if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then
make -C src autoconf
@ -134,13 +123,17 @@ script:
if [[ -n "${SHADOWOPT}" ]]; then
make -C src shadow
fi
# "./configure" changes its working directory into "$SRCDIR".
- ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
- echo -en "travis_fold:end:configure\\r\\033[0K"
- echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
- |
(
cd "${SRCDIR}" \
&& ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
) && if [[ "${BUILD}" = "yes" ]]; then
if [[ "${BUILD}" = "yes" ]]; then
make ${SHADOWOPT} -j${NPROC}
fi
- echo -en "travis_fold:end:build\\r\\033[0K"
- set +o errexit
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
# Show Vim version and also if_xx versions.
- |
if [[ "${BUILD}" = "yes" ]]; then
@ -149,23 +142,90 @@ script:
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
cat if_ver.txt
fi
- make ${SHADOWOPT} ${TEST}
- |
if [[ -n "${ASAN_OPTIONS}" ]]; then
while read log; do
asan_symbolize < "${log}"
done < <(find . -type f -name 'asan.*' -size +0)
[[ -z "${log}" ]] # exit 1 if there are ASAN logs
if do_test make ${SHADOWOPT} ${TEST}; then
echo -en "travis_fold:end:test\\r\\033[0K"
fi
after_success:
- |
if [[ "${COVERAGE}" = "yes" ]]; then
~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8 latin-1 EUC-KR
fi
- |
if [[ "${COVERAGE}" = "yes" ]]; then
(cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
fi
# instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env),
# exclude some builds on mac os x and linux
# on mac os x "tiny" is always without GUI
# linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
matrix:
include:
- <<: *osx
name: tiny-nogui/clang
compiler: clang
env: *tiny-nogui
- <<: *osx
name: tiny-nogui/gcc
compiler: gcc
env: *tiny-nogui
- <<: *osx
name: huge/clang
compiler: clang
env: *osx-huge
- <<: *osx
name: huge/gcc
compiler: gcc
env: *osx-huge
- <<: *linux
name: tiny-nogui/clang
compiler: clang
env: *tiny-nogui
- <<: *linux
name: tiny-nogui/gcc
compiler: gcc
env: *tiny-nogui
- <<: *linux
name: tiny/clang
compiler: clang
env: *tiny
- <<: *linux
name: tiny/gcc
compiler: gcc
env: *tiny
- <<: *linux
name: small/gcc
compiler: gcc
env: *small
- <<: *linux
name: normal/clang
compiler: clang
env: *normal
- <<: *linux
name: normal/gcc
compiler: gcc
env: *normal
- <<: *linux
name: huge+coverage/clang
compiler: clang
env: *linux-huge
after_success: *coverage
- <<: *linux
name: huge+coverage/gcc
compiler: gcc
env: *linux-huge
after_success: *coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env: *unittests
after_success: *coverage
- <<: *linux # ASAN
name: huge+asan/gcc
compiler: gcc
env:
- *linux-huge
- *asan
after_failure: *asan_symbolize
- <<: *linux
name: huge-testgui+coverage/gcc
compiler: gcc
env:
- *linux-huge
- TEST="-C src testgui"
after_success: *coverage
# vim:set sts=2 sw=2 tw=0 et:

View File

@ -21,9 +21,9 @@ maillist is also fine.
Please use the GitHub issues only for actual issues. If you are not 100% sure
that your problem is a Vim issue, please first discuss this on the Vim user
maillist. Try reproducing the problem without any plugins or settings:
maillist. Try reproducing the problem without any of your plugins or settings:
vim -N -u NONE
vim --clean
If you report an issue, please describe exactly how to reproduce it.
For example, don't say "insert some text" but say what you did exactly:
@ -56,12 +56,14 @@ If the maintainer does not respond, contact the vim-dev maillist.
# Translations
Translating messages and runtime files is very much appreciated! These things can be translated:
Translating messages and runtime files is very much appreciated! These things
can be translated:
* Messages in Vim, see [src/po/README.txt][1]
Also used for the desktop icons.
* Menus, see [runtime/lang/README.txt][2]
* Vim tutor, see [runtime/tutor/README.txt][3]
* Manual pages, see [runtime/doc/\*.1][4] for examples
* Desktop icon, see [runtime/vim.desktop][5] and [runtime/gvim.desktop][6]
* Installer, see [nsis/lang/\*.nsi][5] for examples
The help files can be translated and made available separately.
See https://www.vim.org/translations.php for examples.
@ -70,5 +72,4 @@ See https://www.vim.org/translations.php for examples.
[2]: https://github.com/vim/vim/blob/master/runtime/lang/README.txt
[3]: https://github.com/vim/vim/blob/master/runtime/tutor/README.txt
[4]: https://github.com/vim/vim/blob/master/runtime/doc/vim.1
[5]: https://github.com/vim/vim/blob/master/runtime/vim.desktop
[6]: https://github.com/vim/vim/blob/master/runtime/gvim.desktop
[5]: https://github.com/vim/vim/blob/master/nsis/lang/english.nsi

View File

@ -3,16 +3,16 @@
# source files for all source archives
SRC_ALL = \
.gitignore \
.hgignore \
.lgtm.yml \
.travis.yml \
appveyor.yml \
ci/appveyor.bat \
src/Make_all.mak \
src/README.txt \
src/README.md \
src/alloc.h \
src/arabic.c \
src/arabic.h \
src/ascii.h \
src/autocmd.c \
src/beval.c \
@ -20,10 +20,12 @@ SRC_ALL = \
src/blob.c \
src/blowfish.c \
src/buffer.c \
src/change.c \
src/channel.c \
src/charset.c \
src/crypt.c \
src/crypt_zip.c \
src/debugger.c \
src/dict.c \
src/diff.c \
src/digraph.c \
@ -48,7 +50,9 @@ SRC_ALL = \
src/gui_beval.c \
src/hardcopy.c \
src/hashtab.c \
src/highlight.c \
src/indent.c \
src/insexpand.c \
src/json.c \
src/json_test.c \
src/kword_test.c \
@ -76,6 +80,8 @@ SRC_ALL = \
src/option.c \
src/option.h \
src/popupmnu.c \
src/popupwin.c \
src/profiler.c \
src/quickfix.c \
src/regexp.c \
src/regexp_nfa.c \
@ -84,6 +90,7 @@ SRC_ALL = \
src/search.c \
src/sha256.c \
src/sign.c \
src/sound.c \
src/spell.c \
src/spell.h \
src/spellfile.c \
@ -94,13 +101,16 @@ SRC_ALL = \
src/terminal.c \
src/term.h \
src/termlib.c \
src/testing.c \
src/textprop.c \
src/ui.c \
src/undo.c \
src/usercmd.c \
src/userfunc.c \
src/version.c \
src/version.h \
src/vim.h \
src/viminfo.c \
src/winclip.c \
src/window.c \
src/tee/tee.c \
@ -113,9 +123,12 @@ SRC_ALL = \
src/testdir/lsan-suppress.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/runtest.vim \
src/testdir/summarize.vim \
src/testdir/check.vim \
src/testdir/shared.vim \
src/testdir/screendump.vim \
src/testdir/view_util.vim \
src/testdir/term_util.vim \
src/testdir/setup.vim \
src/testdir/gui_init.vim \
src/testdir/setup_gui.vim \
@ -144,6 +157,8 @@ SRC_ALL = \
src/testdir/samples/test000 \
src/testdir/if_ver*.vim \
src/testdir/color_ramp.vim \
src/testdir/silent.wav \
src/testdir/popupbounce.vim \
src/proto.h \
src/protodef.h \
src/proto/arabic.pro \
@ -152,10 +167,12 @@ SRC_ALL = \
src/proto/blob.pro \
src/proto/blowfish.pro \
src/proto/buffer.pro \
src/proto/change.pro \
src/proto/channel.pro \
src/proto/charset.pro \
src/proto/crypt.pro \
src/proto/crypt_zip.pro \
src/proto/debugger.pro \
src/proto/dict.pro \
src/proto/diff.pro \
src/proto/digraph.pro \
@ -175,7 +192,9 @@ SRC_ALL = \
src/proto/gui_beval.pro \
src/proto/hardcopy.pro \
src/proto/hashtab.pro \
src/proto/highlight.pro \
src/proto/indent.pro \
src/proto/insexpand.pro \
src/proto/json.pro \
src/proto/list.pro \
src/proto/main.pro \
@ -193,12 +212,15 @@ SRC_ALL = \
src/proto/ops.pro \
src/proto/option.pro \
src/proto/popupmnu.pro \
src/proto/popupwin.pro \
src/proto/profiler.pro \
src/proto/quickfix.pro \
src/proto/regexp.pro \
src/proto/screen.pro \
src/proto/search.pro \
src/proto/sha256.pro \
src/proto/sign.pro \
src/proto/sound.pro \
src/proto/spell.pro \
src/proto/spellfile.pro \
src/proto/syntax.pro \
@ -206,11 +228,14 @@ SRC_ALL = \
src/proto/term.pro \
src/proto/terminal.pro \
src/proto/termlib.pro \
src/proto/testing.pro \
src/proto/textprop.pro \
src/proto/ui.pro \
src/proto/undo.pro \
src/proto/usercmd.pro \
src/proto/userfunc.pro \
src/proto/version.pro \
src/proto/viminfo.pro \
src/proto/winclip.pro \
src/proto/window.pro \
src/libvterm/.bzrignore \
@ -415,11 +440,8 @@ SRC_DOS = \
src/GvimExt/uninst.bat \
README_srcdos.txt \
src/INSTALLpc.txt \
src/Make_bc5.mak \
src/Make_cyg.mak \
src/Make_cyg_ming.mak \
src/Make_ivc.mak \
src/Make_dvc.mak \
src/Make_ming.mak \
src/Make_mvc.mak \
tools/rename.bat \
@ -470,7 +492,6 @@ SRC_DOS = \
src/xpm_w32.c \
src/xpm_w32.h \
src/tee/Make_mvc.mak \
src/xxd/Make_bc5.mak \
src/xxd/Make_ming.mak \
src/xxd/Make_mvc.mak \
nsis/gvim.nsi \
@ -508,13 +529,14 @@ SRC_DOS_BIN = \
src/vim.tlb \
src/xpm/COPYRIGHT \
src/xpm/README.txt \
src/xpm/arm64/lib-vc14/libXpm.lib \
src/xpm/include/*.h \
src/xpm/x64/lib-vc14/libXpm.lib \
src/xpm/x64/lib/libXpm.a \
src/xpm/x64/lib/libXpm.lib \
src/xpm/x64/lib-vc14/libXpm.lib \
src/xpm/x86/lib-vc14/libXpm.lib \
src/xpm/x86/lib/libXpm.a \
src/xpm/x86/lib/libXpm.lib \
src/xpm/x86/lib-vc14/libXpm.lib \
nsis/icons.zip \
# source files for Amiga, DOS, etc. (also in the extra archive)
@ -526,10 +548,7 @@ SRC_AMI = \
README_amisrc.txt.info \
src.info \
src/INSTALLami.txt \
src/Make_dice.mak \
src/Make_manx.mak \
src/Make_morph.mak \
src/Make_sas.mak \
src/os_amiga.c \
src/os_amiga.h \
src/proto/os_amiga.pro \
@ -936,6 +955,8 @@ LANG_SRC = \
src/po/Make_cyg.mak \
src/po/Make_ming.mak \
src/po/Make_mvc.mak \
src/po/vim.desktop.in \
src/po/gvim.desktop.in \
src/po/sjiscorr.c \
src/po/*.po \

View File

@ -43,13 +43,18 @@ all install uninstall tools config configure reconfig proto depend lint tags typ
@if test "$@" = "test"; then \
$(MAKE) indenttest; \
fi
@# When the target is "clean" also clean for the indent tests.
@if test "$@" = "clean" -o "$@" = "distclean" -o "$@" = "testclean"; then \
cd runtime/indent && \
$(MAKE) clean; \
fi
# Executable used for running the indent tests.
VIM_FOR_INDENTTEST = ../../src/vim
indenttest:
cd runtime/indent && \
$(MAKE) clean VIM="$(VIM_FOR_INDENTTEST)" && \
$(MAKE) clean && \
$(MAKE) test VIM="$(VIM_FOR_INDENTTEST)"

View File

@ -22,8 +22,10 @@ if "%FEATURE%" == "HUGE" (
)
.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_ming.txt
:: Filter out the progress bar from the build log
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
echo "Building MSVC 64bit console Version"
sed -e "s/\$(LINKARGS2)/\$(LINKARGS2) | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
nmake -f Make_mvc2.mak clean

2
configure vendored
View File

@ -3,4 +3,4 @@
# This is just a stub for the Unix configure script, to provide support for
# doing "./configure" in the top Vim directory.
cd src && exec ./configure "$@"
cd "${SRCDIR:-src}" && exec ./configure "$@"

View File

@ -47,6 +47,11 @@ Unicode true
!include gvim_version.nsh # for version number
# Definition of Patch for Vim
!ifndef PATCHLEVEL
!define PATCHLEVEL 0
!endif
# ----------- No configurable settings below this line -----------
!include "Library.nsh" # For DLL install
@ -173,6 +178,16 @@ Page custom SetCustom ValidateCustom
!include "lang\tradchinese.nsi"
!endif
##########################################################
# Version resources
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Vim"
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Vim Developers"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Vim"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright (C) 1996"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Vi Improved - A Text Editor"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${VER_MAJOR}.${VER_MINOR}.${PATCHLEVEL}.0"
VIProductVersion "${VER_MAJOR}.${VER_MINOR}.${PATCHLEVEL}.0"
# Global variables
Var vim_dialog
@ -322,6 +337,9 @@ Section "$(str_section_exe)" id_section_exe
SetOutPath $0
File /oname=gvim.exe ${VIMSRC}\gvim_ole.exe
!if /FileExists "${VIMSRC}\vim${BIT}.dll"
File ${VIMSRC}\vim${BIT}.dll
!endif
File /oname=install.exe ${VIMSRC}\installw32.exe
File /oname=uninstal.exe ${VIMSRC}\uninstalw32.exe
File ${VIMSRC}\vimrun.exe
@ -354,42 +372,10 @@ Section "$(str_section_exe)" id_section_exe
File ${VIMRT}\indent\*.*
SetOutPath $0\macros
File ${VIMRT}\macros\*.*
SetOutPath $0\macros\hanoi
File ${VIMRT}\macros\hanoi\*.*
SetOutPath $0\macros\life
File ${VIMRT}\macros\life\*.*
SetOutPath $0\macros\maze
File ${VIMRT}\macros\maze\*.*
SetOutPath $0\macros\urm
File ${VIMRT}\macros\urm\*.*
File /r ${VIMRT}\macros\*.*
SetOutPath $0\pack\dist\opt\dvorak\dvorak
File ${VIMRT}\pack\dist\opt\dvorak\dvorak\*.*
SetOutPath $0\pack\dist\opt\dvorak\plugin
File ${VIMRT}\pack\dist\opt\dvorak\plugin\*.*
SetOutPath $0\pack\dist\opt\editexisting\plugin
File ${VIMRT}\pack\dist\opt\editexisting\plugin\*.*
SetOutPath $0\pack\dist\opt\justify\plugin
File ${VIMRT}\pack\dist\opt\justify\plugin\*.*
SetOutPath $0\pack\dist\opt\matchit\doc
File ${VIMRT}\pack\dist\opt\matchit\doc\*.*
SetOutPath $0\pack\dist\opt\matchit\plugin
File ${VIMRT}\pack\dist\opt\matchit\plugin\*.*
SetOutPath $0\pack\dist\opt\matchit\autoload
File ${VIMRT}\pack\dist\opt\matchit\autoload\*.*
SetOutPath $0\pack\dist\opt\shellmenu\plugin
File ${VIMRT}\pack\dist\opt\shellmenu\plugin\*.*
SetOutPath $0\pack\dist\opt\swapmouse\plugin
File ${VIMRT}\pack\dist\opt\swapmouse\plugin\*.*
SetOutPath $0\pack\dist\opt\termdebug\plugin
File ${VIMRT}\pack\dist\opt\termdebug\plugin\*.*
SetOutPath $0\pack
File /r ${VIMRT}\pack\*.*
SetOutPath $0\plugin
File ${VIMRT}\plugin\*.*
@ -1128,7 +1114,9 @@ Section "un.$(str_unsection_rootdir)" id_unsection_rootdir
Call un.GetParent
Pop $0
${IfNot} ${Silent}
Delete $0\_vimrc
${Endif}
RMDir $0
SectionEnd

View File

@ -45,37 +45,37 @@ LangString str_type_full ${LANG_SIMPCHINESE} \
LangString str_section_old_ver ${LANG_SIMPCHINESE} \
"卸载旧版本"
LangString str_desc_old_ver ${LANG_SIMPCHINESE} \
"卸载系统上旧版本的 Vim"
"卸载系统上已存在的 Vim 版本"
LangString str_section_exe ${LANG_SIMPCHINESE} \
"安装 Vim 图形界面"
LangString str_desc_exe ${LANG_SIMPCHINESE} \
"安装 Vim 图形界面及脚本。此为必选安装"
"安装 Vim 图形界面及运行时文件。此为必选。"
LangString str_section_console ${LANG_SIMPCHINESE} \
"安装 Vim 命令行程序"
"安装 Vim 控制台版本"
LangString str_desc_console ${LANG_SIMPCHINESE} \
"安装 Vim 命令行程序 (vim.exe)。该程序在命令行窗口中运行"
"安装 Vim 的控制台版本vim.exe"
LangString str_section_batch ${LANG_SIMPCHINESE} \
"安装批处理文件"
LangString str_desc_batch ${LANG_SIMPCHINESE} \
"为 Vim 的各种变体创建批处理程序,以便在命令行下运行 Vim。"
"为 Vim 的各种变体创建批处理文件,以便在命令行下运行 Vim。"
LangString str_group_icons ${LANG_SIMPCHINESE} \
"创建 Vim 图标"
"创建图标"
LangString str_desc_icons ${LANG_SIMPCHINESE} \
"为 Vim 创建若干图标,以方便使用 Vim。"
LangString str_section_desktop ${LANG_SIMPCHINESE} \
"桌面"
"桌面图标"
LangString str_desc_desktop ${LANG_SIMPCHINESE} \
"在桌面上为 Vim 创建若干图标,以方便启动 Vim"
"创建 Vim 的桌面快捷方式图标"
LangString str_section_start_menu ${LANG_SIMPCHINESE} \
"在启动菜单程序菜单下"
"「开始」菜单程序"
LangString str_desc_start_menu ${LANG_SIMPCHINESE} \
"启动菜单的程序菜单下添加 Vim 组。适用于 Windows 95 及以上版本"
"开始菜单中添加 Vim 程序组(适用于 Windows 95 及以上版本"
#LangString str_section_quick_launch ${LANG_SIMPCHINESE} \
# "在快速启动启动栏中"
@ -83,9 +83,9 @@ LangString str_desc_start_menu ${LANG_SIMPCHINESE} \
# "在快速启动栏中添加 Vim 图标。"
LangString str_section_edit_with ${LANG_SIMPCHINESE} \
"安装快捷菜单"
"添加到快捷菜单"
LangString str_desc_edit_with ${LANG_SIMPCHINESE} \
"将 Vim 添加到“打开方式”快捷菜单中。"
"“用 Vim 编辑”添加到快捷菜单中。"
#LangString str_section_edit_with32 ${LANG_SIMPCHINESE} \
# "32 位版本"
@ -98,10 +98,10 @@ LangString str_desc_edit_with ${LANG_SIMPCHINESE} \
# "将 Vim 添加到 64 位程序的“打开方式”快捷菜单中。"
LangString str_section_vim_rc ${LANG_SIMPCHINESE} \
"创建缺省配置文件"
"创建默认配置文件"
LangString str_desc_vim_rc ${LANG_SIMPCHINESE} \
"在安装目录下生成缺省的 Vim 配置文件(_vimrc)。\
如果该文件已经存在,则略过此项。"
"在安装目录下生成默认的 Vim 配置文件(_vimrc)。\
如果该文件已经存在,则跳过该项。"
LangString str_group_plugin ${LANG_SIMPCHINESE} \
"创建插件目录"
@ -121,9 +121,9 @@ LangString str_desc_plugin_vim ${LANG_SIMPCHINESE} \
该目录下的扩展插件。"
LangString str_section_vis_vim ${LANG_SIMPCHINESE} \
"安装 VisVim 插件"
"VisVim 插件"
LangString str_desc_vis_vim ${LANG_SIMPCHINESE} \
"安装用于与微软 Microsoft Visual Studio 进行集成的 VisVim 插件。"
"安装 Visual Studio 集成的 VisVim 插件。"
LangString str_section_nls ${LANG_SIMPCHINESE} \
"安装多语言支持"
@ -153,12 +153,12 @@ LangString str_desc_rm_plugin_home ${LANG_SIMPCHINESE} \
LangString str_unsection_plugin_vim ${LANG_SIMPCHINESE} \
"公共插件目录"
LangString str_desc_rm_plugin_vim ${LANG_SIMPCHINESE} \
"Remove the plugin directories from Vim install directory."
"从 Vim 安装目录下移除插件目录。"
LangString str_unsection_rootdir ${LANG_SIMPCHINESE} \
"Remove the Vim root directory"
"移除 Vim 主目录"
LangString str_desc_rm_rootdir ${LANG_SIMPCHINESE} \
"Remove the Vim root directory. It contains your Vim configuration files!"
"移除 Vim 的主目录,该目录包含您的配置文件!"
##############################################################################
@ -225,13 +225,13 @@ LangString str_msg_rm_exe_fail ${LANG_SIMPCHINESE} \
# 该目录下仍有其他文件。"
LangString str_msg_uninstalling ${LANG_SIMPCHINESE} \
"Uninstalling the old version..."
"正在卸载旧版本..."
LangString str_msg_registering ${LANG_SIMPCHINESE} \
"Registering..."
"正在注册..."
LangString str_msg_unregistering ${LANG_SIMPCHINESE} \
"Unregistering..."
"正在取消注册..."
##############################################################################
@ -239,12 +239,12 @@ LangString str_msg_unregistering ${LANG_SIMPCHINESE} \
##############################################################################
LangString str_vimrc_page_title ${LANG_SIMPCHINESE} \
"Choose _vimrc settings"
"设置 _vimrc"
LangString str_vimrc_page_subtitle ${LANG_SIMPCHINESE} \
"Choose the settings for enhancement, keyboard and mouse."
"选择键盘、鼠标和增强选项。"
LangString str_msg_compat_title ${LANG_SIMPCHINESE} \
" Vi / Vim behavior "
"Vi / Vim 行为"
LangString str_msg_compat_desc ${LANG_SIMPCHINESE} \
"&Compatibility and enhancements"
LangString str_msg_compat_vi ${LANG_SIMPCHINESE} \
@ -257,7 +257,7 @@ LangString str_msg_compat_all ${LANG_SIMPCHINESE} \
"Vim with all enhancements (load vimrc_example.vim) (Default)"
LangString str_msg_keymap_title ${LANG_SIMPCHINESE} \
" Mappings "
"键盘映射"
LangString str_msg_keymap_desc ${LANG_SIMPCHINESE} \
"&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
LangString str_msg_keymap_default ${LANG_SIMPCHINESE} \
@ -266,7 +266,7 @@ LangString str_msg_keymap_windows ${LANG_SIMPCHINESE} \
"Remap a few keys"
LangString str_msg_mouse_title ${LANG_SIMPCHINESE} \
" Mouse "
"鼠标"
LangString str_msg_mouse_desc ${LANG_SIMPCHINESE} \
"&Behavior of right and left buttons"
LangString str_msg_mouse_default ${LANG_SIMPCHINESE} \

View File

@ -1,7 +1,7 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2019 Jan 18
" Last Change: 2019 Mar 08
" These functions are moved here from runtime/filetype.vim to make startup
" faster.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Dec 30, 2014
" Date: Nov 09, 2016
" Maintainer: Charles E Campbell <drchipNOSPAM at campbellfamily dot biz>
" Version: 15
" Version: 16
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@ -19,7 +19,7 @@
if exists("g:loaded_netrwSettings") || &cp
finish
endif
let g:loaded_netrwSettings = "v15"
let g:loaded_netrwSettings = "v16"
if v:version < 700
echohl WarningMsg
echo "***warning*** this version of netrwSettings needs vim 7.0"
@ -154,9 +154,13 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_list_hide = '.g:netrw_list_hide
put = 'let g:netrw_liststyle = '.g:netrw_liststyle
put = 'let g:netrw_localcopycmd = '.g:netrw_localcopycmd
put = 'let g:netrw_localcopycmdopt = '.g:netrw_localcopycmdopt
put = 'let g:netrw_localmkdir = '.g:netrw_localmkdir
put = 'let g:netrw_localmkdiropt = '.g:netrw_localmkdiropt
put = 'let g:netrw_localmovecmd = '.g:netrw_localmovecmd
put = 'let g:netrw_localmovecmdopt = '.g:netrw_localmovecmdopt
put = 'let g:netrw_localrmdir = '.g:netrw_localrmdir
put = 'let g:netrw_localrmdiropt = '.g:netrw_localrmdiropt
put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen
put = 'let g:netrw_menu = '.g:netrw_menu
put = 'let g:netrw_mousemaps = '.g:netrw_mousemaps

View File

@ -1,13 +1,14 @@
" This script tests a color scheme for some errors. Load the scheme and source
" this script. e.g. :e colors/desert.vim | :so check_colors.vim
" Will output possible errors.
" This script tests a color scheme for some errors and lists potential errors.
" Load the scheme and source this script, like this:
" :edit colors/desert.vim | :so colors/tools/check_colors.vim
let s:save_cpo= &cpo
set cpo&vim
func! Test_check_colors()
let l:savedview = winsaveview()
call cursor(1,1)
let err={}
let err = {}
" 1) Check g:colors_name is existing
if !search('\<\%(g:\)\?colors_name\>', 'cnW')
@ -17,48 +18,115 @@ func! Test_check_colors()
endif
" 2) Check for some well-defined highlighting groups
" Some items, check several groups, e.g. Diff, Spell
let hi_groups = ['ColorColumn', 'Diff', 'ErrorMsg', 'Folded',
\ 'FoldColumn', 'IncSearch', 'LineNr', 'ModeMsg', 'MoreMsg', 'NonText',
\ 'Normal', 'Pmenu', 'Todo', 'Search', 'Spell', 'StatusLine', 'TabLine',
\ 'Title', 'Visual', 'WarningMsg', 'WildMenu']
let groups={}
let hi_groups = [
\ 'ColorColumn',
\ 'Comment',
\ 'Conceal',
\ 'Constant',
\ 'Cursor',
\ 'CursorColumn',
\ 'CursorLine',
\ 'CursorLineNr',
\ 'DiffAdd',
\ 'DiffChange',
\ 'DiffDelete',
\ 'DiffText',
\ 'Directory',
\ 'EndOfBuffer',
\ 'Error',
\ 'ErrorMsg',
\ 'FoldColumn',
\ 'Folded',
\ 'Identifier',
\ 'Ignore',
\ 'IncSearch',
\ 'LineNr',
\ 'MatchParen',
\ 'ModeMsg',
\ 'MoreMsg',
\ 'NonText',
\ 'Normal',
\ 'Pmenu',
\ 'PmenuSbar',
\ 'PmenuSel',
\ 'PmenuThumb',
\ 'PreProc',
\ 'Question',
\ 'QuickFixLine',
\ 'Search',
\ 'SignColumn',
\ 'Special',
\ 'SpecialKey',
\ 'SpellBad',
\ 'SpellCap',
\ 'SpellLocal',
\ 'SpellRare',
\ 'Statement',
\ 'StatusLine',
\ 'StatusLineNC',
\ 'StatusLineTerm',
\ 'StatusLineTermNC',
\ 'TabLine',
\ 'TabLineFill',
\ 'TabLineSel',
\ 'Title',
\ 'Todo',
\ 'ToolbarButton',
\ 'ToolbarLine',
\ 'Type',
\ 'Underlined',
\ 'VertSplit',
\ 'Visual',
\ 'VisualNOS',
\ 'WarningMsg',
\ 'WildMenu',
\ ]
let groups = {}
for group in hi_groups
if search('\c@suppress\s\+'.group, 'cnW')
if search('\c@suppress\s\+\<' .. group .. '\>', 'cnW')
" skip check, if the script contains a line like
" @suppress Visual:
let groups[group] = 'Ignoring '.group
continue
endif
if !search('hi\%[ghlight] \+'.group, 'cnW')
let groups[group] = 'No highlight definition for '.group
if search('hi\%[ghlight]!\= \+link \+' .. group, 'cnW') " Linked group
continue
endif
if !search('hi\%[ghlight] \+'.group. '.*fg=', 'cnW')
let groups[group] = 'Missing foreground color for '.group
if !search('hi\%[ghlight] \+\<' .. group .. '\>', 'cnW')
let groups[group] = 'No highlight definition for ' .. group
continue
endif
if search('hi\%[ghlight] \+'.group. '.*guibg=', 'cnW') &&
\ !search('hi\%[ghlight] \+'.group. '.*ctermbg=', 'cnW')
let groups[group] = 'Missing bg terminal color for '.group
if !search('hi\%[ghlight] \+\<' .. group .. '\>.*[bf]g=', 'cnW')
let groups[group] = 'Missing foreground or background color for ' .. group
continue
endif
if search('hi\%[ghlight] \+\<' .. group .. '\>.*guibg=', 'cnW') &&
\ !search('hi\%[ghlight] \+\<' .. group .. '\>.*ctermbg=', 'cnW')
\ && group != 'Cursor'
let groups[group] = 'Missing bg terminal color for ' .. group
continue
endif
if !search('hi\%[ghlight] \+\<' .. group .. '\>.*guifg=', 'cnW')
\ && group !~ '^Diff'
let groups[group] = 'Missing guifg definition for ' .. group
continue
endif
if !search('hi\%[ghlight] \+\<' .. group .. '\>.*ctermfg=', 'cnW')
\ && group !~ '^Diff'
\ && group != 'Cursor'
let groups[group] = 'Missing ctermfg definition for ' .. group
continue
endif
call search('hi\%[ghlight] \+'.group, 'cW')
" only check in the current line
if !search('guifg', 'cnW', line('.')) || !search('ctermfg', 'cnW', line('.'))
" do not check for background colors, they could be intentionally left out
let groups[group] = 'Missing fg definition for '.group
endif
call cursor(1,1)
endfor
let err['highlight'] = groups
" 3) Check, that it does not set background highlighting
" Doesn't ':hi Normal ctermfg=253 ctermfg=233' also set the background sometimes?
let bg_set='\(set\?\|setl\(ocal\)\?\) .*\(background\|bg\)=\(dark\|light\)'
let bg_let='let \%([&]\%([lg]:\)\?\)\%(background\|bg\)\s*=\s*\([''"]\?\)\w\+\1'
let bg_pat='\%('.bg_set. '\|'.bg_let.'\)'
let line=search(bg_pat, 'cnW')
let bg_set = '\(set\?\|setl\(ocal\)\?\) .*\(background\|bg\)=\(dark\|light\)'
let bg_let = 'let \%([&]\%([lg]:\)\?\)\%(background\|bg\)\s*=\s*\([''"]\?\)\w\+\1'
let bg_pat = '\%(' .. bg_set .. '\|' .. bg_let .. '\)'
let line = search(bg_pat, 'cnW')
if search(bg_pat, 'cnW')
exe line
if search('hi \U\w\+\s\+\S', 'cbnW')
@ -80,7 +148,7 @@ func! Test_check_colors()
" if exists("syntax_on")
" syntax reset
" endif
let pat='hi\%[ghlight]\s*clear\n\s*if\s*exists(\([''"]\)syntax_on\1)\n\s*syn\%[tax]\s*reset\n\s*endif'
let pat = 'hi\%[ghlight]\s*clear\n\s*if\s*exists(\([''"]\)syntax_on\1)\n\s*syn\%[tax]\s*reset\n\s*endif'
if !search(pat, 'cnW')
let err['init'] = 'No initialization'
endif
@ -91,15 +159,43 @@ func! Test_check_colors()
endif
" 7) Does not define filetype specific groups like vimCommand, htmlTag,
let hi_groups = ['vim', 'html', 'python', 'sh', 'ruby']
let hi_groups = filter(getcompletion('', 'filetype'), { _,v -> v !~# '\%[no]syn\%(color\|load\|tax\)' })
let ft_groups = []
" let group = '\%('.join(hi_groups, '\|').'\)' " More efficient than a for loop, but less informative
for group in hi_groups
let pat='\Chi\%[ghlight]\s*\zs'.group.'\w\+\>'
let pat = '\Chi\%[ghlight]!\= *\%[link] \+\zs' .. group .. '\w\+\>\ze \+.' " Skips `hi clear`
if search(pat, 'cW')
call add(ft_groups, matchstr(getline('.'), pat))
endif
call cursor(1,1)
endfor
if !empty(ft_groups)
let err['filetype'] = get(err, 'filetype', 'Should not define: ') . join(uniq(sort(ft_groups)))
endif
" 8) Were debugPC and debugBreakpoint defined?
for group in ['debugPC', 'debugBreakpoint']
let pat = '\Chi\%[ghlight]!\= *\%[link] \+\zs' .. group .. '\>'
if search(pat, 'cnW')
let line = search(pat, 'cW')
let err['filetype'] = get(err, 'filetype', 'Should not define: ') . matchstr(getline('.'), pat). ' '
endif
call cursor(1,1)
endfor
" 9) Normal should be defined first, not use reverse, fg or bg
call cursor(1,1)
let pat = 'hi\%[light] \+\%(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'
elseif getline('.') =~# '\m\%(=\%(fg\|bg\)\)'
let err['highlight']['Normal'] = "Should not use 'fg' or 'bg'"
elseif getline('.') =~# '\m=\%(inv\|rev\)erse'
let err['highlight']['Normal'] = 'Should not use reverse mode'
endif
call winrestview(l:savedview)
let g:err = err
" print Result
@ -107,11 +203,11 @@ func! Test_check_colors()
endfu
fu! Result(err)
let do_roups = 0
let do_groups = 0
echohl Title|echomsg "---------------"|echohl Normal
for key in sort(keys(a:err))
if key is# 'highlight'
let do_groups = 1
let do_groups = !empty(a:err[key])
continue
else
if a:err[key] !~ 'OK'

View File

@ -2,6 +2,8 @@
" Compiler: GNU C Compiler
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
" changed pattern for entering/leaving directories
" by Daniel Hahler, 2019 Jul 12
" added line suggested by Anton Lindqvist 2016 Mar 31
if exists("current_compiler")
@ -27,10 +29,10 @@ CompilerSet errorformat=
\%f:%l:\ %m,
\%f:\\(%*[^\\)]\\):\ %m,
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ [`']%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ [`']%f',
\%D%*\\a:\ Entering\ directory\ [`']%f',
\%X%*\\a:\ Leaving\ directory\ [`']%f',
\%D%*\\a[%*\\d]:\ Entering\ directory\ %*[`']%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ %*[`']%f',
\%D%*\\a:\ Entering\ directory\ %*[`']%f',
\%X%*\\a:\ Leaving\ directory\ %*[`']%f',
\%DMaking\ %*\\a\ in\ %f
if exists('g:compiler_gcc_ignore_unmatched_lines')

View File

@ -1,7 +1,11 @@
" Vim Compiler File
" Compiler: ocaml
" Maintainer: See ftplugin/ocaml.vim (?)
" Last Change: June 2013 by Marc Weber
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: https://github.com/rgrinberg/vim-ocaml
" Last Change:
" 2017 Nov 26 - Improved error format (Markus Mottl)
" 2013 Aug 27 - Added a new OCaml error format (Markus Mottl)
" 2013 Jun 30 - Initial version (Marc Weber)
"
" Marc Weber's comments:
" Setting makeprg doesn't make sense, because there is ocamlc, ocamlopt,
@ -17,7 +21,6 @@
"
" So having it here makes people opt-in
if exists("current_compiler")
finish
endif
@ -28,6 +31,7 @@ set cpo&vim
CompilerSet errorformat =
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d\ %.%#,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
\%+EReference\ to\ unbound\ regexp\ name\ %m,
\%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m,
@ -38,6 +42,12 @@ CompilerSet errorformat =
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
\%D%*\\a:\ Entering\ directory\ `%f',
\%X%*\\a:\ Leaving\ directory\ `%f',
\%D%*\\a[%*\\d]:\ Entering\ directory\ '%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ '%f',
\%D%*\\a:\ Entering\ directory\ '%f',
\%X%*\\a:\ Leaving\ directory\ '%f',
\%DEntering\ directory\ '%f',
\%XLeaving\ directory\ '%f',
\%DMaking\ %*\\a\ in\ %f
let &cpo = s:cpo_save

View File

@ -83,6 +83,7 @@ DOCS = \
pi_tar.txt \
pi_vimball.txt \
pi_zip.txt \
popup.txt \
print.txt \
quickfix.txt \
quickref.txt \
@ -102,6 +103,7 @@ DOCS = \
tagsrch.txt \
term.txt \
terminal.txt \
testing.txt \
textprop.txt \
tips.txt \
todo.txt \
@ -220,6 +222,7 @@ HTMLS = \
pi_tar.html \
pi_vimball.html \
pi_zip.html \
popup.html \
print.html \
quickfix.html \
quickref.html \
@ -239,6 +242,7 @@ HTMLS = \
tagsrch.html \
term.html \
terminal.html \
testing.html \
textprop.html \
tips.html \
todo.html \

View File

@ -1,4 +1,4 @@
*arabic.txt* For Vim version 8.1. Last change: 2010 Nov 13
*arabic.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Nadim Shaikli
@ -6,7 +6,6 @@
Arabic Language support (options & mappings) for Vim *Arabic*
{Vi does not have any of these commands}
*E800*
In order to use right-to-left and Arabic mapping support, it is

View File

@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.1. Last change: 2019 Mar 13
*autocmd.txt* For Vim version 8.1. Last change: 2019 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar
@ -20,7 +20,6 @@ For a basic explanation, see section |40.3| in the user manual.
10. Using autocommands |autocmd-use|
11. Disabling autocommands |autocmd-disable|
{Vi does not have any of these commands}
==============================================================================
1. Introduction *autocmd-intro*
@ -52,7 +51,7 @@ effects. Be careful not to destroy your text.
2. Defining autocommands *autocmd-define*
*:au* *:autocmd*
:au[tocmd] [group] {event} {pat} [nested] {cmd}
:au[tocmd] [group] {event} {pat} [++once] [++nested] {cmd}
Add {cmd} to the list of commands that Vim will
execute automatically on {event} for a file matching
{pat} |autocmd-patterns|.
@ -60,7 +59,13 @@ effects. Be careful not to destroy your text.
:autocmd and won't start a comment.
Vim always adds the {cmd} after existing autocommands,
so that the autocommands execute in the order in which
they were given. See |autocmd-nested| for [nested].
they were given.
See |autocmd-nested| for [++nested]. "nested"
(without the ++) can also be used, for backwards
compatibility.
*autocmd-once*
If [++once] is supplied the command is executed once,
then removed ("one shot").
The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand.
See |autocmd-buflocal|.
@ -128,10 +133,11 @@ prompt. When one command outputs two messages this can happen anyway.
==============================================================================
3. Removing autocommands *autocmd-remove*
:au[tocmd]! [group] {event} {pat} [nested] {cmd}
:au[tocmd]! [group] {event} {pat} [++once] [++nested] {cmd}
Remove all autocommands associated with {event} and
{pat}, and add the command {cmd}. See
|autocmd-nested| for [nested].
{pat}, and add the command {cmd}.
See |autocmd-once| for [++once].
See |autocmd-nested| for [++nested].
:au[tocmd]! [group] {event} {pat}
Remove all autocommands associated with {event} and
@ -360,6 +366,7 @@ Name triggered by ~
|SessionLoadPost| after loading a session file
|MenuPopup| just before showing the popup menu
|CompleteChanged| after Insert mode completion menu changed
|CompleteDone| after Insert mode completion is done
|User| to be used in combination with ":doautocmd"
@ -400,8 +407,8 @@ BufFilePost After changing the name of the current buffer
BufFilePre Before changing the name of the current buffer
with the ":file" or ":saveas" command.
*BufHidden*
BufHidden Just after a buffer has become hidden. That
is, when there are no longer windows that show
BufHidden Just before a buffer becomes hidden. That is,
when there are no longer windows that show
the buffer, but the buffer is not unloaded or
deleted. Not used for ":qa" or ":q" when
exiting Vim.
@ -572,7 +579,22 @@ ColorScheme After loading a color scheme. |:colorscheme|
ColorSchemePre Before loading a color scheme. |:colorscheme|
Useful to setup removing things added by a
color scheme, before another one is loaded.
CompleteChanged *CompleteChanged*
After each time the Insert mode completion
menu changed. Not fired on popup menu hide,
use |CompleteDone| for that. Never triggered
recursively.
Sets these |v:event| keys:
completed_item See |complete-items|.
height nr of items visible
width screen cells
row top screen row
col leftmost screen column
size total nr of items
scrollbar TRUE if visible
It is not allowed to change the text |textlock|.
*CompleteDone*
CompleteDone After Insert mode completion is done. Either
when something was completed or abandoning
@ -667,10 +689,11 @@ DiffUpdated After diffs have been updated. Depending on
change or when doing |:diffupdate|.
*DirChanged*
DirChanged The working directory has changed in response
to the |:cd| or |:lcd| commands, or as a
result of the 'autochdir' option.
to the |:cd| or |:tcd| or |:lcd| commands, or
as a result of the 'autochdir' option.
The pattern can be:
"window" to trigger on `:lcd`
"tabpage" to trigger on `:tcd`
"global" to trigger on `:cd`
"auto" to trigger on 'autochdir'.
"drop" to trigger on editing a file
@ -850,15 +873,32 @@ MenuPopup Just before showing the popup menu (under the
*OptionSet*
OptionSet After setting an option. The pattern is
matched against the long option name.
The |v:option_old| variable indicates the
old option value, |v:option_new| variable
indicates the newly set value, the
|v:option_type| variable indicates whether
it's global or local scoped and |<amatch>|
indicates what option has been set.
|<amatch>| indicates what option has been set.
Is not triggered on startup and for the 'key'
option for obvious reasons.
|v:option_type| indicates whether it's global
or local scoped.
|v:option_command| indicates what type of
set/let command was used (follow the tag to
see the table).
|v:option_new| indicates the newly set value.
|v:option_oldlocal| has the old local value.
|v:option_oldglobal| has the old global value.
|v:option_old| indicates the old option value.
|v:option_oldlocal| is only set when |:set|
or |:setlocal| or a |modeline| was used to set
the option. Similarly |v:option_oldglobal| is
only set when |:set| or |:setglobal| was used.
Note that when setting a |global-local| string
option with |:set|, then |v:option_old| is the
old global value. However, for all other kinds
of options (local string options, global-local
number options, ...) it is the old local
value.
OptionSet is not triggered on startup and for
the 'key' option for obvious reasons.
Usage example: Check for the existence of the
directory in the 'backupdir' and 'undodir'
@ -872,7 +912,6 @@ OptionSet After setting an option. The pattern is
When using |:set| in the autocommand the event
is not triggered again.
*QuickFixCmdPre*
QuickFixCmdPre Before a quickfix command is run (|:make|,
|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
@ -1343,7 +1382,7 @@ have changed autocommands, or when Vim has executed the wrong autocommands
Note that the 'eventignore' option applies here too. Events listed in this
option will not cause any commands to be executed.
*:do* *:doau* *:doautocmd* *E217*
*:do* *:doau* *:doaut* *:doautocmd* *E217*
:do[autocmd] [<nomodeline>] [group] {event} [fname]
Apply the autocommands matching [fname] (default:
current file name) for {event} to the current buffer.
@ -1473,7 +1512,7 @@ By default, autocommands do not nest. For example, if you use ":e" or ":w" in
an autocommand, Vim does not execute the BufRead and BufWrite autocommands for
those commands. If you do want this, use the "nested" flag for those commands
in which you want nesting. For example: >
:autocmd FileChangedShell *.c nested e!
:autocmd FileChangedShell *.c ++nested e!
The nesting is limited to 10 levels to get out of recursive loops.
It's possible to use the ":au" command in an autocommand. This can be a

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 8.1. Last change: 2019 Feb 05
*change.txt* For Vim version 8.1. Last change: 2019 Jul 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -34,7 +34,7 @@ For inserting text see |insert.txt|.
deletes the last character of the count.
See |:fixdel| if the <Del> key does not do what you
want. See |'whichwrap'| for deleting a line break
(join lines). {Vi does not support <Del>}
(join lines).
*X* *dh*
["x]X Delete [count] characters before the cursor [into
@ -59,7 +59,7 @@ For inserting text see |insert.txt|.
{Visual}["x]x or *v_x* *v_d* *v_<Del>*
{Visual}["x]d or
{Visual}["x]<Del> Delete the highlighted text [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
{Visual} see |Visual-mode|).
{Visual}["x]CTRL-H or *v_CTRL-H* *v_<BS>*
{Visual}["x]<BS> When in Select mode: Delete the highlighted text [into
@ -69,7 +69,7 @@ For inserting text see |insert.txt|.
{Visual}["x]D Delete the highlighted lines [into register x] (for
{Visual} see |Visual-mode|). In Visual block mode,
"D" deletes the highlighted text plus all text until
the end of the line. {not in Vi}
the end of the line.
*:d* *:de* *:del* *:delete* *:dl* *:dp*
:[range]d[elete] [x] Delete [range] lines (default: current line) [into
@ -116,16 +116,15 @@ J Join [count] lines, with a minimum of two lines.
*v_J*
{Visual}J Join the highlighted lines, with a minimum of two
lines. Remove the indent and insert up to two spaces
(see below). {not in Vi}
(see below).
*gJ*
gJ Join [count] lines, with a minimum of two lines.
Don't insert or remove any spaces. {not in Vi}
Don't insert or remove any spaces.
*v_gJ*
{Visual}gJ Join the highlighted lines, with a minimum of two
lines. Don't insert or remove any spaces. {not in
Vi}
lines. Don't insert or remove any spaces.
*:j* *:join*
:[range]j[oin][!] [flags]
@ -134,7 +133,6 @@ gJ Join [count] lines, with a minimum of two lines.
If a [range] has equal start and end values, this
command does nothing. The default behavior is to
join the current line with the line below it.
{not in Vi: !}
See |ex-flags| for [flags].
:[range]j[oin][!] {count} [flags]
@ -142,7 +140,6 @@ gJ Join [count] lines, with a minimum of two lines.
current line |cmdline-ranges|). Same as "J", except
with [!] the join does not insert or delete any
spaces.
{not in Vi: !}
See |ex-flags| for [flags].
These commands delete the <EOL> between lines. This has the effect of joining
@ -209,8 +206,7 @@ gR Enter Virtual Replace mode: Each character you type
{Visual}["x]c or *v_c* *v_s*
{Visual}["x]s Delete the highlighted text [into register x] and
start insert (for {Visual} see |Visual-mode|). {not
in Vi}
start insert (for {Visual} see |Visual-mode|).
*v_r*
{Visual}["x]r{char} Replace all selected characters by {char}.
@ -218,14 +214,13 @@ gR Enter Virtual Replace mode: Each character you type
*v_C*
{Visual}["x]C Delete the highlighted lines [into register x] and
start insert. In Visual block mode it works
differently |v_b_C|. {not in Vi}
differently |v_b_C|.
*v_S*
{Visual}["x]S Delete the highlighted lines [into register x] and
start insert (for {Visual} see |Visual-mode|). {not
in Vi}
start insert (for {Visual} see |Visual-mode|).
*v_R*
{Visual}["x]R Currently just like {Visual}["x]S. In a next version
it might work differently. {not in Vi}
it might work differently.
Notes:
- You can end Insert and Replace mode with <Esc>.
@ -273,8 +268,6 @@ r{char} Replace the character under the cursor with {char}.
If {char} is a <CR> or <NL>, a line break replaces the
character. To replace with a real <CR>, use CTRL-V
<CR>. CTRL-V <NL> replaces with a <Nul>.
{Vi: CTRL-V <CR> still replaces with a line break,
cannot replace something with a <CR>}
If {char} is CTRL-E or CTRL-Y the character from the
line below or above is used, just like with |i_CTRL-E|
@ -315,28 +308,26 @@ The following commands change the case of letters. The currently active
*~*
~ 'notildeop' option: Switch case of the character
under the cursor and move the cursor to the right.
If a [count] is given, do that many characters. {Vi:
no count}
If a [count] is given, do that many characters.
~{motion} 'tildeop' option: switch case of {motion} text. {Vi:
tilde cannot be used as an operator}
~{motion} 'tildeop' option: switch case of {motion} text.
*g~*
g~{motion} Switch case of {motion} text. {not in Vi}
g~{motion} Switch case of {motion} text.
g~g~ *g~g~* *g~~*
g~~ Switch case of current line. {not in Vi}.
g~~ Switch case of current line.
*v_~*
{Visual}~ Switch case of highlighted text (for {Visual} see
|Visual-mode|). {not in Vi}
|Visual-mode|).
*v_U*
{Visual}U Make highlighted text uppercase (for {Visual} see
|Visual-mode|). {not in Vi}
|Visual-mode|).
*gU* *uppercase*
gU{motion} Make {motion} text uppercase. {not in Vi}
gU{motion} Make {motion} text uppercase.
Example: >
:map! <C-F> <Esc>gUiw`]a
< This works in Insert mode: press CTRL-F to make the
@ -345,27 +336,27 @@ gU{motion} Make {motion} text uppercase. {not in Vi}
gUgU *gUgU* *gUU*
gUU Make current line uppercase. {not in Vi}.
gUU Make current line uppercase.
*v_u*
{Visual}u Make highlighted text lowercase (for {Visual} see
|Visual-mode|). {not in Vi}
|Visual-mode|).
*gu* *lowercase*
gu{motion} Make {motion} text lowercase. {not in Vi}
gu{motion} Make {motion} text lowercase.
gugu *gugu* *guu*
guu Make current line lowercase. {not in Vi}.
guu Make current line lowercase.
*g?* *rot13*
g?{motion} Rot13 encode {motion} text. {not in Vi}
g?{motion} Rot13 encode {motion} text.
*v_g?*
{Visual}g? Rot13 encode the highlighted text (for {Visual} see
|Visual-mode|). {not in Vi}
|Visual-mode|).
g?g? *g?g?* *g??*
g?? Rot13 encode current line. {not in Vi}.
g?? Rot13 encode current line.
To turn one line into title caps, make every first letter of a word
uppercase: >
@ -375,18 +366,18 @@ uppercase: >
Adding and subtracting ~
*CTRL-A*
CTRL-A Add [count] to the number or alphabetic character at
or after the cursor. {not in Vi}
or after the cursor.
*v_CTRL-A*
{Visual}CTRL-A Add [count] to the number or alphabetic character in
the highlighted text. {not in Vi}
the highlighted text.
*v_g_CTRL-A*
{Visual}g CTRL-A Add [count] to the number or alphabetic character in
the highlighted text. If several lines are
highlighted, each one will be incremented by an
additional [count] (so effectively creating a
[count] incrementing sequence). {not in Vi}
[count] incrementing sequence).
For Example, if you have this list of numbers:
1. ~
1. ~
@ -401,11 +392,11 @@ CTRL-A Add [count] to the number or alphabetic character at
*CTRL-X*
CTRL-X Subtract [count] from the number or alphabetic
character at or after the cursor. {not in Vi}
character at or after the cursor.
*v_CTRL-X*
{Visual}CTRL-X Subtract [count] from the number or alphabetic
character in the highlighted text. {not in Vi}
character in the highlighted text.
On MS-Windows, this is mapped to cut Visual text
|dos-standard-mappings|. If you want to disable the
@ -417,7 +408,7 @@ CTRL-X Subtract [count] from the number or alphabetic
character in the highlighted text. If several lines
are highlighted, each value will be decremented by an
additional [count] (so effectively creating a [count]
decrementing sequence). {not in Vi}
decrementing sequence).
The CTRL-A and CTRL-X commands can work for:
- signed and unsigned decimal numbers
@ -485,8 +476,7 @@ SHIFTING LINES LEFT OR RIGHT *shift-left-right*
*v_<*
{Visual}[count]< Shift the highlighted lines [count] 'shiftwidth'
leftwards (for {Visual} see |Visual-mode|). {not in
Vi}
leftwards (for {Visual} see |Visual-mode|).
*>*
>{motion} Shift {motion} lines one 'shiftwidth' rightwards.
@ -500,8 +490,7 @@ SHIFTING LINES LEFT OR RIGHT *shift-left-right*
*v_>*
{Visual}[count]> Shift the highlighted lines [count] 'shiftwidth'
rightwards (for {Visual} see |Visual-mode|). {not in
Vi}
rightwards (for {Visual} see |Visual-mode|).
*:<*
:[range]< Shift [range] lines one 'shiftwidth' left. Repeat '<'
@ -512,7 +501,7 @@ SHIFTING LINES LEFT OR RIGHT *shift-left-right*
Repeat '<' for shifting multiple 'shiftwidth's.
:[range]le[ft] [indent] left align lines in [range]. Sets the indent in the
lines to [indent] (default 0). {not in Vi}
lines to [indent] (default 0).
*:>*
:[range]> [flags] Shift {count} [range] lines one 'shiftwidth' right.
@ -579,7 +568,6 @@ comment (starting with '"') after the `:!` command.
*v_!*
{Visual}!{filter} Filter the highlighted lines through the external
program {filter} (for {Visual} see |Visual-mode|).
{not in Vi}
:{range}![!]{filter} [!][arg] *:range!*
Filter {range} lines through the external program
@ -613,7 +601,6 @@ comment (starting with '"') after the `:!` command.
*v_=*
{Visual}= Filter the highlighted lines like with ={motion}.
{not in Vi}
*tempfile* *setuid*
@ -678,15 +665,13 @@ g& Synonym for `:%s//~/&` (repeat last substitute with
For example, when you first do a substitution with
`:s/pattern/repl/flags` and then `/search` for
something else, `g&` will do `:%s/search/repl/flags`.
Mnemonic: global substitute. {not in Vi}
Mnemonic: global substitute.
*:snomagic* *:sno*
:[range]sno[magic] ... Same as `:substitute`, but always use 'nomagic'.
{not in Vi}
*:smagic* *:sm*
:[range]sm[agic] ... Same as `:substitute`, but always use 'magic'.
{not in Vi}
*:s_flags*
The flags that you can use for the substitute commands:
@ -697,7 +682,6 @@ The flags that you can use for the substitute commands:
:&&
:s/this/that/&
< Note that `:s` and `:&` don't keep the flags.
{not in Vi}
[c] Confirm each substitution. Vim highlights the matching string (with
|hl-IncSearch|). You can type: *:s_c*
@ -705,16 +689,15 @@ The flags that you can use for the substitute commands:
'l' to substitute this match and then quit ("last")
'n' to skip this match
<Esc> to quit substituting
'a' to substitute this and all remaining matches {not in Vi}
'q' to quit substituting {not in Vi}
CTRL-E to scroll the screen up {not in Vi, not available when
compiled without the |+insert_expand| feature}
CTRL-Y to scroll the screen down {not in Vi, not available when
compiled without the |+insert_expand| feature}
'a' to substitute this and all remaining matches
'q' to quit substituting
CTRL-E to scroll the screen up {not available when compiled
without the |+insert_expand| feature}
CTRL-Y to scroll the screen down {not available when compiled
without the |+insert_expand| feature}
If the 'edcompatible' option is on, Vim remembers the [c] flag and
toggles it each time you use it, but resets it when you give a new
search pattern.
{not in Vi: highlighting of the match, other responses than 'y' or 'n'}
*:s_e*
[e] When the search pattern fails, do not issue an error message and, in
@ -726,7 +709,6 @@ The flags that you can use for the substitute commands:
No previous substitute regular expression
Trailing characters
Interrupted
{not in Vi}
*:s_g*
[g] Replace all occurrences in the line. Without this argument,
@ -739,12 +721,10 @@ The flags that you can use for the substitute commands:
*:s_i*
[i] Ignore case for the pattern. The 'ignorecase' and 'smartcase' options
are not used.
{not in Vi}
*:s_I*
[I] Don't ignore case for the pattern. The 'ignorecase' and 'smartcase'
options are not used.
{not in Vi}
*:s_n*
[n] Report the number of matches, do not actually substitute. The [c]
@ -776,7 +756,6 @@ The flags that you can use for the substitute commands:
/green
:&
< The last command will replace "blue" with "red".
{not in Vi}
Note that there is no flag to change the "magicness" of the pattern. A
different command is used instead, or you can use |/\v| and friends. The
@ -1002,7 +981,6 @@ This replaces each 'E' character with a euro sign. Read more in |<Char->|.
a single tabstop. Each value in the list represents
the width of one tabstop, except the final value which
applies to all following tabstops.
{not in Vi}
*retab-example*
Example for using autocommands and ":retab" to edit a file which is stored
@ -1026,17 +1004,16 @@ inside of strings can change! Also see 'softtabstop' option. >
:reg[isters] Display the contents of all numbered and named
registers. If a register is written to for |:redir|
it will not be listed.
{not in Vi}
:reg[isters] {arg} Display the contents of the numbered and named
registers that are mentioned in {arg}. For example: >
:reg 1a
< to display registers '1' and 'a'. Spaces are allowed
in {arg}. {not in Vi}
in {arg}.
*:di* *:display*
:di[splay] [arg] Same as :registers. {not in Vi}
:di[splay] [arg] Same as :registers.
*y* *yank*
["x]y{motion} Yank {motion} text [into register x]. When no
@ -1055,11 +1032,11 @@ inside of strings can change! Also see 'softtabstop' option. >
*v_y*
{Visual}["x]y Yank the highlighted text [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
{Visual} see |Visual-mode|).
*v_Y*
{Visual}["x]Y Yank the highlighted lines [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
{Visual} see |Visual-mode|).
*:y* *:yank* *E850*
:[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the
@ -1073,11 +1050,11 @@ inside of strings can change! Also see 'softtabstop' option. >
*p* *put* *E353*
["x]p Put the text [from register x] after the cursor
[count] times. {Vi: no count}
[count] times.
*P*
["x]P Put the text [from register x] before the cursor
[count] times. {Vi: no count}
[count] times.
*<MiddleMouse>*
["x]<MiddleMouse> Put the text from a register before the cursor [count]
@ -1086,7 +1063,6 @@ inside of strings can change! Also see 'softtabstop' option. >
Leaves the cursor at the end of the new text.
Using the mouse only works when 'mouse' contains 'n'
or 'a'.
{not in Vi}
If you have a scrollwheel and often accidentally paste
text, you can use these mappings to disable the
pasting with the middle mouse button: >
@ -1097,11 +1073,11 @@ inside of strings can change! Also see 'softtabstop' option. >
*gp*
["x]gp Just like "p", but leave the cursor just after the new
text. {not in Vi}
text.
*gP*
["x]gP Just like "P", but leave the cursor just after the new
text. {not in Vi}
text.
*:pu* *:put*
:[line]pu[t] [x] Put the text [from register x] after [line] (default
@ -1129,14 +1105,14 @@ inside of strings can change! Also see 'softtabstop' option. >
["x]]p or *]p* *]<MiddleMouse>*
["x]]<MiddleMouse> Like "p", but adjust the indent to the current line.
Using the mouse only works when 'mouse' contains 'n'
or 'a'. {not in Vi}
or 'a'.
["x][P or *[P*
["x]]P or *]P*
["x][p or *[p* *[<MiddleMouse>*
["x][<MiddleMouse> Like "P", but adjust the indent to the current line.
Using the mouse only works when 'mouse' contains 'n'
or 'a'. {not in Vi}
or 'a'.
You can use these commands to copy text from one place to another. Do this
by first getting the text into a register with a yank, delete or change
@ -1203,9 +1179,9 @@ There are ten types of registers: *registers* *E354*
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
5. three read-only registers ":, "., "%
6. alternate buffer register "#
7. the expression register "=
5. Three read-only registers ":, "., "%
6. Alternate buffer register "#
7. The expression register "=
8. The selection and drop registers "*, "+ and "~
9. The black hole register "_
10. Last search pattern register "/
@ -1246,7 +1222,6 @@ not exist}
3. Small delete register "- *quote_-* *quote-*
This register contains text from commands that delete less than one line,
except when the command specifies a register with ["x].
{not in Vi}
4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea*
Vim fills these registers only when you say so. Specify them as lowercase
@ -1256,7 +1231,7 @@ a line break is inserted before the appended text.
5. Read-only registers ":, ". and "%
These are '%', '#', ':' and '.'. You can use them only with the "p", "P",
and ":put" commands and with CTRL-R. {not in Vi}
and ":put" commands and with CTRL-R.
*quote_.* *quote.* *E29*
". Contains the last inserted text (the same as what is inserted
with the insert mode commands CTRL-A and CTRL-@). Note: this
@ -1310,13 +1285,13 @@ an error message (use string() to convert).
If the "= register is used for the "p" command, the String is split up at <NL>
characters. If the String ends in a <NL>, it is regarded as a linewise
register. {not in Vi}
register.
8. Selection and drop registers "*, "+ and "~
Use these registers for storing and retrieving the selected text for the GUI.
See |quotestar| and |quoteplus|. When the clipboard is not available or not
working, the unnamed register is used instead. For Unix systems the clipboard
is only available when the |+xterm_clipboard| feature is present. {not in Vi}
is only available when the |+xterm_clipboard| feature is present.
Note that there is only a distinction between "* and "+ for X11 systems. For
an explanation of the difference, see |x11-selection|. Under MS-Windows, use
@ -1327,7 +1302,7 @@ The read-only "~ register stores the dropped text from the last drag'n'drop
operation. When something has been dropped onto Vim, the "~ register is
filled in and the <Drop> pseudo key is sent for notification. You can remap
this key if you want; the default action (for all modes) is to insert the
contents of the "~ register at the cursor position. {not in Vi}
contents of the "~ register at the cursor position.
{only available when compiled with the |+dnd| feature, currently only with the
GTK GUI}
@ -1337,7 +1312,7 @@ Drag'n'drop of URI lists is handled internally.
9. Black hole register "_ *quote_*
When writing to this register, nothing happens. This can be used to delete
text without affecting the normal registers. When reading from this register,
nothing is returned. {not in Vi}
nothing is returned.
10. Last search pattern register "/ *quote_/* *quote/*
Contains the most recent search-pattern. This is used for "n" and 'hlsearch'.
@ -1346,7 +1321,6 @@ other matches without actually searching. You can't yank or delete into this
register. The search direction is available in |v:searchforward|.
Note that the value is restored when returning from a function
|function-search-undo|.
{not in Vi}
*@/*
You can write to a register with a `:let` command |:let-@|. Example: >
@ -1377,17 +1351,15 @@ The next three commands always work on whole lines.
:[range]ce[nter] [width] *:ce* *:center*
Center lines in [range] between [width] columns
(default 'textwidth' or 80 when 'textwidth' is 0).
{not in Vi}
:[range]ri[ght] [width] *:ri* *:right*
Right-align lines in [range] at [width] columns
(default 'textwidth' or 80 when 'textwidth' is 0).
{not in Vi}
*:le* *:left*
:[range]le[ft] [indent]
Left-align lines in [range]. Sets the indent in the
lines to [indent] (default 0). {not in Vi}
lines to [indent] (default 0).
*gq*
gq{motion} Format the lines that {motion} moves over.
@ -1414,24 +1386,24 @@ gq{motion} Format the lines that {motion} moves over.
gqgq *gqgq* *gqq*
gqq Format the current line. With a count format that
many lines. {not in Vi}
many lines.
*v_gq*
{Visual}gq Format the highlighted text. (for {Visual} see
|Visual-mode|). {not in Vi}
|Visual-mode|).
*gw*
gw{motion} Format the lines that {motion} moves over. Similar to
|gq| but puts the cursor back at the same position in
the text. However, 'formatprg' and 'formatexpr' are
not used. {not in Vi}
not used.
gwgw *gwgw* *gww*
gww Format the current line as with "gw". {not in Vi}
gww Format the current line as with "gw".
*v_gw*
{Visual}gw Format the highlighted text as with "gw". (for
{Visual} see |Visual-mode|). {not in Vi}
{Visual} see |Visual-mode|).
Example: To format the current paragraph use: *gqap* >
gqap

View File

@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.1. Last change: 2018 Apr 18
*channel.txt* For Vim version 8.1. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -18,13 +18,14 @@ The Netbeans interface also uses a channel. |netbeans|
5. Channel commands |channel-commands|
6. Using a RAW or NL channel |channel-raw|
7. More channel functions |channel-more|
8. Starting a job with a channel |job-start|
9. Starting a job without a channel |job-start-nochannel|
10. Job options |job-options|
11. Controlling a job |job-control|
12. Using a prompt buffer |prompt-buffer|
8. channel functions details |channel-functions-details|
9. Starting a job with a channel |job-start|
10. Starting a job without a channel |job-start-nochannel|
11. Job functions |job-functions-details|
12. Job options |job-options|
13. Controlling a job |job-control|
14. Using a prompt buffer |prompt-buffer|
{Vi does not have any of these features}
{only when compiled with the |+channel| feature for channel stuff}
You can check this with: `has('channel')`
{only when compiled with the |+job| feature for job stuff}
@ -156,7 +157,10 @@ Use |ch_status()| to see if the channel could be opened.
func MyCloseHandler(channel)
< Vim will invoke callbacks that handle data before invoking
close_cb, thus when this function is called no more data will
be passed to the callbacks.
be passed to the callbacks. However, if a callback causes Vim
to check for messages, the close_cb may be invoked while still
in the callback. The plugin must handle this somehow, it can
be useful to know that no more data is coming.
*channel-drop*
"drop" Specifies when to drop messages:
"auto" When there is no callback to handle a message.
@ -308,9 +312,10 @@ higher.
Command "redraw" ~
The other commands do not update the screen, so that you can send a sequence
of commands without the cursor moving around. You must end with the "redraw"
command to show any changed text and show the cursor where it belongs.
The other commands do not explicitly update the screen, so that you can send a
sequence of commands without the cursor moving around. A redraw can happen as
a side effect of some commands. You must end with the "redraw" command to
show any changed text and show the cursor where it belongs.
The argument is normally an empty string:
["redraw", ""] ~
@ -457,7 +462,211 @@ For a JS or JSON channel this returns one decoded message.
This includes any sequence number.
==============================================================================
8. Starting a job with a channel *job-start* *job*
8. channel functions details *channel-functions-details*
ch_canread({handle}) *ch_canread()*
Return non-zero when there is something to read from {handle}.
{handle} can be a Channel or a Job that has a Channel.
This is useful to read from a channel at a convenient time,
e.g. from a timer.
Note that messages are dropped when the channel does not have
a callback. Add a close callback to avoid that.
ch_close({handle}) *ch_close()*
Close {handle}. See |channel-close|.
{handle} can be a Channel or a Job that has a Channel.
A close callback is not invoked.
ch_close_in({handle}) *ch_close_in()*
Close the "in" part of {handle}. See |channel-close-in|.
{handle} can be a Channel or a Job that has a Channel.
A close callback is not invoked.
ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()*
Send {expr} over {handle}. The {expr} is encoded
according to the type of channel. The function cannot be used
with a raw channel. See |channel-use|.
{handle} can be a Channel or a Job that has a Channel.
*E917*
{options} must be a Dictionary. It must not have a "callback"
entry. It can have a "timeout" entry to specify the timeout
for this specific request.
ch_evalexpr() waits for a response and returns the decoded
expression. When there is an error or timeout it returns an
empty string.
ch_evalraw({handle}, {string} [, {options}]) *ch_evalraw()*
Send {string} over {handle}.
{handle} can be a Channel or a Job that has a Channel.
Works like |ch_evalexpr()|, but does not encode the request or
decode the response. The caller is responsible for the
correct contents. Also does not add a newline for a channel
in NL mode, the caller must do that. The NL in the response
is removed.
Note that Vim does not know when the text received on a raw
channel is complete, it may only return the first part and you
need to use |ch_readraw()| to fetch the rest.
See |channel-use|.
ch_getbufnr({handle}, {what}) *ch_getbufnr()*
Get the buffer number that {handle} is using for {what}.
{handle} can be a Channel or a Job that has a Channel.
{what} can be "err" for stderr, "out" for stdout or empty for
socket output.
Returns -1 when there is no buffer.
ch_getjob({channel}) *ch_getjob()*
Get the Job associated with {channel}.
If there is no job calling |job_status()| on the returned Job
will result in "fail".
ch_info({handle}) *ch_info()*
Returns a Dictionary with information about {handle}. The
items are:
"id" number of the channel
"status" "open", "buffered" or "closed", like
ch_status()
When opened with ch_open():
"hostname" the hostname of the address
"port" the port of the address
"sock_status" "open" or "closed"
"sock_mode" "NL", "RAW", "JSON" or "JS"
"sock_io" "socket"
"sock_timeout" timeout in msec
When opened with job_start():
"out_status" "open", "buffered" or "closed"
"out_mode" "NL", "RAW", "JSON" or "JS"
"out_io" "null", "pipe", "file" or "buffer"
"out_timeout" timeout in msec
"err_status" "open", "buffered" or "closed"
"err_mode" "NL", "RAW", "JSON" or "JS"
"err_io" "out", "null", "pipe", "file" or "buffer"
"err_timeout" timeout in msec
"in_status" "open" or "closed"
"in_mode" "NL", "RAW", "JSON" or "JS"
"in_io" "null", "pipe", "file" or "buffer"
"in_timeout" timeout in msec
ch_log({msg} [, {handle}]) *ch_log()*
Write {msg} in the channel log file, if it was opened with
|ch_logfile()|.
When {handle} is passed the channel number is used for the
message.
{handle} can be a Channel or a Job that has a Channel. The
Channel must be open for the channel number to be used.
ch_logfile({fname} [, {mode}]) *ch_logfile()*
Start logging channel activity to {fname}.
When {fname} is an empty string: stop logging.
When {mode} is omitted or "a" append to the file.
When {mode} is "w" start with an empty file.
Use |ch_log()| to write log messages. The file is flushed
after every message, on Unix you can use "tail -f" to see what
is going on in real time.
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
information, e.g. a password you type in a terminal window.
ch_open({address} [, {options}]) *ch_open()*
Open a channel to {address}. See |channel|.
Returns a Channel. Use |ch_status()| to check for failure.
{address} has the form "hostname:port", e.g.,
"localhost:8765".
If {options} is given it must be a |Dictionary|.
See |channel-open-options|.
ch_read({handle} [, {options}]) *ch_read()*
Read from {handle} and return the received message.
{handle} can be a Channel or a Job that has a Channel.
For a NL channel this waits for a NL to arrive, except when
there is nothing more to read (channel was closed).
See |channel-more|.
ch_readblob({handle} [, {options}]) *ch_readblob()*
Like ch_read() but reads binary data and returns a |Blob|.
See |channel-more|.
ch_readraw({handle} [, {options}]) *ch_readraw()*
Like ch_read() but for a JS and JSON channel does not decode
the message. For a NL channel it does not block waiting for
the NL to arrive, but otherwise works like ch_read().
See |channel-more|.
ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()*
Send {expr} over {handle}. The {expr} is encoded
according to the type of channel. The function cannot be used
with a raw channel.
See |channel-use|. *E912*
{handle} can be a Channel or a Job that has a Channel.
ch_sendraw({handle}, {expr} [, {options}]) *ch_sendraw()*
Send |String| or |Blob| {expr} over {handle}.
Works like |ch_sendexpr()|, but does not encode the request or
decode the response. The caller is responsible for the
correct contents. Also does not add a newline for a channel
in NL mode, the caller must do that. The NL in the response
is removed.
See |channel-use|.
ch_setoptions({handle}, {options}) *ch_setoptions()*
Set options on {handle}:
"callback" the channel callback
"timeout" default read timeout in msec
"mode" mode for the whole channel
See |ch_open()| for more explanation.
{handle} can be a Channel or a Job that has a Channel.
Note that changing the mode may cause queued messages to be
lost.
These options cannot be changed:
"waittime" only applies to |ch_open()|
ch_status({handle} [, {options}]) *ch_status()*
Return the status of {handle}:
"fail" failed to open the channel
"open" channel can be used
"buffered" channel can be read, not written to
"closed" channel can not be used
{handle} can be a Channel or a Job that has a Channel.
"buffered" is used when the channel was closed but there is
still data that can be obtained with |ch_read()|.
If {options} is given it can contain a "part" entry to specify
the part of the channel to return the status for: "out" or
"err". For example, to get the error status: >
ch_status(job, {"part": "err"})
<
==============================================================================
9. Starting a job with a channel *job-start* *job*
To start a job and open a channel for stdin/stdout/stderr: >
let job = job_start(command, {options})
@ -549,7 +758,7 @@ add a close callback and read the output there: >
You will want to do something more useful than "echomsg".
==============================================================================
9. Starting a job without a channel *job-start-nochannel*
10. Starting a job without a channel *job-start-nochannel*
To start another process without creating a channel: >
let job = job_start(command,
@ -576,7 +785,164 @@ Note that the waittime for ch_open() gives the job one second to make the port
available.
==============================================================================
10. Job options *job-options*
11. Job functions *job-functions-details*
job_getchannel({job}) *job_getchannel()*
Get the channel handle that {job} is using.
To check if the job has no channel: >
if string(job_getchannel()) == 'channel fail'
<
job_info([{job}]) *job_info()*
Returns a Dictionary with information about {job}:
"status" what |job_status()| returns
"channel" what |job_getchannel()| returns
"cmd" List of command arguments used to start the job
"process" process ID
"tty_in" terminal input name, empty when none
"tty_out" terminal output name, empty when none
"exitval" only valid when "status" is "dead"
"exit_cb" function to be called on exit
"stoponexit" |job-stoponexit|
Only in Unix:
"termsig" the signal which terminated the process
(See |job_stop()| for the values)
only valid when "status" is "dead"
Only in MS-Windows:
"tty_type" Type of virtual console in use.
Values are "winpty" or "conpty".
See 'termwintype'.
Without any arguments, returns a List with all Job objects.
job_setoptions({job}, {options}) *job_setoptions()*
Change options for {job}. Supported are:
"stoponexit" |job-stoponexit|
"exit_cb" |job-exit_cb|
job_start({command} [, {options}]) *job_start()*
Start a job and return a Job object. Unlike |system()| and
|:!cmd| this does not wait for the job to finish.
To start a job in a terminal window see |term_start()|.
If the job fails to start then |job_status()| on the returned
Job object results in "fail" and none of the callbacks will be
invoked.
{command} can be a String. This works best on MS-Windows. On
Unix it is split up in white-separated parts to be passed to
execvp(). Arguments in double quotes can contain white space.
{command} can be a List, where the first item is the executable
and further items are the arguments. All items are converted
to String. This works best on Unix.
On MS-Windows, job_start() makes a GUI application hidden. If
want to show it, Use |:!start| instead.
The command is executed directly, not through a shell, the
'shell' option is not used. To use the shell: >
let job = job_start(["/bin/sh", "-c", "echo hello"])
< Or: >
let job = job_start('/bin/sh -c "echo hello"')
< Note that this will start two processes, the shell and the
command it executes. If you don't want this use the "exec"
shell command.
On Unix $PATH is used to search for the executable only when
the command does not contain a slash.
The job will use the same terminal as Vim. If it reads from
stdin the job and Vim will be fighting over input, that
doesn't work. Redirect stdin and stdout to avoid problems: >
let job = job_start(['sh', '-c', "myserver </dev/null >/dev/null"])
<
The returned Job object can be used to get the status with
|job_status()| and stop the job with |job_stop()|.
Note that the job object will be deleted if there are no
references to it. This closes the stdin and stderr, which may
cause the job to fail with an error. To avoid this keep a
reference to the job. Thus instead of: >
call job_start('my-command')
< use: >
let myjob = job_start('my-command')
< and unlet "myjob" once the job is not needed or is past the
point where it would fail (e.g. when it prints a message on
startup). Keep in mind that variables local to a function
will cease to exist if the function returns. Use a
script-local variable if needed: >
let s:myjob = job_start('my-command')
<
{options} must be a Dictionary. It can contain many optional
items, see |job-options|.
job_status({job}) *job_status()* *E916*
Returns a String with the status of {job}:
"run" job is running
"fail" job failed to start
"dead" job died or was stopped after running
On Unix a non-existing command results in "dead" instead of
"fail", because a fork happens before the failure can be
detected.
If an exit callback was set with the "exit_cb" option and the
job is now detected to be "dead" the callback will be invoked.
For more information see |job_info()|.
job_stop({job} [, {how}]) *job_stop()*
Stop the {job}. This can also be used to signal the job.
When {how} is omitted or is "term" the job will be terminated.
For Unix SIGTERM is sent. On MS-Windows the job will be
terminated forcedly (there is no "gentle" way).
This goes to the process group, thus children may also be
affected.
Effect for Unix:
"term" SIGTERM (default)
"hup" SIGHUP
"quit" SIGQUIT
"int" SIGINT
"kill" SIGKILL (strongest way to stop)
number signal with that number
Effect for MS-Windows:
"term" terminate process forcedly (default)
"hup" CTRL_BREAK
"quit" CTRL_BREAK
"int" CTRL_C
"kill" terminate process forcedly
Others CTRL_BREAK
On Unix the signal is sent to the process group. This means
that when the job is "sh -c command" it affects both the shell
and the command.
The result is a Number: 1 if the operation could be executed,
0 if "how" is not supported on the system.
Note that even when the operation was executed, whether the
job was actually stopped needs to be checked with
|job_status()|.
If the status of the job is "dead", the signal will not be
sent. This is to avoid to stop the wrong job (esp. on Unix,
where process numbers are recycled).
When using "kill" Vim will assume the job will die and close
the channel.
==============================================================================
12. Job options *job-options*
The {options} argument in job_start() is a dictionary. All entries are
optional. Some options can be used after the job has started, using
@ -770,7 +1136,7 @@ accessible for others). Use |setfperm()| to change this.
If the file already exists it is truncated.
==============================================================================
11. Controlling a job *job-control*
13. Controlling a job *job-control*
To get the status of a job: >
echo job_status(job)
@ -786,7 +1152,7 @@ signals. E.g. to force a job to stop, "kill it": >
For more options see |job_stop()|.
==============================================================================
12. Using a prompt buffer *prompt-buffer*
14. Using a prompt buffer *prompt-buffer*
If you want to type input for the job in a Vim window you have a few options:
- Use a normal buffer and handle all possible commands yourself.

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.1. Last change: 2018 May 14
*cmdline.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -27,7 +27,6 @@ Basic command line editing is explained in chapter 20 of the user manual
Normally characters are inserted in front of the cursor position. You can
move around in the command-line with the left and right cursor keys. With the
<Insert> key, you can toggle between inserting and overstriking characters.
{Vi: can only alter the last character in the line}
Note that if your keyboard does not have working cursor keys or any of the
other special keys, you can use ":cnoremap" to define another key for them.
@ -66,7 +65,6 @@ Notes:
- All searches are put in the search history, including the ones that come
from commands like "*" and "#". But for a mapping, only the last search is
remembered (to avoid that long mappings trash the history).
{Vi: no history}
{not available when compiled without the |+cmdline_hist| feature}
There is an automatic completion of names on the command-line; see
@ -124,12 +122,12 @@ CTRL-U Remove all characters between the cursor position and
:cnoremap <C-U> <C-E><C-U>
<
*c_<Insert>* *c_Insert*
<Insert> Toggle between insert and overstrike. {not in Vi}
<Insert> Toggle between insert and overstrike.
{char1} <BS> {char2} or *c_digraph*
CTRL-K {char1} {char2} *c_CTRL-K*
enter digraph (see |digraphs|). When {char1} is a special
key, the code for that key is inserted in <> form. {not in Vi}
key, the code for that key is inserted in <> form.
CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
Insert the contents of a numbered or named register. Between
@ -165,7 +163,7 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
too.
When the result is a Float it's automatically
converted to a String.
See |registers| about registers. {not in Vi}
See |registers| about registers.
Implementation detail: When using the |expression| register
and invoking setcmdpos(), this sets the position before
inserting the resulting string. Use CTRL-R CTRL-R to set the
@ -188,7 +186,6 @@ CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>*
currently displayed match is used. With CTRL-W the part of
the word that was already typed is not inserted again.
{not in Vi}
CTRL-F and CTRL-P: {only when |+file_in_path| feature is
included}
@ -313,11 +310,9 @@ CTRL-^ Toggle the use of language |:lmap| mappings and/or Input
off, since you are expected to type a command. After
switching it on with CTRL-^, the new state is not used again
for the next command or Search pattern.
{not in Vi}
*c_CTRL-]*
CTRL-] Trigger abbreviation, without inserting a character. {not in
Vi}
CTRL-] Trigger abbreviation, without inserting a character.
For Emacs-style editing on the command-line see |emacs-keys|.
@ -332,7 +327,6 @@ terminals)
*:his* *:history*
:his[tory] Print the history of last entered commands.
{not in Vi}
{not available when compiled without the |+cmdline_hist|
feature}
@ -344,7 +338,6 @@ terminals)
i[nput] or @ input line history
d[ebug] or > debug command history
a[ll] all of the above
{not in Vi}
If the numbers {first} and/or {last} are given, the respective
range of entries from a history is listed. These numbers can

View File

@ -1,4 +1,4 @@
*debug.txt* For Vim version 8.1. Last change: 2017 Jul 15
*debug.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -78,15 +78,10 @@ matches the EXE (same date).
If you built the executable yourself with the Microsoft Visual C++ compiler,
then the PDB was built with the EXE.
Alternatively, if you have the source files, you can import Make_ivc.mak into
Visual Studio as a workspace. Then select a debug configuration, build and
you can do all kinds of debugging (set breakpoints, watch variables, etc.).
If you have Visual Studio, use that instead of the VC Toolkit and WinDbg.
For other compilers, you should always use the corresponding debugger: TD for
a Vim executable compiled with the Borland compiler; gdb (see above
|debug-gcc|) for the Cygwin and MinGW compilers.
For other compilers, you should always use the corresponding debugger: gdb
(see above |debug-gcc|) for the Cygwin and MinGW compilers.
*debug-vs2005*

View File

@ -1,4 +1,4 @@
*debugger.txt* For Vim version 8.1. Last change: 2017 Nov 21
*debugger.txt* For Vim version 8.1. Last change: 2019 Jul 06
VIM REFERENCE MANUAL by Gordon Prieur
@ -6,18 +6,19 @@
Debugger Support Features *debugger-support*
These features are for integration with a debugger or an Integrated
Programming Environment (IPE) or Integrated Development Environment (IDE).
For the debugger running in a Vim terminal window see |terminal-debugger|.
1. Debugger Features |debugger-features|
2. Vim Compile Options |debugger-compilation|
3. Integrated Debuggers |debugger-integration|
{Vi does not have any of these features}
==============================================================================
1. Debugger Features *debugger-features*
The following features are available for an integration with a debugger or
an Integrated Programming Environment (IPE) or Integrated Development
Environment (IDE):
The following features are available:
Alternate Command Input |alt-input|
Debug Signs |debug-signs|
@ -88,7 +89,11 @@ This feature allows a debugger, or other external tool, to display dynamic
information based on where the mouse is pointing. The purpose of this feature
was to allow Sun's Visual WorkShop debugger to display expression evaluations.
However, the feature was implemented in as general a manner as possible and
could be used for displaying other information as well.
could be used for displaying other information as well. The functionality is
limited though, for advanced popups see |popup-window|.
Another way to use the balloon is with the 'balloonexpr' option. This is
completely user definable.
The Balloon Evaluation has some settable parameters too. For Motif the font
list and colors can be set via X resources (XmNballoonEvalFontList,
@ -106,9 +111,6 @@ The Balloon evaluation functions are also used to show a tooltip for the
toolbar. The 'ballooneval' option does not need to be set for this. But the
other settings apply.
Another way to use the balloon is with the 'balloonexpr' option. This is
completely user definable.
==============================================================================
2. Vim Compile Options *debugger-compilation*

View File

@ -278,7 +278,6 @@ wait don't use as argument to a function, conflicts with types.h
index shadows global declaration
time shadows global declaration
new C++ reserved keyword
try Borland C++ doesn't like it to be used as a variable.
clear Mac curses.h
echo Mac curses.h

View File

@ -1,4 +1,4 @@
*diff.txt* For Vim version 8.1. Last change: 2019 Feb 27
*diff.txt* For Vim version 8.1. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -16,8 +16,6 @@ The basics are explained in section |08.7| of the user manual.
4. Copying diffs |copy-diffs|
5. Diff options |diff-options|
{not in Vi}
==============================================================================
1. Starting diff mode *start-vimdiff*
@ -187,7 +185,7 @@ hidden buffers. You can use ":hide" to close a window without unloading the
buffer. If you don't want a buffer to remain used for the diff do ":set
nodiff" before hiding it.
*:dif* *:diffupdate*
*:dif* *:diff* *:diffupdate*
:dif[fupdate][!] Update the diff highlighting and folds.
Vim attempts to keep the differences updated when you make changes to the

View File

@ -1,4 +1,4 @@
*digraph.txt* For Vim version 8.1. Last change: 2019 Feb 17
*digraph.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -18,7 +18,6 @@ An alternative is using the 'keymap' option.
2. Using digraphs |digraphs-use|
3. Default digraphs |digraphs-default|
{Vi does not have any of these commands}
==============================================================================
1. Defining digraphs *digraphs-define*

View File

@ -1,7 +1,8 @@
/* vim:set ts=4 sw=4:
* this program makes a tags file for vim_ref.txt
*
* Usage: doctags vim_ref.txt vim_win.txt ... >tags
* This program makes a tags file for help text.
*
* Usage: doctags *.txt ... >tags
*
* A tag in this context is an identifier between stars, e.g. *c_files*
*/

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.1. Last change: 2018 Dec 16
*editing.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -44,14 +44,14 @@ An alternate file name is remembered for each window.
:keepalt {cmd} Execute {cmd} while keeping the current alternate file
name. Note that commands invoked indirectly (e.g.,
with a function) may still set the alternate file
name. {not in Vi}
name.
All file names are remembered in the buffer list. When you enter a file name,
for editing (e.g., with ":e filename") or writing (e.g., with ":w filename"),
the file name is added to the list. You can use the buffer list to remember
which files you edited and to quickly switch from one file to another (e.g.,
to copy text) with the |CTRL-^| command. First type the number of the file
and then hit CTRL-^. {Vi: only one alternate file name is remembered}
and then hit CTRL-^.
CTRL-G or *CTRL-G* *:f* *:fi* *:file*
@ -60,14 +60,13 @@ CTRL-G or *CTRL-G* *:f* *:fi* *:file*
option is set), and the file status (readonly,
modified, read errors, new file). See the 'shortmess'
option about how to make this message shorter.
{Vi does not include column number}
:f[ile]! like |:file|, but don't truncate the name even when
'shortmess' indicates this.
{count}CTRL-G Like CTRL-G, but prints the current file name with
full path. If the count is higher than 1 the current
buffer number is also given. {not in Vi}
buffer number is also given.
*g_CTRL-G* *word-count* *byte-count*
g CTRL-G Prints the current position of the cursor in five
@ -80,7 +79,6 @@ g CTRL-G Prints the current position of the cursor in five
column are shown, separated with a dash.
Also see the 'ruler' option and the |wordcount()|
function.
{not in Vi}
*v_g_CTRL-G*
{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Character, Line, and
@ -88,7 +86,6 @@ g CTRL-G Prints the current position of the cursor in five
displayed.
In Blockwise mode, Column count is also shown. (For
{Visual} see |Visual-mode|.)
{not in VI}
*:file_f*
:f[ile][!] {name} Sets the current file name to {name}. The optional !
@ -98,14 +95,12 @@ g CTRL-G Prints the current position of the cursor in five
to hold the old name.
*:0file*
:0f[ile][!] Remove the name of the current buffer. The optional !
avoids truncating the message, as with |:file|. {not
in Vi}
avoids truncating the message, as with |:file|.
:buffers
:files
:ls List all the currently known file names. See
'windows.txt' |:files| |:buffers| |:ls|. {not in
Vi}
'windows.txt' |:files| |:buffers| |:ls|.
Vim will remember the full path name of a file name that you enter. In most
cases when the file name is displayed only the name you typed is shown, but
@ -202,7 +197,6 @@ If you want to keep the changed buffer without saving it, switch on the
buffer and 'autowriteall' isn't set or the file can't
be written.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
*:edit!* *discard*
:e[dit]! [++opt] [+cmd]
@ -210,7 +204,6 @@ If you want to keep the changed buffer without saving it, switch on the
the current buffer. This is useful if you want to
start all over again.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
*:edit_f*
:e[dit] [++opt] [+cmd] {file}
@ -219,14 +212,12 @@ If you want to keep the changed buffer without saving it, switch on the
buffer, unless 'hidden' is set or 'autowriteall' is
set and the file can be written.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
*:edit!_f*
:e[dit]! [++opt] [+cmd] {file}
Edit {file} always. Discard any changes to the
current buffer.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
:e[dit] [++opt] [+cmd] #[count]
Edit the [count]th buffer (as shown by |:files|).
@ -234,7 +225,6 @@ If you want to keep the changed buffer without saving it, switch on the
#" doesn't work if the alternate buffer doesn't have a
file name, while CTRL-^ still works then.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
*:ene* *:enew*
:ene[w] Edit a new, unnamed buffer. This fails when changes
@ -244,19 +234,17 @@ If you want to keep the changed buffer without saving it, switch on the
If 'fileformats' is not empty, the first format given
will be used for the new buffer. If 'fileformats' is
empty, the 'fileformat' of the current buffer is used.
{not in Vi}
*:ene!* *:enew!*
:ene[w]! Edit a new, unnamed buffer. Discard any changes to
the current buffer.
Set 'fileformat' like |:enew|.
{not in Vi}
*:fin* *:find*
:fin[d][!] [++opt] [+cmd] {file}
Find {file} in 'path' and then |:edit| it.
{not in Vi} {not available when the |+file_in_path|
feature was disabled at compile time}
{not available when the |+file_in_path| feature was
disabled at compile time}
:{count}fin[d][!] [++opt] [+cmd] {file}
Just like ":find", but use the {count} match in
@ -278,7 +266,7 @@ If you want to keep the changed buffer without saving it, switch on the
:vie[w][!] [++opt] [+cmd] file
When used in Ex mode: Leave |Ex-mode|, go back to
Normal mode. Otherwise same as |:edit|, but set
'readonly' option for this buffer. {not in Vi}
'readonly' option for this buffer.
*CTRL-^* *CTRL-6*
CTRL-^ Edit the alternate file. Mostly the alternate file is
@ -297,7 +285,6 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
":e #[count]"). This is a quick way to switch between
files.
See |CTRL-^| above for further details.
{not in Vi}
[count]]f *]f* *[f*
[count][f Same as "gf". Deprecated.
@ -331,7 +318,6 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
For Unix the '~' character is expanded, like in
"~user/file". Environment variables are expanded too
|expand-env|.
{not in Vi}
{not available when the |+file_in_path| feature was
disabled at compile time}
@ -341,7 +327,6 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
Leading blanks are skipped, otherwise all blanks and
special characters are included in the file name.
(For {Visual} see |Visual-mode|.)
{not in VI}
*gF*
[count]gF Same as "gf", except if a number follows the file
@ -608,7 +593,7 @@ You can use the argument list with the following commands, and with the
expression functions |argc()| and |argv()|. These all work on the argument
list of the current window.
*:ar* *:args*
*:ar* *:arg* *:args*
:ar[gs] Print the argument list, with the current file in
square brackets.
@ -617,14 +602,12 @@ list of the current window.
the first one. This fails when changes have been made
and Vim does not want to |abandon| the current buffer.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
:ar[gs]! [++opt] [+cmd] {arglist} *:args_f!*
Define {arglist} as the new argument list and edit
the first one. Discard any changes to the current
buffer.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
:[count]arge[dit][!] [++opt] [+cmd] {name} .. *:arge* *:argedit*
Add {name}s to the argument list and edit it.
@ -637,7 +620,6 @@ list of the current window.
still be added to the argument list, but won't be
edited. No check for duplicates is done.
Also see |++opt| and |+cmd|.
{not in Vi}
:[count]arga[dd] {name} .. *:arga* *:argadd* *E479*
:[count]arga[dd]
@ -659,7 +641,6 @@ list of the current window.
There is no check for duplicates, it is possible to
add a file to the argument list twice.
The currently edited file is not changed.
{not in Vi}
Note: you can also use this method: >
:args ## x
< This will add the "x" item and sort the new list.
@ -673,7 +654,6 @@ list of the current window.
when it's deleted from the argument list.
Example: >
:argdel *.obj
< {not in Vi}
:[range]argd[elete] Delete the {range} files from the argument list.
Example: >
@ -688,7 +668,6 @@ list of the current window.
< Removes all the files from the arglist.
When the last number in the range is too high, up to
the last argument is deleted.
{not in Vi}
*:argu* *:argument*
:[count]argu[ment] [count] [++opt] [+cmd]
@ -697,25 +676,21 @@ list of the current window.
when changes have been made and Vim does not want to
|abandon| the current buffer.
Also see |++opt| and |+cmd|.
{not in Vi}
:[count]argu[ment]! [count] [++opt] [+cmd]
Edit file [count] in the argument list, discard any
changes to the current buffer. When [count] is
omitted the current entry is used.
Also see |++opt| and |+cmd|.
{not in Vi}
:[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163*
Edit [count] next file. This fails when changes have
been made and Vim does not want to |abandon| the
current buffer. Also see |++opt| and |+cmd|. {Vi: no
count or ++opt}.
current buffer. Also see |++opt| and |+cmd|.
:[count]n[ext]! [++opt] [+cmd]
Edit [count] next file, discard any changes to the
buffer. Also see |++opt| and |+cmd|. {Vi: no count
or ++opt}.
buffer. Also see |++opt| and |+cmd|.
:n[ext] [++opt] [+cmd] {arglist} *:next_f*
Same as |:args_f|.
@ -727,65 +702,63 @@ list of the current window.
Edit [count] previous file in argument list. This
fails when changes have been made and Vim does not
want to |abandon| the current buffer.
Also see |++opt| and |+cmd|. {Vi: no count or ++opt}.
Also see |++opt| and |+cmd|.
:[count]N[ext]! [count] [++opt] [+cmd]
Edit [count] previous file in argument list. Discard
any changes to the buffer. Also see |++opt| and
|+cmd|. {Vi: no count or ++opt}.
|+cmd|.
:[count]prev[ious] [count] [++opt] [+cmd] *:prev* *:previous*
Same as :Next. Also see |++opt| and |+cmd|. {Vi:
only in some versions}
Same as :Next. Also see |++opt| and |+cmd|.
*:rew* *:rewind*
:rew[ind] [++opt] [+cmd]
Start editing the first file in the argument list.
This fails when changes have been made and Vim does
not want to |abandon| the current buffer.
Also see |++opt| and |+cmd|. {Vi: no ++opt}
Also see |++opt| and |+cmd|.
:rew[ind]! [++opt] [+cmd]
Start editing the first file in the argument list.
Discard any changes to the buffer. Also see |++opt|
and |+cmd|. {Vi: no ++opt}
and |+cmd|.
*:fir* *:first*
:fir[st][!] [++opt] [+cmd]
Other name for ":rewind". {not in Vi}
Other name for ":rewind".
*:la* *:last*
:la[st] [++opt] [+cmd]
Start editing the last file in the argument list.
This fails when changes have been made and Vim does
not want to |abandon| the current buffer.
Also see |++opt| and |+cmd|. {not in Vi}
Also see |++opt| and |+cmd|.
:la[st]! [++opt] [+cmd]
Start editing the last file in the argument list.
Discard any changes to the buffer. Also see |++opt|
and |+cmd|. {not in Vi}
and |+cmd|.
*:wn* *:wnext*
:[count]wn[ext] [++opt]
Write current file and start editing the [count]
next file. Also see |++opt| and |+cmd|. {not in Vi}
next file. Also see |++opt| and |+cmd|.
:[count]wn[ext] [++opt] {file}
Write current file to {file} and start editing the
[count] next file, unless {file} already exists and
the 'writeany' option is off. Also see |++opt| and
|+cmd|. {not in Vi}
|+cmd|.
:[count]wn[ext]! [++opt] {file}
Write current file to {file} and start editing the
[count] next file. Also see |++opt| and |+cmd|. {not
in Vi}
[count] next file. Also see |++opt| and |+cmd|.
:[count]wN[ext][!] [++opt] [file] *:wN* *:wNext*
:[count]wp[revious][!] [++opt] [file] *:wp* *:wprevious*
Same as :wnext, but go to previous file instead of
next. {not in Vi}
next.
The [count] in the commands above defaults to one. For some commands it is
possible to use two counts. The last one (rightmost one) is used.
@ -826,8 +799,6 @@ fourth file in the argument list. This happens when you do ":e file".
LOCAL ARGUMENT LIST
{not in Vi}
*:arglocal*
:argl[ocal] Make a local copy of the global argument list.
Doesn't start editing another file.
@ -878,7 +849,6 @@ USING THE ARGUMENT LIST
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each file.
{not in Vi}
Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
@ -970,12 +940,11 @@ slower (but safer).
When 'filetype' is empty filetype detection is done
with the new name, before the file is written.
When the write was successful 'readonly' is reset.
{not in Vi}
*:up* *:update*
:[range]up[date][!] [++opt] [>>] [file]
Like ":write", but only write when the buffer has been
modified. {not in Vi}
modified.
WRITING WITH MULTIPLE BUFFERS *buffer-write*
@ -983,11 +952,11 @@ WRITING WITH MULTIPLE BUFFERS *buffer-write*
*:wa* *:wall*
:wa[ll] Write all changed buffers. Buffers without a file
name cause an error message. Buffers which are
readonly are not written. {not in Vi}
readonly are not written.
:wa[ll]! Write all changed buffers, even the ones that are
readonly. Buffers without a file name are not
written and cause an error message. {not in Vi}
written and cause an error message.
Vim will warn you if you try to overwrite a file that has been changed
@ -1118,7 +1087,7 @@ The names can be in upper- or lowercase.
:conf[irm] q[uit] Quit, but give prompt when changes have been made, or
the last file in the argument list has not been
edited. See |:confirm| and 'confirm'. {not in Vi}
edited. See |:confirm| and 'confirm'.
:q[uit]! Quit without writing, also when the current buffer has
changes. The buffer is unloaded, also when it has
@ -1131,7 +1100,7 @@ The names can be in upper- or lowercase.
:cq[uit] Quit always, without writing, and return an error
code. See |:cq|. Used for Manx's QuickFix mode (see
|quickfix|). {not in Vi}
|quickfix|).
*:wq*
:wq [++opt] Write the current file and quit. Writing fails when
@ -1169,7 +1138,7 @@ ZZ Write current file, if modified, and quit (same as
*ZQ*
ZQ Quit without checking for changes (same as ":q!").
{not in Vi}
MULTIPLE WINDOWS AND BUFFERS *window-exit*
@ -1177,36 +1146,35 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit*
:qa[ll] Exit Vim, unless there are some buffers which have been
changed. (Use ":bmod" to go to the next modified buffer).
When 'autowriteall' is set all changed buffers will be
written, like |:wqall|. {not in Vi}
written, like |:wqall|.
:conf[irm] qa[ll]
Exit Vim. Bring up a prompt when some buffers have been
changed. See |:confirm|. {not in Vi}
changed. See |:confirm|.
:qa[ll]! Exit Vim. Any changes to buffers are lost. {not in Vi}
:qa[ll]! Exit Vim. Any changes to buffers are lost.
Also see |:cquit|, it does the same but exits with a non-zero
value.
*:quita* *:quitall*
:quita[ll][!] Same as ":qall". {not in Vi}
:quita[ll][!] Same as ":qall".
:wqa[ll] [++opt] *:wqa* *:wqall* *:xa* *:xall*
:xa[ll] Write all changed buffers and exit Vim. If there are buffers
without a file name, which are readonly or which cannot be
written for another reason, Vim will not quit. {not in Vi}
written for another reason, Vim will not quit.
:conf[irm] wqa[ll] [++opt]
:conf[irm] xa[ll]
Write all changed buffers and exit Vim. Bring up a prompt
when some buffers are readonly or cannot be written for
another reason. See |:confirm|. {not in Vi}
another reason. See |:confirm|.
:wqa[ll]! [++opt]
:xa[ll]! Write all changed buffers, even the ones that are readonly,
and exit Vim. If there are buffers without a file name or
which cannot be written for another reason, or there is a
terminal with a running job, Vim will not quit.
{not in Vi}
==============================================================================
6. Dialogs *edit-dialogs*
@ -1304,9 +1272,10 @@ use has("browsefilter"): >
==============================================================================
7. The current directory *current-directory*
You may use the |:cd| and |:lcd| commands to change to another directory, so
you will not have to type that directory name in front of the file names. It
also makes a difference for executing external commands, e.g. ":!ls".
You can use the |:cd|, |:tcd| and |:lcd| commands to change to another
directory, so you will not have to type that directory name in front of the
file names. It also makes a difference for executing external commands, e.g.
":!ls".
Changing directory fails when the current buffer is modified, the '.' flag is
present in 'cpoptions' and "!" is not used in the command.
@ -1316,10 +1285,12 @@ present in 'cpoptions' and "!" is not used in the command.
name. On Unix systems: Change the current directory
to the home directory. Use |:pwd| to print the
current directory on all systems.
On Unix systems: clear any window-local directory.
:cd[!] {path} Change the current directory to {path}.
If {path} is relative, it is searched for in the
directories listed in |'cdpath'|.
Clear any window-local directory.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from
the |arglist| may change though!
@ -1329,36 +1300,54 @@ present in 'cpoptions' and "!" is not used in the command.
<
*:cd-* *E186*
:cd[!] - Change to the previous current directory (before the
previous ":cd {path}" command). {not in Vi}
previous ":cd {path}" command).
*:chd* *:chdir*
:chd[ir][!] [path] Same as |:cd|.
*:tcd*
:tcd[!] {path} Like |:cd|, but only set the directory for the current
tab. The current window will also use this directory.
The current directory is not changed for windows in
other tabs and for windows in the current tab that
have their own window-local directory.
*:tch* *:tchdir*
:tch[dir][!] Same as |:tcd|.
*:lc* *:lcd*
:lc[d][!] {path} Like |:cd|, but only set the current directory when
the cursor is in the current window. The current
directory for other windows is not changed, switching
to another window will stop using {path}.
{not in Vi}
*:lch* *:lchdir*
:lch[dir][!] Same as |:lcd|. {not in Vi}
:lch[dir][!] Same as |:lcd|.
*:pw* *:pwd* *E187*
:pw[d] Print the current directory name. {Vi: no pwd}
:pw[d] Print the current directory name.
Also see |getcwd()|.
So long as no |:lcd| command has been used, all windows share the same current
directory. Using a command to jump to another window doesn't change anything
for the current directory.
So long as no |:lcd| or |:tcd| command has been used, all windows share the
same current directory. Using a command to jump to another window doesn't
change anything for the current directory.
When a |:lcd| command has been used for a window, the specified directory
becomes the current directory for that window. Windows where the |:lcd|
command has not been used stick to the global current directory. When jumping
to another window the current directory will become the last specified local
current directory. If none was specified, the global current directory is
used.
When a |:cd| command is used, the current window will lose his local current
directory and will use the global current directory from now on.
command has not been used stick to the global or tab-local current directory.
When jumping to another window the current directory will become the last
specified local current directory. If none was specified, the global or
tab-local current directory is used.
When a |:tcd| command has been used for a tab page, the specified directory
becomes the current directory for the current tab page and the current window.
The current directory of other tab pages is not affected. When jumping to
another tab page, the current directory will become the last specified local
directory for that tab page. If the current tab has no local current directory
the global current directory is used.
When a |:cd| command is used, the current window and tab page will lose the
local current directory and will use the global current directory from now on.
After using |:cd| the full path name will be used for reading and writing
files. On some networked file systems this may cause problems. The result of
@ -1395,8 +1384,7 @@ There are a few things to remember when editing binary files:
file. Otherwise both <CR> <NL> and <NL> are considered to end a line
and when the file is written the <NL> will be replaced with <CR> <NL>.
- <Nul> characters are shown on the screen as ^@. You can enter them with
"CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle <Nul> characters in the
file}
"CTRL-V CTRL-@" or "CTRL-V 000"
- To insert a <NL> character in the file split a line. When writing the
buffer to a file a <NL> will be written for the <EOL>.
- Vim normally appends an <EOL> at the end of the file if there is none.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*farsi.txt* For Vim version 8.1. Last change: 2019 Feb 16
*farsi.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran
@ -6,7 +6,6 @@
Right to Left and Farsi Mapping for Vim *farsi* *Farsi*
{Vi does not have any of these commands}
*E27*
Farsi support has been removed in patch 8.1.0932. At that time it was

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 8.1. Last change: 2018 Apr 18
*filetype.txt* For Vim version 8.1. Last change: 2019 Jul 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -12,7 +12,6 @@ Filetypes *filetype* *file-type*
Also see |autocmd.txt|.
{Vi does not have any of these commands}
==============================================================================
1. Filetypes *filetypes* *file-types*
@ -643,6 +642,16 @@ To disable this behavior, set the following variable in your vimrc: >
let g:python_recommended_style = 0
QF QUICKFIX *qf.vim* *ft-qf-plugin*
The "qf" filetype is used for the quickfix window, see |quickfix-window|.
The quickfix filetype plugin includes configuration for displaying the command
that produced the quickfix list in the |status-line|. To disable this setting,
configure as follows: >
:let g:qf_disable_statusline = 1
R MARKDOWN *ft-rmd-plugin*
By default ftplugin/html.vim is not sourced. If you want it sourced, add to

View File

@ -1,4 +1,4 @@
*fold.txt* For Vim version 8.1. Last change: 2017 Mar 18
*fold.txt* For Vim version 8.1. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -14,7 +14,6 @@ You can find an introduction on folding in chapter 28 of the user manual.
3. Fold options |fold-options|
4. Behavior of folds |fold-behavior|
{Vi has no Folding}
{not available when compiled without the |+folding| feature}
==============================================================================
@ -442,7 +441,7 @@ zk Move upwards to the end of the previous fold. A closed fold
EXECUTING COMMANDS ON FOLDS ~
:[range]foldd[oopen] {cmd} *:foldd* *:folddoopen*
:[range]foldd[oopen] {cmd} *:foldd* *:folddo* *:folddoopen*
Execute {cmd} on all lines that are not in a closed fold.
When [range] is given, only these lines are used.
Each time {cmd} is executed the cursor is positioned on the

View File

@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.1. Last change: 2019 Jan 06
*gui.txt* For Vim version 8.1. Last change: 2019 May 20
VIM REFERENCE MANUAL by Bram Moolenaar
@ -11,14 +11,14 @@ Vim's Graphical User Interface *gui* *GUI*
3. Mouse Control |gui-mouse|
4. Making GUI Selections |gui-selections|
5. Menus |menus|
6. Extras |gui-extras|
7. Shell Commands |gui-shell|
6. Font |gui-font|
7. Extras |gui-extras|
8. Shell Commands |gui-shell|
Other GUI documentation:
|gui_x11.txt| For specific items of the X11 GUI.
|gui_w32.txt| For specific items of the Win32 GUI.
{Vi does not have any of these commands}
==============================================================================
1. Starting the GUI *gui-start* *E229* *E233*
@ -1037,7 +1037,136 @@ make a selection.
Note that a menu that starts with ']' will not be displayed.
==============================================================================
6. Extras *gui-extras*
6. Font
This section describes font related options.
GUIFONT *gui-font*
'guifont' is the option that tells Vim what font to use. In its simplest form
the value is just one font name. It can also be a list of font names
separated with commas. The first valid font is used. When no valid font can
be found you will get an error message.
On systems where 'guifontset' is supported (X11) and 'guifontset' is not
empty, then 'guifont' is not used. See |xfontset|.
Note: As to the GTK GUIs, no error is given against any invalid names, and the
first element of the list is always picked up and made use of. This is
because, instead of identifying a given name with a font, the GTK GUIs use it
to construct a pattern and try to look up a font which best matches the
pattern among available fonts, and this way, the matching never fails. An
invalid name doesn't matter because a number of font properties other than
name will do to get the matching done.
Spaces after a comma are ignored. To include a comma in a font name precede
it with a backslash. Setting an option requires an extra backslash before a
space and a backslash. See also |option-backslash|. For example: >
:set guifont=Screen15,\ 7x13,font\\,with\\,commas
will make Vim try to use the font "Screen15" first, and if it fails it will
try to use "7x13" and then "font,with,commas" instead.
If none of the fonts can be loaded, Vim will keep the current setting. If an
empty font list is given, Vim will try using other resource settings (for X,
it will use the Vim.font resource), and finally it will try some builtin
default which should always be there ("7x13" in the case of X). The font
names given should be "normal" fonts. Vim will try to find the related bold
and italic fonts.
For Win32, GTK, Motif, Mac OS and Photon: >
:set guifont=*
will bring up a font requester, where you can pick the font you want.
The font name depends on the GUI used. See |setting-guifont| for a way to set
'guifont' for various systems.
For the GTK+ 2 and 3 GUIs, the font name looks like this: >
:set guifont=Andale\ Mono\ 11
That's all. XLFDs are not used. For Chinese this is reported to work well: >
if has("gui_gtk2")
set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
endif
<
(Replace gui_gtk2 with gui_gtk3 for the GTK+ 3 GUI)
For Mac OSX you can use something like this: >
:set guifont=Monaco:h10
Also see 'macatsui', it can help fix display problems.
*E236*
Note that the fonts must be mono-spaced (all characters have the same width).
An exception is GTK: all fonts are accepted, but mono-spaced fonts look best.
To preview a font on X11, you might be able to use the "xfontsel" program.
The "xlsfonts" program gives a list of all available fonts.
For the Win32 GUI *E244* *E245*
- Takes these options in the font name (use a ':' to separate the options):
hXX - height is XX (points, can be floating-point)
wXX - width is XX (points, can be floating-point)
WXX - weight is XX (see Note on Weights below)
b - bold. This is equivalent to setting the weight to 700.
i - italic
u - underline
s - strikeout
cXX - character set XX. Valid charsets are: ANSI, ARABIC, BALTIC,
CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, HANGEUL,
HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, SYMBOL, THAI,
TURKISH and VIETNAMESE. Normally you would use "cDEFAULT".
qXX - quality XX. Valid quality names are: PROOF, DRAFT, ANTIALIASED,
NONANTIALIASED, CLEARTYPE and DEFAULT. Normally you would use
"qDEFAULT".
Some quality values are not supported in legacy OSs.
- A '_' can be used in the place of a space, so you don't need to use
backslashes to escape the spaces.
Examples: >
:set guifont=courier_new:h12:w5:b:cRUSSIAN
:set guifont=Andale_Mono:h7.5:w4.5
See also |font-sizes|.
Note on Weights: Fonts often come with a variety of weights. "Normal" weights
in Windows have a value of 400 and, left unspecified, this is the value that
will be used when attempting to find fonts. Windows will often match fonts
based on their weight with higher priority than the font name which means a
Book or Medium variant of a font might be used despite specifying a Light or
ExtraLight variant. If you are experiencing heavier weight substitution, then
explicitly setting a lower weight value may mitigate against this unwanted
substitution.
GUIFONTWIDE *gui-fontwide*
When not empty, 'guifontwide' specifies a comma-separated list of fonts to be
used for double-width characters. The first font that can be loaded is used.
Note: The size of these fonts must be exactly twice as wide as the one
specified with 'guifont' and the same height. If there is a mismatch then the
text will not be drawn correctly.
All GUI versions but GTK+:
'guifontwide' is only used when 'encoding' is set to "utf-8" and 'guifontset'
is empty or invalid.
When 'guifont' is set and a valid font is found in it and 'guifontwide' is
empty Vim will attempt to find a matching double-width font and set
'guifontwide' to it.
GTK+ GUI only: *guifontwide_gtk*
If set and valid, 'guifontwide' is always used for double width characters,
even if 'encoding' is not set to "utf-8".
Vim does not attempt to find an appropriate value for 'guifontwide'
automatically. If 'guifontwide' is empty Pango/Xft will choose the font for
characters not available in 'guifont'. Thus you do not need to set
'guifontwide' at all unless you want to override the choice made by Pango/Xft.
Windows +multibyte only: *guifontwide_win_mbyte*
If set and valid, 'guifontwide' is used for IME instead of 'guifont'.
==============================================================================
7. Extras *gui-extras*
This section describes other features which are related to the GUI.
@ -1049,7 +1178,8 @@ This section describes other features which are related to the GUI.
get "<Modifiers-Key>".
- In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within
mappings of special keys and mouse events. E.g.: :map <M-LeftDrag> <LeftDrag>
mappings of special keys and mouse events.
E.g.: :map <M-LeftDrag> <LeftDrag>
- In the GUI, several normal keys may have modifiers in mappings etc, these
are <Space>, <Tab>, <NL>, <CR>, <Esc>.
@ -1081,13 +1211,13 @@ A recommended Japanese font is MS Mincho. You can find info here:
http://www.lexikan.com/mincho.htm
==============================================================================
7. Shell Commands *gui-shell*
8. Shell Commands *gui-shell*
For the X11 GUI the external commands are executed inside the gvim window.
See |gui-pty|.
WARNING: Executing an external command from the X11 GUI will not always
work. "normal" commands like "ls", "grep" and "make" mostly work fine.
WARNING: Executing an external command from the X11 GUI will not always work.
"normal" commands like "ls", "grep" and "make" mostly work fine.
Commands that require an intelligent terminal like "less" and "ispell" won't
work. Some may even hang and need to be killed from another terminal. So be
careful!

View File

@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 8.1. Last change: 2017 Oct 27
*gui_w32.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -19,7 +19,6 @@ Other relevant documentation:
|gui.txt| For generic items of the GUI.
|os_win32.txt| For Win32 specific items.
{Vi does not have a Windows GUI}
==============================================================================
1. Starting the GUI *gui-w32-start*
@ -31,6 +30,17 @@ The GUI will always run in the Windows subsystem. Mostly shells automatically
return with a command prompt after starting gvim. If not, you should use the
"start" command: >
start gvim [options] file ..
< *E988*
The console version with the |-g| option may also start the GUI by executing
gvim.exe: >
vim -g [options] file ..
To make this work, gvim.exe must exist in the same directory as the vim.exe,
and this feature must be enabled at compile time.
One may also use `:gui` from the console version. However, this is an
experimental feature and this feature must be enabled at compile time.
It uses a session file to recreate the current state of the console Vim in the
GUI Vim.
Note: All fonts (bold, italic) must be of the same size!!! If you don't do
this, text will disappear or mess up the display. Vim does not check the font
@ -403,7 +413,7 @@ be opened as normal. See |drag-n-drop|.
*:simalt* *:sim*
:sim[alt] {key} simulate pressing {key} while holding Alt pressed.
{not in Vi} {only for Win32 versions}
{only for Win32 versions}
Note: ":si" means ":s" with the "i" flag.
Normally, Vim takes control of all Alt-<Key> combinations, to increase the

View File

@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 8.1. Last change: 2018 May 06
*gui_x11.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -19,7 +19,6 @@ Vim's Graphical User Interface *gui-x11* *GUI-X11*
Other relevant documentation:
|gui.txt| For generic items of the GUI.
{Vi does not have any of these commands}
==============================================================================
1. Starting the X11 GUI *gui-x11-start* *E665*
@ -48,7 +47,7 @@ that waits for gvim to exit), start gvim with "gvim -f", "vim -gf" or use
":gui -f". Don't use "vim -fg", because "-fg" specifies the foreground
color.
When using "gvim -f" and then ":gui", Vim will run in the foreground. The
When using "vim -f" and then ":gui", Vim will run in the foreground. The
"-f" argument will be remembered. To force running Vim in the background use
":gui -b".

View File

@ -1,4 +1,4 @@
*hebrew.txt* For Vim version 8.1. Last change: 2007 Jun 14
*hebrew.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem)
@ -10,10 +10,7 @@ The supporting 'rightleft' functionality was originally created by Avner
Lottem. <alottem at gmail dot com> Ron Aaron <ron at ronware dot org> is
currently helping support these features.
{Vi does not have any of these commands}
All this is only available when the |+rightleft| feature was enabled at
compile time.
{only available when the |+rightleft| feature was enabled at compile time}
Introduction

View File

@ -1,4 +1,4 @@
*help.txt* For Vim version 8.1. Last change: 2019 Jan 17
*help.txt* For Vim version 8.1. Last change: 2019 Jul 21
VIM - main help file
k
@ -139,10 +139,12 @@ Advanced editing ~
|fold.txt| hide (fold) ranges of lines
Special issues ~
|testing.txt| testing Vim and Vim scripts
|print.txt| printing
|remote.txt| using Vim as a server or client
|term.txt| using different terminals and mice
|terminal.txt| Terminal window support
|popup.txt| popop window support
Programming language support ~
|indent.txt| automatic indenting for C and other languages

View File

@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 8.1. Last change: 2017 Mar 19
*helphelp.txt* For Vim version 8.1. Last change: 2019 May 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -24,7 +24,6 @@ Help on help files *helphelp*
the very top.
The 'helplang' option is used to select a language, if
the main help file is available in several languages.
{not in Vi}
*{subject}* *E149* *E661*
:h[elp] {subject} Like ":help", additionally jump to the tag {subject}.
@ -97,7 +96,6 @@ Help on help files *helphelp*
command from a following command. You need to type
CTRL-V first to insert the <LF> or <CR>. Example: >
:help so<C-V><CR>only
< {not in Vi}
:h[elp]! [subject] Like ":help", but in non-English help files prefer to
find a tag in a file with the same language as the
@ -133,7 +131,6 @@ Help on help files *helphelp*
|:execute| when needed.
Compressed help files will not be searched (Fedora
compresses the help files).
{not in Vi}
*:lh* *:lhelpgrep*
:lh[elpgrep] {pattern}[@xx]
@ -147,11 +144,11 @@ Help on help files *helphelp*
*:exu* *:exusage*
:exu[sage] Show help on Ex commands. Added to simulate the Nvi
command. {not in Vi}
command.
*:viu* *:viusage*
:viu[sage] Show help on Normal mode commands. Added to simulate
the Nvi command. {not in Vi}
the Nvi command.
When no argument is given to |:help| the file given with the 'helpfile' option
will be opened. Otherwise the specified tag is searched for in all "doc/tags"
@ -199,7 +196,6 @@ command: >
Only for backwards compatibility. It now executes the
ToolBar.FindHelp menu entry instead of using a builtin
dialog. {only when compiled with |+GUI_GTK|}
{not in Vi}
*:helpt* *:helptags*
*E154* *E150* *E151* *E152* *E153* *E670*
@ -224,8 +220,6 @@ command: >
To rebuild the help tags in the runtime directory
(requires write permission there): >
:helptags $VIMRUNTIME/doc
< {not in Vi}
==============================================================================
2. Translated help files *help-translated*

View File

@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 8.1. Last change: 2018 Jan 21
*if_cscop.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Andy Kahn
@ -21,7 +21,6 @@ functions as you normally would with |tags|.
7. Availability & Information |cscope-info|
This is currently for Unix and Win32 only.
{Vi does not have any of these commands}
==============================================================================
1. Cscope introduction *cscope-intro*

View File

@ -1,4 +1,4 @@
*if_lua.txt* For Vim version 8.1. Last change: 2015 Oct 16
*if_lua.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Luis Carvalho
@ -10,23 +10,21 @@ The Lua Interface to Vim *lua* *Lua*
2. The vim module |lua-vim|
3. List userdata |lua-list|
4. Dict userdata |lua-dict|
5. Funcref userdata |lua-funcref|
6. Buffer userdata |lua-buffer|
7. Window userdata |lua-window|
8. The luaeval function |lua-luaeval|
9. Dynamic loading |lua-dynamic|
5. Blob userdata |lua-blob|
6. Funcref userdata |lua-funcref|
7. Buffer userdata |lua-buffer|
8. Window userdata |lua-window|
9. luaeval() Vim function |lua-luaeval|
10. Dynamic loading |lua-dynamic|
{Vi does not have any of these commands}
The Lua interface is available only when Vim was compiled with the
|+lua| feature.
{only available when Vim was compiled with the |+lua| feature}
==============================================================================
1. Commands *lua-commands*
*:lua*
:[range]lua {chunk}
Execute Lua chunk {chunk}. {not in Vi}
Execute Lua chunk {chunk}.
Examples:
>
@ -37,7 +35,7 @@ Examples:
:[range]lua << {endmarker}
{script}
{endmarker}
Execute Lua script {script}. {not in Vi}
Execute Lua script {script}.
Note: This command doesn't work when the Lua
feature wasn't compiled in. To avoid errors, see
|script-here|.
@ -74,7 +72,6 @@ If you use LuaJIT you can also use this: >
If the value returned by the function is a string it
becomes the text of the line in the current turn. The
default for [range] is the whole file: "1,$".
{not in Vi}
Examples:
>
@ -88,7 +85,7 @@ Examples:
*:luafile*
:[range]luafile {file}
Execute Lua script in {file}. {not in Vi}
Execute Lua script in {file}.
The whole argument is used as a single file name.
Examples:
@ -140,6 +137,14 @@ Vim evaluation and command execution, and others.
:echo luaeval('vim.dict(t)')
:" {'1': 3.141593, '2': v:false,
:" 'say': 'hi'}
<
vim.blob([arg]) Returns an empty blob or, if "arg" is a Lua
string, returns a blob b such that b is
equivalent to "arg" as a byte string.
Examples: >
:lua s = "12ab\x00\x80\xfe\xff"
:echo luaeval('vim.blob(s)')
:" 0z31326162.0080FEFF
<
vim.funcref({name}) Returns a Funcref to function {name} (see
|Funcref|). It is equivalent to Vim's
@ -260,7 +265,34 @@ Examples:
<
==============================================================================
5. Funcref userdata *lua-funcref*
5. Blob userdata *lua-blob*
Blob userdata represent vim blobs. A blob "b" has the following properties:
Properties
----------
o "#b" is the length of blob "b", equivalent to "len(b)" in Vim.
o "b[k]" returns the k-th item in "b"; "b" is zero-indexed, as in Vim.
To modify the k-th item, simply do "b[k] = number"; in particular,
"b[#b] = number" can append a byte to tail.
Methods
-------
o "b:add(bytes)" appends "bytes" to the end of "b".
Examples:
>
:let b = 0z001122
:lua b = vim.eval('b') -- same 'b'
:lua print(b, b[0], #b)
:lua b[1] = 32
:lua b[#b] = 0x33 -- append a byte to tail
:lua b:add("\x80\x81\xfe\xff")
:echo b
<
==============================================================================
6. Funcref userdata *lua-funcref*
Funcref userdata represent funcref variables in Vim. Funcrefs that were
defined with a "dict" attribute need to be obtained as a dictionary key
@ -293,7 +325,7 @@ Examples:
<
==============================================================================
6. Buffer userdata *lua-buffer*
7. Buffer userdata *lua-buffer*
Buffer userdata represent vim buffers. A buffer userdata "b" has the following
properties and methods:
@ -345,7 +377,7 @@ Examples:
<
==============================================================================
7. Window userdata *lua-window*
8. Window userdata *lua-window*
Window objects represent vim windows. A window userdata "w" has the following
properties and methods:
@ -377,7 +409,7 @@ Examples:
<
==============================================================================
8. The luaeval function *lua-luaeval* *lua-eval*
9. luaeval() Vim function *lua-luaeval* *lua-eval*
The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
"luaeval". "luaeval" takes an expression string and an optional argument and
@ -390,10 +422,10 @@ returns the result of the expression. It is semantically equivalent in Lua to:
end
<
Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and
list, dict, and funcref userdata are converted to their Vim respective types,
while Lua booleans are converted to numbers. An error is thrown if conversion
of any of the remaining Lua types, including userdata other than lists, dicts,
and funcrefs, is attempted.
list, dict, blob, and funcref userdata are converted to their Vim respective
types, while Lua booleans are converted to numbers. An error is thrown if
conversion of any of the remaining Lua types, including userdata other than
lists, dicts, blobs, and funcrefs, is attempted.
Examples: >
@ -408,7 +440,7 @@ Examples: >
==============================================================================
9. Dynamic loading *lua-dynamic*
10. Dynamic loading *lua-dynamic*
On MS-Windows and Unix the Lua library can be loaded dynamically. The
|:version| output then includes |+lua/dyn|.

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 8.1. Last change: 2017 Oct 08
*if_mzsch.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Sergey Khorev
@ -15,10 +15,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme*
7. Dynamic loading |mzscheme-dynamic|
8. MzScheme setup |mzscheme-setup|
{Vi does not have any of these commands}
The MzScheme interface is available only if Vim was compiled with the
|+mzscheme| feature.
{only available when Vim was compiled with the |+mzscheme| feature}
Based on the work of Brent Fulgham.
Dynamic loading added by Sergey Khorev
@ -40,7 +37,7 @@ To speed up the process, you might also want to use --disable-gracket and
*:mzscheme* *:mz*
:[range]mz[scheme] {stmt}
Execute MzScheme statement {stmt}. {not in Vi}
Execute MzScheme statement {stmt}.
:[range]mz[scheme] << {endmarker}
{script}
@ -51,7 +48,7 @@ To speed up the process, you might also want to use --disable-gracket and
|script-here|.
*:mzfile* *:mzf*
:[range]mzf[ile] {file} Execute the MzScheme script in {file}. {not in Vi}
:[range]mzf[ile] {file} Execute the MzScheme script in {file}.
All of these commands do essentially the same thing - they execute a piece of
MzScheme code, with the "current range" set to the given line

View File

@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 8.1. Last change: 2008 Aug 16
*if_ole.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Paul Moore
@ -12,10 +12,8 @@ The OLE Interface to Vim *ole-interface*
4. Registration |ole-registration|
5. MS Visual Studio integration |MSVisualStudio|
{Vi does not have any of these commands}
OLE is only available when compiled with the |+ole| feature. See
src/if_ole.INSTALL.
{only available when compiled with the |+ole| feature. See
src/if_ole.INSTALL}
An alternative is using the client-server communication |clientserver|.
==============================================================================

View File

@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 8.1. Last change: 2019 Jan 29
*if_perl.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Sven Verdoolaege
@ -11,9 +11,7 @@ Perl and Vim *perl* *Perl*
3. Using the Perl interface |perl-using|
4. Dynamic loading |perl-dynamic|
{Vi does not have any of these commands}
The Perl interface only works when Vim was compiled with the |+perl| feature.
{only available when Vim was compiled with the |+perl| feature}
==============================================================================
1. Editing Perl files *perl-editing*

View File

@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 8.1. Last change: 2018 Jan 30
*if_pyth.txt* For Vim version 8.1. Last change: 2019 May 04
VIM REFERENCE MANUAL by Paul Moore
@ -19,8 +19,6 @@ The Python Interface to Vim *python* *Python*
11. Python X |python_x|
12. Building with Python support |python-building|
{Vi does not have any of these commands}
The Python 2.x interface is available only when Vim was compiled with the
|+python| feature.
The Python 3 interface is available only when Vim was compiled with the
@ -76,7 +74,6 @@ and "EOF" do not have any indent.
None. If a string is returned, it becomes the text of
the line in the current turn. The default for [range]
is the whole file: "1,$".
{not in Vi}
Examples:
>
@ -98,7 +95,7 @@ python. For example: >
*:pyfile* *:pyf*
:[range]pyf[ile] {file}
Execute the Python script in {file}. The whole
argument is used as a single file name. {not in Vi}
argument is used as a single file name.
Both of these commands do essentially the same thing - they execute a piece of
Python code, with the "current range" |python-range| set to the given line

View File

@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 8.1. Last change: 2019 Jan 29
*if_ruby.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Shugo Maeda
@ -11,12 +11,12 @@ The Ruby Interface to Vim *ruby* *Ruby*
3. Vim::Buffer objects |ruby-buffer|
4. Vim::Window objects |ruby-window|
5. Global variables |ruby-globals|
6. Dynamic loading |ruby-dynamic|
6. rubyeval() Vim function |ruby-rubyeval|
7. Dynamic loading |ruby-dynamic|
{Vi does not have any of these commands}
*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
The Ruby interface only works when Vim was compiled with the |+ruby| feature.
{only available when Vim was compiled with the |+ruby| feature}
The home page for ruby is http://www.ruby-lang.org/. You can find links for
downloading Ruby there.
@ -198,7 +198,16 @@ $curwin The current window object.
$curbuf The current buffer object.
==============================================================================
6. Dynamic loading *ruby-dynamic*
6. rubyeval() Vim function *ruby-rubyeval*
To facilitate bi-directional interface, you can use |rubyeval()| function to
evaluate Ruby expressions and pass their values to Vim script.
The Ruby value "true", "false" and "nil" are converted to v:true, v:false and
v:null, respectively.
==============================================================================
7. Dynamic loading *ruby-dynamic*
On MS-Windows and Unix the Ruby library can be loaded dynamically. The
|:version| output then includes |+ruby/dyn|.

View File

@ -1,4 +1,4 @@
*if_tcl.txt* For Vim version 8.1. Last change: 2016 Jan 01
*if_tcl.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Ingo Wilken
@ -16,9 +16,8 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL*
8. Examples |tcl-examples|
9. Dynamic loading |tcl-dynamic|
{Vi does not have any of these commands} *E280*
The Tcl interface only works when Vim was compiled with the |+tcl| feature.
*E280*
{only available when Vim was compiled with the |+tcl| feature}
WARNING: There are probably still some bugs. Please send bug reports,
comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
@ -66,12 +65,11 @@ To see what version of Tcl you have: >
possible to add or delete lines using this command.
If {cmd} returns an error, the command is interrupted.
The default for [range] is the whole file: "1,$".
See |tcl-var-line| and |tcl-var-lnum|. {not in Vi}
See |tcl-var-line| and |tcl-var-lnum|.
*:tclfile* *:tclf*
:tclf[ile] {file} Execute the Tcl script in {file}. This is the same as
":tcl source {file}", but allows file name completion.
{not in Vi}
Note that Tcl objects (like variables) persist from one command to the next,

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 8.1. Last change: 2019 Mar 17
*index.txt* For Vim version 8.1. Last change: 2019 Jun 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -862,6 +862,10 @@ tag char note action in Normal mode ~
position the cursor at the start (left
side) of the screen
|zt| zt redraw, cursor line at top of window
|zuw| zuw undo |zw|
|zug| zug undo |zg|
|zuW| zuW undo |zW|
|zuG| zuG undo |zG|
|zv| zv open enough folds to view the cursor line
|zw| zw mark word as wrong (bad) spelled word
|zx| zx re-apply 'foldlevel' and do "zv"
@ -1042,10 +1046,11 @@ tag command action in Command-line editing mode ~
command-line from history.
|c_CTRL-Q| CTRL-Q same as CTRL-V, unless it's used for terminal
control flow
|c_CTRL-R| CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A}
|c_CTRL-R| CTRL-R {regname}
insert the contents of a register or object
under the cursor as if typed
|c_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A}
|c_CTRL-R_CTRL-R| CTRL-R CTRL-R {regname}
|c_CTRL-R_CTRL-O| CTRL-R CTRL-O {regname}
insert the contents of a register or object
under the cursor literally
CTRL-S (used for terminal control flow)
@ -1187,11 +1192,15 @@ tag command action ~
|:cNfile| :cNf[ile] go to last error in previous file
|:cabbrev| :ca[bbrev] like ":abbreviate" but for Command-line mode
|:cabclear| :cabc[lear] clear all abbreviations for Command-line mode
|:cabove| :cabo[ve] go to error above current line
|:caddbuffer| :cad[dbuffer] add errors from buffer
|:caddexpr| :cadde[xpr] add errors from expr
|:caddfile| :caddf[ile] add error message to current quickfix list
|:cafter| :caf[ter] go to error after current cursor
|:call| :cal[l] call a function
|:catch| :cat[ch] part of a :try command
|:cbefore| :cbef[ore] go to error before current cursor
|:cbelow| :cbel[ow] go to error below current line
|:cbottom| :cbo[ttom] scroll to the bottom of the quickfix window
|:cbuffer| :cb[uffer] parse error messages and jump to first error
|:cc| :cc go to specific error
@ -1232,6 +1241,7 @@ tag command action ~
|:compiler| :comp[iler] do settings for a specific compiler
|:continue| :con[tinue] go back to :while
|:confirm| :conf[irm] prompt user when confirmation required
|:const| :cons[t] create a variable as a constant
|:copen| :cope[n] open quickfix window
|:cprevious| :cp[revious] go to previous error
|:cpfile| :cpf[ile] go to last error in previous file
@ -1349,12 +1359,16 @@ tag command action ~
|:lNext| :lN[ext] go to previous entry in location list
|:lNfile| :lNf[ile] go to last entry in previous file
|:list| :l[ist] print lines
|:labove| :lab[ove] go to location above current line
|:laddexpr| :lad[dexpr] add locations from expr
|:laddbuffer| :laddb[uffer] add locations from buffer
|:laddfile| :laddf[ile] add locations to current location list
|:lafter| :laf[ter] go to location after current cursor
|:last| :la[st] go to the last file in the argument list
|:language| :lan[guage] set the language (locale)
|:later| :lat[er] go to newer change, redo
|:lbefore| :lbef[ore] go to location before current cursor
|:lbelow| :lbel[ow] go to location below current line
|:lbottom| :lbo[ttom] scroll to the bottom of the location window
|:lbuffer| :lb[uffer] parse locations and jump to first location
|:lcd| :lc[d] change directory locally
@ -1547,6 +1561,7 @@ tag command action ~
buffer list
|:scriptnames| :scr[iptnames] list names of all sourced Vim scripts
|:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script
|:scriptversion| :scriptv[ersion] version of Vim script used
|:scscope| :scs[cope] split window and execute cscope command
|:set| :se[t] show or set options
|:setfiletype| :setf[iletype] set 'filetype', unless it was set already
@ -1621,6 +1636,8 @@ tag command action ~
|:tab| :tab create new tab when opening new window
|:tag| :ta[g] jump to tag
|:tags| :tags show the contents of the tag stack
|:tcd| :tcd change directory for tab page
|:tchdir| :tch[dir] change directory for tab page
|:tcl| :tc[l] execute Tcl command
|:tcldo| :tcld[o] execute Tcl command for each line
|:tclfile| :tclf[ile] execute Tcl script file
@ -1698,6 +1715,7 @@ tag command action ~
|:xmapclear| :xmapc[lear] remove all mappings for Visual mode
|:xmap| :xm[ap] like ":map" but for Visual mode
|:xmenu| :xme[nu] add menu for Visual mode
|:xrestore| :xr[estore] restores the X server connection
|:xnoremap| :xn[oremap] like ":noremap" but for Visual mode
|:xnoremenu| :xnoreme[nu] like ":noremenu" but for Visual mode
|:xunmap| :xu[nmap] like ":unmap" but for Visual mode

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.1. Last change: 2019 Jan 29
*insert.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -59,23 +59,22 @@ CTRL-C Quit insert mode, go back to Normal mode. Do not check for
event.
*i_CTRL-@*
CTRL-@ Insert previously inserted text and stop insert. {Vi: only
when typed as first char, only up to 128 chars}
CTRL-@ Insert previously inserted text and stop insert.
*i_CTRL-A*
CTRL-A Insert previously inserted text. {not in Vi}
CTRL-A Insert previously inserted text.
*i_CTRL-H* *i_<BS>* *i_BS*
<BS> or CTRL-H Delete the character before the cursor (see |i_backspacing|
about joining lines).
See |:fixdel| if your <BS> key does not do what you want.
{Vi: does not delete autoindents}
*i_<Del>* *i_DEL*
<Del> Delete the character under the cursor. If the cursor is at
the end of the line, and the 'backspace' option includes
"eol", delete the <EOL>; the next line is appended after the
current one.
See |:fixdel| if your <Del> key does not do what you want.
{not in Vi}
*i_CTRL-W*
CTRL-W Delete the word before the cursor (see |i_backspacing| about
joining lines). See the section "word motions",
@ -102,10 +101,10 @@ CTRL-K {char1} [char2]
key, the code for that key is inserted in <> form. For
example, the string "<S-Space>" can be entered by typing
<C-K><S-Space> (two keys). Neither char is considered for
mapping. {not in Vi}
mapping.
CTRL-N Find next keyword (see |i_CTRL-N|). {not in Vi}
CTRL-P Find previous keyword (see |i_CTRL-P|). {not in Vi}
CTRL-N Find next keyword (see |i_CTRL-N|).
CTRL-P Find previous keyword (see |i_CTRL-P|).
CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
Insert the contents of a register. Between typing CTRL-R and
@ -142,7 +141,7 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
converted to a String.
When append() or setline() is invoked the undo
sequence will be broken.
See |registers| about registers. {not in Vi}
See |registers| about registers.
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
Insert the contents of a register. Works like using a single
@ -154,7 +153,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
< Options 'textwidth', 'formatoptions', etc. still apply. If
you also want to avoid these, use CTRL-R CTRL-O, see below.
The '.' register (last inserted text) is still inserted as
typed. {not in Vi}
typed.
CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
Insert the contents of a register literally and don't
@ -163,31 +162,30 @@ CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
insert the text above the current line, like with `P`.
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed. {not in Vi}
typed.
CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P*
Insert the contents of a register literally and fix the
indent, like |[<MiddleMouse>|.
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed. {not in Vi}
typed.
*i_CTRL-T*
CTRL-T Insert one shiftwidth of indent at the start of the current
line. The indent is always rounded to a 'shiftwidth' (this is
vi compatible). {Vi: only when in indent}
vi compatible).
*i_CTRL-D*
CTRL-D Delete one shiftwidth of indent at the start of the current
line. The indent is always rounded to a 'shiftwidth' (this is
vi compatible). {Vi: CTRL-D works only when used after
autoindent}
vi compatible).
*i_0_CTRL-D*
0 CTRL-D Delete all indent in the current line. {Vi: CTRL-D works
only when used after autoindent}
0 CTRL-D Delete all indent in the current line.
*i_^_CTRL-D*
^ CTRL-D Delete all indent in the current line. The indent is
restored in the next line. This is useful when inserting a
label. {Vi: CTRL-D works only when used after autoindent}
label.
*i_CTRL-V*
CTRL-V Insert next non-digit literally. For special keys, the
@ -195,7 +193,7 @@ CTRL-V Insert next non-digit literally. For special keys, the
decimal, octal or hexadecimal value of a character
|i_CTRL-V_digit|.
The characters typed right after CTRL-V are not considered for
mapping. {Vi: no decimal byte entry}
mapping.
Note: When CTRL-V is mapped (e.g., to paste text) you can
often use CTRL-Q instead |i_CTRL-Q|.
@ -206,12 +204,12 @@ CTRL-Q Same as CTRL-V.
CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
be given to complete words or scroll the window. See
|i_CTRL-X| and |ins-completion|. {not in Vi}
|i_CTRL-X| and |ins-completion|.
*i_CTRL-E*
CTRL-E Insert the character which is below the cursor. {not in Vi}
CTRL-E Insert the character which is below the cursor.
*i_CTRL-Y*
CTRL-Y Insert the character which is above the cursor. {not in Vi}
CTRL-Y Insert the character which is above the cursor.
Note that for CTRL-E and CTRL-Y 'textwidth' is not used, to be
able to copy characters from a long line.
@ -228,7 +226,6 @@ CTRL-_ Switch between languages, as follows:
is set.
Please refer to |rileft.txt| for more information about
right-to-left mode.
{not in Vi}
Only if compiled with the |+rightleft| feature.
*i_CTRL-^*
@ -248,14 +245,12 @@ CTRL-^ Toggle the use of typing language characters.
The language mappings are normally used to type characters
that are different from what the keyboard produces. The
'keymap' option can be used to install a whole number of them.
{not in Vi}
*i_CTRL-]*
CTRL-] Trigger abbreviation, without inserting a character. {not in
Vi}
CTRL-] Trigger abbreviation, without inserting a character.
*i_<Insert>*
<Insert> Toggle between Insert and Replace mode. {not in Vi}
<Insert> Toggle between Insert and Replace mode.
-----------------------------------------------------------------------
*i_backspacing*
@ -277,7 +272,6 @@ For backwards compatibility the values "0", "1" and "2" are also allowed, see
If the 'backspace' option does contain "eol" and the cursor is in column 1
when one of the three keys is used, the current line is joined with the
previous line. This effectively deletes the <EOL> in front of the cursor.
{Vi: does not cross lines, does not delete past start position of insert}
*i_CTRL-V_digit*
With CTRL-V the decimal, octal or hexadecimal value of a character can be
@ -379,8 +373,8 @@ CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L*
CTRL-G u break undo sequence, start new change *i_CTRL-G_u*
CTRL-G U don't break undo with next left/right cursor *i_CTRL-G_U*
movement (but only if the cursor stays
within same the line)
movement, if the cursor stays within
same the line
-----------------------------------------------------------------------
Note: If the cursor keys take you out of Insert mode, check the 'noesckeys'
@ -519,15 +513,14 @@ The 'expandtab' option is off by default. Note that in Replace mode, a single
character is replaced with several spaces. The result of this is that the
number of characters in the line increases. Backspacing will delete one
space at a time. The original character will be put back for only one space
that you backspace over (the last one). {Vi does not have the 'expandtab'
option}
that you backspace over (the last one).
*ins-smarttab*
When the 'smarttab' option is on, a <Tab> inserts 'shiftwidth' positions at
the beginning of a line and 'tabstop' positions in other places. This means
that often spaces instead of a <Tab> character are inserted. When 'smarttab'
is off, a <Tab> always inserts 'tabstop' positions, and 'shiftwidth' is only
used for ">>" and the like. {not in Vi}
used for ">>" and the like.
*ins-softtabstop*
When the 'softtabstop' option is non-zero, a <Tab> inserts 'softtabstop'
@ -567,14 +560,13 @@ If the 'expandtab' option is on, a <Tab> will replace one character with
several spaces. The result of this is that the number of characters in the
line increases. Backspacing will delete one space at a time. The original
character will be put back for only one space that you backspace over (the
last one). {Vi does not have the 'expandtab' option}
last one).
==============================================================================
6. Virtual Replace mode *vreplace-mode* *Virtual-Replace-mode*
Enter Virtual Replace mode with the "gR" command in normal mode.
{not available when compiled without the |+vreplace| feature}
{Vi does not have Virtual Replace mode}
Virtual Replace mode is similar to Replace mode, but instead of replacing
actual characters in the file, you are replacing screen real estate, so that
@ -642,6 +634,7 @@ and one of the CTRL-X commands. You exit CTRL-X mode by typing a key that is
not a valid CTRL-X mode command. Valid keys are the CTRL-X command itself,
CTRL-N (next), and CTRL-P (previous).
To get the current completion information, |complete_info()| can be used.
Also see the 'infercase' option if you want to adjust the case of the match.
*complete_CTRL-E*
@ -1104,6 +1097,9 @@ items:
icase when non-zero case is to be ignored when comparing
items to be equal; when omitted zero is used, thus
items that only differ in case are added
equal when non-zero, always treat this item to be equal when
comparing. Which means, "equal=1" disables filtering
of this item.
dup when non-zero this match will be added even when an
item with the same word is already present.
empty when non-zero this match will be added even when it is
@ -1111,10 +1107,10 @@ items:
user_data custom data which is associated with the item and
available in |v:completed_item|
All of these except "icase", "dup" and "empty" must be a string. If an item
does not meet these requirements then an error message is given and further
items in the list are not used. You can mix string and Dictionary items in
the returned list.
All of these except "icase", "equal", "dup" and "empty" must be a string. If
an item does not meet these requirements then an error message is given and
further items in the list are not used. You can mix string and Dictionary
items in the returned list.
The "menu" item is used in the popup menu and may be truncated, thus it should
be relatively short. The "info" item can be longer, it will be displayed in
@ -1803,7 +1799,7 @@ I Insert text before the first non-blank in the line
the last blank.
*gI*
gI Insert text in column 1 [count] times. {not in Vi}
gI Insert text in column 1 [count] times.
*gi*
gi Insert text in the same position as where Insert mode
@ -1814,19 +1810,16 @@ gi Insert text in the same position as where Insert mode
but NOT for inserted/deleted characters.
When the |:keepjumps| command modifier is used the |'^|
mark won't be changed.
{not in Vi}
*o*
o Begin a new line below the cursor and insert text,
repeat [count] times. {Vi: blank [count] screen
lines}
repeat [count] times.
When the '#' flag is in 'cpoptions' the count is
ignored.
*O*
O Begin a new line above the cursor and insert text,
repeat [count] times. {Vi: blank [count] screen
lines}
repeat [count] times.
When the '#' flag is in 'cpoptions' the count is
ignored.
@ -1881,7 +1874,6 @@ NOTE: These commands cannot be used with |:global| or |:vglobal|.
script, the insertion only starts after the function
or script is finished.
This command does not work from |:normal|.
{not in Vi}
*:stopi* *:stopinsert*
:stopi[nsert] Stop Insert mode as soon as possible. Works like
@ -1898,12 +1890,10 @@ NOTE: These commands cannot be used with |:global| or |:vglobal|.
Note that when using this command in a function or
script that the replacement will only start after
the function or script is finished.
{not in Vi}
*:startgreplace*
:startg[replace][!] Just like |:startreplace|, but use Virtual Replace
mode, like with |gR|.
{not in Vi}
==============================================================================
10. Inserting a file *inserting-file*

View File

@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.1. Last change: 2019 Jan 07
*intro.txt* For Vim version 8.1. Last change: 2019 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar
@ -34,9 +34,7 @@ It can be accessed from within Vim with the <Help> or <F1> key and with the
is not located in the default place. You can jump to subjects like with tags:
Use CTRL-] to jump to a subject under the cursor, use CTRL-T to jump back.
Throughout this manual the differences between Vi and Vim are mentioned in
curly braces, like this: {Vi does not have on-line help}. See |vi_diff.txt|
for a summary of the differences between Vim and Vi.
The differences between Vi and Vim are mentioned in |vi_diff.txt|.
This manual refers to Vim on various machines. There may be small differences
between different computers and terminals. Besides the remarks given in this
@ -67,14 +65,21 @@ contain links to the most recent version of Vim. The FAQ is a list of
Frequently Asked Questions. Read this if you have problems.
Vim home page: https://www.vim.org/
Vim FAQ: https://vimhelp.appspot.com/vim_faq.txt.html
Vim FAQ: https://vimhelp.org/vim_faq.txt.html
Downloading: https://www.vim.org/download.php
Asking questions, finding answers: https://vi.stackexchange.com/
"Vi and Vim Stack Exchange is a question and answer site for people using the
vi and Vim families of text editors"
Usenet News group where Vim is discussed: *news* *usenet*
comp.editors
This group is also for other editors. If you write about Vim, don't forget to
mention that.
You can access it here:
https://groups.google.com/forum/#!topic/comp.editors
*mail-list* *maillist*
There are several mailing lists for Vim:
@ -648,11 +653,7 @@ Ex :vi -- -- -- -- --
the command.
In the last case <Esc> may be the character defined with the 'wildchar'
option, in which case it will start command-line completion. You can
ignore that and type <Esc> again. {Vi: when hitting <Esc> the command-line
is executed. This is unexpected for most people; therefore it was changed
in Vim. But when the <Esc> is part of a mapping, the command-line is
executed. If you want the Vi behaviour also when typing <Esc>, use ":cmap
^V<Esc> ^V^M"}
ignore that and type <Esc> again.
*4 Go from Normal to Select mode by:
- use the mouse to select text while 'selectmode' contains "mouse"
- use a non-printable command to move the cursor while keeping the Shift
@ -703,7 +704,6 @@ gQ Switch to "Ex" mode like with "Q", but really behave
like typing ":" commands after another. All command
line editing, completion etc. is available.
Use the ":vi" command |:visual| to exit "Ex" mode.
{not in Vi}
==============================================================================
7. The window contents *window-contents*
@ -716,7 +716,6 @@ exceptions:
character.
- When inserting text in one window, other windows on the same text are not
updated until the insert is finished.
{Vi: The screen is not always updated on slow terminals}
Lines longer than the window width will wrap, unless the 'wrap' option is off
(see below). The 'linebreak' option can be set to wrap at a blank character.
@ -762,7 +761,6 @@ If there is a single line that is too long to fit in the window, this is a
special situation. Vim will show only part of the line, around where the
cursor is. There are no special characters shown, so that you can edit all
parts of this line.
{Vi: gives an "internal error" on lines that do not fit in the window}
The '@' occasion in the 'highlight' option can be used to set special
highlighting for the '@' and '~' characters. This makes it possible to
@ -777,7 +775,7 @@ that is not shown, the screen is scrolled horizontally. The advantage of
this method is that columns are shown as they are and lines that cannot fit
on the screen can be edited. The disadvantage is that you cannot see all the
characters of a line at once. The 'sidescroll' option can be set to the
minimal number of columns to scroll. {Vi: has no 'wrap' option}
minimal number of columns to scroll.
All normal ASCII characters are displayed directly on the screen. The <Tab>
is replaced with the number of spaces that it represents. Other non-printing
@ -809,16 +807,14 @@ command characters 'showcmd' on off
cursor position 'ruler' off off
The current mode is "-- INSERT --" or "-- REPLACE --", see |'showmode'|. The
command characters are those that you typed but were not used yet. {Vi: does
not show the characters you typed or the cursor position}
command characters are those that you typed but were not used yet.
If you have a slow terminal you can switch off the status messages to speed
up editing:
:set nosc noru nosm
If there is an error, an error message will be shown for at least one second
(in reverse video). {Vi: error messages may be overwritten with other
messages before you have a chance to read them}
(in reverse video).
Some commands show how many lines were affected. Above which threshold this
happens can be controlled with the 'report' option (default 2).
@ -831,7 +827,7 @@ Make it at least 40 characters wide to be able to read most messages on the
last line.
On most Unix systems, resizing the window is recognized and handled correctly
by Vim. {Vi: not ok}
by Vim.
==============================================================================
8. Definitions *definitions*

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 8.1. Last change: 2018 Dec 18
*map.txt* For Vim version 8.1. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -53,7 +53,7 @@ modes.
:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap*
:map! {lhs} {rhs} |mapmode-ic| *:map!*
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap*
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lma* *:lmap*
:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap*
:tma[p] {lhs} {rhs} |mapmode-t| *:tma* *:tmap*
Map the key sequence {lhs} to {rhs} for the modes
@ -66,17 +66,17 @@ modes.
:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap*
:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap*
:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap*
:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap*
:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snore* *:snoremap*
:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap*
:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!*
:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap*
:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inor* *:inoremap*
:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap*
:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap*
:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnor* *:cnoremap*
:tno[remap] {lhs} {rhs} |mapmode-t| *:tno* *:tnoremap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. Disallow mapping of
{rhs}, to avoid nested and recursive mappings. Often
used to redefine a command. {not in Vi}
used to redefine a command.
:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap*
@ -88,7 +88,7 @@ modes.
:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!*
:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap*
:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap*
:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap*
:cu[nmap] {lhs} |mapmode-c| *:cu* *:cun* *:cunmap*
:tunma[p] {lhs} |mapmode-t| *:tunma* *:tunmap*
Remove the mapping of {lhs} for the modes where the
map command applies. The mapping may remain defined
@ -110,7 +110,7 @@ modes.
:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear*
:tmapc[lear] |mapmode-t| *:tmapc* *:tmapclear*
Remove ALL mappings for the modes where the map
command applies. {not in Vi}
command applies.
Use the <buffer> argument to remove buffer-local
mappings |:map-<buffer>|
Warning: This also removes the default mappings.
@ -143,7 +143,6 @@ modes.
:tma[p] {lhs} |mapmode-t| *:tmap_l*
List the key mappings for the key sequences starting
with {lhs} in the modes where the map command applies.
{not in Vi}
These commands are used to map a key or key sequence to a string of
characters. You can use this to put command sequences under function keys,
@ -160,7 +159,6 @@ decide if "aa" or "aaa" should be mapped. This means that after typing "aa"
that mapping won't get expanded yet, Vim is waiting for another character.
If you type a space, then "foo" will get inserted, plus the space. If you
type "a", then "bar" will get inserted.
{Vi does not allow ambiguous mappings}
1.2 SPECIAL ARGUMENTS *:map-arguments*
@ -1016,45 +1014,40 @@ See |:verbose-cmd| for more information.
*:norea* *:noreabbrev*
:norea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
same as ":ab", but no remapping for this {rhs} {not
in Vi}
Same as ":ab", but no remapping for this {rhs}.
*:ca* *:cabbrev*
*:ca* *:cab* *:cabbrev*
:ca[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
same as ":ab", but for Command-line mode only. {not
in Vi}
Same as ":ab", but for Command-line mode only.
*:cuna* *:cunabbrev*
:cuna[bbrev] {lhs} same as ":una", but for Command-line mode only. {not
in Vi}
:cuna[bbrev] {lhs} Same as ":una", but for Command-line mode only.
*:cnorea* *:cnoreabbrev*
:cnorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
same as ":ab", but for Command-line mode only and no
remapping for this {rhs} {not in Vi}
remapping for this {rhs}
*:ia* *:iabbrev*
:ia[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
same as ":ab", but for Insert mode only. {not in Vi}
Same as ":ab", but for Insert mode only.
*:iuna* *:iunabbrev*
:iuna[bbrev] {lhs} same as ":una", but for insert mode only. {not in
Vi}
:iuna[bbrev] {lhs} Same as ":una", but for insert mode only.
*:inorea* *:inoreabbrev*
:inorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
same as ":ab", but for Insert mode only and no
remapping for this {rhs} {not in Vi}
Same as ":ab", but for Insert mode only and no
remapping for this {rhs}.
*:abc* *:abclear*
:abc[lear] [<buffer>] Remove all abbreviations. {not in Vi}
:abc[lear] [<buffer>] Remove all abbreviations.
*:iabc* *:iabclear*
:iabc[lear] [<buffer>] Remove all abbreviations for Insert mode. {not in Vi}
:iabc[lear] [<buffer>] Remove all abbreviations for Insert mode.
*:cabc* *:cabclear*
:cabc[lear] [<buffer>] Remove all abbreviations for Command-line mode. {not
in Vi}
:cabc[lear] [<buffer>] Remove all abbreviations for Command-line mode.
*using_CTRL-V*
It is possible to use special characters in the rhs of an abbreviation.
@ -1147,8 +1140,7 @@ to find out what they are defined to.
The |:scriptnames| command can be used to see which scripts have been sourced
and what their <SNR> number is.
This is all {not in Vi} and {not available when compiled without the |+eval|
feature}.
This is all {not available when compiled without the |+eval| feature}.
==============================================================================
4. User-defined commands *user-commands*
@ -1193,9 +1185,10 @@ scripts.
:com[mand] *:com* *:command*
List all user-defined commands. When listing commands,
the characters in the first two columns are
the characters in the first columns are:
! Command has the -bang attribute
" Command has the -register attribute
| Command has the -bar attribute
b Command is local to current buffer
(see below for details on attributes)
The list can be filtered on command name with
@ -1390,7 +1383,7 @@ Possible attributes are:
number.
-count=N A count (default N) which is specified either in the line
number position, or as an initial argument (like |:Next|).
Specifying -count (without a default) acts like -count=0
-count acts like -count=0
Note that -range=N and -count=N are mutually exclusive - only one should be
specified.
@ -1400,14 +1393,17 @@ It is possible that the special characters in the range like ., $ or % which
by default correspond to the current line, last line and the whole buffer,
relate to arguments, (loaded) buffers, windows or tab pages.
Possible values are:
-addr=lines Range of lines (this is the default)
-addr=arguments Range for arguments
-addr=buffers Range for buffers (also not loaded buffers)
-addr=loaded_buffers Range for loaded buffers
-addr=windows Range for windows
-addr=tabs Range for tab pages
-addr=other other kind of range
Possible values are (second column is the short name used in listing):
-addr=lines Range of lines (this is the default for -range)
-addr=arguments arg Range for arguments
-addr=buffers buf Range for buffers (also not loaded buffers)
-addr=loaded_buffers load Range for loaded buffers
-addr=windows win Range for windows
-addr=tabs tab Range for tab pages
-addr=quickfix qf Range for quickfix entries
-addr=other ? other kind of range; can use ".", "$" and "%"
as with "lines" (this is the default for
-count)
Special cases ~

View File

@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 8.1. Last change: 2018 Jan 21
*mbyte.txt* For Vim version 8.1. Last change: 2019 Jul 04
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@ -620,6 +620,21 @@ windows maintains a table of which groups of characters are required for a
locale. You have to specify all the fonts that a locale requires in the
'guifontset' option.
Setting the 'guifontset' option also means that all font names will be handled
as a fontset name. Also the ones used for the "font" argument of the
|:highlight| command.
Note the difference between 'guifont' and 'guifontset': In 'guifont'
the comma-separated names are alternative names, one of which will be
used. In 'guifontset' the whole string is one fontset name,
including the commas. It is not possible to specify alternative
fontset names.
This example works on many X11 systems: >
:set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-*
<
The fonts must match with the current locale. If fonts for the character sets
that the current locale uses are not included, setting 'guifontset' will fail.
NOTE: The fontset always uses the current locale, even though 'encoding' may
be set to use a different charset. In that situation you might want to use
'guifont' and 'guifontwide' instead of 'guifontset'.
@ -928,11 +943,12 @@ To input multibyte characters on Windows, you can use an Input Method Editor
IME many many many times. Because IME with status on is hooking all of your
key inputs, you cannot input 'j', 'k', or almost all of keys to Vim directly.
This |+multi_byte_ime| feature help this. It reduce times of switch status of
IME manually. In normal mode, there are almost no need working IME, even
editing multibyte text. So exiting insert mode with ESC, Vim memorize last
status of IME and force turn off IME. When re-enter insert mode, Vim revert
IME status to that memorized automatically.
The |+multi_byte_ime| feature helps for this. It reduces the number of times
the IME status has to be switched manually. In Normal mode, there is almost
no need to use IME, even when editing multibyte text. So when exiting Insert
mode, Vim memorizes the last status of IME and turns off IME. When
re-entering Insert mode, Vim sets the IME status to that memorized status
automatically.
This works on not only insert-normal mode, but also search-command input and
replace mode.

View File

@ -1,4 +1,4 @@
*message.txt* For Vim version 8.1. Last change: 2018 Dec 30
*message.txt* For Vim version 8.1. Last change: 2019 May 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -247,6 +247,9 @@ format of the file. The file will not be marked unmodified. If you care
about the loss of information, set the 'fileencoding' option to another value
that can handle the characters in the buffer and write again. If you don't
care, you can abandon the buffer or reset the 'modified' option.
If there is a backup file, when 'writebackup' or 'backup' is set, it will not
be deleted, so you can move it back into place if you want to discard the
changes.
*E302* >
Could not rename swap file
@ -703,11 +706,13 @@ Or use ":set nocp".
This happens when an Ex command with mandatory argument(s) was executed, but
no argument has been specified.
*E474* *E475* >
*E474* *E475* *E983* >
Invalid argument
Invalid argument: {arg}
Duplicate argument: {arg}
An Ex command has been executed, but an invalid argument has been specified.
An Ex command or function has been executed, but an invalid argument has been
specified.
*E488* >
Trailing characters
@ -796,7 +801,6 @@ and the screen is about to be redrawn:
like pressing <Space>. This makes it impossible to select text though.
-> For the GUI clicking the left mouse button in the last line works like
pressing <Space>.
{Vi: only ":" commands are interpreted}
If you accidentally hit <Enter> or <Space> and you want to see the displayed
text then use |g<|. This only works when 'more' is set.
@ -828,10 +832,10 @@ Type effect ~
G down all the way, until the hit-enter
prompt
<BS> or k or <Up> one line back (*)
u up a page (half a screen) (*)
b or <PageUp> back a screen (*)
g back to the start (*)
<BS> or k or <Up> one line back
u up a page (half a screen)
b or <PageUp> back a screen
g back to the start
q, <Esc> or CTRL-C stop the listing
: stop the listing and enter a
@ -840,13 +844,11 @@ Type effect ~
the clipboard ("* and "+ registers)
{menu-entry} what the menu is defined to in
Cmdline-mode.
<LeftMouse> (**) next page
<LeftMouse> next page (*)
Any other key causes the meaning of the keys to be displayed.
(*) backwards scrolling is {not in Vi}. Only scrolls back to where messages
started to scroll.
(**) Clicking the left mouse button only works:
(*) Clicking the left mouse button only works:
- For the GUI: in the last line of the screen.
- When 'r' is included in 'mouse' (but then selecting text won't work).

View File

@ -1,4 +1,4 @@
*mlang.txt* For Vim version 8.1. Last change: 2018 May 06
*mlang.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -17,7 +17,6 @@ The basics are explained in the user manual: |usr_45.txt|.
Also see |help-translated| for multi-language help.
{Vi does not have any of these features}
{not available when compiled without the |+multi_lang| feature}
==============================================================================

View File

@ -1,4 +1,4 @@
*motion.txt* For Vim version 8.1. Last change: 2019 Mar 02
*motion.txt* For Vim version 8.1. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -53,6 +53,7 @@ or change text. The following operators are available:
|!| ! filter through an external program
|=| = filter through 'equalprg' or C-indenting if empty
|gq| gq text formatting
|gw| gw text formatting with no cursor movement
|g?| g? ROT13 encoding
|>| > shift right
|<| < shift left
@ -185,7 +186,7 @@ l or *l*
TEXT column (if possible). Most other commands stay
in the same SCREEN column. <Home> works like "1|",
which differs from "0" when the line starts with a
<Tab>. {not in Vi}
<Tab>.
*^*
^ To the first non-blank character of the line.
@ -202,7 +203,7 @@ $ or <End> To the end of the line. When a count is given also go
*g_*
g_ To the last non-blank character of the line and
[count - 1] lines downward |inclusive|. {not in Vi}
[count - 1] lines downward |inclusive|.
*g0* *g<Home>*
g0 or g<Home> When lines wrap ('wrap' on): To the first character of
@ -211,7 +212,7 @@ g0 or g<Home> When lines wrap ('wrap' on): To the first character of
When lines don't wrap ('wrap' off): To the leftmost
character of the current line that is on the screen.
Differs from "0" when the first character of the line
is not on the screen. {not in Vi}
is not on the screen.
*g^*
g^ When lines wrap ('wrap' on): To the first non-blank
@ -220,12 +221,11 @@ g^ When lines wrap ('wrap' on): To the first non-blank
When lines don't wrap ('wrap' off): To the leftmost
non-blank character of the current line that is on the
screen. Differs from "^" when the first non-blank
character of the line is not on the screen. {not in
Vi}
character of the line is not on the screen.
*gm*
gm Like "g0", but half a screenwidth to the right (or as
much as possible). {not in Vi}
much as possible).
*g$* *g<End>*
g$ or g<End> When lines wrap ('wrap' on): To the last character of
@ -240,7 +240,6 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of
instead of going to the end of the line.
When 'virtualedit' is enabled moves to the end of the
screen line.
{not in Vi}
*bar*
| To screen column [count] in the current line.
@ -296,12 +295,12 @@ CTRL-N [count] lines downward |linewise|.
gk or *gk* *g<Up>*
g<Up> [count] display lines upward. |exclusive| motion.
Differs from 'k' when lines wrap, and when used with
an operator, because it's not linewise. {not in Vi}
an operator, because it's not linewise.
gj or *gj* *g<Down>*
g<Down> [count] display lines downward. |exclusive| motion.
Differs from 'j' when lines wrap, and when used with
an operator, because it's not linewise. {not in Vi}
an operator, because it's not linewise.
*-*
- <minus> [count] lines upward, on the first non-blank
@ -324,7 +323,7 @@ G Goto line [count], default last line, on the first
*<C-End>*
<C-End> Goto line [count], default last line, on the last
character |inclusive|. {not in Vi}
character |inclusive|.
<C-Home> or *gg* *<C-Home>*
gg Goto line [count], default first line, on the first
@ -342,7 +341,7 @@ gg Goto line [count], default first line, on the first
non-blank in the line |linewise|. To compute the new
line number this formula is used:
({count} * number-of-lines + 99) / 100
See also 'startofline' option. {not in Vi}
See also 'startofline' option.
:[range]go[to] [count] *:go* *:goto* *go*
[count]go Go to [count] byte in the buffer. Default [count] is
@ -352,7 +351,6 @@ gg Goto line [count], default first line, on the first
'fileformat' setting.
Also see the |line2byte()| function, and the 'o'
option in 'statusline'.
{not in Vi}
{not available when compiled without the
|+byte_offset| feature}
@ -412,9 +410,7 @@ WORD before the fold.
Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is
on a non-blank. This is because "cw" is interpreted as change-word, and a
word does not include the following white space. {Vi: "cw" when on a blank
followed by other blanks changes only the first blank; this is probably a
bug, because "dw" deletes all the blanks}
word does not include the following white space.
Another special case: When using the "w" motion in combination with an
operator and the last word moved over is at the end of a line, the end of
@ -516,7 +512,6 @@ including white space, the commands starting with "i" select an "inner" object
without white space, or just the white space. Thus the "inner" commands
always select less text than the "a" commands.
These commands are {not in Vi}.
These commands are not available when the |+textobjects| feature has been
disabled at compile time.
Also see `gn` and `gN`, operating on the last search pattern.
@ -780,7 +775,7 @@ m< or m> Set the |'<| or |'>| mark. Useful to change what the
*'A* *'0* *`A* *`0*
'{A-Z0-9} `{A-Z0-9} To the mark {A-Z0-9} in the file where it was set (not
a motion command when in another file). {not in Vi}
a motion command when in another file).
*g'* *g'a* *g`* *g`a*
g'{mark} g`{mark}
@ -790,18 +785,17 @@ g'{mark} g`{mark}
< jumps to the last known position in a file. See
$VIMRUNTIME/vimrc_example.vim.
Also see |:keepjumps|.
{not in Vi}
*:marks*
:marks List all the current marks (not a motion command).
The |'(|, |')|, |'{| and |'}| marks are not listed.
The first column has number zero.
{not in Vi}
*E283*
:marks {arg} List the marks that are mentioned in {arg} (not a
motion command). For example: >
:marks aB
< to list marks 'a' and 'B'. {not in Vi}
< to list marks 'a' and 'B'.
*:delm* *:delmarks*
:delm[arks] {marks} Delete the specified marks. Marks that can be deleted
@ -815,11 +809,9 @@ g'{mark} g`{mark}
:delmarks p-z deletes marks in the range p to z
:delmarks ^.[] deletes marks ^ . [ ]
:delmarks \" deletes mark "
< {not in Vi}
:delm[arks]! Delete all marks for the current buffer, but not marks
A-Z or 0-9.
{not in Vi}
A mark is not visible in any way. It is just a position in the file that is
remembered. Do not confuse marks with named registers, they are totally
@ -838,12 +830,12 @@ deletes the lines from the cursor position to mark 't'. Hint: Use mark 't' for
Top, 'b' for Bottom, etc.. Lowercase marks are restored when using undo and
redo.
Uppercase marks 'A to 'Z include the file name. {Vi: no uppercase marks} You
can use them to jump from file to file. You can only use an uppercase mark
with an operator if the mark is in the current file. The line number of the
mark remains correct, even if you insert/delete lines or edit another file for
a moment. When the 'viminfo' option is not empty, uppercase marks are kept in
the .viminfo file. See |viminfo-file-marks|.
Uppercase marks 'A to 'Z include the file name. You can use them to jump from
file to file. You can only use an uppercase mark with an operator if the mark
is in the current file. The line number of the mark remains correct, even if
you insert/delete lines or edit another file for a moment. When the 'viminfo'
option is not empty, uppercase marks are kept in the .viminfo file. See
|viminfo-file-marks|.
Numbered marks '0 to '9 are quite different. They can not be set directly.
They are only present when using a viminfo file |viminfo-file|. Basically '0
@ -854,11 +846,11 @@ Numbered mark should be stored. See |viminfo-file-marks|.
*'[* *`[*
'[ `[ To the first character of the previously changed
or yanked text. {not in Vi}
or yanked text.
*']* *`]*
'] `] To the last character of the previously changed or
yanked text. {not in Vi}
yanked text.
After executing an operator the Cursor is put at the beginning of the text
that was operated upon. After a put command ("p" or "P") the cursor is
@ -876,7 +868,7 @@ was made yet in the current file.
'< `< To the first line or character of the last selected
Visual area in the current buffer. For block mode it
may also be the last character in the first line (to
be able to define the block). {not in Vi}.
be able to define the block).
*'>* *`>*
'> `> To the last line or character of the last selected
@ -884,7 +876,7 @@ was made yet in the current file.
may also be the first character of the last line (to
be able to define the block). Note that 'selection'
applies, the position may be just after the Visual
area. {not in Vi}.
area.
*''* *``*
'' `` To the position before the latest jump, or where the
@ -900,13 +892,12 @@ was made yet in the current file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
*'^* *`^*
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
|gi| command. Not set when the |:keepjumps| command
modifier was used. {not in Vi}
modifier was used.
*'.* *`.*
'. `. To the position where the last change was made. The
@ -916,30 +907,29 @@ was made yet in the current file.
command changed. For example when inserting a word,
the position will be on the last character.
To jump to older changes use |g;|.
{not in Vi}
*'(* *`(*
'( `( To the start of the current sentence, like the |(|
command. {not in Vi}
command.
*')* *`)*
') `) To the end of the current sentence, like the |)|
command. {not in Vi}
command.
*'{* *`{*
'{ `{ To the start of the current paragraph, like the |{|
command. {not in Vi}
command.
*'}* *`}*
'} `} To the end of the current paragraph, like the |}|
command. {not in Vi}
command.
These commands are not marks themselves, but jump to a mark:
*]'*
]' [count] times to next line with a lowercase mark below
the cursor, on the first non-blank character in the
line. {not in Vi}
line.
*]`*
]` [count] times to lowercase mark after the cursor. {not
@ -948,14 +938,13 @@ These commands are not marks themselves, but jump to a mark:
*['*
[' [count] times to previous line with a lowercase mark
before the cursor, on the first non-blank character in
the line. {not in Vi}
the line.
*[`*
[` [count] times to lowercase mark before the cursor.
{not in Vi}
:loc[kmarks] {command} *:loc* *:lockmarks*
:loc[kmarks] {command} *:loc* *:lock* *:lockmarks*
Execute {command} without adjusting marks. This is
useful when changing text in a way that the line count
will be the same when the change has completed.
@ -981,7 +970,7 @@ These commands are not marks themselves, but jump to a mark:
- folds
- diffs
:kee[pmarks] {command} *:kee* *:keepmarks*
:kee[pmarks] {command} *:kee* *:keep* *:keepmarks*
Currently only has effect for the filter command
|:range!|:
- When the number of lines after filtering is equal to
@ -1030,23 +1019,19 @@ commands that start editing a new file.
*CTRL-O*
CTRL-O Go to [count] Older cursor position in jump list
(not a motion command).
{not in Vi}
{not available without the |+jumplist| feature}
<Tab> or *CTRL-I* *<Tab>*
CTRL-I Go to [count] newer cursor position in jump list
(not a motion command).
{not in Vi}
{not available without the |+jumplist| feature}
*:ju* *:jumps*
:ju[mps] Print the jump list (not a motion command).
{not in Vi}
{not available without the |+jumplist| feature}
*:cle* *:clearjumps*
:cle[arjumps] Clear the jump list of the current window.
{not in Vi}
{not available without the |+jumplist| feature}
*jumplist*
@ -1131,14 +1116,12 @@ g; Go to [count] older position in change list.
positions go to the oldest change.
If there is no older change an error message is given.
(not a motion command)
{not in Vi}
{not available without the |+jumplist| feature}
*g,* *E663*
g, Go to [count] newer cursor position in change list.
Just like |g;| but in the opposite direction.
(not a motion command)
{not in Vi}
{not available without the |+jumplist| feature}
When using a count you jump as far back or forward as possible. Thus you can
@ -1229,19 +1212,19 @@ remembered.
*[(*
[( go to [count] previous unmatched '('.
|exclusive| motion. {not in Vi}
|exclusive| motion.
*[{*
[{ go to [count] previous unmatched '{'.
|exclusive| motion. {not in Vi}
|exclusive| motion.
*])*
]) go to [count] next unmatched ')'.
|exclusive| motion. {not in Vi}
|exclusive| motion.
*]}*
]} go to [count] next unmatched '}'.
|exclusive| motion. {not in Vi}
|exclusive| motion.
The above four commands can be used to go to the start or end of the current
code block. It is like doing "%" on the '(', ')', '{' or '}' at the other
@ -1254,25 +1237,25 @@ bring you back to the switch statement.
similar structured language). When not before the
start of a method, jump to the start or end of the
class. When no '{' is found after the cursor, this is
an error. |exclusive| motion. {not in Vi}
an error. |exclusive| motion.
*]M*
]M Go to [count] next end of a method (for Java or
similar structured language). When not before the end
of a method, jump to the start or end of the class.
When no '}' is found after the cursor, this is an
error. |exclusive| motion. {not in Vi}
error. |exclusive| motion.
*[m*
[m Go to [count] previous start of a method (for Java or
similar structured language). When not after the
start of a method, jump to the start or end of the
class. When no '{' is found before the cursor this is
an error. |exclusive| motion. {not in Vi}
an error. |exclusive| motion.
*[M*
[M Go to [count] previous end of a method (for Java or
similar structured language). When not after the
end of a method, jump to the start or end of the
class. When no '}' is found before the cursor this is
an error. |exclusive| motion. {not in Vi}
an error. |exclusive| motion.
The above two commands assume that the file contains a class with methods.
The class definition is surrounded in '{' and '}'. Each method in the class
@ -1295,11 +1278,11 @@ Using "3[m" will jump to the start of the class.
*[#*
[# go to [count] previous unmatched "#if" or "#else".
|exclusive| motion. {not in Vi}
|exclusive| motion.
*]#*
]# go to [count] next unmatched "#else" or "#endif".
|exclusive| motion. {not in Vi}
|exclusive| motion.
These two commands work in C programs that contain #if/#else/#endif
constructs. It brings you to the start or end of the #if/#else/#endif where
@ -1307,11 +1290,11 @@ the current line is included. You can then use "%" to go to the matching line.
*[star* *[/*
[* or [/ go to [count] previous start of a C comment "/*".
|exclusive| motion. {not in Vi}
|exclusive| motion.
*]star* *]/*
]* or ]/ go to [count] next end of a C comment "*/".
|exclusive| motion. {not in Vi}
|exclusive| motion.
*H*
@ -1339,6 +1322,6 @@ L To line [count] from bottom of window (default: Last
<LeftMouse> Moves to the position on the screen where the mouse
click is |exclusive|. See also |<LeftMouse>|. If the
position is in a status line, that window is made the
active window and the cursor is not moved. {not in Vi}
active window and the cursor is not moved.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.1. Last change: 2019 Jan 17
*netbeans.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Gordon Prieur et al.
@ -24,7 +24,6 @@ Vim NetBeans Protocol: a socket interface for Vim integration into an IDE.
10.4. Obtaining the External Editor Module |obtaining-exted|
10.5. Setting up NetBeans to run with Vim |netbeans-setup|
{Vi does not have any of these features}
{only available when compiled with the |+netbeans_intg| feature}
==============================================================================

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*os_mac.txt* For Vim version 8.1. Last change: 2018 Jan 21
*os_mac.txt* For Vim version 8.1. Last change: 2019 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar et al.

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.1. Last change: 2019 Feb 21
*pattern.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -61,11 +61,11 @@ explanations are in chapter 27 |usr_27.txt|.
n Repeat the latest "/" or "?" [count] times.
If the cursor doesn't move the search is repeated with
count + 1.
|last-pattern| {Vi: no count}
|last-pattern|
*N*
N Repeat the latest "/" or "?" [count] times in
opposite direction. |last-pattern| {Vi: no count}
opposite direction. |last-pattern|
*star* *E348* *E349*
* Search forward for the [count]'th occurrence of the
@ -78,24 +78,24 @@ N Repeat the latest "/" or "?" [count] times in
4. the first non-blank word after the cursor,
in the current line
Only whole keywords are searched for, like with the
command "/\<keyword\>". |exclusive| {not in Vi}
command "/\<keyword\>". |exclusive|
'ignorecase' is used, 'smartcase' is not.
*#*
# Same as "*", but search backward. The pound sign
(character 163) also works. If the "#" key works as
backspace, try using "stty erase <BS>" before starting
Vim (<BS> is CTRL-H or a real backspace). {not in Vi}
Vim (<BS> is CTRL-H or a real backspace).
*gstar*
g* Like "*", but don't put "\<" and "\>" around the word.
This makes the search also find matches that are not a
whole word. {not in Vi}
whole word.
*g#*
g# Like "#", but don't put "\<" and "\>" around the word.
This makes the search also find matches that are not a
whole word. {not in Vi}
whole word.
*gd*
gd Goto local Declaration. When the cursor is on a local
@ -113,22 +113,21 @@ gd Goto local Declaration. When the cursor is on a local
searched use the commands listed in |include-search|.
After this command |n| searches forward for the next
match (not backward).
{not in Vi}
*gD*
gD Goto global Declaration. When the cursor is on a
global variable that is defined in the file, this
command will jump to its declaration. This works just
like "gd", except that the search for the keyword
always starts in line 1. {not in Vi}
always starts in line 1.
*1gd*
1gd Like "gd", but ignore matches inside a {} block that
ends before the cursor position. {not in Vi}
ends before the cursor position.
*1gD*
1gD Like "gD", but ignore matches inside a {} block that
ends before the cursor position. {not in Vi}
ends before the cursor position.
*CTRL-C*
CTRL-C Interrupt current (search) command. Use CTRL-Break on
@ -152,6 +151,17 @@ use <Esc> to abandon the search.
All matches for the last used search pattern will be highlighted if you set
the 'hlsearch' option. This can be suspended with the |:nohlsearch| command.
When 'shortmess' does not include the "S" flag, Vim will automatically show an
index, on which the cursor is. This can look like this: >
[1/5] Cursor is on first of 5 matches.
[1/>99] Cursor is on first of more than 99 matches.
[>99/>99] Cursor is after 99 match of more than 99 matches.
[?/??] Unknown how many matches exists, generating the
statistics was aborted because of search timeout.
Note: the count does not take offset into account.
When no match is found you get the error: *E486* Pattern not found
Note that for the |:global| command this behaves like a normal message, for Vi
compatibility. For the |:s| command the "e" flag can be used to avoid the
@ -160,7 +170,7 @@ error message |:s_flags|.
*search-offset* *{offset}*
These commands search for the specified pattern. With "/" and "?" an
additional offset may be given. There are two types of offsets: line offsets
and character offsets. {the character offsets are not in Vi}
and character offsets.
The offset gives the cursor position relative to the found match:
[num] [num] lines downwards, in column 1
@ -436,30 +446,28 @@ More explanation and examples below, follow the links. *E64* *E871*
multi ~
'magic' 'nomagic' matches of the preceding atom ~
|/star| * \* 0 or more as many as possible
|/\+| \+ \+ 1 or more as many as possible (*)
|/\=| \= \= 0 or 1 as many as possible (*)
|/\?| \? \? 0 or 1 as many as possible (*)
|/\+| \+ \+ 1 or more as many as possible
|/\=| \= \= 0 or 1 as many as possible
|/\?| \? \? 0 or 1 as many as possible
|/\{| \{n,m} \{n,m} n to m as many as possible (*)
\{n} \{n} n exactly (*)
\{n,} \{n,} at least n as many as possible (*)
\{,m} \{,m} 0 to m as many as possible (*)
\{} \{} 0 or more as many as possible (same as *) (*)
|/\{| \{n,m} \{n,m} n to m as many as possible
\{n} \{n} n exactly
\{n,} \{n,} at least n as many as possible
\{,m} \{,m} 0 to m as many as possible
\{} \{} 0 or more as many as possible (same as *)
|/\{-| \{-n,m} \{-n,m} n to m as few as possible (*)
\{-n} \{-n} n exactly (*)
\{-n,} \{-n,} at least n as few as possible (*)
\{-,m} \{-,m} 0 to m as few as possible (*)
\{-} \{-} 0 or more as few as possible (*)
|/\{-| \{-n,m} \{-n,m} n to m as few as possible
\{-n} \{-n} n exactly
\{-n,} \{-n,} at least n as few as possible
\{-,m} \{-,m} 0 to m as few as possible
\{-} \{-} 0 or more as few as possible
*E59*
|/\@>| \@> \@> 1, like matching a whole pattern (*)
|/\@=| \@= \@= nothing, requires a match |/zero-width| (*)
|/\@!| \@! \@! nothing, requires NO match |/zero-width| (*)
|/\@<=| \@<= \@<= nothing, requires a match behind |/zero-width| (*)
|/\@<!| \@<! \@<! nothing, requires NO match behind |/zero-width| (*)
(*) {not in Vi}
|/\@>| \@> \@> 1, like matching a whole pattern
|/\@=| \@= \@= nothing, requires a match |/zero-width|
|/\@!| \@! \@! nothing, requires NO match |/zero-width|
|/\@<=| \@<= \@<= nothing, requires a match behind |/zero-width|
|/\@<!| \@<! \@<! nothing, requires NO match behind |/zero-width|
Overview of ordinary atoms. */ordinary-atom*
@ -488,7 +496,7 @@ More explanation and examples below, follow the links.
|/\%c| \%23c \%23c in column 23 |/zero-width|
|/\%v| \%23v \%23v in virtual column 23 |/zero-width|
Character classes {not in Vi}: */character-classes*
Character classes: */character-classes*
magic nomagic matches ~
|/\i| \i \i identifier character (see 'isident' option)
|/\I| \I \I like "\i", but excluding digits
@ -527,7 +535,7 @@ Character classes {not in Vi}: */character-classes*
|/\b| \b \b <BS>
|/\n| \n \n end-of-line
|/~| ~ \~ last given substitute string
|/\1| \1 \1 same string as matched by first \(\) {not in Vi}
|/\1| \1 \1 same string as matched by first \(\)
|/\2| \2 \2 Like "\1", but uses second \(\)
...
|/\9| \9 \9 Like "\1", but uses ninth \(\)
@ -605,20 +613,19 @@ overview.
character at a time.
*/\+*
\+ Matches 1 or more of the preceding atom, as many as possible. {not in
Vi}
\+ Matches 1 or more of the preceding atom, as many as possible.
Example matches ~
^.\+$ any non-empty line
\s\+ white space of at least one character
*/\=*
\= Matches 0 or 1 of the preceding atom, as many as possible. {not in Vi}
\= Matches 0 or 1 of the preceding atom, as many as possible.
Example matches ~
foo\= "fo" and "foo"
*/\?*
\? Just like \=. Cannot be used when searching backwards with the "?"
command. {not in Vi}
command.
*/\{* *E60* *E554* *E870*
\{n,m} Matches n to m of the preceding atom, as many as possible
@ -632,7 +639,6 @@ overview.
\{-n,} matches at least n of the preceding atom, as few as possible
\{-,m} matches 0 to m of the preceding atom, as few as possible
\{-} matches 0 or more of the preceding atom, as few as possible
{Vi does not have any of these}
n and m are positive decimal numbers or zero
*non-greedy*
@ -655,7 +661,7 @@ overview.
The } may optionally be preceded with a backslash: \{n,m\}.
*/\@=*
\@= Matches the preceding atom with zero width. {not in Vi}
\@= Matches the preceding atom with zero width.
Like "(?=pattern)" in Perl.
Example matches ~
foo\(bar\)\@= "foo" in "foobar"
@ -675,7 +681,7 @@ overview.
*/\@!*
\@! Matches with zero width if the preceding atom does NOT match at the
current position. |/zero-width| {not in Vi}
current position. |/zero-width|
Like "(?!pattern)" in Perl.
Example matches ~
foo\(bar\)\@! any "foo" not followed by "bar"
@ -705,7 +711,7 @@ overview.
*/\@<=*
\@<= Matches with zero width if the preceding atom matches just before what
follows. |/zero-width| {not in Vi}
follows. |/zero-width|
Like "(?<=pattern)" in Perl, but Vim allows non-fixed-width patterns.
Example matches ~
\(an\_s\+\)\@<=file "file" after "an" and white space or an
@ -749,7 +755,7 @@ overview.
\@<! Matches with zero width if the preceding atom does NOT match just
before what follows. Thus this matches if there is no position in the
current or previous line where the atom matches such that it ends just
before what follows. |/zero-width| {not in Vi}
before what follows. |/zero-width|
Like "(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns.
The match with the preceding atom is made to end just before the match
with what follows, thus an atom that ends in ".*" will work.
@ -765,7 +771,7 @@ overview.
slow.
*/\@>*
\@> Matches the preceding atom like matching a whole pattern. {not in Vi}
\@> Matches the preceding atom like matching a whole pattern.
Like "(?>pattern)" in Perl.
Example matches ~
\(a*\)\@>a nothing (the "a*" takes all the "a"'s, there can't be
@ -844,7 +850,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
/\(.\{-}\zsFab\)\{3}
< Finds the third occurrence of "Fab".
This cannot be followed by a multi. *E888*
{not in Vi} {not available when compiled without the |+syntax| feature}
{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|
@ -853,17 +859,17 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
"endfor".
This cannot be followed by a multi. |E888|
{not in Vi} {not available when compiled without the |+syntax| feature}
{not available when compiled without the |+syntax| feature}
*/\%^* *start-of-file*
\%^ Matches start of the file. When matching with a string, matches the
start of the string. {not in Vi}
start of the string.
For example, to find the first "VIM" in a file: >
/\%^\_.\{-}\zsVIM
<
*/\%$* *end-of-file*
\%$ Matches end of the file. When matching with a string, matches the
end of the string. {not in Vi}
end of the string.
Note that this does NOT find the last "VIM" in a file: >
/VIM\_.\{-}\%$
< It will find the next VIM, because the part after it will always
@ -887,7 +893,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
*/\%#* *cursor-position*
\%# Matches with the cursor position. Only works when matching in a
buffer displayed in a window. {not in Vi}
buffer displayed in a window.
WARNING: When the cursor is moved after the pattern was used, the
result becomes invalid. Vim doesn't automatically update the matches.
This is especially relevant for syntax highlighting and 'hlsearch'.
@ -908,7 +914,6 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
< Note that two dots are required to include mark 'e in the match. That
is because "\%<'e" matches at the character before the 'e mark, and
since it's a |/zero-width| match it doesn't include that character.
{not in Vi}
WARNING: When the mark is moved after the pattern was used, the result
becomes invalid. Vim doesn't automatically update the matches.
Similar to moving the cursor for "\%#" |/\%#|.
@ -918,7 +923,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
\%<23l Matches above a specific line (lower line number).
\%>23l Matches below a specific line (higher line number).
These three can be used to match specific lines in a buffer. The "23"
can be any line number. The first line is 1. {not in Vi}
can be any line number. The first line is 1.
WARNING: When inserting or deleting lines Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
@ -934,7 +939,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). {not in Vi}
for multi-byte characters).
WARNING: When inserting or deleting text Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
@ -956,7 +961,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
The "23" can be any column number. The first column is 1.
Note that some virtual column positions will never match, because they
are halfway through a tab or other character that occupies more than
one screen character. {not in Vi}
one screen character.
WARNING: When inserting or deleting text Vim does not automatically
update highlighted matches. This means Syntax highlighting quickly
becomes wrong.
@ -979,7 +984,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
where ".*" matches zero characters.
<
Character classes: {not in Vi}
Character classes:
\i identifier character (see 'isident' option) */\i*
\I like "\i", but excluding digits */\I*
\k keyword character (see 'iskeyword' option) */\k*
@ -1039,7 +1044,7 @@ match ASCII characters, as indicated by the range.
*E51* *E54* *E55* *E872* *E873*
\1 Matches the same string that was matched by */\1* *E65*
the first sub-expression in \( and \). {not in Vi}
the first sub-expression in \( and \).
Example: "\([a-z]\).\1" matches "ata", "ehe", "tot", etc.
\2 Like "\1", but uses second sub-expression, */\2*
... */\3*
@ -1051,7 +1056,6 @@ match ASCII characters, as indicated by the range.
\%(\) A pattern enclosed by escaped parentheses. */\%(\)* */\%(* *E53*
Just like \(\), but without counting it as a sub-expression. This
allows using more groups and it's a little bit faster.
{not in Vi}
x A single character, with no special meaning, matches itself
@ -1152,7 +1156,7 @@ x A single character, with no special meaning, matches itself
backslash before it: "[xyz\]]", "[\^xyz]", "[xy\-z]" and "[xyz\\]".
(Note: POSIX does not support the use of a backslash this way). For
']' you can also make it the first character (following a possible
"^"): "[]xyz]" or "[^]xyz]" {not in Vi}.
"^"): "[]xyz]" or "[^]xyz]".
For '-' you can also make it the first or last character: "[-xyz]",
"[^-xyz]" or "[xyz-]". For '\' you can also let it be followed by
any character that's not in "^]-\bdertnoUux". "[\xyz]" matches '\',
@ -1161,7 +1165,7 @@ x A single character, with no special meaning, matches itself
- Omitting the trailing ] is not considered an error. "[]" works like
"[]]", it matches the ']' character.
- The following translations are accepted when the 'l' flag is not
included in 'cpoptions' {not in Vi}:
included in 'cpoptions':
\e <Esc>
\t <Tab>
\r <CR> (NOT end-of-line!)
@ -1242,7 +1246,7 @@ files. To match a <Nul> with a search pattern you can just enter CTRL-@ or
"CTRL-V 000". This is probably just what you expect. Internally the
character is replaced with a <NL> in the search pattern. What is unusual is
that typing CTRL-V CTRL-J also inserts a <NL>, thus also searches for a <Nul>
in the file. {Vi cannot handle <Nul> characters in the file at all}
in the file.
*CR-used-for-NL*
When 'fileformat' is "mac", <NL> characters in the file are stored as <CR>

View File

@ -1,4 +1,4 @@
*pi_gzip.txt* For Vim version 8.1. Last change: 2016 Nov 06
*pi_gzip.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -13,8 +13,6 @@ This plugin is only available if 'compatible' is not set.
You can avoid loading this plugin by setting the "loaded_gzip" variable: >
:let loaded_gzip = 1
{Vi does not have any of this}
==============================================================================
1. Autocommands *gzip-autocmd*

View File

@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 8.1. Last change: 2017 Nov 03
*pi_netrw.txt* For Vim version 8.1. Last change: 2019 Jul 17
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@ -114,8 +114,6 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
13. Todo..................................................|netrw-todo|
14. Credits...............................................|netrw-credits|
{Vi does not have any of this}
==============================================================================
2. Starting With Netrw *netrw-start* {{{1
@ -1186,7 +1184,7 @@ One may easily "bookmark" the currently browsed directory by using >
*.netrwbook*
Bookmarks are retained in between sessions of vim in a file called .netrwbook
as a |List|, which is typically stored in the first directory on the user's
'|runtimepath|'; entries are kept in sorted order.
'runtimepath'; entries are kept in sorted order.
If there are marked files and/or directories, mb will add them to the bookmark
list.
@ -2096,7 +2094,7 @@ track netrw's browsing directory.
However, given the default setting for g:netrw_keepdir of 1 where netrw
maintains its own separate notion of the current directory, in order to make
the two directories the same, use the "c" map (just type c). That map will
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.
@ -2741,7 +2739,7 @@ your browsing preferences. (see also: |netrw-settings|)
=0 : show all
=1 : show not-hidden files
=2 : show hidden files only
default: =0
default: =1
*g:netrw_home* The home directory for where bookmarks and
history are saved (as .netrwbook and
@ -2942,14 +2940,23 @@ your browsing preferences. (see also: |netrw-settings|)
netrwBak : *.bak
netrwCompress: *.gz *.bz2 *.Z *.zip
netrwCoreDump: core.\d\+
netrwData : *.dat
netrwDoc : *.doc,*.txt,*.pdf,
*.pdf,*.docx
netrwHdr : *.h
netrwLex : *.l *.lex
netrwLib : *.a *.so *.lib *.dll
netrwMakefile: [mM]akefile *.mak
netrwObj : *.o *.obj
netrwPix : *.bmp,*.fit,*.fits,*.gif,
*.jpg,*.jpeg,*.pcx,*.ppc
*.pgm,*.png,*.psd,*.rgb
*.tif,*.xbm,*.xcf
netrwTags : tags ANmenu ANtags
netrwTilde : *
netrwTmp : tmp* *tmp
netrwYacc : *.y
In addition, those groups mentioned in
|'suffixes'| are also added to the special
@ -3034,8 +3041,9 @@ your browsing preferences. (see also: |netrw-settings|)
current netrw buffer's window to be used for
the new window.
If g:netrw_winsize is less than zero, then
the absolute value of g:netrw_winsize lines
or columns will be used for the new window.
the absolute value of g:netrw_winsize will be
used to specify the quantity of lines or
columns for the new window.
If g:netrw_winsize is zero, then a normal
split will be made (ie. |'equalalways'| will
take effect, for example).
@ -3373,7 +3381,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
(This section is likely to grow as I get feedback)
(also see |netrw-debug|)
*netrw-p1*
P1. I use windows 95, and my ftp dumps four blank lines at the
P1. I use windows 95, and my ftp dumps four blank lines at the {{{2
end of every read.
See |netrw-fixup|, and put the following into your
@ -3382,7 +3390,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
let g:netrw_win95ftp= 1
*netrw-p2*
P2. I use Windows, and my network browsing with ftp doesn't sort by
P2. I use Windows, and my network browsing with ftp doesn't sort by {{{2
time or size! -or- The remote system is a Windows server; why
don't I get sorts by time or size?
@ -3409,7 +3417,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
*netrw-p3*
P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw
P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw {{{2
used ssh! That wasn't what I asked for...
Netrw has two methods for browsing remote directories: ssh
@ -3418,7 +3426,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
listing), netrw will use the given protocol to do so.
*netrw-p4*
P4. I would like long listings to be the default.
P4. I would like long listings to be the default. {{{2
Put the following statement into your |.vimrc|: >
@ -3428,7 +3436,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
you can set.
*netrw-p5*
P5. My times come up oddly in local browsing
P5. My times come up oddly in local browsing {{{2
Does your system's strftime() accept the "%c" to yield dates
such as "Sun Apr 27 11:49:23 1997"? If not, do a
@ -3438,7 +3446,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
let g:netrw_timefmt= "%X" (where X is the option)
<
*netrw-p6*
P6. I want my current directory to track my browsing.
P6. I want my current directory to track my browsing. {{{2
How do I do that?
Put the following line in your |.vimrc|:
@ -3446,8 +3454,8 @@ Example: Clear netrw's marked file list via a mapping on gu >
let g:netrw_keepdir= 0
<
*netrw-p7*
P7. I use Chinese (or other non-ascii) characters in my filenames, and
netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
P7. I use Chinese (or other non-ascii) characters in my filenames, {{{2
and netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
(taken from an answer provided by Wu Yongwei on the vim
mailing list)
@ -3461,7 +3469,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
(...it is one more reason to recommend that people use utf-8!)
*netrw-p8*
P8. I'm getting "ssh is not executable on your system" -- what do I
P8. I'm getting "ssh is not executable on your system" -- what do I {{{2
do?
(Dudley Fox) Most people I know use putty for windows ssh. It
@ -3504,7 +3512,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
- Click "Add..."
- Set External Editor (adjust path as needed, include
the quotes and !.! at the end):
"c:\Program Files\Vim\vim81\gvim.exe" !.!
"c:\Program Files\Vim\vim70\gvim.exe" !.!
- Check that the filetype in the box below is
{asterisk}.{asterisk} (all files), or whatever types
you want (cec: change {asterisk} to * ; I had to
@ -3544,7 +3552,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
default.
*netrw-p9* *netrw-ml_get*
P9. I'm browsing, changing directory, and bang! ml_get errors
P9. I'm browsing, changing directory, and bang! ml_get errors {{{2
appear and I have to kill vim. Any way around this?
Normally netrw attempts to avoid writing swapfiles for
@ -3555,7 +3563,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
let g:netrw_use_noswf= 0
<
*netrw-p10*
P10. I'm being pestered with "[something] is a directory" and
P10. I'm being pestered with "[something] is a directory" and {{{2
"Press ENTER or type command to continue" prompts...
The "[something] is a directory" prompt is issued by Vim,
@ -3566,8 +3574,8 @@ Example: Clear netrw's marked file list via a mapping on gu >
your <.vimrc> file.
*netrw-p11*
P11. I want to have two windows; a thin one on the left and my editing
window on the right. How may I accomplish this?
P11. I want to have two windows; a thin one on the left and my {{{2
editing window on the right. How may I accomplish this?
You probably want netrw running as in a side window. If so, you
will likely find that ":[N]Lexplore" does what you want. The
@ -3592,7 +3600,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
*netrw-p12*
P12. My directory isn't sorting correctly, or unwanted letters are
P12. My directory isn't sorting correctly, or unwanted letters are {{{2
appearing in the listed filenames, or things aren't lining
up properly in the wide listing, ...
@ -3602,9 +3610,9 @@ Example: Clear netrw's marked file list via a mapping on gu >
You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
*netrw-p13*
P13. I'm a Windows + putty + ssh user, and when I attempt to browse,
the directories are missing trailing "/"s so netrw treats them
as file transfers instead of as attempts to browse
P13. I'm a Windows + putty + ssh user, and when I attempt to {{{2
browse, the directories are missing trailing "/"s so netrw treats
them as file transfers instead of as attempts to browse
subdirectories. How may I fix this?
(mikeyao) If you want to use vim via ssh and putty under Windows,
@ -3623,7 +3631,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
"let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe"
<
*netrw-p14*
P14. I would like to speed up writes using Nwrite and scp/ssh
P14. I would like to speed up writes using Nwrite and scp/ssh {{{2
style connections. How? (Thomer M. Gil)
Try using ssh's ControlMaster and ControlPath (see the ssh_config
@ -3650,8 +3658,8 @@ Example: Clear netrw's marked file list via a mapping on gu >
vim scp://host.domain.com//home/user/.bashrc
<
*netrw-p15*
P15. How may I use a double-click instead of netrw's usual single click
to open a file or directory? (Ben Fritz)
P15. How may I use a double-click instead of netrw's usual single {{{2
click to open a file or directory? (Ben Fritz)
First, disable netrw's mapping with >
let g:netrw_mousemaps= 0
@ -3663,7 +3671,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
(see |g:netrw_mousemaps|)
*netrw-p16*
P16. When editing remote files (ex. :e ftp://hostname/path/file),
P16. When editing remote files (ex. :e ftp://hostname/path/file), {{{2
under Windows I get an |E303| message complaining that its unable
to open a swap file.
@ -3672,7 +3680,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
directory.
*netrw-p17*
P17. Netrw is closing buffers on its own.
P17. Netrw is closing buffers on its own. {{{2
What steps will reproduce the problem?
1. :Explore, navigate directories, open a file
2. :Explore, open another file
@ -3686,14 +3694,14 @@ Example: Clear netrw's marked file list via a mapping on gu >
a ":ls!" will show them (although ":ls" does not).
*netrw-P18*
P18. How to locally edit a file that's only available via
P18. How to locally edit a file that's only available via {{{2
another server accessible via ssh?
See http://stackoverflow.com/questions/12469645/
"Using Vim to Remotely Edit A File on ServerB Only
Accessible From ServerA"
*netrw-P19*
P19. How do I get numbering on in directory listings?
P19. How do I get numbering on in directory listings? {{{2
With |g:netrw_bufsettings|, you can control netrw's buffer
settings; try putting >
let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu"
@ -3702,7 +3710,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu"
<
*netrw-P20*
P20. How may I have gvim start up showing a directory listing?
P20. How may I have gvim start up showing a directory listing? {{{2
Try putting the following code snippet into your .vimrc: >
augroup VimStartup
au!
@ -3715,8 +3723,8 @@ Example: Clear netrw's marked file list via a mapping on gu >
(ie. a "huge" vim version).
*netrw-P21*
P21. I've made a directory (or file) with an accented character, but
netrw isn't letting me enter that directory/read that file:
P21. I've made a directory (or file) with an accented character, {{{2
but netrw isn't letting me enter that directory/read that file:
Its likely that the shell or o/s is using a different encoding
than you have vim (netrw) using. A patch to vim supporting
@ -3726,7 +3734,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
au FileType netrw set enc=latin1
<
*netrw-P22*
P22. I get an error message when I try to copy or move a file:
P22. I get an error message when I try to copy or move a file: {{{2
**error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work!
@ -3754,8 +3762,8 @@ by obtaining a copy of the latest (often developmental) netrw at:
The <netrw.vim> script is typically installed on systems as something like:
>
/usr/local/share/vim/vim8x/plugin/netrwPlugin.vim
/usr/local/share/vim/vim8x/autoload/netrw.vim
/usr/local/share/vim/vim7x/plugin/netrwPlugin.vim
/usr/local/share/vim/vim7x/autoload/netrw.vim
(see output of :echo &rtp)
<
which is loaded automatically at startup (assuming :set nocp). If you
@ -3834,6 +3842,16 @@ netrw:
==============================================================================
12. History *netrw-history* {{{1
v163: Dec 05, 2017 * (Cristi Balan) reported that a setting ('sel')
was left changed
* (Holger Mitschke) reported a problem with
saving and restoring history. Fixed.
* Hopefully I fixed a nasty bug that caused a
file rename to wipe out a buffer that it
should not have wiped out.
* (Holger Mitschke) amended this help file
with additional |g:netrw_special_syntax|
items
v162: Sep 19, 2016 * (haya14busa) pointed out two syntax errors
with a patch; these are now fixed.
Oct 26, 2016 * I started using mate-terminal and found that

826
runtime/doc/popup.txt Normal file
View File

@ -0,0 +1,826 @@
*popup.txt* For Vim version 8.1. Last change: 2019 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar
Displaying text in a floating window. *popup* *popup-window*
1. Introduction |popup-intro|
Window position and size |popup-position|
Closing the popup window |popup-close|
Popup buffer and window |popup-buffer|
2. Functions |popup-functions|
Details |popup-function-details|
3. Usage |popup-usage|
popup_create() arguments |popup_create-arguments|
Popup text properties |popup-props|
Popup filter |popup-filter|
Popup callback |popup-callback|
Popup scrollbar |popup-scrollbar|
Popup mask |popup-mask|
4. Examples |popup-examples|
{not available if the |+textprop| feature was disabled at compile time}
==============================================================================
1. Introduction *popup-intro*
We are talking about popup windows here, text that goes on top of the regular
windows and is under control of a plugin. You cannot edit the text in the
popup window like with regular windows.
A popup window can be used for such things as:
- briefly show a message without overwriting the command line
- prompt the user with a dialog
- display contextual information while typing
- give extra information for auto-completion
The text in the popup window can be colored with |text-properties|. It is
also possible to use syntax highlighting.
The default color used is "Pmenu". If you prefer something else use the
"highlight" argument or the 'wincolor' option, e.g.: >
hi MyPopupColor ctermbg=lightblue guibg=lightblue
call setwinvar(winid, '&wincolor', 'MyPopupColor')
'hlsearch' highlighting is not displayed in a popup window.
A popup window has a window-ID like other windows, but behaves differently.
The size can be up to the whole Vim window and it overlaps other windows.
Popup windows can also overlap each other. The "zindex" property specifies
what goes on top of what.
The popup window contains a buffer, and that buffer is always associated with
the popup window. The window cannot be in Normal, Visual or Insert mode, it
does not get keyboard focus. You can use functions like `setbufline()` to
change the text in the buffer. There are more differences from how this
window and buffer behave compared to regular windows and buffers, see
|popup-buffer|.
If this is not what you are looking for, check out other popup functionality:
- popup menu, see |popup-menu|
- balloon, see |balloon-eval|
WINDOW POSITION AND SIZE *popup-position*
The height of the window is normally equal to the number of, possibly
wrapping, lines in the buffer. It can be limited with the "maxheight"
property. You can use empty lines to increase the height or the "minheight"
property.
The width of the window is normally equal to the longest line in the buffer.
It can be limited with the "maxwidth" property. You can use spaces to
increase the width or use the "minwidth" property.
By default the 'wrap' option is set, so that no text disappears. Otherwise,
if there is not enough space then the window is shifted left in order to
display more text. When right-aligned the window is shifted right to display
more text. The shifting can be disabled with the "fixed" property.
Vim tries to show the popup in the location you specify. In some cases, e.g.
when the popup would go outside of the Vim window, it will show it somewhere
nearby. E.g. if you use `popup_atcursor()` the popup normally shows just above
the current cursor position, but if the cursor is close to the top of the Vim
window it will be placed below the cursor position.
When the screen scrolls up for output of an Ex command, popups move too, so
that they will not cover the output.
The current cursor position is displayed even when it is under a popup window.
That way you can still see where it is, even though you cannot see the text
that it is in.
CLOSING THE POPUP WINDOW *popup-close*
Normally the plugin that created the popup window is also in charge of closing
it. If somehow a popup hangs around, you can close all of them with: >
call popup_clear()
Some popups, such as notifications, close after a specified time. This can be
set with the "time" property on `popup_create()`.
Otherwise, a popup can be closed by clicking on the X in the top-right corner
or by clicking anywhere inside the popup. This must be enabled with the
"close" property. It is set by default for notifications.
POPUP BUFFER AND WINDOW *popup-buffer*
If a popup function is called to create a popup from text, a new buffer is
created to hold the text and text properties of the popup window. The buffer
is always associated with the popup window and manipulation is restricted:
- the buffer has no name
- 'buftype' is "popup"
- 'swapfile' is off
- 'bufhidden' is "hide"
- 'buflisted' is off
- 'undolevels' is -1: no undo at all
- all other buffer-local and window-local options are set to their Vim default
value.
It is possible to change the specifically mentioned options, but anything
might break then, so better leave them alone.
The window does have a cursor position, but the cursor is not displayed.
To execute a command in the context of the popup window and buffer use
`win_execute()`. Example: >
call win_execute(winid, 'syntax enable')
Options can be set on the window with `setwinvar()`, e.g.: >
call setwinvar(winid, '&wrap', 0)
And options can be set on the buffer with `setbufvar()`, e.g.: >
call setbufvar(winbufnr(winid), '&filetype', 'java')
Note that this does not trigger autocommands. Use `win_execute()` if you do
need them.
==============================================================================
2. Functions *popup-functions*
Creating a popup window:
|popup_create()| centered in the screen
|popup_atcursor()| just above the cursor position, closes when
the cursor moves away
|popup_beval()| at the position indicated by v:beval_
variables, closes when the mouse moves away
|popup_notification()| show a notification for three seconds
|popup_dialog()| centered with padding and border
|popup_menu()| prompt for selecting an item from a list
Manipulating a popup window:
|popup_hide()| hide a popup temporarily
|popup_show()| show a previously hidden popup
|popup_move()| change the position and size of a popup
|popup_setoptions()| override options of a popup
|popup_settext()| replace the popup buffer contents
Closing popup windows:
|popup_close()| close one popup
|popup_clear()| close all popups
Filter functions:
|popup_filter_menu()| select from a list of items
|popup_filter_yesno()| blocks until 'y' or 'n' is pressed
Other:
|popup_getoptions()| get current options for a popup
|popup_getpos()| get actual position and size of a popup
|popup_locate()| find popup window at a screen position
DETAILS *popup-function-details*
popup_atcursor({what}, {options}) *popup_atcursor()*
Show the {what} above the cursor, and close it when the cursor
moves. This works like: >
call popup_create({what}, #{
\ pos: 'botleft',
\ line: 'cursor-1',
\ col: 'cursor',
\ moved: 'WORD',
\ })
< Use {options} to change the properties.
popup_beval({what}, {options}) *popup_beval()*
Show the {what} above the position from 'ballooneval' and
close it when the mouse moves. This works like: >
let pos = screenpos(v:beval_winnr, v:beval_lnum, v:beval_col)
call popup_create({what}, #{
\ pos: 'botleft',
\ line: pos.row - 1,
\ col: pos.col,
\ mousemoved: 'WORD',
\ })
< Use {options} to change the properties.
See |popup_beval_example| for an example use.
*popup_clear()*
popup_clear() Emergency solution to a misbehaving plugin: close all popup
windows for the current tab and global popups.
popup_close({id} [, {result}]) *popup_close()*
Close popup {id}. The window and the associated buffer will
be deleted.
If the popup has a callback it will be called just before the
popup window is deleted. If the optional {result} is present
it will be passed as the second argument of the callback.
Otherwise zero is passed to the callback.
popup_create({what}, {options}) *popup_create()*
Open a popup window showing {what}, which is either:
- a buffer number
- a string
- a list of strings
- a list of text lines with text properties
When {what} is not a buffer number, a buffer is created with
'buftype' set to "popup". That buffer will be wiped out once
the popup closes.
{options} is a dictionary with many possible entries.
See |popup_create-arguments| for details.
Returns a window-ID, which can be used with other popup
functions. Use `winbufnr()` to get the number of the buffer
in the window: >
let winid = popup_create('hello', {})
let bufnr = winbufnr(winid)
call setbufline(bufnr, 2, 'second line')
< In case of failure zero is returned.
popup_dialog({what}, {options}) *popup_dialog()*
Just like |popup_create()| but with these default options: >
call popup_create({what}, #{
\ pos: 'center',
\ zindex: 200,
\ drag: 1,
\ border: [],
\ padding: [],
\})
< Use {options} to change the properties. E.g. add a 'filter'
option with value 'popup_filter_yesno'. Example: >
call popup_create('do you want to quit (Yes/no)?', #{
\ filter: 'popup_filter_yesno',
\ callback: 'QuitCallback',
\ })
< By default the dialog can be dragged, so that text below it
can be read if needed.
popup_filter_menu({id}, {key}) *popup_filter_menu()*
Filter that can be used for a popup. These keys can be used:
j <Down> select item below
k <Up> select item above
<Space> <Enter> accept current selection
x Esc CTRL-C cancel the menu
Other keys are ignored.
A match is set on that line to highlight it, see
|popup_menu()|.
When the current selection is accepted the "callback" of the
popup menu is invoked with the index of the selected line as
the second argument. The first entry has index one.
Cancelling the menu invokes the callback with -1.
To add shortcut keys, see the example here:
|popup_menu-shortcut-example|
popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
Filter that can be used for a popup. It handles only the keys
'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
as the second argument. Pressing Esc and 'x' works like
pressing 'n'. CTRL-C invokes the callback with -1. Other
keys are ignored.
See the example here: |popup_dialog-example|
popup_getoptions({id}) *popup_getoptions()*
Return the {options} for popup {id} in a Dict.
A zero value means the option was not set. For "zindex" the
default value is returned, not zero.
The "moved" entry is a list with line number, minimum and
maximum column, [0, 0, 0] when not set.
The "mousemoved" entry is a list with screen row, minimum and
maximum screen column, [0, 0, 0] when not set.
"border" and "padding" are not included when all values are
zero. When all values are one then an empty list is included.
"borderhighlight" is not included when all values are empty.
"scrollbarhighlight" and "thumbhighlight" are only included
when set.
"tabpage" will be -1 for a global popup, zero for a popup on
the current tabpage and a positive number for a popup on
another tabpage.
If popup window {id} is not found an empty Dict is returned.
popup_getpos({id}) *popup_getpos()*
Return the position and size of popup {id}. Returns a Dict
with these entries:
col screen column of the popup, one-based
line screen line of the popup, one-based
width width of the whole popup in screen cells
height height of the whole popup in screen cells
core_col screen column of the text box
core_line screen line of the text box
core_width width of the text box in screen cells
core_height height of the text box in screen cells
firstline line of the buffer at top (1 unless scrolled)
scrollbar non-zero if a scrollbar is displayed
visible one if the popup is displayed, zero if hidden
Note that these are the actual screen positions. They differ
from the values in `popup_getoptions()` for the sizing and
positioning mechanism applied.
The "core_" values exclude the padding and border.
If popup window {id} is not found an empty Dict is returned.
popup_hide({id}) *popup_hide()*
If {id} is a displayed popup, hide it now. If the popup has a
filter it will not be invoked for so long as the popup is
hidden.
If window {id} does not exist nothing happens. If window {id}
exists but is not a popup window an error is given. *E993*
popup_locate({row}, {col}) *popup_locate()*
Return the |window-ID| of the popup at screen position {row}
and {col}. If there are multiple popups the one with the
highest zindex is returned. If there are no popups at this
position then zero is returned.
popup_menu({what}, {options}) *popup_menu()*
Show the {what} near the cursor, handle selecting one of the
items with cursorkeys, and close it an item is selected with
Space or Enter. {what} should have multiple lines to make this
useful. This works like: >
call popup_create({what}, #{
\ pos: 'center',
\ zindex: 200,
\ drag: 1,
\ wrap: 0,
\ border: [],
\ cursorline: 1,
\ padding: [0,1,0,1],
\ filter: 'popup_filter_menu',
\ })
< The current line is highlighted with a match using
"PopupSelected", or "PmenuSel" if that is not defined.
Use {options} to change the properties. Should at least set
"callback" to a function that handles the selected item.
popup_move({id}, {options}) *popup_move()*
Move popup {id} to the position specified with {options}.
{options} may contain the items from |popup_create()| that
specify the popup position:
line
col
pos
maxheight
minheight
maxwidth
minwidth
fixed
For {id} see `popup_hide()`.
For other options see |popup_setoptions()|.
popup_notification({what}, {options}) *popup_notification()*
Show the {what} for 3 seconds at the top of the Vim window.
This works like: >
call popup_create({what}, #{
\ line: 1,
\ col: 10,
\ minwidth: 20,
\ time: 3000,
\ tabpage: -1,
\ zindex: 300,
\ drag: 1,
\ highlight: 'WarningMsg',
\ border: [],
\ close: 'click',
\ padding: [0,1,0,1],
\ })
< The PopupNotification highlight group is used instead of
WarningMsg if it is defined.
Without the |+timers| feature the poup will not disappear
automatically, the user has to click in it.
The position will be adjusted to avoid overlap with other
notifications.
Use {options} to change the properties.
popup_show({id}) *popup_show()*
If {id} is a hidden popup, show it now.
For {id} see `popup_hide()`.
popup_setoptions({id}, {options}) *popup_setoptions()*
Override options in popup {id} with entries in {options}.
These options can be set:
border
borderchars
borderhighlight
callback
close
drag
cursorline
filter
firstline
flip
highlight
mask
moved
padding
scrollbar
scrollbarhighlight
thumbhighlight
time
title
wrap
zindex
The options from |popup_move()| can also be used.
For "hidden" use |popup_hide()| and |popup_show()|.
"tabpage" cannot be changed.
popup_settext({id}, {text}) *popup_settext()*
Set the text of the buffer in poup win {id}. {text} is the
same as supplied to |popup_create()|, except that a buffer
number is not allowed.
Does not change the window size or position, other than caused
by the different text.
==============================================================================
3. Usage *popup-usage*
POPUP_CREATE() ARGUMENTS *popup_create-arguments*
The first argument of |popup_create()| (and the second argument to
|popup_settext()|) specifies the text to be displayed, and optionally text
properties. It is in one of four forms:
- a buffer number
- a string
- a list of strings
- a list of dictionaries, where each dictionary has these entries:
text String with the text to display.
props A list of text properties. Optional.
Each entry is a dictionary, like the third argument of
|prop_add()|, but specifying the column in the
dictionary with a "col" entry, see below:
|popup-props|.
The second argument of |popup_create()| is a dictionary with options:
line Screen line where to position the popup. Can use a
number or "cursor", "cursor+1" or "cursor-1" to use
the line of the cursor and add or subtract a number of
lines. If omitted the popup is vertically centered.
The first line is 1.
col Screen column where to position the popup. Can use a
number or "cursor" to use the column of the cursor,
"cursor+9" or "cursor-9" to add or subtract a number
of columns. If omitted the popup is horizontally
centered. The first column is 1.
pos "topleft", "topright", "botleft" or "botright":
defines what corner of the popup "line" and "col" are
used for. When not set "topleft" is used.
Alternatively "center" can be used to position the
popup in the center of the Vim window, in which case
"line" and "col" are ignored.
fixed When FALSE (the default), and:
- "pos" is "botleft" or "topleft", and
- "wrap" is off, and
- the popup would be truncated at the right edge of
the screen, then
the popup is moved to the left so as to fit the
contents on the screen. Set to TRUE to disable this.
flip When TRUE (the default) and the position is relative
to the cursor, flip to below or above the cursor to
avoid overlap with the |popupmenu-completion| or
another popup with a higher "zindex". When there is
no space above/below the cursor then show the popup to
the side of the popup or popup menu.
{not implemented yet}
maxheight Maximum height of the contents, excluding border and
padding.
minheight Minimum height of the contents, excluding border and
padding.
maxwidth Maximum width of the contents, excluding border and
padding.
minwidth Minimum width of the contents, excluding border and
padding.
firstline First buffer line to display. When larger than one it
looks like the text scrolled up. When out of range
the last buffer line will at the top of the window.
Also see "scrollbar".
hidden When TRUE the popup exists but is not displayed; use
`popup_show()` to unhide it.
tabpage When -1: display the popup on all tab pages.
When 0 (the default): display the popup on the current
tab page.
Otherwise the number of the tab page the popup is
displayed on; when invalid the popup is not created
and an error is given. *E997*
title Text to be displayed above the first item in the
popup, on top of any border. If there is no top
border one line of padding is added to put the title
on. You might want to add one or more spaces at the
start and end as padding.
wrap TRUE to make the lines wrap (default TRUE).
drag TRUE to allow the popup to be dragged with the mouse
by grabbing at at the border. Has no effect if the
popup does not have a border. As soon as dragging
starts and "pos" is "center" it is changed to
"topleft".
close When "button" an X is displayed in the top-right, on
top of any border, padding or text. When clicked on
the X the popup will close. Any callback is invoked
with the value -2.
When "click" any mouse click in the popup will close
it.
When "none" (the default) mouse clicks do not close
the popup window.
highlight Highlight group name to use for the text, stored in
the 'wincolor' option.
padding List with numbers, defining the padding
above/right/below/left of the popup (similar to CSS).
An empty list uses a padding of 1 all around. The
padding goes around the text, inside any border.
Padding uses the 'wincolor' highlight.
Example: [1, 2, 1, 3] has 1 line of padding above, 2
columns on the right, 1 line below and 3 columns on
the left.
border List with numbers, defining the border thickness
above/right/below/left of the popup (similar to CSS).
Only values of zero and non-zero are recognized.
An empty list uses a border all around.
borderhighlight List of highlight group names to use for the border.
When one entry it is used for all borders, otherwise
the highlight for the top/right/bottom/left border.
Example: ['TopColor', 'RightColor', 'BottomColor,
'LeftColor']
borderchars List with characters, defining the character to use
for the top/right/bottom/left border. Optionally
followed by the character to use for the
topleft/topright/botright/botleft corner.
Example: ['-', '|', '-', '|', '┌', '┐', '┘', '└']
When the list has one character it is used for all.
When the list has two characters the first is used for
the border lines, the second for the corners.
By default a double line is used all around when
'encoding' is "utf-8" and 'ambiwidth' is "single",
otherwise ASCII characters are used.
scrollbar non-zero: show a scrollbar when the text doesn't fit.
zero: do not show a scrollbar. Default is non-zero.
Also see |popup-scrollbar|.
scrollbarhighlight Highlight group name for the scrollbar. The
background color is what matters. When not given then
PmenuSbar is used.
thumbhighlight Highlight group name for the scrollbar thumb. The
background color is what matters. When not given then
PmenuThumb is used.
zindex Priority for the popup, default 50. Minimum value is
1, maximum value is 32000.
mask A list of lists with coordinates, defining parts of
the popup that are transparent. See |popup-mask|.
time Time in milliseconds after which the popup will close.
When omitted |popup_close()| must be used.
moved Specifies to close the popup if the cursor moved:
- "any": if the cursor moved at all
- "word": if the cursor moved outside |<cword>|
- "WORD": if the cursor moved outside |<cWORD>|
- "expr": if the cursor moved outside |<cexpr>|
- [{start}, {end}]: if the cursor moved before column
{start} or after {end}
The popup also closes if the cursor moves to another
line or to another window.
cursorline non-zero: Highlight the cursor line. Also scrolls the
text to show this line (only works properly
when 'wrap' is off).
zero: Do not highlight the cursor line.
Default is zero, except for |popup_menu()|.
filter A callback that can filter typed characters, see
|popup-filter|.
callback A callback that is called when the popup closes, e.g.
when using |popup_filter_menu()|, see |popup-callback|.
Depending on the "zindex" the popup goes under or above other popups. The
completion menu (|popup-menu|) has zindex 100. For messages that occur for a
short time the suggestion is to use zindex 1000.
By default text wraps, which causes a line in {lines} to occupy more than one
screen line. When "wrap" is FALSE then the text outside of the popup or
outside of the Vim window will not be displayed, thus truncated.
POPUP TEXT PROPERTIES *popup-props*
These are similar to the third argument of |prop_add()| except:
- "lnum" is always the current line in the list
- "bufnr" is always the buffer of the popup
- "col" is in the Dict instead of a separate argument
So we get:
col starting column, counted in bytes, use one for the
first column.
length length of text in bytes; can be zero
end_lnum line number for the end of the text
end_col column just after the text; not used when "length" is
present; when {col} and "end_col" are equal, this is a
zero-width text property
id user defined ID for the property; when omitted zero is
used
type name of the text property type, as added with
|prop_type_add()|
POPUP FILTER *popup-filter*
A callback that gets any typed keys while a popup is displayed. The filter is
not invoked when the popup is hidden.
The filter can return TRUE to indicate the key has been handled and is to be
discarded, or FALSE to let Vim handle the key as usual in the current state.
In case it returns FALSE and there is another popup window visible, that
filter is also called. The filter of the popup window with the highest zindex
is called first.
The filter function is called with two arguments: the ID of the popup and the
key as a string, e.g.: >
func MyFilter(winid, key)
if a:key == "\<F2>"
" do something
return 1
endif
if a:key == 'x'
call popup_close(a:winid)
return 1
endif
return 0
endfunc
Currently the key is what results after any mapping. This may change...
Some common key actions:
x close the popup (see note below)
cursor keys select another entry
Tab accept current suggestion
A mouse click arrives as <LeftMouse>. The coordinates are in
v:mouse_popup_col and v:mouse_popup_row. The top-left screen cell of the
popup is col 1, row 1 (not counting the border).
Vim provides standard filters |popup_filter_menu()| and
|popup_filter_yesno()|.
Note that "x" is the normal way to close a popup. You may want to use Esc,
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 CALLBACK *popup-callback*
A callback that is invoked when the popup closes.
The callback is invoked with two arguments: the ID of the popup window and the
result, which could be an index in the popup lines, or whatever was passed as
the second argument of `popup_close()`.
If the popup is force-closed, e.g. because the cursor moved or CTRL-C was
pressed, the number -1 is passed to the callback.
POPUP SCROLLBAR *popup-scrollbar*
If the text does not fit in the popup a scrollbar is displayed on the right of
the window. This can be disabled by setting the "scrollbar" option to zero.
When the scrollbar is displayed mouse scroll events, while the mouse pointer
is on the popup, will cause the text to scroll up or down as you would expect.
A click in the upper half of the scrollbar will scroll the text down one line.
A click in the lower half will scroll the text up one line. However, this is
limited so that the popup does not get smaller.
POPUP MASK *popup-mask*
To minimize the text that the popup covers, parts of it can be made
transparent. This is defined by a "mask" which is a list of lists, where each
list has four numbers:
col start column, positive for counting from the left, 1 for
leftmost, negative for counting from the right, -1 for
rightmost
endcol last column, like "col"
line start line, positive for counting from the top, 1 for top,
negative for counting from the bottom, -1 for bottom
endline end line, like "line"
For example, to make the last 10 columns of the last line transparent:
[[-10, -1, -1, -1]]
To make the four corners transparent:
[[1, 1, 1, 1], [-1, -1, 1, 1], [1, 1, -1, -1], [-1, -1, -1, -1]]
==============================================================================
4. Examples *popup-examples*
TODO: more interesting examples
*popup_dialog-example*
Prompt the user to press y/Y or n/N: >
func MyDialogHandler(id, result)
if a:result
" ... 'y' or 'Y' was pressed
endif
endfunc
call popup_dialog('Continue? y/n', #{
\ filter: 'popup_filter_yesno',
\ callback: 'MyDialogHandler',
\ })
<
*popup_menu-shortcut-example*
Extend popup_filter_menu() with shortcut keys: >
call popup_menu(['Save', 'Cancel', 'Discard'], #{
\ filter: 'MyMenuFilter',
\ callback: 'MyMenuHandler',
\ })
func MyMenuFilter(id, key)
" Handle shortcuts
if a:key == 'S'
call popup_close(a:id, 1)
return 1
endif
if a:key == 'C'
call popup_close(a:id, 2)
return 1
endif
if a:key == 'D'
call popup_close(a:id, 3)
return 1
endif
" No shortcut, pass to generic filter
return popup_filter_menu(a:id, a:key)
endfunc
<
*popup_beval_example*
Example for using a popup window for 'ballooneval': >
set ballooneval balloonevalterm
set balloonexpr=BalloonExpr()
let s:winid = 0
let s:last_text = ''
func BalloonExpr()
if s:winid && popup_getpos(s:winid) != {}
" previous popup window still shows
if v:beval_text == s:last_text
" Still the same text, keep the existing popup
return ''
endif
call popup_close(s:winid)
endif
let s:winid = popup_beval(v:beval_text, #{mousemoved: 'word'})
let s:last_text = v:beval_text
return ''
endfunc
<
If the text has to be obtained asynchronously return an empty string from the
expression function and call popup_beval() once the text is available. In
this example simulated with a timer callback: >
set ballooneval balloonevalterm
set balloonexpr=BalloonExpr()
let s:winid = 0
let s:balloonText = ''
func BalloonExpr()
if s:winid && popup_getpos(s:winid) != {}
" previous popup window still shows
if v:beval_text == s:balloonText
" Still the same text, keep the existing popup
return ''
endif
call popup_close(s:winid)
let s:winid = 0
endif
" simulate an asynchronous loopup for the text to display
let s:balloonText = v:beval_text
call timer_start(100, 'ShowPopup')
return ''
endfunc
func ShowPopup(id)
let s:winid = popup_beval(s:balloonText, #{mousemoved: 'word'})
endfunc
<
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*print.txt* For Vim version 8.1. Last change: 2010 Jul 20
*print.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -15,7 +15,6 @@ Printing *printing*
7. PostScript Utilities |postscript-print-util|
8. Formfeed Characters |printing-formfeed|
{Vi has None of this}
{only available when compiled with the |+printer| feature}
==============================================================================

View File

@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 8.1. Last change: 2019 Jan 13
*quickfix.txt* For Vim version 8.1. Last change: 2019 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -16,8 +16,6 @@ This subject is introduced in section |30.1| of the user manual.
8. The directory stack |quickfix-directory-stack|
9. Specific error file formats |errorformats|
{Vi does not have any of these commands}
The quickfix commands are not available when the |+quickfix| feature was
disabled at compile time.
@ -87,7 +85,7 @@ processing a quickfix or location list command, it will be aborted.
*:cc*
:cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
error is displayed again. Without [!] this doesn't
:[nr]cc[!] error is displayed again. Without [!] this doesn't
work when jumping to another buffer, the current buffer
has been changed, there is the only window for the
buffer and both 'hidden' and 'autowrite' are off.
@ -96,12 +94,15 @@ processing a quickfix or location list command, it will be aborted.
there is another window for this buffer.
The 'switchbuf' settings are respected when jumping
to a buffer.
When used in the quickfix window the line number can
be used, including "." for the current line and "$"
for the last line.
*:ll*
:ll[!] [nr] Same as ":cc", except the location list for the
current window is used instead of the quickfix list.
:[nr]ll[!] current window is used instead of the quickfix list.
*:cn* *:cnext* *E553*
*:cn* *:cne* *:cnext* *E553*
:[count]cn[ext][!] Display the [count] next error in the list that
includes a file name. If there are no file names at
all, go to the [count] next error. See |:cc| for
@ -123,6 +124,64 @@ processing a quickfix or location list command, it will be aborted.
list for the current window is used instead of the
quickfix list.
*:cabo* *:cabove*
:[count]cabo[ve] Go to the [count] error above the current line in the
current buffer. If [count] is omitted, then 1 is
used. If there are no errors, then an error message
is displayed. Assumes that the entries in a quickfix
list are sorted by their buffer number and line
number. If there are multiple errors on the same line,
then only the first entry is used. If [count] exceeds
the number of entries above the current line, then the
first error in the file is selected.
*:lab* *:labove*
:[count]lab[ove] Same as ":cabove", except the location list for the
current window is used instead of the quickfix list.
*:cbel* *:cbelow*
:[count]cbel[ow] Go to the [count] error below the current line in the
current buffer. If [count] is omitted, then 1 is
used. If there are no errors, then an error message
is displayed. Assumes that the entries in a quickfix
list are sorted by their buffer number and line
number. If there are multiple errors on the same
line, then only the first entry is used. If [count]
exceeds the number of entries below the current line,
then the last error in the file is selected.
*:lbel* *:lbelow*
:[count]lbel[ow] Same as ":cbelow", except the location list for the
current window is used instead of the quickfix list.
*:cbe* *:cbefore*
:[count]cbe[fore] Go to the [count] error before the current cursor
position in the current buffer. If [count] is
omitted, then 1 is used. If there are no errors, then
an error message is displayed. Assumes that the
entries in a quickfix list are sorted by their buffer,
line and column numbers. If [count] exceeds the
number of entries before the current position, then
the first error in the file is selected.
*:lbe* *:lbefore*
:[count]lbe[fore] Same as ":cbefore", except the location list for the
current window is used instead of the quickfix list.
*:caf* *:cafter*
:[count]caf[ter] Go to the [count] error after the current cursor
position in the current buffer. If [count] is
omitted, then 1 is used. If there are no errors, then
an error message is displayed. Assumes that the
entries in a quickfix list are sorted by their buffer,
line and column numbers. If [count] exceeds the
number of entries after the current position, then
the last error in the file is selected.
*:laf* *:lafter*
:[count]laf[ter] Same as ":cafter", except the location list for the
current window is used instead of the quickfix list.
*:cnf* *:cnfile*
:[count]cnf[ile][!] Display the first error in the [count] next file in
the list that includes a file name. If there are no
@ -187,7 +246,7 @@ processing a quickfix or location list command, it will be aborted.
'encoding' option, you can use the 'makeencoding'
option to specify the encoding.
*:lf* *:lfile*
*:lf* *:lfi* *:lfile*
:lf[ile][!] [errorfile] Same as ":cfile", except the location list for the
current window is used instead of the quickfix list.
You can not use the -q command-line option to set
@ -202,7 +261,7 @@ processing a quickfix or location list command, it will be aborted.
option to specify the encoding.
:lg[etfile] [errorfile] *:lg* *:lgetfile*
:lg[etfile] [errorfile] *:lg* *:lge* *:lgetfile*
Same as ":cgetfile", except the location list for the
current window is used instead of the quickfix list.
@ -240,7 +299,7 @@ processing a quickfix or location list command, it will be aborted.
the current window is used instead of the quickfix
list.
*:cad* *:caddbuffer*
*:cad* *:cadd* *:caddbuffer*
:cad[dbuffer] [bufnr] Read the error list from the current buffer and add
the errors to the current quickfix list. If a
quickfix list is not present, then a new list is
@ -287,7 +346,7 @@ processing a quickfix or location list command, it will be aborted.
Example: >
:g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".")
<
*:lad* *:laddexpr*
*:lad* *:addd* *:laddexpr*
:lad[dexpr] {expr} Same as ":caddexpr", except the location list for the
current window is used instead of the quickfix list.
@ -441,7 +500,6 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each buffer.
{not in Vi}
Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|,
|:ldo|, |:cfdo| and |:lfdo|.
@ -454,7 +512,6 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
:{cmd}
etc.
< Otherwise it works the same as `:cdo`.
{not in Vi}
*:ldo*
:ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list
@ -467,7 +524,6 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
etc.
< Only valid entries in the location list are used.
Otherwise it works the same as `:cdo`.
{not in Vi}
*:lfdo*
:lfdo[!] {cmd} Execute {cmd} in each file in the location list for
@ -479,7 +535,29 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
:{cmd}
etc.
< Otherwise it works the same as `:ldo`.
{not in Vi}
FILTERING A QUICKFIX OR LOCATION LIST:
*cfilter-plugin* *:Cfilter* *:Lfilter*
If you have too many entries in a quickfix list, you can use the cfilter
plugin to reduce the number of entries. Load the plugin with: >
packadd cfilter
Then you can use the following commands to filter a quickfix/location list: >
:Cfilter[!] /{pat}/
:Lfilter[!] /{pat}/
The |:Cfilter| command creates a new quickfix list from the entries matching
{pat} in the current quickfix list. {pat} is a Vim |regular-expression|
pattern. Both the file name and the text of the entries are matched against
{pat}. If the optional ! is supplied, then the entries not matching {pat} are
used. The pattern can be optionally enclosed using one of the following
characters: ', ", /. If the pattern is empty, then the last used search
pattern is used.
The |:Lfilter| command does the same as |:Cfilter| but operates on the current
location list.
=============================================================================
2. The error window *quickfix-window*
@ -572,9 +650,9 @@ You can use CTRL-W <Enter> to open a new window and jump to the error there.
When the quickfix window has been filled, two autocommand events are
triggered. First the 'filetype' option is set to "qf", which triggers the
FileType event. Then the BufReadPost event is triggered, using "quickfix" for
the buffer name. This can be used to perform some action on the listed
errors. Example: >
FileType event (also see |qf.vim|). Then the BufReadPost event is triggered,
using "quickfix" for the buffer name. This can be used to perform some action
on the listed errors. Example: >
au BufReadPost quickfix setlocal modifiable
\ | silent exe 'g/^/s//\=line(".")." "/'
\ | setlocal nomodifiable
@ -767,14 +845,19 @@ lists. They set one of the existing error lists as the current one.
the current window instead of the quickfix list.
*:chistory* *:chi*
:chi[story] Show the list of error lists. The current list is
:[count]chi[story] Show the list of error lists. The current list is
marked with ">". The output looks like:
error list 1 of 3; 43 errors ~
> error list 2 of 3; 0 errors ~
error list 3 of 3; 15 errors ~
When [count] is given, then the count'th quickfix
list is made the current list. Example: >
" Make the 4th quickfix list current
:4chistory
<
*:lhistory* *:lhi*
:lhi[story] Show the list of location lists, otherwise like
:[count]lhi[story] Show the list of location lists, otherwise like
`:chistory`.
When adding a new error list, it becomes the current list.
@ -1586,22 +1669,6 @@ The backslashes before the pipe character are required to avoid it to be
recognized as a command separator. The backslash before each space is
required for the set command.
*cfilter-plugin* *:Cfilter* *:Lfilter*
If you have too many matching messages, you can use the cfilter plugin to
reduce the number of entries. Load the plugin with: >
packadd cfilter
Then you can use these command: >
:Cfilter[!] /{pat}/
:Lfilter[!] /{pat}/
:Cfilter creates a new quickfix list from entries matching {pat} in the
current quickfix list. Both the file name and the text of the entries are
matched against {pat}. If ! is supplied, then entries not matching {pat} are
used.
:Lfilter does the same as :Cfilter but operates on the current location list.
=============================================================================
8. The directory stack *quickfix-directory-stack*

View File

@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.1. Last change: 2019 Feb 16
*quickref.txt* For Vim version 8.1. Last change: 2019 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -600,6 +600,7 @@ In Insert or Command-line mode:
Short explanation of each option: *option-list*
'aleph' 'al' ASCII code of the letter Aleph (Hebrew)
'allowrevins' 'ari' allow CTRL-_ in Insert and Command-line mode
'altkeymap' 'akm' obsolete option for Farsi
'ambiwidth' 'ambw' what to do with Unicode chars of ambiguous width
'antialias' 'anti' Mac OS X: use smooth, antialiased fonts
'autochdir' 'acd' change directory to the file in the current window
@ -699,6 +700,7 @@ Short explanation of each option: *option-list*
'filetype' 'ft' type of file, used for autocommands
'fillchars' 'fcs' characters to use for displaying special items
'fixendofline' 'fixeol' make sure last line in file has <EOL>
'fkmap' 'fk' obsolete option for Farsi
'foldclose' 'fcl' close a fold when the cursor leaves it
'foldcolumn' 'fdc' width of the column used to indicate folds
'foldenable' 'fen' set to display all folds open
@ -767,6 +769,7 @@ Short explanation of each option: *option-list*
'keywordprg' 'kp' program to use for the "K" command
'langmap' 'lmap' alphabetic characters for other language mode
'langmenu' 'lm' language to be used for the menus
'langnoremap' 'lnr' do not apply 'langmap' to mapped characters
'langremap' 'lrm' do apply 'langmap' to mapped characters
'laststatus' 'ls' tells when last window has status lines
'lazyredraw' 'lz' don't redraw while executing macros
@ -779,8 +782,6 @@ Short explanation of each option: *option-list*
'listchars' 'lcs' characters for displaying in list mode
'loadplugins' 'lpl' load plugin scripts when starting up
'luadll' name of the Lua dynamic library
'mzschemedll' name of the MzScheme dynamic library
'mzschemegcdll' name of the MzScheme dynamic library for GC
'macatsui' Mac GUI: use ATSUI text drawing
'magic' changes special characters in search patterns
'makeef' 'mef' name of the errorfile for ":make"
@ -797,6 +798,7 @@ Short explanation of each option: *option-list*
'menuitems' 'mis' maximum number of items in a menu
'mkspellmem' 'msm' memory used before |:mkspell| compresses the tree
'modeline' 'ml' recognize modelines at start or end of file
'modelineexpr' 'mle' allow setting expression options from a modeline
'modelines' 'mls' number of lines checked for modelines
'modifiable' 'ma' changes to the text are not possible
'modified' 'mod' buffer has been modified
@ -808,6 +810,8 @@ Short explanation of each option: *option-list*
'mouseshape' 'mouses' shape of the mouse pointer in different modes
'mousetime' 'mouset' max time between mouse double-click
'mzquantum' 'mzq' the interval between polls for MzScheme threads
'mzschemedll' name of the MzScheme dynamic library
'mzschemegcdll' name of the MzScheme dynamic library for GC
'nrformats' 'nf' number formats recognized for CTRL-A command
'number' 'nu' print the line number in front of each line
'numberwidth' 'nuw' number of columns used for the line number
@ -825,6 +829,7 @@ Short explanation of each option: *option-list*
'perldll' name of the Perl dynamic library
'preserveindent' 'pi' preserve the indent structure when reindenting
'previewheight' 'pvh' height of the preview window
'previewpopup' 'pvp' use popup window for preview
'previewwindow' 'pvw' identifies the preview window
'printdevice' 'pdev' name of the printer to be used for :hardcopy
'printencoding' 'penc' encoding to be used for printing
@ -916,6 +921,7 @@ Short explanation of each option: *option-list*
'tabstop' 'ts' number of spaces that <Tab> in file uses
'tagbsearch' 'tbs' use binary searching in tags files
'tagcase' 'tc' how to handle case when searching in tags files
'tagfunc' 'tfu' function to get list of tag matches
'taglength' 'tl' number of significant characters for a tag
'tagrelative' 'tr' file names in tag file are relative
'tags' 'tag' list of file names used by the tag command
@ -977,6 +983,7 @@ Short explanation of each option: *option-list*
'wildmode' 'wim' mode for 'wildchar' command-line expansion
'wildoptions' 'wop' specifies how command line completion is done
'winaltkeys' 'wak' when the windows system handles ALT keys
'wincolor' 'wcr' window-local highlighting
'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B
'winheight' 'wh' minimum number of lines for the current window
'winfixheight' 'wfh' keep window height when opening/closing windows

View File

@ -1,4 +1,4 @@
*recover.txt* For Vim version 8.1. Last change: 2014 Mar 27
*recover.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -131,7 +131,6 @@ command:
flag is present in 'cpoptions' the swap file will not
be deleted for this buffer when Vim exits and the
buffer is still loaded |cpo-&|.
{Vi: might also exit}
A Vim swap file can be recognized by the first six characters: "b0VIM ".
After that comes the version number, e.g., "3.0".
@ -196,7 +195,6 @@ recovered file. Or use |:DiffOrig|.
Once you are sure the recovery is ok delete the swap file. Otherwise, you
will continue to get warning messages that the ".swp" file already exists.
{Vi: recovers in another way and sends mail if there is something to recover}
ENCRYPTION AND THE SWAP FILE *:recover-crypt*

View File

@ -1,4 +1,4 @@
*remote.txt* For Vim version 8.1. Last change: 2017 Nov 12
*remote.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -10,8 +10,6 @@ Vim client-server communication *client-server*
2. X11 specific items |x11-clientserver|
3. MS-Windows specific items |w32-clientserver|
{Vi does not have any of these commands}
==============================================================================
1. Common functionality *clientserver*

View File

@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.1. Last change: 2018 Dec 18
*repeat.txt* For Vim version 8.1. Last change: 2019 Jun 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -124,11 +124,11 @@ q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
used for |y| and |p| the result is most likely not
what is expected, because the put will paste the
recorded macro and the yank will overwrite the
recorded macro. {Vi: no recording}
recorded macro.
q Stops recording. (Implementation note: The 'q' that
stops recording is not stored in the register, unless
it was the result of a mapping) {Vi: no recording}
it was the result of a mapping)
*@*
@{0-9a-z".=*+} Execute the contents of register {0-9a-z".=*+} [count]
@ -140,7 +140,7 @@ q Stops recording. (Implementation note: The 'q' that
applies.
For "@=" you are prompted to enter an expression. The
result of the expression is then executed.
See also |@:|. {Vi: only named registers}
See also |@:|.
*@@* *E748*
@@ Repeat the previous @{0-9a-z":*} [count] times.
@ -158,17 +158,16 @@ q Stops recording. (Implementation note: The 'q' that
result of evaluating the expression is executed as an
Ex command.
Mappings are not recognized in these commands.
{Vi: only in some versions} Future: Will execute the
register for each line in the address range.
Future: Will execute the register for each line in the
address range.
*:@:*
:[addr]@: Repeat last command-line. First set cursor at line
[addr] (default is current line). {not in Vi}
[addr] (default is current line).
:[addr]@ *:@@*
:[addr]@@ Repeat the previous :@{0-9a-z"}. First set cursor at
line [addr] (default is current line). {Vi: only in
some versions}
line [addr] (default is current line).
==============================================================================
4. Using Vim scripts *using-scripts*
@ -179,7 +178,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
:so[urce] {file} Read Ex commands from {file}. These are commands that
start with a ":".
Triggers the |SourcePre| autocommand.
*:source!*
:so[urce]! {file} Read Vim commands from {file}. These are commands
that are executed from Normal mode, like you type
them.
@ -187,7 +186,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|:bufdo|, in a loop or when another command follows
the display won't be updated while executing the
commands.
{not in Vi}
Cannot be used in the |sandbox|.
*:ru* *:runtime*
:ru[ntime][!] [where] {file} ..
@ -230,7 +229,6 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
when no file could be found.
When 'verbose' is two or higher, there is a message
about each searched file.
{not in Vi}
*:pa* *:packadd* *E919*
:pa[ckadd][!] {name} Search for an optional plugin directory in 'packpath'
@ -282,9 +280,16 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
after loading your .vimrc file. With this command it
can be done earlier.
Packages will be loaded only once. After this command
it won't happen again. When the optional ! is added
this command will load packages even when done before.
Packages will be loaded only once. Using
`:packloadall` a second time will have no effect.
When the optional ! is added this command will load
packages even when done before.
Note that when using `:packloadall` in the |vimrc|
file, the 'runtimepath' option is updated, and later
all plugins in 'runtimepath' will be loaded, which
means they are loaded again. Plugins are expected to
handle that.
An error only causes sourcing the script where it
happens to be aborted, further plugins will be loaded.
@ -323,14 +328,25 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
set encoding=utf-8
scriptencoding utf-8
<
{not in Vi}
:scriptv[ersion] {version} *:scriptv* *:scriptversion*
*E999* *E984*
Specify the version of Vim for the lines that follow
in the same file. Only applies at the toplevel of
sourced scripts, not inside functions.
If {version} is higher than what the current Vim
version supports E999 will be given. You either need
to rewrite the script to make it work with an older
Vim version, or update Vim to a newer version. See
|vimscript-version| for what changed between versions.
*:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were
first sourced. The number is used for the script ID
|<SID>|.
{not in Vi} {not available when compiled without the
|+eval| feature}
{not available when compiled without the |+eval|
feature}
:scr[iptnames][!] {scriptId} *:script*
Edit script {scriptId}. Although ":scriptnames name"
@ -346,7 +362,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
following the ":finally" up to the matching |:endtry|
are executed first. This process applies to all
nested ":try"s in the script. The outermost ":endtry"
then stops sourcing the script. {not in Vi}
then stops sourcing the script.
All commands and command sequences can be repeated by putting them in a named
register and then executing it. There are two ways to get the commands in the
@ -686,7 +702,6 @@ sourced file or user function and set breakpoints.
NOTE: The debugging mode is far from perfect. Debugging will have side
effects on how Vim works. You cannot use it to debug everything. For
example, the display is messed up by the debugging messages.
{Vi does not have a debug mode}
An alternative to debug mode is setting the 'verbose' option. With a bigger
number it will give more verbose messages about what Vim is doing.
@ -920,7 +935,6 @@ OBSCURE
Profiling means that Vim measures the time that is spent on executing
functions and/or scripts. The |+profile| feature is required for this.
It is only included when Vim was compiled with "huge" features.
{Vi does not have profiling}
You can also use the |reltime()| function to measure time. This only requires
the |+reltime| feature, which is present more often.

View File

@ -1,4 +1,4 @@
*rileft.txt* For Vim version 8.1. Last change: 2006 Apr 24
*rileft.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Avner Lottem
@ -12,8 +12,6 @@ These functions were originally created by Avner Lottem:
E-mail: alottem@iil.intel.com
Phone: +972-4-8307322
{Vi does not have any of these commands}
*E26*
{only available when compiled with the |+rightleft| feature}

View File

@ -1,4 +1,4 @@
*scroll.txt* For Vim version 8.1. Last change: 2018 Apr 26
*scroll.txt* For Vim version 8.1. Last change: 2019 May 13
VIM REFERENCE MANUAL by Bram Moolenaar
@ -45,9 +45,6 @@ CTRL-D Scroll window Downwards in the buffer. The number of
difference). When the cursor is on the last line of
the buffer nothing happens and a beep is produced.
See also 'startofline' option.
{difference from vi: Vim scrolls 'scroll' screen
lines, instead of file lines; makes a difference when
lines wrap}
<S-Down> or *<S-Down>* *<kPageDown>*
<PageDown> or *<PageDown>* *CTRL-F*
@ -85,9 +82,6 @@ CTRL-U Scroll window Upwards in the buffer. The number of
may be a difference). When the cursor is on the first
line of the buffer nothing happens and a beep is
produced. See also 'startofline' option.
{difference from vi: Vim scrolls 'scroll' screen
lines, instead of file lines; makes a difference when
lines wrap}
<S-Up> or *<S-Up>* *<kPageUp>*
<PageUp> or *<PageUp>* *CTRL-B*
@ -120,7 +114,7 @@ z<CR> Redraw, line [count] at top of window (default
*zt*
zt Like "z<CR>", but leave the cursor in the same
column. {not in Vi}
column.
*zN<CR>*
z{height}<CR> Redraw, make window {height} lines tall. This is
@ -136,7 +130,7 @@ z. Redraw, line [count] at center of window (default
*zz*
zz Like "z.", but leave the cursor in the same column.
Careful: If caps-lock is on, this command becomes
"ZZ": write buffer and exit! {not in Vi}
"ZZ": write buffer and exit!
*z-*
z- Redraw, line [count] at bottom of window (default
@ -145,7 +139,6 @@ z- Redraw, line [count] at bottom of window (default
*zb*
zb Like "z-", but leave the cursor in the same column.
{not in Vi}
==============================================================================
4. Scrolling horizontally *scroll-horizontal*
@ -158,26 +151,22 @@ not used.
z<Right> or *zl* *z<Right>*
zl Move the view on the text [count] characters to the
right, thus scroll the text [count] characters to the
left. This only works when 'wrap' is off. {not in
Vi}
left. This only works when 'wrap' is off.
z<Left> or *zh* *z<Left>*
zh Move the view on the text [count] characters to the
left, thus scroll the text [count] characters to the
right. This only works when 'wrap' is off. {not in
Vi}
right. This only works when 'wrap' is off.
*zL*
zL Move the view on the text half a screenwidth to the
right, thus scroll the text half a screenwidth to the
left. This only works when 'wrap' is off. {not in
Vi}
left. This only works when 'wrap' is off.
*zH*
zH Move the view on the text half a screenwidth to the
left, thus scroll the text half a screenwidth to the
right. This only works when 'wrap' is off. {not in
Vi}
right. This only works when 'wrap' is off.
For the following two commands the cursor is not moved in the text, only the
text scrolls on the screen.
@ -185,12 +174,12 @@ text scrolls on the screen.
*zs*
zs Scroll the text horizontally to position the cursor
at the start (left side) of the screen. This only
works when 'wrap' is off. {not in Vi}
works when 'wrap' is off.
*ze*
ze Scroll the text horizontally to position the cursor
at the end (right side) of the screen. This only
works when 'wrap' is off. {not in Vi}
works when 'wrap' is off.
==============================================================================
5. Scrolling synchronously *scroll-binding*

View File

@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.1. Last change: 2019 Jan 17
*sign.txt* For Vim version 8.1. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Gordon Prieur
@ -9,8 +9,8 @@ Sign Support Features *sign-support*
1. Introduction |sign-intro|
2. Commands |sign-commands|
3. Functions |sign-functions-details|
{Vi does not have any of these features}
{only available when compiled with the |+signs| feature}
==============================================================================
@ -183,9 +183,9 @@ See |sign_place()| for the equivalent Vim script function.
By default, the sign is assigned a default priority of 10. To
assign a different priority value, use "priority={prio}" to
specify a value. The priority is used to determine the
highlight group used when multiple signs are placed on the
same line.
specify a value. The priority is used to determine the sign
that is displayed when multiple signs are placed on the same
line.
Examples: >
:sign place 5 line=3 name=sign1 file=a.py
@ -205,7 +205,9 @@ See |sign_place()| for the equivalent Vim script function.
it (e.g., when the debugger has stopped at a breakpoint).
The optional "group={group}" attribute can be used before
"file=" to select a sign in a particular group.
"file=" to select a sign in a particular group. The optional
"priority={prio}" attribute can be used to change the priority
of an existing sign.
:sign place {id} name={name} [buffer={nr}]
Same, but use buffer {nr}. If the buffer argument is not
@ -343,4 +345,357 @@ See |sign_jump()| for the equivalent Vim script function.
Same but jump to the sign in group {group}
==============================================================================
3. Functions *sign-functions-details*
sign_define({name} [, {dict}]) *sign_define()*
sign_define({list})
Define a new sign named {name} or modify the attributes of an
existing sign. This is similar to the |:sign-define| command.
Prefix {name} with a unique text to avoid name collisions.
There is no {group} like with placing signs.
The {name} can be a String or a Number. The optional {dict}
argument specifies the sign attributes. The following values
are supported:
icon full path to the bitmap file for the sign.
linehl highlight group used for the whole line the
sign is placed in.
text text that is displayed when there is no icon
or the GUI is not being used.
texthl highlight group used for the text item
If the sign named {name} already exists, then the attributes
of the sign are updated.
The one argument {list} can be used to define a list of signs.
Each list item is a dictionary with the above items in {dict}
and a 'name' item for the sign name.
Returns 0 on success and -1 on failure. When the one argument
{list} is used, then returns a List of values one for each
defined sign.
Examples: >
call sign_define("mySign", {
\ "text" : "=>",
\ "texthl" : "Error",
\ "linehl" : "Search"})
call sign_define([
\ {'name' : 'sign1',
\ 'text' : '=>'},
\ {'name' : 'sign2',
\ 'text' : '!!'}
\ ])
<
sign_getdefined([{name}]) *sign_getdefined()*
Get a list of defined signs and their attributes.
This is similar to the |:sign-list| command.
If the {name} is not supplied, then a list of all the defined
signs is returned. Otherwise the attribute of the specified
sign is returned.
Each list item in the returned value is a dictionary with the
following entries:
icon full path to the bitmap file of the sign
linehl highlight group used for the whole line the
sign is placed in.
name name of the sign
text text that is displayed when there is no icon
or the GUI is not being used.
texthl highlight group used for the text item
Returns an empty List if there are no signs and when {name} is
not found.
Examples: >
" Get a list of all the defined signs
echo sign_getdefined()
" Get the attribute of the sign named mySign
echo sign_getdefined("mySign")
<
sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
Return a list of signs placed in a buffer or all the buffers.
This is similar to the |:sign-place-list| command.
If the optional buffer name {expr} is specified, then only the
list of signs placed in that buffer is returned. For the use
of {expr}, see |bufname()|. The optional {dict} can contain
the following entries:
group select only signs in this group
id select sign with this identifier
lnum select signs placed in this line. For the use
of {lnum}, see |line()|.
If {group} is '*', then signs in all the groups including the
global group are returned. If {group} is not supplied or is an
empty string, then only signs in the global group are
returned. If no arguments are supplied, then signs in the
global group placed in all the buffers are returned.
See |sign-group|.
Each list item in the returned value is a dictionary with the
following entries:
bufnr number of the buffer with the sign
signs list of signs placed in {bufnr}. Each list
item is a dictionary with the below listed
entries
The dictionary for each sign contains the following entries:
group sign group. Set to '' for the global group.
id identifier of the sign
lnum line number where the sign is placed
name name of the defined sign
priority sign priority
The returned signs in a buffer are ordered by their line
number and priority.
Returns an empty list on failure or if there are no placed
signs.
Examples: >
" Get a List of signs placed in eval.c in the
" global group
echo sign_getplaced("eval.c")
" Get a List of signs in group 'g1' placed in eval.c
echo sign_getplaced("eval.c", {'group' : 'g1'})
" Get a List of signs placed at line 10 in eval.c
echo sign_getplaced("eval.c", {'lnum' : 10})
" Get sign with identifier 10 placed in a.py
echo sign_getplaced("a.py", {'id' : 10})
" Get sign with id 20 in group 'g1' placed in a.py
echo sign_getplaced("a.py", {'group' : 'g1',
\ 'id' : 20})
" Get a List of all the placed signs
echo sign_getplaced()
<
*sign_jump()*
sign_jump({id}, {group}, {expr})
Open the buffer {expr} or jump to the window that contains
{expr} and position the cursor at sign {id} in group {group}.
This is similar to the |:sign-jump| command.
For the use of {expr}, see |bufname()|.
Returns the line number of the sign. Returns -1 if the
arguments are invalid.
Example: >
" Jump to sign 10 in the current buffer
call sign_jump(10, '', '')
<
*sign_place()*
sign_place({id}, {group}, {name}, {expr} [, {dict}])
Place the sign defined as {name} at line {lnum} in file or
buffer {expr} and assign {id} and {group} to sign. This is
similar to the |:sign-place| command.
If the sign identifier {id} is zero, then a new identifier is
allocated. Otherwise the specified number is used. {group} is
the sign group name. To use the global sign group, use an
empty string. {group} functions as a namespace for {id}, thus
two groups can use the same IDs. Refer to |sign-identifier|
and |sign-group| for more information.
{name} refers to a defined sign.
{expr} refers to a buffer name or number. For the accepted
values, see |bufname()|.
The optional {dict} argument supports the following entries:
lnum line number in the file or buffer
{expr} where the sign is to be placed.
For the accepted values, see |line()|.
priority priority of the sign. See
|sign-priority| for more information.
If the optional {dict} is not specified, then it modifies the
placed sign {id} in group {group} to use the defined sign
{name}.
Returns the sign identifier on success and -1 on failure.
Examples: >
" Place a sign named sign1 with id 5 at line 20 in
" buffer json.c
call sign_place(5, '', 'sign1', 'json.c',
\ {'lnum' : 20})
" Updates sign 5 in buffer json.c to use sign2
call sign_place(5, '', 'sign2', 'json.c')
" Place a sign named sign3 at line 30 in
" buffer json.c with a new identifier
let id = sign_place(0, '', 'sign3', 'json.c',
\ {'lnum' : 30})
" Place a sign named sign4 with id 10 in group 'g3'
" at line 40 in buffer json.c with priority 90
call sign_place(10, 'g3', 'sign4', 'json.c',
\ {'lnum' : 40, 'priority' : 90})
<
*sign_placelist()*
sign_placelist({list})
Place one or more signs. This is similar to the
|sign_place()| function. The {list} argument specifies the
List of signs to place. Each list item is a dict with the
following sign attributes:
buffer buffer name or number. For the accepted
values, see |bufname()|.
group sign group. {group} functions as a namespace
for {id}, thus two groups can use the same
IDs. If not specified or set to an empty
string, then the global group is used. See
|sign-group| for more information.
id sign identifier. If not specified or zero,
then a new unique identifier is allocated.
Otherwise the specified number is used. See
|sign-identifier| for more information.
lnum line number in the buffer {expr} where the
sign is to be placed. For the accepted values,
see |line()|.
name name of the sign to place. See |sign_define()|
for more information.
priority priority of the sign. When multiple signs are
placed on a line, the sign with the highest
priority is used. If not specified, the
default value of 10 is used. See
|sign-priority| for more information.
If {id} refers to an existing sign, then the existing sign is
modified to use the specified {name} and/or {priority}.
Returns a List of sign identifiers. If failed to place a
sign, the corresponding list item is set to -1.
Examples: >
" Place sign s1 with id 5 at line 20 and id 10 at line
" 30 in buffer a.c
let [n1, n2] = sign_placelist([
\ {'id' : 5,
\ 'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 20},
\ {'id' : 10,
\ 'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 30}
\ ])
" Place sign s1 in buffer a.c at line 40 and 50
" with auto-generated identifiers
let [n1, n2] = sign_placelist([
\ {'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 40},
\ {'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 50}
\ ])
<
sign_undefine([{name}]) *sign_undefine()*
sign_undefine({list})
Deletes a previously defined sign {name}. This is similar to
the |:sign-undefine| command. If {name} is not supplied, then
deletes all the defined signs.
The one argument {list} can be used to undefine a list of
signs. Each list item is the name of a sign.
Returns 0 on success and -1 on failure. For the one argument
{list} call, returns a list of values one for each undefined
sign.
Examples: >
" Delete a sign named mySign
call sign_undefine("mySign")
" Delete signs 'sign1' and 'sign2'
call sign_undefine(["sign1", "sign2"])
" Delete all the signs
call sign_undefine()
<
sign_unplace({group} [, {dict}]) *sign_unplace()*
Remove a previously placed sign in one or more buffers. This
is similar to the |:sign-unplace| command.
{group} is the sign group name. To use the global sign group,
use an empty string. If {group} is set to '*', then all the
groups including the global group are used.
The signs in {group} are selected based on the entries in
{dict}. The following optional entries in {dict} are
supported:
buffer buffer name or number. See |bufname()|.
id sign identifier
If {dict} is not supplied, then all the signs in {group} are
removed.
Returns 0 on success and -1 on failure.
Examples: >
" Remove sign 10 from buffer a.vim
call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
" Remove sign 20 in group 'g1' from buffer 3
call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
" Remove all the signs in group 'g2' from buffer 10
call sign_unplace('g2', {'buffer' : 10})
" Remove sign 30 in group 'g3' from all the buffers
call sign_unplace('g3', {'id' : 30})
" Remove all the signs placed in buffer 5
call sign_unplace('*', {'buffer' : 5})
" Remove the signs in group 'g4' from all the buffers
call sign_unplace('g4')
" Remove sign 40 from all the buffers
call sign_unplace('*', {'id' : 40})
" Remove all the placed signs from all the buffers
call sign_unplace('*')
<
sign_unplacelist({list}) *sign_unplacelist()*
Remove previously placed signs from one or more buffers. This
is similar to the |sign_unplace()| function.
The {list} argument specifies the List of signs to remove.
Each list item is a dict with the following sign attributes:
buffer buffer name or number. For the accepted
values, see |bufname()|. If not specified,
then the specified sign is removed from all
the buffers.
group sign group name. If not specified or set to an
empty string, then the global sign group is
used. If set to '*', then all the groups
including the global group are used.
id sign identifier. If not specified, then all
the signs in the specified group are removed.
Returns a List where an entry is set to 0 if the corresponding
sign was successfully removed or -1 on failure.
Example: >
" Remove sign with id 10 from buffer a.vim and sign
" with id 20 from buffer b.vim
call sign_unplacelist([
\ {'id' : 10, 'buffer' : "a.vim"},
\ {'id' : 20, 'buffer' : 'b.vim'},
\ ])
<
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*spell.txt* For Vim version 8.1. Last change: 2019 Jan 19
*spell.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -11,10 +11,7 @@ Spell checking *spell*
3. Generating a spell file |spell-mkspell|
4. Spell file format |spell-file-format|
{Vi does not have any of these commands}
Spell checking is not available when the |+syntax| feature has been disabled
at compile time.
{not available when the |+syntax| feature has been disabled at compile time}
Note: There also is a vimspell plugin. If you have it you can do ":help
vimspell" to find about it. But you will probably want to get rid of the

View File

@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.1. Last change: 2019 Feb 16
*starting.txt* For Vim version 8.1. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -84,7 +84,6 @@ filename One or more file names. The first one will be the current
and the first error is displayed. See |quickfix|.
If [errorfile] is not given, the 'errorfile' option is used
for the file name. See 'errorfile' for the default value.
{not in Vi}
(nothing) Without one of the four items above, Vim will start editing a
new buffer. It's empty and doesn't have a file name.
@ -129,17 +128,17 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
--help *-h* *--help* *-?*
-?
-h Give usage (help) message and exit. {not in Vi}
-h Give usage (help) message and exit.
See |info-message| about capturing the text.
*--version*
--version Print version information and exit. Same output as for
|:version| command. {not in Vi}
|:version| command.
See |info-message| about capturing the text.
*--noplugin*
--noplugin Skip loading plugins. Resets the 'loadplugins' option.
{not in Vi}
Note that the |-u| argument may also disable loading plugins:
argument load: vimrc files plugins defaults.vim ~
(nothing) yes yes yes
@ -190,13 +189,11 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
Note: You can use up to 10 "+" or "-c" arguments in a Vim
command. They are executed in the order given. A "-S"
argument counts as a "-c" argument as well.
{Vi only allows one command}
--cmd {command} *--cmd*
{command} will be executed before processing any vimrc file.
Otherwise it acts like -c {command}. You can use up to 10 of
these commands, independently from "-c" commands.
{not in Vi}
*-S*
-S {file} The {file} will be sourced after the first file has been read.
@ -205,7 +202,9 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
< It can be mixed with "-c" arguments and repeated like "-c".
The limit of 10 "-c" arguments applies here as well.
{file} cannot start with a "-".
{not in Vi}
Do not use this for running a script to do some work and exit
Vim, you won't see error messages. Use |-u| instead.
-S Works like "-S Session.vim". Only when used as the last
argument or when another "-" option follows.
@ -217,8 +216,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
|crash-recovery|.
*-L*
-L Same as -r. {only in some versions of Vi: "List recoverable
edit sessions"}
-L Same as -r.
*-R*
-R Readonly mode. The 'readonly' option will be set for all the
@ -238,7 +236,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-m Modifications not allowed to be written. The 'write' option
will be reset, so that writing files is disabled. However,
the 'write' option can be set to enable writing again.
{not in Vi}
*-M*
-M Modifications not allowed. The 'modifiable' option will be
@ -246,7 +243,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
will be reset, so that writing files is disabled. However,
the 'modifiable' and 'write' options can be set to enable
changes and writing.
{not in Vi}
*-Z* *restricted-mode* *E145* *E981*
-Z Restricted mode. All commands that make use of an external
@ -260,11 +256,9 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
the Safe module.
Note that the user may still find a loophole to execute a
shell command, it has only been made difficult.
{not in Vi}
*-g*
-g Start Vim in GUI mode. See |gui|. For the opposite see |-v|.
{not in Vi}
*-v*
-v Start Ex in Vi mode. Only makes a difference when the
@ -278,7 +272,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
*-E*
-E Start Vim in improved Ex mode |gQ|. Only makes a difference
when the executable is not called "exim".
{not in Vi}
*-s-ex*
-s Silent or batch mode. Only when Vim was started as "ex" or
@ -302,6 +295,9 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
"-u" argument).
Example: >
vim -e -s < thefilter thefile
< For the opposite, to see errors from the script, execute the
file with the |-u| flag: >
vim -u thefilter thefile
<
*-b*
-b Binary mode. File I/O will only recognize <NL> to separate
@ -309,7 +305,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
option is set to 0. 'modeline' is reset. The 'binary' option
is set. This is done after reading the vimrc/exrc files but
before reading any file in the arglist. See also
|edit-binary|. {not in Vi}
|edit-binary|.
*-l*
-l Lisp mode. Sets the 'lisp' and 'showmatch' options on.
@ -318,7 +314,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-A Arabic mode. Sets the 'arabic' option on. (Only when
compiled with the |+arabic| features (which include
|+rightleft|), otherwise Vim gives an error message
and exits.) {not in Vi}
and exits.)
*-F*
-F This was used for Farsi mode, which has been removed.
@ -327,13 +323,13 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
*-H*
-H Hebrew mode. Sets the 'hkmap' and 'rightleft' options on.
(Only when compiled with the |+rightleft| feature, otherwise
Vim gives an error message and exits.) {not in Vi}
Vim gives an error message and exits.)
*-V* *verbose*
-V[N] Verbose. Sets the 'verbose' option to [N] (default: 10).
Messages will be given for each file that is ":source"d and
for reading or writing a viminfo file. Can be used to find
out what is happening upon startup and exit. {not in Vi}
out what is happening upon startup and exit.
Example: >
vim -V8 foobar
@ -348,7 +344,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-D Debugging. Go to debugging mode when executing the first
command from a script. |debug-mode|
{not available when compiled without the |+eval| feature}
{not in Vi}
*-C*
-C Compatible mode. Sets the 'compatible' option. You can use
@ -360,13 +355,13 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
< Several plugins won't work with 'compatible' set. You may
want to set it after startup this way: >
vim "+set cp" filename
< Also see |compatible-default|. {not in Vi}
< Also see |compatible-default|.
*-N*
-N Not compatible mode. Resets the 'compatible' option. You can
use this to get 'nocompatible', when there is no .vimrc file
or when using "-u NONE".
Also see |compatible-default|. {not in Vi}
Also see |compatible-default|.
*-y* *easy*
-y Easy mode. Implied for |evim| and |eview|. Starts with
@ -374,7 +369,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
This sources the script $VIMRUNTIME/evim.vim. Mappings are
set up to work like most click-and-type editors, see
|evim-keys|. The GUI is started when available.
{not in Vi}
*-n*
-n No swap file will be used. Recovery after a crash will be
@ -394,7 +388,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
'updatecount' to very big numbers, and type ":preserve" when
you want to save your work. This way you keep the possibility
for crash recovery.
{not in Vi}
*-o*
-o[N] Open N windows, split horizontally. If [N] is not given,
@ -402,13 +395,11 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
there is not enough room, only the first few files get a
window. If there are more windows than arguments, the last
few windows will be editing an empty file.
{not in Vi}
*-O*
-O[N] Open N windows, split vertically. Otherwise it's like -o.
If both the -o and the -O option are given, the last one on
the command line determines how the windows will be split.
{not in Vi}
*-p*
-p[N] Open N tab pages. If [N] is not given, one tab page is opened
@ -416,20 +407,19 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
'tabpagemax' pages (default 10). If there are more tab pages
than arguments, the last few tab pages will be editing an
empty file. Also see |tabpage|.
{not in Vi}
*-T*
-T {terminal} Set the terminal type to "terminal". This influences the
codes that Vim will send to your terminal. This is normally
not needed, because Vim will be able to find out what type
of terminal you are using. (See |terminal-info|.) {not in Vi}
of terminal you are using. (See |terminal-info|.)
*--not-a-term*
--not-a-term Tells Vim that the user knows that the input and/or output is
not connected to a terminal. This will avoid the warning and
the two second delay that would happen.
Also avoids the "Reading from stdin..." message.
{not in Vi}
Also avoids the "N files to edit" message.
*--ttyfail*
--ttyfail When the stdin or stdout is not a terminal (tty) then exit
@ -437,8 +427,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
*-d*
-d Start in diff mode, like |vimdiff|.
{not in Vi} {not available when compiled without the |+diff|
feature}
{not available when compiled without the |+diff| feature}
-d {device} Only on the Amiga and when not compiled with the |+diff|
feature. Works like "-dev".
@ -448,7 +437,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
Normally you would use this to set the window position and
size: "-d con:x/y/width/height", e.g.,
"-d con:30/10/600/150". But you can also use it to start
editing on another device, e.g., AUX:. {not in Vi}
editing on another device, e.g., AUX:.
*-f*
-f GUI: Do not disconnect from the program that started Vim.
'f' stands for "foreground". If omitted, the GUI forks a new
@ -467,7 +456,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
MS-Windows: This option is not supported. However, when
running Vim with an installed vim.bat or gvim.bat file it
works.
{not in Vi}
*--nofork*
@ -499,7 +487,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
has the side effect that the 'compatible' option will be on by
default. This can have unexpected effects. See
|'compatible'|.
{not in Vi}
*-U* *E230*
-U {gvimrc} The file {gvimrc} is read for initializations when the GUI
@ -507,14 +494,12 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
is equal to "NONE", no file is read for GUI initializations at
all. |gui-init|
Exception: Reading the system-wide menu file is always done.
{not in Vi}
*-i*
-i {viminfo} The file "viminfo" is used instead of the default viminfo
file. If the name "NONE" is used (all uppercase), no viminfo
file is read or written, even if 'viminfo' is set or when
":rv" or ":wv" are used. See also |viminfo-file|.
{not in Vi}
*--clean*
--clean Similar to "-u DEFAULTS -U NONE -i NONE":
@ -551,7 +536,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
When the connection is desired later anyway (e.g., for
client-server messages), call the |serverlist()| function.
This does not enable the XSMP handler though.
{not in Vi}
*-s*
-s {scriptin} The script file "scriptin" is read. The characters in the
@ -560,7 +544,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
of the file is reached before the editor exits, further
characters are read from the keyboard. Only works when not
started in Ex mode, see |-s-ex|. See also |complex-repeat|.
{not in Vi}
*-w_nr*
-w {number}
@ -573,62 +556,59 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
":source!". When the "scriptout" file already exists, new
characters are appended. See also |complex-repeat|.
{scriptout} cannot start with a digit.
{not in Vi}
*-W*
-W {scriptout} Like -w, but do not append, overwrite an existing file.
{not in Vi}
--remote [+{cmd}] {file} ...
Open the {file} in another Vim that functions as a server.
Any non-file arguments must come before this.
See |--remote|. {not in Vi}
See |--remote|.
--remote-silent [+{cmd}] {file} ...
Like --remote, but don't complain if there is no server.
See |--remote-silent|. {not in Vi}
See |--remote-silent|.
--remote-wait [+{cmd}] {file} ...
Like --remote, but wait for the server to finish editing the
file(s).
See |--remote-wait|. {not in Vi}
See |--remote-wait|.
--remote-wait-silent [+{cmd}] {file} ...
Like --remote-wait, but don't complain if there is no server.
See |--remote-wait-silent|. {not in Vi}
See |--remote-wait-silent|.
--servername {name}
Specify the name of the Vim server to send to or to become.
See |--servername|. {not in Vi}
See |--servername|.
--remote-send {keys}
Send {keys} to a Vim server and exit.
See |--remote-send|. {not in Vi}
See |--remote-send|.
--remote-expr {expr}
Evaluate {expr} in another Vim that functions as a server.
The result is printed on stdout.
See |--remote-expr|. {not in Vi}
See |--remote-expr|.
--serverlist Output a list of Vim server names and exit. See
|--serverlist|. {not in Vi}
|--serverlist|.
--socketid {id} *--socketid*
GTK+ GUI Vim only. Make gvim try to use GtkPlug mechanism, so
that it runs inside another window. See |gui-gtk-socketid|
for details. {not in Vi}
for details.
--windowid {id} *--windowid*
Win32 GUI Vim only. Make gvim try to use the window {id} as a
parent, so that it runs inside that window. See
|gui-w32-windowid| for details. {not in Vi}
|gui-w32-windowid| for details.
--echo-wid *--echo-wid*
GTK+ GUI Vim only. Make gvim echo the Window ID on stdout,
which can be used to run gvim in a kpart widget. The format
of the output is: >
WID: 12345\n
< {not in Vi}
--role {role} *--role*
GTK+ 2 GUI only. Set the role of the main window to {role}.
@ -636,7 +616,6 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
identify a window, in order to restore window placement and
such. The --role argument is passed automatically when
restoring the session on login. See |gui-gnome-session|
{not in Vi}
-P {parent-title} *-P* *MDI* *E671* *E672*
Win32 only: Specify the title of the parent application. When
@ -1267,16 +1246,16 @@ vimrc file.
*:mk* *:mkexrc*
:mk[exrc] [file] Write current key mappings and changed options to
[file] (default ".exrc" in the current directory),
unless it already exists. {not in Vi}
unless it already exists.
:mk[exrc]! [file] Always write current key mappings and changed
options to [file] (default ".exrc" in the current
directory). {not in Vi}
directory).
*:mkv* *:mkvimrc*
*:mkv* *:mkvi* *:mkvimrc*
:mkv[imrc][!] [file] Like ":mkexrc", but the default is ".vimrc" in the
current directory. The ":version" command is also
written to the file. {not in Vi}
written to the file.
These commands will write ":map" and ":set" commands to a file, in such a way
that when these commands are executed, the current key mappings and options
@ -1342,8 +1321,7 @@ You can quickly start editing with a previously saved View or Session with the
|-S| argument: >
vim -S Session.vim
<
All this is {not in Vi} and {not available when compiled without the
|+mksession| feature}.
All this is {not available when compiled without the |+mksession| feature}.
*:mks* *:mksession*
:mks[ession][!] [file] Write a Vim script that restores the current editing
@ -1658,7 +1636,7 @@ most of the information will be restored).
:rv[iminfo][!] [file] Read from viminfo file [file] (default: see above).
If [!] is given, then any information that is
already set (registers, marks, |v:oldfiles|, etc.)
will be overwritten {not in Vi}
will be overwritten
*:wv* *:wviminfo* *E137* *E138* *E574* *E886* *E929*
:wv[iminfo][!] [file] Write to viminfo file [file] (default: see above).
@ -1671,7 +1649,6 @@ most of the information will be restored).
check that no old temp files were left behind (e.g.
~/.viminf*) and that you can write in the directory of
the .viminfo file.
{not in Vi}
*:ol* *:oldfiles*
:ol[dfiles] List the files that have marks stored in the viminfo
@ -1681,8 +1658,7 @@ most of the information will be restored).
The output can be filtered with |:filter|, e.g.: >
filter /\.vim/ oldfiles
< The filtering happens on the file name.
{not in Vi, only when compiled with the |+eval|
feature}
{only when compiled with the |+eval| feature}
:bro[wse] ol[dfiles][!]
List file names as with |:oldfiles|, and then prompt

View File

@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.1. Last change: 2018 Dec 27
*syntax.txt* For Vim version 8.1. Last change: 2019 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1962,7 +1962,7 @@ The g:lisp_rainbow option provides 10 levels of individual colorization for
the parentheses and backquoted parentheses. Because of the quantity of
colorization levels, unlike non-rainbow highlighting, the rainbow mode
specifies its highlighting using ctermfg and guifg, thereby bypassing the
usual colorscheme control using standard highlighting groups. The actual
usual color scheme control using standard highlighting groups. The actual
highlighting used depends on the dark/bright setting (see |'bg'|).
@ -2623,7 +2623,6 @@ preceding last option and unsetting all other ones): >
Note: only existence of these options matter, not their value. You can replace
1 above with anything.
QUAKE *quake.vim* *ft-quake-syntax*
The Quake syntax definition should work for most any FPS (First Person
@ -3140,7 +3139,7 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a
modeline at the end of your LaTeX file: >
% vim: fdm=syntax
If your system becomes too slow, then you might wish to look into >
https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7
https://vimhelp.org/vim_faq.txt.html#faq-29.7
<
*g:tex_nospell*
Tex: No Spell Checking Wanted~
@ -4694,9 +4693,9 @@ in their own color.
Doesn't work recursively, thus you can't use
":colorscheme" in a color scheme script.
To customize a colorscheme use another name, e.g.
To customize a color scheme use another name, e.g.
"~/.vim/colors/mine.vim", and use `:runtime` to load
the original colorscheme: >
the original color scheme: >
runtime colors/evening.vim
hi Statement ctermfg=Blue guifg=Blue
@ -4704,7 +4703,7 @@ in their own color.
|ColorSchemePre| autocommand event is triggered.
After the color scheme has been loaded the
|ColorScheme| autocommand event is triggered.
For info about writing a colorscheme file: >
For info about writing a color scheme file: >
:edit $VIMRUNTIME/colors/README.txt
:hi[ghlight] List all the current highlight groups that have
@ -4827,8 +4826,9 @@ cterm={attr-list} *highlight-cterm*
The "cterm" argument is likely to be different from "term", when
colors are used. For example, in a normal terminal comments could
be underlined, in a color terminal they can be made Blue.
Note: Many terminals (e.g., DOS console) can't mix these attributes
with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=".
Note: Some terminals (e.g., DOS console) can't mix these attributes
with coloring. To be portable, use only one of "cterm=" OR "ctermfg="
OR "ctermbg=".
ctermfg={color-nr} *highlight-ctermfg* *E421*
ctermbg={color-nr} *highlight-ctermbg*
@ -4901,7 +4901,7 @@ ctermbg={color-nr} *highlight-ctermbg*
explicitly. This causes the highlight groups that depend on
'background' to change! This means you should set the colors for
Normal first, before setting other colors.
When a colorscheme is being used, changing 'background' causes it to
When a color scheme is being used, changing 'background' causes it to
be reloaded, which may reset all colors (including Normal). First
delete the "g:colors_name" variable when you don't want this.
@ -5002,6 +5002,8 @@ Conceal placeholder characters substituted for concealed
text (see 'conceallevel')
*hl-Cursor*
Cursor the character under the cursor
lCursor the character under the cursor when |language-mapping|
is used (see 'guicursor')
*hl-CursorIM*
CursorIM like Cursor, but used when in IME mode |CursorIM|
*hl-CursorColumn*
@ -5207,6 +5209,15 @@ load the syntax file.
The command also deletes the "b:current_syntax" variable, since no syntax is
loaded after this command.
To clean up specific syntax groups for the current buffer: >
:syntax clear {group-name} ..
This removes all patterns and keywords for {group-name}.
To clean up specific syntax group lists for the current buffer: >
:syntax clear @{grouplist-name} ..
This sets {grouplist-name}'s contents to an empty list.
*:syntax-off* *:syn-off*
If you want to disable syntax highlighting for all buffers, you need to remove
the autocommands that load the syntax files: >
:syntax off
@ -5216,14 +5227,6 @@ What this command actually does, is executing the command >
See the "nosyntax.vim" file for details. Note that for this to work
$VIMRUNTIME must be valid. See |$VIMRUNTIME|.
To clean up specific syntax groups for the current buffer: >
:syntax clear {group-name} ..
This removes all patterns and keywords for {group-name}.
To clean up specific syntax group lists for the current buffer: >
:syntax clear @{grouplist-name} ..
This sets {grouplist-name}'s contents to an empty list.
*:syntax-reset* *:syn-reset*
If you have changed the colors and messed them up, use this command to get the
defaults back: >

View File

@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.1. Last change: 2018 Mar 29
*tabpage.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -16,7 +16,6 @@ when used in combination with more than one tab page.
4. Setting 'tabline' |setting-tabline|
5. Setting 'guitablabel' |setting-guitablabel|
{Vi does not have any of these commands}
{not able to use multiple tab pages when the |+windows| feature was disabled
at compile time}
@ -289,7 +288,6 @@ LOOPING OVER TAB PAGES:
current tab page.
{cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close tab pages or reorder them.
{not in Vi}
Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|
and |:lfdo|

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*tagsrch.txt* For Vim version 8.1. Last change: 2019 Feb 25
*tagsrch.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -14,6 +14,7 @@ See section |29.1| of the user manual for an introduction.
4. Tags details |tag-details|
5. Tags file format |tags-file-format|
6. Include file searches |include-search|
7. Using 'tagfunc' |tag-function|
==============================================================================
1. Jump to a tag *tag-commands*
@ -55,11 +56,10 @@ CTRL-] Jump to the definition of the keyword under the
to the [count] one. When no [count] is given the
first one is jumped to. See |tag-matchlist| for
jumping to other matching tags.
{Vi: identifier after the cursor}
*v_CTRL-]*
{Visual}CTRL-] Same as ":tag {name}", where {name} is the text that
is highlighted. {not in Vi}
is highlighted.
*telnet-CTRL-]*
CTRL-] is the default telnet escape key. When you type CTRL-] to jump to a
@ -85,18 +85,21 @@ changed, to avoid confusion when using ":tnext". It is changed when using
":tag {name}".
The ignore-case matches are not found for a ":tag" command when:
- the 'ignorecase' option is off and 'tagcase' is "followic"
- 'tagcase' is "followic" and the 'ignorecase' option is off
- 'tagcase' is "followscs" and the 'ignorecase' option is off and the
'smartcase' option is off or the pattern contains an upper case character.
- 'tagcase' is "match"
- 'tagcase' is "smart" and the pattern contains an upper case character.
- 'tagcase' is "followscs" and 'smartcase' option is on and the pattern
contains an upper case character.
The ignore-case matches are found when:
- a pattern is used (starting with a "/")
- for ":tselect"
- when 'tagcase' is "followic" and 'ignorecase' is off
- when 'tagcase' is "match"
- when 'tagcase' is "followscs" and the 'smartcase' option is off
- when 'tagcase' is "followic" and 'ignorecase' is on
- when 'tagcase' is "followscs" and 'ignorecase' is on or the 'smartcase'
option is on and the pattern does not contain an upper case character
- when 'tagcase' is "ignore"
- when 'tagcase' is "smart" and the patter does not contain an upper case
character
Note that using ignore-case tag searching disables binary searching in the
tags file, which causes a slowdown. This can be avoided by fold-case sorting
@ -111,18 +114,18 @@ Tags are only pushed onto the stack when the 'tagstack' option is set.
g<RightMouse> *g<RightMouse>*
<C-RightMouse> *<C-RightMouse>* *CTRL-T*
CTRL-T Jump to [count] older entry in the tag stack
(default 1). {not in Vi}
(default 1).
*:po* *:pop* *E555* *E556*
:[count]po[p][!] Jump to [count] older entry in tag stack (default 1).
See |tag-!| for [!]. {not in Vi}
See |tag-!| for [!].
:[count]ta[g][!] Jump to [count] newer entry in tag stack (default 1).
See |tag-!| for [!]. {not in Vi}
See |tag-!| for [!].
*:tags*
:tags Show the contents of the tag stack. The active
entry is marked with a '>'. {not in Vi}
entry is marked with a '>'.
The output of ":tags" looks like this:
@ -203,7 +206,7 @@ the same entry.
the current position in the list (if there is one).
[name] can be a regexp pattern, see |tag-regexp|.
See |tag-priority| for the priorities used in the
listing. {not in Vi}
listing.
Example output:
>
@ -230,54 +233,50 @@ the same entry.
*:sts* *:stselect*
:sts[elect][!] [name] Does ":tselect[!] [name]" and splits the window for
the selected tag. {not in Vi}
the selected tag.
*g]*
g] Like CTRL-], but use ":tselect" instead of ":tag".
{not in Vi}
*v_g]*
{Visual}g] Same as "g]", but use the highlighted text as the
identifier. {not in Vi}
identifier.
*:tj* *:tjump*
:tj[ump][!] [name] Like ":tselect", but jump to the tag directly when
there is only one match. {not in Vi}
there is only one match.
*:stj* *:stjump*
:stj[ump][!] [name] Does ":tjump[!] [name]" and splits the window for the
selected tag. {not in Vi}
selected tag.
*g_CTRL-]*
g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag".
{not in Vi}
*v_g_CTRL-]*
{Visual}g CTRL-] Same as "g CTRL-]", but use the highlighted text as
the identifier. {not in Vi}
the identifier.
*:tn* *:tnext*
:[count]tn[ext][!] Jump to [count] next matching tag (default 1). See
|tag-!| for [!]. {not in Vi}
|tag-!| for [!].
*:tp* *:tprevious*
:[count]tp[revious][!] Jump to [count] previous matching tag (default 1).
See |tag-!| for [!]. {not in Vi}
See |tag-!| for [!].
*:tN* *:tNext*
:[count]tN[ext][!] Same as ":tprevious". {not in Vi}
:[count]tN[ext][!] Same as ":tprevious".
*:tr* *:trewind*
:[count]tr[ewind][!] Jump to first matching tag. If [count] is given, jump
to [count]th matching tag. See |tag-!| for [!]. {not
in Vi}
to [count]th matching tag. See |tag-!| for [!].
*:tf* *:tfirst*
:[count]tf[irst][!] Same as ":trewind". {not in Vi}
:[count]tf[irst][!] Same as ":trewind".
*:tl* *:tlast*
:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not
in Vi}
:tl[ast][!] Jump to last matching tag. See |tag-!| for [!].
*:lt* *:ltag*
:lt[ag][!] [name] Jump to tag [name] and add the matching tags to a new
@ -289,7 +288,6 @@ g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag".
characters (very nomagic). The location list showing
the matching tags is independent of the tag stack.
See |tag-!| for [!].
{not in Vi}
When there is no other message, Vim shows which matching tag has been jumped
to, and the number of matching tags: >
@ -316,34 +314,28 @@ the same as above, with a "p" prepended.
*:pts* *:ptselect*
:pts[elect][!] [name] Does ":tselect[!] [name]" and shows the new tag in a
"Preview" window. See |:ptag| for more info.
{not in Vi}
*:ptj* *:ptjump*
:ptj[ump][!] [name] Does ":tjump[!] [name]" and shows the new tag in a
"Preview" window. See |:ptag| for more info.
{not in Vi}
*:ptn* *:ptnext*
:[count]ptn[ext][!] ":tnext" in the preview window. See |:ptag|.
{not in Vi}
*:ptp* *:ptprevious*
:[count]ptp[revious][!] ":tprevious" in the preview window. See |:ptag|.
{not in Vi}
*:ptN* *:ptNext*
:[count]ptN[ext][!] Same as ":ptprevious". {not in Vi}
:[count]ptN[ext][!] Same as ":ptprevious".
*:ptr* *:ptrewind*
:[count]ptr[ewind][!] ":trewind" in the preview window. See |:ptag|.
{not in Vi}
*:ptf* *:ptfirst*
:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi}
:[count]ptf[irst][!] Same as ":ptrewind".
*:ptl* *:ptlast*
:ptl[ast][!] ":tlast" in the preview window. See |:ptag|.
{not in Vi}
==============================================================================
4. Tags details *tag-details*
@ -431,7 +423,6 @@ In a future version changing the buffer will be impossible. All this for
security reasons: Somebody might hide a nasty command in the tags file, which
would otherwise go unnoticed. Example: >
:$d|/tag-function-name/
{this security prevention is not present in Vi}
In Vi the ":tag" command sets the last search pattern when the tag is searched
for. In Vim this is not done, the previous search pattern is still remembered,
@ -515,7 +506,7 @@ Some programs that generate tags files:
ctags As found on most Unix systems. Only supports C. Only
does the basic work.
*Exuberant_ctags*
exuberant ctags This a very good one. It works for C, C++, Java,
exuberant ctags This is a very good one. It works for C, C++, Java,
Fortran, Eiffel and others. It can generate tags for
many items. See http://ctags.sourceforge.net.
etags Connected to Emacs. Supports many languages.
@ -529,28 +520,21 @@ gnatxref For Ada. See http://www.gnuada.org/. gnatxref is
part of the gnat package.
The lines in the tags file must have one of these three formats:
The lines in the tags file must have one of these two formats:
1. {tagname} {TAB} {tagfile} {TAB} {tagaddress}
2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress}
3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} ..
2. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} ..
The first is a normal tag, which is completely compatible with Vi. It is the
only format produced by traditional ctags implementations. This is often used
for functions that are global, also referenced in other files.
Previously an old format was supported, see |tag-old-static|.
The first format is a normal tag, which is completely compatible with Vi. It
is the only format produced by traditional ctags implementations. This is
often used for functions that are global, also referenced in other files.
The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR>
also works. The <CR> and <NL> characters can never appear inside a line.
*tag-old-static*
The second format is for a static tag only. It is obsolete now, replaced by
the third format. It is only supported by Elvis 1.x and Vim and a few
versions of ctags. A static tag is often used for functions that are local,
only referenced in the file {tagfile}. Note that for the static tag, the two
occurrences of {tagfile} must be exactly the same. Also see |tags-option|
below, for how static tags are used.
The third format is new. It includes additional information in optional
The second format is new. It includes additional information in optional
fields at the end of each line. It is backwards compatible with Vi. It is
only supported by new versions of ctags (such as Exuberant ctags).
@ -558,8 +542,7 @@ only supported by new versions of ctags (such as Exuberant ctags).
be any identifier. It cannot contain a <Tab>.
{TAB} One <Tab> character. Note: previous versions allowed any
white space here. This has been abandoned to allow spaces in
{tagfile}. It can be re-enabled by including the
|+tag_any_white| feature at compile time. *tag-any-white*
{tagfile}.
{tagfile} The file that contains the definition of {tagname}. It can
have an absolute or relative path. It may contain environment
variables and wildcards (although the use of wildcards is
@ -599,6 +582,7 @@ only supported by new versions of ctags (such as Exuberant ctags).
The only other field currently recognized by Vim is "file:"
(with an empty value). It is used for a static tag.
The first lines in the tags file can contain lines that start with
!_TAG_
These are sorted to the first lines, only rare tags that start with "!" can
@ -636,10 +620,7 @@ If the command is a normal search command (it starts and ends with "/" or
"?"), some special handling is done:
- Searching starts on line 1 of the file.
The direction of the search is forward for "/", backward for "?".
Note that 'wrapscan' does not matter, the whole file is always searched. (Vi
does use 'wrapscan', which caused tags sometimes not be found.) {Vi starts
searching in line 2 of another file. It does not find a tag in line 1 of
another file when 'wrapscan' is not set}
Note that 'wrapscan' does not matter, the whole file is always searched.
- If the search fails, another try is done ignoring case. If that fails too,
a search is done for:
"^tagname[ \t]*("
@ -650,7 +631,22 @@ If the command is a normal search command (it starts and ends with "/" or
"^[#a-zA-Z_].*\<tagname[ \t]*("
This means: A line starting with '#' or an identifier and containing the tag
followed by white space and a '('. This will find macro names and function
names with a type prepended. {the extra searches are not in Vi}
names with a type prepended.
*tag-old-static*
Until March 2019 (patch 8.1.1092) an outdated format was supported:
{tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress}
This format is for a static tag only. It is obsolete now, replaced by
the second format. It is only supported by Elvis 1.x, older Vim versions and
a few versions of ctags. A static tag is often used for functions that are
local, only referenced in the file {tagfile}. Note that for the static tag,
the two occurrences of {tagfile} must be exactly the same. Also see
|tags-option| below, for how static tags are used.
The support was removed, since when you can update to the new Vim version you
should also be able to update ctags to one that supports the second format.
==============================================================================
6. Include file searches *include-search* *definition-search*
@ -711,33 +707,31 @@ mapping to do that for you. Here is an example: >
of the file. Lines that look like a comment are
ignored (see 'comments' option). If a count is given,
the count'th matching line is displayed, and comment
lines are not ignored. {not in Vi}
lines are not ignored.
*]i*
]i like "[i", but start at the current cursor position.
{not in Vi}
*:is* *:isearch*
:[range]is[earch][!] [count] [/]pattern[/]
Like "[i" and "]i", but search in [range] lines
(default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
*[I*
[I Display all lines that contain the keyword under the
cursor. Filenames and line numbers are displayed
for the found lines. The search starts at the
beginning of the file. {not in Vi}
beginning of the file.
*]I*
]I like "[I", but start at the current cursor position.
{not in Vi}
*:il* *:ilist*
:[range]il[ist][!] [/]pattern[/]
Like "[I" and "]I", but search in [range] lines
(default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
*[_CTRL-I*
[ CTRL-I Jump to the first line that contains the keyword
@ -745,17 +739,17 @@ mapping to do that for you. Here is an example: >
of the file. Lines that look like a comment are
ignored (see 'comments' option). If a count is given,
the count'th matching line is jumped to, and comment
lines are not ignored. {not in Vi}
lines are not ignored.
*]_CTRL-I*
] CTRL-I like "[ CTRL-I", but start at the current cursor
position. {not in Vi}
position.
*:ij* *:ijump*
:[range]ij[ump][!] [count] [/]pattern[/]
Like "[ CTRL-I" and "] CTRL-I", but search in
[range] lines (default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i*
CTRL-W i Open a new window, with the cursor on the first line
@ -764,45 +758,43 @@ CTRL-W i Open a new window, with the cursor on the first line
that look like a comment line are ignored (see
'comments' option). If a count is given, the count'th
matching line is jumped to, and comment lines are not
ignored. {not in Vi}
ignored.
*:isp* *:isplit*
:[range]isp[lit][!] [count] [/]pattern[/]
Like "CTRL-W i" and "CTRL-W i", but search in
[range] lines (default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
*[d*
[d Display the first macro definition that contains the
macro under the cursor. The search starts from the
beginning of the file. If a count is given, the
count'th matching line is displayed. {not in Vi}
count'th matching line is displayed.
*]d*
]d like "[d", but start at the current cursor position.
{not in Vi}
*:ds* *:dsearch*
:[range]ds[earch][!] [count] [/]string[/]
Like "[d" and "]d", but search in [range] lines
(default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
*[D*
[D Display all macro definitions that contain the macro
under the cursor. Filenames and line numbers are
displayed for the found lines. The search starts
from the beginning of the file. {not in Vi}
from the beginning of the file.
*]D*
]D like "[D", but start at the current cursor position.
{not in Vi}
*:dli* *:dlist*
:[range]dli[st][!] [/]string[/]
Like `[D` and `]D`, but search in [range] lines
(default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
Note that `:dl` works like `:delete` with the "l"
flag, not `:dlist`.
@ -810,36 +802,35 @@ CTRL-W i Open a new window, with the cursor on the first line
[ CTRL-D Jump to the first macro definition that contains the
keyword under the cursor. The search starts from
the beginning of the file. If a count is given, the
count'th matching line is jumped to. {not in Vi}
count'th matching line is jumped to.
*]_CTRL-D*
] CTRL-D like "[ CTRL-D", but start at the current cursor
position. {not in Vi}
position.
*:dj* *:djump*
:[range]dj[ump][!] [count] [/]string[/]
Like "[ CTRL-D" and "] CTRL-D", but search in
[range] lines (default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d*
CTRL-W d Open a new window, with the cursor on the first
macro definition line that contains the keyword
under the cursor. The search starts from the
beginning of the file. If a count is given, the
count'th matching line is jumped to. {not in Vi}
count'th matching line is jumped to.
*:dsp* *:dsplit*
:[range]dsp[lit][!] [count] [/]string[/]
Like "CTRL-W d", but search in [range] lines
(default: whole file).
See |:search-args| for [/] and [!]. {not in Vi}
See |:search-args| for [/] and [!].
*:che* *:checkpath*
*:che* *:chec* *:check* *:checkpath*
:che[ckpath] List all the included files that could not be found.
{not in Vi}
:che[ckpath]! List all the included files. {not in Vi}
:che[ckpath]! List all the included files.
*:search-args*
Common arguments for the commands above:
@ -863,4 +854,70 @@ Common arguments for the commands above:
< For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern
is used as a literal string, not as a search pattern.
==============================================================================
7. Using 'tagfunc' *tag-function*
It is possible to provide Vim with a function which will generate a list of
tags used for commands like |:tag|, |:tselect| and Normal mode tag commands
like |CTRL-]|.
The function used for generating the taglist is specified by setting the
'tagfunc' option. The function will be called with three arguments:
a:pattern The tag identifier used during the tag search.
a:flags List of flags to control the function behavior.
a:info Dict containing the following entries:
buf_ffname Full filename which can be used for priority.
user_data Custom data String, if stored in the tag
stack previously by tagfunc.
Currently two flags may be passed to the tag function:
'c' The function was invoked by a normal command being processed
(mnemonic: the tag function may use the context around the
cursor to perform a better job of generating the tag list.)
'i' In Insert mode, the user was completing a tag (with
|i_CTRL-X_CTRL-]|).
Note that when 'tagfunc' is set, the priority of the tags described in
|tag-priority| does not apply. Instead, the priority is exactly as the
ordering of the elements in the list returned by the function.
*E987*
The function should return a List of Dict entries. Each Dict must at least
include the following entries and each value must be a string:
name Name of the tag.
filename Name of the file where the tag is defined. It is
either relative to the current directory or a full path.
cmd Ex command used to locate the tag in the file. This
can be either an Ex search pattern or a line number.
Note that the format is similar to that of |taglist()|, which makes it possible
to use its output to generate the result.
The following fields are optional:
kind Type of the tag.
user_data String of custom data stored in the tag stack which
can be used to disambiguate tags between operations.
If the function returns |v:null| instead of a List, a standard tag lookup will
be performed instead.
It is not allowed to change the tagstack from inside 'tagfunc'. *E986*
The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the
inverse order of file names.
>
function! TagFunc(pattern, flags, info)
function! CompareFilenames(item1, item2)
let f1 = a:item1['filename']
let f2 = a:item2['filename']
return f1 >=# f2 ?
\ -1 : f1 <=# f2 ? 1 : 0
endfunction
let result = taglist(a:pattern)
call sort(result, "CompareFilenames")
return result
endfunc
set tagfunc=TagFunc
<
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*term.txt* For Vim version 8.1. Last change: 2019 Jan 19
*term.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -249,9 +249,6 @@ It is always possible to change individual strings by setting the
appropriate option. For example: >
:set t_ce=^V^[[K (CTRL-V, <Esc>, [, K)
{Vi: no terminal options. You have to exit Vi, edit the termcap entry and
try again}
The options are listed below. The associated termcap code is always equal to
the last two characters of the option name. Only one termcap code is
required: Cursor motion, 't_cm'.
@ -539,7 +536,7 @@ there should be a tick at allow-window-ops.
Note about colors: The 't_Co' option tells Vim the number of colors available.
When it is non-zero, the 't_AB' and 't_AF' options are used to set the color.
If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used
to reset to the default colors.
to reset to the default colors. Also see 'termguicolors'.
*termcap-cursor-shape* *termcap-cursor-color*
When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim

View File

@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.1. Last change: 2019 Feb 25
*terminal.txt* For Vim version 8.1. Last change: 2019 Jul 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -15,7 +15,7 @@ If the result is "1" you have it.
1. Basic use |terminal-use|
Typing |terminal-typing|
Size and color |terminal-size-color|
Syntax |:terminal|
Command syntax |:terminal|
Resizing |terminal-resizing|
Terminal Modes |Terminal-mode|
Cursor style |terminal-cursor-style|
@ -23,16 +23,17 @@ If the result is "1" you have it.
Special keys |terminal-special-keys|
Unix |terminal-unix|
MS-Windows |terminal-ms-windows|
2. Terminal communication |terminal-communication|
2. Terminal functions |terminal-function-details|
3. Terminal communication |terminal-communication|
Vim to job: term_sendkeys() |terminal-to-job|
Job to Vim: JSON API |terminal-api|
Using the client-server feature |terminal-client-server|
3. Remote testing |terminal-testing|
4. Diffing screen dumps |terminal-diff|
4. Remote testing |terminal-testing|
5. Diffing screen dumps |terminal-diff|
Writing a screen dump test for Vim |terminal-dumptest|
Creating a screen dump |terminal-screendump|
Comparing screen dumps |terminal-diffscreendump|
5. Debugging |terminal-debug|
6. Debugging |terminal-debug|
Starting |termdebug-starting|
Example session |termdebug-example|
Stepping through code |termdebug-stepping|
@ -42,7 +43,6 @@ If the result is "1" you have it.
Communication |termdebug-communication|
Customizing |termdebug-customizing|
{Vi does not have any of these commands}
{only available when compiled with the |+terminal| feature}
The terminal feature requires the |+job| and |+channel| features.
@ -160,7 +160,7 @@ The |term_setansicolors()| function can be used to change the colors, and
|term_getansicolors()| to get the currently used colors.
Syntax ~
Command syntax ~
:[range]ter[minal] [options] [command] *:ter* *:terminal*
Open a new terminal window.
@ -427,8 +427,371 @@ ConPTY problems have been fixed "winpty" will be preferred.
Environment variables are used to pass information to the running job:
VIM_SERVERNAME v:servername
==============================================================================
2. Terminal communication *terminal-communication*
2. Terminal functions *terminal-function-details*
*term_dumpdiff()*
term_dumpdiff({filename}, {filename} [, {options}])
Open a new window displaying the difference between the two
files. The files must have been created with
|term_dumpwrite()|.
Returns the buffer number or zero when the diff fails.
Also see |terminal-diff|.
NOTE: this does not work with double-width characters yet.
The top part of the buffer contains the contents of the first
file, the bottom part of the buffer contains the contents of
the second file. The middle part shows the differences.
The parts are separated by a line of equals.
If the {options} argument is present, it must be a Dict with
these possible members:
"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'
"term_cols" horizontal size to use for the terminal,
instead of using 'termwinsize'
"vertical" split the window vertically
"curwin" use the current window, do not split the
window; fails if the current buffer
cannot be |abandon|ed
"bufnr" do not create a new buffer, use the
existing buffer "bufnr". This buffer
must have been previously created with
term_dumpdiff() or term_dumpload() and
visible in a window.
"norestore" do not add the terminal window to a
session file
Each character in the middle part indicates a difference. If
there are multiple differences only the first in this list is
used:
X different character
w different width
f different foreground color
b different background color
a different attribute
+ missing position in first file
- missing position in second file
Using the "s" key the top and bottom parts are swapped. This
makes it easy to spot a difference.
*term_dumpload()*
term_dumpload({filename} [, {options}])
Open a new window displaying the contents of {filename}
The file must have been created with |term_dumpwrite()|.
Returns the buffer number or zero when it fails.
Also see |terminal-diff|.
For {options} see |term_dumpdiff()|.
*term_dumpwrite()*
term_dumpwrite({buf}, {filename} [, {options}])
Dump the contents of the terminal screen of {buf} in the file
{filename}. This uses a format that can be used with
|term_dumpload()| and |term_dumpdiff()|.
If the job in the terminal already finished an error is given:
*E958*
If {filename} already exists an error is given: *E953*
Also see |terminal-diff|.
{options} is a dictionary with these optional entries:
"rows" maximum number of rows to dump
"columns" maximum number of columns to dump
term_getaltscreen({buf}) *term_getaltscreen()*
Returns 1 if the terminal of {buf} is using the alternate
screen.
{buf} is used as with |term_getsize()|.
{only available when compiled with the |+terminal| feature}
term_getansicolors({buf}) *term_getansicolors()*
Get the ANSI color palette in use by terminal {buf}.
Returns a List of length 16 where each element is a String
representing a color in hexadecimal "#rrggbb" format.
Also see |term_setansicolors()| and |g:terminal_ansi_colors|.
If neither was used returns the default colors.
{buf} is used as with |term_getsize()|. If the buffer does not
exist or is not a terminal window, an empty list is returned.
{only available when compiled with the |+terminal| feature and
with GUI enabled and/or the |+termguicolors| feature}
term_getattr({attr}, {what}) *term_getattr()*
Given {attr}, a value returned by term_scrape() in the "attr"
item, return whether {what} is on. {what} can be one of:
bold
italic
underline
strike
reverse
{only available when compiled with the |+terminal| feature}
term_getcursor({buf}) *term_getcursor()*
Get the cursor position of terminal {buf}. Returns a list with
two numbers and a dictionary: [row, col, dict].
"row" and "col" are one based, the first screen cell is row
1, column 1. This is the cursor position of the terminal
itself, not of the Vim window.
"dict" can have these members:
"visible" one when the cursor is visible, zero when it
is hidden.
"blink" one when the cursor is blinking, zero when it
is not blinking.
"shape" 1 for a block cursor, 2 for underline and 3
for a vertical bar.
"color" color of the cursor, e.g. "green"
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
list is returned.
{only available when compiled with the |+terminal| feature}
term_getjob({buf}) *term_getjob()*
Get the Job associated with terminal window {buf}.
{buf} is used as with |term_getsize()|.
Returns |v:null| when there is no job.
{only available when compiled with the |+terminal| feature}
term_getline({buf}, {row}) *term_getline()*
Get a line of text from the terminal window of {buf}.
{buf} is used as with |term_getsize()|.
The first line has {row} one. When {row} is "." the cursor
line is used. When {row} is invalid an empty string is
returned.
To get attributes of each character use |term_scrape()|.
{only available when compiled with the |+terminal| feature}
term_getscrolled({buf}) *term_getscrolled()*
Return the number of lines that scrolled to above the top of
terminal {buf}. This is the offset between the row number
used for |term_getline()| and |getline()|, so that: >
term_getline(buf, N)
< is equal to: >
getline(N + term_getscrolled(buf))
< (if that line exists).
{buf} is used as with |term_getsize()|.
{only available when compiled with the |+terminal| feature}
term_getsize({buf}) *term_getsize()*
Get the size of terminal {buf}. Returns a list with two
numbers: [rows, cols]. This is the size of the terminal, not
the window containing the terminal.
{buf} must be the buffer number of a terminal window. Use an
empty string for the current buffer. If the buffer does not
exist or is not a terminal window, an empty list is returned.
{only available when compiled with the |+terminal| feature}
term_getstatus({buf}) *term_getstatus()*
Get the status of terminal {buf}. This returns a comma
separated list of these items:
running job is running
finished job has finished
normal in Terminal-Normal mode
One of "running" or "finished" is always present.
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
string is returned.
{only available when compiled with the |+terminal| feature}
term_gettitle({buf}) *term_gettitle()*
Get the title of terminal {buf}. This is the title that the
job in the terminal has set.
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
string is returned.
{only available when compiled with the |+terminal| feature}
term_gettty({buf} [, {input}]) *term_gettty()*
Get the name of the controlling terminal associated with
terminal window {buf}. {buf} is used as with |term_getsize()|.
When {input} is omitted or 0, return the name for writing
(stdout). When {input} is 1 return the name for reading
(stdin). On UNIX, both return same name.
{only available when compiled with the |+terminal| feature}
term_list() *term_list()*
Return a list with the buffer numbers of all buffers for
terminal windows.
{only available when compiled with the |+terminal| feature}
term_scrape({buf}, {row}) *term_scrape()*
Get the contents of {row} of terminal screen of {buf}.
For {buf} see |term_getsize()|.
The first line has {row} one. When {row} is "." the cursor
line is used. When {row} is invalid an empty string is
returned.
Return a List containing a Dict for each screen cell:
"chars" character(s) at the cell
"fg" foreground color as #rrggbb
"bg" background color as #rrggbb
"attr" attributes of the cell, use |term_getattr()|
to get the individual flags
"width" cell width: 1 or 2
{only available when compiled with the |+terminal| feature}
term_sendkeys({buf}, {keys}) *term_sendkeys()*
Send keystrokes {keys} to terminal {buf}.
{buf} is used as with |term_getsize()|.
{keys} are translated as key sequences. For example, "\<c-x>"
means the character CTRL-X.
{only available when compiled with the |+terminal| feature}
term_setansicolors({buf}, {colors}) *term_setansicolors()*
Set the ANSI color palette used by terminal {buf}.
{colors} must be a List of 16 valid color names or hexadecimal
color codes, like those accepted by |highlight-guifg|.
Also see |term_getansicolors()| and |g:terminal_ansi_colors|.
The colors normally are:
0 black
1 dark red
2 dark green
3 brown
4 dark blue
5 dark magenta
6 dark cyan
7 light grey
8 dark grey
9 red
10 green
11 yellow
12 blue
13 magenta
14 cyan
15 white
These colors are used in the GUI and in the terminal when
'termguicolors' is set. When not using GUI colors (GUI mode
or 'termguicolors'), the terminal window always uses the 16
ANSI colors of the underlying terminal.
{only available when compiled with the |+terminal| feature and
with GUI enabled and/or the |+termguicolors| feature}
term_setkill({buf}, {how}) *term_setkill()*
When exiting Vim or trying to close the terminal window in
another way, {how} defines whether the job in the terminal can
be stopped.
When {how} is empty (the default), the job will not be
stopped, trying to exit will result in |E947|.
Otherwise, {how} specifies what signal to send to the job.
See |job_stop()| for the values.
After sending the signal Vim will wait for up to a second to
check that the job actually stopped.
term_setrestore({buf}, {command}) *term_setrestore()*
Set the command to write in a session file to restore the job
in this terminal. The line written in the session file is: >
terminal ++curwin ++cols=%d ++rows=%d {command}
< Make sure to escape the command properly.
Use an empty {command} to run 'shell'.
Use "NONE" to not restore this window.
{only available when compiled with the |+terminal| feature}
term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
Set the size of terminal {buf}. The size of the window
containing the terminal will also be adjusted, if possible.
If {rows} or {cols} is zero or negative, that dimension is not
changed.
{buf} must be the buffer number of a terminal window. Use an
empty string for the current buffer. If the buffer does not
exist or is not a terminal window, an error is given.
{only available when compiled with the |+terminal| feature}
term_start({cmd} [, {options}]) *term_start()*
Open a terminal window and run {cmd} in it.
{cmd} can be a string or a List, like with |job_start()|. The
string "NONE" can be used to open a terminal window without
starting a job, the pty of the terminal can be used by a
command like gdb.
Returns the buffer number of the terminal window. If {cmd}
cannot be executed the window does open and shows an error
message.
If opening the window fails zero is returned.
{options} are similar to what is used for |job_start()|, see
|job-options|. However, not all options can be used. These
are supported:
all timeout options
"stoponexit", "cwd", "env"
"callback", "out_cb", "err_cb", "exit_cb", "close_cb"
"in_io", "in_top", "in_bot", "in_name", "in_buf"
"out_io", "out_name", "out_buf", "out_modifiable", "out_msg"
"err_io", "err_name", "err_buf", "err_modifiable", "err_msg"
However, at least one of stdin, stdout or stderr must be
connected to the terminal. When I/O is connected to the
terminal then the callback function for that part is not used.
There are extra options:
"term_name" name to use for the buffer name, instead
of the command name.
"term_rows" vertical size to use for the terminal,
instead of using 'termwinsize'
"term_cols" horizontal size to use for the terminal,
instead of using 'termwinsize'
"vertical" split the window vertically; note that
other window position can be defined with
command modifiers, such as |:belowright|.
"curwin" use the current window, do not split the
window; fails if the current buffer
cannot be |abandon|ed
"hidden" do not open a window
"norestore" do not add the terminal window to a
session file
"term_kill" what to do when trying to close the
terminal window, see |term_setkill()|
"term_finish" What to do when the job is finished:
"close": close any windows
"open": open window if needed
Note that "open" can be interruptive.
See |term++close| and |term++open|.
"term_opencmd" command to use for opening the window when
"open" is used for "term_finish"; must
have "%d" where the buffer number goes,
e.g. "10split|buffer %d"; when not
specified "botright sbuf %d" is used
"eof_chars" Text to send after all buffer lines were
written to the terminal. When not set
CTRL-D is used on MS-Windows. For Python
use CTRL-Z or "exit()". For a shell use
"exit". A CR is always added.
"ansi_colors" A list of 16 color names or hex codes
defining the ANSI palette used in GUI
color modes. See |g:terminal_ansi_colors|.
"tty_type" (MS-Windows only): Specify which pty to
use. See 'termwintype' for the values.
{only available when compiled with the |+terminal| feature}
term_wait({buf} [, {time}]) *term_wait()*
Wait for pending updates of {buf} to be handled.
{buf} is used as with |term_getsize()|.
{time} is how long to wait for updates to arrive in msec. If
not set then 10 msec will be used.
{only available when compiled with the |+terminal| feature}
==============================================================================
3. Terminal communication *terminal-communication*
There are several ways to communicate with the job running in a terminal:
- Use |term_sendkeys()| to send text and escape sequences from Vim to the job.
@ -496,7 +859,8 @@ Currently supported commands:
directory, thus it's best to use the full path.
[options] is only used when opening a new window. If present,
it must be a Dict. Similarly to |++opt|, These entries are recognized:
it must be a Dict. Similarly to |++opt|, These entries are
recognized:
"ff" file format: "dos", "mac" or "unix"
"fileformat" idem
"enc" overrides 'fileencoding'
@ -534,7 +898,7 @@ In the job you can then do something like: >
This will open the file "some_file.c" and put the cursor on line 123.
==============================================================================
3. Remote testing *terminal-testing*
4. Remote testing *terminal-testing*
Most Vim tests execute a script inside Vim. For some tests this does not
work, running the test interferes with the code being tested. To avoid this
@ -549,7 +913,7 @@ Functions ~
==============================================================================
4. Diffing screen dumps *terminal-diff*
5. Diffing screen dumps *terminal-diff*
In some cases it can be bothersome to test that Vim displays the right
characters on the screen. E.g. with syntax highlighting. To make this
@ -650,7 +1014,7 @@ Alternatively, press "s" to swap the first and second dump. Do this several
times so that you can spot the difference in the context of the text.
==============================================================================
5. Debugging *terminal-debug* *terminal-debugger*
6. Debugging *terminal-debug* *terminal-debugger*
The Terminal debugging plugin can be used to debug a program with gdb and view
the source code in a Vim window. Since this is completely contained inside
@ -907,7 +1271,7 @@ When 'background' is "dark":
hi debugBreakpoint term=reverse ctermbg=red guibg=red
Shorcuts *termdebug_shortcuts*
Shortcuts *termdebug_shortcuts*
You can define your own shortcuts (mappings) to control gdb, that can work in
any window, using the TermDebugSendCommand() function. Example: >

317
runtime/doc/testing.txt Normal file
View File

@ -0,0 +1,317 @@
*testing.txt* For Vim version 8.1. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar
Testing Vim and Vim script *testing-support*
Expression evaluation is explained in |eval.txt|. This file goes into details
about writing tests in Vim script. This can be used for testing Vim itself
and for testing plugins.
1. Testing Vim |testing|
2. Test functions |test-functions|
3. Assert funtions |assert-functions|
==============================================================================
1. Testing Vim *testing*
Vim can be tested after building it, usually with "make test".
The tests are located in the directory "src/testdir".
There are several types of tests added over time:
test33.in oldest, don't add any of these
test_something.in old style tests
test_something.vim new style tests
*new-style-testing*
New tests should be added as new style tests. These use functions such as
|assert_equal()| to keep the test commands and the expected result in one
place.
*old-style-testing*
In some cases an old style test needs to be used. E.g. when testing Vim
without the |+eval| feature.
Find more information in the file src/testdir/README.txt.
==============================================================================
2. Test functions *test-functions*
test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()*
This is for testing: If the memory allocation with {id} is
called, then decrement {countdown}, and when it reaches zero
let memory allocation fail {repeat} times. When {repeat} is
smaller than one it fails one time.
test_autochdir() *test_autochdir()*
Set a flag to enable the effect of 'autochdir' before Vim
startup has finished.
test_feedinput({string}) *test_feedinput()*
Characters in {string} are queued for processing as if they
were typed by the user. This uses a low level input buffer.
This function works only when with |+unix| or GUI is running.
test_garbagecollect_now() *test_garbagecollect_now()*
Like garbagecollect(), but executed right away. This must
only be called directly to avoid any structure to exist
internally, and |v:testing| must have been set before calling
any function.
test_garbagecollect_soon() *test_garbagecollect_soon()*
Set the flag to call the garbagecollector as if in the main
loop. Only to be used in tests.
test_getvalue({name}) *test_getvalue()*
Get the value of an internal variable. These values for
{name} are supported:
need_fileinfo
test_ignore_error({expr}) *test_ignore_error()*
Ignore any error containing {expr}. A normal message is given
instead.
This is only meant to be used in tests, where catching the
error with try/catch cannot be used (because it skips over
following code).
{expr} is used literally, not as a pattern.
When the {expr} is the string "RESET" then the list of ignored
errors is made empty.
test_null_blob() *test_null_blob()*
Return a |Blob| that is null. Only useful for testing.
test_null_channel() *test_null_channel()*
Return a |Channel| that is null. Only useful for testing.
{only available when compiled with the +channel feature}
test_null_dict() *test_null_dict()*
Return a |Dict| that is null. Only useful for testing.
test_null_job() *test_null_job()*
Return a |Job| that is null. Only useful for testing.
{only available when compiled with the +job feature}
test_null_list() *test_null_list()*
Return a |List| that is null. Only useful for testing.
test_null_partial() *test_null_partial()*
Return a |Partial| that is null. Only useful for testing.
test_null_string() *test_null_string()*
Return a |String| that is null. Only useful for testing.
test_option_not_set({name}) *test_option_not_set()*
Reset the flag that indicates option {name} was set. Thus it
looks like it still has the default value. Use like this: >
set ambiwidth=double
call test_option_not_set('ambiwidth')
< Now the 'ambiwidth' option behaves like it was never changed,
even though the value is "double".
Only to be used for testing!
test_override({name}, {val}) *test_override()*
Overrides certain parts of Vim's internal processing to be able
to run tests. Only to be used for testing Vim!
The override is enabled when {val} is non-zero and removed
when {val} is zero.
Current supported values for name are:
name effect when {val} is non-zero ~
redraw disable the redrawing() function
redraw_flag ignore the RedrawingDisabled flag
char_avail disable the char_avail() function
starting reset the "starting" variable, see below
nfa_fail makes the NFA regexp engine fail to force a
fallback to the old engine
no_query_mouse do not query the mouse position for "dec"
terminals
no_wait_return set the "no_wait_return" flag. Not restored
with "ALL".
ALL clear all overrides ({val} is not used)
"starting" is to be used when a test should behave like
startup was done. Since the tests are run by sourcing a
script the "starting" variable is non-zero. This is usually a
good thing (tests run faster), but sometimes changes behavior
in a way that the test doesn't work properly.
When using: >
call test_override('starting', 1)
< The value of "starting" is saved. It is restored by: >
call test_override('starting', 0)
test_refcount({expr}) *test_refcount()*
Return the reference count of {expr}. When {expr} is of a
type that does not have a reference count, returns -1. Only
to be used for testing.
test_scrollbar({which}, {value}, {dragging}) *test_scrollbar()*
Pretend using scrollbar {which} to move it to position
{value}. {which} can be:
left Left scrollbar of the current window
right Right scrollbar of the current window
hor Horizontal scrollbar
For the vertical scrollbars {value} can be 1 to the
line-count of the buffer. For the horizontal scrollbar the
{value} can be between 1 and the maximum line length, assuming
'wrap' is not set.
When {dragging} is non-zero it's like dragging the scrollbar,
otherwise it's like clicking in the scrollbar.
Only works when the {which} scrollbar actually exists,
obviously only when using the GUI.
test_setmouse({row}, {col}) *test_setmouse()*
Set the mouse position to be used for the next mouse action.
{row} and {col} are one based.
For example: >
call test_setmouse(4, 20)
call feedkeys("\<LeftMouse>", "xt")
test_settime({expr}) *test_settime()*
Set the time Vim uses internally. Currently only used for
timestamps in the history, as they are used in viminfo, and
for undo.
Using a value of 1 makes Vim not sleep after a warning or
error message.
{expr} must evaluate to a number. When the value is zero the
normal behavior is restored.
==============================================================================
3. Assert functions *assert-functions*
assert_beeps({cmd}) *assert_beeps()*
Run {cmd} and add an error message to |v:errors| if it does
NOT produce a beep or visual bell.
Also see |assert_fails()| and |assert-return|.
*assert_equal()*
assert_equal({expected}, {actual} [, {msg}])
When {expected} and {actual} are not equal an error message is
added to |v:errors| and 1 is returned. Otherwise zero is
returned |assert-return|.
There is no automatic conversion, the String "4" is different
from the Number 4. And the number 4 is different from the
Float 4.0. The value of 'ignorecase' is not used here, case
always matters.
When {msg} is omitted an error in the form "Expected
{expected} but got {actual}" is produced.
Example: >
assert_equal('foo', 'bar')
< Will result in a string to be added to |v:errors|:
test.vim line 12: Expected 'foo' but got 'bar' ~
*assert_equalfile()*
assert_equalfile({fname-one}, {fname-two})
When the files {fname-one} and {fname-two} do not contain
exactly the same text an error message is added to |v:errors|.
Also see |assert-return|.
When {fname-one} or {fname-two} does not exist the error will
mention that.
Mainly useful with |terminal-diff|.
assert_exception({error} [, {msg}]) *assert_exception()*
When v:exception does not contain the string {error} an error
message is added to |v:errors|. Also see |assert-return|.
This can be used to assert that a command throws an exception.
Using the error number, followed by a colon, avoids problems
with translations: >
try
commandthatfails
call assert_false(1, 'command should have failed')
catch
call assert_exception('E492:')
endtry
assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
Run {cmd} and add an error message to |v:errors| if it does
NOT produce an error. Also see |assert-return|.
When {error} is given it must match in |v:errmsg|.
Note that beeping is not considered an error, and some failing
commands only beep. Use |assert_beeps()| for those.
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|.
A value is false when it is zero. When {actual} is not a
number the assert fails.
When {msg} is omitted an error in the form
"Expected False but got {actual}" is produced.
assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
This asserts number and |Float| values. When {actual} is lower
than {lower} or higher than {upper} an error message is added
to |v:errors|. Also see |assert-return|.
When {msg} is omitted an error in the form
"Expected range {lower} - {upper}, but got {actual}" is
produced.
*assert_match()*
assert_match({pattern}, {actual} [, {msg}])
When {pattern} does not match {actual} an error message is
added to |v:errors|. Also see |assert-return|.
{pattern} is used as with |=~|: The matching is always done
like 'magic' was set and 'cpoptions' is empty, no matter what
the actual value of 'magic' or 'cpoptions' is.
{actual} is used as a string, automatic conversion applies.
Use "^" and "$" to match with the start and end of the text.
Use both to match the whole text.
When {msg} is omitted an error in the form
"Pattern {pattern} does not match {actual}" is produced.
Example: >
assert_match('^f.*o$', 'foobar')
< Will result in a string to be added to |v:errors|:
test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
*assert_notequal()*
assert_notequal({expected}, {actual} [, {msg}])
The opposite of `assert_equal()`: add an error message to
|v:errors| when {expected} and {actual} are equal.
Also see |assert-return|.
*assert_notmatch()*
assert_notmatch({pattern}, {actual} [, {msg}])
The opposite of `assert_match()`: add an error message to
|v:errors| when {pattern} matches {actual}.
Also see |assert-return|.
assert_report({msg}) *assert_report()*
Report a test failure directly, using {msg}.
Always returns one.
assert_true({actual} [, {msg}]) *assert_true()*
When {actual} is not true an error message is added to
|v:errors|, like with |assert_equal()|.
Also see |assert-return|.
A value is TRUE when it is a non-zero number. When {actual}
is not a number the assert fails.
When {msg} is omitted an error in the form "Expected True but
got {actual}" is produced.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,10 +1,10 @@
*textprop.txt* For Vim version 8.1. Last change: 2019 Jan 08
*textprop.txt* For Vim version 8.1. Last change: 2019 Jul 20
VIM REFERENCE MANUAL by Bram Moolenaar
Displaying text with properties attached. *text-properties*
Displaying text with properties attached. *textprop* *text-properties*
THIS IS UNDER DEVELOPMENT - ANYTHING MAY STILL CHANGE *E967*
@ -12,7 +12,6 @@ What is not working yet:
- Adjusting column/length when inserting text
- Text properties spanning more than one line
- prop_find()
- callbacks when text properties are outdated
1. Introduction |text-prop-intro|
@ -20,7 +19,6 @@ What is not working yet:
3. When text changes |text-prop-changes|
{Vi does not have text properties}
{not able to use text properties when the |+textprop| feature was
disabled at compile time}
@ -57,6 +55,10 @@ Property Types ~
A text property normally has the name of a property type, which defines
how to highlight the text. The property type can have these entries:
"highlight" name of the highlight group to use
"combine" when TRUE the text property highlighting is combined
with any syntax highlighting, when omitted or FALSE the
text property highlighting replaces the syntax
highlighting
"priority" when properties overlap, the one with the highest
priority will be used.
"start_incl" when TRUE inserts at the start position will be
@ -114,6 +116,202 @@ prop_list({lnum} [, {props}) text properties in {lnum}
prop_remove({props} [, {lnum} [, {lnum-end}]])
remove a text property
*prop_add()* *E965*
prop_add({lnum}, {col}, {props})
Attach a text property at position {lnum}, {col}. {col} is
counted in bytes, use one for the first column.
If {lnum} is invalid an error is given. *E966*
If {col} is invalid an error is given. *E964*
{props} is a dictionary with these fields:
length length of text in bytes, can only be used
for a property that does not continue in
another line; can be zero
end_lnum line number for the end of text
end_col column just after the text; not used when
"length" is present; when {col} and "end_col"
are equal, and "end_lnum" is omitted or equal
to {lnum}, this is a zero-width text property
bufnr buffer to add the property to; when omitted
the current buffer is used
id user defined ID for the property; when omitted
zero is used
type name of the text property type
All fields except "type" are optional.
It is an error when both "length" and "end_lnum" or "end_col"
are given. Either use "length" or "end_col" for a property
within one line, or use "end_lnum" and "end_col" for a
property that spans more than one line.
When neither "length" nor "end_col" are given the property
will be zero-width. That means it will not be highlighted but
will move with the text, as a kind of mark.
The property can end exactly at the last character of the
text, or just after it. In the last case, if text is appended
to the line, the text property size will increase, also when
the property type does not have "end_incl" set.
"type" will first be looked up in the buffer the property is
added to. When not found, the global property types are used.
If not found an error is given.
See |text-properties| for information about text properties.
prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()*
Remove all text properties from line {lnum}.
When {lnum-end} is given, remove all text properties from line
{lnum} to {lnum-end} (inclusive).
When {props} contains a "bufnr" item use this buffer,
otherwise use the current buffer.
See |text-properties| for information about text properties.
*prop_find()*
prop_find({props} [, {direction}])
NOT IMPLEMENTED YET
Search for a text property as specified with {props}:
id property with this ID
type property with this type name
bufnr buffer to search in; when present a
start position with "lnum" and "col"
must be given; when omitted the
current buffer is used
lnum start in this line (when omitted start
at the cursor)
col start at this column (when omitted
and "lnum" is given: use column 1,
otherwise start at the cursor)
skipstart do not look for a match at the start
position
{direction} can be "f" for forward and "b" for backward. When
omitted forward search is performed.
If a match is found then a Dict is returned with the entries
as with prop_list(), and additionally an "lnum" entry.
If no match is found then an empty Dict is returned.
See |text-properties| for information about text properties.
prop_list({lnum} [, {props}]) *prop_list()*
Return a List with all text properties in line {lnum}.
When {props} contains a "bufnr" item, use this buffer instead
of the current buffer.
The properties are ordered by starting column and priority.
Each property is a Dict with these entries:
col starting column
length length in bytes, one more if line break is
included
id property ID
type name of the property type, omitted if
the type was deleted
start when TRUE property starts in this line
end when TRUE property ends in this line
When "start" is zero the property started in a previous line,
the current one is a continuation.
When "end" is zero the property continues in the next line.
The line break after this line is included.
See |text-properties| for information about text properties.
*prop_remove()* *E968*
prop_remove({props} [, {lnum} [, {lnum-end}]])
Remove a matching text property from line {lnum}. When
{lnum-end} is given, remove matching text properties from line
{lnum} to {lnum-end} (inclusive).
When {lnum} is omitted remove matching text properties from
all lines.
{props} is a dictionary with these fields:
id remove text properties with this ID
type remove text properties with this type name
bufnr use this buffer instead of the current one
all when TRUE remove all matching text properties,
not just the first one
A property matches when either "id" or "type" matches.
If buffer "bufnr" does not exist you get an error message.
If buffer "bufnr" is not loaded then nothing happens.
Returns the number of properties that were removed.
See |text-properties| for information about text properties.
prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970*
Add a text property type {name}. If a property type with this
name already exists an error is given.
{props} is a dictionary with these optional fields:
bufnr define the property only for this buffer; this
avoids name collisions and automatically
clears the property types when the buffer is
deleted.
highlight name of highlight group to use
priority when a character has multiple text
properties the one with the highest priority
will be used; negative values can be used, the
default priority is zero
combine when TRUE combine the highlight with any
syntax highlight; when omitted or FALSE syntax
highlight will not be used
start_incl when TRUE inserts at the start position will
be included in the text property
end_incl when TRUE inserts at the end position will be
included in the text property
See |text-properties| for information about text properties.
prop_type_change({name}, {props}) *prop_type_change()*
Change properties of an existing text property type. If a
property with this name does not exist an error is given.
The {props} argument is just like |prop_type_add()|.
See |text-properties| for information about text properties.
prop_type_delete({name} [, {props}]) *prop_type_delete()*
Remove the text property type {name}. When text properties
using the type {name} are still in place, they will not have
an effect and can no longer be removed by name.
{props} can contain a "bufnr" item. When it is given, delete
a property type from this buffer instead of from the global
property types.
When text property type {name} is not found there is no error.
See |text-properties| for information about text properties.
prop_type_get([{name} [, {props}]) *prop_type_get()*
Returns the properties of property type {name}. This is a
dictionary with the same fields as was given to
prop_type_add().
When the property type {name} does not exist, an empty
dictionary is returned.
{props} can contain a "bufnr" item. When it is given, use
this buffer instead of the global property types.
See |text-properties| for information about text properties.
prop_type_list([{props}]) *prop_type_list()*
Returns a list with all property type names.
{props} can contain a "bufnr" item. When it is given, use
this buffer instead of the global property types.
See |text-properties| for information about text properties.
==============================================================================
3. When text changes *text-prop-changes*
@ -128,11 +326,17 @@ unless the whole line is deleted.
When using replace mode, the text properties stay on the same character
positions, even though the characters themselves change.
To update text properties after the text was changed, install a callback with
`listener_add()`. E.g, if your plugin does spell checking, you can have the
callback update spelling mistakes in the changed text. Vim will move the
properties below the changed text, so that they still highlight the same text,
thus you don't need to update these.
When text property columns are not updated ~
Text property columns are not updated: ~
- When setting the line with |setline()| or through an interface, such as Lua,
Tcl or Python.
Tcl or Python. Vim does not know what text got inserted or deleted.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.1. Last change: 2019 Mar 14
*todo.txt* For Vim version 8.1. Last change: 2019 Jul 19
VIM REFERENCE MANUAL by Bram Moolenaar
@ -38,15 +38,47 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
Patch to add Farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2)
Added test, updates, June 23.
Updated for 7.4: http://litcave.rudi.ir/farsi_vim.diff
Remark from Ameretat Reith (2014 Oct 13) with patch on top.
Updated patch from Ameretat Reith, 2019 Mar 1.
Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
Timer test doesn't work on MS-Windows console, any way to make it work?
Refactor: Move common things out of evalfunc.c, it's too big.
Move function specs out of eval.txt, it's too big.
Drop FEAT_TAG_ANYWHITE ? It should not be a compile time option.
Convert comments in option.h
Patch to convert encoding of strftime(). (Ken Takata, #4685, fixes #4681)
Patch to Move viminfo related functions to a separate file: #4686
Popup windows:
- avoid preview popup going outside of the screen
- add popup_getpreview() - get ID of preview window
- bug: double click in scrollbar starts selection
- Allow resizing from the bottom-right corner
- Implement flip option
- Have a way to scroll to the bottom, e.g. set 'firstline' to -1? (#4577)
- Why does 'nrformats' leak from the popup window buffer???
Happens in Test_simple_popup() at the second screendump.
- Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
Use ERROR_IF_POPUP_WINDOW for more commands.
- For the "moved" property also include mouse movement?
- Can the buffer be re-used if it was the last one, to avoid using up lots of
buffer numbers?
- Have an option to attach the popup to a text position, like text properties
do. (#4560)
- Make redrawing more efficient and avoid flicker:
- put popup menu also put in popup_mask?
- Invoke filter with character before mapping?
- Figure out the size and position better.
if wrapping splits a double-wide character
if wrapping inserts indent
- When drawing on top half a double-wide character, display ">" or "<" in the
incomplete cell.
- Use a popup window for the "info" item of completion instead of using a
preview window. Ideas in issue #4544.
How to add highlighting?
'incsearch' with :s: (#3321)
- Get E20 when using command history to get "'<,'>s/a/b" and no Visual area
@ -82,6 +114,8 @@ Terminal debugger:
with another Vim instance.
Terminal emulator window:
- When typing "exit" in a terminal window with a shell and it's the only
window, should exit Vim instead of editing another buffer. (#4539)
- When the job in the terminal doesn't use mouse events, let the scroll wheel
scroll the scrollback, like a terminal does at the shell prompt. #2490
And use modeless selection. #2962
@ -114,32 +148,65 @@ Terminal emulator window:
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
Support for popup widows:
- Use text properties to define highlighting.
- Proposal on issue #4063
Error numbers available: E172, E221, E242, E249, E260, E274, E275, E276,
E278, E279, E281, E290, E291, E292, E361, E362, E366, E396, E450, E451, E452,
E453, E454, E460, E489, E491, E56, E57, E565, E569, E578, E610, E611, E653,
E654, E693, E706, E856, E857, E860, E861, E863, E889, E900, E959
Problem with German spell file. Hint for solution by Klaus-Peter Schreiner in
#4314, solves the Rasenmäher problem.
Sound: support on Mac? Or does libcanberra work there?
Patch to use forward slash for completion even when 'shellslash' is set.
Adds 'completepathslash'. (Yasuhiro Matsumoto, 2018 Nov 15, #3612)
Patch to add win_splitmove() function. (Andy Massimino, #4561)
Resolve() works incorrectly under windows. (#4661)
Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still search for results. E.g., type "b_" in
terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)
Patch to use timers in matchparen. (Daniel Hahler, #1338)
Ready to include now?
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)
Problem with Visual yank when 'linebreak' and 'showbreak' are set.
Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
Nov 17) Asked about this, Dec 22. Christian will have a look.
Patch to support 'cursorlineopt' - only highlight the line number of the
cursor line: #4693
Patch for Template string: #4491 Not ready yet. New pull: #4634
":bnext" in a help buffer is supposed to go to the next help buffer, but it
goes to any buffer, and then :bnext skips help buffers, since they are
unlisted. (#4478)
Problem showing a line if the number column width changes when using "o".
(Mateusz Morusiewicz, #4245)
When using :packadd for a replacement language plugin, it is loaded after the
default one. #4698
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
fit. (Kevin Lawler, #4457)
Does not build with MinGW out of the box:
- _stat64 is not defined, need to use "struct stat" in vim.h
- WINVER conflict, should use 0x0600 by default?
Patch for 'listchars' when there is a composing character on a space.
How about when there is a double-width composing character on a space?
(Yasuhiro Matsumoto, #4046)
Test doesn't fail without patch?
Patch to add ruby cflags. (#4050, fixes #1081)
Needs modification.
Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
13, #2910) Can't reproduce?
Columns and Rows are long, they should be int.
Errors found with random data:
heap-buffer-overflow in alist_add (#2472)
@ -150,49 +217,85 @@ Include part of #3242?
When a terminal exit_cb closes the window, a following typed key is lost, if
it's in a mapping. (2018 Oct 6, #2302, #3522)
Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still search for results. E.g., type "b_" in
terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)
Patch for Inno Setup: #2739
Internal diff doesn't handle binary file like external diff does. (Mike
Williams, 2018 Oct 30)
Problem with :tlmenu: Detach item added with all modes? Issue #3563.
The quoting of the [command] argument of :terminal is not clearly documented.
Give a few examples. (#4288)
Opening a file with --remote-tab-silent that matches 'wildignore' does not
work, results in (E479: No match". (#4610)
Bug: script written with "-W scriptout" contains Key codes, while the script
read with "-s scriptin" expects escape codes. Probably "scriptout" needs to
be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041)
Patch to move insert-expand code to insexpand.c. (Yegappan Lakshmanan, #4044)
":registers" should indicate char/block/linewise. (Ayberk Aydin, #4546)
Patch for larger icons in installer. (#978) Still not good.
Patch for ambiguous width characters in libvterm on MS-Windows 10.
(Nobuhiro Takasaki, #4411)
Patch on issue #3964 to let sign column stop at the last buffer line.
(Christian Brabandt, 2019 Feb 24)
Problem with colors in terminal window. (Jason Franklin, 2019 May 12)
Patch to use wide font functions. (Ken Takata, 2019 Feb 18, #4000)
Lifepillar: Updated/cleaned up color schemes:
https://github.com/lifepillar/vim8-colorschemes.
Patch on #4073, Andy Massimino. Is this a real problem?
Include a few color schemes, based on popularity:
http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
http://vimawesome.com/?q=tag:color-scheme
Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3)
- monokai - Xia Crusoe (2017 Aug 4)
- seoul256 - Christian Brabandt (2017 Aug 3)
- gruvbox - Christian Brabandt (2017 Aug 3) (simplified version from
Lifepillar, 2018 Jan 22, #2573)
- janah - Marco Hinz (2017 Aug 4)
- apprentice - Romain Lafourcade (2017 Aug 6) remarks about help file #1964
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
Include solarized color scheme?, it does not support termguicolors.
- Sanitized version of pablo (Lifepillar, 2017 Nov 21)
Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019
Mar 5)
Patch to add blob2str() and str2blob(). (Yasuhiro Matsumoto, #4049)
Make docs clearer. Is it symmetric?
Many users don't like 'thesaurus' to match so many words. (#4667, #1611)
- when the match with the first word is partial, don't add other words on that
line.
- support other file formats, such as comma separated. Indicate by a prefix
to the file in the 'thesaurus' option.
- 'threglookexp' option: only match with first word in thesaurus file.
(Jakson A. Aquino, 2006 Jun 14)
Some composing characters actually add a cell width to the character they are
on top off, making the whole thing two characters wide. (#4526)
Should we include some part of pull request #4505, not increment changedtick
in some cases? E.g. for ":write" when the changed flag was already off, the
buffer didn't change at all.
Patch to add getreginfo() and setreg() with an option to set the unnamed
register "", So that registers can be saved and fully restored.
(Andy Massimino, 2018 Aug 24, #3370)
Line numbers in profile are off when function was defined with ":execute".
(Daniel Hahler, #4511)
Add a way to create an empty, hidden buffer. Like doing ":new|hide".
":let buf = bufcreate('name')
Session file contains absolute paths when "curdir" is removed form
'sessionoptions', making it impossible to have a session with a relative path.
(#4450)
When using a timer callback vgetc_busy is reset, allowing for using input().
But in a channel callback this does not happen. We need to do something
similar to check_due_timer(). Also see #3809.
Using "5gj" starting inside a closed fold does not work on screen lines but on
text lines. (Julius Hulsmann, #4095)
Add "-once" to ":autocmd". Also add "-nested" as an alias for "nested".
(Justin M. Keyes, #4100) Syntax of -once may be strange. ++once and ++nested
is better?
C syntax: {} inside () causes following {} to be highlighted as error.
(Michalis Giannakidis, 2006 Jun 1)
@ -202,7 +305,19 @@ Support setting the character displayed below the last line? Neovim uses
Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this
added?
Patch to remove some unneeded {}. (Hirohito Higashi, #3982)
Add test for urxvt mouse codes. Also test that mouse coordinates can be
negative. (see #4326)
'cmdheight' has a tab-local value, but it cannot be obtained with
`:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_
tab page. (Ingo Karkat, #4324)
:call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well.
This modeline throws unexpected errors: (#4165)
vim: syn=nosyntax
":doau SomeEvent" gives "No matching autocommands". This message doesn't give
a hint about how to fix it. (#4300)
Make balloon_show() work outside of 'balloonexpr'? Users expect it to work:
#2948. (related to #1512?)
@ -215,95 +330,67 @@ balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail,
2018 Sep 14)
Another request: #3811.
Patch for autoconf to add -fPIC for Fedora. (#4047)
Height of quickfix window is not retained with vertical splits. (Lifepillar,
2018 Aug 24, #2998)
Patch on the issue by Hongbo Liu, 2019 Feb 19 #4013
More warnings from static analysis:
https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
Still a E315 error when using terminal. (Masato Nishihata, #3959)
When using 'k' in 'guioptions' gvim may open with a tiny window. (#3808)
Suggested patch on the issue.
Not existing directory in CDPATH leads to two shell calls. (#4525)
Use dict_iterate_start() / dict_iterate_next() instead of relying on the
internals of the dict structure.
Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif? Now test_gui crashes in submenu_change().
Athena is OK.
Motif: Build on Ubuntu can't enter any text in dialog text fields.
nvo-mode mapping works on Windows, not on Linux. (#3678)
Patch to fix modify_fname() does not work well with some 'encoding's.
(Ken Takata, #4007)
Missing tests for:
- add_termcap_entry()
Patch to make vim_getenv() work with wide API. (Ken Takata, #4008)
How to make (async) complete function depending on completion type?
Patch on #4083 to do this with an autocommand. Probably want something else,
like 'ominfunc'.
Patch to add equal field to complete items. (#3887)
Redo only remembers the last change. Could use "{count}g." to redo an older
change. How does the user know which change? At least have a way to list
them: ":repeats". Add to history, like search history and command line history.
When using exclusive selection and vi" that fails, cursor moves to the left.
Cursor should not move. (#4024)
Patch to fix handling long line in tags file. #4051, #4084 (Andy Massimino)
Patch to fix that executable() may fail on very long filename in MS-Windows.
(Ken Takata, 2016 Feb 1, update 2018 Oct 7, update 2019 Feb 19)
Now in pull request #4015.
Patch to be able to separately map CTRL-H and BS on Windows.
(Linwei, 2017 Jul 11, #1833)
Patch to fix encoding of messages on MS-Windows. (Yasuhiro Matsumoto, 2019 Feb
13, #3914)
Patch to fix encoding conversion in messages. (#3969)
Check that this is fixed: (ichizok)
vim --clean -X -V1 -es -c 'echo "hello"' -c quit
Incsearch test fails when locale is "C". (Dominique Pelle, #3986)
Also run all tests with C locale?
Patch to improve readability of complicated if(). (ichizok, 2019 Jan 29,
#3879)
"vat" doesn't work well on XML when the closing > is on another line.
#3927
Patch to include ARM64 support. (Leendert van Doorn, 2019 Feb 9)
Patch to fix hang when opening file where an intermediate directory is not
readable on MS-Windows. (link on #3923)
Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17)
Related to bracketed paste. I cannot reproduce it.
Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22.
New update 2017 Apr 10, #1628
https://github.com/chrisbra/vim-mq-patches/blob/master/tagfunc
Updated by Andy Massimino, 2018 Feb 7:
https://github.com/andymass/vim/commit/4e3aa0a5dab96d2799567622f3f537e357aa479e
Or should we make it asynchronous?
Patch by Andy Massimino: #4010 - needs a bit more work
When 'confirm' is set a "silent q" doesn't show the prompt. It should in this
case. (Nate Peterson, 2019 Jan 31, #3892)
For "silent! q" it should not prompt and just fail.
Patch to add readdir(). (Yasuhiro Matsumoto, #2439)
Add <aevent>, which expands to the currently triggered autocommand event name.
(Daniel Hahler, #4232) Or add it to v:event (easier to use but slightly more
expensive).
Using CTRL-L to add a character to the search string doesn't work for the last
character in the file. (Smylers, 2018 Nov 17, #3620)
Suggested patch by Hirohito Higashi, 2018 Nov 18.
Some xterm responses are not properly handled: (Markus Gömmel, 2019 Apr 1)
DCS 0 $ r Pt ST should be ignored.
DCS 0 + r/Pt/ ST already ignored?
Using CTRL-L to add a character to the search string that contains \v,
punctuation is repeated. (Smylers, 2018 Nov 17, #3621)
Using CTRL-L during search only picks up the base character, not a combining
character. (Rick, 2018 Dec 11, #3682)
ml_get error: (Israel Chauca Fuentes, 2018 Oct 17, #3550).
Patch to add more info to OptionSet. Should mention what triggered the change
":set", ":setlocal", ":setglobal", "modeline"; and the old global value.
#4118. Proposed implementation: 2019 Mar 27.
Updated 2019 May 25.
Using single wide base character with double wide composing character gives
drawing errors. Fill up the base character? (Dominique, #4328)
Problem with two buffers with the same name a/b, if it didn't exist before and
is created outside of Vim. (dskloetg, 2018 Jul 16, #3219)
@ -315,14 +402,6 @@ Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3,
#3405) Introduced by 8.0.1517, which was fixing another memory access error.
(Sep 8)
Patch to add complete_info Shougo - #3866. Ready to include.
Patch to make winnr() return the window above/below/beside a window.
(Yegappan Lakshmanan, #3993)
Patch for ConPTY support, new one: #3794 Does this work now? It should.
(Nobuhiro Takasaki)
Add function to make use of internal diff, working on two lists and returning
unified diff (list of lines).
@ -330,36 +409,14 @@ When splitting a window with few text lines, the relative cursor position is
kept, which means part of the text isn't displayed. Better show all the text
when possible. (Dylan Lloyd, #3973)
Tag stack is incorrect after CTRL-T and then :tag. (Andy Massimino, 2019 Feb
12, #3944) With Patch for a solution (Feb 23). Needs a test.
Patch to implement 'diffref' option. (#3535)
Easier to use a 'diffmaster' option, is the extra complexity needed?
Patch to fix that bracketed paste remains after Vim exits. (2018 Oct 30, #3579)
Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
(#3692)
cursorline highlighting not removed after yanking in Visual mode.
(Matéo Zanibelli, 2018 Oct 30, #3578)
Patch by Christian, Oct 30.
Patch to clean up CI configs. (Ozaki Kiichi, 2019 Feb 1, #3890)
Patch to filter marks. (Marcin Szamotulski, 2019 Feb 7, #3895)
Patch to add environ(), gets a dict with all environment vars, and getenv(),
useful for environment vars that are not made of keyword chars.
(Yasuhiro Matsumoto, #2875)
Add buffer argument to undotree(). (#4001)
Patch to add optional arguments with default values.
(Andy Massimino, #3952) under development
Memory leaks in test_channel? (or is it because of fork())
Using uninitialized value in test_gn
Using uninitialized value in test_crypt.
memory leak in test_paste
Memory leak in test_terminal:
==23530== by 0x2640D7: alloc (misc2.c:874)
==23530== by 0x2646D6: vim_strsave (misc2.c:1315)
@ -370,26 +427,22 @@ Memory leak in test_terminal:
==23530== by 0x35C923: term_start (terminal.c:421)
==23530== by 0x2AFF30: mch_call_shell_terminal (os_unix.c:4377)
==23530== by 0x2B16BE: mch_call_shell (os_unix.c:5383)
TODO: be able to run all parts of test_alot with valgrind separately
Memory leak in test_alot with pyeval() (allocating partial)
Memory leak in test_alot with expand()
Memory leaks in test_channel? (or is it because of fork())
gethostbyname() is old, use getaddrinfo() if available. (#3227)
Patch to add match count and current index "3/44" when using "n" command.
(Christian Brabandt, on issue #453). Only when search string was typed?
matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul
19.
Patch to specify color for cterm=underline and cterm=undercurl, like "guisp".
Does #2405 do this?
Patch to add an interrupt() function: sets got_int. Useful in an autocommand
such as BufWritePre that checks the file name or contents.
Should make 'listchars' global-local. Local to window or to buffer?
Probably window.
Add something like 'fillchars' local to window, but allow for specifying a
highlight name. Esp. for the statusline.
And "extends" and "precedes" are also useful without 'list' set. Also in
'fillchars' or another option?
Sourceforge Vim pages still have content, redirect from empty page.
Check for PHP errors. (Wayne Davison, 2018 Oct 26)
@ -398,6 +451,22 @@ Patch to support ":tag <tagkind> <tagname>". (emmrk, 2018 May 7, #2871)
Use something like ":tag {kind}/{tagname}".
Not ready to include.
Problem with Visual yank when 'linebreak' and 'showbreak' are set.
Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
Nov 17) Asked about this, Dec 22. Christian will have a look.
Patch for larger icons in installer. (#978) Still not good.
Patch to fix that using "5gj" starting inside a closed fold does not work on
screen lines but on text lines. (Julius Hulsmann, #4095) Lacks a test.
Patch to implement 'diffref' option. (#3535)
Easier to use a 'diffmaster' option, is the extra complexity needed?
Not ready to include.
Patch to specify color for cterm=underline and cterm=undercurl, like "guisp".
Patch #2405 does something like this, but in the wrong way.
:pedit resets the 'buflisted' option unexpectedly. (Wang Shidong, 2018 Oct 12,
#3536)
@ -417,9 +486,6 @@ Feedback from someone who uses this?
ml_get error. (Dominique Pelle, 2018 Sep 14, #3434)
Patch to use forward slash for completion even when 'shellslash' is set.
Adds 'completepathslash'. (Yasuhiro Matsumoto, 2018 Nov 15, #3612)
Only output t_Cs when t_Ce is also set. do not use Cs and Ce termcap entries. (Daniel Hahler, 2018 Sep 25)
Add t_cS and t_cR for cursor color select and reset. Use Cs and Cr terminfo
values.
@ -445,15 +511,14 @@ includes the first screen line. (2018 Aug 23, #3368)
Refactored HTML indent file. (Michael Lee, #1821)
Ask to write a test first.
Patch to add getregpoint() and setreg() with an option to set "".
(Andy Massimino, 2018 Aug 24, #3370)
Better name?
MS-Windows: .lnk file not resolved properly when 'encoding' is set.
(lkintact, 2018 Sep 22, #3473)
Merge checking for 'cursorline' and 'concealcursor', see neovim #9492.
Request to add sign_setlist() to make it faster to add a lot of signs, e.g.
when adding a sign for every quickfix entry. (#4557)
Win32 key codes are messy. Mike Williams tried to fix that, but now old
mappings no longer work. Create a new terminal for the better solution?
@ -495,6 +560,11 @@ Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
Patch to be able to disable default digraphs (incomplete) (Eric Pruitt, 2018
Nov 22).
Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
24)
Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
or asyncmake:
@ -554,9 +624,6 @@ With 'foldmethod' "indent" and appending an empty line, what follows isn't
included in the existing fold. Deleting the empty line and undo fixes it.
(Oleg Koshovetc, 2018 Jul 15, #3214)
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
Patch to support "xxd -ps". (Erik Auerswald, 2018 May 1)
Lacks a test.
@ -752,10 +819,6 @@ The ++ options for the :edit command are also useful on the Vim command line.
When recovering a file, put the swap file name in b:recovered_swapfile. Then
a command can delete it.
When a swap file exists, is not for a running process, is from the same
machine and recovering results in the same text, we could silently delete it.
#1237
Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14,
#2089) Patch with possible solution by Björn Linse.
@ -770,22 +833,6 @@ Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25)
Include a few color schemes, based on popularity:
http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
http://vimawesome.com/?q=tag:color-scheme
Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3)
- monokai - Xia Crusoe (2017 Aug 4)
- seoul256 - Christian Brabandt (2017 Aug 3)
- gruvbox - Christian Brabandt (2017 Aug 3) (simplified version from
Lifepillar, 2018 Jan 22, #2573)
- janah - Marco Hinz (2017 Aug 4)
- apprentice - Romain Lafourcade (2017 Aug 6) remarks about help file #1964
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
Include solarized color scheme?, it does not support termguicolors.
- Sanitized version of pablo (Lifepillar, 2017 Nov 21)
Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
Creating a partial with an autoload function is confused about the "self"
@ -840,9 +887,6 @@ Use gvimext.dll from the nightly build? (Issue #249)
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)
Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif?
Bogus characters inserted when triggering indent while changing text.
(Vitor Antunes, 2016 Nov 22, #1269)
@ -1062,6 +1106,8 @@ Regexp problems:
time is spent in addstate_here() copying the threads. Instead of copying,
let each thread point to the next one (by offset, the list is reallocated).
(Dominique Pelle, 2019 Feb 18)
- Old engine: using 'incsearch' /\Zabc does not highlight the "c" if it has a
composing character. New engine is OK. (Tony Mechelynck, 2019 May 5)
- When search pattern has the base character both with and without combining
character, search fails. E.g. "รรีบ" in "การรีบรักใคร". (agguser, #2312)
- [:space:] only matches ASCII spaces. Add [:white:] for all space-like
@ -1501,10 +1547,6 @@ Patch for building a 32bit Vim with 64bit MingW compiler.
Patch: On MS-Windows shellescape() may have to triple double quotes.
(Ingo Karkat, 2015 Jan 16)
Redo only remembers the last change. Could use "{count}g." to redo an older
change. How does the user know which change? At least have a way to list
them: ":repeats".
Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22)
When entering and leaving the preview window autocommands are triggered, but
@ -1791,11 +1833,6 @@ When running Vim in silent ex mode, an existing swapfile causes Vim to wait
for a user action without a prompt. (Maarten Billemont, 2012 Feb 3)
Do give the prompt? Quit with an error?
Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
24)
Patch for input method status. (Hirohito Higashi, 2012 Apr 18)
Update Vim app icon (for Gnome). (Jakub Steiner, 2013 Dec 6)
@ -2229,8 +2266,6 @@ for GTK, how about others? (Ron Aaron, 2010 Apr 10)
Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9)
Motif: Build on Ubuntu can't enter any text in dialog text fields.
":tab split fname" doesn't set the alternate file in the original window,
because win_valid() always returns FALSE. Below win_new_tabpage() in
ex_docmd.c.
@ -3000,8 +3035,6 @@ More patches:
- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
- Extra argument to strtrans() to translate special keys to their name (Eric
Arnold, 2006 May 22)
- 'threglookexp' option: only match with first word in thesaurus file.
(Jakson A. Aquino, 2006 Jun 14)
- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30)
- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16)
- ml_append_string(): efficiently append to an existing line. (Brad
@ -3103,6 +3136,10 @@ Awaiting updated patches:
and GTK by degreneir (nov 10 and nov 18).
- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work.
Better 'rightleft' or BIDI support:
- Minimal Vi with bidi support: https://github.com/aligrudi/neatvi
By Ali Gholami Rudi, also worked on arabic.c
Quickfix/Location List:
- Window size is wrong when using quickfix window. (Lifepillar, 2018 Aug 24,
#2999)
@ -3948,8 +3985,6 @@ Tab pages:
8 Add local options for each tab page? E.g., 'diffopt' could differ between
tab pages.
7 Add local highlighting for each tab page?
7 Add local directory for tab pages? How would this interfere with
window-local directories?
Spell checking:
@ -4053,7 +4088,8 @@ Folding:
secondary: zB zS zT zZ, z=)
8 Vertical folds: looks like vertically split windows, but the cursor moves
through the vertical separator, separator moves when scrolling.
8 Add "z/" and "z?" for searching in not folded text only.
8 Add "z/" and "z?" for searching in not folded text only. Or use a regexp
item, so that it can be used in any pattern.
8 When a closed fold is displayed open because of 'foldminlines', the
behavior of commands is still like the fold is closed. How to make the
user aware of this?
@ -6044,7 +6080,7 @@ Various improvements:
used, remove the <CR> at the end of lines in [range].
A CTRL-Z at the end of the file is removed. If
[range] is omitted, or it is the whole file, and all
lines end in <CR> 'textmode' is set. {not in Vi}
lines end in <CR> 'textmode' is set.
- Should integrate addstar() and file_pat_to_reg_pat().
- When working over a serial line with 7 bit characters, remove meta
characters from 'isprint'.

View File

@ -1,4 +1,4 @@
*undo.txt* For Vim version 8.1. Last change: 2019 Jan 04
*undo.txt* For Vim version 8.1. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -19,26 +19,24 @@ The basics are explained in section |02.5| of the user manual.
1. Undo and redo commands *undo-commands*
<Undo> or *undo* *<Undo>* *u*
u Undo [count] changes. {Vi: only one level}
u Undo [count] changes.
*:u* *:un* *:undo*
:u[ndo] Undo one change. {Vi: only one level}
:u[ndo] Undo one change.
*E830*
:u[ndo] {N} Jump to after change number {N}. See |undo-branches|
for the meaning of {N}. {not in Vi}
for the meaning of {N}.
*CTRL-R*
CTRL-R Redo [count] changes which were undone. {Vi: redraw
screen}
CTRL-R Redo [count] changes which were undone.
*:red* *:redo* *redo*
:red[o] Redo one change which was undone. {Vi: no redo}
:red[o] Redo one change which was undone.
*U*
U Undo all latest changes on one line, the line where
the latest change was made. |U| itself also counts as
a change, and thus |U| undoes a previous |U|.
{Vi: while not moved off of the last modified line}
The last changes are remembered. You can use the undo and redo commands above
to revert the text to how it was before each change. You can also apply the
@ -95,7 +93,6 @@ change but joins in with the previous change use this command:
Warning: Use with care, it may prevent the user from
properly undoing changes. Don't use this after undo
or redo.
{not in Vi}
This is most useful when you need to prompt the user halfway through a change.
For example in a function that calls |getchar()|. Do make sure that there was
@ -151,7 +148,7 @@ This is explained in the user manual: |usr_32.txt|.
*g-*
g- Go to older text state. With a count repeat that many
times. {not in Vi}
times.
*:ea* *:earlier*
:earlier {count} Go to older text state {count} times.
:earlier {N}s Go to older text state about {N} seconds before.
@ -170,7 +167,7 @@ g- Go to older text state. With a count repeat that many
*g+*
g+ Go to newer text state. With a count repeat that many
times. {not in Vi}
times.
*:lat* *:later*
:later {count} Go to newer text state {count} times.
:later {N}s Go to newer text state about {N} seconds later.
@ -280,10 +277,8 @@ respectively:
the existing file and then creating a new file with the same
name. So it is not possible to overwrite an existing undofile
in a write-protected directory.
{not in Vi}
:rundo {file} Read undo history from {file}.
{not in Vi}
You can use these in autocommands to explicitly specify the name of the
history file. E.g.: >
@ -374,10 +369,10 @@ information you can use these commands: >
:unlet old_undolevels
Marks for the buffer ('a to 'z) are also saved and restored, together with the
text. {Vi does this a little bit different}
text.
When all changes have been undone, the buffer is not considered to be changed.
It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note
It is then possible to exit Vim with ":q" instead of ":q!". Note
that this is relative to the last write of the file. Typing "u" after ":w"
actually changes the buffer, compared to what was written, so the buffer is
considered changed then.

View File

@ -1,4 +1,4 @@
*usr_05.txt* For Vim version 8.1. Last change: 2019 Feb 27
*usr_05.txt* For Vim version 8.1. Last change: 2019 May 23
VIM USER MANUAL - by Bram Moolenaar
@ -234,7 +234,7 @@ remote connection, increase the number. See 'ttimeout'.
set display=truncate
Show @@@ in the last line if it is truncated, instead of hiding the whole
like. See 'display'.
line. See 'display'.
>
set incsearch

View File

@ -1,4 +1,4 @@
*usr_06.txt* For Vim version 8.1. Last change: 2009 Oct 28
*usr_06.txt* For Vim version 8.1. Last change: 2019 Jun 01
VIM USER MANUAL - by Bram Moolenaar
@ -196,13 +196,12 @@ too slow, you might want to disable syntax highlighting for a moment: >
When editing another file (or the same one) the colors will come back.
*:syn-off*
If you want to stop highlighting completely use: >
:syntax off
This will completely disable syntax highlighting and remove it immediately for
all buffers.
all buffers. See |:syntax-off| for more details.
*:syn-manual*
If you want syntax highlighting only for specific files, use this: >

View File

@ -1,4 +1,4 @@
*usr_11.txt* For Vim version 8.1. Last change: 2019 Feb 04
*usr_11.txt* For Vim version 8.1. Last change: 2019 Apr 28
VIM USER MANUAL - by Bram Moolenaar
@ -205,6 +205,13 @@ something wrong. It may be one of these two situations.
NEWER than swap file! ~
NOTE that in the following situation Vim knows the swap file is not useful and
will automatically delete it:
- The file is a valid swap file (Magic number is correct).
- The flag that the file was modified is not set.
- The process is not running.
UNREADABLE SWAP FILE
Sometimes the line

View File

@ -1,4 +1,4 @@
*usr_21.txt* For Vim version 8.1. Last change: 2012 Nov 02
*usr_21.txt* For Vim version 8.1. Last change: 2019 Apr 25
VIM USER MANUAL - by Bram Moolenaar
@ -263,7 +263,8 @@ well stand for "source").
The windows that were open are restored, with the same position and size as
before. Mappings and option values are like before.
What exactly is restored depends on the 'sessionoptions' option. The
default value is "blank,buffers,curdir,folds,help,options,winsize".
default value is:
"blank,buffers,curdir,folds,help,options,tabpages,winsize,terminal".
blank keep empty windows
buffers all buffers, not only the ones in a window
@ -271,7 +272,9 @@ default value is "blank,buffers,curdir,folds,help,options,winsize".
folds folds, also manually created ones
help the help window
options all options and mappings
tabpages all tab pages
winsize window sizes
terminal include terminal windows
Change this to your liking. To also restore the size of the Vim window, for
example, use: >

View File

@ -1,4 +1,4 @@
*usr_22.txt* For Vim version 8.1. Last change: 2016 Dec 13
*usr_22.txt* For Vim version 8.1. Last change: 2019 Apr 27
VIM USER MANUAL - by Bram Moolenaar
@ -202,14 +202,28 @@ the other window. This is called a local directory. >
:pwd
/home/Bram/VeryLongFileName
So long as no ":lcd" command has been used, all windows share the same current
directory. Doing a ":cd" command in one window will also change the current
So long as no `:lcd` command has been used, all windows share the same current
directory. Doing a `:cd` command in one window will also change the current
directory of the other window.
For a window where ":lcd" has been used a different current directory is
remembered. Using ":cd" or ":lcd" in other windows will not change it.
When using a ":cd" command in a window that uses a different current
For a window where `:lcd` has been used a different current directory is
remembered. Using `:cd` or `:lcd` in other windows will not change it.
When using a `:cd` command in a window that uses a different current
directory, it will go back to using the shared directory.
TAB LOCAL DIRECTORY
When you open a new tab page, it uses the directory of the window in the
previous tab page from which the new tab page was opened. You can change the
directory of the current tab page using the `:tcd` command. All the windows in
a tab page share this directory except for windows with a window-local
directory. Any new windows opened in this tab page will use this directory as
the current working directory. Using a `:cd` command in a tab page will not
change the working directory of tab pages which have a tab local directory.
When the global working directory is changed using the `:cd` command in a tab
page, it will also change the current tab page working directory.
==============================================================================
*22.3* Finding a file

View File

@ -1,4 +1,4 @@
*usr_27.txt* For Vim version 8.1. Last change: 2018 Jan 26
*usr_27.txt* For Vim version 8.1. Last change: 2019 Jul 14
VIM USER MANUAL - by Bram Moolenaar
@ -474,19 +474,19 @@ the line break happens, because all items mentioned so far don't match a line
break.
To check for a line break in a specific place, use the "\n" item: >
/the\nword
/one\ntwo
This will match at a line that ends in "the" and the next line starts with
"word". To match "the word" as well, you need to match a space or a line
This will match at a line that ends in "one" and the next line starts with
"two". To match "one two" as well, you need to match a space or a line
break. The item to use for it is "\_s": >
/the\_sword
/one\_stwo
To allow any amount of white space: >
/the\_s\+word
/one\_s\+two
This also matches when "the " is at the end of a line and " word" at the
This also matches when "one " is at the end of a line and " two" at the
start of the next one.
"\s" matches white space, "\_s" matches white space or a line break.

View File

@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.1. Last change: 2019 Jan 29
*usr_41.txt* For Vim version 8.1. Last change: 2019 Jul 06
VIM USER MANUAL - by Bram Moolenaar
@ -105,20 +105,21 @@ We won't explain how |:for| and |range()| work until later. Follow the links
if you are impatient.
THREE KINDS OF NUMBERS
FOUR KINDS OF NUMBERS
Numbers can be decimal, hexadecimal or octal. A hexadecimal number starts
with "0x" or "0X". For example "0x1f" is decimal 31. An octal number starts
with a zero. "017" is decimal 15. Careful: don't put a zero before a decimal
number, it will be interpreted as an octal number!
Numbers can be decimal, hexadecimal, octal or binary. A hexadecimal number
starts with "0x" or "0X". For example "0x1f" is decimal 31. An octal number
starts with a zero. "017" is decimal 15. A binary number starts with "0b" or
"0B". For example "0b101" is decimal 5. Careful: don't put a zero before a
decimal number, it will be interpreted as an octal number!
The ":echo" command always prints decimal numbers. Example: >
:echo 0x7f 036
< 127 30 ~
A number is made negative with a minus sign. This also works for hexadecimal
and octal numbers. A minus sign is also used for subtraction. Compare this
with the previous example: >
A number is made negative with a minus sign. This also works for hexadecimal,
octal and binary numbers. A minus sign is also used for subtraction. Compare
this with the previous example: >
:echo 0x7f -036
< 97 ~
@ -577,8 +578,10 @@ used for. You can find an alphabetical list here: |functions|. Use CTRL-] on
the function name to jump to detailed help on it.
String manipulation: *string-functions*
nr2char() get a character by its ASCII value
char2nr() get ASCII value of a character
nr2char() get a character by its number value
list2str() get a character string from a list of numbers
char2nr() get number value of a character
str2list() get list of numbers from a string
str2nr() convert a string to a Number
str2float() convert a string to a Float
printf() format a string according to % items
@ -606,12 +609,14 @@ String manipulation: *string-functions*
strcharpart() get part of a string using char index
strgetchar() get character from a string using char index
expand() expand special keywords
expandcmd() expand a command like done for `:edit`
iconv() convert text from one encoding to another
byteidx() byte index of a character in a string
byteidxcomp() like byteidx() but count composing characters
repeat() repeat a string multiple times
eval() evaluate a string expression
execute() execute an Ex command and get the output
win_execute() like execute() but in a specified window
trim() trim characters from a string
List manipulation: *list-functions*
@ -715,6 +720,7 @@ Cursor and mark position: *cursor-functions* *mark-functions*
cursor() position the cursor at a line/column
screencol() get screen column of the cursor
screenrow() get screen row of the cursor
screenpos() screen row and col of a text character
getcurpos() get position of the cursor
getpos() get position of cursor, mark, etc.
setpos() set position of cursor, mark, etc.
@ -723,6 +729,8 @@ Cursor and mark position: *cursor-functions* *mark-functions*
diff_filler() get the number of filler lines above a line
screenattr() get attribute at a screen line/row
screenchar() get character code at a screen line/row
screenchars() get character codes at a screen line/row
screenstring() get string of characters at a screen line/row
Working with text in the current buffer: *text-functions*
getline() get a line or list of lines from the buffer
@ -741,6 +749,12 @@ Working with text in the current buffer: *text-functions*
getcharsearch() return character search information
setcharsearch() set character search information
Working with text in another buffer:
getbufline() get a list of lines from the specified buffer
setbufline() replace a line in the specified buffer
appendbufline() append a list of lines in the specified buffer
deletebufline() delete lines from a specified buffer
*system-functions* *file-functions*
System functions and manipulation of files:
glob() expand wildcards
@ -762,15 +776,20 @@ System functions and manipulation of files:
isdirectory() check if a directory exists
getfsize() get the size of a file
getcwd() get the current working directory
haslocaldir() check if current window used |:lcd|
haslocaldir() check if current window used |:lcd| or |:tcd|
tempname() get the name of a temporary file
mkdir() create a new directory
chdir() change current working directory
delete() delete a file
rename() rename a file
system() get the result of a shell command as a string
systemlist() get the result of a shell command as a list
environ() get all environment variables
getenv() get one environment variable
setenv() set an environment variable
hostname() name of the system
readfile() read a file into a List of lines
readdir() get a List of file names in a directory
writefile() write a List of lines or Blob into a file
Date and Time: *date-functions* *time-functions*
@ -787,8 +806,10 @@ Buffers, windows and the argument list:
argidx() current position in the argument list
arglistid() get id of the argument list
argv() get one entry from the argument list
bufadd() add a file to the list of buffers
bufexists() check if a buffer exists
buflisted() check if a buffer exists and is listed
bufload() ensure a buffer is loaded
bufloaded() check if a buffer exists and is loaded
bufname() get the name of a specific buffer
bufnr() get the buffer number of a specific buffer
@ -799,10 +820,9 @@ Buffers, windows and the argument list:
bufwinid() get the window ID of a specific buffer
bufwinnr() get the window number of a specific buffer
winbufnr() get the buffer number of a specific window
getbufline() get a list of lines from the specified buffer
setbufline() replace a line in the specified buffer
appendbufline() append a list of lines in the specified buffer
deletebufline() delete lines from a specified buffer
listener_add() add a callback to listen to changes
listener_flush() invoke listener callbacks
listener_remove() remove a listener callback
win_findbuf() find windows containing a buffer
win_getid() get window ID of a window
win_gotoid() go to window with ID
@ -834,6 +854,7 @@ Insert mode completion: *completion-functions*
complete() set found matches
complete_add() add to found matches
complete_check() check if completion should be aborted
complete_info() get current completion information
pumvisible() check if the popup menu is displayed
Folding: *folding-functions*
@ -896,6 +917,7 @@ GUI: *gui-functions*
getwinposy() Y position of the Vim window
balloon_show() set the balloon content
balloon_split() split a message for a balloon
balloon_gettext() get the text in the balloon
Vim server: *server-functions*
serverlist() return the list of server names
@ -940,6 +962,7 @@ Testing: *test-functions*
test_autochdir() enable 'autochdir' during startup
test_override() test with Vim internal overrides
test_garbagecollect_now() free memory right now
test_getvalue() get value of an internal variable
test_ignore_error() ignore a specific error message
test_null_blob() return a null Blob
test_null_channel() return a null Channel
@ -949,6 +972,7 @@ Testing: *test-functions*
test_null_partial() return a null Partial function
test_null_string() return a null String
test_settime() set the time Vim uses internally
test_setmouse() set the mouse position
test_feedinput() add key sequence to input buffer
test_option_not_set() reset flag indicating option was set
test_scrollbar() simulate scrollbar movement in the GUI
@ -991,8 +1015,10 @@ Signs: *sign-functions*
sign_getplaced() get a list of placed signs
sign_jump() jump to a sign
sign_place() place a sign
sign_placelist() place a list of signs
sign_undefine() undefine a sign
sign_unplace() unplace a sign
sign_unplacelist() unplace a list of signs
Terminal window: *terminal-functions*
term_start() open a terminal window and run a job
@ -1019,6 +1045,27 @@ Terminal window: *terminal-functions*
term_setrestore() set command to restore a terminal
term_setsize() set the size of a terminal
Popup window: *popup-window-functions*
popup_create() create popup centered in the screen
popup_atcursor() create popup just above the cursor position,
closes when the cursor moves away
popup_beval() at the position indicated by v:beval_
variables, closes when the mouse moves away
popup_notification() show a notification for three seconds
popup_dialog() create popup centered with padding and border
popup_menu() prompt for selecting an item from a list
popup_hide() hide a popup temporarily
popup_show() show a previously hidden popup
popup_move() change the position and size of a popup
popup_setoptions() override options of a popup
popup_settext() replace the popup buffer contents
popup_close() close one popup
popup_clear() close all popups
popup_filter_menu() select from a list of items
popup_filter_yesno() blocks until 'y' or 'n' is pressed
popup_getoptions() get current options for a popup
popup_getpos() get actual position and size of a popup
Timers: *timer-functions*
timer_start() create a timer
timer_pause() pause or unpause a timer

View File

@ -281,9 +281,8 @@ unpacked them.
In case you are not satisfied with the features included in the supplied
binaries, you could try compiling Vim yourself. Get the source archive from
the same location as where the binaries are. You need a compiler for which a
makefile exists. Microsoft Visual C works, but is expensive. The Free
Borland command-line compiler 5.5 can be used, as well as the free MingW and
Cygwin compilers. Check the file src/INSTALLpc.txt for hints.
makefile exists. Microsoft Visual C works, but is expensive. The free MinGW
and Cygwin compilers can be used. Check the file src/INSTALLpc.txt for hints.
==============================================================================
*90.3* Upgrading

View File

@ -1,4 +1,4 @@
*usr_toc.txt* For Vim version 8.1. Last change: 2016 Mar 25
*usr_toc.txt* For Vim version 8.1. Last change: 2019 May 24
VIM USER MANUAL - by Bram Moolenaar
@ -103,12 +103,13 @@ Read this from start to end to learn the essential commands.
|usr_05.txt| Set your settings
|05.1| The vimrc file
|05.2| The example vimrc file explained
|05.3| Simple mappings
|05.4| Adding a package
|05.5| Adding a plugin
|05.6| Adding a help file
|05.7| The option window
|05.8| Often used options
|05.3| The defaults.vim file explained
|05.4| Simple mappings
|05.5| Adding a package
|05.6| Adding a plugin
|05.7| Adding a help file
|05.8| The option window
|05.9| Often used options
|usr_06.txt| Using syntax highlighting
|06.1| Switching it on

View File

@ -1,4 +1,4 @@
*various.txt* For Vim version 8.1. Last change: 2019 Jan 17
*various.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -73,8 +73,6 @@ ga Print the ascii value of the character under the
<ö> 246, Hex 00f6, Oct 366, Digr o: ~
This shows you can type CTRL-K o : to insert ö.
{not in Vi}
*g8*
g8 Print the hex values of the bytes used in the
character under the cursor, assuming it is in |UTF-8|
@ -82,7 +80,6 @@ g8 Print the hex values of the bytes used in the
value of 'maxcombine' doesn't matter.
Example of a character with two composing characters:
e0 b8 81 + e0 b8 b9 + e0 b9 89 ~
{not in Vi}
*8g8*
8g8 Find an illegal UTF-8 byte sequence at or after the
@ -97,7 +94,6 @@ g8 Print the hex values of the bytes used in the
Note that when the cursor is on an illegal byte or the
cursor is halfway a multi-byte character the command
won't move the cursor.
{not in Vi}
*:p* *:pr* *:print* *E749*
:[range]p[rint] [flags]
@ -174,7 +170,6 @@ g8 Print the hex values of the bytes used in the
:{range}z#[+-^.=]{count} *:z#*
Like ":z", but number the lines.
{not in all versions of Vi, not with these arguments}
*:=*
:= [flags] Print the last line number.
@ -224,7 +219,6 @@ g8 Print the hex values of the bytes used in the
Example: >
:exe "normal \<c-w>\<c-w>"
< {not in Vi, of course}
:{range}norm[al][!] {commands} *:normal-range*
Execute Normal mode commands {commands} for each line
@ -232,7 +226,6 @@ g8 Print the hex values of the bytes used in the
cursor is positioned in the first column of the range,
for each line. Otherwise it's the same as the
":normal" command without a range.
{not in Vi}
*:sh* *:shell* *E371*
:sh[ell] This command starts a shell. When the shell exits
@ -295,7 +288,7 @@ g8 Print the hex values of the bytes used in the
*:!!*
:!! Repeat last ":!{cmd}".
*:ve* *:version*
*:ve* *:ver* *:version*
:ve[rsion] Print the version number of the editor. If the
compiler used understands "__DATE__" the compilation
date is mentioned. Otherwise a fixed release-date is
@ -435,6 +428,8 @@ m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
T *+scrollbind* |'scrollbind'|
B *+signs* |:sign|
N *+smartindent* |'smartindent'|
B *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
N *+spell* spell checking support, see |spell|
N *+startuptime* |--startuptime| argument
N *+statusline* Options 'statusline', 'rulerformat' and special
formats of 'titlestring' and 'iconstring'
@ -443,7 +438,7 @@ N *+syntax* Syntax highlighting |syntax|
*+system()* Unix only: opposite of |+fork|
T *+tag_binary* binary searching in tags file |tag-binary-search|
N *+tag_old_static* old method for static tags |tag-old-static|
m *+tag_any_white* any white space allowed in tags file |tag-any-white|
m *+tag_any_white* Removed; was to allow any white space in tags files
m *+tcl* Tcl interface |tcl|
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
m *+terminal* Support for terminal window |terminal|
@ -456,7 +451,8 @@ N *+textprop* |text-properties|
N *+timers* the |timer_start()| function
N *+title* Setting the window 'title' and 'icon'
N *+toolbar* |gui-toolbar|
N *+user_commands* User-defined commands. |user-commands|
T *+user_commands* User-defined commands. |user-commands|
Always enabled since 8.1.1210.
B *+vartabs* Variable-width tabstops. |'vartabstop'|
N *+viminfo* |'viminfo'|
*+vertsplit* Vertically split windows |:vsplit|; Always enabled
@ -489,7 +485,7 @@ N *+X11* Unix only: can restore window title |X11|
:ve[rsion] {nr} Is now ignored. This was previously used to check the
version number of a .vimrc file. It was removed,
because you can now use the ":if" command for
version-dependent behavior. {not in Vi}
version-dependent behavior.
*:redi* *:redir*
:redi[r][!] > {file} Redirect messages to file {file}. The messages which
@ -509,31 +505,28 @@ N *+X11* Unix only: can restore window title |X11|
with ":silent call Function()".
An alternative is to use the 'verbosefile' option,
this can be used in combination with ":redir".
{not in Vi}
:redi[r] >> {file} Redirect messages to file {file}. Append if {file}
already exists. {not in Vi}
already exists.
:redi[r] @{a-zA-Z}
:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the
contents of the register if its name is given
uppercase {A-Z}. The ">" after the register name is
optional. {not in Vi}
:redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi}
optional.
:redi[r] @{a-z}>> Append messages to register {a-z}.
:redi[r] @*>
:redi[r] @+> Redirect messages to the selection or clipboard. For
backward compatibility, the ">" after the register
name can be omitted. See |quotestar| and |quoteplus|.
{not in Vi}
:redi[r] @*>>
:redi[r] @+>> Append messages to the selection or clipboard.
{not in Vi}
:redi[r] @"> Redirect messages to the unnamed register. For
backward compatibility, the ">" after the register
name can be omitted. {not in Vi}
:redi[r] @">> Append messages to the unnamed register. {not in Vi}
name can be omitted.
:redi[r] @">> Append messages to the unnamed register.
:redi[r] => {var} Redirect messages to a variable. If the variable
doesn't exist, then it is created. If the variable
@ -542,14 +535,14 @@ N *+X11* Unix only: can restore window title |X11|
Only string variables can be used. After the
redirection starts, if the variable is removed or
locked or the variable type is changed, then further
command output messages will cause errors. {not in Vi}
command output messages will cause errors.
To get the output of one command the |execute()|
function can be used.
:redi[r] =>> {var} Append messages to an existing variable. Only string
variables can be used. {not in Vi}
variables can be used.
:redi[r] END End redirecting messages. {not in Vi}
:redi[r] END End redirecting messages.
*:filt* *:filter*
:filt[er][!] {pat} {command}
@ -571,6 +564,7 @@ N *+X11* Unix only: can restore window title |X11|
commands support filtering, try it out to check if it
works. Some of the commands that support filtering:
|:#| - filter whole line
|:clist| - filter by file name or module name
|:command| - filter by command name
|:files| - filter by file name
|:highlight| - filter by highlight group
@ -578,8 +572,9 @@ N *+X11* Unix only: can restore window title |X11|
|:let| - filter by variable name
|:list| - filter whole line
|:llist| - filter by file name or module name
|:marks| - filter by text in the current file,
or file name for other files
|:oldfiles| - filter by file name
|:clist| - filter by file name or module name
|:set| - filter by variable name
Only normal messages are filtered, error messages are
@ -689,12 +684,11 @@ K Run a program to lookup the keyword under the
< - When 'keywordprg' is equal to "man -s", a count
before "K" is inserted after the "-s". If there is
no count, the "-s" is removed.
{not in Vi}
*v_K*
{Visual}K Like "K", but use the visually highlighted text for
the keyword. Only works when the highlighted text is
not more than one line. {not in Vi}
not more than one line.
[N]gs *gs* *:sl* *:sleep*
:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included,
@ -707,11 +701,26 @@ K Run a program to lookup the keyword under the
< Can be interrupted with CTRL-C (CTRL-Break on MS-DOS).
"gs" stands for "goto sleep".
While sleeping the cursor is positioned in the text,
if at a visible position. {not in Vi}
if at a visible position.
Also process the received netbeans messages. {only
available when compiled with the |+netbeans_intg|
feature}
*:xrestore* *:xr*
:xr[estore] [display] Reinitializes the connection to the X11 server. Useful
after the X server restarts, e.g. when running Vim for
long time inside screen/tmux and connecting from
different machines.
[display] should be in the format of the $DISPLAY
environment variable (e.g. "localhost:10.0")
If [display] is omitted, then it reinitializes the
connection to the X11 server using the same value as
was used for the previous execution of this command.
If the value was never specified, then it uses the
value of $DISPLAY environment variable as it was when
Vim was started.
{only available when compiled with the |+clipboard|
feature}
*g_CTRL-A*
g CTRL-A Only when Vim was compiled with MEM_PROFILING defined

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*vi_diff.txt* For Vim version 8.1. Last change: 2016 Aug 16
*vi_diff.txt* For Vim version 8.1. Last change: 2019 May 13
VIM REFERENCE MANUAL by Bram Moolenaar
@ -6,9 +6,8 @@
Differences between Vim and Vi *vi-differences*
Throughout the help files differences between Vim and Vi/Ex are given in
curly braces, like "{not in Vi}". This file only lists what has not been
mentioned in other files and gives an overview.
This file lists the differences between Vim and Vi/Ex and gives an overview of
what is in Vim that is not in Vi.
Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing
is ":open". There are probably a lot of small differences (either because Vim
@ -19,8 +18,9 @@ is missing something or because Posix is beside the mark).
3. Limits |limits|
4. The most interesting additions |vim-additions|
5. Other vim features |other-features|
6. Command-line arguments |cmdline-arguments|
7. POSIX compliance |posix-compliance|
6. Supported Vi features |vi-features|
7. Command-line arguments |cmdline-arguments|
8. POSIX compliance |posix-compliance|
==============================================================================
1. Simulated command *simulated-command*
@ -179,6 +179,10 @@ Multiple windows and buffers. |windows.txt|
line with tab labels can be used to quickly switch between these pages.
|tab-page|
Terminal window. |:terminal|
Vim can create a window in which a terminal emulator runs. This can
be used to execute an arbitrary command, a shell or a debugger.
Syntax highlighting. |:syntax|
Vim can highlight keywords, patterns and other things. This is
defined by a number of |:syntax| commands, and can be made to
@ -193,6 +197,11 @@ Syntax highlighting. |:syntax|
|'hlsearch'|, matching parens |matchparen| and the cursor line and
column |'cursorline'| |'cursorcolumn'|.
Text properties |textprop.txt|
Vim supports highlighting text by a plugin. Property types can be
specified with |prop_type_add()| and properties can be placed with
|prop_add()|.
Spell checking. |spell|
When the 'spell' option is set Vim will highlight spelling mistakes.
About 50 languages are currently supported, selected with the
@ -261,6 +270,8 @@ Visual mode. |Visual-mode|
~ swap case
u make lowercase
U make uppercase
{Vi has no Visual mode, the name "visual" is used for Normal mode, to
distinguish it from Ex mode}
Block operators. |visual-block|
With Visual mode a rectangular block of text can be selected. Start
@ -282,6 +293,12 @@ Command-line editing and history. |cmdline-editing|
forward/backward one character. The shifted right/left cursor keys
can be used to move forward/backward one word. CTRL-B/CTRL-E can be
used to go to the begin/end of the command-line.
{Vi: can only alter the last character in the line}
{Vi: when hitting <Esc> the command-line is executed. This is
unexpected for most people; therefore it was changed in Vim. But when
the <Esc> is part of a mapping, the command-line is executed. If you
want the Vi behaviour also when typing <Esc>, use ":cmap ^V<Esc>
^V^M"}
|cmdline-history|
The command-lines are remembered. The up/down cursor keys can be used
to recall previous command-lines. The 'history' option can be set to
@ -521,10 +538,16 @@ With the CTRL-] command, the cursor may be in the middle of the identifier.
The used tags are remembered. Commands that can be used with the tag stack
are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack.
Vi uses 'wrapscan' when searching for a tag. When jumping to a tag Vi starts
searching in line 2 of another file. It does not find a tag in line 1 of
another file when 'wrapscan' is not set.
The 'tags' option can be set to a list of tag file names. Thus multiple
tag files can be used. For file names that start with "./", the "./" is
replaced with the path of the current file. This makes it possible to use a
tags file in the same directory as the file being edited.
{Vi: always uses binary search in some versions}
{Vi does not have the security prevention for commands in tag files}
Previously used file names are remembered in the alternate file name list.
CTRL-^ accepts a count, which is an index in this list.
@ -562,6 +585,8 @@ one space after a period (Vi inserts two spaces).
"cw" can be used to change white space formed by several characters (Vi is
confusing: "cw" only changes one space, while "dw" deletes all white space).
{Vi: "cw" when on a blank followed by other blanks changes only the first
blank; this is probably a bug, because "dw" deletes all the blanks}
"o" and "O" accept a count for repeating the insert (Vi clears a part of
display).
@ -630,7 +655,7 @@ of the window.
Uppercase marks can be used to jump between files. The ":marks" command lists
all currently set marks. The commands "']" and "`]" jump to the end of the
previous operator or end of the text inserted with the put command. "'[" and
"`[" do jump to the start.
"`[" do jump to the start. {Vi: no uppercase marks}
The 'shelltype' option can be set to reflect the type of shell used on the
Amiga.
@ -775,19 +800,336 @@ filesystem under Unix. See |'shortname'|.
Error messages are shown at least one second (Vi overwrites error messages).
If Vim gives the |hit-enter| prompt, you can hit any key. Characters other
than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi
only accepts a command starting with ':').
than <CR>, <NL> and <Space> are interpreted as the (start of) a command.
{Vi: only ":" commands are interpreted}
The contents of the numbered and unnamed registers is remembered when
changing files.
The "No lines in buffer" message is a normal message instead of an error
message, since that may cause a mapping to be aborted.
{Vi: error messages may be overwritten with other messages before you have a
chance to read them}
The AUX: device of the Amiga is supported.
==============================================================================
6. Command-line arguments *cmdline-arguments*
6. Supported Vi features *vi-features*
Vim supports nearly all Vi commands and mostly in the same way. That is when
the 'compatible' option is set and 'cpoptions' contains all flags. What the
effect is of resetting 'compatible' and removing flags from 'cpoptions' can be
found at the help for the specific command.
The help files used to mark features that are in Vim but not in Vi with {not
in Vi}. However, since these remarks cluttered the help files we now do it
the other way around: Below is listed what Vi already supported. Anything
else has been added by Vim.
The following Ex commands are supported by Vi: ~
`:abbreviate` enter abbreviation
`:append` append text
`:args` print the argument list
`:cd` change directory; Vi: no "cd -"
`:change` replace a line or series of lines
`:chdir` change directory
`:copy` copy lines
`:delete` delete lines
`:edit` edit a file
`:exit` same as `:xit`
`:file` show or set the current file name; Vi: without the column number
`:global` execute commands for matching lines
`:insert` insert text
`:join` join lines; Vi: not :join!
`:k` set a mark
`:list` print lines
`:map` show or enter a mapping
`:mark` set a mark
`:move` move lines
`:Next` go to previous file in the argument list {Vi: no count}
`:next` go to next file in the argument list {Vi: no count}
`:number` print lines with line number
`:open` start open mode (not implemented in Vim)
`:pop` jump to older entry in tag stack (only in some versions)
`:preserve` write all text to swap file {Vi: might also exit}
`:previous` same as `:Next` {Vi: only in some versions}
`:print` print lines
`:put` insert contents of register in the text
`:quit` quit Vi
`:read` read file into the text
`:recover` recover a file from a swap file {Vi: recovers in another way
and sends mail if there is something to recover}
`:rewind` go to the first file in the argument list; no ++opt
`:set` set option; but not `:set inv{option}`, `:set option&`,
`:set all&`, `:set option+=value`, `:set option^=value`
`:set option-=value` `:set option<`
`:shell` escape to a shell
`:source` read Vi or Ex commands from a file
`:stop` suspend the editor or escape to a shell
`:substitute` find and replace text; Vi: no '&', 'i', 's', 'r' or 'I' flag,
confirm prompt only supports 'y' and 'n', no highlighting
`:suspend` same as ":stop"
`:t` same as ":copy"
`:tag` jump to tag
`:unabbreviate` remove abbreviation
`:undo` undo last change {Vi: only one level}
`:unmap` remove mapping
`:vglobal` execute commands for not matching lines
`:version` print version number and other info
`:visual` same as ":edit", but turns off "Ex" mode
`:wq` write to a file and quit Vi
`:write` write to a file
`:xit` write if buffer changed and quit Vi
`:yank` yank lines into a register
`:z` print some lines {not in all versions of Vi}
`:!` filter lines or execute an external command
`:"` comment
`:#` same as ":number"
`:*` execute contents of a register
`:&` repeat last ":substitute"
`:<` shift lines one 'shiftwidth' left
`:=` print the cursor line number
`:>` shift lines one 'shiftwidth' right
`:@` execute contents of a register; but not `:@`; `:@@` only in
some versions
Common for these commands is that Vi doesn't support the ++opt argument on
`:edit` and other commands that open a file.
The following Normal mode commands are supported by Vi: ~
note: See the beginning of |normal-index| for the meaning of WORD, N, Nmove
and etc in the description text.
|CTRL-B| scroll N screens Backwards
|CTRL-C| interrupt current (search) command
|CTRL-D| scroll Down N lines (default: half a screen); Vim scrolls
'scroll' screen lines, Vi scrolls file lines; makes a
difference when lines wrap
|CTRL-E| scroll N lines upwards (N lines Extra)
|CTRL-F| scroll N screens Forward
|CTRL-G| display current file name and position
|<BS>| same as "h"
|CTRL-H| same as "h"
|<NL>| same as "j"
|CTRL-J| same as "j"
|CTRL-L| redraw screen
|<CR>| cursor to the first CHAR N lines lower
|CTRL-M| same as <CR>
|CTRL-N| same as "j"
|CTRL-P| same as "k"
|CTRL-R| in some Vi versions: same as CTRL-L
|CTRL-T| jump to N older Tag in tag list
|CTRL-U| N lines Upwards (default: half a screen) {Vi used file lines
while Vim scrolls 'scroll' screen lines; makes a difference
when lines wrap}
|CTRL-Y| scroll N lines downwards
|CTRL-Z| suspend program (or start new shell)
|CTRL-]| :ta to ident under cursor {Vi: identifier after the cursor}
|CTRL-^| edit alternate file {Vi: no count}
|<Space>| same as "l"
|!| filter Nmove text through the {filter} command
|!!| filter N lines through the {filter} command
" use register {a-zA-Z0-9.%#:-"} for next delete, yank or put
(uppercase to append) ({.%#:} only work with put)
|$| cursor to the end of Nth next line
|%| find the next (curly/square) bracket on this line and go to
its match, or go to matching comment bracket, or go to
matching preprocessor directive (Vi: no count supported)
|&| repeat last :s
|'| jump to mark (Vi: only lowercase marks)
|(| cursor N sentences backward
|)| cursor N sentences forward
|+| same as <CR>
|,| repeat latest f, t, F or T in opposite direction N times
|-| cursor to the first CHAR N lines higher
|.| repeat last change with count replaced with N
|/| search forward for the Nth occurrence of {pattern}
|0| cursor to the first char of the line
|:| start entering an Ex command
|;| repeat latest f, t, F or T N times
|<| shift Nmove lines one 'shiftwidth' leftwards
|<<| shift N lines one 'shiftwidth' leftwards
|=| filter Nmove lines through "indent"
|==| filter N lines through "indent"
|>| shift Nmove lines one 'shiftwidth' rightwards
|>>| shift N lines one 'shiftwidth' rightwards
|?| search backward for the Nth previous occurrence of {pattern}
|@| execute the contents of register {a-z} N times
{Vi: only named registers}
|@@| repeat the previous @{a-z} N times
|A| append text after the end of the line N times
|B| cursor N WORDS backward
|C| change from the cursor position to the end of the line
|D| delete the characters under the cursor until the end of the
line and N-1 more lines [into register x]; synonym for "d$"
|E| cursor forward to the end of WORD N
|F| cursor to the Nth occurrence of {char} to the left
|G| cursor to line N, default last line
|H| cursor to line N from top of screen
|I| insert text before the first CHAR on the line N times
|J| Join N lines; default is 2
|L| cursor to line N from bottom of screen
|M| cursor to middle line of screen
|N| repeat the latest '/' or '?' N times in opposite direction
|O| begin a new line above the cursor and insert text, repeat N
times {Vi: blank [count] screen lines}
|P| put the text [from register x] before the cursor N times
{Vi: no count}
|Q| switch to "Ex" mode
|R| enter replace mode: overtype existing characters, repeat the
entered text N-1 times
|S| delete N lines [into register x] and start insert; synonym for
"cc".
|T| cursor till after Nth occurrence of {char} to the left
|U| undo all latest changes on one line
{Vi: while not moved off of the last modified line}
|W| cursor N WORDS forward
|X| delete N characters before the cursor [into register x]
|Y| yank N lines [into register x]; synonym for "yy"
|ZZ| store current file if modified, and exit
|[[| cursor N sections backward
|]]| cursor N sections forward
|^| cursor to the first CHAR of the line
|_| cursor to the first CHAR N - 1 lines lower
|`| cursor to the mark {a-zA-Z0-9}
|a| append text after the cursor N times
|b| cursor N words backward
|c| delete Nmove text [into register x] and start insert
|cc| delete N lines [into register x] and start insert
|d| delete Nmove text [into register x]
|dd| delete N lines [into register x]
|e| cursor forward to the end of word N
|f| cursor to Nth occurrence of {char} to the right
|h| cursor N chars to the left
|i| insert text before the cursor N times
|j| cursor N lines downward
|k| cursor N lines upward
|l| cursor N chars to the right
|m| set mark {A-Za-z} at cursor position
|n| repeat the latest '/' or '?' N times
|o| begin a new line below the cursor and insert text
{Vi: blank [count] screen lines}
|p| put the text [from register x] after the cursor N times
{Vi: no count}
|r| replace N chars with {char} {Vi: CTRL-V <CR> still replaces
with a line break, cannot replace something with a <CR>}
|s| (substitute) delete N characters [into register x] and start
insert
|t| cursor till before Nth occurrence of {char} to the right
|u| undo changes {Vi: only one level}
|w| cursor N words forward
|x| delete N characters under and after the cursor [into register
x]
|y| yank Nmove text [into register x]
|yy| yank N lines [into register x]
|z<CR>| current line to the top
|z-| current line to the bottom
|z+| cursor on line N
|z^| cursor on line N
|{| cursor N paragraphs backward
| cursor to column N
|}| cursor N paragraphs forward
|~| switch case of N characters under the cursor; Vim: depends on
'tildeop' {Vi: no count, no 'tildeop'}
|<Del>| same as "x"
The following commands are supported in Insert mode by Vi: ~
CTRL-@ insert previously inserted text and stop insert
{Vi: only when typed as first char, only up to 128 chars}
CTRL-C quit insert mode, without checking for abbreviation, unless
'insertmode' set.
CTRL-D delete one shiftwidth of indent in the current line
{Vi: CTRL-D works only when used after autoindent}
<BS> delete character before the cursor {Vi: does not delete
autoindents, does not cross lines, does not delete past start
position of insert}
CTRL-H same as <BS>
<Tab> insert a <Tab> character
CTRL-I same as <Tab>
<NL> same as <CR>
CTRL-J same as <CR>
<CR> begin new line
CTRL-M same as <CR>
CTRL-T insert one shiftwidth of indent in current line {Vi: only when
in indent}
CTRL-V {char} insert next non-digit literally {Vi: no decimal byte entry}
CTRL-W delete word before the cursor
CTRL-Z when 'insertmode' set: suspend Vi
<Esc> end insert mode (unless 'insertmode' set)
CTRL-[ same as <Esc>
0 CTRL-D delete all indent in the current line
^ CTRL-D delete all indent in the current line, restore it in the next
line
<Del> delete character under the cursor
The following options are supported by Vi: ~
'autoindent' 'ai' take indent for new line from previous line
{Vi does this slightly differently: After the
indent is deleted when typing <Esc> or <CR>, the
cursor position when moving up or down is after
the deleted indent; Vi puts the cursor somewhere
in the deleted indent}.
'autowrite' 'aw' automatically write file if changed
'directory' 'dir' list of directory names for the swap file
{Vi: directory to put temp file in, defaults to
"/tmp"}
'edcompatible' 'ed' toggle flags of ":substitute" command
'errorbells' 'eb' ring the bell for error messages
'ignorecase' 'ic' ignore case in search patterns
'lines' number of lines in the display
'lisp' automatic indenting for Lisp {Vi: Does it a little
bit differently}
'list' show <Tab> and <EOL>
'magic' changes special characters in search patterns
'modeline' 'ml' recognize 'modelines' at start or end of file
{called modelines in some Vi versions}
'number' 'nu' print the line number in front of each line
'paragraphs' 'para' nroff macros that separate paragraphs
'prompt' 'prompt' enable prompt in Ex mode
'readonly' 'ro' disallow writing the buffer {Vim sets 'readonly'
when editing a file with `:view`}
'remap' allow mappings to work recursively
'report' threshold for reporting nr. of lines changed
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
'sections' 'sect' nroff macros that separate sections
'shell' 'sh' name of shell to use for external commands
'shiftwidth' 'sw' number of spaces to use for (auto)indent step
'showmatch' 'sm' briefly jump to matching bracket if insert one
'showmode' 'smd' message on status line to show current mode
'tabstop' 'ts' number of spaces that <Tab> in file uses
'taglength' 'tl' number of significant characters for a tag
'tags' 'tag' list of file names used by the tag command
{Vi: default is "tags /usr/lib/tags"}
'tagstack' 'tgst' push tags onto the tag stack {not in all versions
of Vi}
'term' name of the terminal
'terse' shorten some messages
'timeout' 'to' time out on mappings and key codes
'timeoutlen' 'tm' time for 'timeout' {only in some Vi versions}
'ttytype' 'tty' alias for 'term'
'verbose' 'vbs' give informative messages {only in some Vi
versions as a boolean option}
'warn' warn for shell command when buffer was changed
'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B
{Vi also uses the option to specify the number of
displayed lines}
'wrapmargin' 'wm' chars from the right where wrapping starts
{Vi: works differently and less usefully}
'wrapscan' 'ws' searches wrap around the end of the file
'writeany' 'wa' write to file with no need for "!" override
Also see |missing-options|.
==============================================================================
7. Command-line arguments *cmdline-arguments*
Different versions of Vi have different command-line arguments. This can be
confusing. To help you, this section gives an overview of the differences.
@ -894,7 +1236,8 @@ Only Vim is able to accept options in between and after the file names.
-i Elvis: Start each window in Insert mode.
-i {viminfo} Vim: Use {viminfo} for viminfo file.
-L Vim: Same as "-r" (also in some versions of Vi).
-L Vim: Same as "-r" {only in some versions of Vi: "List
recoverable edit sessions"}.
-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.
@ -967,7 +1310,7 @@ Only Vim is able to accept options in between and after the file names.
@{cmdfile} Vile: use {cmdfile} as startup file.
==============================================================================
7. POSIX compliance *posix* *posix-compliance*
8. POSIX compliance *posix* *posix-compliance*
In 2005 the POSIX test suite was run to check the compatibility of Vim. Most
of the test was executed properly. There are the few things where Vim

View File

@ -1,4 +1,4 @@
*visual.txt* For Vim version 8.1. Last change: 2019 Feb 25
*visual.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -20,8 +20,6 @@ This is introduced in section |04.4| of the user manual.
7. Examples |visual-examples|
8. Select mode |Select-mode|
{Vi has no Visual mode, the name "visual" is used for Normal mode, to
distinguish it from Ex mode}
{Since Vim 7.4.200 the |+visual| feature is always included}
==============================================================================

View File

@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.1. Last change: 2019 Mar 17
*windows.txt* For Vim version 8.1. Last change: 2019 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -26,7 +26,6 @@ The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt|
11. Using hidden buffers |buffer-hidden|
12. Special kinds of buffers |special-buffers|
{Vi does not have any of these commands}
{not able to use multiple windows when the |+windows| feature was disabled at
compile time}
{not able to use vertically split windows when the |+vertsplit| feature was
@ -217,7 +216,7 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview*
Same as ":split", but set 'readonly' option for this buffer.
:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind*
:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind*
Same as ":split", but search for {file} in 'path' like in
|:find|. Doesn't split if {file} is not found.
@ -737,7 +736,7 @@ can also get to them with the buffer list commands, like ":bnext".
the current window.
{cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close windows or reorder them.
{not in Vi}
Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
@ -765,7 +764,7 @@ can also get to them with the buffer list commands, like ":bnext".
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each buffer.
{not in Vi}
Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
@ -865,7 +864,15 @@ height of the preview window when it's opened. The 'previewwindow' option is
set in the preview window to be able to recognize it. The 'winfixheight'
option is set to have it keep the same height when opening/closing other
windows.
*preview-popup*
Alternatively, a popup window can be used by setting the 'previewpopup'
option. When set, it overrules the 'previewwindow' and 'previewheight'
settings. The option is a comma separated list of values:
height maximum height of the popup
width maximum width of the popup
Example: >
:set previewpopup=height:10,width:60
<
*:pta* *:ptag*
:pta[g][!] [tagname]
Does ":tag[!] [tagname]" and shows the found tag in a
@ -891,7 +898,7 @@ CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
*:pp* *:ppop*
:[count]pp[op][!]
Does ":[count]pop[!]" in the preview window. See |:pop| and
|:ptag|. {not in Vi}
|:ptag|.
CTRL-W } *CTRL-W_}*
Use identifier under cursor as a tag and perform a :ptag on
@ -1031,6 +1038,13 @@ list of buffers. |unlisted-buffer|
thus you can always go to a specific buffer with ":buffer N"
or "N CTRL-^", where N is the buffer number.
For the file name these special values are used:
[Prompt] |prompt-buffer|
[Popup] buffer of a |popup-window|
[Scratch] 'buftype' is "nofile"
[No Name] no file name specified
For a |terminal-window| buffer the status is used.
Indicators (chars in the same column are mutually exclusive):
u an unlisted buffer (only displayed when [!] is used)
|unlisted-buffer|
@ -1193,7 +1207,6 @@ list of buffers. |unlisted-buffer|
the way when you're browsing code/text buffers. The next three
commands also work like this.
*:sbn* *:sbnext*
:[N]sbn[ext] [+cmd] [N]
Split window and go to [N]th next buffer in buffer list.
@ -1214,7 +1227,7 @@ list of buffers. |unlisted-buffer|
Uses 'switchbuf'.
Also see |+cmd|.
:br[ewind][!] [+cmd] *:br* *:brewind*
:br[ewind][!] [+cmd] *:br* *:bre* *:brewind*
Go to first buffer in buffer list. If the buffer list is
empty, go to the first unlisted buffer.
See |:buffer-!| for [!].

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