Compare commits

...

326 Commits

Author SHA1 Message Date
Kazuki Sakamoto 38ed567cd5 MacVim Snapshot 102
Binary targets OS X 10.8(Mountain Lion), 10.9(Mavericks), 10.10(Yosemite), and 10.11(El Capitan)

- Vim patch 7.4.1811

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.5
- Ruby 2.0
2016-04-30 20:34:10 -07:00
Kazuki Sakamoto 75297a22fb Revert "MacVim Snapshot 102"
This reverts commit fa9dd06ea8.
2016-04-30 20:32:53 -07:00
Kazuki Sakamoto 8a3ac0add8 Merge remote-tracking branch 'vim/master' 2016-04-30 20:31:29 -07:00
Bram Moolenaar 3266c85a44 patch 7.4.1811
Problem:    Netbeans channel gets garbage collected.
Solution:   Set reference in nb_channel.
2016-04-30 18:07:05 +02:00
Bram Moolenaar 715d285d79 patch 7.4.1810
Problem:    Sending DETACH after a channel was closed isn't useful.
Solution:   Only add DETACH for a netbeans channel.
2016-04-30 17:06:31 +02:00
Bram Moolenaar 868cfc19bb patch 7.4.1809
Problem:    Using wrong short option name for 'termguicolors'.
Solution:   Use the option name.
2016-04-30 16:49:58 +02:00
Bram Moolenaar 8a24b794b8 patch 7.4.1808
Problem:    Using wrong feature name to check for 'termguicolors'.
Solution:   Use the right feature name. (Ken Takata)
2016-04-30 16:13:10 +02:00
Bram Moolenaar d75263c020 patch 7.4.1807
Problem:    Test_out_close_cb sometimes fails.
Solution:   Always write DETACH to out, not err.
2016-04-30 16:07:23 +02:00
Bram Moolenaar 8e3d1b6326 patch 7.4.1806
Problem:    'termguicolors' option missing from the options window.
Solution:   Add the entry.
2016-04-30 15:17:19 +02:00
Bram Moolenaar 0648142700 Update runtime files. 2016-04-30 15:13:38 +02:00
Bram Moolenaar 4cc39a527f patch 7.4.1805
Problem:    Running tests in shadow dir fails.
Solution:   Link the samples directory
2016-04-30 15:08:27 +02:00
Bram Moolenaar b20545f2a7 patch 7.4.1804
Problem:    Can't use Vim as MANPAGER.
Solution:   Add manpager.vim. (Enno Nagel, closes #491)
2016-04-30 14:15:54 +02:00
Bram Moolenaar 0b6cf69c03 patch 7.4.1803
Problem:    GTK3 doesn't handle menu separaters properly.
Solution:   Use gtk_separator_menu_item_new(). (Kazunobu Kuriyama)
2016-04-30 13:26:14 +02:00
Bram Moolenaar 6be8c8e165 patch 7.4.1802
Problem:    Quickfix doesn't handle long lines well, they are split.
Solution:   Drop characters after a limit. (Anton Lindqvist)
2016-04-30 13:17:09 +02:00
Bram Moolenaar 113ce08456 patch 7.4.1801
Problem:    Make uninstall leaves file behind.
Solution:   Delete rgb.txt. (Kazunobu Kuriyama)
2016-04-30 12:32:52 +02:00
Bram Moolenaar 631225627d patch 7.4.1800
Problem:    Unnecessary #ifdef.
Solution:   Just use USE_24BIT. (Ken Takata)
2016-04-30 12:28:15 +02:00
Bram Moolenaar 61be73bb0f patch 7.4.1799
Problem:    'guicolors' is a confusing option name.
Solution:   Use 'termguicolors' instead. (Hirohito Higashi)
2016-04-29 22:59:22 +02:00
Bram Moolenaar bb82762907 patch 7.4.1798
Problem:    Still compiler warning for unused return value. (Charles Campbell)
Solution:   Assign to ignoredp.
2016-04-29 22:33:27 +02:00
Kazuki Sakamoto 355cfeba77 Merge pull request #274 from macvim-dev/fix/channel_test
Workaround fix for test_channel
2016-04-29 04:42:23 -07:00
Kazuki Sakamoto 5f91455a3c Workaround fix for test_channel 2016-04-29 04:40:45 -07:00
Kazuki Sakamoto 1cf41e6aee Merge remote-tracking branch 'vim/master' 2016-04-28 20:28:24 -07:00
Bram Moolenaar c61348e83f patch 7.4.1797
Problem:    Warning from Windows 64 bit compiler.
Solution:   Change int to size_t. (Mike Williams)
2016-04-28 22:20:03 +02:00
Kazuki Sakamoto f99471219e Merge remote-tracking branch 'vim/master' 2016-04-27 20:48:12 -07:00
Bram Moolenaar 283ee8b3a0 patch 7.4.1796
Problem:    Colors are wrong on MS-Windows. (Christian Robinson)
Solution:   Use existing RGB macro if it exists. (Ken Takata)
2016-04-27 20:36:31 +02:00
Kazuki Sakamoto 0afe480389 Merge remote-tracking branch 'vim/master' 2016-04-26 20:11:42 -07:00
Bram Moolenaar 5487544fa5 patch 7.4.1795
Problem:    Compiler warning for redefining RGB. (John Marriott)
Solution:   Rename it to TORGB.
2016-04-26 22:33:17 +02:00
Bram Moolenaar c285fe7c3f patch 7.4.1794
Problem:    Can't build on MS-Windows.
Solution:   Add missing declaration.
2016-04-26 21:51:48 +02:00
Bram Moolenaar e8aee7dcf9 patch 7.4.1793
Problem:    Some character classes may differ between systems.  On OS/X the
            regexp test fails.
Solution:   Make this less dependent on the system. (idea by Kazunobu Kuriyama)
2016-04-26 21:39:13 +02:00
Bram Moolenaar ab3022196e patch 7.4.1792
Problem:    Color name decoding is implemented several times.
Solution:   Move it to term.c. (Christian Brabandt)
2016-04-26 20:59:29 +02:00
Bram Moolenaar 674127e180 patch 7.4.1791
Problem:    Channel could be garbage collected too early.
Solution:   Don't free a channel or remove it from a job when it is still
            useful.
2016-04-26 20:30:07 +02:00
Bram Moolenaar 6231cb8b5b patch 7.4.1790
Problem:    Leading white space in a job command matters. (Andrew Stewart)
Solution:   Skip leading white space.
2016-04-26 19:42:42 +02:00
Bram Moolenaar 437905c25d patch 7.4.1789
Problem:    Cannot use ch_read() in the close callback.
Solution:   Do not discard the channel if there is readahead.  Do not discard
            readahead if there is a close callback.
2016-04-26 19:01:05 +02:00
Bram Moolenaar c7baa43fdb patch 7.4.1788
Problem:    NSIS script is missing packages.
Solution:   Add the missing directories. (Ken Takata)
2016-04-26 17:34:44 +02:00
Bram Moolenaar b2658a1ab0 patch 7.4.1787
Problem:    When a job ends the close callback is invoked before other
            callbacks. On Windows the close callback is not called.
Solution:   First invoke out/err callbacks before the close callback.
            Make the close callback work on Windows.
2016-04-26 17:16:24 +02:00
Kazuki Sakamoto 53793980d4 Merge remote-tracking branch 'vim/master' 2016-04-24 10:06:33 -07:00
Bram Moolenaar d10abe5201 patch 7.4.1786
Problem:    Compiled-in colors do not match rgb.txt.
Solution:   Use the rgb.txt colors. (Kazunobu Kuriyama)
2016-04-24 15:41:33 +02:00
Bram Moolenaar 490465bda6 patch 7.4.1785
Problem:    Regexp test fails on windows.
Solution:   set 'isprint' to the right value for testing.
2016-04-24 15:11:02 +02:00
Bram Moolenaar 8e9eb3a6a1 patch 7.4.1784
Problem:    The termtruecolor feature is enabled differently from many other
            features.
Solution:   Enable the termtruecolor feature for the big build, not through
            configure.
2016-04-24 15:00:11 +02:00
Bram Moolenaar af98a49dd0 patch 7.4.1783
Problem:    The old regexp engine doesn't handle character classes correctly.
            (Manuel Ortega)
Solution:   Use regmbc() instead of regc().  Add a test.
2016-04-24 14:40:12 +02:00
Kazuki Sakamoto f8dd3ebb7c Merge remote-tracking branch 'vim/master' 2016-04-23 20:51:11 -07:00
Bram Moolenaar fca6600305 patch 7.4.1782
Problem:    strcharpart() does not work properly with some multi-byte
            characters.
Solution:   Use mb_cptr2len() instead of mb_char2len(). (Hirohito Higashi)
2016-04-23 15:30:09 +02:00
Bram Moolenaar da5b3dcf06 patch 7.4.1781
Problem:    synIDattr() does not respect 'guicolors'.
Solution:   Change the conditition for the mode. (Christian Brabandt)
2016-04-23 15:19:02 +02:00
Bram Moolenaar dc633cf827 patch 7.4.1780
Problem:    Warnings reported by cppcheck.
Solution:   Fix the warnings. (Dominique Pelle)
2016-04-23 14:33:19 +02:00
Bram Moolenaar 73dfe917ba patch 7.4.1779
Problem:    Using negative index in strcharpart(). (Yegappan Lakshmanan)
Solution:   Assume single byte when using a negative iindex.
2016-04-23 13:54:48 +02:00
Kazuki Sakamoto 84ffb58d89 Add --enable-termtruecolor 2016-04-22 22:36:43 -07:00
Kazuki Sakamoto 07b340efea Merge remote-tracking branch 'vim/master' 2016-04-22 20:47:56 -07:00
Bram Moolenaar b2fa54a840 patch 7.4.1778
Problem:    When using the term truecolor feature, the t_8f and t_8b termcap
            options are not set by default.
Solution:   Move the values to before BT_EXTRA_KEYS. (Christian Brabandt)
2016-04-22 21:11:09 +02:00
Bram Moolenaar 3849992b16 patch 7.4.1777
Problem:    Newly added features can escape the sandbox.
Solution:   Add checks for restricted and secure. (Yasuhiro Matsumoto)
2016-04-22 20:46:52 +02:00
Bram Moolenaar a1c487eef7 patch 7.4.1776
Problem:    Using wrong buffer length.
Solution:   use the right name. (Kazunobu Kuriyama)
2016-04-22 20:20:19 +02:00
Bram Moolenaar 763b684373 patch 7.4.1775
Problem:    The rgb.txt file is not installed.
Solution:   Install the file. (Christian Brabandt)
2016-04-22 12:24:52 +02:00
Bram Moolenaar 902647d2df patch 7.4.1774
Problem:    Cterm true color feature has warnings.
Solution:   Add type casts.
2016-04-22 11:49:06 +02:00
Bram Moolenaar 380130f1e1 patch 7.4.1773
Problem:    Compiler warnings. (Dominique Pelle)
Solution:   Add UNUSED. Add type cast. Avoid a buffer overflow.
2016-04-22 11:24:43 +02:00
Bram Moolenaar 54a38415ca patch 7.4.1772
Problem:    Installation fails when $GTK_UPDATE_ICON_CACHE is empty.
Solution:   Add quotes. (Kazunobu Kuriyama)
2016-04-22 10:14:07 +02:00
Bram Moolenaar 21decdd3e6 patch 7.4.1771
Problem:    Warning for unused variable.
Solution:   Add #ifdef. (John Marriott)
2016-04-22 10:00:58 +02:00
Kazuki Sakamoto f6c6992098 Merge remote-tracking branch 'vim/master' 2016-04-21 21:27:31 -07:00
Bram Moolenaar 8a633e3427 patch 7.4.1770
Problem:    Cannot use true color in the terminal.
Solution:   Add the 'guicolors' option. (Nikolai Pavlov)
2016-04-21 21:10:14 +02:00
Bram Moolenaar 6d4431e7b6 patch 7.4.1769
Problem:    No "closed", "errors" and "encoding" attribute on Python output.
Solution:   Add attributes and more tests. (Roland Puntaier, closes #622)
2016-04-21 20:00:56 +02:00
Bram Moolenaar d106e5ba7f patch 7.4.1768
Problem:    Arguments of setqflist() are not checked properly.
Solution:   Add better checks, add a test. (Nikolai Pavlov, Hirohito Higashi,
            closes #661)
2016-04-21 19:38:07 +02:00
Bram Moolenaar 4adfaabfe7 patch 7.4.1767
Problem:    When installing Vim on a GTK system the icon cache is not updated.
Solution:   Update the GTK icon cache when possible. (Kazunobu Kuriyama)
2016-04-21 18:20:11 +02:00
Bram Moolenaar 0c1ff16b54 updated runtime files. Add avra syntax. 2016-04-21 18:01:28 +02:00
Bram Moolenaar 02cfac85b4 patch 7.4.1766
Problem:    Building instructions for MS-Windows are outdated.
Solution:   Mention setting SDK_INCLUDE_DIR. (Ben Franklin, closes #771)  Move
            outdated instructions further down.
2016-04-21 14:34:58 +02:00
Bram Moolenaar 4694a17d1e patch 7.4.1765
Problem:    Undo options are not together in the options window.
Solution:   Put them together.  (Gary Johnson)
2016-04-21 14:05:23 +02:00
Bram Moolenaar ba53435144 patch 7.4.1763
Problem:    Coverity: useless assignment.
Solution:   Add #if 0.
2016-04-21 09:20:26 +02:00
Bram Moolenaar 268a06ce90 patch 7.4.1762
Problem:    Coverity: useless assignments.
Solution:   Remove them.
2016-04-21 09:07:01 +02:00
Bram Moolenaar 8ed43916db patch 7.4.1761
Problem:    Coverity complains about ignoring return value.
Solution:   Add "(void)" to get rid of the warning.
2016-04-21 08:56:12 +02:00
Bram Moolenaar aa3b15dbeb Updated runtime files. 2016-04-21 08:53:19 +02:00
Kazuki Sakamoto 4d505ad0fc Merge pull request #265 from macvim-dev/feature/README
MacVim README.md
2016-04-20 20:30:02 -07:00
Kazuki Sakamoto 0fffd1cda6 MacVim README.md 2016-04-20 20:28:19 -07:00
Kazuki Sakamoto 130eee0a2a Merge remote-tracking branch 'vim/master' 2016-04-20 20:20:37 -07:00
Bram Moolenaar 4445f7ee70 patch 7.4.1760
Problem:    Compiler warning for unused variable.
Solution:   Add #ifdef. (John Marriott)
2016-04-20 20:55:56 +02:00
Bram Moolenaar 40b1b5443c patch 7.4.1759
Problem:    When using feedkeys() in a timer the inserted characters are not
            used right away.
Solution:   Break the wait loop when characters have been added to typebuf.
            use this for testing CursorHoldI.
2016-04-20 20:18:23 +02:00
Bram Moolenaar 245c41070c patch 7.4.1758
Problem:    Triggering CursorHoldI when in CTRL-X mode causes problems.
Solution:   Do not trigger CursorHoldI in CTRL-X mode. Add "!" flag to
            feedkeys() (test with that didn't work though).
2016-04-20 17:37:41 +02:00
Bram Moolenaar 8e42ae5069 patch 7.4.1757
Problem:    When using complete() it may set 'modified' even though nothing
            was inserted.
Solution:   Use Down/Up instead of Next/Previous match. (Shougo, closes #745)
2016-04-20 16:39:19 +02:00
Bram Moolenaar a6e4250142 patch 7.4.1756
Problem:    "dll" options are not expanded.
Solution:   Expand environment variables. (Ozaki Kiichi)
2016-04-20 16:19:52 +02:00
Bram Moolenaar 517ffbee0d patch 7.4.1755
Problem:    When using getreg() on a non-existing register a NULL list is
            returned. (Bjorn Linse)
Solution:   Allocate an empty list. Add a test.
2016-04-20 14:59:29 +02:00
Bram Moolenaar c3691332f7 patch 7.4.1754
Problem:    When 'filetype' was set and reloading a buffer which does not
            cause it to be set, the syntax isn't loaded. (KillTheMule)
Solution:   Remember whether the FileType event was fired and fire it if not.
            (Anton Lindqvist, closes #747)
2016-04-20 12:49:49 +02:00
Bram Moolenaar c020042083 patch 7.4.1753
Problem:    "noinsert" in 'completeopt' is sometimes ignored.
Solution:   Set the variables when the 'completeopt' was set. (Ozaki Kiichi)
2016-04-20 12:02:02 +02:00
Kazuki Sakamoto fa9dd06ea8 MacVim Snapshot 102
Binary targets OS X 10.8(Mountain Lion), 10.9(Mavericks), 10.10(Yosemite), and 10.11(El Capitan)

- Vim patch 7.4.1752

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.5
- Ruby 2.0
2016-04-19 20:20:23 -07:00
Kazuki Sakamoto f62065e786 Merge remote-tracking branch 'vim/master' 2016-04-18 20:26:59 -07:00
Bram Moolenaar 8d8aa0a367 Add missing test file. 2016-04-18 20:21:12 +02:00
Bram Moolenaar c1808d5822 patch 7.4.1752
Problem:    When adding to the quickfix list the current position is reset.
Solution:   Do not reset the position when not needed. (Yegappan Lakshmanan)
2016-04-18 20:04:00 +02:00
Bram Moolenaar def5abe0a2 patch 7.4.1751
Problem:    Crash when 'tagstack' is off. (Dominique Pelle)
Solution:   Fix it. (Hirohito Higashi)
2016-04-18 19:46:15 +02:00
Bram Moolenaar 7f7c3325d3 patch 7.4.1750
Problem:    When a buffer gets updated while in command line mode, the screen
            may be messed up.
Solution:   Postpone the redraw when the screen is scrolled.
2016-04-18 19:27:24 +02:00
Kazuki Sakamoto 75baa49a7a Merge remote-tracking branch 'vim/master' 2016-04-17 20:12:43 -07:00
Bram Moolenaar 30e12d259e patch 7.4.1749
Problem:    When using GTK 3.20 there are a few warnings.
Solution:   Use new functions when available. (Kazunobu Kuriyama)
2016-04-17 20:49:53 +02:00
Kazuki Sakamoto 44f028eb93 Merge remote-tracking branch 'vim/master' 2016-04-16 20:54:36 -07:00
Bram Moolenaar f9660b59b2 Add missing test file. 2016-04-16 22:19:15 +02:00
Bram Moolenaar 1538fc34fa patch 7.4.1748
Problem:    "gD" does not find match in first column of first line. (Gary
            Johnson)
Solution:   Accept match at the cursor.
2016-04-16 09:13:34 +02:00
Kazuki Sakamoto 60009f28dd Merge remote-tracking branch 'vim/master' 2016-04-15 21:19:18 -07:00
Bram Moolenaar fe4b186406 patch 7.4.1747
Problem:    Coverity: missing check for NULL pointer.
Solution:   Check for out of memory.
2016-04-15 21:47:54 +02:00
Bram Moolenaar 95509e18f8 patch 7.4.1746
Problem:    Memory leak in Perl.
Solution:   Decrement the reference count.  Add a test. (Damien)
2016-04-15 21:16:11 +02:00
Bram Moolenaar 5d98c9d932 patch 7.4.1745
Problem:    README file is not clear about where to get Vim.
Solution:   Add links to github, releases and the Windows installer.
            (Suggested by Christian Brabandt)
2016-04-15 20:54:52 +02:00
Bram Moolenaar 6621004289 patch 7.4.1744
Problem:    Python: Converting a sequence may leak memory.
Solution:   Decrement a reference. (Nikolay Pavlov)
2016-04-15 20:40:41 +02:00
Kazuki Sakamoto a5660a2ebe Merge remote-tracking branch 'vim/master' 2016-04-14 21:37:50 -07:00
Bram Moolenaar 75be2339d8 patch 7.4.1743
Problem:    Clang warns for uninitialzed variable. (Michael Jarvis)
Solution:   Initialize it.
2016-04-14 23:10:40 +02:00
Bram Moolenaar 5d18e0eca5 patch 7.4.1742
Problem:    strgetchar() does not work correctly.
Solution:   use mb_cptr2len().  Add a test. (Naruhiko Nishino)
2016-04-14 22:54:24 +02:00
Bram Moolenaar b22bd46b96 patch 7.4.1741
Problem:    Not testing utf-8 characters.
Solution:   Move the right asserts to the test_expr_utf8 test.
2016-04-14 22:52:50 +02:00
Bram Moolenaar 4d58502202 patch 7.4.1740
Problem:    syn-cchar defined with matchadd() does not appear if there are no
            other syntax definitions which matches buffer text.
Solution:   Check for startcol. (Ozaki Kiichi, haya14busa, closes #757)
2016-04-14 19:50:22 +02:00
Bram Moolenaar bea1ede1c5 patch 7.4.1739
Problem:    Messages test fails on MS-Windows.
Solution:   Adjust the asserts.  Skip the "messages maintainer" line if not
            showing all messages.
2016-04-14 19:44:36 +02:00
Bram Moolenaar 5d91646599 patch 7.4.1738
Problem:    Count for ":messages" depends on number of lines.
Solution:   Add ADDR_OTHER address type.
2016-04-14 18:42:47 +02:00
Bram Moolenaar 52196b2dbe patch 7.4.1737
Problem:    Argument marked as unused is used.
Solution:   Remove UNUSED.
2016-04-14 17:52:41 +02:00
Bram Moolenaar baa9fcaf40 patch 7.4.1736
Problem:    Unused variable.
Solution:   Remove it. (Yasuhiro Matsumoto)
2016-04-14 17:40:56 +02:00
Bram Moolenaar 451f849fd6 patch 7.4.1735
Problem:    It is not possible to only see part of the message history.  It is
            not possible to clear messages.
Solution:   Add a count to ":messages" and a clear argument. (Yasuhiro
            Matsumoto)
2016-04-14 17:16:22 +02:00
Bram Moolenaar 0f518a8f4d patch 7.4.1734
Problem:    Test fails when not using utf-8.
Solution:   Split test in regularand utf-8 part.
2016-04-14 16:57:10 +02:00
Bram Moolenaar 839e954aaa patch 7.4.1733
Problem:    "make install" doesn't know about cross-compiling. (Christian
            Neukirchen)
Solution:   Add CROSS_COMPILING. (closes #740)
2016-04-14 16:46:02 +02:00
Bram Moolenaar 429fcfbf9a patch 7.4.1732
Problem:    Folds may close when using autocomplete. (Anmol Sethi)
Solution:   Increment/decrement disable_fold. (Christian Brabandt, closes
            #643)
2016-04-14 16:22:04 +02:00
Bram Moolenaar 8110a091bc patch 7.4.1731
Problem:    Python: turns partial into simple funcref.
Solution:   Use partials like partials. (Nikolai Pavlov, closes #734)
2016-04-14 15:56:09 +02:00
Bram Moolenaar 58de0e2dcc patch 7.4.1730
Problem:    It is not easy to get a character out of a string.
Solution:   Add strgetchar() and strcharpart().
2016-04-14 15:13:46 +02:00
Bram Moolenaar 6244a0fc29 patch 7.4.1729
Problem:    The Perl interface cannot use 'print' operator for writing
            directly in standard IO.
Solution:   Add a minimal implementation of PerlIO Layer feature and try to
            use it for STDOUT/STDERR. (Damien)
2016-04-14 14:09:25 +02:00
Bram Moolenaar 81edd171a9 patch 7.4.1728
Problem:    The help for functions require a space after the "(".
Solution:   Make CTRL-] on a function name ignore the arguments. (Hirohito
            Higashi)
2016-04-14 13:51:37 +02:00
Bram Moolenaar ebf7dfa6f1 patch 7.4.1727
Problem:    Cannot detect a crash in tests when caused by garbagecollect().
Solution:   Add garbagecollect_for_testing().  Do not free a job if is still
            useful.
2016-04-14 12:46:51 +02:00
Kazuki Sakamoto b3d9e6e9bf Merge remote-tracking branch 'vim/master' 2016-04-13 20:49:51 -07:00
Bram Moolenaar 700eefe5a4 patch 7.4.1726
Problem:    ANSI compiler complains about string length.
Solution:   Split long string in two parts. (Michael Jarvis)
2016-04-13 21:14:37 +02:00
Kazuki Sakamoto 1e7a5a0a4b Merge remote-tracking branch 'vim/master' 2016-04-12 21:28:59 -07:00
Bram Moolenaar 3780bb923a patch 7.4.1725
Problem:    Compiler errors for non-ANSI compilers.
Solution:   Remove // comment.  Remove comma at end of enum. (Michael Jarvis)
2016-04-12 22:18:53 +02:00
Bram Moolenaar 03413f4416 Updated runtime files. 2016-04-12 21:07:15 +02:00
Kazuki Sakamoto afe0027db1 Merge remote-tracking branch 'vim/master' 2016-04-11 21:27:11 -07:00
Bram Moolenaar 73cd8fb3e8 patch 7.4.1724
Problem:    Tabline test fails in GUI.
Solution:   Remove 'e' from 'guioptions'.
2016-04-11 22:49:03 +02:00
Bram Moolenaar f73d3bc253 patch 7.4.1723
Problem:    When using try/catch in 'tabline' it is still considered an
            error and the tabline will be disabled.
Solution:   Check did_emsg instead of called_emsg. (haya14busa, closes #746)
2016-04-11 21:55:15 +02:00
Bram Moolenaar 0239acb11f patch 7.4.1722
Problem:    Crash when calling garbagecollect() after starting a job.
Solution:   Set the copyID on job and channel. (Hirohito Higashi, Ozaki
            Kiichi)
2016-04-11 21:02:54 +02:00
Kazuki Sakamoto d9b7066919 Merge remote-tracking branch 'vim/master' 2016-04-09 20:36:33 -07:00
Bram Moolenaar 939a1abe93 Updated runtime files. 2016-04-10 01:31:25 +02:00
Kazuki Sakamoto 9f4f1ebd63 Merge remote-tracking branch 'vim/master' 2016-04-08 20:43:37 -07:00
Bram Moolenaar a4d13de836 patch 7.4.1721
Problem:    The vimtbar files are unused.
Solution:   Remove them. (Ken Takata)
2016-04-08 22:17:04 +02:00
Bram Moolenaar 9e4043757c patch 7.4.1720
Problem:    Tests fail without the job feature.
Solution:   Skip tests when the job feature is not present.
2016-04-08 17:25:19 +02:00
Bram Moolenaar 107e1eef1d patch 7.4.1719
Problem:    Leaking memory when there is a cycle involving a job and a
            partial.
Solution:   Add a copyID to job and channel.  Set references in items referred
            by them.  Go through all jobs and channels to find unreferenced
            items.  Also, decrement reference counts when garbage collecting.
2016-04-08 17:07:19 +02:00
Kazuki Sakamoto fa37206276 Merge remote-tracking branch 'vim/master' 2016-04-07 20:48:31 -07:00
Bram Moolenaar d56374e25d patch 7.4.1718
Problem:    Coverity: not using return value of set_ref_in_item().
Solution:   Use the return value.
2016-04-07 22:16:30 +02:00
Bram Moolenaar 0e4c1de556 patch 7.4.1717
Problem:    Leaking memory when opening a channel fails.
Solution:   Unreference partials in job options.
2016-04-07 21:40:38 +02:00
Kazuki Sakamoto 3ef3a60656 Merge remote-tracking branch 'vim/master' 2016-04-06 21:28:50 -07:00
Bram Moolenaar baec5c1768 patch 7.4.1716
Problem:    'autochdir' doesn't work for the first file. (Rob Hoelz)
Solution:   Call DO_AUTOCHDIR after startup. (Christian Brabandt, closes #704)
2016-04-06 23:06:23 +02:00
Bram Moolenaar ddecc25947 patch 7.4.1715
Problem:    Double free when a partial is in a cycle with a list or dict.
            (Nikolai Pavlov)
Solution:   Do not free a nested list or dict used by the partial.
2016-04-06 22:59:37 +02:00
Kazuki Sakamoto a6e4822186 Merge remote-tracking branch 'vim/master' 2016-04-05 20:43:34 -07:00
Bram Moolenaar 54f1b7abf8 patch 7.4.1714
Problem:    Non-GUI specific settings in the gvimrc_example file.
Solution:   Move some settings to the vimrc_example file.  Remove setting
            'hlsearch' again. (suggested by Hirohito Higashi)
2016-04-05 22:07:04 +02:00
Bram Moolenaar f80663f17b patch 7.4.1713
Problem:    GTK GUI doesn't work on Wayland.
Solution:   Specify that only the X11 backend is allowed. (Simon McVittie)
2016-04-05 21:56:06 +02:00
Bram Moolenaar 49b2732644 patch 7.4.1712
Problem:    For plugins in packages, plugin authors need to take care of all
            dependencies.
Solution:   When loading "start" packages and for :packloadall, first add all
            directories to 'runtimepath' before sourcing plugins.
2016-04-05 21:13:00 +02:00
Bram Moolenaar a742e084b6 patch 7.4.1711
Problem:    When using try/catch in 'statusline' it is still considered an
            error and the status line will be disabled.
Solution:   Check did_emsg instead of called_emsg. (haya14busa, closes #729)
2016-04-05 21:10:38 +02:00
Kazuki Sakamoto a18a828b26 Merge remote-tracking branch 'vim/master' 2016-04-04 22:44:39 -07:00
Bram Moolenaar 17fe5e1aec patch 7.4.1710
Problem:    Not all output of an external command is read.
Solution:   Avoid timing out when the process has exited. (closes #681)
2016-04-04 22:03:08 +02:00
Bram Moolenaar 4c9ce053d9 patch 7.4.1709
Problem:    Mistake in #ifdef.
Solution:   Change PROOF_QUALITY to DRAFT_QUALITY. (Ken Takata)
2016-04-04 21:06:19 +02:00
Bram Moolenaar 2a6fa564a3 patch 7.4.1708
Problem:    New regexp engine does not work properly with EBCDIC.
Solution:   Define equivalence class characters. (Owen Leibman)
2016-04-04 20:55:59 +02:00
Kazuki Sakamoto 79f8f407af MacVim Snapshot 100
Binary targets OS X 10.8(Mountain Lion), 10.9(Mavericks), 10.10(Yosemite), and 10.11(El Capitan)

- Vim patch 7.4.1707

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.5
- Ruby 2.0
2016-04-03 19:27:21 -07:00
Kazuki Sakamoto 04a4b41111 Merge remote-tracking branch 'vim/master' 2016-04-03 17:57:43 -07:00
Bram Moolenaar 0921ecff1c patch 7.4.1707
Problem:    Cannot use empty dictionary key, even though it can be useful.
Solution:   Allow using an empty dictionary key.
2016-04-03 22:44:36 +02:00
Bram Moolenaar e185c1efba patch 7.4.1706
Problem:    Old style function declaration breaks build.
Solution:   Remove __ARGS().
2016-04-03 22:22:30 +02:00
Bram Moolenaar 7c1c6dbb68 patch 7.4.1705
Problem:    The 'guifont' option does not allow for a quality setting.
Solution:   Add the "q" item, supported on MS-Windows. (Yasuhiro Matsumoto)
2016-04-03 22:08:05 +02:00
Bram Moolenaar 3dda7db4e1 patch 7.4.1704
Problem:    Using freed memory with "wincmd p". (Dominique Pelle)
Solution:   Also clear "prevwin" in other tab pages.
2016-04-03 21:22:58 +02:00
Bram Moolenaar b50e5f5686 patch 7.4.1703
Problem:    Can't assert for not equal and not matching.
Solution:   Add assert_notmatch() and assert_notequal().
2016-04-03 20:57:20 +02:00
Bram Moolenaar 4afc7c5d4a patch 7.4.1702
Problem:    Using freed memory when parsing 'printoptions' fails.
Solution:   Save the old options and restore them in case of an error.
            (Dominique)
2016-04-03 14:56:52 +02:00
Bram Moolenaar f9f22dbe4f patch 7.4.1701
Problem:    Equivalence classes still tested in old style tests.
Solution:   Remove the duplicate.
2016-04-03 14:09:59 +02:00
Bram Moolenaar 22e421549d patch 7.4.1700
Problem:    Equivalence classes are not properly tested.
Solution:   Add tests for multi-byte and latin1. Fix an error. (Owen Leibman)
2016-04-03 14:02:02 +02:00
Kazuki Sakamoto 0e954ac375 Merge remote-tracking branch 'vim/master' 2016-04-02 21:23:43 -07:00
Bram Moolenaar 71fb0c146b patch 7.4.1699
Problem:    :packadd does not work the same when used early or late.
Solution:   Always load plugins matching "plugin/**/*.vim".
2016-04-02 22:44:16 +02:00
Bram Moolenaar 298c65971e patch 7.4.1698
Problem:    Two tests fail when running tests with MinGW. (Michael Soyka)
Solution:   Convert test_getcwd.ok test_wordcount.ok to unix fileformat.
2016-04-02 22:24:20 +02:00
Bram Moolenaar cb0700844c patch 7.4.1697
Problem:    Display problems when the 'ambiwidth' and 'emoji' options are not
            set properly or the terminal doesn't behave as expected.
Solution:   After drawing an ambiguous width character always position the
            cursor.
2016-04-02 22:14:51 +02:00
Bram Moolenaar fd773e9e88 patch 7.4.1696
Problem:    When using :stopinsert in a silent mapping the "INSERT" message
            isn't cleared. (Coacher)
Solution:   Always clear the message. (Christian Brabandt, closes #718)
2016-04-02 19:39:16 +02:00
Bram Moolenaar 8bc189e81a patch 7.4.1695
Problem:    ":syn reset" clears the effect ":syn iskeyword". (James McCoy)
Solution:   Remove clearing the syntax keywords.
2016-04-02 19:01:58 +02:00
Bram Moolenaar f28d871465 patch 7.4.1694
Problem:    Win32 gvim doesn't work with "dvorakj" input method.
Solution:   Wait for QS_ALLINPUT instead of QS_ALLEVENTS. (Yukihiro Nakadaira)
2016-04-02 15:59:40 +02:00
Bram Moolenaar 8e77bad3c1 Add json_test to gitignore (Hirohito Higashi) 2016-04-02 15:32:45 +02:00
Bram Moolenaar 864733ad92 patch 7.4.1693
Problem:    Building the Perl interface gives compiler warnings.
Solution:   Remove a pragma. Add noreturn attributes. (Damien)
2016-04-02 14:18:01 +02:00
Bram Moolenaar 9bd547aca4 patch 7.4.1692
Problem:    feedkeys('i', 'x') gets stuck, waits for a character to be typed.
Solution:   Behave like ":normal". (Yasuhiro Matsumoto)
2016-04-01 21:00:48 +02:00
Kazuki Sakamoto cef9e23dd7 Merge remote-tracking branch 'vim/master' 2016-03-31 21:27:57 -07:00
Bram Moolenaar b681be175b patch 7.4.1691
Problem:    When switching to a new buffer and an autocommand applies syntax
            highlighting an ml_get error may occur.
Solution:   Check "syn_buf" against the buffer in the window. (Alexander von
            Buddenbrock, closes #676)
2016-03-31 23:02:16 +02:00
Bram Moolenaar 42356150ba patch 7.4.1690
Problem:    Can't compile with the conceal feature but without multi-byte.
Solution:   Adjust #ifdef. (Owen Leibman)
2016-03-31 22:27:40 +02:00
Kazuki Sakamoto 4005cc7a59 Merge remote-tracking branch 'vim/master' 2016-03-30 20:50:57 -07:00
Bram Moolenaar 758535a1df patch 7.4.1689
Problem:    Ruby interface has inconsistent coding style.
Solution:   Fix the coding style. (Ken Takata)
2016-03-30 22:06:16 +02:00
Bram Moolenaar 67c2c058ea patch 7.4.1688
Problem:    MzScheme does not support partial.
Solution:   Add minimal partial support. (Ken Takata)
2016-03-30 22:03:02 +02:00
Bram Moolenaar bdf0bda968 patch 7.4.1687
Problem:    The channel close_cb option does not work.
Solution:   Use jo_close_partial instead of jo_err_partial. (Damien)
2016-03-30 21:06:57 +02:00
Bram Moolenaar e9c0727003 patch 7.4.1686
Problem:    When running tests $HOME/.viminfo is written. (James McCoy)
Solution:   Add 'nviminfo' to the 'viminfo' option. (closes #722)
2016-03-30 20:50:46 +02:00
Kazuki Sakamoto 4d59b3cc54 Merge remote-tracking branch 'vim/master' 2016-03-29 20:22:57 -07:00
Bram Moolenaar 7db8f6f4f8 Updated runtime files. 2016-03-29 23:12:46 +02:00
Bram Moolenaar 7fed5c18f8 patch 7.4.1685
Problem:    There is no easy way to get all the information about a match.
Solution:   Add matchstrpos(). (Ozaki Kiichi)
2016-03-29 23:10:31 +02:00
Bram Moolenaar d18cfb7dbf patch 7.4.1684
Problem:    README text is slightly outdated.
Solution:   Mention the READMEdir directory.
2016-03-29 22:29:18 +02:00
Kazuki Sakamoto e6f9c446ac Merge remote-tracking branch 'vim/master' 2016-03-28 20:19:42 -07:00
Bram Moolenaar e609ad557c patch 7.4.1683
Problem:    Generated .bat files do not support --nofork.
Solution:   Add check for --nofork.  Also add "setlocal". (Kevin Cantú,
            closes #659)
2016-03-28 23:05:48 +02:00
Bram Moolenaar 72188e9aae patch 7.4.1682
Problem:    Coverity: no check for NULL.
Solution:   Add check for invalid argument to assert_match().
2016-03-28 22:48:29 +02:00
Bram Moolenaar ef9d9b94a8 patch 7.4.1681
Problem:    Coverity warns for fixed size buffer length (false positive).
Solution:   Add a check for the name length.
2016-03-28 22:44:50 +02:00
Bram Moolenaar 925ccfde79 patch 7.4.1680
Problem:    Coverity warns for not checking name length (false positive).
Solution:   Only copy the characters we know are there.
2016-03-28 22:38:02 +02:00
Bram Moolenaar 7d2a5796d3 patch 7.4.1679
Problem:    Coverity: copying value of v_lock without initializing it.
Solution:   Init v_lock in rettv_list_alloc() and rettv_dict_alloc().
2016-03-28 22:30:50 +02:00
Bram Moolenaar 8b29aba019 patch 7.4.1678
Problem:    Warning for unused argument.
Solution:   Add UNUSED. (Dominique Pelle)
2016-03-28 22:17:16 +02:00
Bram Moolenaar 0b9e4d1224 patch 7.4.1677
Problem:    A reference to the removed file_select plugin remains.
Solution:   Remove it.
2016-03-28 22:05:47 +02:00
Bram Moolenaar fead3ac9a3 patch 7.4.1676
Problem:    The shellmenu plugin has to be copied or sourced to be used.
Solution:   Turn it into a package.
2016-03-28 21:26:47 +02:00
Bram Moolenaar e101204906 patch 7.4.1675
Problem:    The swapmous plugin has to be copied or sourced to be used.
Solution:   Turn it into the swapmouse package.
2016-03-28 21:10:49 +02:00
Bram Moolenaar cf2d8dee51 patch 7.4.1674
Problem:    The editexisting plugin has to be copied or sourced to be used.
Solution:   Turn it into a package.
2016-03-28 21:04:37 +02:00
Bram Moolenaar 2946d0236d patch 7.4.1673
Problem:    The justify plugin has to be copied or sourced to be used.
Solution:   Turn it into a package.
2016-03-28 20:53:08 +02:00
Bram Moolenaar e934e8f5c1 patch 7.4.1672
Problem:    The Dvorak support is a bit difficult to install.
Solution:   Turn it into an optional package.
2016-03-28 20:40:32 +02:00
Bram Moolenaar 61264d9969 patch 7.4.1671
Problem:    When help exists in multiple languages, adding @ab while "ab" is
            the default help language is unnecessary.
Solution:   Leave out "@ab" when not needed. (Ken Takata)
2016-03-28 19:59:02 +02:00
Bram Moolenaar a32095fc8f patch 7.4.1670
Problem:    Completion doesn't work well for a variable containing "#".
Solution:   Recognize the "#". (Watiko)
2016-03-28 19:27:13 +02:00
Bram Moolenaar 8b877ac38e patch 7.4.1669
Problem:    When writing buffer lines to a pipe Vim may block.
Solution:   Avoid blocking, write more lines later.
2016-03-28 19:16:20 +02:00
Bram Moolenaar ee1f7b3cb7 patch 7.4.1668
Problem:    channel_get_all() does multiple allocations.
Solution:   Compute the size and allocate once.
2016-03-28 14:42:14 +02:00
Bram Moolenaar 84e1d2b21a patch 7.4.1667
Problem:    Win32: waiting on a pipe with fixed sleep time.
Solution:   Start with a short delay and increase it when looping.
2016-03-28 14:20:41 +02:00
Bram Moolenaar 46c00a6565 patch 7.4.1666
Problem:    When reading JSON from a channel all readahead is used.
Solution:   Use the fill function to reduce overhead.
2016-03-28 14:11:42 +02:00
Kazuki Sakamoto 1e35e3ee83 Merge remote-tracking branch 'vim/master' 2016-03-27 20:29:36 -07:00
Bram Moolenaar 8038568722 patch 7.4.1665
Problem:    Crash when calling job_start() with a NULL string. (Dominique)
Solution:   Check for an invalid argument.
2016-03-27 19:13:35 +02:00
Bram Moolenaar 89c64d557d patch 7.4.1664
Problem:    Crash in :cgetexpr.
Solution:   Check for NULL pointer. (Dominique) Add a test.
2016-03-27 18:44:40 +02:00
Bram Moolenaar ea6553bec3 patch 7.4.1663
Problem:    In tests it's often useful to check if a pattern matches.
Solution:   Add assert_match().
2016-03-27 15:13:38 +02:00
Kazuki Sakamoto 312c0326e5 Merge remote-tracking branch 'vim/master' 2016-03-26 19:39:06 -07:00
Bram Moolenaar 4f3f668c84 Updated runtime files. 2016-03-26 23:01:59 +01:00
Bram Moolenaar c4dcd60c76 patch 7.4.1662
Problem:    No test for an invalid Ex command on a channel.
Solution:   Test handling an invalid command gracefully.  Avoid getting an
            error message, do write it to the channel log.
2016-03-26 22:56:46 +01:00
Bram Moolenaar fa8b2e173d patch 7.4.1661
Problem:    No test for special characters in channel eval command.
Solution:   Testing sending and receiving text with special characters.
2016-03-26 22:19:27 +01:00
Bram Moolenaar 819821c5a9 patch 7.4.1660
Problem:    has('patch-7.4.1') doesn't work.
Solution:   Fix off-by-one error. (Thinca)
2016-03-26 21:24:14 +01:00
Bram Moolenaar e1581307d2 patch 7.4.1659
Problem:    Compiler warning for argument type. (Manuel Ortega)
Solution:   Remove "&".
2016-03-26 21:04:48 +01:00
Bram Moolenaar 1473551a44 patch 7.4.1658
Problem:    A plugin does not know when VimEnter autocommands were already
            triggered.
Solution:   Add the v:vim_did_enter variable.
2016-03-26 21:00:08 +01:00
Bram Moolenaar 8fdd721047 patch 7.4.1657
Problem:    On Unix in a terminal: channel messages are not handled right away.
            (Jackson Alves de Aquino)
Solution:   Break the loop for timers when something was received.
2016-03-26 19:41:48 +01:00
Bram Moolenaar 92e35efaf6 patch 7.4.1656
Problem:    Crash when using partial with a timer.
Solution:   Increment partial reference count. (Hirohito Higashi)
2016-03-26 18:20:41 +01:00
Kazuki Sakamoto 4f87e76866 MacVim Snapshot 100
Binary targets OS X 10.8(Mountain Lion), 10.9(Mavericks), 10.10(Yosemite), and 10.11(El Capitan)

- Vim patch 7.4.1655

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.5
- Ruby 2.0
2016-03-25 23:33:20 -07:00
Kazuki Sakamoto 17d68e17b6 Use Xcode 7.3 on Travis-CI 2016-03-25 23:03:43 -07:00
Kazuki Sakamoto 7826fd71e1 Merge remote-tracking branch 'vim/master' 2016-03-25 20:51:06 -07:00
Bram Moolenaar 1e7885abe8 patch 7.4.1655
Problem:    remote_expr() hangs. (Ramel)
Solution:   Check for messages in the waiting loop.
2016-03-25 19:03:03 +01:00
Bram Moolenaar 52c6eaffd4 patch 7.4.1654
Problem:    Crash when using expand('%:S') in a buffer without a name.
Solution:   Don't set a NUL. (James McCoy, closes #714)
2016-03-25 18:42:46 +01:00
Bram Moolenaar da64ab322a patch 7.4.1653
Problem:    Users who loaded matchit.vim manually have to change their
            startup. (Gary Johnson)
Solution:   Add a file in the old location that loads the package.
2016-03-25 18:35:01 +01:00
Bram Moolenaar 610cc1b9b3 patch 7.4.1652
Problem:    Old style test for fnamemodify().
Solution:   Turn it into a new style test.
2016-03-25 17:55:42 +01:00
Bram Moolenaar 780d4c3fff patch 7.4.1651
Problem:    Some dead (MSDOS) code remains.
Solution:   Remove the unused lines. (Ken Takata)
2016-03-25 17:21:19 +01:00
Bram Moolenaar f68f1d7079 patch 7.4.1650
Problem:    Quickfix test fails.
Solution:   Accept any number of matches.
2016-03-25 17:14:06 +01:00
Bram Moolenaar aedfcbe1e6 patch 7.4.1649
Problem:    The matchit plugin needs to be copied to be used.
Solution:   Put the matchit plugin in an optional package.
2016-03-25 17:02:51 +01:00
Bram Moolenaar bee6c0cf86 patch 7.4.1648
Problem:    Compiler has a problem copying a string into di_key[]. (Yegappan
            Lakshmanan)
Solution:   Add dictitem16_T.
2016-03-25 15:40:50 +01:00
Bram Moolenaar 8b20179c65 patch 7.4.1647
Problem:    Using freed memory after setqflist() and ":caddbuffer".  (Dominique)
Solution:   Set qf_ptr when adding the first item to the quickfix list.
2016-03-25 15:01:10 +01:00
Kazuki Sakamoto c561f1d1bc Merge remote-tracking branch 'vim/master' 2016-03-24 20:47:23 -07:00
Bram Moolenaar 4c90861e9f patch 7.4.1646
Problem:    Using Python vim.bindeval() on a partial doesn't work. (Nikolai
            Pavlov)
Solution:   Add VAR_PARTIAL support in Python.
2016-03-24 21:58:12 +01:00
Bram Moolenaar c5fbe8af4c patch 7.4.1645
Problem:    When a dict contains a partial it can't be redefined as a
            function. (Nikolai Pavlov)
Solution:   Remove the partial when overwriting with a function.
2016-03-24 21:42:09 +01:00
Bram Moolenaar 24c77a1e3a patch 7.4.1644
Problem:    Using string() on a partial that exists in the dictionary it binds
            results in an error. (Nikolai Pavlov)
Solution:   Make string() not fail on a recursively nested structure. (Ken
            Takta)
2016-03-24 21:23:06 +01:00
Bram Moolenaar d4caf5c16a patch 7.4.1643
Problem:    Terminating file name has side effects.
Solution:   Restore the character. (mostly by James McCoy, closes #713)
2016-03-24 19:14:35 +01:00
Bram Moolenaar 6a08454b93 patch 7.4.1642
Problem:    Handling emoji characters as full width has problems with
            backwards compatibility.
Solution:   Only put characters in the 1f000 range in the emoji table.
2016-03-24 18:24:58 +01:00
Kazuki Sakamoto 8cd088eb67 Merge remote-tracking branch 'vim/master' 2016-03-23 20:33:01 -07:00
Bram Moolenaar 5ca84ce4aa patch 7.4.1641
Problem:    Using unterminated string.
Solution:   Add NUL before calling vim_strsave_shellescape(). (James McCoy)
2016-03-23 22:28:25 +01:00
Bram Moolenaar ffec3c5349 patch 7.4.1640
Problem:    Crash when an autocommand changes a quickfix list. (Dominique)
Solution:   Check wether an entry is still valid. (Yegappan Lakshmanan,
            Hirohito Higashi)
2016-03-23 20:55:42 +01:00
Kazuki Sakamoto e20c94642a Merge remote-tracking branch 'vim/master' 2016-03-22 21:37:32 -07:00
Bram Moolenaar 5f436fcf99 patch 7.4.1639
Problem:    Invoking garbage collection may cause a double free.
Solution:   Don't free the dict in a partial when recursive is FALSE.
2016-03-22 22:34:03 +01:00
Bram Moolenaar e4eb6ff089 patch 7.4.1638
Problem:    When binding a function to a dict the reference count is wrong.
Solution:   Decrement dict reference count, only reference the function when
            actually making a copy. (Ken Takata)
2016-03-22 21:00:09 +01:00
Bram Moolenaar 6c0e984f26 patch 7.4.1637
Problem:    Can't build with older MinGW compiler.
Solution:   Change option from c++11 to gnu++11. (Ken Takata)
2016-03-22 20:42:31 +01:00
Bram Moolenaar 6135d0d803 patch 7.4.1636
Problem:    When 'F' is in 'shortmess' the prompt for the encryption key isn't
            displayed. (Toothpik)
Solution:   Reset msg_silent.
2016-03-22 20:31:13 +01:00
Kazuki Sakamoto 79bbe33a79 Merge remote-tracking branch 'vim/master' 2016-03-21 20:15:36 -07:00
Bram Moolenaar 6a06363861 patch 7.4.1635
Problem:    Channel test is a bit flaky.
Solution:   Remove 'DETACH' if it's there.
2016-03-21 23:18:54 +01:00
Bram Moolenaar 8e08125d3a patch 7.4.1634
Problem:    Vertical movement after CTRL-A ends up in the wrong column.
            (Urtica Dioica)
Solution:   Set curswant when appropriate. (Hirohito Higashi)
2016-03-21 23:13:32 +01:00
Bram Moolenaar b763eba7ae patch 7.4.1633
Problem:    If the help tags file was removed "make install" fails. (Tony
            Mechelynck)
Solution:   Only try moving the file if it exists.
2016-03-21 22:40:03 +01:00
Bram Moolenaar 6098957458 patch 7.4.1632
Problem:    List of test targets is outdated.
Solution:   Update to current list of test targets.
2016-03-21 22:38:34 +01:00
Bram Moolenaar 573e445664 patch 7.4.1631
Problem:    Compiler doesn't understand switch on all enum values. (Tony
            Mechelynck)
Solution:   Initialize variable.
2016-03-21 22:35:10 +01:00
Bram Moolenaar d63aff0a65 patch 7.4.1630
Problem:    Unicode table for double width is outdated.
Solution:   Update to the latest Unicode standard.
2016-03-21 22:15:30 +01:00
Bram Moolenaar b86f10ee10 patch 7.4.1629
Problem:    Handling emoji characters as full width has problems with
            backwards compatibility.
Solution:   Remove ambiguous and double width characters from the emoji table.
            Use a separate table for the character class.
            (partly by Yasuhiro Matsumoto)
2016-03-21 22:09:44 +01:00
Bram Moolenaar 3f3fbd3fdb patch 7.4.1628
Problem:    64-bit Compiler warning.
Solution:   Change type of variable. (Mike Williams)
2016-03-21 12:36:28 +01:00
Kazuki Sakamoto c90e801a05 Merge remote-tracking branch 'vim/master' 2016-03-20 23:23:42 -07:00
Bram Moolenaar 75f7265dd4 patch 7.4.1627
Problem:    Channel out_cb and err_cb are not tested.
Solution:   Add a test.
2016-03-20 22:16:56 +01:00
Bram Moolenaar 580984e026 patch 7.4.1626
Problem:    Missing changes to structs.
Solution:   Include the changes.
2016-03-20 21:17:13 +01:00
Bram Moolenaar e18c0b3981 Updated runtime files. 2016-03-20 21:08:34 +01:00
Bram Moolenaar be6aa46c4d patch 7.4.1625
Problem:    Trying to close file descriptor that isn't open.
Solution:   Check for negative number.
2016-03-20 21:02:00 +01:00
Bram Moolenaar 03602ec28e patch 7.4.1624
Problem:    Can't get info about a channel.
Solution:   Add ch_info().
2016-03-20 20:57:45 +01:00
Bram Moolenaar e9d6a298df patch 7.4.1623
Problem:    All Channels share the message ID, it keeps getting bigger.
Solution:   Use a message ID per channel.
2016-03-20 19:31:33 +01:00
Bram Moolenaar 17b56c9f83 patch 7.4.1622
Problem:    Channel demo doesn't work with Python 2.6.
Solution:   Add number in formatting placeholder
2016-03-20 18:54:19 +01:00
Bram Moolenaar a63cdb5ed6 patch 7.4.1621
Problem:    Channel test doesn't work with Python 2.6.
Solution:   Add number in formatting placeholder. (Wiredool)
2016-03-20 18:24:45 +01:00
Bram Moolenaar 4077b33a83 patch 7.4.1620
Problem:    Emoji characters are not considered as a kind of word character.
Solution:   Give emoji characters a word class number. (Yasuhiro Matsumoto)
2016-03-20 18:15:21 +01:00
Bram Moolenaar 364fa5c7ec patch 7.4.1619
Problem:    When 'fileformats' is set in the vimrc it applies to new buffers
            but not the initial buffer.
Solution:   Set 'fileformat' when starting up. (Mike Williams)
2016-03-20 17:53:25 +01:00
Bram Moolenaar a4f6ca717b patch 7.4.1618
Problem:    Starting job with output to buffer changes options in the current
            buffer.
Solution:   Set "curbuf" earlier. (Yasuhiro Matsumoto)
2016-03-20 17:28:35 +01:00
Kazuki Sakamoto 2215429b26 Merge remote-tracking branch 'vim/master' 2016-03-20 09:16:36 -07:00
Bram Moolenaar ba61ac0d61 patch 7.4.1617
Problem:    When a JSON message is split it isn't decoded.
Solution:   Wait a short time for the rest of the message to arrive.
2016-03-20 16:40:37 +01:00
Bram Moolenaar ac74d5e86c patch 7.4.1616
Problem:    Malformed channel request causes a hang.
Solution:   Drop malformed message. (Damien)
2016-03-20 14:31:00 +01:00
Kazuki Sakamoto 58c7dadefc Fix merge 2016-03-19 21:12:03 -07:00
Kazuki Sakamoto aabd6e5d74 Merge remote-tracking branch 'vim/master' 2016-03-19 20:50:13 -07:00
Bram Moolenaar 829c8e3696 patch 7.4.1615
Problem:    Build fails with tiny features.
Solution:   Adjust #ifdefs.
2016-03-19 23:07:23 +01:00
Bram Moolenaar 7eba3d2cbf patch 7.4.1614
Problem:    Still quickfix test in old style.
Solution:   Turn test 10 into a new style test.
2016-03-19 22:54:09 +01:00
Bram Moolenaar 064154c3fe patch 7.4.1613
Problem:    Still can't build with small features.
Solution:   Adjust #ifdefs.
2016-03-19 22:50:43 +01:00
Bram Moolenaar d293b2b9d4 patch 7.4.1612
Problem:    Can't build with small features.
Solution:   Move code and #ifdefs.
2016-03-19 22:29:49 +01:00
Bram Moolenaar 44a2f923c0 patch 7.4.1611
Problem:    The versplit feature makes the code uneccessary complicated.
Solution:   Remove FEAT_VERTSPLIT, always support vertical splits when
            FEAT_WINDOWS is defined.
2016-03-19 22:11:51 +01:00
Bram Moolenaar cc6cf9b9f9 patch 7.4.1610
Problem:    Compiler warnings for non-virtual destructor.
Solution:   Mark the classe final. (Ken Takata)
2016-03-19 20:51:35 +01:00
Bram Moolenaar 4d581a826c patch 7.4.1609
Problem:    Contents file is only for Amiga distro.
Solution:   Move it to "READMEdir".  Update some info.
2016-03-19 20:29:39 +01:00
Bram Moolenaar 5c29154b52 patch 7.4.1608
Problem:    string() doesn't handle a partial.
Solution:   Make a string from a partial.
2016-03-19 20:05:45 +01:00
Bram Moolenaar f0e86a0dbd patch 7.4.1607
Problem:    Comparing a function that exists on two dicts is not backwards
            compatible. (Thinca)
Solution:   Only compare the function, not what the partial adds.
2016-03-19 19:38:12 +01:00
Bram Moolenaar 953cc7fb13 patch 7.4.1606
Problem:    Having type() handle a Funcref that is or isn't a partial
            differently causes problems for existing scripts.
Solution:   Make type() return the same value. (Thinca)
2016-03-19 18:52:29 +01:00
Bram Moolenaar 3905e291fe patch 7.4.1605
Problem:    Catching exception that won't be thrown.
Solution:   Remove try/catch.
2016-03-19 18:44:08 +01:00
Bram Moolenaar 3848e00e01 patch 7.4.1604
Problem:    Although emoji characters are ambiguous width, best is to treat
            them as full width.
Solution:   Update the Unicode character tables. Add the 'emoji' options.
            (Yasuhiro Matsumoto)
2016-03-19 18:42:29 +01:00
Bram Moolenaar bfb96c047b patch 7.4.1603
Problem:    Timer with an ":echo" command messes up display.
Solution:   Redraw depending on the mode. (Hirohito Higashi)  Avoid the more
            prompt being used recursively.
2016-03-19 17:05:20 +01:00
Bram Moolenaar cff572abb9 patch 7.4.1602
Problem:    Info files take space in the top directory.
Solution:   Move them to "READMEdir".
2016-03-19 16:24:14 +01:00
Bram Moolenaar 818c9e7edf patch 7.4.1601
Problem:    README files take a lot of space in the top directory.
Solution:   Move most of them to "READMEdir".
2016-03-19 16:09:42 +01:00
Bram Moolenaar 062cc1857d patch 7.4.1600
Problem:    libs directory is not useful.
Solution:   Remove arp.library, it was only for very old Amiga versions.
2016-03-19 15:25:51 +01:00
Bram Moolenaar 8a82c7fa5e patch 7.4.1599
Problem:    No link to Coverity.
Solution:   Add Coverity badge in README.
2016-03-19 15:15:01 +01:00
Bram Moolenaar 6d8d849f5a patch 7.4.1598
Problem:    When starting the GUI fails a swap file is left behind. (Joerg
            Plate)
Solution:   Preserve files before exiting. (closes #692)
2016-03-19 14:48:31 +01:00
Bram Moolenaar 9f6154f26e patch 7.4.1597
Problem:    Memory leak when out of memory. (Coverity)
Solution:   Free the name.
2016-03-19 14:22:11 +01:00
Bram Moolenaar ba8cd122ef patch 7.4.1596
Problem:    Memory leak. (Coverity)
Solution:   Free the pattern.
2016-03-19 14:16:39 +01:00
Bram Moolenaar c0a1d7f3ad patch 7.4.1595
Problem:    Not checking for failed open(). (Coverity)
Solution:   Check file descriptor not being negative.
2016-03-19 14:12:50 +01:00
Bram Moolenaar 943bb2b8eb patch 7.4.1594
Problem:    Timers don't work on Unix.
Solution:   Add missing code.
2016-03-19 14:11:18 +01:00
Bram Moolenaar a889cf4642 patch 7.4.1593
Problem:    Using channel timeout instead of request timeout. (Coverity)
Solution:   Remove the extra assignment.
2016-03-19 13:49:43 +01:00
Bram Moolenaar 0899d69803 patch 7.4.1592
Problem:    Quickfix code using memory after being freed. (Dominique Pelle)
Solution:   Detect that the window was closed. (Hirohito Higashi)
2016-03-19 13:35:03 +01:00
Kazuki Sakamoto 71b048830a Merge remote-tracking branch 'vim/master' 2016-03-18 18:42:10 -07:00
Bram Moolenaar 5584df65a0 patch 7.4.1591
Problem:    The quickfix title is truncated.
Solution:   Save the command before it is truncated. (Anton Lindqvist)
2016-03-18 21:00:51 +01:00
Bram Moolenaar 3f242a844e patch 7.4.1590
Problem:    Warning for shadowed variable. (Christian Brabandt)
Solution:   Move the variable into a local block.
2016-03-18 19:39:25 +01:00
Kazuki Sakamoto 755e60ad59 Merge remote-tracking branch 'vim/master' 2016-03-17 21:31:35 -07:00
Bram Moolenaar 9e63f61cb0 patch 7.4.1589
Problem:    Combining dict and args with partial doesn't always work.
Solution:   Use the arguments from the partial.
2016-03-17 23:13:28 +01:00
Bram Moolenaar 1ff2b64b11 patch 7.4.1588
Problem:    Old style test for quickfix.
Solution:   Turn test 96 into a new style test.
2016-03-17 22:07:02 +01:00
Bram Moolenaar 1c8b4edb9b patch 7.4.1587
Problem:    Compiler warnings with 64 bit compiler.
Solution:   Add type casts. (Mike Williams)
2016-03-17 21:51:03 +01:00
Bram Moolenaar 8a1bb04637 patch 7.4.1586
Problem:    Nesting partials doesn't work.
Solution:   Append arguments. (Ken Takata)
2016-03-17 21:11:53 +01:00
Bram Moolenaar d22a18928e patch 7.4.1585
Problem:    Partial is not recognized everywhere.
Solution:   Check for partial in trans_function_name(). (Yasuhiro Matsumoto)
            Add a test.
2016-03-17 20:50:47 +01:00
Bram Moolenaar 0e0b3dd335 patch 7.4.1584
Problem:    Timers don't work for Win32 console.
Solution:   Add check_due_timer() in WaitForChar().
2016-03-17 17:58:56 +01:00
Kazuki Sakamoto 132af44e19 Merge remote-tracking branch 'vim/master' 2016-03-16 18:39:30 -07:00
Bram Moolenaar 597385ab43 patch 7.4.1583
Problem:    Warning for unitinialized variable.
Solution:   Initialize it. (Dominique)
2016-03-16 23:24:43 +01:00
Bram Moolenaar 6f2e4b36c9 patch 7.4.1582
Problem:    Get E923 when using function(dict.func, [], dict). (Kent Sibilev)
            Storing a function with a dict in a variable drops the dict if the
            function is script-local.
Solution:   Translate the function name.  Use dict arg if present.
2016-03-16 22:52:12 +01:00
Bram Moolenaar 65639032bb patch 7.4.1581
Problem:    Using ":call dict.func()" where the function is a partial does
            not work.  Using "dict.func()" where the function does not take a
            Dictionary does not work.
Solution:   Handle partial properly in ":call". (Yasuhiro Matsumoto)
2016-03-16 21:40:30 +01:00
Bram Moolenaar 7a5c46a9df patch 7.4.1580
Problem:    Crash when using function reference. (Luchr)
Solution:   Set initial refcount. (Ken Takata, closes #690)
2016-03-16 20:41:21 +01:00
Kazuki Sakamoto bdc8cf330a Merge remote-tracking branch 'vim/master' 2016-03-15 20:29:23 -07:00
Bram Moolenaar a3dc5e92dc patch 7.4.1579
Problem:    Missing changes in channel.c
Solution:   Include the changes.
2016-03-15 23:19:14 +01:00
Bram Moolenaar 975b5271ee patch 7.4.1578
Problem:    There is no way to invoke a function later or periodically.
Solution:   Add timer support.
2016-03-15 23:10:59 +01:00
Bram Moolenaar ab1fa3955f patch 7.4.1577
Problem:    Cannot pass "dict.Myfunc" around as a partial.
Solution:   Create a partial when expected.
2016-03-15 19:33:34 +01:00
Bram Moolenaar 927030af23 patch 7.4.1576
Problem:    Write error of viminfo file is not handled properly. (Christian
            Neukirchen)
Solution:   Check the return value of fclose(). (closes #682)
2016-03-15 18:23:55 +01:00
Bram Moolenaar 89e375a88f patch 7.4.1575
Problem:    Using wrong size for struct.
Solution:   Use the size for wide API. (Ken Takata)
2016-03-15 18:09:57 +01:00
Bram Moolenaar 8067a64852 Add missing test file. 2016-03-15 17:52:10 +01:00
Bram Moolenaar d22e9465f6 patch 7.4.1574
Problem:    ":undo 0" does not work. (Florent Fayolle)
Solution:   Make it undo all the way. (closes #688)
2016-03-15 17:43:55 +01:00
Bram Moolenaar ce2ec0a82a patch 7.4.1573
Problem:    Tests get stuck at the more prompt.
Solution:   Move the backspace test out of test_alot.
2016-03-15 17:10:19 +01:00
Bram Moolenaar 85a7cb4dcf patch 7.4.1572
Problem:    Setting 'compatible' in test influences following tests.
Solution:   Turn 'compatible' off again.
2016-03-15 16:53:26 +01:00
Bram Moolenaar 8e15ffcde7 patch 7.4.1571
Problem:    No test for ":help".
Solution:   Add a test for what 7.4.1568 fixed. (Higashi Higashi)
2016-03-15 16:35:39 +01:00
Bram Moolenaar 426dd02195 patch 7.4.1570
Problem:    There is no way to avoid the message when editing a file.
Solution:   Add the "F" flag to 'shortmess'. (Shougo, closes #686)
2016-03-15 15:09:29 +01:00
Bram Moolenaar e27dba499a patch 7.4.1569
Problem:    Using old style tests for quickfix.
Solution:   Change them to new style tests. (Yegappan Lakshmanan)
2016-03-15 14:11:10 +01:00
Bram Moolenaar 00f9e0dbbd patch 7.4.1568
Problem:    Using CTRL-] in help on option in parentheses doesn't work.
Solution:   Skip the "(" in "('". (Hirohito Higashi)
2016-03-15 13:44:12 +01:00
Bram Moolenaar 1abb502635 patch 7.4.1567
Problem:    Crash in assert_fails().
Solution:   Check for NULL. (Dominique Pelle)  Add a test.
2016-03-15 13:33:55 +01:00
Bram Moolenaar 4f118be2bb patch 7.4.1566
Problem:    Compiler warning for shadowed variable. (Kazunobu Kuriyama)
Solution:   Remove the inner one.
2016-03-15 13:09:53 +01:00
Bram Moolenaar f155196444 patch 7.4.1565
Problem:    Crash when assert_equal() runs into a NULL string.
Solution:   Check for NULL. (Dominique) Add a test.
2016-03-15 12:55:58 +01:00
Bram Moolenaar 346418c624 patch 7.4.1564
Problem:    An empty list in function() causes an error.
Solution:   Handle an empty list like there is no list of arguments.
2016-03-15 12:36:08 +01:00
Bram Moolenaar 790500a8e6 patch 7.4.1563
Problem:    Partial test fails on windows.
Solution:   Return 1 or -1 from compare function.
2016-03-15 11:05:45 +01:00
Kazuki Sakamoto bd8b60d261 Merge remote-tracking branch 'vim/master' 2016-03-14 19:50:31 -07:00
Bram Moolenaar 9eb3bb2930 patch 7.4.1562
Problem:    ":helptags ALL" crashes. (Lcd)
Solution:   Don't free twice.
2016-03-14 23:45:35 +01:00
Bram Moolenaar 39afdea203 patch 7.4.1561
Problem:    Missing update to proto file.
Solution:   Change the proto file.
2016-03-14 23:27:29 +01:00
Bram Moolenaar d6c2f05260 patch 7.4.1560
Problem:    Dict options with a dash are more difficult to use.
Solution:   Use an underscore, so that dict.err_io can be used.
2016-03-14 23:22:59 +01:00
Bram Moolenaar 1735bc988c patch 7.4.1559
Problem:    Passing cookie to a callback is clumsy.
Solution:   Change function() to take arguments and return a partial.
2016-03-14 23:05:14 +01:00
Kazuki Sakamoto b6f08f7872 Merge remote-tracking branch 'vim/master' 2016-03-13 22:36:28 -07:00
Bram Moolenaar 9cdf86b86f patch 7.4.1558
Problem:    It is not easy to find out what windows display a buffer.
Solution:   Add win_findbuf().
2016-03-13 19:04:51 +01:00
Bram Moolenaar 86edef664e patch 7.4.1557
Problem:    Windows cannot be identified.
Solution:   Add a unique window number to each window and functions to use it.
2016-03-13 18:07:30 +01:00
Bram Moolenaar a3442cb505 patch 7.4.1556
Problem:    "make install" changes the help tags file, causing it to differ
            from the repository.
Solution:   Move it aside and restore it.
2016-03-13 14:34:12 +01:00
Bram Moolenaar fff341eb59 patch 7.4.1555
Problem:    List of test targets incomplete.
Solution:   Add newly added tests.
2016-03-13 13:27:36 +01:00
Bram Moolenaar 52f9c19015 patch 7.4.1554
Problem:    Completion for :colorscheme does not use 'packpath'.
Solution:   Make it work, add a test. (Hirohito Higashi)
2016-03-13 13:24:45 +01:00
285 changed files with 14495 additions and 7011 deletions
+1
View File
@@ -78,6 +78,7 @@ src/testdir/dostmp/*
src/testdir/messages
src/testdir/viminfo
src/memfile_test
src/json_test
# From MacVim
.*.swp
+2 -2
View File
@@ -3,7 +3,7 @@ language: c
os:
- osx
osx_image: xcode7.2
osx_image: xcode7.3
compiler:
- clang
@@ -18,7 +18,7 @@ env:
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.5/Python
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
"CONFOPT='--with-features=huge --enable-multibyte --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
"CONFOPT='--with-features=huge --enable-multibyte --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-termtruecolor --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
sudo: false
+39 -6
View File
@@ -337,7 +337,6 @@ SRC_DOS = \
src/vimio.h \
src/gvim.exe.mnf \
src/vimrun.c \
src/vimtbar.h \
src/xpm_w32.c \
src/xpm_w32.h \
src/xxd/Make_bc5.mak \
@@ -375,7 +374,6 @@ SRC_DOS_BIN = \
src/tools.bmp \
src/vim*.ico \
src/vim.tlb \
src/vimtbar.lib \
src/xpm/COPYRIGHT \
src/xpm/README.txt \
src/xpm/include/*.h \
@@ -383,7 +381,6 @@ SRC_DOS_BIN = \
src/xpm/x64/lib/libXpm.lib \
src/xpm/x86/lib/libXpm.a \
src/xpm/x86/lib/libXpm.lib \
src/vimtbar.dll \
nsis/icons/*.bmp \
nsis/icons/*.ico \
@@ -483,7 +480,6 @@ RT_ALL = \
runtime/ftoff.vim \
runtime/gvimrc_example.vim \
runtime/macros/README.txt \
runtime/macros/dvorak \
runtime/macros/editexisting.vim \
runtime/macros/hanoi/click.me \
runtime/macros/hanoi/hanoi.vim \
@@ -495,7 +491,6 @@ RT_ALL = \
runtime/macros/life/click.me \
runtime/macros/life/life.vim \
runtime/macros/matchit.vim \
runtime/macros/matchit.txt \
runtime/macros/maze/README.txt \
runtime/macros/maze/[mM]akefile \
runtime/macros/maze/main.aap \
@@ -525,6 +520,16 @@ RT_ALL = \
runtime/tutor/tutor \
runtime/tutor/tutor.vim \
runtime/vimrc_example.vim \
runtime/pack/dist/opt/dvorak/plugin/dvorak.vim \
runtime/pack/dist/opt/dvorak/dvorak/enable.vim \
runtime/pack/dist/opt/dvorak/dvorak/disable.vim \
runtime/pack/dist/opt/editexisting/plugin/editexisting.vim \
runtime/pack/dist/opt/justify/plugin/justify.vim \
runtime/pack/dist/opt/matchit/plugin/matchit.vim \
runtime/pack/dist/opt/matchit/doc/matchit.txt \
runtime/pack/dist/opt/matchit/doc/tags \
runtime/pack/dist/opt/shellmenu/plugin/shellmenu.vim \
runtime/pack/dist/opt/swapmouse/plugin/swapmouse.vim \
# runtime files for all distributions without CR-NL translation
RT_ALL_BIN = \
@@ -605,7 +610,6 @@ RT_AMI = \
README.txt.info \
README_ami.txt \
README_ami.txt.info \
libs/arp.library \
runtime/doc.info \
runtime/doc/*.info \
runtime/icons/README.txt \
@@ -693,6 +697,35 @@ EXTRA = \
src/tee/Make_mvc.mak \
src/tee/tee.c \
# files in READMEdir that are included from the top dir
IN_README_DIR = \
README.txt.info \
README_ami.txt \
README_ami.txt.info \
README_amibin.txt \
README_amibin.txt.info \
README_amisrc.txt \
README_amisrc.txt.info \
README_bindos.txt \
README_dos.txt \
README_extra.txt \
README_mac.txt \
README_ole.txt \
README_os2.txt \
README_os390.txt \
README_src.txt \
README_srcdos.txt \
README_unix.txt \
README_vms.txt \
README_w32s.txt \
Contents \
Contents.info \
Vim.info \
Xxd.info \
runtime.info \
src.info \
vimdir.info \
# generic language files
LANG_GEN = \
runtime/doc/*-de.1 \
+18 -22
View File
@@ -213,24 +213,13 @@ MINOR = 4
# > bigvim64.bat
#
#
# OBSOLETE systems: You can build this if you have an appropriate system.
# OBSOLETE systems: You can build these if you have an appropriate system.
#
# 16 bit DOS version: (doesn't build anywhere)
# - Set environment for compiling with Borland C++ 3.1.
# - "bmake -f Make_bc3.mak BOR=E:\borlandc" (compiling xxd might fail, in that
# case set environment for compiling with Borland C++ 4.0 and do
# "make -f make_bc3.mak BOR=E:\BC4 xxd/xxd.exe").
# NOTE: this currently fails because Vim is too big.
# - "make test" and check the output.
# - Rename the executables to "vimd16.exe", "xxdd16.exe", "installd16.exe" and
# "uninstald16.exe".
# 16 bit DOS version: You need to get a very old version of Vim, for several
# years even the tiny build is too big to fit in DOS memory.
#
# 32 bit DOS version: (requires Windows XP or earlier)
# - Set environment for compiling with DJGPP; "gmake -f Make_djg.mak".
# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output for
# "ALL DONE".
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
# "uninstald32.exe".
# 32 bit DOS version: Support was removed in 7.4.1399. When syncing to before
# that it probably won't build.
#
# Win32s GUI version: (requires a very old compiler)
# - Set environment for Visual C++ 4.1 (requires a new console window):
@@ -242,12 +231,9 @@ MINOR = 4
# - Rename "uninstal.exe" to "uninstalw32.exe"
# - The produced uninstalw32.exe and vimrun.exe are used.
#
# OS/2: (requires an OS/2 system)
# - Unpack the Unix archive.
# - "make -f Make_os2.mak".
# - Rename the executables to vimos2.exe, xxdos2.exe and teeos2.exe and copy
# them to here.
# - "make os2bin".
# OS/2 support was removed in patch 7.4.1008. If you want to give it a try
# sync to before that and check the old version of this Makefile for
# instructions.
VIMVER = vim-$(MAJOR).$(MINOR)
VERSION = $(MAJOR)$(MINOR)
@@ -269,9 +255,13 @@ dist:
mkdir dist
# Clean up some files to avoid they are included.
# Copy README files to the top directory.
prepare:
if test -f runtime/doc/uganda.nsis.txt; then \
rm runtime/doc/uganda.nsis.txt; fi
for name in $(IN_README_DIR); do \
cp READMEdir/"$$name" .; \
done
# For the zip files we need to create a file with the comment line
dist/comment:
@@ -336,6 +326,7 @@ unixall: dist prepare
$(EXTRA) \
$(LANG_SRC) \
| (cd dist/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
# Need to use a "distclean" config.mk file
# Note: this file is not included in the repository to avoid problems, but it's
# OK to put it in the archive.
@@ -372,6 +363,7 @@ amirt: dist prepare
$(RT_NO_UNIX) \
$(RT_AMI_DOS) \
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
mv dist/Vim/$(VIMRTDIR)/runtime/* dist/Vim/$(VIMRTDIR)
@@ -392,6 +384,7 @@ amibin: dist prepare
Vim \
Xxd \
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
cd dist && tar cf vim$(VERSION)bin.tar Vim Vim.info
@@ -410,6 +403,7 @@ amisrc: dist prepare
$(SRC_AMI) \
$(SRC_AMI_DOS) \
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
cd dist && tar cf vim$(VERSION)src.tar Vim Vim.info
@@ -483,6 +477,7 @@ dosrt_files: dist prepare no_title.vim
$(RT_DOS_BIN) \
$(LANG_GEN_BIN) \
| (cd dist/vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
rmdir dist/vim/$(VIMRTDIR)/runtime
# Add the message translations. Trick: skip ja.mo and use ja.sjis.mo instead.
@@ -517,6 +512,7 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
tar cf - \
$(BIN_DOS) \
| (cd dist/vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
cp gvim.exe dist/vim/$(VIMRTDIR)/gvim.exe
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
+3 -121
View File
@@ -1,124 +1,6 @@
`README.md` for version 7.4 of Vim: Vi IMproved.
[![Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim)
[![Coverage Status](https://coveralls.io/repos/vim/vim/badge.svg?branch=master&service=github)](https://coveralls.io/github/vim/vim?branch=master)
[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim)
Vim - the text editor - for Mac OS X
- MacVim homepage http://macvim-dev.github.io/macvim
## What is Vim? ##
- Vim README https://github.com/macvim-dev/macvim/blob/master/README_vim.md
Vim is an almost compatible version of the UNIX editor Vi. Many new features
have been added: multi-level undo, syntax highlighting, command line history,
on-line help, spell checking, filename completion, block operations, etc.
There is also a Graphical User Interface (GUI) available. See
`runtime/doc/vi_diff.txt` for differences with Vi.
This editor is very useful for editing programs and other plain text files.
All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
defined by the user, and the mouse can be used.
Vim runs under MS-DOS, MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh,
VMS and almost all flavours of UNIX. Porting to other systems should not be
very difficult. Older versions of Vim run on MS-Windows 95/98/Me, Amiga DOS,
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
## Distribution ##
You can often use your favorite package manager to install Vim. On Mac and
Linux a small version of Vim is pre-installed, you still need to install Vim
if you want more features.
There are separate distributions for Unix, PC, Amiga and some other systems.
This `README.md` file comes with the runtime archive. It includes the
documentation, syntax files and other files that are used at runtime. To run
Vim you must get either one of the binary archives or a source archive.
Which one you need depends on the system you want to run it on and whether you
want or must compile it yourself. Check http://www.vim.org/download.php for
an overview of currently available distributions.
## Documentation ##
The vim tutor is a one hour training course for beginners. Mostly it can be
started as `vimtutor`. See `:help tutor` for more information.
The best is to use `:help` in Vim. If you don't have an executable yet, read
`runtime/doc/help.txt`. It contains pointers to the other documentation
files. The User Manual reads like a book and is recommended to learn to use
Vim. See `:help user-manual`.
## Copying ##
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation to help orphans in Uganda. Please read the file
`runtime/doc/uganda.txt` for details (do `:help uganda` inside Vim).
Summary of the license: There are no restrictions on using or distributing an
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
text must always be included. For modified versions a few restrictions apply.
The license is GPL compatible, you may compile Vim with GPL libraries and
distribute it.
## Sponsoring ##
Fixing bugs and adding new features takes a lot of time and effort. To show
your appreciation for the work and motivate Bram and others to continue
working on Vim please send a donation.
Since Bram is back to a paid job the money will now be used to help children
in Uganda. See `runtime/doc/uganda.txt`. But at the same time donations
increase Bram's motivation to keep working on Vim!
For the most recent information about sponsoring look on the Vim web site:
http://www.vim.org/sponsor/
## Compiling ##
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
`src` directory. See `src/INSTALL` for instructions.
## Installation ##
See one of these files for system-specific instructions:
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_vms.txt VMS
There are more `README_*.txt` files, depending on the distribution you used.
## Contributing ##
If you would like to help making Vim better, see the [CONTRIBUTING.md](https://github.com/vim/vim/blob/master/CONTRIBUTING.md) file.
## Information ##
The latest news about Vim can be found on the Vim home page:
http://www.vim.org/
If you have problems, have a look at the Vim documentation or tips:
http://www.vim.org/docs.php
http://vim.wikia.com/wiki/Vim_Tips_Wiki
If you still have problems or any other questions, use one of the mailing
lists to discuss them with Vim users and developers:
http://www.vim.org/maillist.php
If nothing else works, report bugs directly:
Bram Moolenaar <Bram@vim.org>
## Main author ##
Send any other comments, patches, flowers and suggestions to:
Bram Moolenaar <Bram@vim.org>
+43 -27
View File
@@ -3,21 +3,23 @@ README.txt for version 7.4 of Vim: Vi IMproved.
WHAT IS VIM?
Vim is an almost compatible version of the UNIX editor Vi. Many new features
have been added: multi-level undo, syntax highlighting, command line history,
on-line help, spell checking, filename completion, block operations, etc.
There is also a Graphical User Interface (GUI) available. See
"runtime/doc/vi_diff.txt" for differences with Vi.
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
features have been added: multi-level undo, syntax highlighting, command line
history, on-line help, spell checking, filename completion, block operations,
script language, etc. There is also a Graphical User Interface (GUI)
available. Still, Vi compatibility is maintained, those who have Vi "in the
fingers" will feel at home. See "runtime/doc/vi_diff.txt" for differences with
Vi.
This editor is very useful for editing programs and other plain text files.
All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
defined by the user, and the mouse can be used.
mapped to commands by the user, and the mouse can be used.
Vim runs under MS-DOS, MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh,
VMS and almost all flavours of UNIX. Porting to other systems should not be
very difficult. Older versions of Vim run on MS-Windows 95/98/Me, Amiga DOS,
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
almost all flavours of UNIX. Porting to other systems should not be very
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
DISTRIBUTION
@@ -34,10 +36,38 @@ Which one you need depends on the system you want to run it on and whether you
want or must compile it yourself. Check "http://www.vim.org/download.php" for
an overview of currently available distributions.
Some popular places to get the latest Vim:
* Check out the git repository from github: https://github.com/vim/vim.
* Get the source code as an archive: https://github.com/vim/vim/releases.
* Get a Windows executable from the vim-win32-installer repository:
https://github.com/vim/vim-win32-installer/releases.
COMPILING
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
"src" directory. See src/INSTALL for instructions.
INSTALLATION
See one of these files for system-specific instructions. Either in the
READMEdir directory (in the repository) or the top directory (if you unpack an
archive):
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_vms.txt VMS
There are more README_*.txt files, depending on the distribution you used.
DOCUMENTATION
The vim tutor is a one hour training course for beginners. Mostly it can be
The Vim tutor is a one hour training course for beginners. Often it can be
started as "vimtutor". See ":help tutor" for more information.
The best is to use ":help" in Vim. If you don't have an executable yet, read
@@ -74,23 +104,9 @@ For the most recent information about sponsoring look on the Vim web site:
http://www.vim.org/sponsor/
COMPILING
CONTRIBUTING
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
"src" directory. See src/INSTALL for instructions.
INSTALLATION
See one of these files for system-specific instructions:
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_vms.txt VMS
There are more README_*.txt files, depending on the distribution you used.
If you would like to help making Vim better, see the CONTRIBUTING.md file.
INFORMATION
+136
View File
@@ -0,0 +1,136 @@
`README.md` for version 7.4 of Vim: Vi IMproved.
[![Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim)
[![Coverage Status](https://coveralls.io/repos/vim/vim/badge.svg?branch=master&service=github)](https://coveralls.io/github/vim/vim?branch=master)
[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim)
[![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim)
## What is Vim? ##
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
features have been added: multi-level undo, syntax highlighting, command line
history, on-line help, spell checking, filename completion, block operations,
script language, etc. There is also a Graphical User Interface (GUI)
available. Still, Vi compatibility is maintained, those who have Vi "in the
fingers" will feel at home. See `runtime/doc/vi_diff.txt` for differences with
Vi.
This editor is very useful for editing programs and other plain text files.
All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
mapped to commands by the user, and the mouse can be used.
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
almost all flavours of UNIX. Porting to other systems should not be very
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
## Distribution ##
You can often use your favorite package manager to install Vim. On Mac and
Linux a small version of Vim is pre-installed, you still need to install Vim
if you want more features.
There are separate distributions for Unix, PC, Amiga and some other systems.
This `README.md` file comes with the runtime archive. It includes the
documentation, syntax files and other files that are used at runtime. To run
Vim you must get either one of the binary archives or a source archive.
Which one you need depends on the system you want to run it on and whether you
want or must compile it yourself. Check http://www.vim.org/download.php for
an overview of currently available distributions.
Some popular places to get the latest Vim:
* Check out the git repository from [github](https://github.com/vim/vim).
* Get the source code as an [archive](https://github.com/vim/vim/releases).
* Get a Windows executable from the
[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases) repository.
## Compiling ##
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
`src` directory. See `src/INSTALL` for instructions.
## Installation ##
See one of these files for system-specific instructions. Either in the
READMEdir directory (in the repository) or the top directory (if you unpack an
archive):
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_mac.txt Macintosh
README_vms.txt VMS
There are other `README_*.txt` files, depending on the distribution you used.
## Documentation ##
The Vim tutor is a one hour training course for beginners. Often it can be
started as `vimtutor`. See `:help tutor` for more information.
The best is to use `:help` in Vim. If you don't have an executable yet, read
`runtime/doc/help.txt`. It contains pointers to the other documentation
files. The User Manual reads like a book and is recommended to learn to use
Vim. See `:help user-manual`.
## Copying ##
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation to help orphans in Uganda. Please read the file
`runtime/doc/uganda.txt` for details (do `:help uganda` inside Vim).
Summary of the license: There are no restrictions on using or distributing an
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
text must always be included. For modified versions a few restrictions apply.
The license is GPL compatible, you may compile Vim with GPL libraries and
distribute it.
## Sponsoring ##
Fixing bugs and adding new features takes a lot of time and effort. To show
your appreciation for the work and motivate Bram and others to continue
working on Vim please send a donation.
Since Bram is back to a paid job the money will now be used to help children
in Uganda. See `runtime/doc/uganda.txt`. But at the same time donations
increase Bram's motivation to keep working on Vim!
For the most recent information about sponsoring look on the Vim web site:
http://www.vim.org/sponsor/
## Contributing ##
If you would like to help making Vim better, see the [CONTRIBUTING.md](https://github.com/vim/vim/blob/master/CONTRIBUTING.md) file.
## Information ##
The latest news about Vim can be found on the Vim home page:
http://www.vim.org/
If you have problems, have a look at the Vim documentation or tips:
http://www.vim.org/docs.php
http://vim.wikia.com/wiki/Vim_Tips_Wiki
If you still have problems or any other questions, use one of the mailing
lists to discuss them with Vim users and developers:
http://www.vim.org/maillist.php
If nothing else works, report bugs directly:
Bram Moolenaar <Bram@vim.org>
## Main author ##
Send any other comments, patches, flowers and suggestions to:
Bram Moolenaar <Bram@vim.org>
+2 -2
View File
@@ -9,7 +9,7 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
messages, shows current file name in window title, on-line
help, rectangular cut/paste, etc., etc., etc...
Version 7.4. Also runs under UNIX, MSDOS and other systems.
Version 7.4. Also runs under UNIX, MS-Windows, Mac, etc.
vim74rt.tgz contains the documentation and syntax files.
vim74bin.tgz contains the binaries.
vim74src.tgz contains the sources.
@@ -19,5 +19,5 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
Xxd Hex dumper and reader. Can be used to view files as hex, edit
them and write them back. Can also be used to patch files.
Version 1.8 (1997 May 22)
Version 1.10 (1997 May 22)
Author: Juergen Weigert
View File
View File
View File
View File
View File
Executable → Regular
View File
Executable → Regular
View File
View File
Executable → Regular
View File
View File
BIN
View File
Binary file not shown.
+22
View File
@@ -215,6 +215,28 @@ Section "Vim executables and runtime files"
SetOutPath $0\macros
File ${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\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\plugin
File ${VIMRT}\plugin\*.*
+243 -259
View File
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -1,9 +1,9 @@
" vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr.
" Date: Jan 17, 2012
" Version: 35
" Author: Charles E. Campbell
" Date: Apr 11, 2016
" Version: 37
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.
" Copyright: (c) 2004-2011 by Charles E. Campbell
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
" (see |copyright|) except use "Vimball" instead of "Vim".
" No warranty, express or implied.
@@ -14,7 +14,7 @@
if &cp || exists("g:loaded_vimball")
finish
endif
let g:loaded_vimball = "v35"
let g:loaded_vimball = "v37"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of vimball needs vim 7.2"
@@ -142,7 +142,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
let lastline= line("$") + 1
if lastline == 2 && getline("$") == ""
call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
call setline(1,'" Vimball Archiver by Charles E. Campbell')
call setline(2,'UseVimball')
call setline(3,'finish')
let lastline= line("$") + 1
@@ -179,7 +179,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
" remove the evidence
setlocal nomod bh=wipe
exe "tabn ".curtabnr
exe "tabc ".vbtabnr
exe "tabc! ".vbtabnr
" restore options
call vimball#RestoreSettings()
@@ -280,7 +280,7 @@ fun! vimball#Vimball(really,...)
" when AsNeeded/filename is filereadable or was present in VimballRecord
if fname =~ '\<plugin/'
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~ anfname)
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
" call Decho("using anfname<".anfname."> instead of <".fname.">")
let fname= anfname
endif
@@ -379,10 +379,10 @@ fun! vimball#Vimball(really,...)
call s:RecordInFile(home)
" restore events, delete tab and buffer
exe "tabn ".vbtabnr
exe "sil! tabn ".vbtabnr
setlocal nomod bh=wipe
exe "tabn ".curtabnr
exe "tabc ".vbtabnr
exe "sil! tabn ".curtabnr
exe "sil! tabc! ".vbtabnr
call vimball#RestoreSettings()
call s:ChgDir(curdir)
@@ -555,7 +555,7 @@ fun! vimball#ShowMesg(level,msg)
set noruler noshowcmd
redraw!
if &fo =~ '[ta]'
if &fo =~# '[ta]'
echomsg "***vimball*** ".a:msg
else
if a:level == s:WARNING || a:level == s:USAGE
@@ -715,7 +715,7 @@ fun! vimball#SaveSettings()
" call Dfunc("SaveSettings()")
let s:makeep = getpos("'a")
let s:regakeep= @a
if exists("&acd")
if exists("+acd")
let s:acdkeep = &acd
endif
let s:eikeep = &ei
@@ -728,7 +728,7 @@ fun! vimball#SaveSettings()
let s:vekeep = &ve
let s:ffkeep = &l:ff
let s:swfkeep = &l:swf
if exists("&acd")
if exists("+acd")
setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
else
setlocal ei=all ve=all nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
@@ -743,7 +743,7 @@ endfun
fun! vimball#RestoreSettings()
" call Dfunc("RestoreSettings()")
let @a = s:regakeep
if exists("&acd")
if exists("+acd")
let &acd = s:acdkeep
endif
let &l:fen = s:fenkeep
@@ -760,7 +760,7 @@ fun! vimball#RestoreSettings()
" call Decho("restore mark-a: makeep=".string(makeep))
call setpos("'a",s:makeep)
endif
if exists("&acd")
if exists("+acd")
unlet s:acdkeep
endif
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
+2
View File
@@ -2,6 +2,7 @@
" Compiler: GNU C Compiler
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
" added line suggested by Anton Lindqvist 2016 Mar 31
if exists("current_compiler")
finish
@@ -24,6 +25,7 @@ CompilerSet errorformat=
\%f:%l:\ %trror:\ %m,
\%f:%l:\ %tarning:\ %m,
\%f:%l:\ %m,
\%f:\\(%*[^\\)]\\):\ %m,
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ [`']%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ [`']%f',
+5 -5
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: HTML Tidy
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2013 Jul 7
" Last Change: 2016 Apr 21
if exists("current_compiler")
finish
@@ -12,8 +12,8 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %
CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %:S
" sample warning: foo.html:8:1: Warning: inserting missing 'foobar' element
" sample error: foo.html:9:2: Error: <foobar> is not recognized!
CompilerSet errorformat=%f:%l:%c:\ Error:%m,%f:%l:%c:\ Warning:%m,%-G%.%#
" foo.html:8:1: Warning: inserting missing 'foobar' element
" foo.html:9:2: Error: <foobar> is not recognized!
CompilerSet errorformat=%f:%l:%c:\ %trror:%m,%f:%l:%c:\ %tarning:%m,%-G%.%#
+2
View File
@@ -142,6 +142,7 @@ DOCS = \
version5.txt \
version6.txt \
version7.txt \
version8.txt \
vi_diff.txt \
visual.txt \
windows.txt \
@@ -275,6 +276,7 @@ HTMLS = \
version5.html \
version6.html \
version7.html \
version8.html \
vi_diff.html \
vimindex.html \
visual.html \
+13 -2
View File
@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.4. Last change: 2015 Dec 05
*autocmd.txt* For Vim version 7.4. Last change: 2016 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -539,6 +539,9 @@ CursorHold When the user doesn't press a key for the time
versions}
*CursorHoldI*
CursorHoldI Just like CursorHold, but in Insert mode.
Not triggered when waiting for another key,
e.g. after CTRL-V, and not when in CTRL-X mode
|insert_expand|.
*CursorMoved*
CursorMoved After the cursor was moved in Normal or Visual
@@ -918,7 +921,15 @@ VimEnter After doing all the startup stuff, including
loading .vimrc files, executing the "-c cmd"
arguments, creating all windows and loading
the buffers in them.
*VimLeave*
Just before this event is triggered the
|v:vim_did_enter| variable is set, so that you
can do: >
if v:vim_did_enter
call s:init()
else
au VimEnter * call s:init()
endif
< *VimLeave*
VimLeave Before exiting Vim, just after writing the
.viminfo file. Executed only once, like
VimLeavePre.
+3 -3
View File
@@ -1,4 +1,4 @@
*change.txt* For Vim version 7.4. Last change: 2016 Mar 08
*change.txt* For Vim version 7.4. Last change: 2016 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -852,7 +852,7 @@ Examples: >
:s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines)
:s/$/\^M/ modifies "abcde" to "abcde^M"
:s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla"
:s/\w\+/\L\u/g modifies "BLA bla" to "Bla Bla"
:s/\w\+/\L\u\0/g modifies "BLA bla" to "Bla Bla"
Note: "\L\u" can be used to capitalize the first letter of a word. This is
not compatible with Vi and older versions of Vim, where the "\u" would cancel
@@ -1205,7 +1205,7 @@ name '"'. This means you have to type two double quotes. Writing to the ""
register writes to register "0.
{Vi: register contents are lost when changing files, no '"'}
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
*quote2* *quote3* *quote4* *quote9*
Vim fills these registers with text from yank and delete commands.
Numbered register 0 contains the text from the most recent yank command,
+133 -82
View File
@@ -1,4 +1,4 @@
*channel.txt* For Vim version 7.4. Last change: 2016 Mar 12
*channel.txt* For Vim version 7.4. Last change: 2016 Apr 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -120,25 +120,14 @@ Use |ch_status()| to see if the channel could be opened.
{address} has the form "hostname:port". E.g., "localhost:8765".
{options} is a dictionary with optional entries:
{options} is a dictionary with optional entries: *channel-open-options*
"mode" can be: *channel-mode*
"json" - Use JSON, see below; most convenient way. Default.
"js" - Use JS (JavaScript) encoding, more efficient than JSON.
"nl" - Use messages that end in a NL character
"raw" - Use raw messages
"in-mode" mode specifically for stdin, only when using pipes
"out-mode" mode specifically for stdout, only when using pipes
"err-mode" mode specifically for stderr, only when using pipes
Note: when setting "mode" the part specific mode is
overwritten. Therefore set "mode" first and the part specific
mode later.
Note: when writing to a file or buffer and when reading from a
buffer NL mode is used by default.
*channel-callback*
*channel-callback* *E921*
"callback" A function that is called when a message is received that is
not handled otherwise. It gets two arguments: the channel
and the received message. Example: >
@@ -153,17 +142,12 @@ Use |ch_status()| to see if the channel could be opened.
excluding the NL.
When "mode" is "raw" the "msg" argument is the whole message
as a string.
*out-cb*
"out-cb" A function like "callback" but used for stdout. Only for when
the channel uses pipes. When "out-cb" wasn't set the channel
callback is used.
*err-cb*
"err-cb" A function like "callback" but used for stderr. Only for when
the channel uses pipes. When "err-cb" wasn't set the channel
callback is used.
*close-cb*
"close-cb" A function that is called when the channel gets closed, other
For all callbacks: Use |function()| to bind it to arguments
and/or a Dictionary. Or use the form "dict.function" to bind
the Dictionary.
*close_cb*
"close_cb" A function that is called when the channel gets closed, other
than by calling ch_close(). It should be defined like this: >
func MyCloseHandler(channel)
< *waittime*
@@ -175,16 +159,10 @@ Use |ch_status()| to see if the channel could be opened.
actually uses a 1 msec timeout, that is required on many
systems. Use a larger value for a remote server, e.g. 10
msec at least.
*channel-timeout*
"timeout" The time to wait for a request when blocking, E.g. when using
ch_evalexpr(). In milliseconds. The default is 2000 (2
seconds).
*out-timeout* *err-timeout*
"out-timeout" Timeout for stdout. Only when using pipes.
"err-timeout" Timeout for stderr. Only when using pipes.
Note: when setting "timeout" the part specific mode is
overwritten. Therefore set "timeout" first and the part
specific mode later.
When "mode" is "json" or "js" the "callback" is optional. When omitted it is
only possible to receive a message after sending one.
@@ -212,13 +190,20 @@ pipes are used (stdin/stdout/stderr) they are all closed. This might not be
what you want! Stopping the job with job_stop() might be better.
All readahead is discarded, callbacks will no longer be invoked.
Note that a channel is closed in three stages:
- The I/O ends, log message: "Closing channel". There can still be queued
messages to read or callbacks to invoke.
- The readahead is cleared, log message: "Clearing channel". Some variables
may still reference the channel.
- The channel is freed, log message: "Freeing channel".
When the channel can't be opened you will get an error message. There is a
difference between MS-Windows and Unix: On Unix when the port doesn't exist
ch_open() fails quickly. On MS-Windows "waittime" applies.
*E898* *E899* *E900* *E901* *E902*
*E898* *E901* *E902*
If there is an error reading or writing a channel it will be closed.
*E896* *E630* *E631*
*E630* *E631*
==============================================================================
4. Using a JSON or JS channel *channel-use*
@@ -323,6 +308,9 @@ completion or error. You could use functions in an |autoload| script:
You can also use "call |feedkeys()|" to insert any key sequence.
When there is an error a message is written to the channel log, if it exists,
and v:errmsg is set to the error.
Command "normal" ~
@@ -408,6 +396,7 @@ To obtain the status of a channel: ch_status(channel). The possible results
are:
"fail" Failed to open the channel.
"open" The channel can be used.
"buffered" The channel was closed but there is data to read.
"closed" The channel was closed.
To obtain the job associated with a channel: ch_getjob(channel)
@@ -425,6 +414,23 @@ To read all output from a RAW channel that is available: >
To read the error output: >
let output = ch_readraw(channel, {"part": "err"})
ch_read() and ch_readraw() use the channel timeout. When there is nothing to
read within that time an empty string is returned. To specify a different
timeout in msec use the "timeout" option:
{"timeout": 123} ~
To read from the error output use the "part" option:
{"part": "err"} ~
To read a message with a specific ID, on a JS or JSON channel:
{"id": 99} ~
When no ID is specified or the ID is -1, the first message is returned. This
overrules any callback waiting for this message.
For a RAW channel this returns whatever is available, since Vim does not know
where a message ends.
For a NL channel this returns one message.
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*
@@ -440,18 +446,18 @@ been received and not parsed correctly.
If the command produces a line of output that you want to deal with, specify
a handler for stdout: >
let job = job_start(command, {"out-cb": "MyHandler"})
let job = job_start(command, {"out_cb": "MyHandler"})
The function will be called with the channel and a message. You would define
it like this: >
func MyHandler(channel, msg)
Without the handler you need to read the output with |ch_read()| or
|ch_readraw()|.
|ch_readraw()|. You can do this in the close callback, see |read-in-close-cb|.
The handler defined for "out-cb" will not receive stderr. If you want to
handle that separately, add an "err-cb" handler: >
let job = job_start(command, {"out-cb": "MyHandler",
\ "err-cb": "ErrHandler"})
The handler defined for "out_cb" will not receive stderr. If you want to
handle that separately, add an "err_cb" handler: >
let job = job_start(command, {"out_cb": "MyHandler",
\ "err_cb": "ErrHandler"})
If you want to handle both stderr and stdout with one handler use the
"callback" option: >
@@ -463,7 +469,7 @@ JSON or JS mode you can use ch_evalexpr().
There are several options you can use, see |job-options|.
For example, to start a job and write its output in buffer "dummy": >
let logjob = job_start("tail -f /tmp/log",
\ {'out-io': 'buffer', 'out-name': 'dummy'})
\ {'out_io': 'buffer', 'out_name': 'dummy'})
sbuf dummy
@@ -471,26 +477,41 @@ Job input from a buffer ~
To run a job that reads from a buffer: >
let job = job_start({command},
\ {'in-io': 'buffer', 'in-name': 'mybuffer'})
\ {'in_io': 'buffer', 'in_name': 'mybuffer'})
<
*E915* *E918*
The buffer is found by name, similar to |bufnr()|. The buffer must exist and
be loaded when job_start() is called.
By default this reads the whole buffer. This can be changed with the "in-top"
and "in-bot" options.
By default this reads the whole buffer. This can be changed with the "in_top"
and "in_bot" options.
A special mode is when "in-top" is set to zero and "in-bot" is not set: Every
A special mode is when "in_top" is set to zero and "in_bot" is not set: Every
time a line is added to the buffer, the last-but-one line will be send to the
job stdin. This allows for editing the last line and sending it when pressing
Enter.
Reading job output in the close callback ~
*read-in-close-cb*
If the job can take some time and you don't need intermediate results, you can
add a close callback and read the output there: >
func! CloseHandler(channel)
while ch_status(a:channel) == 'buffered'
echomsg ch_read(a:channel)
endwhile
endfunc
let job = job_start(command, {'close_cb': 'CloseHandler'})
You will want to do something more useful than "echomsg".
==============================================================================
9. Starting a job without a channel *job-start-nochannel*
To start another process without creating a channel: >
let job = job_start(command,
\ {"in-io": "null", "out-io": "null", "err-io": "null"})
\ {"in_io": "null", "out_io": "null", "err_io": "null"})
This starts {command} in the background, Vim does not wait for it to finish.
@@ -521,24 +542,51 @@ job_setoptions(job, {options}). Many options can be used with the channel
related to the job, using ch_setoptions(channel, {options}).
See |job_setoptions()| and |ch_setoptions()|.
*in_mode* *out_mode* *err_mode*
"in_mode" mode specifically for stdin, only when using pipes
"out_mode" mode specifically for stdout, only when using pipes
"err_mode" mode specifically for stderr, only when using pipes
See |channel-mode| for the values.
Note: when setting "mode" the part specific mode is
overwritten. Therefore set "mode" first and the part
specific mode later.
Note: when writing to a file or buffer and when
reading from a buffer NL mode is used by default.
*job-callback*
"callback": handler Callback for something to read on any part of the
channel.
*job-out-cb*
"out-cb": handler Callback for when there is something to read on
stdout.
*job-err-cb*
"err-cb": handler Callback for when there is something to read on
stderr.
*job-close-cb*
"close-cb": handler Callback for when the channel is closed. Same as
"close-cb" on ch_open().
*job-exit-cb*
"exit-cb": handler Callback for when the job ends. The arguments are the
*job-out_cb* *out_cb*
"out_cb": handler Callback for when there is something to read on
stdout. Only for when the channel uses pipes. When
"out_cb" wasn't set the channel callback is used.
*job-err_cb* *err_cb*
"err_cb": handler Callback for when there is something to read on
stderr. Only for when the channel uses pipes. When
"err_cb" wasn't set the channel callback is used.
*job-close_cb*
"close_cb": handler Callback for when the channel is closed. Same as
"close_cb" on ch_open().
*job-exit_cb*
"exit_cb": handler Callback for when the job ends. The arguments are the
job and the exit status.
Vim checks about every 10 seconds for jobs that ended.
The callback can also be triggered by calling
|job_status()|.
*job-timeout*
"timeout" The time to wait for a request when blocking, E.g.
when using ch_evalexpr(). In milliseconds. The
default is 2000 (2 seconds).
*out_timeout* *err_timeout*
"out_timeout" Timeout for stdout. Only when using pipes.
"err_timeout" Timeout for stderr. Only when using pipes.
Note: when setting "timeout" the part specific mode is
overwritten. Therefore set "timeout" first and the
part specific mode later.
*job-stoponexit*
"stoponexit": {signal} Send {signal} to the job when Vim exits. See
|job_stop()| for possible values.
@@ -557,37 +605,40 @@ See |job_setoptions()| and |ch_setoptions()|.
cause I/O errors.
Existing callbacks and other settings remain.
*job-in-io* *in-top* *in-bot* *in-name* *in-buf*
"in-io": "null" disconnect stdin (read from /dev/null)
"in-io": "pipe" stdin is connected to the channel (default)
"in-io": "file" stdin reads from a file
"in-io": "buffer" stdin reads from a buffer
"in-top": number when using "buffer": first line to send (default: 1)
"in-bot": number when using "buffer": last line to send (default: last)
"in-name": "/path/file" the name of the file or buffer to read from
"in-buf": number the number of the buffer to read from
*job-in_io* *in_top* *in_bot* *in_name* *in_buf*
"in_io": "null" disconnect stdin (read from /dev/null)
"in_io": "pipe" stdin is connected to the channel (default)
"in_io": "file" stdin reads from a file
"in_io": "buffer" stdin reads from a buffer
"in_top": number when using "buffer": first line to send (default: 1)
"in_bot": number when using "buffer": last line to send (default: last)
"in_name": "/path/file" the name of the file or buffer to read from
"in_buf": number the number of the buffer to read from
*job-out-io* *out-name* *out-buf*
"out-io": "null" disconnect stdout (goes to /dev/null)
"out-io": "pipe" stdout is connected to the channel (default)
"out-io": "file" stdout writes to a file
"out-io": "buffer" stdout appends to a buffer
"out-name": "/path/file" the name of the file or buffer to write to
"out-buf": number the number of the buffer to write to
*job-out_io* *out_name* *out_buf*
"out_io": "null" disconnect stdout (goes to /dev/null)
"out_io": "pipe" stdout is connected to the channel (default)
"out_io": "file" stdout writes to a file
"out_io": "buffer" stdout appends to a buffer
"out_name": "/path/file" the name of the file or buffer to write to
"out_buf": number the number of the buffer to write to
*job-err-io* *err-name* *err-buf*
"err-io": "out" stderr messages to go to stdout
"err-io": "null" disconnect stderr (goes to /dev/null)
"err-io": "pipe" stderr is connected to the channel (default)
"err-io": "file" stderr writes to a file
"err-io": "buffer" stderr appends to a buffer
"err-name": "/path/file" the name of the file or buffer to write to
"err-buf": number the number of the buffer to write to
*job-err_io* *err_name* *err_buf*
"err_io": "out" stderr messages to go to stdout
"err_io": "null" disconnect stderr (goes to /dev/null)
"err_io": "pipe" stderr is connected to the channel (default)
"err_io": "file" stderr writes to a file
"err_io": "buffer" stderr appends to a buffer
"err_name": "/path/file" the name of the file or buffer to write to
"err_buf": number the number of the buffer to write to
"block_write": number only for testing: pretend every other write to stdin
will block
Writing to a buffer ~
When the out-io or err-io mode is "buffer" and there is a callback, the text
When the out_io or err_io mode is "buffer" and there is a callback, the text
is appended to the buffer before invoking the callback.
When a buffer is used both for input and output, the output lines are put
@@ -614,7 +665,7 @@ Undo is synced for every added line.
Writing to a file ~
*E920*
The file is created with permissions 600 (read-write for the user, not
accessible for others). Use |setfperm()| to change this.
+3 -3
View File
@@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.4. Last change: 2016 Feb 16
*editing.txt* For Vim version 7.4. Last change: 2016 Mar 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -393,7 +393,7 @@ These are the common ones:
To avoid the special meaning of the wildcards prepend a backslash. However,
on MS-Windows the backslash is a path separator and "path\[abc]" is still seen
as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this
is to use "path\[[]abc]". Then the file "path[abc]" literally.
is to use "path\[[]abc]", this matches the file "path\[abc]".
*starstar-wildcard*
Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems.
@@ -1221,7 +1221,7 @@ Examples: >
If you want to always use ":confirm", set the 'confirm' option.
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
*:browse* *:bro* *E338* *E614* *E615* *E616*
:bro[wse] {command} Open a file selection dialog for an argument to
{command}. At present this works for |:e|, |:w|,
|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
+631 -380
View File
File diff suppressed because it is too large Load Diff
+36 -1
View File
@@ -1,4 +1,4 @@
*filetype.txt* For Vim version 7.4. Last change: 2015 Dec 06
*filetype.txt* For Vim version 7.4. Last change: 2016 Apr 30
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -586,6 +586,41 @@ folding style instead. For example: >
autocmd FileType man setlocal foldmethod=indent foldenable
MANPAGER *manpager.vim*
The :Man command allows you to turn Vim into a manpager (that syntax highlights
manpages and follows linked manpages on hitting CTRL-]).
Works on:
- Linux
- Mac OS
- FreeBSD
- Cygwin
- Win 10 under Bash
Untested:
- Amiga OS
- BeOS
- OS/2
For bash,zsh,ksh or dash by adding to the config file (.bashrc,.zshrc, ...)
export MANPAGER="env MAN_PN=1 vim -M +MANPAGER -"
For (t)csh by adding to the config file
setenv MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
For fish by adding to the config file
set -x MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
If man sets the $MAN_PN environment variable, like man-db, the most common
implementation on Linux and Mac OS, then the "env MAN_PN=1 " part above is
superfluous.
PDF *ft-pdf-plugin*
Two maps, <C-]> and <C-T>, are provided to simulate a tag stack for navigating
+2 -2
View File
@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 7.4. Last change: 2014 Mar 08
*gui_x11.txt* For Vim version 7.4. Last change: 2016 Apr 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -314,7 +314,7 @@ If a name is used that exists on other systems, but not in X11, the default
"arrow" pointer is used.
==============================================================================
5. GTK version *gui-gtk* *GTK+* *GTK*
5. GTK version *gui-gtk* *GTK+* *GTK* *GTK3*
The GTK version of the GUI works a little bit different.
+2 -1
View File
@@ -1,4 +1,4 @@
*help.txt* For Vim version 7.4. Last change: 2016 Feb 27
*help.txt* For Vim version 7.4. Last change: 2016 Mar 31
VIM - main help file
k
@@ -179,6 +179,7 @@ Versions ~
|version5.txt| Differences between Vim version 4.6 and 5.x
|version6.txt| Differences between Vim version 5.7 and 6.x
|version7.txt| Differences between Vim version 6.4 and 7.x
|version8.txt| Differences between Vim version 7.4 and 8.x
*sys-file-list*
Remarks about specific systems ~
|os_390.txt| OS/390 Unix
+13 -2
View File
@@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 7.4. Last change: 2014 Sep 19
*helphelp.txt* For Vim version 7.4. Last change: 2016 Apr 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -197,6 +197,9 @@ command: >
*E154* *E150* *E151* *E152* *E153* *E670*
:helpt[ags] [++t] {dir}
Generate the help tags file(s) for directory {dir}.
When {dir} is ALL then all "doc" directories in
'runtimepath' will be used.
All "*.txt" and "*.??x" files in the directory and
sub-directories are scanned for a help tag definition
in between stars. The "*.??x" files are for
@@ -205,9 +208,11 @@ command: >
sorted.
When there are duplicates an error message is given.
An existing tags file is silently overwritten.
The optional "++t" argument forces adding the
"help-tags" tag. This is also done when the {dir} is
equal to $VIMRUNTIME/doc.
To rebuild the help tags in the runtime directory
(requires write permission there): >
:helptags $VIMRUNTIME/doc
@@ -258,7 +263,9 @@ The second one finds the English user manual, even when 'helplang' is set to
When using command-line completion for the ":help" command, the "@en"
extension is only shown when a tag exists for multiple languages. When the
tag only exists for English "@en" is omitted.
tag only exists for English "@en" is omitted. When the first candidate has an
"@ab" extension and it matches the first language in 'helplang' "@ab" is also
omitted.
When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
find the tag in the same language. If not found then 'helplang' will be used
@@ -315,6 +322,10 @@ aligned on a line.
When referring to an existing help tag and to create a hot-link, place the
name between two bars (|) eg. |help-writing|.
When referring to a Vim command and to create a hot-link, place the
name between two backticks, eg. inside `:filetype`. You will see this is
highlighted as a command, like a code block (see below).
When referring to a Vim option in the help file, place the option name between
two single quotes, eg. 'statusline'
+2 -2
View File
@@ -97,8 +97,8 @@ command does the same and also splits the window (short: "scs").
The available subcommands are:
*E563* *E564* *E566* *E568* *E569* *E622* *E623*
*E625* *E626* *E609*
*E563* *E564* *E566* *E568* *E622* *E623* *E625*
*E626* *E609*
add : Add a new cscope database/connection.
USAGE :cs add {file|dir} [pre-path] [flags]
+13 -6
View File
@@ -410,13 +410,20 @@ This means that Vim will search for the Lua DLL or shared library file only
when needed. When you don't use the Lua interface you don't need it, thus
you can use Vim without this file.
On MS-Windows to use the Lua interface the Lua DLL must be in your search path.
In a console window type "path" to see what directories are used. The version
of the DLL must match the Lua version Vim was compiled with.
On Unix the 'luadll' option can be used to specify the Lua shared library file
instead of DYNAMIC_LUA_DLL file what was specified at compile time. The
version of the shared library must match the Lua version Vim was compiled with.
MS-Windows ~
To use the Lua interface the Lua DLL must be in your search path. In a
console window type "path" to see what directories are used. The 'luadll'
option can be also used to specify the Lua DLL. The version of the DLL must
match the Lua version Vim was compiled with.
Unix ~
The 'luadll' option can be used to specify the Lua shared library file instead
of DYNAMIC_LUA_DLL file what was specified at compile time. The version of
the shared library must match the Lua version Vim was compiled with.
==============================================================================
+2 -1
View File
@@ -284,7 +284,8 @@ used for building Vim.
To use the Perl interface the Perl DLL must be in your search path.
If Vim reports it cannot find the perl512.dll, make sure your $PATH includes
the directory where it is located. The Perl installer normally does that.
In a console window type "path" to see what directories are used.
In a console window type "path" to see what directories are used. The
'perldll' option can be also used to specify the Perl DLL.
The name of the DLL must match the Perl version Vim was compiled with.
Currently the name is "perl512.dll". That is for Perl 5.12. To know for
+38 -12
View File
@@ -653,10 +653,25 @@ vim.List object *python-List*
class List(vim.List): # Subclassing
vim.Function object *python-Function*
Function-like object, acting like vim |Funcref| object. Supports `.name`
attribute and is callable. Accepts special keyword argument `self`, see
|Dictionary-function|. You can also use `vim.Function(name)` constructor,
it is the same as `vim.bindeval('function(%s)'%json.dumps(name))`.
Function-like object, acting like vim |Funcref| object. Accepts special
keyword argument `self`, see |Dictionary-function|. You can also use
`vim.Function(name)` constructor, it is the same as
`vim.bindeval('function(%s)'%json.dumps(name))`.
Attributes (read-only):
Attribute Description ~
name Function name.
args `None` or a |python-List| object with arguments. Note that
this is a copy of the arguments list, constructed each time
you request this attribute. Modifications made to the list
will be ignored (but not to the containers inside argument
list: this is like |copy()| and not |deepcopy()|).
self `None` or a |python-Dictionary| object with self
dictionary. Note that explicit `self` keyword used when
calling resulting object overrides this attribute.
Constructor additionally accepts `args` and `self` keywords. If any of
them is given then it constructs a partial, see |function()|.
Examples: >
f = vim.Function('tr') # Constructor
@@ -670,6 +685,11 @@ vim.Function object *python-Function*
print f(self={}) # Like call('DictFun', [], {})
print isinstance(f, vim.Function) # True
p = vim.Function('DictFun', self={})
print f()
p = vim.Function('tr', args=['abc', 'a'])
print f('b')
==============================================================================
8. pyeval() and py3eval() Vim functions *python-pyeval*
@@ -686,18 +706,24 @@ This means that Vim will search for the Python DLL or shared library file only
when needed. When you don't use the Python interface you don't need it, thus
you can use Vim without this file.
On MS-Windows to use the Python interface the Python DLL must be in your search
path. In a console window type "path" to see what directories are used.
MS-Windows ~
To use the Python interface the Python DLL must be in your search path. In a
console window type "path" to see what directories are used. The 'pythondll'
or 'pythonthreedll' option can be also used to specify the Python DLL.
The name of the DLL must match the Python version Vim was compiled with.
Currently the name is "python24.dll". That is for Python 2.4. To know for
sure edit "gvim.exe" and search for "python\d*.dll\c".
On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the
Python shared library file instead of DYNAMIC_PYTHON_DLL or
DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of
the shared library must match the Python 2.x or Python 3 version Vim was
compiled with.
Unix ~
The 'pythondll' or 'pythonthreedll' option can be used to specify the Python
shared library file instead of DYNAMIC_PYTHON_DLL or DYNAMIC_PYTHON3_DLL file
what were specified at compile time. The version of the shared library must
match the Python 2.x or Python 3 version Vim was compiled with.
==============================================================================
10. Python 3 *python3*
@@ -708,7 +734,7 @@ if the `:py3` command is working: >
:py3 print("Hello")
< *:py3file*
The `:py3file` command works similar to `:pyfile`.
*:py3do* *E863*
*:py3do*
The `:py3do` command works similar to `:pydo`.
+4 -1
View File
@@ -199,6 +199,7 @@ This means that Vim will search for the Ruby DLL file or shared library only
when needed. When you don't use the Ruby interface you don't need it, thus
you can use Vim even though this library file is not on your system.
MS-Windows ~
You need to install the right version of Ruby for this to work. You can find
@@ -207,7 +208,8 @@ http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
Currently that is ruby-1.9.1-p429-i386-mswin32.zip
To use the Ruby interface the Ruby DLL must be in your search path. In a
console window type "path" to see what directories are used.
console window type "path" to see what directories are used. The 'rubydll'
option can be also used to specify the Ruby DLL.
The name of the DLL must match the Ruby version Vim was compiled with.
Currently the name is "msvcrt-ruby191.dll". That is for Ruby 1.9.1. To know
@@ -218,6 +220,7 @@ and comment-out the check for _MSC_VER.
You may also need to rename the include directory name to match the version,
strangely for Ruby 1.9.3 the directory is called 1.9.1.
Unix ~
The 'rubydll' option can be used to specify the Ruby shared library file
+3 -2
View File
@@ -16,7 +16,7 @@ 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* *E281*
{Vi does not have any of these commands} *E280*
The Tcl interface only works when Vim was compiled with the |+tcl| feature.
@@ -526,7 +526,8 @@ can use Vim without this file.
MS-Windows ~
To use the Tcl interface the Tcl DLL must be in your search path. In a
console window type "path" to see what directories are used.
console window type "path" to see what directories are used. The 'tcldll'
option can be also used to specify the Tcl DLL.
The name of the DLL must match the Tcl version Vim was compiled with.
Currently the name is "tcl86.dll". That is for Tcl 8.6. To know for sure
+7 -1
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.4. Last change: 2016 Mar 04
*index.txt* For Vim version 7.4. Last change: 2016 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -49,6 +49,7 @@ tag char action in Insert mode ~
|i_CTRL-G_k| CTRL-G k line up, to column where inserting started
|i_CTRL-G_k| CTRL-G <Up> line up, to column where inserting started
|i_CTRL-G_u| CTRL-G u start new undoable edit
|i_CTRL-G_U| CTRL-G U don't break undo with next cursor movement
|i_<BS>| <BS> delete character before the cursor
|i_digraph| {char1}<BS>{char2}
enter digraph (only when 'digraph' option set)
@@ -859,6 +860,7 @@ tag command note action in Visual mode ~
------------------------------------------------------------------------------
|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N stop Visual mode
|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode'
|v_CTRL-A| CTRL-A 2 add N to number in highlighted text
|v_CTRL-C| CTRL-C stop Visual mode
|v_CTRL-G| CTRL-G toggle between Visual mode and Select mode
|v_<BS>| <BS> 2 Select mode: delete highlighted area
@@ -867,6 +869,7 @@ tag command note action in Visual mode ~
command
|v_CTRL-V| CTRL-V make Visual mode blockwise or stop Visual
mode
|v_CTRL-X| CTRL-X 2 subtract N from number in highlighted text
|v_<Esc>| <Esc> stop Visual mode
|v_CTRL-]| CTRL-] jump to highlighted tag
|v_!| !{filter} 2 filter the highlighted lines through the
@@ -923,6 +926,8 @@ tag command note action in Visual mode ~
|v_a}| a} same as aB
|v_c| c 2 delete highlighted area and start insert
|v_d| d 2 delete highlighted area
|v_g_CTRL-A| g CTRL-A 2 add N to number in highlighted text
|v_g_CTRL-X| g CTRL-X 2 subtract N from number in highlighted text
|v_gJ| gJ 2 join the highlighted lines without
inserting spaces
|v_gq| gq 2 format the highlighted lines
@@ -1397,6 +1402,7 @@ tag command action ~
|:ounmenu| :ounme[nu] remove menu for Operator-pending mode
|:ownsyntax| :ow[nsyntax] set new local syntax highlight for this window
|:packadd| :pa[ckadd] add a plugin from 'packpath'
|:packloadall| :packl[oadall] load all packages under 'packpath'
|:pclose| :pc[lose] close preview window
|:pedit| :ped[it] edit file in the preview window
|:perl| :pe[rl] execute Perl command
+1 -1
View File
@@ -1358,7 +1358,7 @@ Possible attributes are:
Note that -range=N and -count=N are mutually exclusive - only one should be
specified.
*E889* *:command-addr*
*:command-addr*
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.
+12 -2
View File
@@ -1,4 +1,4 @@
*message.txt* For Vim version 7.4. Last change: 2016 Feb 27
*message.txt* For Vim version 7.4. Last change: 2016 Apr 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -19,6 +19,15 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
:messages Show all messages.
:{count}messages Show the {count} most recent messages.
:messages clear Clear all messages.
:{count}messages clear Clear messages, keeping only the {count} most
recent ones.
The number of remembered messages is fixed at 20 for the tiny version and 200
for other versions.
@@ -58,8 +67,9 @@ If you are lazy, it also works without the shift key: >
When an error message is displayed, but it is removed before you could read
it, you can see it again with: >
:echo errmsg
or view a list of recent messages with: >
Or view a list of recent messages with: >
:messages
See `:messages` above.
LIST OF MESSAGES
+1 -1
View File
@@ -827,7 +827,7 @@ REJECT Not used.
These errors occur when a message violates the protocol:
*E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636*
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
*E647* *E648* *E649* *E650* *E651* *E652*
==============================================================================
+55 -19
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.4. Last change: 2016 Mar 08
*options.txt* For Vim version 7.4. Last change: 2016 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -69,7 +69,7 @@ achieve special effects. These options come in three forms:
:se[t] {option}:{value}
Set string or number option to {value}.
For numeric options the value can be given in decimal,
hex (preceded with 0x) or octal (preceded with '0').
hex (preceded with 0x) or octal (preceded with '0').
The old value can be inserted by typing 'wildchar' (by
default this is a <Tab> or CTRL-E if 'compatible' is
set). See |cmdline-completion|.
@@ -1007,7 +1007,7 @@ A jump table for the options with a short description can be found at |Q_op|.
- The backup file will be created in the first directory in the list
where this is possible. The directory must exist, Vim will not
create it for you.
- Empty means that no backup file will be created ( 'patchmode' is
- Empty means that no backup file will be created ('patchmode' is
impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory
as the edited file.
@@ -1075,7 +1075,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Note that environment variables are not expanded. If you want to use
$HOME you must expand it explicitly, e.g.: >
:let backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
:let &backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
< Note that the default also makes sure that "crontab -e" works (when a
backup would be made by renaming the original file crontab won't see
@@ -1258,7 +1258,7 @@ A jump table for the options with a short description can be found at |Q_op|.
break if 'linebreak' is on. Only works for ASCII and also for 8-bit
characters when 'encoding' is an 8-bit encoding.
*'breakindent'* *'bri'* *'nobreakindent'* *'nobri'*
*'breakindent'* *'bri'* *'nobreakindent'* *'nobri'*
'breakindent' 'bri' boolean (default off)
local to window
{not in Vi}
@@ -1805,7 +1805,7 @@ A jump table for the options with a short description can be found at |Q_op|.
when CTRL-P or CTRL-N are used. It is also used for whole-line
completion |i_CTRL-X_CTRL-L|. It indicates the type of completion
and the places to scan. It is a comma separated list of flags:
. scan the current buffer ( 'wrapscan' is ignored)
. scan the current buffer ('wrapscan' is ignored)
w scan buffers from other windows
b scan other loaded buffers that are in the buffer list
u scan the unloaded buffers that are in the buffer list
@@ -2305,6 +2305,8 @@ A jump table for the options with a short description can be found at |Q_op|.
different. The whole undo file is encrypted, not just
the pieces of text.
You should use "blowfish2", also to re-encrypt older files.
When reading an encrypted file 'cryptmethod' will be set automatically
to the detected method of the file being read. Thus if you write it
without changing 'cryptmethod' the same method will be used.
@@ -2657,6 +2659,15 @@ A jump table for the options with a short description can be found at |Q_op|.
also 'gdefault' option.
Switching this option on is discouraged!
*'emoji'* *'emo'* *'noemoji'* *'noemo'*
'emoji' 'emo' boolean (default: on)
global
{not in Vi}
{only available when compiled with the |+multi_byte|
feature}
When on all Unicode emoji characters are considered to be full width.
*'encoding'* *'enc'* *E543*
'encoding' 'enc' string (default: "latin1" or value from $LANG)
global
@@ -3034,8 +3045,8 @@ A jump table for the options with a short description can be found at |Q_op|.
file only, the option is not changed.
When 'binary' is set, the value of 'fileformats' is not used.
Note that when Vim starts up with an empty buffer this option is not
used. Set 'fileformat' in your .vimrc instead.
When Vim starts up with an empty buffer the first item is used. You
can overrule this by setting 'fileformat' in your .vimrc.
For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
are ":source"ed and for vimrc files, automatic <EOL> detection may be
@@ -3724,6 +3735,10 @@ A jump table for the options with a short description can be found at |Q_op|.
HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
Normally you would use "cDEFAULT".
qXX - quality XX. Valid quality names are: PROOF, DRAFT,
ANTIALIASED, UNANTIALIASED, CLEARTYPE, DEFAULT.
Normally you would use "qDEFAULT".
Some quality values isn't supported in legacy OSs.
Use a ':' to separate the options.
- A '_' can be used in the place of a space, so you don't need to use
@@ -3839,7 +3854,7 @@ A jump table for the options with a short description can be found at |Q_op|.
The same applies to the modeless selection.
*'go-P'*
'P' Like autoselect but using the "+ register instead of the "*
register.
register.
*'go-A'*
'A' Autoselect for the modeless selection. Like 'a', but only
applies to the modeless selection.
@@ -4951,13 +4966,14 @@ A jump table for the options with a short description can be found at |Q_op|.
reset this option. |-u| |--noplugin|
*'luadll'*
'luadll' string (default depends on the build)
'luadll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+lua/dyn|
feature}
Specifies the name of the Lua shared library. The default is
DYNAMIC_LUA_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5151,7 +5167,7 @@ A jump table for the options with a short description can be found at |Q_op|.
without a limit.
On 64 bit machines higher values might work. But hey, do you really
need more than 2 Gbyte for text editing? Keep in mind that text is
stored in the swap file, one can edit files > 2 Gbyte anyay. We do
stored in the swap file, one can edit files > 2 Gbyte anyway. We do
need the memory to store undo info.
Also see 'maxmem'.
@@ -5242,6 +5258,7 @@ A jump table for the options with a short description can be found at |Q_op|.
written. A ":set nomodified" command also resets the original
values to the current values and the 'modified' option will be
reset.
Similarly for 'eol' and 'bomb'.
This option is not set when a change is made to the buffer as the
result of a BufNewFile, BufRead/BufReadPost, BufWritePost,
FileAppendPost or VimLeave autocommand event. See |gzip-example| for
@@ -5434,7 +5451,7 @@ A jump table for the options with a short description can be found at |Q_op|.
respectively; see |CTRL-A| for more info on these commands.
alpha If included, single alphabetical characters will be
incremented or decremented. This is useful for a list with a
letter index a), b), etc. *octal-nrformats*
letter index a), b), etc. *octal-nrformats*
octal If included, numbers that start with a zero will be considered
to be octal. Example: Using CTRL-A on "007" results in "010".
hex If included, numbers starting with "0x" or "0X" will be
@@ -5464,7 +5481,7 @@ A jump table for the options with a short description can be found at |Q_op|.
relative to the cursor. Together with 'number' there are these
four combinations (cursor in line 3):
'nonu' 'nu' 'nonu' 'nu'
'nonu' 'nu' 'nonu' 'nu'
'nornu' 'nornu' 'rnu' 'rnu'
|apple | 1 apple | 2 apple | 2 apple
@@ -5703,13 +5720,14 @@ A jump table for the options with a short description can be found at |Q_op|.
this doesn't work when $INCL contains a comma or white space.
*'perldll'*
'perldll' string (default depends on the build)
'perldll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+perl/dyn|
feature}
Specifies the name of the Perl shared library. The default is
DYNAMIC_PERL_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5840,13 +5858,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|ins-completion-menu|.
*'pythondll'*
'pythondll' string (default depends on the build)
'pythondll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+python/dyn|
feature}
Specifies the name of the Python 2.x shared library. The default is
DYNAMIC_PYTHON_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5858,6 +5877,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Python 3 shared library. The default is
DYNAMIC_PYTHON3_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -6081,13 +6101,14 @@ A jump table for the options with a short description can be found at |Q_op|.
The 'rightleft' option must be set for 'rightleftcmd' to take effect.
*'rubydll'*
'rubydll' string (default: depends on the build)
'rubydll' string (default: depends on the build)
global
{not in Vi}
{only available when compiled with the |+ruby/dyn|
feature}
Specifies the name of the Ruby shared library. The default is
DYNAMIC_RUBY_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -6669,7 +6690,9 @@ A jump table for the options with a short description can be found at |Q_op|.
c don't give |ins-completion-menu| messages. For example,
"-- XXX completion (YYY)", "match 1 of 2", "The only match",
"Pattern not found", "Back at original", etc.
q use "recording" instead of "recording @a"
q use "recording" instead of "recording @a"
F don't give the file info when editing a file, like `:silent`
was used for the command
This gives you the opportunity to avoid that a change between buffers
requires you to hit <Enter>, but still gives as useful a message as
@@ -7573,13 +7596,14 @@ A jump table for the options with a short description can be found at |Q_op|.
mapping which should not change the tagstack.
*'tcldll'*
'tcldll' string (default depends on the build)
'tcldll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+tcl/dyn|
feature}
Specifies the name of the Tcl shared library. The default is
DYNAMIC_TCL_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -7629,7 +7653,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{not in Vi}
Encoding used for the terminal. This specifies what character
encoding the keyboard produces and the display will understand. For
the GUI it only applies to the keyboard ( 'encoding' is used for the
the GUI it only applies to the keyboard ('encoding' is used for the
display). Except for the Mac when 'macatsui' is off, then
'termencoding' should be "macroman" (for the Carbon GUI).
In the Win32 console version the default value is the console codepage
@@ -7654,6 +7678,18 @@ A jump table for the options with a short description can be found at |Q_op|.
:set encoding=utf-8
< You need to do this when your system has no locale support for UTF-8.
*'termguicolors'* *'tgc'*
'termguicolors' 'tgc' boolean (default off)
global
{not in Vi}
{not available when compiled without the
|+termguicolors| feature}
When on, uses |highlight-guifg| and |highlight-guibg| attributes in
the terminal (thus using 24-bit color). Requires a ISO-8613-3
compatible terminal.
If setting this option does not work (produces a colorless UI)
reading |xterm-true-color| might help.
*'terse'* *'noterse'*
'terse' boolean (default off)
global
+4 -3
View File
@@ -1,4 +1,4 @@
*os_beos.txt* For Vim version 7.4. Last change: 2010 Aug 14
*os_beos.txt* For Vim version 7.4. Last change: 2016 Mar 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -248,8 +248,9 @@ reality. Vim uses this mapping:
Button 3 -> MiddleMouse.
If your mouse has fewer than 3 buttons you can provide your own mapping from
mouse clicks with modifier(s) to other mouse buttons. See the file
vim-5.x/macros/swapmous.vim for an example. |gui-mouse-mapping|
mouse clicks with modifier(s) to other mouse buttons. See the swapmouse
package for an example: |gui-mouse-mapping|
$VIMRUNTIME/pack/dist/opt/swapmouse/plugin/swapmouse.vim
12. Color names *beos-colors*
+10 -9
View File
@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.4. Last change: 2016 Jan 03
*pattern.txt* For Vim version 7.4. Last change: 2016 Apr 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -576,7 +576,7 @@ An atom can be followed by an indication of how many times the atom can be
matched and in what way. This is called a multi. See |/multi| for an
overview.
*/star* */\star* *E56*
*/star* */\star*
* (use \* when 'magic' is not set)
Matches 0 or more of the preceding atom, as many as possible.
Example 'nomagic' matches ~
@@ -596,7 +596,7 @@ overview.
the end of the file and then tries matching "END", backing up one
character at a time.
*/\+* *E57*
*/\+*
\+ Matches 1 or more of the preceding atom, as many as possible. {not in
Vi}
Example matches ~
@@ -612,7 +612,7 @@ overview.
\? Just like \=. Cannot be used when searching backwards with the "?"
command. {not in Vi}
*/\{* *E58* *E60* *E554* *E870*
*/\{* *E60* *E554* *E870*
\{n,m} Matches n to m of the preceding atom, as many as possible
\{n} Matches n of the preceding atom
\{n,} Matches at least n of the preceding atom, as many as possible
@@ -1079,8 +1079,8 @@ x A single character, with no special meaning, matches itself
belonging to that character class. The following character classes
are supported:
Name Contents ~
*[:alnum:]* [:alnum:] letters and digits
*[:alpha:]* [:alpha:] letters
*[:alnum:]* [:alnum:] ASCII letters and digits
*[:alpha:]* [:alpha:] ASCII letters
*[:blank:]* [:blank:] space and tab characters
*[:cntrl:]* [:cntrl:] control characters
*[:digit:]* [:digit:] decimal digits
@@ -1088,7 +1088,7 @@ x A single character, with no special meaning, matches itself
*[:lower:]* [:lower:] lowercase letters (all letters when
'ignorecase' is used)
*[:print:]* [:print:] printable characters including space
*[:punct:]* [:punct:] punctuation characters
*[:punct:]* [:punct:] ASCII punctuation characters
*[:space:]* [:space:] whitespace characters
*[:upper:]* [:upper:] uppercase letters (all letters when
'ignorecase' is used)
@@ -1104,8 +1104,9 @@ x A single character, with no special meaning, matches itself
'/', alphabetic, numeric, '_' or '~'.
These items only work for 8-bit characters, except [:lower:] and
[:upper:] also work for multi-byte characters when using the new
regexp engine. In the future these items may work for multi-byte
characters.
regexp engine. See |two-engines|. In the future these items may
work for multi-byte characters. For now, to get all "alpha"
characters you can use: [[:lower:][:upper:]].
*/[[=* *[==]*
- An equivalence class. This means that characters are matched that
have almost the same meaning, e.g., when ignoring accents. This
+23 -19
View File
@@ -1,25 +1,25 @@
*pi_logipat.txt* Logical Patterns Mar 13, 2013
*logiPat.txt* Logical Patterns Jun 22, 2015
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
(see |copyright|) except use "LogiPat" instead of "Vim"
No warranty, express or implied. Use At-Your-Own-Risk.
==============================================================================
1. Contents *logipat* *logipat-contents*
1. Contents *logiPat* *logiPat-contents*
1. Contents.................: |logiPat-contents|
2. LogiPat Manual...........: |logiPat-manual|
3. LogiPat Examples.........: |logiPat-examples|
4. Caveat...................: |logiPat-caveat|
5. LogiPat History..........: |logiPat-history|
1. Contents.................: |logipat-contents|
2. LogiPat Manual...........: |logipat-manual|
3. LogiPat Examples.........: |logipat-examples|
4. Caveat...................: |logipat-caveat|
5. LogiPat History..........: |logipat-history|
==============================================================================
2. LogiPat Manual *logipat-manual* *logipat-man*
2. LogiPat Manual *logiPat-manual* *logiPat-man*
*logipat-arg* *logipat-input* *logipat-pattern* *logipat-operators*
*logiPat-arg* *logiPat-input* *logiPat-pattern* *logiPat-operators*
Boolean logic patterns are composed of
operators ! = not
@@ -30,13 +30,12 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
:LogiPat {boolean-logic pattern} *:LogiPat*
:LogiPat is a command which takes a boolean-logic
argument (|logipat-arg|).
argument (|logiPat-arg|).
:LP {boolean-logic pattern} *:LP*
:LP is a shorthand command version of :LogiPat
(|:LogiPat|).
:ELP {boolean-logic pattern} *:ELP*
:LPE {boolean-logic pattern} *:LPE*
No search is done, but the conversion from the
boolean logic pattern to the regular expression
is performed and echoed onto the display.
@@ -59,8 +58,9 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
To get a " inside a pattern, as opposed to having it delimit
the pattern, double it.
==============================================================================
3. LogiPat Examples *logipat-examples*
3. LogiPat Examples *logiPat-examples*
LogiPat takes Boolean logic arguments and produces a regular
expression which implements the choices. A series of examples
@@ -96,22 +96,26 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
==============================================================================
4. Caveat *logipat-caveat*
4. Caveat *logiPat-caveat*
The "not" operator may be fragile; ie. it may not always play well
with the & (logical-and) and | (logical-or) operators. Please try out
your patterns, possibly with :set hls, to insure that what is matching
is what you want.
==============================================================================
3. LogiPat History *logipat-history*
==============================================================================
3. LogiPat History *logiPat-history*
v4 Jun 22, 2015 * LogiPat has been picked up by Bram M for standard
plugin distribution; hence the name change
v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output
in \%(...\) parentheses
Dec 12, 2011 * |:ELP| added
Dec 12, 2011 * |:LPE| added
* "" is mapped to a single " and left inside patterns
v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working
v1 May 23, 2005 * initial release
==============================================================================
vim:tw=78:ts=8:ft=help
+26 -1
View File
@@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Feb 16
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Apr 20
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -1525,6 +1525,7 @@ the |'isfname'| option (which is global, so netrw doesn't modify it).
Associated setting variables:
|g:netrw_gx| control how gx picks up the text under the cursor
|g:netrw_nogx| prevent gx map while editing
|g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
*netrw_filehandler*
@@ -2931,6 +2932,13 @@ your browsing preferences. (see also: |netrw-settings|)
such as listing, file removal, etc.
default: ssh
*g:netrw_suppress_gx_mesg* =1 : browsers sometimes produce messages
which are normally unwanted intermixed
with the page.
However, when using links, for example,
those messages are what the browser produces.
By setting this option to 0, netrw will not
suppress browser messages.
*g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files
@@ -3757,6 +3765,23 @@ netrw:
==============================================================================
12. History *netrw-history* {{{1
v156: Feb 18, 2016 * Changed =~ to =~# where appropriate
Feb 23, 2016 * s:ComposePath(base,subdir) now uses
fnameescape() on the base portion
Mar 01, 2016 * (gt_macki) reported where :Explore would
make file unlisted. Fixed (tst943)
Apr 04, 2016 * (reported by John Little) netrw normally
suppresses browser messages, but sometimes
those "messages" are what is wanted.
See |g:netrw_suppress_gx_mesg|
Apr 06, 2016 * (reported by Carlos Pita) deleting a remote
file was giving an error message. Fixed.
Apr 08, 2016 * (Charles Cooper) had a problem with an
undefined b:netrw_curdir. He also provided
a fix.
Apr 20, 2016 * Changed s:NetrwGetBuffer(); now uses
dictionaries. Also fixed the "No Name"
buffer problem.
v155: Oct 29, 2015 * (Timur Fayzrakhmanov) reported that netrw's
mapping of ctrl-l was not allowing refresh of
other windows when it was done in a netrw
+13 -10
View File
@@ -1,12 +1,12 @@
*pi_vimball.txt* For Vim version 7.4. Last change: 2012 Jan 17
*pi_vimball.txt* For Vim version 7.4. Last change: 2016 Apr 11
----------------
Vimball Archiver
----------------
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *Vimball-copyright*
Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt.
except use "vimball" instead of "VIM". Like anything else that's free,
@@ -99,10 +99,10 @@ MAKING DIRECTORIES VIA VIMBALLS *g:vimball_mkdir*
If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
as follows: >
|g:netrw_local_mkdir|, if it exists
"mkdir" , if it is executable
"makedir" , if it is executable
Otherwise , it is undefined.
|g:netrw_localmkdir|, if it exists
"mkdir" , if it is executable
"makedir" , if it is executable
Otherwise , it is undefined.
< One may explicitly specify the directory making command using
g:vimball_mkdir. This command is used to make directories that
are needed as indicated by the vimball.
@@ -120,8 +120,7 @@ CONTROLLING THE VIMBALL EXTRACTION DIRECTORY *g:vimball_home*
source the file to extract its contents.
Extraction will only proceed if the first line of a putative vimball
file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D."
line.
file holds the "Vimball Archiver by Charles E. Campbell" line.
LISTING FILES IN A VIMBALL *:VimballList*
@@ -182,13 +181,16 @@ WINDOWS *vimball-windows*
==============================================================================
4. Vimball History *vimball-history* {{{1
37 : Jul 18, 2014 * (by request of T. Miedema) added augroup around
the autocmds in vimballPlugin.vim
Jul 06, 2015 * there are two uses of tabc; changed to tabc!
34 : Sep 22, 2011 * "UseVimball path" now supports a non-full path by
prepending the current directory to it.
33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
* Changed silent! to sil! (shorter)
* Safed |'swf'| setting (during vimball extraction,
its now turned off)
32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and
32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
:so someplugin.vba.gz (and the other supported
compression types) now works
* (Jan Steffens) added support for xz compression
@@ -200,6 +202,7 @@ WINDOWS *vimball-windows*
MkVimball, however, now will create *.vmb files.
Feb 11, 2011 * motoyakurotsu reported an error with vimball's
handling of zero-length files
Feb 18, 2016 * Changed =~ to =~# where appropriate
30 : Dec 08, 2008 * fnameescape() inserted to protect error
messaging using corrupted filenames from
causing problems
+9 -1
View File
@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 7.4. Last change: 2016 Jan 21
*quickfix.txt* For Vim version 7.4. Last change: 2016 Mar 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -56,6 +56,14 @@ The following quickfix commands can be used. The location list commands are
similar to the quickfix commands, replacing the 'c' prefix in the quickfix
command with 'l'.
*E924*
If the current window was closed by an |autocommand| while processing a
location list command, it will be aborted.
*E925* *E926*
If the current quickfix or location list was changed by an |autocommand| while
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
+3 -1
View File
@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 7.4. Last change: 2016 Feb 24
*quickref.txt* For Vim version 7.4. Last change: 2016 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -680,6 +680,7 @@ Short explanation of each option: *option-list*
'display' 'dy' list of flags for how to display text
'eadirection' 'ead' in which direction 'equalalways' works
'edcompatible' 'ed' toggle flags of ":substitute" command
'emoji' 'emo' emoji characters are considered full width
'encoding' 'enc' encoding used internally
'endofline' 'eol' write <EOL> for last line in file
'equalalways' 'ea' windows are automatically made the same size
@@ -919,6 +920,7 @@ Short explanation of each option: *option-list*
'term' name of the terminal
'termbidi' 'tbidi' terminal takes care of bi-directionality
'termencoding' 'tenc' character encoding used by the terminal
'termguicolors' 'tgc' use GUI colors for the terminal
'terse' shorten some messages
'textauto' 'ta' obsolete, use 'fileformats'
'textmode' 'tx' obsolete, use 'fileformat'
+135 -25
View File
@@ -1,4 +1,4 @@
*repeat.txt* For Vim version 7.4. Last change: 2016 Mar 09
*repeat.txt* For Vim version 7.4. Last change: 2016 Apr 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -8,13 +8,14 @@ Repeating commands, Vim scripts and debugging *repeating*
Chapter 26 of the user manual introduces repeating |usr_26.txt|.
1. Single repeats |single-repeat|
2. Multiple repeats |multi-repeat|
3. Complex repeats |complex-repeat|
4. Using Vim scripts |using-scripts|
5. Using Vim packages |packages|
6. Debugging scripts |debug-scripts|
7. Profiling |profiling|
1. Single repeats |single-repeat|
2. Multiple repeats |multi-repeat|
3. Complex repeats |complex-repeat|
4. Using Vim scripts |using-scripts|
5. Using Vim packages |packages|
6. Creating Vim packages |package-create|
7. Debugging scripts |debug-scripts|
8. Profiling |profiling|
==============================================================================
1. Single repeats *single-repeat*
@@ -71,8 +72,8 @@ examples.
The global commands work by first scanning through the [range] lines and
marking each line where a match occurs (for a multi-line pattern, only the
start of the match matters).
In a second scan the [cmd] is executed for each marked line with its line
number prepended. For ":v" and ":g!" the command is executed for each not
In a second scan the [cmd] is executed for each marked line, as if the cursor
was in that line. For ":v" and ":g!" the command is executed for each not
marked line. If a line is deleted its mark disappears.
The default for [range] is the whole buffer (1,$). Use "CTRL-C" to interrupt
the command. If an error message is given for a line, the command for that
@@ -233,8 +234,11 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
there yet.
Note that {name} is the directory name, not the name
of the .vim file. If the "{name}/plugin" directory
contains more than one file they are all sourced.
of the .vim file. All the files matching the pattern
pack/*/opt/{name}/plugin/**/*.vim ~
will be sourced. This allows for using subdirectories
below "plugin", just like with plugins in
'runtimepath'.
If the filetype detection was not enabled yet (this
is usually done with a "syntax enable" or "filetype
@@ -249,15 +253,27 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
Also see |pack-add|.
:packloadall[!] Load all packages in the "start" directories under
'packpath'. The directories found are added to
'runtimepath'.
This normally done during startup, after loading your
.vimrc file. With this command it can be done
earlier.
*:packl* *:packloadall*
:packl[oadall][!] Load all packages in the "start" directory under each
entry in 'packpath'.
First all the directories found are added to
'runtimepath', then the plugins found in the
directories are sourced. This allows for a plugin to
depend on something of another plugin, e.g. an
"autoload" directory. See |packload-two-steps| for
how this can be useful.
This is normally done automatically during startup,
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.
An error only causes sourcing the script where it
happens to be aborted, further plugins will be loaded.
See |packages|.
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
@@ -467,8 +483,9 @@ You would now have these files under ~/.vim:
pack/foo/opt/foodebug/plugin/debugger.vim
When Vim starts up, after processing your .vimrc, it scans all directories in
'packpath' for plugins under the "pack/*/start" directory and loads them. The
directory is added to 'runtimepath'.
'packpath' for plugins under the "pack/*/start" directory. First all those
directories are added to 'runtimepath'. Then all the plugins are loaded.
See |packload-two-steps| for how these two steps can be useful.
In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
"~/.vim/pack/foo/start/foobar" to 'runtimepath'.
@@ -478,7 +495,7 @@ find the syntax/some.vim file, because its directory is in 'runtimepath'.
Vim will also load ftdetect files, if there are any.
Note that the files under "pack/foo/opt" or not loaded automatically, only the
Note that the files under "pack/foo/opt" are not loaded automatically, only the
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
is used.
@@ -513,14 +530,107 @@ To load an optional plugin from a pack use the `:packadd` command: >
This searches for "pack/*/opt/foodebug" in 'packpath' and will find
~/.vim/pack/foo/opt/foodebug/plugin/debugger.vim and source it.
This could be done inside always.vim, if some conditions are met. Or you
could add this command to your |.vimrc|.
This could be done if some conditions are met. For example, depending on
whether Vim supports a feature or a dependency is missing.
You can also load an optional plugin at startup, by putting this command in
your |.vimrc|: >
:packadd! foodebug
The extra "!" is so that the plugin isn't loaded with Vim was started with
|--noplugin|.
It is perfectly normal for a package to only have files in the "opt"
directory. You then need to load each plugin when you want to use it.
Where to put what ~
Since color schemes, loaded with `:colorscheme`, are found below
"pack/*/start" and "pack/*/opt", you could put them anywhere. We recommend
you put them below "pack/*/opt", for example
".vim/pack/mycolors/opt/dark/colors/very_dark.vim".
Filetype plugins should go under "pack/*/start", so that they are always
found. Unless you have more than one plugin for a file type and want to
select which one to load with `:packadd`. E.g. depending on the compiler
version: >
if foo_compiler_version > 34
packadd foo_new
else
packadd foo_old
endif
The "after" directory is most likely not useful in a package. It's not
disallowed though.
==============================================================================
6. Debugging scripts *debug-scripts*
6. Creating Vim packages *package-create*
This assumes you write one or more plugins that you distribute as a package.
If you have two unrelated plugins you would use two packages, so that Vim
users can chose what they include or not. Or you can decide to use one
package with optional plugins, and tell the user to add the ones he wants with
`:packadd`.
Decide how you want to distribute the package. You can create an archive or
you could use a repository. An archive can be used by more users, but is a
bit harder to update to a new version. A repository can usually be kept
up-to-date easily, but it requires a program like "git" to be available.
You can do both, github can automatically create an archive for a release.
Your directory layout would be like this:
start/foobar/plugin/foo.vim " always loaded, defines commands
start/foobar/plugin/bar.vim " always loaded, defines commands
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
opt/fooextra/doc/tags " help tags
This allows for the user to do: >
mkdir ~/.vim/pack/myfoobar
cd ~/.vim/pack/myfoobar
git clone https://github.com/you/foobar.git
Here "myfoobar" is a name that the user can choose, the only condition is that
it differs from other packages.
In your documentation you explain what the plugins do, and tell the user how
to load the optional plugin: >
:packadd! fooextra
You could add this packadd command in one of your plugins, to be executed when
the optional plugin is needed.
Run the `:helptags` command to generate the doc/tags file. Including this
generated file in the package means that the user can drop the package in his
pack directory and the help command works right away. Don't forget to re-run
the command after changing the plugin help: >
:helptags path/start/foobar/doc
:helptags path/opt/fooextra/doc
Dependencies between plugins ~
*packload-two-steps*
Suppose you have a two plugins that depend on the same functionality. You can
put the common functionality in an autoload directory, so that it will be
found automatically. Your package would have these files:
pack/foo/start/one/plugin/one.vim >
call foolib#getit()
< pack/foo/start/two/plugin/two.vim >
call foolib#getit()
< pack/foo/start/lib/autoload/foolib.vim >
func foolib#getit()
This works, because loading packages will first add all found directories to
'runtimepath' before sourcing the plugins.
==============================================================================
7. Debugging scripts *debug-scripts*
Besides the obvious messages that you can add to your scripts to find out what
they are doing, Vim offers a debug mode. This allows you to step through a
@@ -745,7 +855,7 @@ OBSCURE
user, don't use typeahead for debug commands.
==============================================================================
7. Profiling *profile* *profiling*
8. Profiling *profile* *profiling*
Profiling means that Vim measures the time that is spent on executing
functions and/or scripts. The |+profile| feature is required for this.
+9 -6
View File
@@ -1,4 +1,4 @@
*starting.txt* For Vim version 7.4. Last change: 2016 Mar 05
*starting.txt* For Vim version 7.4. Last change: 2016 Apr 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -249,7 +249,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
-Z Restricted mode. All commands that make use of an external
shell are disabled. This includes suspending with CTRL-Z,
":sh", filtering, the system() function, backtick expansion,
delete(), rename(), mkdir(), writefile(), libcall(), etc.
delete(), rename(), mkdir(), writefile(), libcall(),
job_start(), etc.
{not in Vi}
*-g*
@@ -866,9 +867,10 @@ accordingly. Vim proceeds in this order:
commands from the command line have not been executed yet. You can
use "--cmd 'set noloadplugins'" |--cmd|.
Plugin packs are loaded. These are plugins, as above, but found in
'packpath' directories. Every plugin directory found is added in
'runtimepath'. See |packages|.
Packages are loaded. These are plugins, as above, but found in the
"start" directory of each entry in 'packpath'. Every plugin directory
found is added in 'runtimepath' and then the plugins are sourced. See
|packages|.
5. Set 'shellpipe' and 'shellredir'
The 'shellpipe' and 'shellredir' options are set according to the
@@ -906,8 +908,9 @@ accordingly. Vim proceeds in this order:
12. Execute startup commands
If a "-t" flag was given to Vim, the tag is jumped to.
The commands given with the |-c| and |+cmd| arguments are executed.
The starting flag is reset, has("vim_starting") will now return zero.
If the 'insertmode' option is set, Insert mode is entered.
The starting flag is reset, has("vim_starting") will now return zero.
The |v:vim_did_enter| variable is set to 1.
The |VimEnter| autocommands are executed.
Some hints on using initializations:
+25 -21
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.4. Last change: 2016 Feb 25
*syntax.txt* For Vim version 7.4. Last change: 2016 Apr 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -941,26 +941,27 @@ To disable them use ":unlet". Example: >
:unlet c_comment_strings
Variable Highlight ~
c_gnu GNU gcc specific items
c_comment_strings strings and numbers inside a comment
c_space_errors trailing white space and spaces before a <Tab>
c_no_trail_space_error ... but no trailing spaces
c_no_tab_space_error ... but no spaces before a <Tab>
c_no_bracket_error don't highlight {}; inside [] as errors
c_no_curly_error don't highlight {}; inside [] and () as errors;
*c_gnu* GNU gcc specific items
*c_comment_strings* strings and numbers inside a comment
*c_space_errors* trailing white space and spaces before a <Tab>
*c_no_trail_space_error* ... but no trailing spaces
*c_no_tab_space_error* ... but no spaces before a <Tab>
*c_no_bracket_error* don't highlight {}; inside [] as errors
*c_no_curly_error* don't highlight {}; inside [] and () as errors;
except { and } in first column
c_curly_error highlight a missing }; this forces syncing from the
*c_curly_error* highlight a missing }; this forces syncing from the
start of the file, can be slow
c_no_ansi don't do standard ANSI types and constants
c_ansi_typedefs ... but do standard ANSI types
c_ansi_constants ... but do standard ANSI constants
c_no_utf don't highlight \u and \U in strings
c_syntax_for_h for *.h files use C syntax instead of C++ and use objc
*c_no_ansi* don't do standard ANSI types and constants
*c_ansi_typedefs* ... but do standard ANSI types
*c_ansi_constants* ... but do standard ANSI constants
*c_no_utf* don't highlight \u and \U in strings
*c_syntax_for_h* for *.h files use C syntax instead of C++ and use objc
syntax instead of objcpp
c_no_if0 don't highlight "#if 0" blocks as comments
c_no_cformat don't highlight %-formats in strings
c_no_c99 don't highlight C99 standard items
c_no_c11 don't highlight C11 standard items
*c_no_if0* don't highlight "#if 0" blocks as comments
*c_no_cformat* don't highlight %-formats in strings
*c_no_c99* don't highlight C99 standard items
*c_no_c11* don't highlight C11 standard items
*c_no_bsd* don't highlight BSD specific types
When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will
become a fold. If you don't want comments to become a fold use: >
@@ -4534,9 +4535,9 @@ in their own color.
:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
for the file "colors/{name}.vim". The first one that
is found is loaded.
To see the name of the currently active color scheme: >
:colo
< The name is also stored in the g:colors_name variable.
Also searches all plugins in 'packpath', first below
"start" and then under "opt".
Doesn't work recursively, thus you can't use
":colorscheme" in a color scheme script.
After the color scheme has been loaded the
@@ -5047,6 +5048,9 @@ defaults back: >
:syntax reset
It is a bit of a wrong name, since it does not reset any syntax items, it only
affects the highlighting.
This doesn't change the colors for the 'highlight' option.
Note that the syntax colors that you set in your vimrc file will also be reset
+130 -52
View File
@@ -209,6 +209,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'efm' options.txt /*'efm'*
'ei' options.txt /*'ei'*
'ek' options.txt /*'ek'*
'emo' options.txt /*'emo'*
'emoji' options.txt /*'emoji'*
'enc' options.txt /*'enc'*
'encoding' options.txt /*'encoding'*
'endofline' options.txt /*'endofline'*
@@ -545,6 +547,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'noed' options.txt /*'noed'*
'noedcompatible' options.txt /*'noedcompatible'*
'noek' options.txt /*'noek'*
'noemo' options.txt /*'noemo'*
'noemoji' options.txt /*'noemoji'*
'noendofline' options.txt /*'noendofline'*
'noeol' options.txt /*'noeol'*
'noequalalways' options.txt /*'noequalalways'*
@@ -921,6 +925,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
't_%1' term.txt /*'t_%1'*
't_%i' term.txt /*'t_%i'*
't_&8' term.txt /*'t_&8'*
't_8b' term.txt /*'t_8b'*
't_8f' term.txt /*'t_8f'*
't_@7' term.txt /*'t_@7'*
't_AB' term.txt /*'t_AB'*
't_AF' term.txt /*'t_AF'*
@@ -1056,11 +1062,13 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'term' options.txt /*'term'*
'termbidi' options.txt /*'termbidi'*
'termencoding' options.txt /*'termencoding'*
'termguicolors' options.txt /*'termguicolors'*
'terse' options.txt /*'terse'*
'textauto' options.txt /*'textauto'*
'textmode' options.txt /*'textmode'*
'textwidth' options.txt /*'textwidth'*
'tf' options.txt /*'tf'*
'tgc' options.txt /*'tgc'*
'tgst' options.txt /*'tgst'*
'thesaurus' options.txt /*'thesaurus'*
'tildeop' options.txt /*'tildeop'*
@@ -1300,10 +1308,12 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+tag_old_static various.txt /*+tag_old_static*
+tcl various.txt /*+tcl*
+tcl/dyn various.txt /*+tcl\/dyn*
+termguicolors various.txt /*+termguicolors*
+terminfo various.txt /*+terminfo*
+termresponse various.txt /*+termresponse*
+textobjects various.txt /*+textobjects*
+tgetent various.txt /*+tgetent*
+timers various.txt /*+timers*
+title various.txt /*+title*
+toolbar various.txt /*+toolbar*
+transparency various.txt /*+transparency*
@@ -1653,6 +1663,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
05.5 usr_05.txt /*05.5*
05.6 usr_05.txt /*05.6*
05.7 usr_05.txt /*05.7*
05.8 usr_05.txt /*05.8*
06.1 usr_06.txt /*06.1*
06.2 usr_06.txt /*06.2*
06.3 usr_06.txt /*06.3*
@@ -1882,7 +1893,6 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:CompilerSet usr_41.txt /*:CompilerSet*
:DiffOrig diff.txt /*:DiffOrig*
:DoMatchParen pi_paren.txt /*:DoMatchParen*
:ELP pi_logipat.txt /*:ELP*
:Explore pi_netrw.txt /*:Explore*
:GLVS pi_getscript.txt /*:GLVS*
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
@@ -1891,6 +1901,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:GnatTags ft_ada.txt /*:GnatTags*
:Hexplore pi_netrw.txt /*:Hexplore*
:LP pi_logipat.txt /*:LP*
:LPE pi_logipat.txt /*:LPE*
:LPF pi_logipat.txt /*:LPF*
:Lexplore pi_netrw.txt /*:Lexplore*
:LogiPat pi_logipat.txt /*:LogiPat*
@@ -2643,6 +2654,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:p various.txt /*:p*
:pa repeat.txt /*:pa*
:packadd repeat.txt /*:packadd*
:packl repeat.txt /*:packl*
:packloadall repeat.txt /*:packloadall*
:pc windows.txt /*:pc*
:pclose windows.txt /*:pclose*
:pe if_perl.txt /*:pe*
@@ -3585,6 +3598,7 @@ CTRL-] tagsrch.txt /*CTRL-]*
CTRL-^ editing.txt /*CTRL-^*
CTRL-{char} intro.txt /*CTRL-{char}*
Channel eval.txt /*Channel*
Channels eval.txt /*Channels*
Chinese mbyte.txt /*Chinese*
Cmd-. gui_mac.txt /*Cmd-.*
Cmd-Down gui_mac.txt /*Cmd-Down*
@@ -3810,7 +3824,6 @@ E273 if_ruby.txt /*E273*
E277 remote.txt /*E277*
E28 syntax.txt /*E28*
E280 if_tcl.txt /*E280*
E281 if_tcl.txt /*E281*
E282 starting.txt /*E282*
E283 motion.txt /*E283*
E284 mbyte.txt /*E284*
@@ -3895,7 +3908,6 @@ E358 options.txt /*E358*
E359 term.txt /*E359*
E36 windows.txt /*E36*
E360 various.txt /*E360*
E362 term.txt /*E362*
E363 options.txt /*E363*
E364 eval.txt /*E364*
E365 print.txt /*E365*
@@ -4103,7 +4115,6 @@ E556 tagsrch.txt /*E556*
E557 term.txt /*E557*
E558 term.txt /*E558*
E559 term.txt /*E559*
E56 pattern.txt /*E56*
E560 if_cscop.txt /*E560*
E561 if_cscop.txt /*E561*
E562 if_cscop.txt /*E562*
@@ -4112,8 +4123,6 @@ E564 if_cscop.txt /*E564*
E566 if_cscop.txt /*E566*
E567 if_cscop.txt /*E567*
E568 if_cscop.txt /*E568*
E569 if_cscop.txt /*E569*
E57 pattern.txt /*E57*
E570 message.txt /*E570*
E571 if_tcl.txt /*E571*
E572 if_tcl.txt /*E572*
@@ -4122,9 +4131,7 @@ E574 starting.txt /*E574*
E575 starting.txt /*E575*
E576 starting.txt /*E576*
E577 starting.txt /*E577*
E578 editing.txt /*E578*
E579 eval.txt /*E579*
E58 pattern.txt /*E58*
E580 eval.txt /*E580*
E581 eval.txt /*E581*
E582 eval.txt /*E582*
@@ -4203,8 +4210,6 @@ E65 pattern.txt /*E65*
E650 netbeans.txt /*E650*
E651 netbeans.txt /*E651*
E652 netbeans.txt /*E652*
E653 netbeans.txt /*E653*
E654 netbeans.txt /*E654*
E655 eval.txt /*E655*
E656 netbeans.txt /*E656*
E657 netbeans.txt /*E657*
@@ -4247,7 +4252,6 @@ E69 pattern.txt /*E69*
E690 eval.txt /*E690*
E691 eval.txt /*E691*
E692 eval.txt /*E692*
E693 eval.txt /*E693*
E694 eval.txt /*E694*
E695 eval.txt /*E695*
E696 eval.txt /*E696*
@@ -4261,7 +4265,6 @@ E702 eval.txt /*E702*
E703 eval.txt /*E703*
E704 eval.txt /*E704*
E705 eval.txt /*E705*
E706 eval.txt /*E706*
E707 eval.txt /*E707*
E708 eval.txt /*E708*
E709 eval.txt /*E709*
@@ -4429,9 +4432,7 @@ E855 autocmd.txt /*E855*
E858 eval.txt /*E858*
E859 eval.txt /*E859*
E86 windows.txt /*E86*
E860 eval.txt /*E860*
E862 eval.txt /*E862*
E863 if_pyth.txt /*E863*
E864 pattern.txt /*E864*
E865 pattern.txt /*E865*
E866 pattern.txt /*E866*
@@ -4459,7 +4460,6 @@ E885 sign.txt /*E885*
E886 starting.txt /*E886*
E887 if_pyth.txt /*E887*
E888 pattern.txt /*E888*
E889 map.txt /*E889*
E89 message.txt /*E89*
E890 syntax.txt /*E890*
E891 eval.txt /*E891*
@@ -4467,11 +4467,8 @@ E892 eval.txt /*E892*
E893 eval.txt /*E893*
E894 eval.txt /*E894*
E895 if_mzsch.txt /*E895*
E896 channel.txt /*E896*
E898 channel.txt /*E898*
E899 channel.txt /*E899*
E90 message.txt /*E90*
E900 channel.txt /*E900*
E901 channel.txt /*E901*
E902 channel.txt /*E902*
E903 channel.txt /*E903*
@@ -4493,6 +4490,15 @@ E917 eval.txt /*E917*
E918 channel.txt /*E918*
E919 repeat.txt /*E919*
E92 message.txt /*E92*
E920 channel.txt /*E920*
E921 channel.txt /*E921*
E922 eval.txt /*E922*
E923 eval.txt /*E923*
E924 quickfix.txt /*E924*
E925 quickfix.txt /*E925*
E926 quickfix.txt /*E926*
E927 eval.txt /*E927*
E928 eval.txt /*E928*
E93 windows.txt /*E93*
E94 windows.txt /*E94*
E95 message.txt /*E95*
@@ -4539,6 +4545,7 @@ G motion.txt /*G*
GNOME gui_x11.txt /*GNOME*
GTK gui_x11.txt /*GTK*
GTK+ gui_x11.txt /*GTK+*
GTK3 gui_x11.txt /*GTK3*
GUI gui.txt /*GUI*
GUI-X11 gui_x11.txt /*GUI-X11*
GUIEnter autocmd.txt /*GUIEnter*
@@ -4561,6 +4568,7 @@ InsertLeave autocmd.txt /*InsertLeave*
J change.txt /*J*
Japanese mbyte.txt /*Japanese*
Job eval.txt /*Job*
Jobs eval.txt /*Jobs*
K various.txt /*K*
KDE gui_x11.txt /*KDE*
KVim gui_x11.txt /*KVim*
@@ -4928,6 +4936,7 @@ add-filetype-plugin usr_05.txt /*add-filetype-plugin*
add-global-plugin usr_05.txt /*add-global-plugin*
add-local-help usr_05.txt /*add-local-help*
add-option-flags options.txt /*add-option-flags*
add-package usr_05.txt /*add-package*
add-plugin usr_05.txt /*add-plugin*
added-5.1 version5.txt /*added-5.1*
added-5.2 version5.txt /*added-5.2*
@@ -4990,6 +4999,9 @@ assert_equal() eval.txt /*assert_equal()*
assert_exception() eval.txt /*assert_exception()*
assert_fails() eval.txt /*assert_fails()*
assert_false() eval.txt /*assert_false()*
assert_match() eval.txt /*assert_match()*
assert_notequal() eval.txt /*assert_notequal()*
assert_notmatch() eval.txt /*assert_notmatch()*
assert_true() eval.txt /*assert_true()*
at motion.txt /*at*
atan() eval.txt /*atan()*
@@ -5111,6 +5123,7 @@ bufwinnr() eval.txt /*bufwinnr()*
bug-fixes-5 version5.txt /*bug-fixes-5*
bug-fixes-6 version6.txt /*bug-fixes-6*
bug-fixes-7 version7.txt /*bug-fixes-7*
bug-fixes-8 version8.txt /*bug-fixes-8*
bug-reports intro.txt /*bug-reports*
bugreport.vim intro.txt /*bugreport.vim*
bugs intro.txt /*bugs*
@@ -5204,7 +5217,25 @@ c_Insert cmdline.txt /*c_Insert*
c_Left cmdline.txt /*c_Left*
c_Right cmdline.txt /*c_Right*
c_Up cmdline.txt /*c_Up*
c_ansi_constants syntax.txt /*c_ansi_constants*
c_ansi_typedefs syntax.txt /*c_ansi_typedefs*
c_comment_strings syntax.txt /*c_comment_strings*
c_curly_error syntax.txt /*c_curly_error*
c_digraph cmdline.txt /*c_digraph*
c_gnu syntax.txt /*c_gnu*
c_no_ansi syntax.txt /*c_no_ansi*
c_no_bracket_error syntax.txt /*c_no_bracket_error*
c_no_bsd syntax.txt /*c_no_bsd*
c_no_c11 syntax.txt /*c_no_c11*
c_no_c99 syntax.txt /*c_no_c99*
c_no_cformat syntax.txt /*c_no_cformat*
c_no_curly_error syntax.txt /*c_no_curly_error*
c_no_if0 syntax.txt /*c_no_if0*
c_no_tab_space_error syntax.txt /*c_no_tab_space_error*
c_no_trail_space_error syntax.txt /*c_no_trail_space_error*
c_no_utf syntax.txt /*c_no_utf*
c_space_errors syntax.txt /*c_space_errors*
c_syntax_for_h syntax.txt /*c_syntax_for_h*
c_wildchar cmdline.txt /*c_wildchar*
call() eval.txt /*call()*
carriage-return intro.txt /*carriage-return*
@@ -5222,6 +5253,7 @@ ch_evalexpr() eval.txt /*ch_evalexpr()*
ch_evalraw() eval.txt /*ch_evalraw()*
ch_getbufnr() eval.txt /*ch_getbufnr()*
ch_getjob() eval.txt /*ch_getjob()*
ch_info() eval.txt /*ch_info()*
ch_log() eval.txt /*ch_log()*
ch_logfile() eval.txt /*ch_logfile()*
ch_open() eval.txt /*ch_open()*
@@ -5264,7 +5296,9 @@ channel-demo channel.txt /*channel-demo*
channel-mode channel.txt /*channel-mode*
channel-more channel.txt /*channel-more*
channel-open channel.txt /*channel-open*
channel-open-options channel.txt /*channel-open-options*
channel-raw channel.txt /*channel-raw*
channel-timeout channel.txt /*channel-timeout*
channel-use channel.txt /*channel-use*
channel.txt channel.txt /*channel.txt*
char-variable eval.txt /*char-variable*
@@ -5330,7 +5364,7 @@ clipboard-html options.txt /*clipboard-html*
clipboard-unnamed options.txt /*clipboard-unnamed*
clipboard-unnamedplus options.txt /*clipboard-unnamedplus*
clojure-indent indent.txt /*clojure-indent*
close-cb channel.txt /*close-cb*
close_cb channel.txt /*close_cb*
cmd-key gui_mac.txt /*cmd-key*
cmd-movement gui_mac.txt /*cmd-movement*
cmd-shortcuts gui_mac.txt /*cmd-shortcuts*
@@ -5365,6 +5399,7 @@ compatible-default starting.txt /*compatible-default*
compile-changes-5 version5.txt /*compile-changes-5*
compile-changes-6 version6.txt /*compile-changes-6*
compile-changes-7 version7.txt /*compile-changes-7*
compile-changes-8 version8.txt /*compile-changes-8*
compiler-compaqada ft_ada.txt /*compiler-compaqada*
compiler-decada ft_ada.txt /*compiler-decada*
compiler-gcc quickfix.txt /*compiler-gcc*
@@ -5698,10 +5733,11 @@ end intro.txt /*end*
end-of-file pattern.txt /*end-of-file*
enlightened-terminal syntax.txt /*enlightened-terminal*
erlang.vim syntax.txt /*erlang.vim*
err-buf channel.txt /*err-buf*
err-cb channel.txt /*err-cb*
err-name channel.txt /*err-name*
err-timeout channel.txt /*err-timeout*
err_buf channel.txt /*err_buf*
err_cb channel.txt /*err_cb*
err_mode channel.txt /*err_mode*
err_name channel.txt /*err_name*
err_timeout channel.txt /*err_timeout*
errmsg-variable eval.txt /*errmsg-variable*
error-file-format quickfix.txt /*error-file-format*
error-messages message.txt /*error-messages*
@@ -6284,6 +6320,7 @@ g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax*
g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject*
g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd*
g:netrw_sshport pi_netrw.txt /*g:netrw_sshport*
g:netrw_suppress_gx_mesg pi_netrw.txt /*g:netrw_suppress_gx_mesg*
g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt*
g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape*
g:netrw_uid pi_netrw.txt /*g:netrw_uid*
@@ -6369,6 +6406,7 @@ g` motion.txt /*g`*
g`a motion.txt /*g`a*
ga various.txt /*ga*
garbagecollect() eval.txt /*garbagecollect()*
garbagecollect_for_testing() eval.txt /*garbagecollect_for_testing()*
gd pattern.txt /*gd*
gdb debug.txt /*gdb*
ge motion.txt /*ge*
@@ -6824,10 +6862,12 @@ improved-viminfo version5.txt /*improved-viminfo*
improvements-5 version5.txt /*improvements-5*
improvements-6 version6.txt /*improvements-6*
improvements-7 version7.txt /*improvements-7*
in-bot channel.txt /*in-bot*
in-buf channel.txt /*in-buf*
in-name channel.txt /*in-name*
in-top channel.txt /*in-top*
improvements-8 version8.txt /*improvements-8*
in_bot channel.txt /*in_bot*
in_buf channel.txt /*in_buf*
in_mode channel.txt /*in_mode*
in_name channel.txt /*in_name*
in_top channel.txt /*in_top*
inactive-buffer windows.txt /*inactive-buffer*
include-search tagsrch.txt /*include-search*
inclusive motion.txt /*inclusive*
@@ -6835,6 +6875,7 @@ incomp-small-6 version6.txt /*incomp-small-6*
incompatible-5 version5.txt /*incompatible-5*
incompatible-6 version6.txt /*incompatible-6*
incompatible-7 version7.txt /*incompatible-7*
incompatible-8 version8.txt /*incompatible-8*
indent() eval.txt /*indent()*
indent-expression indent.txt /*indent-expression*
indent.txt indent.txt /*indent.txt*
@@ -6905,21 +6946,23 @@ javascript-indenting indent.txt /*javascript-indenting*
job channel.txt /*job*
job-callback channel.txt /*job-callback*
job-channel-overview channel.txt /*job-channel-overview*
job-close-cb channel.txt /*job-close-cb*
job-close_cb channel.txt /*job-close_cb*
job-control channel.txt /*job-control*
job-err-cb channel.txt /*job-err-cb*
job-err-io channel.txt /*job-err-io*
job-exit-cb channel.txt /*job-exit-cb*
job-in-io channel.txt /*job-in-io*
job-err_cb channel.txt /*job-err_cb*
job-err_io channel.txt /*job-err_io*
job-exit_cb channel.txt /*job-exit_cb*
job-in_io channel.txt /*job-in_io*
job-options channel.txt /*job-options*
job-out-cb channel.txt /*job-out-cb*
job-out-io channel.txt /*job-out-io*
job-out_cb channel.txt /*job-out_cb*
job-out_io channel.txt /*job-out_io*
job-start channel.txt /*job-start*
job-start-if-needed channel.txt /*job-start-if-needed*
job-start-nochannel channel.txt /*job-start-nochannel*
job-stoponexit channel.txt /*job-stoponexit*
job-term channel.txt /*job-term*
job-timeout channel.txt /*job-timeout*
job_getchannel() eval.txt /*job_getchannel()*
job_info() eval.txt /*job_info()*
job_setoptions() eval.txt /*job_setoptions()*
job_start() eval.txt /*job_start()*
job_status() eval.txt /*job_status()*
@@ -7026,18 +7069,19 @@ location-list quickfix.txt /*location-list*
location-list-window quickfix.txt /*location-list-window*
log() eval.txt /*log()*
log10() eval.txt /*log10()*
logipat pi_logipat.txt /*logipat*
logipat-arg pi_logipat.txt /*logipat-arg*
logipat-caveat pi_logipat.txt /*logipat-caveat*
logipat-contents pi_logipat.txt /*logipat-contents*
logipat-copyright pi_logipat.txt /*logipat-copyright*
logipat-examples pi_logipat.txt /*logipat-examples*
logipat-history pi_logipat.txt /*logipat-history*
logipat-input pi_logipat.txt /*logipat-input*
logipat-man pi_logipat.txt /*logipat-man*
logipat-manual pi_logipat.txt /*logipat-manual*
logipat-operators pi_logipat.txt /*logipat-operators*
logipat-pattern pi_logipat.txt /*logipat-pattern*
logiPat pi_logipat.txt /*logiPat*
logiPat-arg pi_logipat.txt /*logiPat-arg*
logiPat-caveat pi_logipat.txt /*logiPat-caveat*
logiPat-contents pi_logipat.txt /*logiPat-contents*
logiPat-copyright pi_logipat.txt /*logiPat-copyright*
logiPat-examples pi_logipat.txt /*logiPat-examples*
logiPat-history pi_logipat.txt /*logiPat-history*
logiPat-input pi_logipat.txt /*logiPat-input*
logiPat-man pi_logipat.txt /*logiPat-man*
logiPat-manual pi_logipat.txt /*logiPat-manual*
logiPat-operators pi_logipat.txt /*logiPat-operators*
logiPat-pattern pi_logipat.txt /*logiPat-pattern*
logiPat.txt pi_logipat.txt /*logiPat.txt*
long-lines version5.txt /*long-lines*
love intro.txt /*love*
lowercase change.txt /*lowercase*
@@ -7109,6 +7153,7 @@ maillist intro.txt /*maillist*
maillist-archive intro.txt /*maillist-archive*
make.vim syntax.txt /*make.vim*
man.vim filetype.txt /*man.vim*
manpager.vim filetype.txt /*manpager.vim*
manual-copyright usr_01.txt /*manual-copyright*
map() eval.txt /*map()*
map-<SID> map.txt /*map-<SID>*
@@ -7175,6 +7220,7 @@ matchit-install usr_05.txt /*matchit-install*
matchlist() eval.txt /*matchlist()*
matchparen pi_paren.txt /*matchparen*
matchstr() eval.txt /*matchstr()*
matchstrpos() eval.txt /*matchstrpos()*
max() eval.txt /*max()*
mbyte-IME mbyte.txt /*mbyte-IME*
mbyte-XIM mbyte.txt /*mbyte-XIM*
@@ -7523,6 +7569,7 @@ network pi_netrw.txt /*network*
new-5 version5.txt /*new-5*
new-6 version6.txt /*new-6*
new-7 version7.txt /*new-7*
new-8 version8.txt /*new-8*
new-GTK-GUI version5.txt /*new-GTK-GUI*
new-MzScheme version7.txt /*new-MzScheme*
new-Select-mode version5.txt /*new-Select-mode*
@@ -7555,6 +7602,7 @@ new-highlighting version5.txt /*new-highlighting*
new-indent-flex version6.txt /*new-indent-flex*
new-items-6 version6.txt /*new-items-6*
new-items-7 version7.txt /*new-items-7*
new-items-8 version8.txt /*new-items-8*
new-line-continuation version5.txt /*new-line-continuation*
new-location-list version7.txt /*new-location-list*
new-lua version7.txt /*new-lua*
@@ -7597,6 +7645,7 @@ new-user-manual version6.txt /*new-user-manual*
new-utf-8 version6.txt /*new-utf-8*
new-vertsplit version6.txt /*new-vertsplit*
new-vim-script version7.txt /*new-vim-script*
new-vim-script-8 version8.txt /*new-vim-script-8*
new-vim-server version6.txt /*new-vim-server*
new-vimgrep version7.txt /*new-vimgrep*
new-virtedit version6.txt /*new-virtedit*
@@ -7604,6 +7653,7 @@ news intro.txt /*news*
nextnonblank() eval.txt /*nextnonblank()*
nice todo.txt /*nice*
no-eval-feature eval.txt /*no-eval-feature*
no-type-checking eval.txt /*no-type-checking*
no_buffers_menu gui.txt /*no_buffers_menu*
non-greedy pattern.txt /*non-greedy*
non-zero-arg eval.txt /*non-zero-arg*
@@ -7673,13 +7723,16 @@ os_unix.txt os_unix.txt /*os_unix.txt*
os_vms.txt os_vms.txt /*os_vms.txt*
os_win32.txt os_win32.txt /*os_win32.txt*
other-features vi_diff.txt /*other-features*
out-buf channel.txt /*out-buf*
out-cb channel.txt /*out-cb*
out-name channel.txt /*out-name*
out-timeout channel.txt /*out-timeout*
out_buf channel.txt /*out_buf*
out_cb channel.txt /*out_cb*
out_mode channel.txt /*out_mode*
out_name channel.txt /*out_name*
out_timeout channel.txt /*out_timeout*
p change.txt /*p*
pack-add repeat.txt /*pack-add*
package-create repeat.txt /*package-create*
packages repeat.txt /*packages*
packload-two-steps repeat.txt /*packload-two-steps*
page-down intro.txt /*page-down*
page-up intro.txt /*page-up*
page_down intro.txt /*page_down*
@@ -7688,6 +7741,7 @@ pager message.txt /*pager*
papp.vim syntax.txt /*papp.vim*
paragraph motion.txt /*paragraph*
pascal.vim syntax.txt /*pascal.vim*
patches-8 version8.txt /*patches-8*
pathshorten() eval.txt /*pathshorten()*
pattern pattern.txt /*pattern*
pattern-atoms pattern.txt /*pattern-atoms*
@@ -7739,7 +7793,6 @@ php3.vim syntax.txt /*php3.vim*
phtml.vim syntax.txt /*phtml.vim*
pi_getscript.txt pi_getscript.txt /*pi_getscript.txt*
pi_gzip.txt pi_gzip.txt /*pi_gzip.txt*
pi_logipat.txt pi_logipat.txt /*pi_logipat.txt*
pi_netrw.txt pi_netrw.txt /*pi_netrw.txt*
pi_paren.txt pi_paren.txt /*pi_paren.txt*
pi_spec.txt pi_spec.txt /*pi_spec.txt*
@@ -7917,6 +7970,7 @@ r change.txt /*r*
range() eval.txt /*range()*
raw-terminal-mode term.txt /*raw-terminal-mode*
rcp pi_netrw.txt /*rcp*
read-in-close-cb channel.txt /*read-in-close-cb*
read-messages insert.txt /*read-messages*
read-only-share editing.txt /*read-only-share*
read-stdin version5.txt /*read-stdin*
@@ -7940,6 +7994,7 @@ registers change.txt /*registers*
regular-expression pattern.txt /*regular-expression*
reload editing.txt /*reload*
reltime() eval.txt /*reltime()*
reltimefloat() eval.txt /*reltimefloat()*
reltimestr() eval.txt /*reltimestr()*
remote.txt remote.txt /*remote.txt*
remote_expr() eval.txt /*remote_expr()*
@@ -8293,15 +8348,16 @@ startup-terminal term.txt /*startup-terminal*
static-tag tagsrch.txt /*static-tag*
status-line windows.txt /*status-line*
statusmsg-variable eval.txt /*statusmsg-variable*
sticky-type-checking eval.txt /*sticky-type-checking*
str2float() eval.txt /*str2float()*
str2nr() eval.txt /*str2nr()*
strcasestr() eval.txt /*strcasestr()*
strcharpart() eval.txt /*strcharpart()*
strchars() eval.txt /*strchars()*
strchr() eval.txt /*strchr()*
strcspn() eval.txt /*strcspn()*
strdisplaywidth() eval.txt /*strdisplaywidth()*
strftime() eval.txt /*strftime()*
strgetchar() eval.txt /*strgetchar()*
stridx() eval.txt /*stridx()*
string eval.txt /*string*
string() eval.txt /*string()*
@@ -8330,6 +8386,7 @@ sub-replace-special change.txt /*sub-replace-special*
sublist eval.txt /*sublist*
submatch() eval.txt /*submatch()*
subscribe-maillist intro.txt /*subscribe-maillist*
subscript eval.txt /*subscript*
substitute() eval.txt /*substitute()*
substitute-CR version6.txt /*substitute-CR*
suffixes cmdline.txt /*suffixes*
@@ -8379,6 +8436,8 @@ t_#4 term.txt /*t_#4*
t_%1 term.txt /*t_%1*
t_%i term.txt /*t_%i*
t_&8 term.txt /*t_&8*
t_8b term.txt /*t_8b*
t_8f term.txt /*t_8f*
t_@7 term.txt /*t_@7*
t_AB term.txt /*t_AB*
t_AF term.txt /*t_AF*
@@ -8645,6 +8704,7 @@ terminal-options term.txt /*terminal-options*
terminfo term.txt /*terminfo*
termresponse-variable eval.txt /*termresponse-variable*
test-functions usr_41.txt /*test-functions*
testing-variable eval.txt /*testing-variable*
tex-cchar syntax.txt /*tex-cchar*
tex-cole syntax.txt /*tex-cole*
tex-conceal syntax.txt /*tex-conceal*
@@ -8674,6 +8734,8 @@ throw-from-catch eval.txt /*throw-from-catch*
throw-variables eval.txt /*throw-variables*
throwpoint-variable eval.txt /*throwpoint-variable*
time-functions usr_41.txt /*time-functions*
timer_start() eval.txt /*timer_start()*
timer_stop() eval.txt /*timer_stop()*
timestamp editing.txt /*timestamp*
timestamps editing.txt /*timestamps*
tips tips.txt /*tips*
@@ -8839,12 +8901,14 @@ v:swapchoice eval.txt /*v:swapchoice*
v:swapcommand eval.txt /*v:swapcommand*
v:swapname eval.txt /*v:swapname*
v:termresponse eval.txt /*v:termresponse*
v:testing eval.txt /*v:testing*
v:this_session eval.txt /*v:this_session*
v:throwpoint eval.txt /*v:throwpoint*
v:true eval.txt /*v:true*
v:val eval.txt /*v:val*
v:var eval.txt /*v:var*
v:version eval.txt /*v:version*
v:vim_did_enter eval.txt /*v:vim_did_enter*
v:warningmsg eval.txt /*v:warningmsg*
v:windowid eval.txt /*v:windowid*
v_! change.txt /*v_!*
@@ -8986,6 +9050,7 @@ version-7.1 version7.txt /*version-7.1*
version-7.2 version7.txt /*version-7.2*
version-7.3 version7.txt /*version-7.3*
version-7.4 version7.txt /*version-7.4*
version-8.0 version8.txt /*version-8.0*
version-variable eval.txt /*version-variable*
version4.txt version4.txt /*version4.txt*
version5.txt version5.txt /*version5.txt*
@@ -8996,6 +9061,8 @@ version7.2 version7.txt /*version7.2*
version7.3 version7.txt /*version7.3*
version7.4 version7.txt /*version7.4*
version7.txt version7.txt /*version7.txt*
version8.0 version8.txt /*version8.0*
version8.txt version8.txt /*version8.txt*
vi intro.txt /*vi*
vi-differences vi_diff.txt /*vi-differences*
vi: options.txt /*vi:*
@@ -9004,6 +9071,8 @@ view starting.txt /*view*
view-diffs diff.txt /*view-diffs*
view-file starting.txt /*view-file*
views-sessions starting.txt /*views-sessions*
vim-7.4 version7.txt /*vim-7.4*
vim-8 version8.txt /*vim-8*
vim-additions vi_diff.txt /*vim-additions*
vim-announce intro.txt /*vim-announce*
vim-arguments starting.txt /*vim-arguments*
@@ -9017,8 +9086,11 @@ vim-script-intro usr_41.txt /*vim-script-intro*
vim-variable eval.txt /*vim-variable*
vim.vim syntax.txt /*vim.vim*
vim7 version7.txt /*vim7*
vim8 version8.txt /*vim8*
vim: options.txt /*vim:*
vim_did_enter-variable eval.txt /*vim_did_enter-variable*
vim_mac gui_mac.txt /*vim_mac*
vim_starting eval.txt /*vim_starting*
vimball pi_vimball.txt /*vimball*
vimball-contents pi_vimball.txt /*vimball-contents*
vimball-extract pi_vimball.txt /*vimball-extract*
@@ -9123,6 +9195,11 @@ win32-term os_win32.txt /*win32-term*
win32-vimrun gui_w32.txt /*win32-vimrun*
win32-win3.1 os_win32.txt /*win32-win3.1*
win32s os_win32.txt /*win32s*
win_findbuf() eval.txt /*win_findbuf()*
win_getid() eval.txt /*win_getid()*
win_gotoid() eval.txt /*win_gotoid()*
win_id2tabwin() eval.txt /*win_id2tabwin()*
win_id2win() eval.txt /*win_id2win()*
winbufnr() eval.txt /*winbufnr()*
wincol() eval.txt /*wincol()*
window windows.txt /*window*
@@ -9216,6 +9293,7 @@ xterm-save-screen tips.txt /*xterm-save-screen*
xterm-screens tips.txt /*xterm-screens*
xterm-scroll-region term.txt /*xterm-scroll-region*
xterm-shifted-keys term.txt /*xterm-shifted-keys*
xterm-true-color term.txt /*xterm-true-color*
y change.txt /*y*
yaml.vim syntax.txt /*yaml.vim*
yank change.txt /*yank*
+26 -3
View File
@@ -1,4 +1,4 @@
*term.txt* For Vim version 7.4. Last change: 2015 Nov 24
*term.txt* For Vim version 7.4. Last change: 2016 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -302,7 +302,10 @@ Added by Vim (there are no standard codes for these):
t_u7 request cursor position (for xterm) *t_u7* *'t_u7'*
see |'ambiwidth'|
t_RB request terminal background color *t_RB* *'t_RB'*
see |'ambiwidth'|
t_8f set foreground color (R, G, B) *t_8f* *'t_8f'*
|xterm-true-color|
t_8b set background color (R, G, B) *t_8b* *'t_8b'*
|xterm-true-color|
KEY CODES
Note: Use the <> form if possible
@@ -419,6 +422,26 @@ VT220, etc.). The result is that codes like <xF1> are no longer needed.
Note: This is only done on startup. If the xterm options are changed after
Vim has started, the escape sequences may not be recognized anymore.
*xterm-true-color*
Vim supports using true colors in the terminal (taken from |highlight-guifg|
and |highlight-guibg|), given that the terminal supports this. To make this
work the 'termguicolors' option needs to be set.
Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
and |t_8b| options explicitly. Default values of these options are
"^[[38;2;%lu;%lu;%lum" and "^[[48;2;%lu;%lu;%lum" respectively, but it is only
set when `$TERM` is `xterm`. Some terminals accept the same sequences, but
with all semicolons replaced by colons (this is actually more compatible, but
less widely supported): >
set t_8f=^[[38:2:%lu:%lu:%lum
set t_8b=^[[48:2:%lu:%lu:%lum
(replace `^[` with real escape)
These options contain printf strings, with |printf()| (actually, its C
equivalent hence `l` modifier) invoked with the t_ option value and three
unsigned long integers that may have any value between 0 and 255 (inclusive)
representing red, green and blue colors respectively.
*xterm-resize*
Window resizing with xterm only works if the allowWindowOps resource is
enabled. On some systems and versions of xterm it's disabled by default
@@ -542,7 +565,7 @@ correct values.
One command can be used to set the screen size:
*:mod* *:mode* *E359* *E362*
*:mod* *:mode* *E359*
:mod[e] [mode]
Without argument this only detects the screen size and redraws the screen.
+159 -149
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.4. Last change: 2016 Mar 11
*todo.txt* For Vim version 7.4. Last change: 2016 Apr 30
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -27,102 +27,68 @@ Priority classification:
See |develop.txt| for development plans. You can vote for which items should
be worked on, but only if you sponsor Vim development. See |sponsor|.
Issues can also be entered online: http://code.google.com/p/vim/issues/list
Issues can also be entered online: https://github.com/vim/vim/issues
Updates will be forwarded to the vim_dev maillist. Issues entered there will
not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Athena version doesn't start up. Related to termguicolors change. (Kelvin
Lee)
Test_out_close_cb sometimes fails.
Why is DETACH not send to OutHandler()?
Vim reliably crashes when freeing the job and operator-pending mode is active.
(James McCoy, 2016 Apr 26)
Using close callback to read output doesn't work reliably.
(Andrew Stewart, 2016 Apr 27)
problem with "Ignore" after adding 'guicolors'. (Charles Campbell, 2016 Apr
27)
In test_partial when start_job() has a non-existing command memory leaks.
Memory leak in test49
Memory leak in test_alot, with matchstrpos()
Packages:
Also keep a list of loaded plugins, skip when encountered again?
Vim.org: when a user already has a homepage, do show the field so that it can
be deleted.
Running gvim from Agide causes a crash.
+channel:
- CHANNEL_PIPES -> FEAT_JOB
- FEAT_JOB / FEAT_CHANNEL -> FEAT_JOBCHANNEL ?
- move code from eval.c to channel.c
- add job_info(): process ID, run/dead, etc.
- add ch_info(): in/out/err mode, timeout, callbacks, etc.
- Move more details from eval.txt to channel.txt. Add tags in eval.txt.
- When receiving malformed json starting with a quote it doesn't get
discarded. Any invalid JSON or JSON that isn't a list will block further
parsing?
- When decoding json, don't read all the typeahead at once, use the reader
properly.
- Only add DETACH message for netbeans.
- GUI:cursor blinking is irregular when invoking callbacks. (Ramel Eshed, 2016
Apr 16) somehow remember the previous state?
- When a message in the queue but there is no callback, drop it after a while?
Add timestamp to queued messages and callbacks with ID, remove after a
minute. Option to set the droptime.
- Add more ch_log calls, basically at every branch, before every callback, etc.
- Add remark about undo sync, is there a way to force it?
- When starting a job, have an option to open the server socket, so we know
the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz,
Feb 9) How to do this on MS-Windows?
- Add more unit-testing in json_test.c
- Add a test where ["eval","getline(123)"] gets a line with special
characters (NUL, 0x80, etc.). Check that it isn't garbled.
- Make sure errors lead to a useful error msg. ["ex","foobar"]
- For connection to server, a "keep open" flag would be useful. Retry
connecting in the main loop with zero timeout.
Later
- job_start(): run job in a newly opened terminal.
With xterm could use -S{pty}.
emoji patch from Yasuhiro Matsumoto. Asked Thomas Dickey.
Make it so that the window ID can be used where currently a window nr is used
Remove sticky type checking.
Packages:
- Add command to update help tags in 'runtimepath'. Pathogen has something
like that.
- colorscheme command in .vimrc doesn't work.
- Also search in 'packpath', both "start" and "opt", don't add dir to 'rtp'
- command like :runtime that also search 'packpath'. :packruntime
use "ever" or "opt"? both?
- command to load packages now?
More plugin support:
- Have a way to install a callback from the main loop. Called every second or
so.
- Need way to uniquely identify a window, no matter how windows are
rearranged. Same for tab pages.
getwinid() ID of current winow
getwinid({nr}) ID of window {nr}
getwinid({nr}, {tab}) ID of window {nr} in tab page {tab}
getwinnr({id}) window nr of {id} or -1 if not open
gettabnr({id}) tab page nr of {id} or -1 if not open
gotowin({id})
Make it so that the window ID can be used where currently a window nr is used
Patch from Anton Lindqvist, 2016 Feb 21, to make bufwinnr() return a list.
Perhaps add bufwinid() instead.
This difference is unexpected:
echo v:true == 1
1
echo [v:true] == [1]
0
It's because tv_equal() works different.
Compiler warnings. (John Marriott, Feb 17)
Compiler warnings in if_ole.cpp. Patch by Ken Takata, Feb 18.
When running "make install" don't overwrite the doc/tags file, generate it
elsewhere, so that the distributed file doesn't change.
Fix to support --nofork for Windows batch files. (Kevin Cantú, 2016 Feb 23,
#658, #659) Also add "setlocal" at top of batch file?
Patch to add matchstrpos(). (Ozaki Kiichi, 2016 Feb 28)
Why does this: echo "a" . 1.1
result in: a11
Should recognize float (so long as it's not ".1.1").
Allow for an empty dictionary key?
Patch to improve I/O for Perl. (Damien, 2016 Jan 9, update Jan 22 2nd one)
Patch to fix ml_get error. (Alexander Freiherr von Buddenbrock, 2016 Mar 4,
#676)
Patch to fix invalid behavior with NULL list. (Nikolai Pavlov, #768)
Also check :for.
Regexp problems:
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
(Manuel Ortega, 2016 Apr 24)
Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on
LC_CTYPE
- The regexp engines are not reentrant, causing havoc when interrupted by a
remote expression or something else. Move global variables onto the stack
or into an allocated struct.
@@ -143,6 +109,7 @@ Regexp problems:
- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
- Does not work with NFA regexp engine:
\%u, \%x, \%o, \%d followed by a composing character
- \%'[ does not work. '%'] does work. (Masaaki Nakamura, 2016 Apr 4)
- Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
- New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle,
2015 Feb 7)
@@ -164,23 +131,56 @@ Regexp problems:
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
- Search for \\~ causes error E874.
Patch to fix that folds close with autocomplete. #643
Christian Brabandt, 2016 Feb 18.
Using freed memory in quickfix code. (Dominique, 2016 Mar 21)
Also include update_curswant() fix for getcurpos(). (Christian Brabandt, 2016
Feb 9)
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?
Patch to put undo options together in undo window.
(Gary Johnson, 2016 Jan 28)
Once .exe with updated installer is available: Add remark to download page
about /S and /D options (Ken Takata, 2016 Apr 13)
Patch to have better check for {action} argument of setqflist().
Nikolai Pavlov, Feb 25, #661. Can be even more strict.
Also see patch from Hirohito Higash, Feb 25.
Patch to make cursor blinking work better with GTK3. (Kazunobu Kuriyama, 2016
Apr 19) Need to check this works on Linux.
Alternative:
- add gui_restart_blink flag, set when key typed.
- in gui_mch_start_blink(): continue if possible.
- in gui_mch_stop_blink(): remember last state.
Patch to update the GTK icon cache when installing. (Kazunobu Kuriyama, 2016
Feb 3)
Use ADDR_OTHER instead of ADDR_LINES for many more commands.
Add tests for using number larger than number of lines in buffer.
Patch for test86 and test87. (Roland Puntaier, #622)
Patch to fix escaping special characters for delete(). (tc-0, 2016 Mar 20,
#700) Test fails on MS-Windows.
When 'autochdir' is set, writing new file does not change the current dir.
(Dan Church, issue #777)
ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
Also with latest version.
Patch to load rgb.txt once. (Christian Brabandt, 2016 Apr 29)
Still problems with 'emoji'. See issue #721. Patch 7.4.1697 half-fixes it.
Avoid PLAN_WRITE in windgoto() ?
Should already never use utf-8 chars to position the cursor.
Cannot delete a file with square brackets with delete(). (#696)
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
(Felipe Morales, 2015 Feb 1)
Patch on issue #728 by Christian Brabandt, 2016 Apr 7. Update with test: Apr 8.
Explanation Apr 12.
Might be related to:
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
Patch to add 'topbot' to 'belloff' option. (Coot, 2016 Mar 18, #695)
Patch for C syntax HL. (Bradley Garagan, 2016 Apr 17) #763
Patch to make matchit work better, respect 'matchpairs'. (Ken Takata, 2016 Mar
25)
We can use '. to go to the last change in the current buffer, but how about
the last change in any buffer? Can we use ', (, is next to .)?
@@ -188,21 +188,46 @@ the last change in any buffer? Can we use ', (, is next to .)?
Patch for Python: #622. (Roland Puntaier, 2016 Feb 2)
What does it change?
It's possible to add ",," to 'wildignore', an empty entry. Causes problems.
Reject the value? #710.
Patch to support strikethrough next to bold and italic. (Christian Brabandt,
2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
Update mentioned by Christian, 2016 Apr 25.
Update from Ken Takata, 2016 Apr 26.
Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
More tests May 14. Update May 29. Update Aug 10.
Now part of large file patches. (Ken Takata, 2016 Feb 1)
Two patches now? New update Feb 24.
Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
pointer in long and seek offset in 64 bit var.
Patches from Ken Takata might help (2014 Apr 17)
Update 2016 Mar 28. Can include all parts into one dist patch.
Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
Also in update of Feb 24?
Update 2016 Apr 24.
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
Updated 2016 Feb 10
Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
No test, needs some work to include.
>
Patch to improve indenting for C++ constructor with initializer list.
(Hirohito Higashi, 2016 Mar 31)
After 7.5 is released:
- Drop support for older MS-Windows systems, before XP.
Patch from Ken Takata, 2016 Mar 8.
Add stronger encryption. Could use libsodium (NaCl).
https://github.com/jedisct1/libsodium/
Possibly include the needed code so that it can be build everywhere.
Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki
Kiichi, 2016 Feb 28)
Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98
Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98
Need to try out instructions in INSSTALLpc.txt about how to install all
interfaces and how to build Vim with them.
@@ -210,9 +235,6 @@ Appveyor build with self-installing executable, includes getting most
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
result: https://ci.appveyor.com/project/k-takata/vim/history
Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
More info Jul 24. Not clear why.
Duplication of completion suggestions for ":!hom". Issue 539.
Patch by Christian, 2016 Jan 29
>
@@ -221,8 +243,15 @@ work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)
Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?
Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
Apr 17) #762
Patch to support expression argument to sort() instead of a function name.
Yasuhiro Matsumoto, 2013 May 31.
Or should we add a more general mechanism, like a lambda() function?
Patch by Yasuhiro Matsumoto, 2014 Sep 16, update 2016 Apr 17.
Should jsonencode()/jsondecode() restrict recursiveness?
Or avoid recursiveness.
@@ -235,6 +264,10 @@ Patch to make "%:h:h" return "." instead of the full path.
Remove SPACE_IN_FILENAME ? What could possibly go wrong?
Patch to change GUI behavior: instead of changing the window size change the
lines/columns when menu/toolbar/etc. is added/removed. (Ychin, 2016 Mar 20,
#703)
Installation of .desktop files does not work everywhere.
It's now fixed, but the target directory probably isn't right.
Add configure check?
@@ -242,29 +275,36 @@ Should use /usr/local/share/applications or /usr/share/applications.
Or use $XDG_DATA_DIRS.
Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
Move the README files that are for including in archives to a subdirectory.
"readmedir/" ?
Access to uninitialized memory in match_backref() regexp_nda.c:4882
(Dominique Pelle, 2015 Nov 6)
":cd C:\Windows\System32\drivers\etc*" does not work, even though the
directory exists. (Sergio Gallelli, 2013 Dec 29)
Patch to avoid redrawing tabline when the popup menu is visible.
(Christian Brabandt, 2016 Jan 28)
Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
7 Add a watchpoint in the debug mode: An expression that breaks execution
when evaluating to non-zero. Add the "watchadd expr" command, stop when
the value of the expression changes. ":watchdel" deletes an item,
":watchlist" lists the items. (Charles Campbell)
Patch by Christian Brabandt, 2016 Feb 1.
If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe,
2016 Apr 25, #780)
Patch to avoid redrawing tabline when the popup menu is visible.
(Christian Brabandt, 2016 Jan 28)
Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
Add value "smart" to 'tagcase': ignore case when tag is all lower case.
Patch from Christian Brabandt, 2016 Mar 30, #712.
Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
restore the mode properly. (Andrew Stewart, 2016 Apr 20)
Do not trigger the event?
Using ":windo" to set options in all windows has the side effect that it
changes the window layout and the current window. Make a variant that saves
and restores. Use in the matchparen plugin.
@@ -283,6 +323,8 @@ https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
Patch to make the behavior of "w" more straightforward, but not Vi compatible.
With a 'cpo' flag. (Christian Brabandt, 2016 Feb 8)
Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)
Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17)
@@ -333,6 +375,9 @@ Patch to add :mapgroup, put mappings in a group like augroup.
Value returned by virtcol() changes depending on how lines wrap. This is
inconsistent with the documentation.
Patch to add filtering of the quickfix list. (Yegappan Lakshmanan, 2016 Mar
13, last version) Update Mar 21., Apr 2.
Can we cache the syntax attributes, so that updates for 'relativenumber' and
'cursorline'/'cursorcolumn' are a lot faster?
@@ -344,7 +389,7 @@ Use v:none. var == v:none
Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan
24) Also need a way to get the global arg list? Update later on Jan 24
Update Mar 5.
Update Mar 5. Update Apr 7.
To support Thai (and other languages) word boundaries, include the ICU
library: http://userguide.icu-project.org/boundaryanalysis
@@ -352,15 +397,9 @@ library: http://userguide.icu-project.org/boundaryanalysis
When complete() first argument is before where insert started and 'backspace'
is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
30)
Weird encryption problems on Windows. (Ben Fritz, 2015 Feb 13)
Goes away when disabling the swap file. (might1, Feb 16)
MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29)
@@ -389,9 +428,6 @@ Crash in :cnext on MS-Windows. (Ben Fritz, 2015 Oct 27)
When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
Patch to add GUI colors to the terminal, when it supports it. (ZyX, 2013 Jan
26, update 2013 Dec 14, another 2014 Nov 22)
Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
Sep 10)
@@ -399,7 +435,7 @@ Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
Needs a different check for CLEARTYPE_QUALITY.
Problem mentioned by Christian Brabandt, 2016 Jan 4.
Example in editing.txt uses $HOME with the expectating that it ends in a
Example in editing.txt uses $HOME with the expectation that it ends in a
slash. For me it does, but perhaps not for everybody. Add a function that
inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
@@ -412,10 +448,6 @@ Patch to fix checking global option value when not using it.
When 'showbreak' is set repeating a Visual operation counts the size of the
'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
Patch to apply 'fileformats' when starting Vim. (Mike Williams, 2015 Jul 22)
Patch for matchit plugin related to multibyte chars. (Ken Takata, 2015 Jul 22)
Patch for multi-byte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution? Need to cleanup langmap behavior:
@@ -426,6 +458,7 @@ Is this the right solution? Need to cleanup langmap behavior:
covered by the above change.
So that replaying the register doesn't use keymap/langmap and still does the
same thing. Remarks on issue 543 (Roland Puntaier).
Also see #737: langmap not applied to replaying recording.
Patch to add grepfile(). (Scott Prager, 2015 May 26)
Work in progress.
@@ -471,6 +504,7 @@ Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
Patch for drag&drop reordering of GUI tab pages reordering.
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
Update 2016 Mar 15.
Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
@@ -560,9 +594,6 @@ Jun 8)
Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not
insert a space. (Micha Mos, 2014 Nov 7)
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
Updated 2016 Feb 10
Patch to add argument to :cquit. (Thinca, 2014 Oct 12)
No error for missing endwhile. (ZyX, 2014 Mar 20)
@@ -596,9 +627,6 @@ What for systems that don't have unsetenv()?
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
(Felipe Morales, 2015 Feb 1)
This does not give an error: (Andre Sihera, 2014 Mar 21)
vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
This neither: (ZyX)
@@ -665,14 +693,6 @@ various other commands. (ZyX, 2014 Mar 30)
Patch to skip sort if no line matches the expression.
(Christian Brabandt, 2014 Jun 25)
Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
Or add uniq() instead? Patch by lcd47, but it has problems.
Patch to support expression argument to sort() instead of a function name.
Yasuhiro Matsumoto, 2013 May 31.
Or should we add a more general mechanism, like a lambda() function?
Patch by Yasuhiro Matsumoto, 2014 Sep 16.
VMS: Select() doesn't work properly, typing ESC may hang Vim. Use sys$qiow
instead. (Samuel Ferencik, 2013 Sep 28)
@@ -802,6 +822,9 @@ May 17: with winlist() and tabpagelist().
May 19: with local variables.
May 28: with options
Patch to add getbufinfo(), gettabinfo() and getwininfo(). (Yegappan
Lakshmanan, 2016 Apr 2016)
Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
28) With tests: Oct 9.
@@ -1591,9 +1614,6 @@ probably causes this.
'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
2009 Jan 16)
Patch to support strikethrough next to bold and italic. (Christian Brabandt,
2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
Document that default font in Athena can be set with resources:
XtDefaultFont: "9x15"
XtDefaultFontSet: "9x15"
@@ -1938,10 +1958,6 @@ Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
with the more prompt. Caused by setting the guitablabel? (Thomas Michael
Engelke, 2007 Dec 20 - 2008 Jan 17)
Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
pointer in long and seek offset in 64 bit var.
Patches from Ken Takata might help (2014 Apr 17)
Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
@@ -3732,7 +3748,7 @@ Syntax highlighting:
unprintable char another color. Would be useful for ^M at end of line.
Built-in script language:
Vim script language:
8 Make the filename and line number available to script functions, so that
they can give useful debugging info. The whole call stack would be ideal.
At least use this for error messages.
@@ -3753,14 +3769,10 @@ Built-in script language:
7 ":include" command: just like ":source" but doesn't start a new scriptID?
Will be tricky for the list of script names.
8 Have a look at VSEL. Would it be useful to include? (Bigham)
8 Add ":fungroup" command, to group function definitions together. When
encountered, all functions in the group are removed. Suggest using an
obscure name to avoid name clashes. Require a ":fungroup END" in the same
sourced file? Assume the group ends at the end of the file. Handle
nested packages?
Alternative: Support packages. {package-name}:{function-name}().
Packages are loaded automatically when first used, from
$VIMRUNTIME/packages (or use a search path).
8 Have a prefix for a function to make it unique. When using packages it
can be the plugin name.
Perhaps also have a way to remove everything that the package added?
including autocommands.
7 Pre-parse or compile Vim scripts into a bytecode.
1. Put the bytecode with the original script, with an ":if
has('bytecode')" around it, so that it's only used with a Vim that
@@ -3777,8 +3789,6 @@ Built-in script language:
8 Add functions:
has(":command") Check if ":command" works. compare function
with "ex_ni". E.g. for ":simalt".
system() With a List argument. Bypasses the shell, use
exec() directly. (Bob Hiestand)
escape() Add argument to specify what to escape with.
modestack() Instead of just the current mode return the
stack of Insert / CTRL-O / :normal things.
@@ -4881,7 +4891,7 @@ Searching:
lines 23 to 45? Or does this conflict with Ex range syntax?
8 Allow identical pairs in 'matchpairs'. Restrict the search to the current
line.
7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an
7 Allow longer pairs in 'matchpairs'. Use matchit.vim as an
example.
8 Make it possible to define the character that "%" checks for in
#if/#endif. For nmake it's !if/!endif.
+59 -25
View File
@@ -1,4 +1,4 @@
*usr_05.txt* For Vim version 7.4. Last change: 2012 Nov 20
*usr_05.txt* For Vim version 7.4. Last change: 2016 Mar 28
VIM USER MANUAL - by Bram Moolenaar
@@ -12,10 +12,11 @@ Vim's capabilities. Or define your own macros.
|05.1| The vimrc file
|05.2| The example vimrc file explained
|05.3| Simple mappings
|05.4| Adding a plugin
|05.5| Adding a help file
|05.6| The option window
|05.7| Often used options
|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
Next chapter: |usr_06.txt| Using syntax highlighting
Previous chapter: |usr_04.txt| Making small changes
@@ -263,7 +264,45 @@ The ":map" command (with no arguments) lists your current mappings. At
least the ones for Normal mode. More about mappings in section |40.1|.
==============================================================================
*05.4* Adding a plugin *add-plugin* *plugin*
*05.4* Adding a package *add-package* *matchit-install*
A package is a set of files that you can add to Vim. There are two kinds of
packages: optional and automatically loaded on startup.
The Vim distribution comes with a few packages that you can optionally use.
For example, the matchit plugin. This plugin makes the "%" command jump to
matching HTML tags, if/else/endif in Vim scripts, etc. Very useful, although
it's not backwards compatible (that's why it is not enabled by default).
To start using the matchit plugin, add one line to your vimrc file: >
packadd! matchit
That's all! After restarting Vim you can find help about this plugin: >
:help matchit
This works, because when `:packadd` loaded the plugin it also added the
package directory in 'runtimepath', so that the help file can be found.
You can find packages on the Internet in various places. It usually comes as
an archive or as a repository. For an archive you can follow these steps:
1. create the package directory: >
mkdir -p ~/.vim/pack/fancy
< "fancy" can be any name of your liking. Use one that describes the
package.
2. unpack the archive in that directory. This assumes the top
directory in the archive is "start": >
cd ~/.vim/pack/fancy
unzip /tmp/fancy.zip
< If the archive layout is different make sure that you end up with a
path like this:
~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim ~
Here "fancytext" is the name of the package, it can be anything
else.
More information about packages can be found here: |packages|.
==============================================================================
*05.5* Adding a plugin *add-plugin* *plugin*
Vim's functionality can be extended by adding plugins. A plugin is nothing
more than a Vim script file that is loaded automatically when Vim starts. You
@@ -324,10 +363,9 @@ Example for Unix (assuming you didn't have a plugin directory yet): >
mkdir ~/.vim
mkdir ~/.vim/plugin
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
cp /tmp/yourplugin.vim ~/.vim/plugin
That's all! Now you can use the commands defined in this plugin to justify
text.
That's all! Now you can use the commands defined in this plugin.
Instead of putting plugins directly into the plugin/ directory, you may
better organize them by putting them into subdirectories under plugin/.
@@ -415,23 +453,19 @@ Further reading:
|new-filetype| How to detect a new file type.
==============================================================================
*05.5* Adding a help file *add-local-help* *matchit-install*
*05.6* Adding a help file *add-local-help*
If you are lucky, the plugin you installed also comes with a help file. We
will explain how to install the help file, so that you can easily find help
for your new plugin.
Let us use the "matchit.vim" plugin as an example (it is included with
Vim). This plugin makes the "%" command jump to matching HTML tags,
if/else/endif in Vim scripts, etc. Very useful, although it's not backwards
compatible (that's why it is not enabled by default).
This plugin comes with documentation: "matchit.txt". Let's first copy the
plugin to the right directory. This time we will do it from inside Vim, so
that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if
you already have the directory.) >
Let us use the "doit.vim" plugin as an example. This plugin comes with
documentation: "doit.txt". Let's first copy the plugin to the right
directory. This time we will do it from inside Vim. (You may skip some of
the "mkdir" commands if you already have the directory.) >
:!mkdir ~/.vim
:!mkdir ~/.vim/plugin
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
:!cp /tmp/doit.vim ~/.vim/plugin
The "cp" command is for Unix, on MS-DOS you can use "copy".
@@ -441,7 +475,7 @@ Now create a "doc" directory in one of the directories in 'runtimepath'. >
Copy the help file to the "doc" directory. >
:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
:!cp /tmp/doit.txt ~/.vim/doc
Now comes the trick, which allows you to jump to the subjects in the new help
file: Generate the local tags file with the |:helptags| command. >
@@ -450,10 +484,10 @@ file: Generate the local tags file with the |:helptags| command. >
Now you can use the >
:help g%
:help doit
command to find help for "g%" in the help file you just added. You can see an
entry for the local help file when you do: >
command to find help for "doit" in the help file you just added. You can see
an entry for the local help file when you do: >
:help local-additions
@@ -464,7 +498,7 @@ them through the tag.
For writing a local help file, see |write-local-help|.
==============================================================================
*05.6* The option window
*05.7* The option window
If you are looking for an option that does what you want, you can search in
the help files here: |options|. Another way is by using this command: >
@@ -503,7 +537,7 @@ border. This is what the 'scrolloff' option does, it specifies an offset
from the window border where scrolling starts.
==============================================================================
*05.7* Often used options
*05.8* Often used options
There are an awful lot of options. Most of them you will hardly ever use.
Some of the more useful ones will be mentioned here. Don't forget you can
+7 -3
View File
@@ -1,4 +1,4 @@
*usr_25.txt* For Vim version 7.4. Last change: 2014 Oct 29
*usr_25.txt* For Vim version 7.4. Last change: 2016 Mar 28
VIM USER MANUAL - by Bram Moolenaar
@@ -196,12 +196,16 @@ Vim has no built-in way of justifying text. However, there is a neat macro
package that does the job. To use this package, execute the following
command: >
:runtime macros/justify.vim
:packadd justify
Or put this line in your |vimrc|: >
packadd! justify
This Vim script file defines a new visual command "_j". To justify a block of
text, highlight the text in Visual mode and then execute "_j".
Look in the file for more explanations. To go there, do "gf" on this name:
$VIMRUNTIME/macros/justify.vim.
$VIMRUNTIME/pack/dist/opt/justify/plugin/justify.vim.
An alternative is to filter the text through an external program. Example: >
+10 -3
View File
@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 7.4. Last change: 2016 Feb 14
*usr_41.txt* For Vim version 7.4. Last change: 2016 Apr 12
VIM USER MANUAL - by Bram Moolenaar
@@ -592,6 +592,7 @@ String manipulation: *string-functions*
match() position where a pattern matches in a string
matchend() position where a pattern match ends in a string
matchstr() match of a pattern in a string
matchstrpos() match and postions of a pattern in a string
matchlist() like matchstr() and also return submatches
stridx() first index of a short string in a long string
strridx() last index of a short string in a long string
@@ -768,6 +769,7 @@ Date and Time: *date-functions* *time-functions*
strftime() convert time to a string
reltime() get the current or elapsed time accurately
reltimestr() convert reltime() result to a string
reltimefloat() convert reltime() result to a Float
*buffer-functions* *window-functions* *arg-functions*
Buffers, windows and the argument list:
@@ -889,9 +891,14 @@ Mappings: *mapping-functions*
wildmenumode() check if the wildmode is active
Testing: *test-functions*
assert_equal() assert that two expressions values are equal
assert_equal() assert that two expressions values are equal
assert_notequal() assert that two expressions values are not equal
assert_match() assert that a pattern matches the value
assert_notmatch() assert that a pattern does not match the value
assert_false() assert that an expression is false
assert_true() assert that an expression is true
assert_exception() assert that a command throws an exception
assert_fails() assert that a function call fails
Inter-process communication:
ch_open() open a channel
@@ -932,7 +939,7 @@ Various: *various-functions*
perleval() evaluate Perl expression (|+perl|)
py3eval() evaluate Python expression (|+python3|)
pyeval() evaluate Python expression (|+python|)
wordcount() get byte/word/char count of buffer
wordcount() get byte/word/char count of buffer
==============================================================================
*41.7* Defining a function
+6 -5
View File
@@ -1,4 +1,4 @@
*usr_toc.txt* For Vim version 7.4. Last change: 2010 Jul 20
*usr_toc.txt* For Vim version 7.4. Last change: 2016 Mar 25
VIM USER MANUAL - by Bram Moolenaar
@@ -104,10 +104,11 @@ Read this from start to end to learn the essential commands.
|05.1| The vimrc file
|05.2| The example vimrc file explained
|05.3| Simple mappings
|05.4| Adding a plugin
|05.5| Adding a help file
|05.6| The option window
|05.7| Often used options
|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
|usr_06.txt| Using syntax highlighting
|06.1| Switching it on
+3 -1
View File
@@ -1,4 +1,4 @@
*various.txt* For Vim version 7.4. Last change: 2016 Feb 27
*various.txt* For Vim version 7.4. Last change: 2016 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -426,8 +426,10 @@ m *+tcl* Tcl interface |tcl|
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
*+terminfo* uses |terminfo| instead of termcap
N *+termresponse* support for |t_RV| and |v:termresponse|
B *+termguicolors* 24-bit color in xterm-compatible terminals support
N *+textobjects* |text-objects| selection
*+tgetent* non-Unix only: able to use external termcap
N *+timers* the |timer_start()| function
N *+title* Setting the window 'title' and 'icon'
N *+toolbar* |gui-toolbar|
m *+transparency* MacVim only: window background transparency
+3 -3
View File
@@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.4. Last change: 2014 Aug 29
*version7.txt* For Vim version 7.4. Last change: 2016 Apr 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1683,7 +1683,7 @@ work. Use "LPT1" then.
The GTK font dialog uses a font size zero when the font name doesn't include a
size. Use a default size of 10.
This example in the documentation didn't work:
This example in the documentation didn't work: >
:e `=foo . ".c"`
Skip over the expression in `=expr` when looking for comments, |, % and #.
@@ -10160,7 +10160,7 @@ an error. Was caused by patch 7.2.132.
Make the references to features in the help more consistent. (Sylvain Hitier)
==============================================================================
VERSION 7.4 *version-7.4* *version7.4*
VERSION 7.4 *version-7.4* *version7.4* *vim-7.4*
This section is about improvements made between version 7.3 and 7.4.
+235
View File
@@ -0,0 +1,235 @@
*version8.txt* For Vim version 8.0. Last change: 2016 Apr 14
VIM REFERENCE MANUAL by Bram Moolenaar
NOTE: THIS FILE IS STILL BEING WORKED ON
*vim8* *vim-8* *version-8.0* *version8.0*
Welcome to Vim 8! A large number of bugs have been fixed and several
features have been added. This file mentions all the new items and changes to
existing features since Vim 7.4. Bug fixes, the patches for Vim 7.4, can be
found below |vim-7.4|. Use this command to see the version you are using: >
:version
See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
See |version4.txt| for differences between Vim 3.x and Vim 4.x.
See |version5.txt| for differences between Vim 4.x and Vim 5.x.
See |version6.txt| for differences between Vim 5.x and Vim 6.x.
See |version7.txt| for differences between Vim 6.x and Vim 7.x.
INCOMPATIBLE CHANGES |incompatible-8|
NEW FEATURES |new-8|
Vim script enhancements |new-vim-script-8|
IMPROVEMENTS |improvements-8|
COMPILE TIME CHANGES |compile-changes-8|
PATCHES |patches-8|
==============================================================================
INCOMPATIBLE CHANGES *incompatible-8*
These changes are incompatible with previous releases. Check this list if you
run into a problem when upgrading from Vim 7.4 to 8.0.
The support for MS-DOS has been removed. It hasn't been working for a while
and removing it cleans up the code quite a bit.
The support for Windows 16 bit (Windows 95 and older) has been removed.
Minor incompatibilities:
For filetype detection: ...
==============================================================================
NEW FEATURES *new-8*
First a list of the bigger new features. A comprehensive list is below.
Asynchronous I/O support, channels ~
Vim can now exchange messages with another process in the background. The
messages are received and handled while Vim is waiting for a character. See
|channel-demo| for an example, communicating with a Python server.
Closely related to channels is JSON support. JSON is widely supported and can
easily be used for inter-process communication, allowing for writing a server
in any language. The functions to use are |json_encode()| and |json_decode()|.
Jobs ~
Vim can now start a job, communicate with it and stop it. This is very useful
to run a process for completion, syntax checking, etc. Channels are used to
communicate with the job. Jobs can also read from or write to a buffer or a
file. See |job_start()|.
Timers ~
Also asynchronous are timers. They can fire once or repeatedly and invoke a
function to do any work. For example: >
let tempTimer = timer_start(4000, 'CheckTemp')
This will make a call four seconds (4000 milli seconds) later, like: >
call CheckTemp()
Partials ~
Vim already had a Funcref, a reference to a function. A partial also refers
to a function, and additionally binds arguments and/or a dictionary. This is
especially useful for callbacks on channels and timers. E.g., for the timer
example above, to pass an argument to the function: >
let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
This will a make call four seconds later, like: >
call CheckTemp('out')
Packages ~
Plugins keep growing and more of them are available than ever before. To keep
the collection of plugins manageable package support has been added. This is
a convenient way to get one or more plugins, drop them in a directory and
possibly keep them updated. Vim will load them automatically, or only when
desired. See |packages|.
New style tests ~
This is for Vim developers. So far writing tests for Vim has not been easy.
Vim 8 adds assert functions and a framework to run tests. This makes it a lot
simpler to write tests and keep them updated.
These functions have been added:
|assert_equal()|
|assert_notequal()|
|assert_exception()|
|assert_fails()|
|assert_false()|
|assert_match()|
|assert_notmatch()|
|assert_true()|
|alloc_fail()|
|disable_char_avail_for_testing()|
Window IDs ~
Previously windows could only be accessed by their number. And every time a
window would open, close or move that number changes. Each window now has a
unique ID, so that they are easy to find.
Wrapping lines with indent ~
The 'breakindent' option has been added to be able to wrap lines without
changing the amount of indent.
Windows: Direct-X support ~
This adds the 'renderoptions' option to allow for switching on Direct-X
(DirectWrite) support on MS-Windows.
GTK+ 3 support ~
GTK+ 2 is getting old, GTK+ 3 is here. Support has been added and it already
works quite well, mostly just like GTK+ 2.
Vim script enhancements *new-vim-script-8*
-----------------------
In Vim script the following types have been added:
|Special| |v:false|, |v:true|, |v:none| and |v:null|
|Channel| connection to another process for asynchronous I/O
|Job| process control
Many functions and commands have been added to support the new types.
Various new items *new-items-8*
-----------------
Normal mode commands: ~
Insert mode commands: ~
Options: ~
Ex commands: ~
Ex command modifiers: ~
Ex command arguments: ~
New and extended functions: ~
New Vim variables: ~
|v:vim_did_enter| Set when VimEnter autocommands are triggered
New autocommand events: ~
New highlight groups: ~
New items in search patterns: ~
New Syntax/Indent/FTplugin files: ~
New Keymaps: ~
New message translations: ~
Others: ~
==============================================================================
IMPROVEMENTS *improvements-8*
The existing blowfish encryption turned out to be much weaker than it was
supposed to be. The blowfish2 method has been added to fix that. Note that
this still isn't a state-of-the-art encryption, but good enough for most
usage. See 'cryptmethod'.
==============================================================================
COMPILE TIME CHANGES *compile-changes-8*
Dropped the support for MS-DOS. It was too big to fit in memory.
==============================================================================
PATCHES *patches-8* *bug-fixes-8*
The list of patches that got included since 7.4.0. This includes all the new
features, but does not include runtime file changes (syntax, indent, help,
etc.)
TODO: INCLUDE PATCH LIST.
vim:tw=78:ts=8:ft=help:norl:
+1 -1
View File
@@ -321,7 +321,7 @@ When N is omitted, open one tab page for each file.
\-R
Read-only mode.
The 'readonly' option will be set.
You can still edit the buffer, but will be prevented from accidently
You can still edit the buffer, but will be prevented from accidentally
overwriting a file.
If you do want to overwrite a file, add an exclamation mark to the Ex command,
as in ":w!".
+12 -4
View File
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2015 Dec 03
" Last Change: 2016 Apr 29
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -17,7 +17,7 @@ augroup filetypedetect
" Ignored extensions
if exists("*fnameescape")
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew
\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
au BufNewFile,BufRead *~
\ let s:name = expand("<afile>") |
@@ -1861,11 +1861,19 @@ au BufNewFile,BufRead catalog setf catalog
au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog')
" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
" Gentoo ebuilds are actually bash scripts
au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass call SetFileTypeSH("bash")
" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD* call SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
au BufNewFile,BufRead */etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
" Shell script (Arch Linux) or PHP file (Drupal)
au BufNewFile,BufRead *.install
\ if getline(1) =~ '<?php' |
\ setf php |
\ else |
\ call SetFileTypeSH("bash") |
\ endif
" Also called from scripts.vim.
func! SetFileTypeSH(name)
if expand("<amatch>") =~ g:ft_ignore_pat
+1
View File
@@ -74,6 +74,7 @@ TryExec=gvim
Exec=gvim -f %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=true
+3 -8
View File
@@ -1,8 +1,9 @@
" An example for a gvimrc file.
" The commands in this are executed when the GUI is started.
" The commands in this are executed when the GUI is started, after the vimrc
" has been executed.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2001 Sep 02
" Last change: 2016 Apr 05
"
" To use it, copy it to
" for Unix and OS/2: ~/.gvimrc
@@ -27,17 +28,11 @@ map! <S-Insert> <MiddleMouse>
" Only do this for Vim version 5.0 and later.
if version >= 500
" I like highlighting strings inside C comments
let c_comment_strings=1
" Switch on syntax highlighting if it wasn't on yet.
if !exists("syntax_on")
syntax on
endif
" Switch on search pattern highlighting.
set hlsearch
" For Win32 version, have "K" lookup the keyword in a help file
"if has("win32")
" let winhelpfile='windows.hlp'
+6 -6
View File
@@ -2,7 +2,7 @@
" Header: "{{{
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2015 Sep 25
" Last Change: 2016 Mar 30
" Version: 1.0
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
@@ -240,13 +240,13 @@ call s:AddITags(s:indent_tags, [
\ 'sup', 'table', 'textarea', 'title', 'tt', 'u', 'ul', 'var', 'th', 'td',
\ 'tr', 'tbody', 'tfoot', 'thead'])
" Tags added 2011 Sep 09 (especially HTML5 tags):
" New HTML5 elements:
call s:AddITags(s:indent_tags, [
\ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas',
\ 'command', 'datalist', 'details', 'embed', 'figure', 'footer',
\ 'header', 'group', 'keygen', 'mark', 'math', 'meter', 'nav', 'output',
\ 'progress', 'ruby', 'section', 'svg', 'texture', 'time', 'video',
\ 'wbr', 'text'])
\ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption',
\ 'figure', 'footer', 'header', 'keygen', 'mark', 'meter', 'nav', 'output',
\ 'progress', 'rp', 'rt', 'ruby', 'section', 'source', 'summary', 'svg',
\ 'time', 'track', 'video', 'wbr'])
" Tags added for web components:
call s:AddITags(s:indent_tags, [
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Jan 24
" Last Change: 2016 Apr 19
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -60,7 +60,7 @@ function GetVimIndentIntern()
else
let ind = ind + shiftwidth() * 3
endif
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+END'
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+[eE][nN][dD]'
let ind = ind + shiftwidth()
else
" A line starting with :au does not increment/decrement indent.
+15 -12
View File
@@ -8,23 +8,26 @@ maze Macros that solve a maze (amazing!).
urm Macros that simulate a simple computer: "Universal Register Machine"
The other files contain some handy utilities. They also serve as examples for
how to use Vi and Vim functionality.
dvorak for when you use a Dvorak keyboard
justify.vim user function for justifying text
matchit.vim + matchit.txt make % match if-fi, HTML tags, and much more
less.sh + less.vim make Vim work like less (or more)
shellmenu.vim menus for editing shell scripts in the GUI version
swapmous.vim swap left and right mouse buttons
editexisting.vim when editing a file that is already edited with
another Vim instance
The following have been moved to an optional package. Add the command to your
vimrc file to use the package:
This one is only for Unix. It can be found in the extra archive:
file_select.vim macros that make a handy file selector
packadd! dvorak " Dvorak keyboard support; adds mappings
packadd! editexisting " when editing a file that is already edited with
" another Vim instance, go to that Vim instance
packadd! justify " justifying text.
packadd! matchit " makes the % command work better
packadd! shellmenu " menus for editing shell scripts in the GUI version
packadd! swapmouse " swap left and right mouse buttons
-164
View File
@@ -1,164 +0,0 @@
When using a dvorak keyboard this file may be of help to you.
These mappings have been made by Lawrence Kesteloot <kesteloo@cs.unc.edu>.
What they do is that the most often used keys, like hjkl, are put in a more
easy to use position.
It may take some time to learn using this.
Put these lines in your .vimrc:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
" Key to go into dvorak mode:
map ,d :source ~/.dvorak
" Key to get out of dvorak mode:
map ,q :source ~/.qwerty
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
write these lines into the file ~/.dvorak:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
" Dvorak keyboard, only in insert mode and ex mode.
" You may want to add a list of map's too.
imap! a a
imap! b x
imap! c j
imap! d e
imap! e .
imap! f u
imap! g i
imap! h d
imap! i c
imap! j h
imap! k t
imap! l n
imap! m m
imap! n b
imap! o r
imap! p l
imap! q '
imap! r p
imap! s o
imap! t y
imap! u g
imap! v k
imap! w ,
imap! x q
imap! y f
imap! z ;
imap! ; s
imap! ' -
imap! " _
imap! , w
imap! . v
imap! / z
imap! A A
imap! B X
imap! C J
imap! D E
imap! E >
imap! F U
imap! G I
imap! H D
imap! I C
imap! J H
imap! K T
imap! L N
imap! M M
imap! N B
imap! O R
imap! P L
imap! Q "
imap! R P
imap! S O
imap! T Y
imap! U G
imap! V K
imap! W <
imap! X Q
imap! Y F
imap! Z :
imap! < W
imap! > V
imap! ? Z
imap! : S
imap! [ /
imap! ] =
imap! { ?
imap! } +
imap! - [
imap! _ {
imap! = ]
imap! + }
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
write these lines into the file ~/.qwerty
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
" Qwerty keyboard
unmap! a
unmap! b
unmap! c
unmap! d
unmap! e
unmap! f
unmap! g
unmap! h
unmap! i
unmap! j
unmap! k
unmap! l
unmap! m
unmap! n
unmap! o
unmap! p
unmap! q
unmap! r
unmap! s
unmap! t
unmap! u
unmap! v
unmap! w
unmap! x
unmap! y
unmap! z
unmap! ;
unmap! '
unmap! \"
unmap! ,
unmap! .
unmap! /
unmap! A
unmap! B
unmap! C
unmap! D
unmap! E
unmap! F
unmap! G
unmap! H
unmap! I
unmap! J
unmap! K
unmap! L
unmap! M
unmap! N
unmap! O
unmap! P
unmap! Q
unmap! R
unmap! S
unmap! T
unmap! U
unmap! V
unmap! W
unmap! X
unmap! Y
unmap! Z
unmap! <
unmap! >
unmap! ?
unmap! :
unmap! [
unmap! ]
unmap! {
unmap! }
unmap! -
unmap! _
unmap! =
unmap! +
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+3 -119
View File
@@ -1,119 +1,3 @@
" Vim Plugin: Edit the file with an existing Vim if possible
" Maintainer: Bram Moolenaar
" Last Change: 2014 Dec 06
" This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32)
" $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you
" automatically use the latest version.
" This plugin serves two purposes:
" 1. On startup, if we were invoked with one file name argument and the file
" is not modified then try to find another Vim instance that is editing
" this file. If there is one then bring it to the foreground and exit.
" 2. When a file is edited and a swap file exists for it, try finding that
" other Vim and bring it to the foreground. Requires Vim 7, because it
" uses the SwapExists autocommand event.
if v:version < 700
finish
endif
" Function that finds the Vim instance that is editing "filename" and brings
" it to the foreground.
func s:EditElsewhere(filename)
let fname_esc = substitute(a:filename, "'", "''", "g")
let servers = serverlist()
while servers != ''
" Get next server name in "servername"; remove it from "servers".
let i = match(servers, "\n")
if i == -1
let servername = servers
let servers = ''
else
let servername = strpart(servers, 0, i)
let servers = strpart(servers, i + 1)
endif
" Skip ourselves.
if servername ==? v:servername
continue
endif
" Check if this server is editing our file.
if remote_expr(servername, "bufloaded('" . fname_esc . "')")
" Yes, bring it to the foreground.
if has("win32")
call remote_foreground(servername)
endif
call remote_expr(servername, "foreground()")
if remote_expr(servername, "exists('*EditExisting')")
" Make sure the file is visible in a window (not hidden).
" If v:swapcommand exists and is set, send it to the server.
if exists("v:swapcommand")
let c = substitute(v:swapcommand, "'", "''", "g")
call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')")
else
call remote_expr(servername, "EditExisting('" . fname_esc . "', '')")
endif
endif
if !(has('vim_starting') && has('gui_running') && has('gui_win32'))
" Tell the user what is happening. Not when the GUI is starting
" though, it would result in a message box.
echomsg "File is being edited by " . servername
sleep 2
endif
return 'q'
endif
endwhile
return ''
endfunc
" When the plugin is loaded and there is one file name argument: Find another
" Vim server that is editing this file right now.
if argc() == 1 && !&modified
if s:EditElsewhere(expand("%:p")) == 'q'
quit
endif
endif
" Setup for handling the situation that an existing swap file is found.
try
au! SwapExists * let v:swapchoice = s:EditElsewhere(expand("<afile>:p"))
catch
" Without SwapExists we don't do anything for ":edit" commands
endtry
" Function used on the server to make the file visible and possibly execute a
" command.
func! EditExisting(fname, command)
" Get the window number of the file in the current tab page.
let winnr = bufwinnr(a:fname)
if winnr <= 0
" Not found, look in other tab pages.
let bufnr = bufnr(a:fname)
for i in range(tabpagenr('$'))
if index(tabpagebuflist(i + 1), bufnr) >= 0
" Make this tab page the current one and find the window number.
exe 'tabnext ' . (i + 1)
let winnr = bufwinnr(a:fname)
break
endif
endfor
endif
if winnr > 0
exe winnr . "wincmd w"
elseif exists('*fnameescape')
exe "split " . fnameescape(a:fname)
else
exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
endif
if a:command != ''
exe "normal! " . a:command
endif
redraw
endfunc
" Load the editexisting package.
" For those users who were loading the editexisting plugin from here.
packadd editexisting
+3 -316
View File
@@ -1,316 +1,3 @@
" Function to left and right align text.
"
" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
" Created: 980806 14:13 (or around that time anyway)
" Revised: 001103 00:36 (See "Revisions" below)
" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
"
" Justify() will left and right align a line by filling in an
" appropriate amount of spaces. Extra spaces are added to existing
" spaces starting from the right side of the line. As an example, the
" following documentation has been justified.
"
" The function takes the following arguments:
" textwidth argument
" ------------------
" If not specified, the value of the 'textwidth' option is used. If
" 'textwidth' is zero a value of 80 is used.
"
" Additionally the arguments 'tw' and '' are accepted. The value of
" 'textwidth' will be used. These are handy, if you just want to specify
" the maxspaces argument.
" maxspaces argument
" ------------------
" If specified, alignment will only be done, if the longest space run
" after alignment is no longer than maxspaces.
"
" An argument of '' is accepted, should the user like to specify all
" arguments.
"
" To aid user defined commands, negative values are accepted aswell.
" Using a negative value specifies the default behaviour: any length of
" space runs will be used to justify the text.
" indent argument
" ---------------
" This argument specifies how a line should be indented. The default is
" to keep the current indentation.
"
" Negative values: Keep current amount of leading whitespace.
" Positive values: Indent all lines with leading whitespace using this
" amount of whitespace.
"
" Note that the value 0, needs to be quoted as a string. This value
" leads to a left flushed text.
"
" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
" added. In this case, if the value of indent is positive, the amount of
" whitespace to be added will be multiplied by the value of the
" 'shiftwidth' and 'tabstop' settings. If these units are used, the
" argument must be given as a string, eg. Justify('','','2sw').
"
" If the values of 'sw' or 'tw' are negative, they are treated as if
" they were 0, which means that the text is flushed left. There is no
" check if a negative number prefix is used to change the sign of a
" negative 'sw' or 'ts' value.
"
" As with the other arguments, '' may be used to get the default
" behaviour.
" Notes:
"
" If the line, adjusted for space runs and leading/trailing whitespace,
" is wider than the used textwidth, the line will be left untouched (no
" whitespace removed). This should be equivalent to the behaviour of
" :left, :right and :center.
"
" If the resulting line is shorter than the used textwidth it is left
" untouched.
"
" All space runs in the line are truncated before the alignment is
" carried out.
"
" If you have set 'noexpandtab', :retab! is used to replace space runs
" with whitespace using the value of 'tabstop'. This should be
" conformant with :left, :right and :center.
"
" If joinspaces is set, an extra space is added after '.', '?' and '!'.
" If 'cpooptions' include 'j', extra space is only added after '.'.
" (This may on occasion conflict with maxspaces.)
" Related mappings:
"
" Mappings that will align text using the current text width, using at
" most four spaces in a space run and keeping current indentation.
nmap _j :%call Justify('tw',4)<CR>
vmap _j :call Justify('tw',4)<CR>
"
" Mappings that will remove space runs and format lines (might be useful
" prior to aligning the text).
nmap ,gq :%s/\s\+/ /g<CR>gq1G
vmap ,gq :s/\s\+/ /g<CR>gvgq
" User defined command:
"
" The following is an ex command that works as a shortcut to the Justify
" function. Arguments to Justify() can be added after the command.
com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
"
" The following commands are all equivalent:
"
" 1. Simplest use of Justify():
" :call Justify()
" :Justify
"
" 2. The _j mapping above via the ex command:
" :%Justify tw 4
"
" 3. Justify visualised text at 72nd column while indenting all
" previously indented text two shiftwidths
" :'<,'>call Justify(72,'','2sw')
" :'<,'>Justify 72 -1 2sw
"
" This documentation has been justified using the following command:
":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
" Revisions:
" 001103: If 'joinspaces' was set, calculations could be wrong.
" Tabs at start of line could also lead to errors.
" Use setline() instead of "exec 's/foo/bar/' - safer.
" Cleaned up the code a bit.
"
" Todo: Convert maps to the new script specific form
" Error function
function! Justify_error(message)
echohl Error
echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
echohl None
endfunction
" Now for the real thing
function! Justify(...) range
if a:0 > 3
call Justify_error("Too many arguments (max 3)")
return 1
endif
" Set textwidth (accept 'tw' and '' as arguments)
if a:0 >= 1
if a:1 =~ '^\(tw\)\=$'
let tw = &tw
elseif a:1 =~ '^\d\+$'
let tw = a:1
else
call Justify_error("tw must be a number (>0), '' or 'tw'")
return 2
endif
else
let tw = &tw
endif
if tw == 0
let tw = 80
endif
" Set maximum number of spaces between WORDs
if a:0 >= 2
if a:2 == ''
let maxspaces = tw
elseif a:2 =~ '^-\d\+$'
let maxspaces = tw
elseif a:2 =~ '^\d\+$'
let maxspaces = a:2
else
call Justify_error("maxspaces must be a number or ''")
return 3
endif
else
let maxspaces = tw
endif
if maxspaces <= 1
call Justify_error("maxspaces should be larger than 1")
return 4
endif
" Set the indentation style (accept sw and ts units)
let indent_fix = ''
if a:0 >= 3
if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = -1
elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = 0
elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = substitute(a:3, '\D', '', 'g')
elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
let indent = 1
else
call Justify_error("indent: a number with 'sw'/'ts' unit")
return 5
endif
if indent >= 0
while indent > 0
let indent_fix = indent_fix . ' '
let indent = indent - 1
endwhile
let indent_sw = 0
if a:3 =~ '\(shiftwidth\|sw\)'
let indent_sw = &sw
elseif a:3 =~ '\(tabstop\|ts\)'
let indent_sw = &ts
endif
let indent_fix2 = ''
while indent_sw > 0
let indent_fix2 = indent_fix2 . indent_fix
let indent_sw = indent_sw - 1
endwhile
let indent_fix = indent_fix2
endif
else
let indent = -1
endif
" Avoid substitution reports
let save_report = &report
set report=1000000
" Check 'joinspaces' and 'cpo'
if &js == 1
if &cpo =~ 'j'
let join_str = '\(\. \)'
else
let join_str = '\([.!?!] \)'
endif
endif
let cur = a:firstline
while cur <= a:lastline
let str_orig = getline(cur)
let save_et = &et
set et
exec cur . "retab"
let &et = save_et
let str = getline(cur)
let indent_str = indent_fix
let indent_n = strlen(indent_str)
" Shall we remember the current indentation
if indent < 0
let indent_orig = matchstr(str_orig, '^\s*')
if strlen(indent_orig) > 0
let indent_str = indent_orig
let indent_n = strlen(matchstr(str, '^\s*'))
endif
endif
" Trim trailing, leading and running whitespace
let str = substitute(str, '\s\+$', '', '')
let str = substitute(str, '^\s\+', '', '')
let str = substitute(str, '\s\+', ' ', 'g')
let str_n = strdisplaywidth(str)
" Possible addition of space after punctuation
if exists("join_str")
let str = substitute(str, join_str, '\1 ', 'g')
endif
let join_n = strdisplaywidth(str) - str_n
" Can extraspaces be added?
" Note that str_n may be less than strlen(str) [joinspaces above]
if strdisplaywidth(str) <= tw - indent_n && str_n > 0
" How many spaces should be added
let s_add = tw - str_n - indent_n - join_n
let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
let s_dup = s_add / s_nr
let s_mod = s_add % s_nr
" Test if the changed line fits with tw
if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
" Duplicate spaces
while s_dup > 0
let str = substitute(str, '\( \+\)', ' \1', 'g')
let s_dup = s_dup - 1
endwhile
" Add extra spaces from the end
while s_mod > 0
let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
let s_mod = s_mod - 1
endwhile
" Indent the line
if indent_n > 0
let str = substitute(str, '^', indent_str, '' )
endif
" Replace the line
call setline(cur, str)
" Convert to whitespace
if &et == 0
exec cur . 'retab!'
endif
endif " Change of line
endif " Possible change
let cur = cur + 1
endwhile
norm ^
let &report = save_report
endfunction
" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
" Load the justify package.
" For those users who were loading the justify plugin from here.
packadd justify
+3 -813
View File
@@ -1,813 +1,3 @@
" matchit.vim: (global plugin) Extended "%" matching
" Last Change: Fri Jan 25 10:00 AM 2008 EST
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
" Version: 1.13.2, for Vim 6.3+
" URL: http://www.vim.org/script.php?script_id=39
" Documentation:
" The documentation is in a separate file, matchit.txt .
" Credits:
" Vim editor by Bram Moolenaar (Thanks, Bram!)
" Original script and design by Raul Segura Acevedo
" Support for comments by Douglas Potts
" Support for back references and other improvements by Benji Fisher
" Support for many languages by Johannes Zellner
" Suggestions for improvement, bug reports, and support for additional
" languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
" Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
" Debugging:
" If you'd like to try the built-in debugging commands...
" :MatchDebug to activate debugging for the current buffer
" This saves the values of several key script variables as buffer-local
" variables. See the MatchDebug() function, below, for details.
" TODO: I should think about multi-line patterns for b:match_words.
" This would require an option: how many lines to scan (default 1).
" This would be useful for Python, maybe also for *ML.
" TODO: Maybe I should add a menu so that people will actually use some of
" the features that I have implemented.
" TODO: Eliminate the MultiMatch function. Add yet another argument to
" Match_wrapper() instead.
" TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
" TODO: Make backrefs safer by using '\V' (very no-magic).
" TODO: Add a level of indirection, so that custom % scripts can use my
" work but extend it.
" allow user to prevent loading
" and prevent duplicate loading
if exists("loaded_matchit") || &cp
finish
endif
let loaded_matchit = 1
let s:last_mps = ""
let s:last_words = ":"
let s:save_cpo = &cpo
set cpo&vim
nnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'n') <CR>
nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR>
vnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv``
vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv``
onoremap <silent> % v:<C-U>call <SID>Match_wrapper('',1,'o') <CR>
onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR>
" Analogues of [{ and ]} using matching patterns:
nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR>
nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "n") <CR>
vmap [% <Esc>[%m'gv``
vmap ]% <Esc>]%m'gv``
" vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv``
" vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "v") <CR>m'gv``
onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR>
onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W", "o") <CR>
" text object:
vmap a% <Esc>[%v]%
" Auto-complete mappings: (not yet "ready for prime time")
" TODO Read :help write-plugin for the "right" way to let the user
" specify a key binding.
" let g:match_auto = '<C-]>'
" let g:match_autoCR = '<C-CR>'
" if exists("g:match_auto")
" execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls'
" endif
" if exists("g:match_autoCR")
" execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>'
" endif
" if exists("g:match_gthhoh")
" execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>'
" endif " gthhoh = "Get the heck out of here!"
let s:notslash = '\\\@<!\%(\\\\\)*'
function! s:Match_wrapper(word, forward, mode) range
" In s:CleanUp(), :execute "set" restore_options .
let restore_options = (&ic ? " " : " no") . "ignorecase"
if exists("b:match_ignorecase")
let &ignorecase = b:match_ignorecase
endif
let restore_options = " ve=" . &ve . restore_options
set ve=
" If this function was called from Visual mode, make sure that the cursor
" is at the correct end of the Visual range:
if a:mode == "v"
execute "normal! gv\<Esc>"
endif
" In s:CleanUp(), we may need to check whether the cursor moved forward.
let startline = line(".")
let startcol = col(".")
" Use default behavior if called with a count.
if v:count
exe "normal! " . v:count . "%"
return s:CleanUp(restore_options, a:mode, startline, startcol)
end
" First step: if not already done, set the script variables
" s:do_BR flag for whether there are backrefs
" s:pat parsed version of b:match_words
" s:all regexp based on s:pat and the default groups
"
if !exists("b:match_words") || b:match_words == ""
let match_words = ""
" Allow b:match_words = "GetVimMatchWords()" .
elseif b:match_words =~ ":"
let match_words = b:match_words
else
execute "let match_words =" b:match_words
endif
" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
if (match_words != s:last_words) || (&mps != s:last_mps) ||
\ exists("b:match_debug")
let s:last_words = match_words
let s:last_mps = &mps
" The next several lines were here before
" BF started messing with this script.
" quote the special chars in 'matchpairs', replace [,:] with \| and then
" append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif)
" let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+',
" \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>'
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
" s:all = pattern with all the keywords
let match_words = match_words . (strlen(match_words) ? "," : "") . default
if match_words !~ s:notslash . '\\\d'
let s:do_BR = 0
let s:pat = match_words
else
let s:do_BR = 1
let s:pat = s:ParseWords(match_words)
endif
let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
let s:all = '\%(' . s:all . '\)'
" let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
if exists("b:match_debug")
let b:match_pat = s:pat
endif
endif
" Second step: set the following local variables:
" matchline = line on which the cursor started
" curcol = number of characters before match
" prefix = regexp for start of line to start of match
" suffix = regexp for end of match to end of line
" Require match to end on or after the cursor and prefer it to
" start on or before the cursor.
let matchline = getline(startline)
if a:word != ''
" word given
if a:word !~ s:all
echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE
return s:CleanUp(restore_options, a:mode, startline, startcol)
endif
let matchline = a:word
let curcol = 0
let prefix = '^\%('
let suffix = '\)$'
" Now the case when "word" is not given
else " Find the match that ends on or after the cursor and set curcol.
let regexp = s:Wholematch(matchline, s:all, startcol-1)
let curcol = match(matchline, regexp)
" If there is no match, give up.
if curcol == -1
return s:CleanUp(restore_options, a:mode, startline, startcol)
endif
let endcol = matchend(matchline, regexp)
let suf = strlen(matchline) - endcol
let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(')
let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$')
endif
if exists("b:match_debug")
let b:match_match = matchstr(matchline, regexp)
let b:match_col = curcol+1
endif
" Third step: Find the group and single word that match, and the original
" (backref) versions of these. Then, resolve the backrefs.
" Set the following local variable:
" group = colon-separated list of patterns, one of which matches
" = ini:mid:fin or ini:fin
"
" Reconstruct the version with unresolved backrefs.
let patBR = substitute(match_words.',',
\ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g')
" Now, set group and groupBR to the matching group: 'if:endif' or
" 'while:endwhile' or whatever. A bit of a kluge: s:Choose() returns
" group . "," . groupBR, and we pick it apart.
let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
let i = matchend(group, s:notslash . ",")
let groupBR = strpart(group, i)
let group = strpart(group, 0, i-1)
" Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
if s:do_BR " Do the hard part: resolve those backrefs!
let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
endif
if exists("b:match_debug")
let b:match_wholeBR = groupBR
let i = matchend(groupBR, s:notslash . ":")
let b:match_iniBR = strpart(groupBR, 0, i-1)
endif
" Fourth step: Set the arguments for searchpair().
let i = matchend(group, s:notslash . ":")
let j = matchend(group, '.*' . s:notslash . ":")
let ini = strpart(group, 0, i-1)
let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
let fin = strpart(group, j)
"Un-escape the remaining , and : characters.
let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
" searchpair() requires that these patterns avoid \(\) groups.
let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g')
" Set mid. This is optimized for readability, not micro-efficiency!
if a:forward && matchline =~ prefix . fin . suffix
\ || !a:forward && matchline =~ prefix . ini . suffix
let mid = ""
endif
" Set flag. This is optimized for readability, not micro-efficiency!
if a:forward && matchline =~ prefix . fin . suffix
\ || !a:forward && matchline !~ prefix . ini . suffix
let flag = "bW"
else
let flag = "W"
endif
" Set skip.
if exists("b:match_skip")
let skip = b:match_skip
elseif exists("b:match_comment") " backwards compatibility and testing!
let skip = "r:" . b:match_comment
else
let skip = 's:comment\|string'
endif
let skip = s:ParseSkip(skip)
if exists("b:match_debug")
let b:match_ini = ini
let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin
endif
" Fifth step: actually start moving the cursor and call searchpair().
" Later, :execute restore_cursor to get to the original screen.
let restore_cursor = virtcol(".") . "|"
normal! g0
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
normal! H
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
execute restore_cursor
call cursor(0, curcol + 1)
" normal! 0
" if curcol
" execute "normal!" . curcol . "l"
" endif
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
let skip = "0"
else
execute "if " . skip . "| let skip = '0' | endif"
endif
let sp_return = searchpair(ini, mid, fin, flag, skip)
let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
" Restore cursor position and original screen.
execute restore_cursor
normal! m'
if sp_return > 0
execute final_position
endif
return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin)
endfun
" Restore options and do some special handling for Operator-pending mode.
" The optional argument is the tail of the matching group.
fun! s:CleanUp(options, mode, startline, startcol, ...)
execute "set" a:options
" Open folds, if appropriate.
if a:mode != "o"
if &foldopen =~ "percent"
normal! zv
endif
" In Operator-pending mode, we want to include the whole match
" (for example, d%).
" This is only a problem if we end up moving in the forward direction.
elseif (a:startline < line(".")) ||
\ (a:startline == line(".") && a:startcol < col("."))
if a:0
" Check whether the match is a single character. If not, move to the
" end of the match.
let matchline = getline(".")
let currcol = col(".")
let regexp = s:Wholematch(matchline, a:1, currcol-1)
let endcol = matchend(matchline, regexp)
if endcol > currcol " This is NOT off by one!
call cursor(0, endcol)
endif
endif " a:0
endif " a:mode != "o" && etc.
return 0
endfun
" Example (simplified HTML patterns): if
" a:groupBR = '<\(\k\+\)>:</\1>'
" a:prefix = '^.\{3}\('
" a:group = '<\(\k\+\)>:</\(\k\+\)>'
" a:suffix = '\).\{2}$'
" a:matchline = "123<tag>12" or "123</tag>12"
" then extract "tag" from a:matchline and return "<tag>:</tag>" .
fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
if a:matchline !~ a:prefix .
\ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix
return a:group
endif
let i = matchend(a:groupBR, s:notslash . ':')
let ini = strpart(a:groupBR, 0, i-1)
let tailBR = strpart(a:groupBR, i)
let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix,
\ a:groupBR)
let i = matchend(word, s:notslash . ":")
let wordBR = strpart(word, i)
let word = strpart(word, 0, i-1)
" Now, a:matchline =~ a:prefix . word . a:suffix
if wordBR != ini
let table = s:Resolve(ini, wordBR, "table")
else
" let table = "----------"
let table = ""
let d = 0
while d < 10
if tailBR =~ s:notslash . '\\' . d
" let table[d] = d
let table = table . d
else
let table = table . "-"
endif
let d = d + 1
endwhile
endif
let d = 9
while d
if table[d] != "-"
let backref = substitute(a:matchline, a:prefix.word.a:suffix,
\ '\'.table[d], "")
" Are there any other characters that should be escaped?
let backref = escape(backref, '*,:')
execute s:Ref(ini, d, "start", "len")
let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
\ escape(backref, '\\&'), 'g')
endif
let d = d-1
endwhile
if exists("b:match_debug")
if s:do_BR
let b:match_table = table
let b:match_word = word
else
let b:match_table = ""
let b:match_word = ""
endif
endif
return ini . ":" . tailBR
endfun
" Input a comma-separated list of groups with backrefs, such as
" a:groups = '\(foo\):end\1,\(bar\):end\1'
" and return a comma-separated list of groups with backrefs replaced:
" return '\(foo\):end\(foo\),\(bar\):end\(bar\)'
fun! s:ParseWords(groups)
let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g')
let parsed = ""
while groups =~ '[^,:]'
let i = matchend(groups, s:notslash . ':')
let j = matchend(groups, s:notslash . ',')
let ini = strpart(groups, 0, i-1)
let tail = strpart(groups, i, j-i-1) . ":"
let groups = strpart(groups, j)
let parsed = parsed . ini
let i = matchend(tail, s:notslash . ':')
while i != -1
" In 'if:else:endif', ini='if' and word='else' and then word='endif'.
let word = strpart(tail, 0, i-1)
let tail = strpart(tail, i)
let i = matchend(tail, s:notslash . ':')
let parsed = parsed . ":" . s:Resolve(ini, word, "word")
endwhile " Now, tail has been used up.
let parsed = parsed . ","
endwhile " groups =~ '[^,:]'
let parsed = substitute(parsed, ',$', '', '')
return parsed
endfun
" TODO I think this can be simplified and/or made more efficient.
" TODO What should I do if a:start is out of range?
" Return a regexp that matches all of a:string, such that
" matchstr(a:string, regexp) represents the match for a:pat that starts
" as close to a:start as possible, before being preferred to after, and
" ends after a:start .
" Usage:
" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1)
" let i = match(getline("."), regexp)
" let j = matchend(getline("."), regexp)
" let match = matchstr(getline("."), regexp)
fun! s:Wholematch(string, pat, start)
let group = '\%(' . a:pat . '\)'
let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
let len = strlen(a:string)
let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
if a:string !~ prefix . group . suffix
let prefix = ''
endif
return prefix . group . suffix
endfun
" No extra arguments: s:Ref(string, d) will
" find the d'th occurrence of '\(' and return it, along with everything up
" to and including the matching '\)'.
" One argument: s:Ref(string, d, "start") returns the index of the start
" of the d'th '\(' and any other argument returns the length of the group.
" Two arguments: s:Ref(string, d, "foo", "bar") returns a string to be
" executed, having the effect of
" :let foo = s:Ref(string, d, "start")
" :let bar = s:Ref(string, d, "len")
fun! s:Ref(string, d, ...)
let len = strlen(a:string)
if a:d == 0
let start = 0
else
let cnt = a:d
let match = a:string
while cnt
let cnt = cnt - 1
let index = matchend(match, s:notslash . '\\(')
if index == -1
return ""
endif
let match = strpart(match, index)
endwhile
let start = len - strlen(match)
if a:0 == 1 && a:1 == "start"
return start - 2
endif
let cnt = 1
while cnt
let index = matchend(match, s:notslash . '\\(\|\\)') - 1
if index == -2
return ""
endif
" Increment if an open, decrement if a ')':
let cnt = cnt + (match[index]=="(" ? 1 : -1) " ')'
" let cnt = stridx('0(', match[index]) + cnt
let match = strpart(match, index+1)
endwhile
let start = start - 2
let len = len - start - strlen(match)
endif
if a:0 == 1
return len
elseif a:0 == 2
return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len
else
return strpart(a:string, start, len)
endif
endfun
" Count the number of disjoint copies of pattern in string.
" If the pattern is a literal string and contains no '0' or '1' characters
" then s:Count(string, pattern, '0', '1') should be faster than
" s:Count(string, pattern).
fun! s:Count(string, pattern, ...)
let pat = escape(a:pattern, '\\')
if a:0 > 1
let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g")
let foo = substitute(a:string, pat, a:2, "g")
let foo = substitute(foo, '[^' . a:2 . ']', "", "g")
return strlen(foo)
endif
let result = 0
let foo = a:string
let index = matchend(foo, pat)
while index != -1
let result = result + 1
let foo = strpart(foo, index)
let index = matchend(foo, pat)
endwhile
return result
endfun
" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where
" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'. That is, the first
" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this
" indicates that all other instances of '\1' in target are to be replaced
" by '\3'. The hard part is dealing with nesting...
" Note that ":" is an illegal character for source and target,
" unless it is preceded by "\".
fun! s:Resolve(source, target, output)
let word = a:target
let i = matchend(word, s:notslash . '\\\d') - 1
let table = "----------"
while i != -2 " There are back references to be replaced.
let d = word[i]
let backref = s:Ref(a:source, d)
" The idea is to replace '\d' with backref. Before we do this,
" replace any \(\) groups in backref with :1, :2, ... if they
" correspond to the first, second, ... group already inserted
" into backref. Later, replace :1 with \1 and so on. The group
" number w+b within backref corresponds to the group number
" s within a:source.
" w = number of '\(' in word before the current one
let w = s:Count(
\ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1')
let b = 1 " number of the current '\(' in backref
let s = d " number of the current '\(' in a:source
while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1')
\ && s < 10
if table[s] == "-"
if w + b < 10
" let table[s] = w + b
let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1)
endif
let b = b + 1
let s = s + 1
else
execute s:Ref(backref, b, "start", "len")
let ref = strpart(backref, start, len)
let backref = strpart(backref, 0, start) . ":". table[s]
\ . strpart(backref, start+len)
let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1')
endif
endwhile
let word = strpart(word, 0, i-1) . backref . strpart(word, i+1)
let i = matchend(word, s:notslash . '\\\d') - 1
endwhile
let word = substitute(word, s:notslash . '\zs:', '\\', 'g')
if a:output == "table"
return table
elseif a:output == "word"
return word
else
return table . word
endif
endfun
" Assume a:comma = ",". Then the format for a:patterns and a:1 is
" a:patterns = "<pat1>,<pat2>,..."
" a:1 = "<alt1>,<alt2>,..."
" If <patn> is the first pattern that matches a:string then return <patn>
" if no optional arguments are given; return <patn>,<altn> if a:1 is given.
fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma)
let i = matchend(tail, s:notslash . a:comma)
if a:0
let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma)
let j = matchend(alttail, s:notslash . a:comma)
endif
let current = strpart(tail, 0, i-1)
if a:branch == ""
let currpat = current
else
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
endif
while a:string !~ a:prefix . currpat . a:suffix
let tail = strpart(tail, i)
let i = matchend(tail, s:notslash . a:comma)
if i == -1
return -1
endif
let current = strpart(tail, 0, i-1)
if a:branch == ""
let currpat = current
else
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
endif
if a:0
let alttail = strpart(alttail, j)
let j = matchend(alttail, s:notslash . a:comma)
endif
endwhile
if a:0
let current = current . a:comma . strpart(alttail, 0, j-1)
endif
return current
endfun
" Call this function to turn on debugging information. Every time the main
" script is run, buffer variables will be saved. These can be used directly
" or viewed using the menu items below.
if !exists(":MatchDebug")
command! -nargs=0 MatchDebug call s:Match_debug()
endif
fun! s:Match_debug()
let b:match_debug = 1 " Save debugging information.
" pat = all of b:match_words with backrefs parsed
amenu &Matchit.&pat :echo b:match_pat<CR>
" match = bit of text that is recognized as a match
amenu &Matchit.&match :echo b:match_match<CR>
" curcol = cursor column of the start of the matching text
amenu &Matchit.&curcol :echo b:match_col<CR>
" wholeBR = matching group, original version
amenu &Matchit.wh&oleBR :echo b:match_wholeBR<CR>
" iniBR = 'if' piece, original version
amenu &Matchit.ini&BR :echo b:match_iniBR<CR>
" ini = 'if' piece, with all backrefs resolved from match
amenu &Matchit.&ini :echo b:match_ini<CR>
" tail = 'else\|endif' piece, with all backrefs resolved from match
amenu &Matchit.&tail :echo b:match_tail<CR>
" fin = 'endif' piece, with all backrefs resolved from match
amenu &Matchit.&word :echo b:match_word<CR>
" '\'.d in ini refers to the same thing as '\'.table[d] in word.
amenu &Matchit.t&able :echo '0:' . b:match_table . ':9'<CR>
endfun
" Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW"
" or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W".
" Return a "mark" for the original position, so that
" let m = MultiMatch("bW", "n") ... execute m
" will return to the original position. If there is a problem, do not
" move the cursor and return "", unless a count is given, in which case
" go up or down as many levels as possible and again return "".
" TODO This relies on the same patterns as % matching. It might be a good
" idea to give it its own matching patterns.
fun! s:MultiMatch(spflag, mode)
if !exists("b:match_words") || b:match_words == ""
return ""
end
let restore_options = (&ic ? "" : "no") . "ignorecase"
if exists("b:match_ignorecase")
let &ignorecase = b:match_ignorecase
endif
let startline = line(".")
let startcol = col(".")
" First step: if not already done, set the script variables
" s:do_BR flag for whether there are backrefs
" s:pat parsed version of b:match_words
" s:all regexp based on s:pat and the default groups
" This part is copied and slightly modified from s:Match_wrapper().
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
" Allow b:match_words = "GetVimMatchWords()" .
if b:match_words =~ ":"
let match_words = b:match_words
else
execute "let match_words =" b:match_words
endif
if (match_words != s:last_words) || (&mps != s:last_mps) ||
\ exists("b:match_debug")
let s:last_words = match_words
let s:last_mps = &mps
if match_words !~ s:notslash . '\\\d'
let s:do_BR = 0
let s:pat = match_words
else
let s:do_BR = 1
let s:pat = s:ParseWords(match_words)
endif
let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default,
\ '[,:]\+','\\|','g') . '\)'
if exists("b:match_debug")
let b:match_pat = s:pat
endif
endif
" Second step: figure out the patterns for searchpair()
" and save the screen, cursor position, and 'ignorecase'.
" - TODO: A lot of this is copied from s:Match_wrapper().
" - maybe even more functionality should be split off
" - into separate functions!
let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
let open = substitute(s:pat . cdefault,
\ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
let close = substitute(s:pat . cdefault,
\ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
if exists("b:match_skip")
let skip = b:match_skip
elseif exists("b:match_comment") " backwards compatibility and testing!
let skip = "r:" . b:match_comment
else
let skip = 's:comment\|string'
endif
let skip = s:ParseSkip(skip)
" let restore_cursor = line(".") . "G" . virtcol(".") . "|"
" normal! H
" let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
let restore_cursor = virtcol(".") . "|"
normal! g0
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
normal! H
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
execute restore_cursor
" Third step: call searchpair().
" Replace '\('--but not '\\('--with '\%(' and ',' with '\|'.
let openpat = substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
let openpat = substitute(openpat, ',', '\\|', 'g')
let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
let closepat = substitute(closepat, ',', '\\|', 'g')
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
let skip = '0'
else
execute "if " . skip . "| let skip = '0' | endif"
endif
mark '
let level = v:count1
while level
if searchpair(openpat, '', closepat, a:spflag, skip) < 1
call s:CleanUp(restore_options, a:mode, startline, startcol)
return ""
endif
let level = level - 1
endwhile
" Restore options and return a string to restore the original position.
call s:CleanUp(restore_options, a:mode, startline, startcol)
return restore_cursor
endfun
" Search backwards for "if" or "while" or "<tag>" or ...
" and return "endif" or "endwhile" or "</tag>" or ... .
" For now, this uses b:match_words and the same script variables
" as s:Match_wrapper() . Later, it may get its own patterns,
" either from a buffer variable or passed as arguments.
" fun! s:Autocomplete()
" echo "autocomplete not yet implemented :-("
" if !exists("b:match_words") || b:match_words == ""
" return ""
" end
" let startpos = s:MultiMatch("bW")
"
" if startpos == ""
" return ""
" endif
" " - TODO: figure out whether 'if' or '<tag>' matched, and construct
" " - the appropriate closing.
" let matchline = getline(".")
" let curcol = col(".") - 1
" " - TODO: Change the s:all argument if there is a new set of match pats.
" let regexp = s:Wholematch(matchline, s:all, curcol)
" let suf = strlen(matchline) - matchend(matchline, regexp)
" let prefix = (curcol ? '^.\{' . curcol . '}\%(' : '^\%(')
" let suffix = (suf ? '\).\{' . suf . '}$' : '\)$')
" " Reconstruct the version with unresolved backrefs.
" let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g')
" let patBR = substitute(patBR, ':\{2,}', ':', "g")
" " Now, set group and groupBR to the matching group: 'if:endif' or
" " 'while:endwhile' or whatever.
" let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
" let i = matchend(group, s:notslash . ",")
" let groupBR = strpart(group, i)
" let group = strpart(group, 0, i-1)
" " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
" if s:do_BR
" let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
" endif
" " let g:group = group
"
" " - TODO: Construct the closing from group.
" let fake = "end" . expand("<cword>")
" execute startpos
" return fake
" endfun
" Close all open structures. "Get the heck out of here!"
" fun! s:Gthhoh()
" let close = s:Autocomplete()
" while strlen(close)
" put=close
" let close = s:Autocomplete()
" endwhile
" endfun
" Parse special strings as typical skip arguments for searchpair():
" s:foo becomes (current syntax item) =~ foo
" S:foo becomes (current syntax item) !~ foo
" r:foo becomes (line before cursor) =~ foo
" R:foo becomes (line before cursor) !~ foo
fun! s:ParseSkip(str)
let skip = a:str
if skip[1] == ":"
if skip[0] == "s"
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .
\ strpart(skip,2) . "'"
elseif skip[0] == "S"
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" .
\ strpart(skip,2) . "'"
elseif skip[0] == "r"
let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'"
elseif skip[0] == "R"
let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'"
endif
endif
return skip
endfun
let &cpo = s:save_cpo
unlet s:save_cpo
" vim:sts=2:sw=2:
" Load the matchit package.
" For those users who were loading the matchit plugin from here.
packadd matchit
+3 -94
View File
@@ -1,94 +1,3 @@
" When you're writing shell scripts and you are in doubt which test to use,
" which shell environment variables are defined, what the syntax of the case
" statement is, and you need to invoke 'man sh'?
"
" Your problems are over now!
"
" Attached is a Vim script file for turning gvim into a shell script editor.
" It may also be used as an example how to use menus in Vim.
"
" Written by: Lennart Schultz <les@dmi.min.dk>
imenu Stmts.for for in do doneki kk0elli
imenu Stmts.case case in ) ;; esacbki k0elli
imenu Stmts.if if then fiki kk0elli
imenu Stmts.if-else if then else fiki kki kk0elli
imenu Stmts.elif elif then ki kk0elli
imenu Stmts.while while do doneki kk0elli
imenu Stmts.break break
imenu Stmts.continue continue
imenu Stmts.function () { }ki k0i
imenu Stmts.return return
imenu Stmts.return-true return 0
imenu Stmts.return-false return 1
imenu Stmts.exit exit
imenu Stmts.shift shift
imenu Stmts.trap trap
imenu Test.existence [ -e ]hi
imenu Test.existence - file [ -f ]hi
imenu Test.existence - file (not empty) [ -s ]hi
imenu Test.existence - directory [ -d ]hi
imenu Test.existence - executable [ -x ]hi
imenu Test.existence - readable [ -r ]hi
imenu Test.existence - writable [ -w ]hi
imenu Test.String is empty [ x = "x$" ]hhi
imenu Test.String is not empty [ x != "x$" ]hhi
imenu Test.Strings is equal [ "" = "" ]hhhhhhhi
imenu Test.Strings is not equal [ "" != "" ]hhhhhhhhi
imenu Test.Values is greater than [ -gt ]hhhhhhi
imenu Test.Values is greater equal [ -ge ]hhhhhhi
imenu Test.Values is equal [ -eq ]hhhhhhi
imenu Test.Values is not equal [ -ne ]hhhhhhi
imenu Test.Values is less than [ -lt ]hhhhhhi
imenu Test.Values is less equal [ -le ]hhhhhhi
imenu ParmSub.Substitute word if parm not set ${:-}hhi
imenu ParmSub.Set parm to word if not set ${:=}hhi
imenu ParmSub.Substitute word if parm set else nothing ${:+}hhi
imenu ParmSub.If parm not set print word and exit ${:?}hhi
imenu SpShVars.Number of positional parameters ${#}
imenu SpShVars.All positional parameters (quoted spaces) ${*}
imenu SpShVars.All positional parameters (unquoted spaces) ${@}
imenu SpShVars.Flags set ${-}
imenu SpShVars.Return code of last command ${?}
imenu SpShVars.Process number of this shell ${$}
imenu SpShVars.Process number of last background command ${!}
imenu Environ.HOME ${HOME}
imenu Environ.PATH ${PATH}
imenu Environ.CDPATH ${CDPATH}
imenu Environ.MAIL ${MAIL}
imenu Environ.MAILCHECK ${MAILCHECK}
imenu Environ.PS1 ${PS1}
imenu Environ.PS2 ${PS2}
imenu Environ.IFS ${IFS}
imenu Environ.SHACCT ${SHACCT}
imenu Environ.SHELL ${SHELL}
imenu Environ.LC_CTYPE ${LC_CTYPE}
imenu Environ.LC_MESSAGES ${LC_MESSAGES}
imenu Builtins.cd cd
imenu Builtins.echo echo
imenu Builtins.eval eval
imenu Builtins.exec exec
imenu Builtins.export export
imenu Builtins.getopts getopts
imenu Builtins.hash hash
imenu Builtins.newgrp newgrp
imenu Builtins.pwd pwd
imenu Builtins.read read
imenu Builtins.readonly readonly
imenu Builtins.return return
imenu Builtins.times times
imenu Builtins.type type
imenu Builtins.umask umask
imenu Builtins.wait wait
imenu Set.set set
imenu Set.unset unset
imenu Set.mark modified or modified variables set -a
imenu Set.exit when command returns non-zero exit code set -e
imenu Set.Disable file name generation set -f
imenu Set.remember function commands set -h
imenu Set.All keyword arguments are placed in the environment set -k
imenu Set.Read commands but do not execute them set -n
imenu Set.Exit after reading and executing one command set -t
imenu Set.Treat unset variables as an error when substituting set -u
imenu Set.Print shell input lines as they are read set -v
imenu Set.Print commands and their arguments as they are executed set -x
" Load the shellmenu package.
" For those users who were loading the shellmenu plugin from here.
packadd shellmenu
+3 -22
View File
@@ -1,22 +1,3 @@
" These macros swap the left and right mouse buttons (for left handed)
" Don't forget to do ":set mouse=a" or the mouse won't work at all
noremap <LeftMouse> <RightMouse>
noremap <2-LeftMouse> <2-RightMouse>
noremap <3-LeftMouse> <3-RightMouse>
noremap <4-LeftMouse> <4-RightMouse>
noremap <LeftDrag> <RightDrag>
noremap <LeftRelease> <RightRelease>
noremap <RightMouse> <LeftMouse>
noremap <2-RightMouse> <2-LeftMouse>
noremap <3-RightMouse> <3-LeftMouse>
noremap <4-RightMouse> <4-LeftMouse>
noremap <RightDrag> <LeftDrag>
noremap <RightRelease> <LeftRelease>
noremap g<LeftMouse> <C-RightMouse>
noremap g<RightMouse> <C-LeftMouse>
noremap! <LeftMouse> <RightMouse>
noremap! <LeftDrag> <RightDrag>
noremap! <LeftRelease> <RightRelease>
noremap! <RightMouse> <LeftMouse>
noremap! <RightDrag> <LeftDrag>
noremap! <RightRelease> <LeftRelease>
" Load the swapmouse package.
" For those users who were loading the swapmous plugin from here.
packadd swapmouse
+11 -5
View File
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Feb 21
" Last Change: 2016 Apr 30
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@@ -412,6 +412,10 @@ call append("$", "highlight\twhich highlighting to use for various occasions")
call <SID>OptionG("hl", &hl)
call append("$", "hlsearch\thighlight all matches for the last used search pattern")
call <SID>BinOptionG("hls", &hls)
if has("termguicolors")
call append("$", "termguicolors\tuse GUI colors for the terminal")
call <SID>BinOptionG("tgc", &tgc)
endif
if has("syntax")
call append("$", "cursorcolumn\thighlight the screen column of the cursor")
call append("$", "\t(local to window)")
@@ -753,6 +757,10 @@ call <SID>Header("editing text")
call append("$", "undolevels\tmaximum number of changes that can be undone")
call append("$", "\t(global or local to buffer)")
call append("$", " \tset ul=" . &ul)
call append("$", "undofile\tautomatically save and restore undo history")
call <SID>BinOptionG("udf", &udf)
call append("$", "undodir\tlist of directories for undo files")
call <SID>OptionG("udir", &udir)
call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
call append("$", " \tset ur=" . &ur)
call append("$", "modified\tchanges have been made and not written to a file")
@@ -1089,10 +1097,6 @@ if has("vertsplit")
call append("$", "cmdwinheight\theight of the command-line window")
call <SID>OptionG("cwh", &cwh)
endif
call append("$", "undofile\tautomatically save and restore undo history")
call <SID>BinOptionG("udf", &udf)
call append("$", "undodir\tlist of directories for undo files")
call <SID>OptionG("udir", &udir)
call <SID>Header("executing external commands")
@@ -1269,6 +1273,8 @@ if has("multi_byte")
endif
call append("$", "ambiwidth\twidth of ambiguous width characters")
call <SID>OptionG("ambw", &ambw)
call append("$", "emoji\temoji characters are full width")
call <SID>BinOptionG("emo", &emo)
endif
+72
View File
@@ -0,0 +1,72 @@
" Back to Qwerty keyboard after using Dvorak.
iunmap a
iunmap b
iunmap c
iunmap d
iunmap e
iunmap f
iunmap g
iunmap h
iunmap i
iunmap j
iunmap k
iunmap l
iunmap m
iunmap n
iunmap o
iunmap p
iunmap q
iunmap r
iunmap s
iunmap t
iunmap u
iunmap v
iunmap w
iunmap x
iunmap y
iunmap z
iunmap ;
iunmap '
iunmap "
iunmap ,
iunmap .
iunmap /
iunmap A
iunmap B
iunmap C
iunmap D
iunmap E
iunmap F
iunmap G
iunmap H
iunmap I
iunmap J
iunmap K
iunmap L
iunmap M
iunmap N
iunmap O
iunmap P
iunmap Q
iunmap R
iunmap S
iunmap T
iunmap U
iunmap V
iunmap W
iunmap X
iunmap Y
iunmap Z
iunmap <
iunmap >
iunmap ?
iunmap :
iunmap [
iunmap ]
iunmap {
iunmap }
iunmap -
iunmap _
iunmap =
iunmap +
+77
View File
@@ -0,0 +1,77 @@
" Dvorak keyboard, only in Insert mode.
"
" Change "inoremap" to "map!" to also use in Ex mode.
" Also change disable.vim then: "iunmap" to "unmap!".
"
" You may want to add a list of map's too.
inoremap a a
inoremap b x
inoremap c j
inoremap d e
inoremap e .
inoremap f u
inoremap g i
inoremap h d
inoremap i c
inoremap j h
inoremap k t
inoremap l n
inoremap m m
inoremap n b
inoremap o r
inoremap p l
inoremap q '
inoremap r p
inoremap s o
inoremap t y
inoremap u g
inoremap v k
inoremap w ,
inoremap x q
inoremap y f
inoremap z ;
inoremap ; s
inoremap ' -
inoremap " _
inoremap , w
inoremap . v
inoremap / z
inoremap A A
inoremap B X
inoremap C J
inoremap D E
inoremap E >
inoremap F U
inoremap G I
inoremap H D
inoremap I C
inoremap J H
inoremap K T
inoremap L N
inoremap M M
inoremap N B
inoremap O R
inoremap P L
inoremap Q "
inoremap R P
inoremap S O
inoremap T Y
inoremap U G
inoremap V K
inoremap W <
inoremap X Q
inoremap Y F
inoremap Z :
inoremap < W
inoremap > V
inoremap ? Z
inoremap : S
inoremap [ /
inoremap ] =
inoremap { ?
inoremap } +
inoremap - [
inoremap _ {
inoremap = ]
inoremap + }
+16
View File
@@ -0,0 +1,16 @@
" When using a dvorak keyboard this file may be of help to you.
" These mappings have been made by Lawrence Kesteloot <kesteloo@cs.unc.edu>.
" What they do is that the most often used keys, like hjkl, are put in a more
" easy to use position.
" It may take some time to learn using this.
if exists("g:loaded_dvorak_plugin")
finish
endif
let g:loaded_dvorak_plugin = 1
" Key to go into dvorak mode:
map ,d :runtime dvorak/enable.vim<CR>
" Key to get out of dvorak mode:
map ,q :runtime dvorak/disable.vim<CR>
@@ -0,0 +1,114 @@
" Vim Plugin: Edit the file with an existing Vim if possible
" Maintainer: Bram Moolenaar
" Last Change: 2016 Mar 28
" To use add ":packadd! editexisting" in your vimrc file.
" This plugin serves two purposes:
" 1. On startup, if we were invoked with one file name argument and the file
" is not modified then try to find another Vim instance that is editing
" this file. If there is one then bring it to the foreground and exit.
" 2. When a file is edited and a swap file exists for it, try finding that
" other Vim and bring it to the foreground. Requires Vim 7, because it
" uses the SwapExists autocommand event.
" Function that finds the Vim instance that is editing "filename" and brings
" it to the foreground.
func s:EditElsewhere(filename)
let fname_esc = substitute(a:filename, "'", "''", "g")
let servers = serverlist()
while servers != ''
" Get next server name in "servername"; remove it from "servers".
let i = match(servers, "\n")
if i == -1
let servername = servers
let servers = ''
else
let servername = strpart(servers, 0, i)
let servers = strpart(servers, i + 1)
endif
" Skip ourselves.
if servername ==? v:servername
continue
endif
" Check if this server is editing our file.
if remote_expr(servername, "bufloaded('" . fname_esc . "')")
" Yes, bring it to the foreground.
if has("win32")
call remote_foreground(servername)
endif
call remote_expr(servername, "foreground()")
if remote_expr(servername, "exists('*EditExisting')")
" Make sure the file is visible in a window (not hidden).
" If v:swapcommand exists and is set, send it to the server.
if exists("v:swapcommand")
let c = substitute(v:swapcommand, "'", "''", "g")
call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')")
else
call remote_expr(servername, "EditExisting('" . fname_esc . "', '')")
endif
endif
if !(has('vim_starting') && has('gui_running') && has('gui_win32'))
" Tell the user what is happening. Not when the GUI is starting
" though, it would result in a message box.
echomsg "File is being edited by " . servername
sleep 2
endif
return 'q'
endif
endwhile
return ''
endfunc
" When the plugin is loaded and there is one file name argument: Find another
" Vim server that is editing this file right now.
if argc() == 1 && !&modified
if s:EditElsewhere(expand("%:p")) == 'q'
quit
endif
endif
" Setup for handling the situation that an existing swap file is found.
try
au! SwapExists * let v:swapchoice = s:EditElsewhere(expand("<afile>:p"))
catch
" Without SwapExists we don't do anything for ":edit" commands
endtry
" Function used on the server to make the file visible and possibly execute a
" command.
func! EditExisting(fname, command)
" Get the window number of the file in the current tab page.
let winnr = bufwinnr(a:fname)
if winnr <= 0
" Not found, look in other tab pages.
let bufnr = bufnr(a:fname)
for i in range(tabpagenr('$'))
if index(tabpagebuflist(i + 1), bufnr) >= 0
" Make this tab page the current one and find the window number.
exe 'tabnext ' . (i + 1)
let winnr = bufwinnr(a:fname)
break
endif
endfor
endif
if winnr > 0
exe winnr . "wincmd w"
elseif exists('*fnameescape')
exe "split " . fnameescape(a:fname)
else
exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
endif
if a:command != ''
exe "normal! " . a:command
endif
redraw
endfunc
+316
View File
@@ -0,0 +1,316 @@
" Function to left and right align text.
"
" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
" Created: 980806 14:13 (or around that time anyway)
" Revised: 001103 00:36 (See "Revisions" below)
" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
"
" Justify() will left and right align a line by filling in an
" appropriate amount of spaces. Extra spaces are added to existing
" spaces starting from the right side of the line. As an example, the
" following documentation has been justified.
"
" The function takes the following arguments:
" textwidth argument
" ------------------
" If not specified, the value of the 'textwidth' option is used. If
" 'textwidth' is zero a value of 80 is used.
"
" Additionally the arguments 'tw' and '' are accepted. The value of
" 'textwidth' will be used. These are handy, if you just want to specify
" the maxspaces argument.
" maxspaces argument
" ------------------
" If specified, alignment will only be done, if the longest space run
" after alignment is no longer than maxspaces.
"
" An argument of '' is accepted, should the user like to specify all
" arguments.
"
" To aid user defined commands, negative values are accepted aswell.
" Using a negative value specifies the default behaviour: any length of
" space runs will be used to justify the text.
" indent argument
" ---------------
" This argument specifies how a line should be indented. The default is
" to keep the current indentation.
"
" Negative values: Keep current amount of leading whitespace.
" Positive values: Indent all lines with leading whitespace using this
" amount of whitespace.
"
" Note that the value 0, needs to be quoted as a string. This value
" leads to a left flushed text.
"
" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
" added. In this case, if the value of indent is positive, the amount of
" whitespace to be added will be multiplied by the value of the
" 'shiftwidth' and 'tabstop' settings. If these units are used, the
" argument must be given as a string, eg. Justify('','','2sw').
"
" If the values of 'sw' or 'tw' are negative, they are treated as if
" they were 0, which means that the text is flushed left. There is no
" check if a negative number prefix is used to change the sign of a
" negative 'sw' or 'ts' value.
"
" As with the other arguments, '' may be used to get the default
" behaviour.
" Notes:
"
" If the line, adjusted for space runs and leading/trailing whitespace,
" is wider than the used textwidth, the line will be left untouched (no
" whitespace removed). This should be equivalent to the behaviour of
" :left, :right and :center.
"
" If the resulting line is shorter than the used textwidth it is left
" untouched.
"
" All space runs in the line are truncated before the alignment is
" carried out.
"
" If you have set 'noexpandtab', :retab! is used to replace space runs
" with whitespace using the value of 'tabstop'. This should be
" conformant with :left, :right and :center.
"
" If joinspaces is set, an extra space is added after '.', '?' and '!'.
" If 'cpooptions' include 'j', extra space is only added after '.'.
" (This may on occasion conflict with maxspaces.)
" Related mappings:
"
" Mappings that will align text using the current text width, using at
" most four spaces in a space run and keeping current indentation.
nmap _j :%call Justify('tw',4)<CR>
vmap _j :call Justify('tw',4)<CR>
"
" Mappings that will remove space runs and format lines (might be useful
" prior to aligning the text).
nmap ,gq :%s/\s\+/ /g<CR>gq1G
vmap ,gq :s/\s\+/ /g<CR>gvgq
" User defined command:
"
" The following is an ex command that works as a shortcut to the Justify
" function. Arguments to Justify() can be added after the command.
com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
"
" The following commands are all equivalent:
"
" 1. Simplest use of Justify():
" :call Justify()
" :Justify
"
" 2. The _j mapping above via the ex command:
" :%Justify tw 4
"
" 3. Justify visualised text at 72nd column while indenting all
" previously indented text two shiftwidths
" :'<,'>call Justify(72,'','2sw')
" :'<,'>Justify 72 -1 2sw
"
" This documentation has been justified using the following command:
":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
" Revisions:
" 001103: If 'joinspaces' was set, calculations could be wrong.
" Tabs at start of line could also lead to errors.
" Use setline() instead of "exec 's/foo/bar/' - safer.
" Cleaned up the code a bit.
"
" Todo: Convert maps to the new script specific form
" Error function
function! Justify_error(message)
echohl Error
echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
echohl None
endfunction
" Now for the real thing
function! Justify(...) range
if a:0 > 3
call Justify_error("Too many arguments (max 3)")
return 1
endif
" Set textwidth (accept 'tw' and '' as arguments)
if a:0 >= 1
if a:1 =~ '^\(tw\)\=$'
let tw = &tw
elseif a:1 =~ '^\d\+$'
let tw = a:1
else
call Justify_error("tw must be a number (>0), '' or 'tw'")
return 2
endif
else
let tw = &tw
endif
if tw == 0
let tw = 80
endif
" Set maximum number of spaces between WORDs
if a:0 >= 2
if a:2 == ''
let maxspaces = tw
elseif a:2 =~ '^-\d\+$'
let maxspaces = tw
elseif a:2 =~ '^\d\+$'
let maxspaces = a:2
else
call Justify_error("maxspaces must be a number or ''")
return 3
endif
else
let maxspaces = tw
endif
if maxspaces <= 1
call Justify_error("maxspaces should be larger than 1")
return 4
endif
" Set the indentation style (accept sw and ts units)
let indent_fix = ''
if a:0 >= 3
if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = -1
elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = 0
elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
let indent = substitute(a:3, '\D', '', 'g')
elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
let indent = 1
else
call Justify_error("indent: a number with 'sw'/'ts' unit")
return 5
endif
if indent >= 0
while indent > 0
let indent_fix = indent_fix . ' '
let indent = indent - 1
endwhile
let indent_sw = 0
if a:3 =~ '\(shiftwidth\|sw\)'
let indent_sw = &sw
elseif a:3 =~ '\(tabstop\|ts\)'
let indent_sw = &ts
endif
let indent_fix2 = ''
while indent_sw > 0
let indent_fix2 = indent_fix2 . indent_fix
let indent_sw = indent_sw - 1
endwhile
let indent_fix = indent_fix2
endif
else
let indent = -1
endif
" Avoid substitution reports
let save_report = &report
set report=1000000
" Check 'joinspaces' and 'cpo'
if &js == 1
if &cpo =~ 'j'
let join_str = '\(\. \)'
else
let join_str = '\([.!?!] \)'
endif
endif
let cur = a:firstline
while cur <= a:lastline
let str_orig = getline(cur)
let save_et = &et
set et
exec cur . "retab"
let &et = save_et
let str = getline(cur)
let indent_str = indent_fix
let indent_n = strlen(indent_str)
" Shall we remember the current indentation
if indent < 0
let indent_orig = matchstr(str_orig, '^\s*')
if strlen(indent_orig) > 0
let indent_str = indent_orig
let indent_n = strlen(matchstr(str, '^\s*'))
endif
endif
" Trim trailing, leading and running whitespace
let str = substitute(str, '\s\+$', '', '')
let str = substitute(str, '^\s\+', '', '')
let str = substitute(str, '\s\+', ' ', 'g')
let str_n = strdisplaywidth(str)
" Possible addition of space after punctuation
if exists("join_str")
let str = substitute(str, join_str, '\1 ', 'g')
endif
let join_n = strdisplaywidth(str) - str_n
" Can extraspaces be added?
" Note that str_n may be less than strlen(str) [joinspaces above]
if strdisplaywidth(str) <= tw - indent_n && str_n > 0
" How many spaces should be added
let s_add = tw - str_n - indent_n - join_n
let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
let s_dup = s_add / s_nr
let s_mod = s_add % s_nr
" Test if the changed line fits with tw
if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
" Duplicate spaces
while s_dup > 0
let str = substitute(str, '\( \+\)', ' \1', 'g')
let s_dup = s_dup - 1
endwhile
" Add extra spaces from the end
while s_mod > 0
let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
let s_mod = s_mod - 1
endwhile
" Indent the line
if indent_n > 0
let str = substitute(str, '^', indent_str, '' )
endif
" Replace the line
call setline(cur, str)
" Convert to whitespace
if &et == 0
exec cur . 'retab!'
endif
endif " Change of line
endif " Possible change
let cur = cur + 1
endwhile
norm ^
let &report = save_report
endfunction
" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
@@ -4,7 +4,7 @@ For instructions on installing this file, type
:help matchit-install
inside Vim.
For Vim version 6.3. Last change: 2007 Aug 29
For Vim version 6.3. Last change: 2016 Mar 28
VIM REFERENCE MANUAL by Benji Fisher
@@ -152,13 +152,10 @@ setting |b:match_skip|.
==============================================================================
2. Activation *matchit-activate*
You can use this script as a plugin, by copying it to your plugin directory.
See |add-global-plugin| for instructions. You can also add a line to your
|vimrc| file, such as >
:source $VIMRUNTIME/macros/matchit.vim
or >
:runtime macros/matchit.vim
Either way, the script should start working the next time you start up Vim.
To use the matchit plugin add this line to your |vimrc|: >
packadd! matchit
The script should start working the next time you start Vim.
(Earlier versions of the script did nothing unless a |buffer-variable| named
|b:match_words| was defined. Even earlier versions contained autocommands

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