Compare commits

..

284 Commits

Author SHA1 Message Date
78ddc06bdd patch 8.0.1844: superfluous quickfix code, missing examples
Problem:    Superfluous quickfix code, missing examples.
Solution:   Remove unneeded code.  Add a few examples.  Add a bit more
            testing. (Yegappan Lakshmanan, closes #2916)
2018-05-15 21:56:34 +02:00
8776889b5b patch 8.0.1843: entry for 'wrap' in options window is wrong
Problem:    Entry for 'wrap' in options window is wrong. (John Little)
Solution:   Make the change apply locally.
2018-05-15 21:42:51 +02:00
0b565e5da5 patch 8.0.1842: popup menu inside terminal window isn't cleared
Problem:    Popup menu inside terminal window isn't cleared.
Solution:   Use NOT_VALID in pum_undisplay(). (suggested by Christian
            Brabandt, closes #2908)
2018-05-14 23:08:32 +02:00
1af6a4b891 patch 8.0.1841: HP-UX does not have setenv()
Problem:    HP-UX does not have setenv().
Solution:   Use vim_setenv(). (John Marriott)
2018-05-14 22:58:34 +02:00
027df2a7d9 patch 8.0.1840: getwinpos() is not tested
Problem:    getwinpos() is not tested.
Solution:   Add a test. (Dominique Pelle, closes #2911)
2018-05-14 21:31:08 +02:00
9cfc7d885c patch 8.0.1839: script to check .po file doesn't check for plural header
Problem:    Script to check .po file doesn't check for plural header.
Solution:   Add a check that the plural header is present when needed.
2018-05-13 22:37:03 +02:00
eb3dc87f01 Updated runtime files 2018-05-13 22:34:24 +02:00
620020eb1d patch 8.0.1838: cursor in wrong pos when switching to Terminal-Normal mode
Problem:    Cursor in wrong position when switching to Terminal-Normal mode.
            (Dominique Pelle)
Solution:   Move to the end of the line if coladvance() fails.  Do not take a
            snapshot a second time.
2018-05-13 19:06:12 +02:00
5e3423d192 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Problem:    One character cmdline abbreviation not triggered after '<,'>.
Solution:   Skip over the special range. (Christian Brabandt, closes #2320)
2018-05-13 18:36:27 +02:00
25782a7ff4 patch 8.0.1836: buffer-local window options may not be recent
Problem:    Buffer-local window options may not be recent if the buffer is
            still open in another window.
Solution:   Copy the options from the window instead of the outdated window
            options. (Bjorn Linse, closes #2336)
2018-05-13 18:05:33 +02:00
2290b1f8aa patch 8.0.1835: print document name does not support multi-byte
Problem:    Print document name does not support multi-byte.
Solution:   Use StartDocW() if needed. (Yasuhiro Matsumoto, closes #2478)
2018-05-13 17:30:45 +02:00
518bc174ed patch 8.0.1834: GUI: find/replace dialog does not handle some chars
Problem:    GUI: find/replace dialog does not handle some chars properly.
Solution:   Escape '?' when needed.  Always escape backslash. (closes #2418,
            closes #2435)
2018-05-13 17:05:30 +02:00
889fe2c2b9 patch 8.0.1833: X11: ":echo 3.14" gives E806
Problem:    X11: ":echo 3.14" gives E806.
Solution:   set LC_NUMERIC to "C". (Dominique Pelle, closes #2368)
2018-05-13 16:23:40 +02:00
137374fd65 patch 8.0.1832: cannot use :unlet for an environment variable
Problem:    Cannot use :unlet for an environment variable.
Solution:   Make it work.  Use unsetenv() if available. (Ken Takata,
            closes #2855)
2018-05-13 15:59:50 +02:00
8b62e31003 patch 8.0.1831: sometimes the quickfix title is incorrectly prefixed with ':'
Problem:    Sometimes the quickfix title is incorrectly prefixed with ':'.
Solution:   Prepend the colon in another way. (Yegappan Lakshmanan, closes
            #2905)
2018-05-13 15:29:04 +02:00
05c4a471d2 patch 8.0.1830: switching to Terminal-Normal mode does not redraw
Problem:    Switching to Terminal-Normal mode does not redraw. (Dominique
            Pelle)
Solution:   Also redraw when not updating the snapshot. (closes #2904)
2018-05-13 15:15:43 +02:00
12365ce49f patch 8.0.1829: MS-Windows: script for vimdiff can't handle ! chars
Problem:    MS-Windows: script for vimdiff can't handle ! chars.
Solution:   Escape the ! chars. (Hans Ginzel, closes #2896)
2018-05-13 14:45:25 +02:00
e65fffd9b4 patch 8.0.1828: get no clue why :gui does not fork
Problem:    Get no clue why :gui does not fork.
Solution:   Add a channel log message.
2018-05-13 14:40:15 +02:00
b2ed680ba7 patch 8.0.1827: compiler warning for signed/unsigned char pointers
Problem:    Compiler warning for signed/unsigned char pointers. (Cesar Romani)
Solution:   Change the type of jv_argv.
2018-05-13 14:05:18 +02:00
7db25fed5d Update runtime files. 2018-05-13 00:02:36 +02:00
52ecaaa63d patch 8.0.1826: configure uses old compiler flag
Problem:    Configure uses old compiler flag.
Solution:   Remove _DARWIN_C_SOURCE. (Kazunobu Kuriyama)
2018-05-12 21:38:13 +02:00
dd1d7be4e6 patch 8.0.1825: might use NULL pointer when out of memory
Problem:    Might use NULL pointer when out of memory. (Coverity)
Solution:   Handle NULL pointer better.
2018-05-12 21:34:58 +02:00
73dd1bd54e patch 8.0.1824: Coverity warns for variable that may be uninitialized
Problem:    Coverity warns for variable that may be uninitialized.
Solution:   Initialize the variable.
2018-05-12 21:16:25 +02:00
54c6bafa16 patch 8.0.1823: test for terminal stdout redirection is flaky
Problem:    Test for terminal stdout redirection is flaky.
Solution:   Wait for the job to finish.
2018-05-12 21:12:12 +02:00
ee62f9fa74 patch 8.0.1822: make uninstall does not remove colors/tools
Problem:    Make uninstall does not remove colors/tools.
Solution:   Add a line to delete the tools directory. (Kazunobu Kuriyama)
2018-05-12 21:05:45 +02:00
2bc799579d patch 8.0.1821: cursor in terminal window moves when pressing CTRL-W
Problem:    Cursor in terminal window moves when pressing CTRL-W. (Dominique
            Pelle)
Solution:   Do not more the cursor or redraw when not in Terminal-Normal mode.
            (closes #2904)
2018-05-12 20:36:24 +02:00
cd8fb449d6 patch 8.0.1820: terminal window redirecting stdout does not show stderr
Problem:    Terminal window redirecting stdout does not show stderr. (Matéo
            Zanibelli)
Solution:   When stdout is not connected to pty_master_fd then use it for
            stderr. (closes #2903)
2018-05-12 17:42:42 +02:00
8c3169c58e patch 8.0.1819: swap file warning for file with non-existing directory
Problem:    Swap file warning for a file in a non-existing directory, if there
            is another with the same file name. (Juergen Weigert)
Solution:   When expanding the file name fails compare the file names.
2018-05-12 17:04:12 +02:00
3f1a53c434 patch 8.0.1818: lines remove from wrong buffer when using terminal window
Problem:    Lines remove from wrong buffer when using terminal window.
Solution:   Make sure to use tl_buffer.
2018-05-12 16:55:14 +02:00
b0f42ba60d patch 8.0.1817: a timer may change v:count unexpectedly
Problem:    A timer may change v:count unexpectedly.
Solution:   Save and restore v:count and similar variables when a timer
            callback is invoked. (closes #2897)
2018-05-12 15:38:26 +02:00
ff3be4fe1e patch 8.0.1816: no test for setcmdpos()
Problem:    No test for setcmdpos().
Solution:   Add a test. (Dominique Pelle, closes #2901)
2018-05-12 13:18:46 +02:00
0cb8ac71ae patch 8.0.1815: crash with terminal window and with 'lazyredraw' set
Problem:    Still a crash with terminal window and with 'lazyredraw' set.
            (Antoine)
Solution:   Do not wipe out the buffer when updating the screen.
2018-05-11 22:01:51 +02:00
a10ae5e323 patch 8.0.1814: crash with terminal window and with 'lazyredraw' set
Problem:    Crash with terminal window and with 'lazyredraw' set. (Antoine)
Solution:   Check the terminal still exists after update_screen().
2018-05-11 20:48:29 +02:00
38623c8512 patch 8.0.1813: Windows installer doesn't install terminal debugger
Problem:    Windows installer doesn't install terminal debugger.
Solution:   Add the package to the list of files to install.
2018-05-10 21:24:35 +02:00
7a2b0e55e9 patch 8.0.1812: the qf_jump_to_usable_window() function is too long
Problem:    The qf_jump_to_usable_window() function is too long.
Solution:   Split it in parts. (Yegappan Lakshmanan, closes #2891)
2018-05-10 18:55:28 +02:00
72cf47a279 patch 8.0.1811: no test for winrestcmd()
Problem:    No test for winrestcmd().
Solution:   Add a test. (Dominique Pelle, closes #2894)
2018-05-10 18:23:29 +02:00
56bc8e299c patch 8.0.1810: buffer of a terminal only updated in Terminal-Normal mode
Problem:    Buffer of a terminal only updated in Terminal-Normal mode.
Solution:   Copy the terminal window content to the buffer when in
            Terminal-Job mode.
2018-05-10 18:05:56 +02:00
b946482190 patch 8.0.1809: various typos
Problem:    Various typos.
Solution:   Correct the mistakes, change "cursur" to "cursor". (closes #2887)
2018-05-10 15:09:49 +02:00
9289df5ca9 patch 8.0.1808: can't build without TGETENT
Problem:    Can't build without TGETENT.
Solution:   Add #ifdef
2018-05-10 14:40:57 +02:00
69e056915c patch 8.0.1807: function to set terminal name is too long
Problem:    Function to set terminal name is too long.
Solution:   Refactor the function.  Fix typo in test.
2018-05-10 14:11:52 +02:00
39de952577 patch 8.0.1806: InsertCharPre causes problems for autocomplete
Problem:    InsertCharPre causes problems for autocomplete. (Lifepillar)
Solution:   Check for InsertCharPre before calling vpeekc(). (Christian
            Brabandt, closes #2876)
2018-05-08 22:48:00 +02:00
18cebf4417 patch 8.0.1805: qf_parse_line() is too long
Problem:    qf_parse_line() is too long.
Solution:   Split it in parts.  Properly handle vim_realloc() failing.
            (Yegappan Lakshmanan, closes #2881)
2018-05-08 22:31:37 +02:00
655a82a8d3 patch 8.0.1804: using :normal in terminal window causes problems
Problem:    Using :normal in terminal window causes problems. (Dominique
            Pelle)
Solution:   Don't call terminal_loop() for :normal. (closes #2886)
2018-05-08 22:01:07 +02:00
9b50f36e40 patch 8.0.1803: warning for uninitialized variable
Problem:    Warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize it.
2018-05-07 20:10:17 +02:00
402c83921e patch 8.0.1802: MS-Windows: terminal test fails
Problem:    MS-Windows: terminal test fails.
Solution:   Close redirected output file earlier.
2018-05-06 22:01:42 +02:00
f25329cb94 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Problem:    MS-Windows: redirecting terminal output does not work.
Solution:   Intercept the text written to the terminal and write it to the
            file.
2018-05-06 21:49:32 +02:00
778df2a3cb patch 8.0.1800: X11: getting color is slow
Problem:    X11: getting color is slow.
Solution:   Avoid using sprintf() and XParseColor(), put the RGB values in
            XColor directly.
2018-05-06 19:19:36 +02:00
85eee130f4 Update runtime files. 2018-05-06 17:57:30 +02:00
7ce551f317 patch 8.0.1799: no test for :registers command
Problem:    No test for :registers command.
Solution:   Add a test. (Dominique Pelle, closes #2880)
2018-05-06 17:32:19 +02:00
5aa9896b2e patch 8.0.1798: MS-Windows: file considered read-only too often
Problem:    MS-Windows: file considered read-only when another program has
            opened it.
Solution:   Pass file sharing flag to CreateFile(). (Linwei, closes #2860)
2018-05-06 17:09:38 +02:00
6eddadff13 patch 8.0.1797: terminal window is redrawn too often
Problem:    Terminal window is redrawn too often and scrolling is repeated.
Solution:   Don't scroll immediately but only when redrawing.  Avoid redrawing
            the whole terminal window on every change.
2018-05-06 16:40:16 +02:00
231a2db1b3 patch 8.0.1796: GUI: click on tab fails when the focus is in a terminal
Problem:    GUI: click on tab fails when the focus is in a terminal window.
Solution:   Handle K_TABLINE.
2018-05-06 13:53:50 +02:00
b0b98d5230 patch 8.0.1795: lose contact with jobs when :gui forks
Problem:    Lose contact with jobs when :gui forks.
Solution:   Don't fork when there is a running job. Make log message for a
            died job clearer.  Also close the terminal when stderr and stdout
            are the same FD.
2018-05-05 21:01:00 +02:00
b833c1ef7b patch 8.0.1794: duplicate term options after renaming
Problem:    Duplicate term options after renaming.
Solution:   Remove the old names 'termkey', 'termsize' and 'terminalscroll'.
2018-05-05 16:36:06 +02:00
248be5c5de patch 8.0.1793: no test for "vim -g"
Problem:    No test for "vim -g".
Solution:   Add a test for "-g" and "-y".
2018-05-05 15:47:19 +02:00
c3e81694fc patch 8.0.1792: MS-Windows users expect -? to work like --help
Problem:    MS-Windows users expect -? to work like --help.
Solution:   Add -?. (Christian Brabandt, closes #2867)
2018-05-05 15:09:51 +02:00
9894e394b2 patch 8.0.1791: using uint8_t does not work everywhere
Problem:    Using uint8_t does not work everywhere.
Solution:   Use char_u instead.
2018-05-05 14:29:06 +02:00
c136af29c0 patch 8.0.1790: 'winfixwidth' is not always respected by :close
Problem:    'winfixwidth' is not always respected by :close.
Solution:   Prefer a frame without 'winfixwidth' or 'winfixheight'. (Jason
            Franklin)
2018-05-04 20:15:38 +02:00
606cb8b08e patch 8.0.1789: BufWinEnter does not work well for a terminal window
Problem:    BufWinEnter does not work well for a terminal window.
Solution:   Do not trigger BufWinEnter when opening a terminal window.
2018-05-03 20:40:20 +02:00
dddab90d22 patch 8.0.1788: tool to check a color scheme is not installed
Problem:    Tool to check a color scheme is not installed.
Solution:   Update the install rule. (Christian Brabandt)
2018-05-02 22:00:17 +02:00
e2c8d83926 patch 8.0.1787: cannot insert the whole cursor line
Problem:    Cannot insert the whole cursor line.
Solution:   Make CTRL-R CTRL-L work. (Andy Massimino, closes #2857)
2018-05-01 19:24:03 +02:00
b2ac14c0b5 patch 8.0.1786: no test for 'termwinkey'
Problem:    No test for 'termwinkey'.
Solution:   Add a test.  Make feedkeys() handle terminal_loop() returning
            before characters are consumed.
2018-05-01 18:47:59 +02:00
8a938af6dd patch 8.0.1785: missing symbol in Win32 small build
Problem:    Missing symbol in Win32 small build.
Solution:   Define VTERM_ANSI_INDEX_NONE without the terminal feature. Also
            fix unused function with #ifdef.
2018-05-01 17:30:41 +02:00
bc7845da93 patch 8.0.1784: gvim test gets stuck in dialog
Problem:    Gvim test gets stuck in dialog.
Solution:   Rename the file used.
2018-05-01 16:26:48 +02:00
c5cd88554f patch 8.0.1783: cannot use 256 colors in a MS-Windows console
Problem:    Cannot use 256 colors in a MS-Windows console.
Solution:   Add 256 color support. (Nobuhiro Takasaki, closes #2821)
2018-05-01 15:47:38 +02:00
d76ce85266 patch 8.0.1782: no simple way to label quickfix entries
Problem:    No simple way to label quickfix entries.
Solution:   Add the "module" item, to be used instead of the file name for
            display purposes. (Martin Szamotulski, closes #1757)
2018-05-01 15:02:04 +02:00
a796d46f29 patch 8.0.1781: file names in quickfix window are not shortened
Problem:    File names in quickfix window are not always shortened.
Solution:   Shorten the file name when opening the quickfix window. (Yegappan
            Lakshmanan, closes #2851, closes #2846)
2018-05-01 14:30:36 +02:00
15142e27aa Update runtime files and translations 2018-04-30 22:19:58 +02:00
77bfd756a0 patch 8.0.1780: test fails because Vim in a terminal uses wrong 'encoding'
Problem:    Test fails because Vim in a terminal uses wrong 'encoding'.
Solution:   Set encoding in the test where it matters. (James McCoy,
            closes #2847)
2018-04-30 18:03:10 +02:00
35e802e713 patch 8.0.1779: deleting in a block selection causes problems
Problem:    Deleting in a block selection causes problems.
Solution:   Check the length of the line before adding bd.textcol and
            bd.textlen. (Christian Brabandt, closes #2825)
2018-04-30 17:21:03 +02:00
b07bbb0d29 patch 8.0.1778: script to check translations does not always work
Problem:    Script to check translations does not always work.
Solution:   Go to first line before searching for MIME.
2018-04-30 15:45:17 +02:00
60a68362aa patch 8.0.1777: cannot cleanup before loading another colorscheme
Problem:    Cannot cleanup before loading another colorscheme.
Solution:   Add the ColorSchemePre autocommand event.
2018-04-30 15:40:48 +02:00
0e9d1ae321 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Problem:    In tests, when WaitFor() fails it doesn't say why.
Solution:   Turn a few more WaitFor() into WaitForAssert().
2018-04-30 14:28:24 +02:00
850d427f07 patch 8.0.1775: MS-Windows: warning for unused variable
Problem:    MS-Windows: warning for unused variable.
Solution:   Move declaration inside #ifdef. (Mike Williams)
2018-04-30 10:38:40 +02:00
13d3b05ed2 patch 8.0.1774: reading very long lines can be slow
Problem:    Reading very long lines can be slow.
Solution:   Read up to 1 Mbyte at a time to avoid a lot of copying.  Add a
            check for going over the column limit.
2018-04-29 13:34:47 +02:00
c36651b4b9 patch 8.0.1773: dialog messages are not translated
Problem:    Dialog messages are not translated.
Solution:   Add N_() and _() where needed. (Sergey Alyoshin)
2018-04-29 12:22:56 +02:00
29ce409bfc patch 8.0.1772: quickfix: mixup of FALSE and FAIL, returning -1
Problem:    Quickfix: mixup of FALSE and FAIL, returning -1.
Solution:   Use FAIL and INVALID_QFIDX. (Yegappan Lakshmanan)
2018-04-28 21:56:44 +02:00
50182fa84e patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Problem:    In tests, when WaitFor() fails it doesn't say why. (James McCoy)
Solution:   Add WaitForAssert(), which produces an assert error when it fails.
2018-04-28 21:34:40 +02:00
65a5464985 patch 8.0.1770: assert functions don't return anything
Problem:    Assert functions don't return anything.
Solution:   Return non-zero when the assertion fails.
2018-04-28 16:56:53 +02:00
9b25af3620 patch 8.0.1769: repeated saving and restoring viewstate for 'incsearch'
Problem:    Repeated saving and restoring viewstate for 'incsearch'.
Solution:   Use a structure.
2018-04-28 13:56:09 +02:00
451fc7b954 patch 8.0.1768: SET_NO_HLSEARCH() used in a wrong way
Problem:    SET_NO_HLSEARCH() used in a wrong way.
Solution:   Make it a function. (suggested by Dominique Pelle,
            closes #2850)
2018-04-27 22:53:07 +02:00
9d34d90210 patch 8.0.1767: with 'incsearch' text may jump up and down
Problem:    With 'incsearch' text may jump up and down. ()
Solution:   Besides w_botline also save and restore w_empty_rows.
            (closes # 2530)
2018-04-27 22:18:12 +02:00
c3c3e69896 patch 8.0.1766: expanding abbreviation doesn't work
Problem:    Expanding abbreviation doesn't work. (Tooth Pik)
Solution:   Return OK instead of FALSE and FAIL instead of TRUE. (Christian
            Brabandt)
2018-04-26 22:30:33 +02:00
db0eedec16 patch 8.0.1765: CTRL-G j in Insert mode is incorrect when 'virtualedit' set
Problem:    CTRL-G j in Insert mode is incorrect when 'virtualedit' is set.
Solution:   Take coladd into account. (Christian Brabandt, closes #2743)
2018-04-25 22:38:17 +02:00
856905bd83 patch 8.0.1764: lgtm considers tutor.es to be EcmaScript
Problem:    Lgtm considers tutor.es to be EcmaScript.
Solution:   Add a config file for lgtm. (Bas van Schaik, closes #2844)
2018-04-25 21:36:47 +02:00
46a53dfc29 patch 8.0.1763: :argedit does not reuse an empty unnamed buffer
Problem:    :argedit does not reuse an empty unnamed buffer.
Solution:   Add the BLN_CURBUF flag and fix all the side effects. (Christian
            Brabandt, closes #2713)
2018-04-24 21:58:51 +02:00
b255b90503 patch 8.0.1762: terminal debug logging is a bit complicated
Problem:    Terminal debug logging is a bit complicated.
Solution:   Make log_tr() use variable arguments (Ozaki Kiichi, closes #2730)
2018-04-24 21:40:10 +02:00
4e9d443a25 patch 8.0.1761: job in terminal window with no output channel is killed
Problem:    Job in terminal window with no output channel is killed.
Solution:   Keep the job running when the input is a tty. (Ozaki Kiichi,
            closes #2734)
2018-04-24 20:54:07 +02:00
4994373c5d patch 8.0.1760: wrong number of arguments to vms_read()
Problem:    Wrong number of arguments to vms_read().
Solution:   Drop the first argument. (Ozaki Kiichi)
2018-04-24 20:27:26 +02:00
09d1d51df5 patch 8.0.1759: memory leak from duplicate options
Problem:    Memory leak from duplicate options. (Yegappan Lakshmanan)
Solution:   Don't set the default value twice.
2018-04-24 20:23:56 +02:00
24a2d7264f patch 8.0.1758: open_line() returns TRUE/FALSE for success/failure
Problem:    open_line() returns TRUE/FALSE for success/failure.
Solution:   Return OK or FAIL.
2018-04-24 19:36:43 +02:00
b691de05f6 patch 8.0.1757: unnecessary changes in libvterm
Problem:    Unnecessary changes in libvterm.
Solution:   Bring back // comments and trailing comma in enums.
2018-04-24 18:39:14 +02:00
73658317ba patch 8.0.1756: GUI: after prompting for a number the mouse shape is wrong
Problem:    GUI: after prompting for a number the mouse shape is sometimes
            wrong.
Solution:   Call setmouse() after setting "State". (Hirohito Higashi,
            closes #2709)
2018-04-24 17:41:57 +02:00
f1f2f837bc patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Problem:    MS-Windows GUI: high unicode char received as two utf-16 words.
Solution:   Keep the first word until the second word is received. (Chris
            Morgan, closes #2800)
2018-04-24 16:04:57 +02:00
2225ebb486 patch 8.0.1754: ex_helpgrep() is too long
Problem:    ex_helpgrep() is too long.
Solution:   Refactor the function. (Yegappan Lakshmanan, closes #2766)
2018-04-24 15:48:11 +02:00
1c17ffa461 patch 8.0.1753: various warnings from a static analyser
Problem:    Various warnings from a static analyser
Solution:   Add type casts, remove unneeded conditions. (Christian Brabandt,
            closes #2770)
2018-04-24 15:19:04 +02:00
a2aa8a2b22 patch 8.0.1752: qf_set_properties() is to long
Problem:    qf_set_properties() is to long.
Solution:   Refactor the function.  Define INVALID_QFIDX. (Yegappan
            Lakshmanan, closes #2812)
2018-04-24 13:55:00 +02:00
4e601e3c82 patch 8.0.1751: #ifdef causes bad highlighting
Problem:    #ifdef causes bad highlighting.
Solution:   Move code around. (Ozaki Kiichi, closes #2731)
2018-04-24 13:29:51 +02:00
3b9474b4ad patch 8.0.1750: crash when clearing loccation list in autocommand
Problem:    Crash when clearing loccation list in autocommand.
Solution:   Check if "qi" equals "ql_info". (Yegappan Lakshmanan)
2018-04-23 21:29:48 +02:00
6537c421bb patch 8.0.1749: VMS: 100% CPU use, redefining mch_open() fails
Problem:    VMS: 100% CPU use, redefining mch_open() and mch_fopen() fails.
Solution:   Do not wait indefinitely in RealWaitForChar(). (Neil Rieck)
            Do not redefine mch_open() and mch_fopen() on VMS. (Zoltan
            Arpadffy)
2018-04-23 20:46:16 +02:00
a4baf5b325 patch 8.0.1748: CmdlineEnter command uses backslash instead of slash
Problem:    CmdlineEnter command uses backslash instead of slash.
Solution:   Don't treat the character as a file name. (closes #2837)
2018-04-22 13:27:44 +02:00
ebe74b7367 patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Problem:    MS-Windows: term_start() does not set job_info() cmd.
Solution:   Share the code from job_start() to set jv_argv.
2018-04-21 23:34:43 +02:00
a69b39511d patch 8.0.1746: MS-Windows: channel tests fail
Problem:    MS-Windows: channel tests fail.
Solution:   Make a copy of the command before splitting it.
2018-04-21 23:00:27 +02:00
2060892028 patch 8.0.1745: build failure on MS-Windows
Problem:    Build failure on MS-Windows.
Solution:   Build job arguments for MS-Windows. Fix allocating job twice.
2018-04-21 22:30:08 +02:00
9980b37a80 patch 8.0.1744: on some systems /dev/stdout isn't writable
Problem:    On some systems /dev/stdout isn't writable.
Solution:   Skip test if writing is not possible. (James McCoy, closes #2830)
2018-04-21 20:12:35 +02:00
6d150f783d patch 8.0.1743: terminal window options are named inconsistently
Problem:    Terminal window options are named inconsistently.
Solution:   prefix terminal window options with "termwin".  Keep the old names
            for now as an alias.
2018-04-21 20:03:20 +02:00
e1fc51558d patch 8.0.1742: cannot get a list of all the jobs
Problem:    Cannot get a list of all the jobs.  Cannot get the command of
            the job.
Solution:   When job_info() is called without an argument return a list of
            jobs.  Otherwise, include the command that the job is running.
            (Yegappan Lakshmanan)
2018-04-21 19:49:08 +02:00
259a90f7ce patch 8.0.1741: MS-Windows with msys2 cannot build Ruby statically
Problem:    MS-Windows with msys2 cannot build Ruby statically.
Solution:   Add RUBY_VERSION to CFLAGS later. (Gray Wolf, closes #2833)
2018-04-21 19:08:55 +02:00
405dadb63e patch 8.0.1740: warning for signed-unsigned incompatibility
Problem:    Warning for signed-unsigned incompatibility.
Solution:   Change type from "char *" to "char_u *". (John Marriott)
2018-04-20 22:48:58 +02:00
7dda86f2ff Update runtime files. 2018-04-20 22:36:41 +02:00
6176697203 patch 8.0.1739: MS-Windows with msys2 cannot build Ruby statically
Problem:    MS-Windows with msys2 cannot build Ruby statically.
Solution:   Define RUBY_VERSION. (Gray Wolf, closes #2826)
2018-04-20 22:31:41 +02:00
5d69da462f patch 8.0.1738: ":args" output is hard to read
Problem:    ":args" output is hard to read.
Solution:   Make columns with the names if the output is more than one line.
2018-04-20 22:01:41 +02:00
02e802b2da patch 8.0.1737: fchown() used when it is not supported
Problem:    fchown() used when it is not supported.
Solution:   Add #ifdef.
2018-04-19 21:15:27 +02:00
226400830b patch 8.0.1736: check for C99 features is incomplete
Problem:    Check for C99 features is incomplete.
Solution:   Use AC_PROG_CC_C99 and when C99 isn't fully supported check the
            features we need. (James McCoy, closes #2820)
2018-04-19 20:39:41 +02:00
285e335869 patch 8.0.1735: flexible array member feature not supported by HP-UX
Problem:    Flexible array member feature not supported by HP-UX. (John
            Marriott)
Solution:   Do not use the flexible array member feature of C99.
2018-04-18 23:01:13 +02:00
f98a39ca57 patch 8.0.1734: package directory not added to 'rtp' if prefix matches
Problem:    Package directory not added to 'rtp' if prefix matches.
Solution:   Check the match is a full match. (Ozaki Kiichi, closes #2817)
            Also handle different ways of spelling a path.
2018-04-18 22:18:23 +02:00
bad0ce7b26 patch 8.0.1733: incomplete testing for completion fix
Problem:    Incomplete testing for completion fix. (Lifepillar)
Solution:   Add a test with CTRL-P.
2018-04-17 23:31:05 +02:00
a997b45c7e patch 8.0.1732: crash when terminal API call deletes the buffer
Problem:    Crash when terminal API call deletes the buffer.
Solution:   Lock the buffer while calling a function. (closes #2813)
2018-04-17 23:24:06 +02:00
e87edf3b85 patch 8.0.1731: characters deleted on completion
Problem:    Characters deleted on completion. (Adrià Farrés)
Solution:   Also check the last item for the ORIGINAL_TEXT flag. (Christian
            Brabandt, closes #1645)
2018-04-17 22:14:32 +02:00
561f8a5a46 patch 8.0.1730: no configure check for the used C99 features
Problem:    No configure check for the used C99 features.
Solution:   Add a compilation check.  Tentatively document C99 features.
2018-04-17 22:02:45 +02:00
ea3ece405a patch 8.0.1729: no comma after last enum item
Problem:    No comma after last enum item.
Solution:   Add a few commas to check if this works for all compilers.  Also
            add a few // comments.
2018-04-17 20:14:39 +02:00
1feab2b9cc patch 8.0.1728: condition always false, useless code
Problem:    Condition always false, useless code.
Solution:   Remove the code. (Nikolai Pavlov, closes #2808)
2018-04-17 20:12:08 +02:00
353eeeaca2 patch 8.0.1727: qf_get_properties() function is too long
Problem:    qf_get_properties() function is too long.
Solution:   Refactor the code. (Yegappan Lakshmanan, closes #2807)
2018-04-16 18:04:57 +02:00
df2c774ded patch 8.0.1726: older MSVC doesn't support declarations halfway a block
Problem:    Older MSVC doesn't support declarations halfway a block.
Solution:   Move the declaration back to the start of the block.
2018-04-16 17:06:09 +02:00
32c67ba733 patch 8.0.1725: terminal debugger doesn't handle command arguments
Problem:    Terminal debugger doesn't handle command arguments.
Solution:   Add the :TermdebugCommand command.  Use a ! to execute right away.
            (Christian Brabandt)
2018-04-16 16:21:49 +02:00
06965b838f patch 8.0.1724: declarations cannot be halfway a block
Problem:    Declarations cannot be halfway a block.
Solution:   Move one declaration to check if this works for all compilers.
2018-04-16 15:40:50 +02:00
f3a411783c patch 8.0.1723: using one item array size declaration is misleading
Problem:    Using one item array size declaration is misleading.
Solution:   Instead of using "[1]" and actually using a larger array, use
            "[]".  This is to verify that this C99 feature works for all
            compilers.
2018-04-16 14:45:45 +02:00
498c2562e1 patch 8.0.1722: cannot specify a minimal size for a terminal window
Problem:    Cannot specify a minimal size for a terminal window.
Solution:   Support the "rows*cols" format for 'winsize'.
2018-04-15 23:45:15 +02:00
a7eef3d87f patch 8.0.1721: no test for using the 'termsize' option
Problem:    No test for using the 'termsize' option.
Solution:   Add a test.
2018-04-15 22:25:54 +02:00
802bfb1463 patch 8.0.1720: when a timer is running a terminal window may not close
Problem:    When a timer is running a terminal window may not close after a
            shell has exited.
Solution:   Call job_status() more often.
2018-04-15 17:28:13 +02:00
e1a32310d5 patch 8.0.1719: cannot specify which Python executable configure should use
Problem:    Cannot specify which Python executable configure should use.
Solution:   Add --with-python-command and --with-python3-command.
2018-04-15 16:03:25 +02:00
6c672194cd patch 8.0.1718: terminal scrollback test fails on MS-Windows
Problem:    Terminal scrollback test fails on MS-Windows.
Solution:   Check for the last line of output anticipating there might be an
            empty line below it.
2018-04-15 13:28:42 +02:00
3cba73423e patch 8.0.1717: C89 check causes too much trouble
Problem:    C89 check causes too much trouble.
Solution:   Remove enforcing C89 for now.
2018-04-15 13:12:46 +02:00
ac3e830065 patch 8.0.1716: test for term_setsize() does not give a good error message
Problem:    Test for term_setsize() does not give a good error message.
Solution:   use assert_inrange().
2018-04-15 13:10:44 +02:00
8c94a54905 patch 8.0.1715: terminal buffer can be 1 more than 'terminalscroll' lines
Problem:    Terminal buffer can be 1 more than 'terminalscroll' lines.
Solution:   Change > to >=.
2018-04-15 12:55:13 +02:00
6e72cd0d72 patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Problem:    Term_setsize() does not give an error in a normal buffer.
Solution:   Add an error message.
2018-04-14 21:31:35 +02:00
b3623a382a patch 8.0.1713: terminal debugger doesn't handle arguments
Problem:    Terminal debugger doesn't handle arguments.
Solution:   Use <f-args> and pass all the arguments to gdb, e.g. the core file
            or process number. (suggested by Christian Brabandt) Disallow
            starting the debugger twice.
2018-04-14 18:59:50 +02:00
8c041b6b95 patch 8.0.1712: terminal scrollback is not limited
Problem:    Terminal scrollback is not limited.
Solution:   Add the 'terminalscroll' option.
2018-04-14 18:14:06 +02:00
a42d363bac patch 8.0.1711: term_setsize() is not implemented yet
Problem:    Term_setsize() is not implemented yet.
Solution:   Implement it.
2018-04-14 17:05:38 +02:00
2a43230ce3 patch 8.0.1710: building with Ruby fails
Problem:    Building with Ruby fails.
Solution:   Don't add -ansi when building with Ruby.
2018-04-14 16:12:30 +02:00
2e324950b8 patch 8.0.1709: some non-C89 code may slip through
Problem:    Some non-C89 code may slip through.
Solution:   Enforce C89 in configure. Fix detected problems. (James McCoy,
            closes #2735)
2018-04-14 14:37:07 +02:00
78a16b0f2a patch 8.0.1708: mkdir with 'p' flag fails on existing directory
Problem:    Mkdir with 'p' flag fails on existing directory, which is
            different from the mkdir shell command.
Solution:   Don't fail if the directory already exists. (James McCoy,
            closes #2775)
2018-04-14 13:51:55 +02:00
98da6ecab9 patch 8.0.1707: when 'wfh' is set ":bel 10new" scrolls window
Problem:    When 'wfh' is set ":bel 10new" scrolls window. (Andrew Pyatkov)
Solution:   Set the fraction before changing the window height. (closes #2798)
2018-04-13 22:15:46 +02:00
b59118d501 patch 8.0.1706: cannot sent CTRL-\ to a terminal window
Problem:    Cannot sent CTRL-\ to a terminal window.
Solution:   Make CTRL-W CTRL-\ send CTRL-\ to a terminal window.
2018-04-13 22:11:56 +02:00
5bab555c2f patch 8.0.1705: when making a vertical split the mode message isn't updated
Problem:    When making a vertical split the mode message isn't always
            updated, "VISUAL" remains. (Alexei Averchenko)
Solution:   Only reset clear_cmdline when filling all columns of the last
            screen line. (Tom M. closes #2611)
2018-04-13 20:41:29 +02:00
b8e22a053b patch 8.0.1704: 'backupskip' default doesn't work for Mac
Problem:    'backupskip' default doesn't work for Mac.
Solution:   Use "/private/tmp". (Rainer Müller, closes #2793)
2018-04-12 21:37:34 +02:00
527dec3f94 patch 8.0.1703: in the tutor 'showcmd' is not set
Problem:    In the tutor 'showcmd' is not set.
Solution:   Set 'showcmd' in the vimtutor script. (Ken Takata, closes #2792)
2018-04-12 20:36:43 +02:00
ee5b94a8ec patch 8.0.1702: leaking memory when autocommands make quickfix list invalid
Problem:    Leaking memory when autocommands make a quickfix list invalid.
Solution:   Call FreeWild(). (Yegappan Lakshmanan)
2018-04-12 20:35:05 +02:00
cccd62d435 patch 8.0.1701: can disable COLOR_EMOJI with MSVC but not MinGW
Problem:    Can disable COLOR_EMOJI with MSVC but not MinGW.
Solution:   Add COLOR_EMOJI flag.  Also add some empty lines for readability.
2018-04-12 20:23:48 +02:00
56f9955044 patch 8.0.1700: coverage statistics still don't work on coveralls
Problem:    Coverate statistics still don't work on coveralls.
Solution:   Exclude the xxd directory again.
2018-04-12 20:06:05 +02:00
9ce4213b03 patch 8.0.1699: leftover stuff for Python 1.4
Problem:    Leftover stuff for Python 1.4.
Solution:   Remove outdated Python 1.4 stuff. (Naoki Inada, closes #2794)
2018-04-11 22:19:36 +02:00
1ed00330bc patch 8.0.1698: coverage statistics don't work on coveralls
Problem:    Coverate statistics don't work on coveralls.
Solution:   Use curly braces for $SRCDIR.
2018-04-11 21:03:08 +02:00
769e9d21ac patch 8.0.1697: various tests are still a bit flaky
Problem:    Various tests are still a bit flaky.
Solution:   Increase the default wait time to five seconds.
2018-04-11 20:53:49 +02:00
d60e0a1d20 patch 8.0.1696: coverage statistics don't work
Problem:    Coverate statistics don't work.
Solution:   Include the xxd directory. (Christian Brabandt)
2018-04-11 10:06:04 +02:00
6995c0a7a9 patch 8.0.1695: xxd test not run on MS-Windows
Problem:    Xxd test not run on MS-Windows.
Solution:   Use xxd.exe if it exists.
2018-04-10 21:46:10 +02:00
b377457e69 patch 8.0.1694: terminal API test is a bit flaky
Problem:    Terminal API test is a bit flaky.
Solution:   Wait longer for Vim to stop.
2018-04-10 21:43:26 +02:00
1acdb3f301 patch 8.0.1693: xxd is excluded from coverage statistics
Problem:    Xxd is excluded from coverage statistics.
Solution:   Don't skip the xxd directory. (Christian Brabandt)
2018-04-10 21:16:32 +02:00
3a21d9c7bb patch 8.0.1692: Python may not work when using statically linked library
Problem:    Python may not work when using statically linked library .
Solution:   Do not define PYTHON_HOME and PYTHON3_HOME in configure if the
            Python library is linked statically.
2018-04-10 20:26:20 +02:00
164268d4cf patch 8.0.1691: xxd test sometimes fails
Problem:    Xxd test sometimes fails.
Solution:   Wipe out the XXDfile buffer.
2018-04-10 20:06:17 +02:00
8dd1761e69 patch 8.0.1690: not easy to run one test with gvim instead of vim
Problem:    Not easy to run one test with gvim instead of vim.
Solution:   Add VIMTESTTARGET in Makefile.
2018-04-10 19:24:04 +02:00
29f9ed20b4 patch 8.0.1689: no tests for xxd
Problem:    No tests for xxd.
Solution:   Add a test. (Christian Brabandt)
2018-04-10 19:20:31 +02:00
6f4700233f patch 8.0.1688: some macros are used without a semicolon
Problem:    Some macros are used without a semicolon, causing auto-indent to be
            wrong.
Solution:   Use the do-while(0) trick. (Ozaki Kiichi, closes #2729)
2018-04-10 18:47:20 +02:00
d6b4f2dd76 patch 8.0.1687: 64 bit compiler warnings
Problem:    64 bit compiler warnings.
Solution:   change type, add type cast. (Mike Williams)
2018-04-10 18:26:27 +02:00
d088240b96 patch 8.0.1686: Python does not work when configuring with specific dir
Problem:    Python does not work when configuring with specific dir. (Rajdeep)
Solution:   Do define PYTHON_HOME and PYTHON3_HOME in configure if the Python
            config dir was specified.
2018-04-10 18:13:05 +02:00
f59c6e8cee patch 8.0.1685: can't set ANSI colors of a terminal window
Problem:    Can't set ANSI colors of a terminal window.
Solution:   Add term_setansicolors(), term_getansicolors() and
            g:term_ansi_colors. (Andy Massimino, closes #2747)
2018-04-10 15:59:11 +02:00
07b46af645 patch 8.0.1684: ml_get errors when using terminal window for shell command
Problem:    ml_get errors when using terminal window for shell command.
            (Blay263)
Solution:   Do not change the size of the current window.
2018-04-10 14:56:18 +02:00
0424958bde patch 8.0.1683: Python upgrade breaks Vim when defining PYTHON_HOME
Problem:    Python upgrade breaks Vim when defining PYTHON_HOME.
Solution:   Do not define PYTHON_HOME and PYTHON3_HOME in configure. (Naoki
            Inada, closes #2787)
2018-04-10 13:29:34 +02:00
8c87a2b1fe patch 8.0.1682: auto indenting breaks inserting a block
Problem:    Auto indenting breaks inserting a block.
Solution:   Do not check for cursor movement if indent was changed. (Christian
            Brabandt, closes #2778)
2018-04-10 13:15:47 +02:00
e80757c154 patch 8.0.1681: the format attribute fails with MinGW
Problem:    The format attribute fails with MinGW. (John Marriott)
Solution:   Don't use the format attribute with MinGW.
2018-04-10 12:42:44 +02:00
756ef113d1 patch 8.0.1680: memory allocated by libvterm is not profiled
Problem:    Memory allocated by libvterm does not show up in profile.
Solution:   Pass allocater functions to vterm_new().
2018-04-10 12:04:27 +02:00
672afb9f66 patch 8.0.1679: compiler warning for printf format
Problem:    Compiler warning for printf format. (Chdiza)
Solution:   Change type to "long long". (closes #2791)
2018-04-08 16:34:22 +02:00
e333e79f9b patch 8.0.1678: errorformat "%r" implies "%>"
Problem:    Errorformat "%r" implies "%>". (Jan Gosmann)
Solution:   Jump to before setting fmt_ptr. (Yegappan Lakshmanan,
            closes #2785)
2018-04-08 13:27:39 +02:00
ea39176baa patch 8.0.1677: no compiler warning for wrong format in vim_snprintf()
Problem:    No compiler warning for wrong format in vim_snprintf().
Solution:   Add printf attribute for gcc.  Fix reported problems.
2018-04-08 13:07:22 +02:00
4ac2e8d8e6 patch 8.0.1676: no compiler warning for wrong printf format
Problem:    No compiler warning for wrong printf format.
Solution:   Add a printf attribute for gcc. Fix reported problems. (Dominique
            Pelle, closes #2789)
2018-04-08 12:38:26 +02:00
8200829141 patch 8.0.1675: unused macro argument in libvterm
Problem:    Unused macro argument in libvterm. (Randall W. Morris)
Solution:   Remove the argument.
2018-04-08 12:17:04 +02:00
77557a7ae6 patch 8.0.1674: libvterm can't handle an OSC string split
Problem:    Libvterm can't handle a long OSC string that is split.
Solution:   When an incomplete OSC string is received copy it to the parser
            buffer. Increase the size of the parser buffer to be able to
            handle longer strings.
2018-04-07 21:42:56 +02:00
4791015e6f patch 8.0.1673: terminal window tests are still a bit flaky
Problem:    Terminal window tests are still a bit flaky.
Solution:   Increase the waiting time even more. (Elimar Riesebieter)
2018-04-07 19:27:16 +02:00
72532d354e patch 8.0.1672: error during completion causes command to be cancelled
Problem:    Error during completion causes command to be cancelled.
Solution:   Reset did_emsg before waiting for another character. (Tom M.)
2018-04-07 19:09:09 +02:00
22efba47de patch 8.0.1671: crash when passing non-dict argument as env to job_start()
Problem:    Crash when passing non-dict argument as env to job_start().
Solution:   Check for valid argument. (Ozaki Kiichi, closes #2765)
2018-04-07 13:22:21 +02:00
b6ed74fef8 patch 8.0.1670: terminal window tests are still a bit flaky
Problem:    Terminal window tests are still a bit flaky.
Solution:   Increase the waiting time for the buffer to be created.
2018-04-07 10:42:14 +02:00
e1bb879f49 patch 8.0.1669: :vimgrep may add entries to the wrong quickfix list
Problem:    :vimgrep may add entries to the wrong quickfix list.
Solution:   Use the list identifier. (Yegappan Lakshmanan)
2018-04-06 22:58:23 +02:00
c4b533e1e9 patch 8.0.1668: terminal debugger: can't re-open source code window
Problem:    Terminal debugger: can't re-open source code window.
Solution:   Add the :Source command.  Also create the window if needed when
            gdb stops at a source line.
2018-04-06 22:26:25 +02:00
3680bab7e7 patch 8.0.1667: terminal window tests are flaky
Problem:    Terminal window tests are flaky.
Solution:   Increase the waiting time for Vim to start.
2018-04-06 20:22:06 +02:00
51ad4eaa22 Update runtime files 2018-04-06 11:14:11 +02:00
d5359b24ce patch 8.0.1666: % argument in ch_log() causes trouble
Problem:    % argument in ch_log() causes trouble.
Solution:   Use string as third argument in internal ch_log(). (Dominique
            Pelle, closes #2784)
2018-04-05 22:44:39 +02:00
9a993e3c09 patch 8.0.1665: when running a terminal from the GUI 'term' is not useful
Problem:    When running a terminal from the GUI 'term' is not useful.
Solution:   Use $TERM in the GUI if it starts with "xterm". (closes #2776)
2018-04-05 22:15:22 +02:00
3aa67fb453 patch 8.0.1664: test failure because of not allocating enough space
Problem:    Test failure because of not allocating enough space.
Solution:   Allocate more bytes.
2018-04-05 21:04:15 +02:00
86676c949f patch 8.0.1663: cannot build without multi-byte feature
Problem:    Cannot build without multi-byte feature.
Solution:   Add #ifdef.
2018-04-05 18:56:48 +02:00
4a69634b1b patch 8.0.1662: showing dump diff doesn't mention both file names
Problem:    Showing dump diff doesn't mention both file names.
Solution:   Add the file name in the separator line.
2018-04-05 18:45:26 +02:00
878c96d5b9 patch 8.0.1661: warnings from 64 bit compiler
Problem:    Warnings from 64 bit compiler.
Solution:   Add type casts. (Mike Williams)
2018-04-04 23:00:06 +02:00
333b80acf3 patch 8.0.1660: the terminal API "drop" command doesn't support options
Problem:    The terminal API "drop" command doesn't support options.
Solution:   Implement the options.
2018-04-04 22:57:29 +02:00
1f8495cf48 patch 8.0.1659: scroll events not recognized for some xterm emulators
Problem:    Scroll events not recognized for some xterm emulators.
Solution:   Recognize mouse codes 0x40 and 0x41 as scroll events.
2018-04-04 21:53:11 +02:00
79cf7c0d45 patch 8.0.1658: capitalize argument not available in long form
Problem:    Capitalize argument not available in long form.
Solution:   Recognize -capitalize.  Update man page.
2018-04-03 14:21:16 +02:00
9af9778209 patch 8.0.1657: crash when reading a channel
Problem:    Crash when reading a channel.
Solution:   Clear the write flag before writing. (idea by Shinya Ohyanagi,
            closes #2769).
2018-04-03 12:51:01 +02:00
8b31a6ff7a patch 8.0.1656: no option to have xxd produce upper case variable names
Problem:    No option to have xxd produce upper case variable names.
Solution:   Add the -C argument. (Matt Panaro closes #2772)
2018-04-03 12:17:25 +02:00
25a6e8a769 Small runtime update 2018-03-30 12:27:32 +02:00
f3ba14ffd3 patch 8.0.1655: outdated gdb message in terminal debugger unclear
Problem:    Outdated gdb message in terminal debugger unclear.
Solution:   Specifically mention the required gdb version.  Avoid getting
            stuck on pagination.
2018-03-29 18:29:51 +02:00
ab943431d8 Update runtime files 2018-03-29 18:27:07 +02:00
7b24ce08fe patch 8.0.1654: warnings for conversion of void to function pointer
Problem:    Warnings for conversion of void to function pointer.
Solution:   Use a temp variable that is a function pointer.
2018-03-29 18:15:26 +02:00
1834d37396 patch 8.0.1653: screen dump is made too soon
Problem:    Screen dump is made too soon.
Solution:   Wait until the ruler is displayed. (Ozaki Kiichi, closes #2755)
2018-03-29 17:40:46 +02:00
f06b0b6c8f patch 8.0.1652: term_dumpwrite() does not output composing characters
Problem:    term_dumpwrite() does not output composing characters.
Solution:   Use the cell index.
2018-03-29 17:22:24 +02:00
0751f51a5b patch 8.0.1651: cannot filter :ls output for terminal buffers
Problem:    Cannot filter :ls output for terminal buffers.
Solution:   Add flags for terminal buffers. (Marcin Szamotulski, closes #2751)
2018-03-29 16:37:16 +02:00
0c72fe4ed8 patch 8.0.1650: too many #ifdefs
Problem:    Too many #ifdefs.
Solution:   Graduate FEAT_LISTCMDS, no reason to leave out buffer commands.
2018-03-29 16:04:08 +02:00
cd43effeca patch 8.0.1649: no completion for argument list commands
Problem:    No completion for argument list commands.
Solution:   Add arglist completion. (Yegappan Lakshmanan, closes #2706)
2018-03-29 15:55:38 +02:00
1b2f61e732 patch 8.0.1648: resource fork tool doesn't work on Python 3
Problem:    Resource fork tool doesn't work on Python 3.
Solution:   Use "print()" instead of "print". (Marius Gedminas)
2018-03-27 21:12:01 +02:00
2a77d21f78 patch 8.0.1647: terminal API may call any user function
Problem:    Terminal API may call a function not meant to be called by this
            API.
Solution:   Require the function to start with Tapi_.
2018-03-26 21:38:52 +02:00
4368d5ce8a patch 8.0.1646: MS-Windows: executable contains unreferenced functions
Problem:    MS-Windows: executable contains unreferenced functions and data.
Solution:   Add /opt:ref to the compiler command. (Ken Takata)
2018-03-26 20:55:10 +02:00
086eb87695 patch 8.0.1645: test for terminal response to escape sequence may fail
Problem:    Test for terminal response to escape sequence fails for some
            people. (toothpik)
Solution:   Run "cat" and let it echo the characters.
2018-03-25 21:24:12 +02:00
cf67a509e9 patch 8.0.1644: terminal API tests still fail
Problem:    Terminal API tests still fail.
Solution:   Explicitly set 'title' in the terminal job. (Ozaki Kiichi,
            closes #2750)
2018-03-25 20:31:32 +02:00
2de50f8762 patch 8.0.1643: terminal API tests fail
Problem:    Terminal API tests fail.
Solution:   Explicitly set 'title'.
2018-03-25 19:09:56 +02:00
15a1c3fdc1 patch 8.0.1642: running Vim in terminal fails with two windows
Problem:    Running Vim in terminal fails with two windows.
Solution:   Pass the number of rows to RunVimInTerminal().
2018-03-25 18:56:25 +02:00
8fbaeb195d patch 8.0.1641: job in terminal can't communicate with Vim
Problem:    Job in terminal can't communicate with Vim.
Solution:   Add the terminal API.
2018-03-25 18:20:17 +02:00
65873846e0 patch 8.0.1640: Test_cwd() is flaky
Problem:    Test_cwd() is flaky.
Solution:   Add to list of flaky tests.
2018-03-25 17:12:58 +02:00
b5b49a3b43 patch 8.0.1639: libvterm code lags behind master
Problem:    Libvterm code lags behind master.
Solution:   Sync to head, solve merge problems.
2018-03-25 16:20:37 +02:00
e7499ddc33 patch 8.0.1638: popup test fails depending on environment variable
Problem:    Popup test fails depending on environment variable.
Solution:   Reset $COLORFGBG when running Vim in a terminal. (closes #2693)
2018-03-24 17:56:13 +01:00
897e63c4c0 patch 8.0.1637: no test for term_dumpdiff() options argument
Problem:    No test for term_dumpdiff() options argument.
Solution:   Add a test.
2018-03-24 17:16:33 +01:00
45d2a64f96 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Problem:    No test for term_dumpload() and term_dumpdiff().
Solution:   Add tests.
2018-03-24 14:30:32 +01:00
16d7eced1a patch 8.0.1635: undefining _POSIX_THREADS causes problems with Python 3
Problem:    Undefining _POSIX_THREADS causes problems with Python 3. (Micah
            Bucy, closes #2748)
Solution:   Remove the lines.
2018-03-24 14:06:15 +01:00
75b0a888e4 patch 8.0.1634: the ex_vimgrep() function is too long
Problem:    The ex_vimgrep() function is too long.
Solution:   Split it in smaller functions. (Yegappan Lakshmanan)
2018-03-24 14:01:56 +01:00
8c64a36e40 patch 8.0.1633: a TextChanged autocmd triggers when it is defined
Problem:    A TextChanged autocmd triggers when it is defined after creating a
            buffer.
Solution:   Set b_last_changedtick when opening a buffer. (Hirohito Highlight,
            closes #2742)
2018-03-23 22:39:31 +01:00
47015b80a0 patch 8.0.1632: in a terminal dump NUL and space are different
Problem:    In a terminal dump NUL and space considered are different,
            although they are displayed the same.
Solution:   When encountering NUL handle it like space.
2018-03-23 22:10:34 +01:00
948a796bfe patch 8.0.1631: testing with Vim running in terminal is a bit flaky
Problem:    Testing with Vim running in terminal is a bit flaky.
Solution:   Delete any .swp file so that later tests don't fail.
2018-03-23 20:37:45 +01:00
295ac5ab5e patch 8.0.1630: trimming white space is not that easy
Problem:    Trimming white space is not that easy.
Solution:   Add the trim() function. (Bukn, closes #1280)
2018-03-22 23:04:02 +01:00
62b7f6a139 patch 8.0.1629: Mac: getpagesize() is deprecated
Problem:    Mac: getpagesize() is deprecated.
Solution:   Use sysconf() instead. (Ozaki Kiichi, closes #2741)
2018-03-22 21:44:07 +01:00
0bd052ba12 patch 8.0.1628: channel log doesn't mention exiting
Problem:    Channel log doesn't mention exiting.
Solution:   Add a ch_log() call in getout().
2018-03-22 20:33:56 +01:00
7735dafb58 patch 8.0.1627: compiler warning for visibility attribute not supported
Problem:    Compiler warning for visibility attribute not supported on MinGW
            builds.
Solution:   Don't add the attribute when we don't expect it to work.
            (Christian Brabandt)
2018-03-22 20:26:50 +01:00
b571c63d48 patch 8.0.1626: compiler warning for possible loss of data
Problem:    Compiler warning for possible loss of data.
Solution:   Use size_t instead of int. (Christian Brabandt)
2018-03-21 22:27:59 +01:00
29dfa5af3c patch 8.0.1625: test_quotestar is flaky when run in GTK GUI
Problem:    Test_quotestar is flaky when run in GTK GUI.
Solution:   Do not call lose_selection when invoked from
            selection_clear_event().
2018-03-20 21:24:45 +01:00
5a3a49ed59 patch 8.0.1624: options for term_dumpdiff() and term_dumpload() not implemented
Problem:    Options for term_dumpdiff() and term_dumpload() not implemented
            yet.
Solution:   Implement the relevant options.
2018-03-20 18:35:53 +01:00
3e8d385347 patch 8.0.1623: terminal kill tests are flaky
Problem:    Terminal kill tests are flaky.
Solution:   Instead of running Vim in a terminal, run it as a normal command.
2018-03-20 17:43:01 +01:00
6ed86ad170 patch 8.0.1622: possible NULL pointer dereference
Problem:    Possible NULL pointer dereferencey. (Coverity)
Solution:   Reverse the check for a NULL pointer.
2018-03-20 13:30:42 +01:00
6185903e3d patch 8.0.1621: using invalid default value for highlight attribute
Problem:    Using invalid default value for highlight attribute.
Solution:   Use zero instead of -1.
2018-03-20 13:00:25 +01:00
e26e0d2b83 patch 8.0.1620: reading spell file has no good EOF detection
Problem:    Reading spell file has no good EOF detection.
Solution:   Check for EOF at every character read for a length field.
2018-03-20 12:34:04 +01:00
81c3c89a28 patch 8.0.1619: Win32 GUI: crash when winpty is not installed
Problem:    Win32 GUI: crash when winpty is not installed and trying to use
            :shell in a terminal window.
Solution:   Check for NULL return form term_start(). (Yasuhiro Matsumoto,
            closes #2727)
2018-03-20 11:41:44 +01:00
ecadf4377f patch 8.0.1618: color Grey50 is missing in the compiled-in table
Problem:    Color Grey50, used for ToolbarLine, is missing in the compiled-in
            table.
Solution:   Add the color to the list. (Kazunobu Kuriyama)
2018-03-20 11:17:04 +01:00
42f652f733 patch 8.0.1617: Win32: :shell command in the GUI crashes
Problem:    Win32: :shell command in the GUI crashes.
Solution:   Handle the situation that "cmd" is NULL. (Yasuhiro Matsumoto,
            closes #2721)
2018-03-19 21:44:37 +01:00
f05fa37822 patch 8.0.1616: Win32: shell commands in the GUI open a new console
Problem:    Win32: shell commands in the GUI open a new console.
Solution:   Use a terminal window for interactive use when 'guioptions'
            contains "!".
2018-03-18 19:29:34 +01:00
52acb110ac patch 8.0.1615: term_dumpload() does not use the right colors
Problem:    term_dumpload() does not use the right colors.
Solution:   Initialize colors when not using create_vterm().
2018-03-18 19:20:22 +01:00
98ef233e14 Update runtime files. Convert a couple of help files to utf-8. 2018-03-18 14:44:37 +01:00
9ef2a30e6f patch 8.0.1614: "make tags" doesn't include libvterm
Problem:    "make tags" doesn't include libvterm.
Solution:   Add the libvterm sources to the tags command.
2018-03-17 15:55:26 +01:00
a2150ac016 patch 8.0.1613: warning for unused variable in tiny build
Problem:    Warning for unused variable in tiny build. (Tony Mechelynck)
Solution:   Move declaration to inner block.
2018-03-17 13:15:17 +01:00
1dd98334d6 patch 8.0.1612: need to close terminal after shell stopped
Problem:    Need to close terminal after shell stopped.
Solution:   Make :terminal without argument close the window by default.
2018-03-16 22:54:53 +01:00
af23bad0fd patch 8.0.1611: CTRL-W in system terminal does not go to job
Problem:    CTRL-W in system terminal does not go to job.
Solution:   Do not use CTRL-W as a terminal command in a system terminal.
2018-03-16 22:20:49 +01:00
4ac31eeff0 patch 8.0.1610: cannot build without GUI
Problem:    Cannot build without GUI.
Solution:   Add #ifdef.
2018-03-16 21:34:25 +01:00
135682517b patch 8.0.1609: shell commands in the GUI use a dumb terminal
Problem:    Shell commands in the GUI use a dumb terminal.
Solution:   Add the "!" flag to 'guioptions' to execute system commands in a
            special terminal window.  Only for Unix now.
2018-03-16 20:46:58 +01:00
43cb626214 patch 8.0.1608: Win32: directx not enabled by default
Problem:    Win32: directx not enabled by default.
Solution:   Change Makefile to enable directx by default. (Ken Takata)
2018-03-14 21:39:02 +01:00
62dd452d02 patch 8.0.1607: --clean loads user settings from .gvimrc
Problem:    --clean loads user settings from .gvimrc.
Solution:   Behave like "-U NONE" was used. (Ken Takata)
2018-03-14 21:20:02 +01:00
228de1dfd2 patch 8.0.1606: singular/plural variants not translated
Problem:    Singular/plural variants not translated.
Solution:   Add NGETTEXT argument to xgettext. (Sergey Alyoshin)
2018-03-14 20:11:12 +01:00
012eb66293 patch 8.0.1605: terminal test is a bit flaky
Problem:    Terminal test is a bit flaky.
Solution:   Check for the shell prompt.  Use more lambda functions.
2018-03-13 17:55:27 +01:00
a903472cfa patch 8.0.1604: paste test may fail if $DISPLAY is not set
Problem:    Paste test may fail if $DISPLAY is not set.
Solution:   Add WorkingClipboard() and use it in the paste test.
2018-03-13 15:43:46 +01:00
f118d4847e patch 8.0.1603: cannot build with +terminal but without +menu
Problem:    Cannot build with +terminal but without +menu.
Solution:   Add #ifdef. (Damien)
2018-03-13 13:14:00 +01:00
625f0c1eb7 patch 8.0.1602: crash in parsing JSON
Problem:    Crash in parsing JSON.
Solution:   Fail when using array or dict as dict key. (Damien)
2018-03-13 13:10:41 +01:00
ff1e879577 patch 8.0.1601: highlight test fails on Win32
Problem:    Highlight test fails on Win32.
Solution:   Check for vtp and vcon support.
2018-03-12 22:16:37 +01:00
f708ac592f patch 8.0.1600: crash when setting t_Co to zero when 'termguicolors' is set
Problem:    Crash when setting t_Co to zero when 'termguicolors' is set.
Solution:   Use IS_CTERM instead of checking the number of colors.
            (closes #2710)
2018-03-12 21:48:32 +01:00
3e4b84d0b5 patch 8.0.1599: no error message when gdb does not support debugger
Problem:    No error message when gdb does not support the terminal debugger.
Solution:   Check for the response to open the Machine Interface.
2018-03-11 20:51:52 +01:00
c48369c3fc patch 8.0.1598: cannot select text in a terminal with the mouse
Problem:    Cannot select text in a terminal with the mouse.
Solution:   When a job in a terminal is not consuming mouse events, use them
            for modeless selection.  Also stop Insert mode when clicking in a
            terminal window.
2018-03-11 19:30:45 +01:00
e87303af32 patch 8.0.1597: autocommand events are not sorted
Problem:    Autocommand events are not sorted.
Solution:   Sort the autocommand events.
2018-03-11 17:02:12 +01:00
b852c3e64d patch 8.0.1596: no autocommand specifically for opening a terminal window
Problem:    No autocommand specifically for opening a terminal window.
Solution:   Add TerminalOpen. (?, closes #2484)
2018-03-11 16:55:36 +01:00
12a96de430 patch 8.0.1595: no autocommand triggered before exiting
Problem:    No autocommand triggered before exiting.
Solution:   Add the ExitPre autocommand event.
2018-03-11 14:44:18 +01:00
435acdb88c patch 8.0.1594: :conform qall not tested with active terminal window
Problem:    :conform qall not tested with active terminal window.
Solution:   Add a test.
2018-03-10 20:51:25 +01:00
25cdd9c33b patch 8.0.1593: :qall never exits with an active terminal window
Problem:    :qall never exits with an active terminal window.
Solution:   Add a way to kill a job in a terminal window.
2018-03-10 20:28:12 +01:00
b5b7562475 Update runtime files. 2018-03-09 22:22:21 +01:00
4d8bac8bf5 patch 8.0.1592: terminal windows in a session are not properly restored
Problem:    Terminal windows in a session are not properly restored.
Solution:   Add "terminal" in 'sessionoptions'.  When possible restore the
            command running in a terminal.
2018-03-09 21:33:34 +01:00
20586cb4f4 patch 8.0.1591: MS-Windows: when reparsing the arguments 'wildignore' matters
Problem:    MS-Windows: when reparsing the arguments 'wildignore' matters.
Solution:   Save and reset 'wildignore'. (Yasuhiro Matsumoto, closes #2702)
2018-03-08 22:03:14 +01:00
1a84024037 patch 8.0.1590: padding in list type wastes memory
Problem:    Padding in list type wastes memory.
Solution:   Reorder struct members to optimize padding. (Dominique Pelle,
            closes #2704)
2018-03-08 21:46:43 +01:00
d7db27bafd patch 8.0.1589: error for setting 'modifiable' when resetting it
Problem:    Error for setting 'modifiable' when resetting it.
Solution:   Check if 'modifiable' was actually set.
2018-03-07 23:02:33 +01:00
52f18a112a patch 8.0.1588: popup menu hangs after typing CTRL-C
Problem:    Popup menu hangs after typing CTRL-C.
Solution:   Make CTRL-C exit the loop. (Ozaki Kiichi, closes #2697)
2018-03-07 22:09:11 +01:00
3324d0a864 patch 8.0.1587: inserting from the clipboard doesn't work literally
Problem:    inserting from the clipboard doesn't work literally
Solution:   When pasting from the * or + register always assume literally.
2018-03-06 19:51:13 +01:00
201dc67db5 patch 8.0.1586: imactivatefunc does not work on non-GUI Mac
Problem:    Imactivatefunc does not work on non-GUI Mac.
Solution:   Fix logic in #ifdef.
2018-03-06 18:59:57 +01:00
ebf142a1ed patch 8.0.1585: enabling beval_term feature in Win32 GUI
Problem:    Enabling beval_term feature in Win32 GUI.
Solution:   Only enable beval_term in Win32 console.
2018-03-06 18:20:03 +01:00
f536bf6d45 patch 8.0.1584: using C99 in Mac file gives compiler warning messages
Problem:    Using C99 in Mac file gives compiler warning messages.
Solution:   Add #prama's to avoid the warnings. (Kazunobu Kuriyama)
2018-03-06 17:55:01 +01:00
fc6f16b57c patch 8.0.1583: using C99 comment
Problem:    Using C99 comment.
Solution:   Use old style comment. (Kazunobu Kuriyama)
2018-03-06 17:43:22 +01:00
157d813be4 patch 8.0.1582: in the MS-Windows console mouse movement is not used
Problem:    In the MS-Windows console mouse movement is not used.
Solution:   Pass mouse movement events when useful.
2018-03-06 17:09:20 +01:00
3b3a9a5609 patch 8.0.1581: cannot build Win32 GUI without +eval
Problem:    Cannot build Win32 GUI without +eval.
Solution:   Define HAVE_INPUT_METHOD without +eval. (Ken Takata)
2018-03-06 16:11:47 +01:00
946acdac5b patch 8.0.1580: FEAT_CURSORBIND and FEAT_SCROLLBIND are unused
Problem:    FEAT_CURSORBIND and FEAT_SCROLLBIND are unused.
Solution:   Delete them.
2018-03-06 15:06:19 +01:00
df0d24b627 patch 8.0.1579: virtual replace test fails in GUI
Problem:    Virtual replace test fails in GUI.
Solution:   Don't save key options if they were not set.
2018-03-06 14:22:58 +01:00
69f5a3011d patch 8.0.1578: no test for :popup in terminal
Problem:    No test for :popup in terminal.
Solution:   Add a screen dump test.
2018-03-06 13:23:08 +01:00
e780848150 patch 8.0.1577: virtual replace test fails on MS-Windows
Problem:    Virtual replace test fails on MS-Windows.
Solution:   Make adding a termcap entry work for a builtin terminal.
            Restore terminal keys in a better way.
2018-03-06 13:17:23 +01:00
16896a1019 patch 8.0.1576: Perl VIM::Buffers() does not find every buffer
Problem:    Perl VIM::Buffers() does not find every buffer.
Solution:   Also find unlisted buffer by number or name. (Chris Weyl,
            closes #2692)
2018-03-06 12:25:56 +01:00
63e82db6fc patch 8.0.1575: crash when using virtual replace
Problem:    Crash when using virtual replace.
Solution:   Adjust orig_line_count.  Add more tests. (Christian Brabandt)
2018-03-06 12:10:48 +01:00
987723e084 patch 8.0.1574: show cursor in wrong place when using popup menu
Problem:    Show cursor in wrong place when using popup menu. (Wei Zhang)
Solution:   Force updating the cursor position.  Fix skipping over unused
            entries.
2018-03-06 11:43:04 +01:00
89894aa671 patch 8.0.1573: getwinpos(1) may cause response to be handled as command
Problem:    getwinpos(1) may cause response to be handled as command.
Solution:   Handle any cursor position report once one was request. (partly by
            Hirohito Higashi)
2018-03-05 22:43:10 +01:00
362dc33835 patch 8.0.1572: Mac: getting memory size doesn't work everywhere
Problem:    Mac: getting memory size doesn't work everywhere.
Solution:   Use MACOS_X instead of MACOS_X_DARWIN. (Kazunobu Kuriyama)
2018-03-05 21:59:37 +01:00
40d77b0ec1 patch 8.0.1571: can't build without GUI
Problem:    Can't build without GUI.
Solution:   Adjust #ifdef for gui_find_menu().
2018-03-05 21:32:27 +01:00
250 changed files with 23029 additions and 7155 deletions

4
.lgtm.yml Normal file
View File

@ -0,0 +1,4 @@
# Format of this file: https://lgtm.com/help/lgtm/lgtm.yml-configuration-file
path_classifiers:
documentation:
- runtime/tutor/tutor*

View File

@ -108,7 +108,7 @@ script:
- if [ -n "$err" ]; then exit 1; fi - if [ -n "$err" ]; then exit 1; fi
after_success: after_success:
- if [ "$COVERAGE" = "yes" ]; then ~/.local/bin/coveralls -b $SRCDIR -x .xs -e ${SRCDIR}/xxd -e ${SRCDIR}/if_perl.c --encodings utf-8 latin-1 EUC-KR; fi - if [ "$COVERAGE" = "yes" ]; then ~/.local/bin/coveralls -b ${SRCDIR} -x .xs -e ${SRCDIR}/xxd -e ${SRCDIR}/if_perl.c --encodings utf-8 latin-1 EUC-KR; fi
- if [ "$COVERAGE" = "yes" ]; then cd $SRCDIR && bash <(curl -s https://codecov.io/bash) ; fi - if [ "$COVERAGE" = "yes" ]; then cd ${SRCDIR} && bash <(curl -s https://codecov.io/bash) ; fi
# vim:set sts=2 sw=2 tw=0 et: # vim:set sts=2 sw=2 tw=0 et:

View File

@ -4,6 +4,7 @@
# source files for all source archives # source files for all source archives
SRC_ALL = \ SRC_ALL = \
.hgignore \ .hgignore \
.lgtm.yml \
.travis.yml \ .travis.yml \
appveyor.yml \ appveyor.yml \
src/appveyor.bat \ src/appveyor.bat \

View File

@ -267,6 +267,9 @@ Section "Vim executables and runtime files"
SetOutPath $0\pack\dist\opt\swapmouse\plugin SetOutPath $0\pack\dist\opt\swapmouse\plugin
File ${VIMRT}\pack\dist\opt\swapmouse\plugin\*.* File ${VIMRT}\pack\dist\opt\swapmouse\plugin\*.*
SetOutPath $0\pack\dist\opt\termdebug\plugin
File ${VIMRT}\pack\dist\opt\termdebug\plugin\*.*
SetOutPath $0\plugin SetOutPath $0\plugin
File ${VIMRT}\plugin\*.* File ${VIMRT}\plugin\*.*

View File

@ -0,0 +1,112 @@
" Vim plugin for formatting XML
" Last Change: Thu, 15 Jan 2015 21:26:55 +0100
" Version: 0.1
" Author: Christian Brabandt <cb@256bit.org>
" Script: http://www.vim.org/scripts/script.php?script_id=
" License: VIM License
" GetLatestVimScripts: ???? 18 :AutoInstall: xmlformat.vim
" Documentation: see :h xmlformat.txt (TODO!)
" ---------------------------------------------------------------------
" Load Once: {{{1
if exists("g:loaded_xmlformat") || &cp
finish
endif
let g:loaded_xmlformat = 1
let s:keepcpo = &cpo
set cpo&vim
" Main function: Format the input {{{1
func! xmlformat#Format()
" only allow reformatting through the gq command
" (e.g. Vim is in normal mode)
if mode() != 'n'
" do not fall back to internal formatting
return 0
endif
let sw = shiftwidth()
let prev = prevnonblank(v:lnum-1)
let s:indent = indent(prev)/sw
let result = []
let lastitem = prev ? getline(prev) : ''
let is_xml_decl = 0
" split on `<`, but don't split on very first opening <
for item in split(getline(v:lnum), '.\@<=[>]\zs')
if s:EndTag(item)
let s:indent = s:DecreaseIndent()
call add(result, s:Indent(item))
elseif s:EmptyTag(lastitem)
call add(result, s:Indent(item))
elseif s:StartTag(lastitem) && s:IsTag(item)
let s:indent += 1
call add(result, s:Indent(item))
else
if !s:IsTag(item)
" Simply split on '<'
let t=split(item, '.<\@=\zs')
let s:indent+=1
call add(result, s:Indent(t[0]))
let s:indent = s:DecreaseIndent()
call add(result, s:Indent(t[1]))
else
call add(result, s:Indent(item))
endif
endif
let lastitem = item
endfor
if !empty(result)
exe v:lnum. ",". (v:lnum + v:count - 1). 'd'
call append(v:lnum - 1, result)
" Might need to remove the last line, if it became empty because of the
" append() call
let last = v:lnum + len(result)
if getline(last) is ''
exe last. 'd'
endif
endif
" do not run internal formatter!
return 0
endfunc
" Check if given tag is XML Declaration header {{{1
func! s:IsXMLDecl(tag)
return a:tag =~? '^\s*<?xml\s\?\%(version="[^"]*"\)\?\s\?\%(encoding="[^"]*"\)\? ?>\s*$'
endfunc
" Return tag indented by current level {{{1
func! s:Indent(item)
return repeat(' ', shiftwidth()*s:indent). s:Trim(a:item)
endfu
" Return item trimmed from leading whitespace {{{1
func! s:Trim(item)
if exists('*trim')
return trim(a:item)
else
return matchstr(a:item, '\S\+.*')
endif
endfunc
" Check if tag is a new opening tag <tag> {{{1
func! s:StartTag(tag)
return a:tag =~? '^\s*<[^/?]'
endfunc
" Remove one level of indentation {{{1
func! s:DecreaseIndent()
return (s:indent > 0 ? s:indent - 1 : 0)
endfunc
" Check if tag is a closing tag </tag> {{{1
func! s:EndTag(tag)
return a:tag =~? '^\s*</'
endfunc
" Check that the tag is actually a tag and not {{{1
" something like "foobar</foobar>"
func! s:IsTag(tag)
return s:Trim(a:tag)[0] == '<'
endfunc
" Check if tag is empty <tag/> {{{1
func! s:EmptyTag(tag)
return a:tag =~ '/>\s*$'
endfunc
" Restoration And Modelines: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" Modeline {{{1
" vim: fdm=marker fdl=0 ts=2 et sw=0 sts=-1

View File

@ -42,7 +42,16 @@ this autocmd might be useful:
Replace "blue_sky" with the name of the colorscheme. Replace "blue_sky" with the name of the colorscheme.
In case you want to tweak a colorscheme after it was loaded, check out the In case you want to tweak a colorscheme after it was loaded, check out the
ColorScheme autocmd event. ColorScheme autocommand event.
To clean up just before loading another colorscheme, use the ColorSchemePre
autocommand event. For example:
let g:term_ansi_colors = ...
augroup MyColorscheme
au!
au ColorSchemePre * unlet g:term_ansi_colors
au ColorSchemePre * au! MyColorscheme
augroup END
To customize a colorscheme use another name, e.g. "~/.vim/colors/mine.vim", To customize a colorscheme use another name, e.g. "~/.vim/colors/mine.vim",
and use `:runtime` to load the original colorscheme: and use `:runtime` to load the original colorscheme:
@ -64,7 +73,8 @@ Search for "highlight_init".
If you think you have a color scheme that is good enough to be used by others, If you think you have a color scheme that is good enough to be used by others,
please check the following items: please check the following items:
- Source the tools/check_colors.vim script to check for common mistakes. - Source the $VIMRUNTIME/colors/tools/check_colors.vim script to check for
common mistakes.
- Does it work in a color terminal as well as in the GUI? - Does it work in a color terminal as well as in the GUI?
- Is "g:colors_name" set to a meaningful value? In case of doubt you can do - Is "g:colors_name" set to a meaningful value? In case of doubt you can do
it this way: it this way:

View File

@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.0. Last change: 2018 Feb 10 *autocmd.txt* For Vim version 8.0. Last change: 2018 May 03
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -21,7 +21,6 @@ For a basic explanation, see section |40.3| in the user manual.
11. Disabling autocommands |autocmd-disable| 11. Disabling autocommands |autocmd-disable|
{Vi does not have any of these commands} {Vi does not have any of these commands}
{only when the |+autocmd| feature has not been disabled at compile time}
============================================================================== ==============================================================================
1. Introduction *autocmd-intro* 1. Introduction *autocmd-intro*
@ -57,6 +56,8 @@ effects. Be careful not to destroy your text.
Add {cmd} to the list of commands that Vim will Add {cmd} to the list of commands that Vim will
execute automatically on {event} for a file matching execute automatically on {event} for a file matching
{pat} |autocmd-patterns|. {pat} |autocmd-patterns|.
Note: A quote character is seen as argument to the
:autocmd and won't start a comment.
Vim always adds the {cmd} after existing autocommands, Vim always adds the {cmd} after existing autocommands,
so that the autocommands execute in the order in which so that the autocommands execute in the order in which
they were given. See |autocmd-nested| for [nested]. they were given. See |autocmd-nested| for [nested].
@ -92,7 +93,8 @@ will appear twice. To avoid this, define your autocommands in a group, so
that you can easily clear them: > that you can easily clear them: >
augroup vimrc augroup vimrc
autocmd! " Remove all vimrc autocommands " Remove all vimrc autocommands
autocmd!
au BufNewFile,BufRead *.html so <sfile>:h/html.vim au BufNewFile,BufRead *.html so <sfile>:h/html.vim
augroup END augroup END
@ -146,6 +148,8 @@ prompt. When one command outputs two messages this can happen anyway.
plugins, syntax highlighting, etc. plugins, syntax highlighting, etc.
:au[tocmd]! [group] Remove ALL autocommands. :au[tocmd]! [group] Remove ALL autocommands.
Note: a quote will be seen as argument to the :autocmd
and won't start a comment.
Warning: You should normally not do this without a Warning: You should normally not do this without a
group, it breaks plugins, syntax highlighting, etc. group, it breaks plugins, syntax highlighting, etc.
@ -258,6 +262,7 @@ Name triggered by ~
|BufCreate| just after adding a buffer to the buffer list |BufCreate| just after adding a buffer to the buffer list
|BufDelete| before deleting a buffer from the buffer list |BufDelete| before deleting a buffer from the buffer list
|BufWipeout| before completely deleting a buffer |BufWipeout| before completely deleting a buffer
|TerminalOpen| after a terminal buffer was created
|BufFilePre| before changing the name of the current buffer |BufFilePre| before changing the name of the current buffer
|BufFilePost| after changing the name of the current buffer |BufFilePost| after changing the name of the current buffer
@ -286,7 +291,8 @@ Name triggered by ~
|GUIFailed| after starting the GUI failed |GUIFailed| after starting the GUI failed
|TermResponse| after the terminal response to |t_RV| is received |TermResponse| after the terminal response to |t_RV| is received
|QuitPre| when using `:quit`, before deciding whether to quit |QuitPre| when using `:quit`, before deciding whether to exit
|ExitPre| when using a command that may make Vim exit
|VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeavePre| before exiting Vim, before writing the viminfo file
|VimLeave| before exiting Vim, after writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file
@ -324,6 +330,10 @@ Name triggered by ~
|CmdwinEnter| after entering the command-line window |CmdwinEnter| after entering the command-line window
|CmdwinLeave| before leaving the command-line window |CmdwinLeave| before leaving the command-line window
|CmdlineChanged| after a change was made to the command-line text
|CmdlineEnter| after the cursor moves to the command line
|CmdlineLeave| before the cursor leaves the command line
|InsertEnter| starting Insert mode |InsertEnter| starting Insert mode
|InsertChange| when typing <Insert> while in Insert or Replace mode |InsertChange| when typing <Insert> while in Insert or Replace mode
|InsertLeave| when leaving Insert mode |InsertLeave| when leaving Insert mode
@ -337,6 +347,7 @@ Name triggered by ~
when popup menu visible when popup menu visible
|TextYankPost| after text is yanked or deleted |TextYankPost| after text is yanked or deleted
|ColorSchemePre| before loading a color scheme
|ColorScheme| after loading a color scheme |ColorScheme| after loading a color scheme
|RemoteReply| a reply from a server Vim was received |RemoteReply| a reply from a server Vim was received
@ -458,6 +469,9 @@ BufWinEnter After a buffer is displayed in a window. This
existing buffer. But it does happen for a existing buffer. But it does happen for a
":split" with the name of the current buffer, ":split" with the name of the current buffer,
since it reloads that buffer. since it reloads that buffer.
Does not happen for a terminal window, because
it starts in Terminal-Job mode and Normal mode
commands won't work. Use |TerminalOpen| instead.
*BufWinLeave* *BufWinLeave*
BufWinLeave Before a buffer is removed from a window. BufWinLeave Before a buffer is removed from a window.
Not when it's still visible in another window. Not when it's still visible in another window.
@ -506,9 +520,9 @@ CmdUndefined When a user command is used but it isn't
always define the user command and have it always define the user command and have it
invoke an autoloaded function. See |autoload|. invoke an autoloaded function. See |autoload|.
*CmdlineChanged* *CmdlineChanged*
CmdlineChanged After a change was made to the text inside CmdlineChanged After a change was made to the text in the
command line. Be careful not to mess up the command line. Be careful not to mess up
command line, it may cause Vim to lock up. the command line, it may cause Vim to lock up.
<afile> is set to a single character, <afile> is set to a single character,
indicating the type of command-line. indicating the type of command-line.
|cmdwin-char| |cmdwin-char|
@ -552,6 +566,10 @@ ColorScheme After loading a color scheme. |:colorscheme|
set, and <amatch> for the new colorscheme set, and <amatch> for the new colorscheme
name. name.
*ColorSchemePre*
ColorSchemePre Before loading a color scheme. |:colorscheme|
Useful to setup removing things added by a
color scheme, before another one is loaded.
*CompleteDone* *CompleteDone*
CompleteDone After Insert mode completion is done. Either CompleteDone After Insert mode completion is done. Either
@ -648,6 +666,11 @@ DirChanged The working directory has changed in response
"auto" to trigger on 'autochdir'. "auto" to trigger on 'autochdir'.
"drop" to trigger on editing a file "drop" to trigger on editing a file
<afile> is set to the new directory name. <afile> is set to the new directory name.
*ExitPre*
ExitPre When using `:quit`, `:wq` in a way it makes
Vim exit, or using `:qall`, just after
|QuitPre|. Can be used to close any
non-essential window.
*FileChangedShell* *FileChangedShell*
FileChangedShell When Vim notices that the modification time of FileChangedShell When Vim notices that the modification time of
a file has changed since editing started. a file has changed since editing started.
@ -785,7 +808,7 @@ InsertCharPre When a character is typed in Insert mode,
inserted literally. inserted literally.
It is not allowed to change the text |textlock|. It is not allowed to change the text |textlock|.
The event is not triggered when 'paste' is The event is not triggered when 'paste' is
set. set. {only with the +eval feature}
*InsertEnter* *InsertEnter*
InsertEnter Just before starting Insert mode. Also for InsertEnter Just before starting Insert mode. Also for
Replace mode and Virtual Replace mode. The Replace mode and Virtual Replace mode. The
@ -863,6 +886,7 @@ QuitPre When using `:quit`, `:wq` or `:qall`, before
or quits Vim. Can be used to close any or quits Vim. Can be used to close any
non-essential window if the current window is non-essential window if the current window is
the last ordinary window. the last ordinary window.
Also see |ExitPre|.
*RemoteReply* *RemoteReply*
RemoteReply When a reply from a Vim that functions as RemoteReply When a reply from a Vim that functions as
server was received |server2client()|. The server was received |server2client()|. The
@ -931,6 +955,7 @@ SwapExists Detected an existing swap file when starting
It is not allowed to change to another buffer, It is not allowed to change to another buffer,
change a buffer name or change directory change a buffer name or change directory
here. here.
{only available with the +eval feature}
*Syntax* *Syntax*
Syntax When the 'syntax' option has been set. The Syntax When the 'syntax' option has been set. The
pattern is matched against the syntax name. pattern is matched against the syntax name.
@ -957,6 +982,11 @@ TermChanged After the value of 'term' has changed. Useful
for re-loading the syntax file to update the for re-loading the syntax file to update the
colors, fonts and other terminal-dependent colors, fonts and other terminal-dependent
settings. Executed for all loaded buffers. settings. Executed for all loaded buffers.
*TerminalOpen*
TerminalOpen Just after a terminal buffer was created, with
`:terminal` or |term_start()|. This event is
triggered even if the buffer is created
without a window, with the ++hidden option.
*TermResponse* *TermResponse*
TermResponse After the response to |t_RV| is received from TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse| the terminal. The value of |v:termresponse|
@ -1003,10 +1033,15 @@ TextYankPost After text has been yanked or deleted in the
called recursively. called recursively.
It is not allowed to change the buffer text, It is not allowed to change the buffer text,
see |textlock|. see |textlock|.
{only when compiled with the +eval feature}
*User* *User*
User Never executed automatically. To be used for User Never executed automatically. To be used for
autocommands that are only executed with autocommands that are only executed with
":doautocmd". ":doautocmd".
Note that when `:doautocmd User MyEvent` is
used while there are no matching autocommands,
you will get an error. If you don't want
that, define a dummy autocommand yourself.
*UserGettingBored* *UserGettingBored*
UserGettingBored When the user presses the same key 42 times. UserGettingBored When the user presses the same key 42 times.
Just kidding! :-) Just kidding! :-)
@ -1051,9 +1086,10 @@ WinEnter After entering another window. Not done for
If the window is for another buffer, Vim If the window is for another buffer, Vim
executes the BufEnter autocommands after the executes the BufEnter autocommands after the
WinEnter autocommands. WinEnter autocommands.
Note: When using ":split fname" the WinEnter Note: For split and tabpage commands the
event is triggered after the split but before WinEnter event is triggered after the split
the file "fname" is loaded. or tab command but before the file is loaded.
*WinLeave* *WinLeave*
WinLeave Before leaving a window. If the window to be WinLeave Before leaving a window. If the window to be
entered next is for a different buffer, Vim entered next is for a different buffer, Vim

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 8.0. Last change: 2017 Feb 12 *change.txt* For Vim version 8.0. Last change: 2018 May 12
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -110,7 +110,7 @@ is an error when 'cpoptions' includes the 'E' flag.
J Join [count] lines, with a minimum of two lines. J Join [count] lines, with a minimum of two lines.
Remove the indent and insert up to two spaces (see Remove the indent and insert up to two spaces (see
below). Fails when on the last line of the buffer. below). Fails when on the last line of the buffer.
If [count] is too big it is reduce to the number of If [count] is too big it is reduced to the number of
lines available. lines available.
*v_J* *v_J*
@ -446,7 +446,7 @@ This depends on the 'nrformats' option:
For decimals a leading negative sign is considered for incrementing/ For decimals a leading negative sign is considered for incrementing/
decrementing, for binary, octal and hex values, it won't be considered. To decrementing, for binary, octal and hex values, it won't be considered. To
ignore the sign Visually select the number before using CTRL-A or CTRL-X. ignore the sign Visually select the number before using CTRL-A or CTRL-X.
For numbers with leading zeros (including all octal and hexadecimal numbers), For numbers with leading zeros (including all octal and hexadecimal numbers),
Vim preserves the number of characters in the number when possible. CTRL-A on Vim preserves the number of characters in the number when possible. CTRL-A on
@ -533,6 +533,7 @@ If the 'shiftround' option is on, the indent is rounded to a multiple of
If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains
'#' with a zero value, shift right does not affect lines starting with '#' '#' with a zero value, shift right does not affect lines starting with '#'
(these are supposed to be C preprocessor lines that must stay in column 1). (these are supposed to be C preprocessor lines that must stay in column 1).
This can be changed with the 'cino' option, see |cino-#|.
When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as
much as possible to make the indent. You can use ">><<" to replace an indent much as possible to make the indent. You can use ">><<" to replace an indent
@ -1444,6 +1445,55 @@ to the name of an external program for Vim to use for text formatting. The
'textwidth' and other options have no effect on formatting by an external 'textwidth' and other options have no effect on formatting by an external
program. program.
*format-formatexpr*
The 'formatexpr' option can be set to a Vim Script function that performs
reformatting of the buffer. This should usually happen in an |ftplugin|,
since formatting is highly dependent on the type of file. It makes
sense to use an |autoload| script, so the corresponding script is only loaded
when actually needed and the script should be called <filetype>format.vim.
For example, the XML filetype plugin distributed with Vim in the $VIMRUNTIME
directory, sets the 'formatexpr' option to: >
setlocal formatexpr=xmlformat#Format()
That means, you will find the corresponding script, defining the
xmlformat#Format() function, in the directory:
`$VIMRUNTIME/autoload/xmlformat.vim`
Here is an example script that removes trailing whitespace from the selected
text. Put it in your autoload directory, e.g. ~/.vim/autoload/format.vim: >
func! format#Format()
" only reformat on explicit gq command
if mode() != 'n'
" fall back to Vims internal reformatting
return 1
endif
let lines = getline(v:lnum, v:lnum + v:count - 1)
call map(lines, {key, val -> substitute(val, '\s\+$', '', 'g')})
call setline('.', lines)
" do not run internal formatter!
return 0
endfunc
You can then enable the formatting by executing: >
setlocal formatexpr=format#Format()
>
Note: this function explicitly returns non-zero when called from insert mode
(which basically means, text is inserted beyond the 'textwidth' limit). This
causes Vim to fall back to reformat the text by using the internal formatter.
However, if the |gq| command is used to reformat the text, the function
will receive the selected lines, trim trailing whitespace from those lines and
put them back in place. If you are going to split single lines into multiple
lines, be careful not to overwrite anything.
If you want to allow reformatting of text from insert or replace mode, one has
to be very careful, because the function might be called recursively. For
debugging it helps to set the 'debug' option.
*right-justify* *right-justify*
There is no command in Vim to right justify text. You can do it with There is no command in Vim to right justify text. You can do it with
an external command, like "par" (e.g.: "!}par" to format until the end of the an external command, like "par" (e.g.: "!}par" to format until the end of the

View File

@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.0. Last change: 2017 Aug 11 *channel.txt* For Vim version 8.0. Last change: 2018 Apr 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -55,7 +55,7 @@ JS JavaScript style JSON-like encoding |js_encode()|
Common combination are: Common combination are:
- Using a job connected through pipes in NL mode. E.g., to run a style - Using a job connected through pipes in NL mode. E.g., to run a style
checker and receive errors and warnings. checker and receive errors and warnings.
- Using a deamon, connecting over a socket in JSON mode. E.g. to lookup - Using a daemon, connecting over a socket in JSON mode. E.g. to lookup
cross-references in a database. cross-references in a database.
============================================================================== ==============================================================================

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.0. Last change: 2017 Oct 19 *cmdline.txt* For Vim version 8.0. Last change: 2018 May 10
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -175,12 +175,14 @@ CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>*
CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>*
CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>* CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>*
CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>*
CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>*
Insert the object under the cursor: Insert the object under the cursor:
CTRL-F the Filename under the cursor CTRL-F the Filename under the cursor
CTRL-P the Filename under the cursor, expanded with CTRL-P the Filename under the cursor, expanded with
'path' as in |gf| 'path' as in |gf|
CTRL-W the Word under the cursor CTRL-W the Word under the cursor
CTRL-A the WORD under the cursor; see |WORD| CTRL-A the WORD under the cursor; see |WORD|
CTRL-L the line under the cursor
When 'incsearch' is set the cursor position at the end of the When 'incsearch' is set the cursor position at the end of the
currently displayed match is used. With CTRL-W the part of currently displayed match is used. With CTRL-W the part of
@ -192,8 +194,8 @@ CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>*
*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>* *c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* *c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
Insert register or object under the cursor. Works like Insert register or object under the cursor. Works like
|c_CTRL-R| but inserts the text literally. For example, if |c_CTRL-R| but inserts the text literally. For example, if
register a contains "xy^Hz" (where ^H is a backspace), register a contains "xy^Hz" (where ^H is a backspace),
@ -410,14 +412,17 @@ CTRL-D List names that match the pattern in front of the cursor.
match is inserted. After the last match, the first is used match is inserted. After the last match, the first is used
again (wrap around). again (wrap around).
The behavior can be changed with the 'wildmode' option. The behavior can be changed with the 'wildmode' option.
*c_<S-Tab>*
<S-Tab> Like 'wildchar' or <Tab>, but begin with the last match and
then go to the previous match.
<S-Tab> does not work everywhere.
*c_CTRL-N* *c_CTRL-N*
CTRL-N After using 'wildchar' which got multiple matches, go to next CTRL-N After using 'wildchar' which got multiple matches, go to next
match. Otherwise recall more recent command-line from history. match. Otherwise recall more recent command-line from history.
<S-Tab> *c_CTRL-P* *c_<S-Tab>* *c_CTRL-P*
CTRL-P After using 'wildchar' which got multiple matches, go to CTRL-P After using 'wildchar' which got multiple matches, go to
previous match. Otherwise recall older command-line from previous match. Otherwise recall older command-line from
history. <S-Tab> only works with the GUI, on the Amiga and history.
with MS-DOS.
*c_CTRL-A* *c_CTRL-A*
CTRL-A All names that match the pattern in front of the cursor are CTRL-A All names that match the pattern in front of the cursor are
inserted. inserted.

View File

@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.0. Last change: 2017 Jul 31 *develop.txt* For Vim version 8.0. Last change: 2018 May 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -18,7 +18,8 @@ See the file README.txt in the "src" directory for an overview of the source
code. code.
Vim is open source software. Everybody is encouraged to contribute to help Vim is open source software. Everybody is encouraged to contribute to help
improving Vim. For sending patches a context diff "diff -c" is preferred. improving Vim. For sending patches a unified diff "diff -u" is preferred.
You can create a pull request on github, but it's not required.
Also see http://vim.wikia.com/wiki/How_to_make_and_submit_a_patch. Also see http://vim.wikia.com/wiki/How_to_make_and_submit_a_patch.
============================================================================== ==============================================================================
@ -182,12 +183,43 @@ The basic steps to make changes to the code:
include the diff. Or create a pull request on github. include the diff. Or create a pull request on github.
C COMPILER *style-compiler* C COMPILER *style-compiler* *ANSI-C* *C89* *C99*
The minimal C compiler version supported is C89, also known as ANSI C. The minimal C compiler version supported is C89, also known as ANSI C.
Later standards don't add much and C89 is the widest supported. Later standards, such as C99, are not widely supported, or at least not 100%
supported. Therefore we use only some of the C99 features and disallow some
(at least for now).
One restriction that this implies: no // comments, only /* comments */. Please don't make changes everywhere to use the C99 features, it causes merge
problems for existing patches. Only use them for new and changed code.
Comments ~
Traditionally Vim uses /* comments */. We intend to keep it that way,
especially for file and function headers. For new code or lines of code that
change, it is allowed to use // comments. Especially when it comes after
code:
int some_var; // single line comment useful here
Enums ~
The last item in an enum may have a trailing comma. C89 didn't allow this.
Types ~
"long long" is allowed and can be expected to be 64 bits. Use %lld in printf
formats. Also "long long unsigned" with %llu.
Not to be used ~
These C99 features are not to be used, because not enough compilers support
them:
- Declaration after Statements (MSVC 2012 does not support it). All
declarations need to be at the start of the block.
- Variable length arrays (even in C11 this is an optional feature).
- _Bool and _Complex types.
- "inline" (it's hardly ever needed, let the optimizer do its work)
- flexible array members: Not supported by HP-UX C compiler (John Marriott)
USE OF COMMON FUNCTIONS *style-functions* USE OF COMMON FUNCTIONS *style-functions*

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.0. Last change: 2018 Feb 19 *editing.txt* For Vim version 8.0. Last change: 2018 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -424,6 +424,15 @@ On Unix and a few other systems you can also use backticks for the file name
argument, for example: > argument, for example: >
:next `find . -name ver\\*.c -print` :next `find . -name ver\\*.c -print`
:view `ls -t *.patch \| head -n1` :view `ls -t *.patch \| head -n1`
Vim will run the command in backticks using the 'shell' and use the standard
output as argument for the given Vim command (error messages from the shell
command will be discarded).
To see what shell command Vim is running, set the 'verbose' option to 4. When
the shell command returns a non-zero exit code, an error message will be
displayed and the Vim command will be aborted. To avoid this make the shell
always return zero like so: >
:next `find . -name ver\\*.c -print \|\| true`
The backslashes before the star are required to prevent the shell from The backslashes before the star are required to prevent the shell from
expanding "ver*.c" prior to execution of the find program. The backslash expanding "ver*.c" prior to execution of the find program. The backslash
before the shell pipe symbol "|" prevents Vim from parsing it as command before the shell pipe symbol "|" prevents Vim from parsing it as command
@ -650,8 +659,7 @@ list of the current window.
There is no check for duplicates, it is possible to There is no check for duplicates, it is possible to
add a file to the argument list twice. add a file to the argument list twice.
The currently edited file is not changed. The currently edited file is not changed.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Note: you can also use this method: > Note: you can also use this method: >
:args ## x :args ## x
< This will add the "x" item and sort the new list. < This will add the "x" item and sort the new list.
@ -665,8 +673,7 @@ list of the current window.
when it's deleted from the argument list. when it's deleted from the argument list.
Example: > Example: >
:argdel *.obj :argdel *.obj
< {not in Vi} {not available when compiled without the < {not in Vi}
|+listcmds| feature}
:[range]argd[elete] Delete the {range} files from the argument list. :[range]argd[elete] Delete the {range} files from the argument list.
Example: > Example: >
@ -681,8 +688,7 @@ list of the current window.
< Removes all the files from the arglist. < Removes all the files from the arglist.
When the last number in the range is too high, up to When the last number in the range is too high, up to
the last argument is deleted. the last argument is deleted.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
*:argu* *:argument* *:argu* *:argument*
:[count]argu[ment] [count] [++opt] [+cmd] :[count]argu[ment] [count] [++opt] [+cmd]
@ -691,16 +697,14 @@ list of the current window.
when changes have been made and Vim does not want to when changes have been made and Vim does not want to
|abandon| the current buffer. |abandon| the current buffer.
Also see |++opt| and |+cmd|. Also see |++opt| and |+cmd|.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
:[count]argu[ment]! [count] [++opt] [+cmd] :[count]argu[ment]! [count] [++opt] [+cmd]
Edit file [count] in the argument list, discard any Edit file [count] in the argument list, discard any
changes to the current buffer. When [count] is changes to the current buffer. When [count] is
omitted the current entry is used. omitted the current entry is used.
Also see |++opt| and |+cmd|. Also see |++opt| and |+cmd|.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
:[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163* :[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163*
Edit [count] next file. This fails when changes have Edit [count] next file. This fails when changes have
@ -823,7 +827,6 @@ fourth file in the argument list. This happens when you do ":e file".
LOCAL ARGUMENT LIST LOCAL ARGUMENT LIST
{not in Vi} {not in Vi}
{not available when compiled without the |+windows| or |+listcmds| features}
*:arglocal* *:arglocal*
:argl[ocal] Make a local copy of the global argument list. :argl[ocal] Make a local copy of the global argument list.
@ -875,8 +878,7 @@ USING THE ARGUMENT LIST
autocommand event is disabled by adding it to autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing 'eventignore'. This considerably speeds up editing
each file. each file.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|, Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo| |:cfdo| and |:lfdo|

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.0. Last change: 2018 Feb 27 *eval.txt* For Vim version 8.0. Last change: 2018 May 13
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -1548,10 +1548,12 @@ v:errmsg Last given error message. It's allowed to set this variable.
: ... handle error : ... handle error
< "errmsg" also works, for backwards compatibility. < "errmsg" also works, for backwards compatibility.
*v:errors* *errors-variable* *v:errors* *errors-variable* *assert-return*
v:errors Errors found by assert functions, such as |assert_true()|. v:errors Errors found by assert functions, such as |assert_true()|.
This is a list of strings. This is a list of strings.
The assert functions append an item when an assert fails. The assert functions append an item when an assert fails.
The return value indicates this: a one is returned if an item
was added to v:errors, otherwise zero is returned.
To remove old results make it empty: > To remove old results make it empty: >
:let v:errors = [] :let v:errors = []
< If v:errors is set to anything but a list it is made an empty < If v:errors is set to anything but a list it is made an empty
@ -2020,26 +2022,26 @@ argidx() Number current index in the argument list
arglistid([{winnr} [, {tabnr}]]) Number argument list id arglistid([{winnr} [, {tabnr}]]) Number argument list id
argv({nr}) String {nr} entry of the argument list argv({nr}) String {nr} entry of the argument list
argv() List the argument list argv() List the argument list
assert_beeps({cmd}) none assert {cmd} causes a beep assert_beeps({cmd}) Number assert {cmd} causes a beep
assert_equal({exp}, {act} [, {msg}]) assert_equal({exp}, {act} [, {msg}])
none assert {exp} is equal to {act} Number assert {exp} is equal to {act}
assert_equalfile({fname-one}, {fname-two}) assert_equalfile({fname-one}, {fname-two})
none assert file contents is equal Number assert file contents is equal
assert_exception({error} [, {msg}]) assert_exception({error} [, {msg}])
none assert {error} is in v:exception Number assert {error} is in v:exception
assert_fails({cmd} [, {error}]) none assert {cmd} fails assert_fails({cmd} [, {error}]) Number assert {cmd} fails
assert_false({actual} [, {msg}]) assert_false({actual} [, {msg}])
none assert {actual} is false Number assert {actual} is false
assert_inrange({lower}, {upper}, {actual} [, {msg}]) assert_inrange({lower}, {upper}, {actual} [, {msg}])
none assert {actual} is inside the range Number assert {actual} is inside the range
assert_match({pat}, {text} [, {msg}]) assert_match({pat}, {text} [, {msg}])
none assert {pat} matches {text} Number assert {pat} matches {text}
assert_notequal({exp}, {act} [, {msg}]) assert_notequal({exp}, {act} [, {msg}])
none assert {exp} is not equal {act} Number assert {exp} is not equal {act}
assert_notmatch({pat}, {text} [, {msg}]) assert_notmatch({pat}, {text} [, {msg}])
none assert {pat} not matches {text} Number assert {pat} not matches {text}
assert_report({msg}) none report a test failure assert_report({msg}) Number report a test failure
assert_true({actual} [, {msg}]) none assert {actual} is true assert_true({actual} [, {msg}]) Number assert {actual} is true
asin({expr}) Float arc sine of {expr} asin({expr}) Float arc sine of {expr}
atan({expr}) Float arc tangent of {expr} atan({expr}) Float arc tangent of {expr}
atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2} atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
@ -2192,7 +2194,7 @@ gettabvar({nr}, {varname} [, {def}])
gettabwinvar({tabnr}, {winnr}, {name} [, {def}]) gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr} any {name} in {winnr} in tab page {tabnr}
getwininfo([{winid}]) List list of windows getwininfo([{winid}]) List list of windows
getwinpos([{tmeout}]) List X and Y coord in pixels of the Vim window getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
getwinposx() Number X coord in pixels of the Vim window getwinposx() Number X coord in pixels of the Vim window
getwinposy() Number Y coord in pixels of the Vim window getwinposy() Number Y coord in pixels of the Vim window
getwinvar({nr}, {varname} [, {def}]) getwinvar({nr}, {varname} [, {def}])
@ -2234,7 +2236,7 @@ islocked({expr}) Number |TRUE| if {expr} is locked
isnan({expr}) Number |TRUE| if {expr} is NaN isnan({expr}) Number |TRUE| if {expr} is NaN
items({dict}) List key-value pairs in {dict} items({dict}) List key-value pairs in {dict}
job_getchannel({job}) Channel get the channel handle for {job} job_getchannel({job}) Channel get the channel handle for {job}
job_info({job}) Dict get information about {job} job_info([{job}]) Dict get information about {job}
job_setoptions({job}, {options}) none set options for {job} job_setoptions({job}, {options}) none set options for {job}
job_start({command} [, {options}]) job_start({command} [, {options}])
Job start a job Job start a job
@ -2423,6 +2425,7 @@ term_dumpload({filename} [, {options}])
term_dumpwrite({buf}, {filename} [, {options}]) term_dumpwrite({buf}, {filename} [, {options}])
none dump terminal window contents none dump terminal window contents
term_getaltscreen({buf}) Number get the alternate screen flag term_getaltscreen({buf}) Number get the alternate screen flag
term_getansicolors({buf}) List get ANSI palette in GUI color mode
term_getattr({attr}, {what}) Number get the value of attribute {what} term_getattr({attr}, {what}) Number get the value of attribute {what}
term_getcursor({buf}) List get the cursor position of a terminal term_getcursor({buf}) List get the cursor position of a terminal
term_getjob({buf}) Job get the job associated with a terminal term_getjob({buf}) Job get the job associated with a terminal
@ -2435,6 +2438,12 @@ term_gettty({buf}, [{input}]) String get the tty name of a terminal
term_list() List get the list of terminal buffers term_list() List get the list of terminal buffers
term_scrape({buf}, {row}) List get row of a terminal screen term_scrape({buf}, {row}) List get row of a terminal screen
term_sendkeys({buf}, {keys}) none send keystrokes to a terminal term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
term_setansicolors({buf}, {colors})
none set ANSI palette in GUI color mode
term_setkill({buf}, {how}) none set signal to stop job in terminal
term_setrestore({buf}, {command}) none set command to restore terminal
term_setsize({buf}, {rows}, {cols})
none set the size of a terminal
term_start({cmd}, {options}) Job open a terminal window and run a job term_start({cmd}, {options}) Job open a terminal window and run a job
term_wait({buf} [, {time}]) Number wait for screen to be updated term_wait({buf} [, {time}]) Number wait for screen to be updated
test_alloc_fail({id}, {countdown}, {repeat}) test_alloc_fail({id}, {countdown}, {repeat})
@ -2461,6 +2470,7 @@ tolower({expr}) String the String {expr} switched to lowercase
toupper({expr}) String the String {expr} switched to uppercase toupper({expr}) String the String {expr} switched to uppercase
tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
to chars in {tostr} to chars in {tostr}
trim({text}[, {mask}]) String trim characters in {mask} from {text}
trunc({expr}) Float truncate Float {expr} trunc({expr}) Float truncate Float {expr}
type({name}) Number type of variable {name} type({name}) Number type of variable {name}
undofile({name}) String undo file name for {name} undofile({name}) String undo file name for {name}
@ -2585,12 +2595,13 @@ argv([{nr}]) The result is the {nr}th file in the argument list of the
assert_beeps({cmd}) *assert_beeps()* assert_beeps({cmd}) *assert_beeps()*
Run {cmd} and add an error message to |v:errors| if it does Run {cmd} and add an error message to |v:errors| if it does
NOT produce a beep or visual bell. NOT produce a beep or visual bell.
Also see |assert_fails()|. Also see |assert_fails()| and |assert-return|.
*assert_equal()* *assert_equal()*
assert_equal({expected}, {actual} [, {msg}]) assert_equal({expected}, {actual} [, {msg}])
When {expected} and {actual} are not equal an error message is When {expected} and {actual} are not equal an error message is
added to |v:errors|. added to |v:errors| and 1 is returned. Otherwise zero is
returned |assert-return|.
There is no automatic conversion, the String "4" is different There is no automatic conversion, the String "4" is different
from the Number 4. And the number 4 is different from the from the Number 4. And the number 4 is different from the
Float 4.0. The value of 'ignorecase' is not used here, case Float 4.0. The value of 'ignorecase' is not used here, case
@ -2606,13 +2617,14 @@ assert_equal({expected}, {actual} [, {msg}])
assert_equalfile({fname-one}, {fname-two}) assert_equalfile({fname-one}, {fname-two})
When the files {fname-one} and {fname-two} do not contain When the files {fname-one} and {fname-two} do not contain
exactly the same text an error message is added to |v:errors|. exactly the same text an error message is added to |v:errors|.
Also see |assert-return|.
When {fname-one} or {fname-two} does not exist the error will When {fname-one} or {fname-two} does not exist the error will
mention that. mention that.
Mainly useful with |terminal-diff|. Mainly useful with |terminal-diff|.
assert_exception({error} [, {msg}]) *assert_exception()* assert_exception({error} [, {msg}]) *assert_exception()*
When v:exception does not contain the string {error} an error When v:exception does not contain the string {error} an error
message is added to |v:errors|. message is added to |v:errors|. Also see |assert-return|.
This can be used to assert that a command throws an exception. This can be used to assert that a command throws an exception.
Using the error number, followed by a colon, avoids problems Using the error number, followed by a colon, avoids problems
with translations: > with translations: >
@ -2625,14 +2637,15 @@ assert_exception({error} [, {msg}]) *assert_exception()*
assert_fails({cmd} [, {error}]) *assert_fails()* assert_fails({cmd} [, {error}]) *assert_fails()*
Run {cmd} and add an error message to |v:errors| if it does Run {cmd} and add an error message to |v:errors| if it does
NOT produce an error. NOT produce an error. Also see |assert-return|.
When {error} is given it must match in |v:errmsg|. When {error} is given it must match in |v:errmsg|.
Note that beeping is not considered an error, and some failing Note that beeping is not considered an error, and some failing
commands only beep. Use |assert_beeps()| for those. commands only beep. Use |assert_beeps()| for those.
assert_false({actual} [, {msg}]) *assert_false()* assert_false({actual} [, {msg}]) *assert_false()*
When {actual} is not false an error message is added to When {actual} is not false an error message is added to
|v:errors|, like with |assert_equal()|. |v:errors|, like with |assert_equal()|.
Also see |assert-return|.
A value is false when it is zero. When {actual} is not a A value is false when it is zero. When {actual} is not a
number the assert fails. number the assert fails.
When {msg} is omitted an error in the form When {msg} is omitted an error in the form
@ -2641,7 +2654,7 @@ assert_false({actual} [, {msg}]) *assert_false()*
assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
This asserts number values. When {actual} is lower than This asserts number values. When {actual} is lower than
{lower} or higher than {upper} an error message is added to {lower} or higher than {upper} an error message is added to
|v:errors|. |v:errors|. Also see |assert-return|.
When {msg} is omitted an error in the form When {msg} is omitted an error in the form
"Expected range {lower} - {upper}, but got {actual}" is "Expected range {lower} - {upper}, but got {actual}" is
produced. produced.
@ -2649,7 +2662,7 @@ assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
*assert_match()* *assert_match()*
assert_match({pattern}, {actual} [, {msg}]) assert_match({pattern}, {actual} [, {msg}])
When {pattern} does not match {actual} an error message is When {pattern} does not match {actual} an error message is
added to |v:errors|. added to |v:errors|. Also see |assert-return|.
{pattern} is used as with |=~|: The matching is always done {pattern} is used as with |=~|: The matching is always done
like 'magic' was set and 'cpoptions' is empty, no matter what like 'magic' was set and 'cpoptions' is empty, no matter what
@ -2670,18 +2683,22 @@ assert_match({pattern}, {actual} [, {msg}])
assert_notequal({expected}, {actual} [, {msg}]) assert_notequal({expected}, {actual} [, {msg}])
The opposite of `assert_equal()`: add an error message to The opposite of `assert_equal()`: add an error message to
|v:errors| when {expected} and {actual} are equal. |v:errors| when {expected} and {actual} are equal.
Also see |assert-return|.
*assert_notmatch()* *assert_notmatch()*
assert_notmatch({pattern}, {actual} [, {msg}]) assert_notmatch({pattern}, {actual} [, {msg}])
The opposite of `assert_match()`: add an error message to The opposite of `assert_match()`: add an error message to
|v:errors| when {pattern} matches {actual}. |v:errors| when {pattern} matches {actual}.
Also see |assert-return|.
assert_report({msg}) *assert_report()* assert_report({msg}) *assert_report()*
Report a test failure directly, using {msg}. Report a test failure directly, using {msg}.
Always returns one.
assert_true({actual} [, {msg}]) *assert_true()* assert_true({actual} [, {msg}]) *assert_true()*
When {actual} is not true an error message is added to When {actual} is not true an error message is added to
|v:errors|, like with |assert_equal()|. |v:errors|, like with |assert_equal()|.
Also see |assert-return|.
A value is TRUE when it is a non-zero number. When {actual} A value is TRUE when it is a non-zero number. When {actual}
is not a number the assert fails. is not a number the assert fails.
When {msg} is omitted an error in the form "Expected True but When {msg} is omitted an error in the form "Expected True but
@ -3170,8 +3187,8 @@ char2nr({expr} [, {utf8}]) *char2nr()*
char2nr("ABC") returns 65 char2nr("ABC") returns 65
< When {utf8} is omitted or zero, the current 'encoding' is used. < When {utf8} is omitted or zero, the current 'encoding' is used.
Example for "utf-8": > Example for "utf-8": >
char2nr("<EFBFBD>") returns 225 char2nr("á") returns 225
char2nr("<EFBFBD>"[0]) returns 195 char2nr("á"[0]) returns 195
< With {utf8} set to 1, always treat as utf-8 characters. < With {utf8} set to 1, always treat as utf-8 characters.
A combining character is a separate character. A combining character is a separate character.
|nr2char()| does the opposite. |nr2char()| does the opposite.
@ -4466,6 +4483,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
specifies what for. The following completion types are specifies what for. The following completion types are
supported: supported:
arglist file names in argument list
augroup autocmd groups augroup autocmd groups
buffer buffer names buffer buffer names
behave :behave suboptions behave :behave suboptions
@ -4719,6 +4737,7 @@ getqflist([{what}]) *getqflist()*
list item is a dictionary with these entries: list item is a dictionary with these entries:
bufnr number of buffer that has the file name, use bufnr number of buffer that has the file name, use
bufname() to get the name bufname() to get the name
module module name
lnum line number in the buffer (first line is 1) lnum line number in the buffer (first line is 1)
col column number (first column is 1) col column number (first column is 1)
vcol |TRUE|: "col" is visual column vcol |TRUE|: "col" is visual column
@ -4744,8 +4763,8 @@ getqflist([{what}]) *getqflist()*
returns only the items listed in {what} as a dictionary. The returns only the items listed in {what} as a dictionary. The
following string items are supported in {what}: following string items are supported in {what}:
changedtick get the total number of changes made changedtick get the total number of changes made
to the list to the list |quickfix-changedtick|
context get the context stored with |setqflist()| context get the |quickfix-context|
efm errorformat to use when parsing "lines". If efm errorformat to use when parsing "lines". If
not present, then the 'errorformat' option not present, then the 'errorformat' option
value is used. value is used.
@ -4754,15 +4773,15 @@ getqflist([{what}]) *getqflist()*
current list or the list specified by "nr" current list or the list specified by "nr"
idx index of the current entry in the list idx index of the current entry in the list
items quickfix list entries items quickfix list entries
lines use 'errorformat' to extract items from a list lines parse a list of lines using 'efm' and return
of lines and return the resulting entries. the resulting entries. Only a |List| type is
Only a |List| type is accepted. The current accepted. The current quickfix list is not
quickfix list is not modified. modified. See |quickfix-parse|.
nr get information for this quickfix list; zero nr get information for this quickfix list; zero
means the current quickfix list and "$" means means the current quickfix list and "$" means
the last quickfix list the last quickfix list
size number of entries in the quickfix list size number of entries in the quickfix list
title get the list title title get the list title |quickfix-title|
winid get the quickfix |window-ID| winid get the quickfix |window-ID|
all all of the above quickfix properties all all of the above quickfix properties
Non-string items in {what} are ignored. To get the value of a Non-string items in {what} are ignored. To get the value of a
@ -4780,7 +4799,7 @@ getqflist([{what}]) *getqflist()*
The returned dictionary contains the following entries: The returned dictionary contains the following entries:
changedtick total number of changes made to the changedtick total number of changes made to the
list |quickfix-changedtick| list |quickfix-changedtick|
context context information stored with |setqflist()|. context quickfix list context. See |quickfix-context|
If not present, set to "". If not present, set to "".
id quickfix list ID |quickfix-ID|. If not id quickfix list ID |quickfix-ID|. If not
present, set to 0. present, set to 0.
@ -4795,12 +4814,11 @@ getqflist([{what}]) *getqflist()*
to "". to "".
winid quickfix |window-ID|. If not present, set to 0 winid quickfix |window-ID|. If not present, set to 0
Examples: > Examples (See also |getqflist-examples|): >
:echo getqflist({'all': 1}) :echo getqflist({'all': 1})
:echo getqflist({'nr': 2, 'title': 1}) :echo getqflist({'nr': 2, 'title': 1})
:echo getqflist({'lines' : ["F1:10:L10"]}) :echo getqflist({'lines' : ["F1:10:L10"]})
< <
getreg([{regname} [, 1 [, {list}]]]) *getreg()* getreg([{regname} [, 1 [, {list}]]]) *getreg()*
The result is a String, which is the contents of register The result is a String, which is the contents of register
{regname}. Example: > {regname}. Example: >
@ -4885,7 +4903,19 @@ getwinpos([{timeout}]) *getwinpos()*
[x-pos, y-pos] [x-pos, y-pos]
{timeout} can be used to specify how long to wait in msec for {timeout} can be used to specify how long to wait in msec for
a response from the terminal. When omitted 100 msec is used. a response from the terminal. When omitted 100 msec is used.
Use a longer time for a remote terminal.
When using a value less than 10 and no response is received
within that time, a previously reported position is returned,
if available. This can be used to poll for the position and
do some work in the mean time: >
while 1
let res = getwinpos(1)
if res[0] >= 0
break
endif
" Do some work here
endwhile
<
*getwinposx()* *getwinposx()*
getwinposx() The result is a Number, which is the X coordinate in pixels of getwinposx() The result is a Number, which is the X coordinate in pixels of
the left hand side of the GUI Vim window. Also works for an the left hand side of the GUI Vim window. Also works for an
@ -5371,10 +5401,11 @@ job_getchannel({job}) *job_getchannel()*
< <
{only available when compiled with the |+job| feature} {only available when compiled with the |+job| feature}
job_info({job}) *job_info()* job_info([{job}]) *job_info()*
Returns a Dictionary with information about {job}: Returns a Dictionary with information about {job}:
"status" what |job_status()| returns "status" what |job_status()| returns
"channel" what |job_getchannel()| returns "channel" what |job_getchannel()| returns
"cmd" List of command arguments used to start the job
"process" process ID "process" process ID
"tty_in" terminal input name, empty when none "tty_in" terminal input name, empty when none
"tty_out" terminal output name, empty when none "tty_out" terminal output name, empty when none
@ -5382,6 +5413,8 @@ job_info({job}) *job_info()*
"exit_cb" function to be called on exit "exit_cb" function to be called on exit
"stoponexit" |job-stoponexit| "stoponexit" |job-stoponexit|
Without any arguments, returns a List with all Job objects.
job_setoptions({job}, {options}) *job_setoptions()* job_setoptions({job}, {options}) *job_setoptions()*
Change options for {job}. Supported are: Change options for {job}. Supported are:
"stoponexit" |job-stoponexit| "stoponexit" |job-stoponexit|
@ -6119,6 +6152,8 @@ mkdir({name} [, {path} [, {prot}]])
Example: > Example: >
:call mkdir($HOME . "/tmp/foo/bar", "p", 0700) :call mkdir($HOME . "/tmp/foo/bar", "p", 0700)
< This function is not available in the |sandbox|. < This function is not available in the |sandbox|.
There is no error if the directory already exists and the "p"
flag is passed (since patch 8.0.1708).
Not available on all systems. To check use: > Not available on all systems. To check use: >
:if exists("*mkdir") :if exists("*mkdir")
< <
@ -6195,31 +6230,6 @@ nr2char({expr} [, {utf8}]) *nr2char()*
characters. nr2char(0) is a real NUL and terminates the characters. nr2char(0) is a real NUL and terminates the
string, thus results in an empty string. string, thus results in an empty string.
option_restore({list}) *option_restore()*
Restore options previously saved by option_save().
When buffer-local options have been saved, this function must
be called when the same buffer is the current buffer.
When window-local options have been saved, this function must
be called when the same window is the current window.
When in the wrong buffer and/or window an error is given and
the local options won't be restored.
NOT IMPLEMENTED YET!
option_save({list}) *option_save()*
Saves the options named in {list}. The returned value can be
passed to option_restore(). Example: >
let s:saved_options = option_save([
\ 'ignorecase',
\ 'iskeyword',
\ ])
au <buffer> BufLeave *
\ call option_restore(s:saved_options)
< The advantage over using `:let` is that global and local
values are handled and the script ID is restored, so that
`:verbose set` will show where the option was originally set,
not where it was restored.
NOT IMPLEMENTED YET!
or({expr}, {expr}) *or()* or({expr}, {expr}) *or()*
Bitwise OR on the two arguments. The arguments are converted Bitwise OR on the two arguments. The arguments are converted
to a number. A List, Dict or Float argument causes an error. to a number. A List, Dict or Float argument causes an error.
@ -7212,6 +7222,8 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
buffer buffer
filename name of a file; only used when "bufnr" is not filename name of a file; only used when "bufnr" is not
present or it is invalid. present or it is invalid.
module name of a module; if given it will be used in
quickfix error window instead of the filename.
lnum line number in the file lnum line number in the file
pattern search pattern used to locate the error pattern search pattern used to locate the error
col column number col column number
@ -7260,7 +7272,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
only the items listed in {what} are set. The first {list} only the items listed in {what} are set. The first {list}
argument is ignored. The following items can be specified in argument is ignored. The following items can be specified in
{what}: {what}:
context any Vim type can be stored as a context context quickfix list context. See |quickfix-context|
efm errorformat to use when parsing text from efm errorformat to use when parsing text from
"lines". If this is not present, then the "lines". If this is not present, then the
'errorformat' option value is used. 'errorformat' option value is used.
@ -7282,10 +7294,10 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
list is modified, "id" should be used instead of "nr" to list is modified, "id" should be used instead of "nr" to
specify the list. specify the list.
Examples: > Examples (See also |setqflist-examples|): >
:call setqflist([], 'r', {'title': 'My search'}) :call setqflist([], 'r', {'title': 'My search'})
:call setqflist([], 'r', {'nr': 2, 'title': 'Errors'}) :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
:call setqflist([], 'a', {'id':myid, 'lines':["F1:10:L10"]}) :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
< <
Returns zero for success, -1 for failure. Returns zero for success, -1 for failure.
@ -8176,7 +8188,20 @@ term_dumpdiff({filename}, {filename} [, {options}])
the second file. The middle part shows the differences. the second file. The middle part shows the differences.
The parts are separated by a line of dashes. The parts are separated by a line of dashes.
{options} are not implemented yet. If the {options} argument is present, it must be a Dict with
these possible members:
"term_name" name to use for the buffer name, instead
of the first file name.
"term_rows" vertical size to use for the terminal,
instead of using 'termwinsize'
"term_cols" horizontal size to use for the terminal,
instead of using 'termwinsize'
"vertical" split the window vertically
"curwin" use the current window, do not split the
window; fails if the current buffer
cannot be |abandon|ed
"norestore" do not add the terminal window to a
session file
Each character in the middle part indicates a difference. If Each character in the middle part indicates a difference. If
there are multiple differences only the first in this list is there are multiple differences only the first in this list is
@ -8199,7 +8224,7 @@ term_dumpload({filename} [, {options}])
Returns the buffer number or zero when it fails. Returns the buffer number or zero when it fails.
Also see |terminal-diff|. Also see |terminal-diff|.
{options} are not implemented yet. For {options} see |term_dumpdiff()|.
*term_dumpwrite()* *term_dumpwrite()*
term_dumpwrite({buf}, {filename} [, {options}]) term_dumpwrite({buf}, {filename} [, {options}])
@ -8219,6 +8244,18 @@ term_getaltscreen({buf}) *term_getaltscreen()*
{buf} is used as with |term_getsize()|. {buf} is used as with |term_getsize()|.
{only available when compiled with the |+terminal| feature} {only available when compiled with the |+terminal| feature}
term_getansicolors({buf}) *term_getansicolors()*
Get the ANSI color palette in use by terminal {buf}.
Returns a List of length 16 where each element is a String
representing a color in hexadecimal "#rrggbb" format.
Also see |term_setansicolors()| and |g:terminal_ansi_colors|.
If neither was used returns the default colors.
{buf} is used as with |term_getsize()|. If the buffer does not
exist or is not a terminal window, an empty list is returned.
{only available when compiled with the |+terminal| feature and
with GUI enabled and/or the |+termguicolors| feature}
term_getattr({attr}, {what}) *term_getattr()* term_getattr({attr}, {what}) *term_getattr()*
Given {attr}, a value returned by term_scrape() in the "attr" Given {attr}, a value returned by term_scrape() in the "attr"
item, return whether {what} is on. {what} can be one of: item, return whether {what} is on. {what} can be one of:
@ -8263,6 +8300,8 @@ term_getline({buf}, {row}) *term_getline()*
The first line has {row} one. When {row} is "." the cursor The first line has {row} one. When {row} is "." the cursor
line is used. When {row} is invalid an empty string is line is used. When {row} is invalid an empty string is
returned. returned.
To get attributes of each character use |term_scrape()|.
{only available when compiled with the |+terminal| feature} {only available when compiled with the |+terminal| feature}
term_getscrolled({buf}) *term_getscrolled()* term_getscrolled({buf}) *term_getscrolled()*
@ -8348,8 +8387,68 @@ term_sendkeys({buf}, {keys}) *term_sendkeys()*
means the character CTRL-X. means the character CTRL-X.
{only available when compiled with the |+terminal| feature} {only available when compiled with the |+terminal| feature}
term_setsize({buf}, {expr}) *term_setsize()* term_setansicolors({buf}, {colors}) *term_setansicolors()*
Not implemented yet. Set the ANSI color palette used by terminal {buf}.
{colors} must be a List of 16 valid color names or hexadecimal
color codes, like those accepted by |highlight-guifg|.
Also see |term_getansicolors()| and |g:terminal_ansi_colors|.
The colors normally are:
0 black
1 dark red
2 dark green
3 brown
4 dark blue
5 dark magenta
6 dark cyan
7 light grey
8 dark grey
9 red
10 green
11 yellow
12 blue
13 magenta
14 cyan
15 white
These colors are used in the GUI and in the terminal when
'termguicolors' is set. When not using GUI colors (GUI mode
or 'termguicolors'), the terminal window always uses the 16
ANSI colors of the underlying terminal.
{only available when compiled with the |+terminal| feature and
with GUI enabled and/or the |+termguicolors| feature}
term_setkill({buf}, {how}) *term_setkill()*
When exiting Vim or trying to close the terminal window in
another way, {how} defines whether the job in the terminal can
be stopped.
When {how} is empty (the default), the job will not be
stopped, trying to exit will result in |E947|.
Otherwise, {how} specifies what signal to send to the job.
See |job_stop()| for the values.
After sending the signal Vim will wait for up to a second to
check that the job actually stopped.
term_setrestore({buf}, {command}) *term_setrestore()*
Set the command to write in a session file to restore the job
in this terminal. The line written in the session file is: >
terminal ++curwin ++cols=%d ++rows=%d {command}
< Make sure to escape the command properly.
Use an empty {command} to run 'shell'.
Use "NONE" to not restore this window.
{only available when compiled with the |+terminal| feature}
term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
Set the size of terminal {buf}. The size of the window
containing the terminal will also be adjusted, if possible.
If {rows} or {cols} is zero or negative, that dimension is not
changed.
{buf} must be the buffer number of a terminal window. Use an
empty string for the current buffer. If the buffer does not
exist or is not a terminal window, an error is given.
{only available when compiled with the |+terminal| feature} {only available when compiled with the |+terminal| feature}
term_start({cmd}, {options}) *term_start()* term_start({cmd}, {options}) *term_start()*
@ -8383,14 +8482,18 @@ term_start({cmd}, {options}) *term_start()*
"term_name" name to use for the buffer name, instead "term_name" name to use for the buffer name, instead
of the command name. of the command name.
"term_rows" vertical size to use for the terminal, "term_rows" vertical size to use for the terminal,
instead of using 'termsize' instead of using 'termwinsize'
"term_cols" horizontal size to use for the terminal, "term_cols" horizontal size to use for the terminal,
instead of using 'termsize' instead of using 'termwinsize'
"vertical" split the window vertically "vertical" split the window vertically
"curwin" use the current window, do not split the "curwin" use the current window, do not split the
window; fails if the current buffer window; fails if the current buffer
cannot be |abandon|ed cannot be |abandon|ed
"hidden" do not open a window "hidden" do not open a window
"norestore" do not add the terminal window to a
session file
"term_kill" what to do when trying to close the
terminal window, see |term_setkill()|
"term_finish" What to do when the job is finished: "term_finish" What to do when the job is finished:
"close": close any windows "close": close any windows
"open": open window if needed "open": open window if needed
@ -8406,6 +8509,9 @@ term_start({cmd}, {options}) *term_start()*
CTRL-D is used on MS-Windows. For Python CTRL-D is used on MS-Windows. For Python
use CTRL-Z or "exit()". For a shell use use CTRL-Z or "exit()". For a shell use
"exit". A CR is always added. "exit". A CR is always added.
"ansi_colors" A list of 16 color names or hex codes
defining the ANSI palette used in GUI
color modes. See |g:terminal_ansi_colors|.
{only available when compiled with the |+terminal| feature} {only available when compiled with the |+terminal| feature}
@ -8604,6 +8710,22 @@ tr({src}, {fromstr}, {tostr}) *tr()*
echo tr("<blob>", "<>", "{}") echo tr("<blob>", "<>", "{}")
< returns "{blob}" < returns "{blob}"
trim({text}[, {mask}]) *trim()*
Return {text} as a String where any character in {mask} is
removed from the beginning and end of {text}.
If {mask} is not given, {mask} is all characters up to 0x20,
which includes Tab, space, NL and CR, plus the non-breaking
space character 0xa0.
This code deals with multibyte characters properly.
Examples: >
echo trim(" some text ")
< returns "some text" >
echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") . "_TAIL"
< returns "RESERVE_TAIL" >
echo trim("rm<Xrm<>X>rrm", "rm<>")
< returns "Xrm<>X" (characters in the middle are not removed)
trunc({expr}) *trunc()* trunc({expr}) *trunc()*
Return the largest integral value with magnitude less than or Return the largest integral value with magnitude less than or
equal to {expr} as a |Float| (truncate towards zero). equal to {expr} as a |Float| (truncate towards zero).
@ -9194,6 +9316,8 @@ visualextra Compiled with extra Visual mode commands.
|blockwise-operators|. |blockwise-operators|.
vms VMS version of Vim. vms VMS version of Vim.
vreplace Compiled with |gR| and |gr| commands. vreplace Compiled with |gR| and |gr| commands.
vtp Compiled for vcon support |+vtp| (check vcon to find
out if it works in the current console).
wildignore Compiled with 'wildignore' option. wildignore Compiled with 'wildignore' option.
wildmenu Compiled with 'wildmenu' option. wildmenu Compiled with 'wildmenu' option.
win32 Win32 version of Vim (MS-Windows 95 and later, 32 or win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
@ -9432,8 +9556,7 @@ may be larger.
It is also possible to define a function without any arguments. You must It is also possible to define a function without any arguments. You must
still supply the () then. still supply the () then.
It is allowed to define another function inside a function It is allowed to define another function inside a function body.
body.
*local-variables* *local-variables*
Inside a function local variables can be used. These will disappear when the Inside a function local variables can be used. These will disappear when the
@ -9816,6 +9939,14 @@ This does NOT work: >
variables are automatically deleted when the function variables are automatically deleted when the function
ends. ends.
:unl[et] ${env-name} ... *:unlet-environment* *:unlet-$*
Remove environment variable {env-name}.
Can mix {name} and ${env-name} in one :unlet command.
No error message is given for a non-existing
variable, also without !.
If the system does not support deleting an environment
variable, it is made emtpy.
:lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* :lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv*
Lock the internal variable {name}. Locking means that Lock the internal variable {name}. Locking means that
it can no longer be changed (until it is unlocked). it can no longer be changed (until it is unlocked).

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 8.0. Last change: 2018 Feb 04 *filetype.txt* For Vim version 8.0. Last change: 2018 Apr 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -319,6 +319,10 @@ then Vim will load all plugins in these directories and below:
Note that the last one is the value of $VIMRUNTIME which has been expanded. Note that the last one is the value of $VIMRUNTIME which has been expanded.
Note that when using a plugin manager or |packages| many directories will be
added to 'runtimepath'. These plugins earch require their own directory,
don't put them directly in ~/.vim/plugin.
What if it looks like your plugin is not being loaded? You can find out what What if it looks like your plugin is not being loaded? You can find out what
happens when Vim starts up by using the |-V| argument: > happens when Vim starts up by using the |-V| argument: >

View File

@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.0. Last change: 2017 Nov 09 *gui.txt* For Vim version 8.0. Last change: 2018 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -134,7 +134,7 @@ task bar with the 'guiheadroom' option.
:winp[os] :winp[os]
Display current position of the top left corner of the GUI vim Display current position of the top left corner of the GUI vim
window in pixels. Does not work in all versions. window in pixels. Does not work in all versions.
Also see |getwinposx()| and |getwinposy()|. Also see |getwinpos()|, |getwinposx()| and |getwinposy()|.
:winp[os] {X} {Y} *E466* :winp[os] {X} {Y} *E466*
Put the GUI vim window at the given {X} and {Y} coordinates. Put the GUI vim window at the given {X} and {Y} coordinates.
@ -992,10 +992,14 @@ it behaves in a strange way.
:popu[p] {name} Popup the menu {name}. The menu named must :popu[p] {name} Popup the menu {name}. The menu named must
have at least one subentry, but need not have at least one subentry, but need not
appear on the menu-bar (see |hidden-menus|). appear on the menu-bar (see |hidden-menus|).
{only available for Win32 and GTK GUI} {only available for Win32 and GTK GUI or in
the terminal when compiled with +insert_expand}
:popu[p]! {name} Like above, but use the position of the mouse :popu[p]! {name} Like above, but use the position of the mouse
pointer instead of the cursor. pointer instead of the cursor.
In the terminal this is the last known
position, which is usually at the last click
or release (mouse movement is irrelevalt).
Example: > Example: >
:popup File :popup File
@ -1006,6 +1010,10 @@ pointer if ! was used). >
:popup ]Toolbar :popup ]Toolbar
This creates a popup menu that doesn't exist on the main menu-bar. This creates a popup menu that doesn't exist on the main menu-bar.
Note that in the GUI the :popup command will return immediately, before a
selection has been made. In the terminal the commands waits for the user to
make a selection.
Note that a menu that starts with ']' will not be displayed. Note that a menu that starts with ']' will not be displayed.
============================================================================== ==============================================================================

View File

@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 8.0. Last change: 2017 Jul 28 *gui_x11.txt* For Vim version 8.0. Last change: 2018 May 06
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -53,6 +53,9 @@ When using "gvim -f" and then ":gui", Vim will run in the foreground. The
":gui -b". ":gui -b".
"gvim --nofork" does the same as "gvim -f". "gvim --nofork" does the same as "gvim -f".
When there are running jobs Vim will not fork, because the processes would no
longer be child processes.
*E851* *E852* *E851* *E852*
When starting the GUI fails Vim will try to continue running in the terminal. When starting the GUI fails Vim will try to continue running in the terminal.

View File

@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 8.0. Last change: 2016 Sep 01 *if_ruby.txt* For Vim version 8.0. Last change: 2018 Mar 15
VIM REFERENCE MANUAL by Shugo Maeda VIM REFERENCE MANUAL by Shugo Maeda
@ -221,6 +221,9 @@ for sure edit "gvim.exe" and search for "ruby\d*.dll\c".
If you want to build Vim with RubyInstaller 1.9 or 2.X using MSVC, you need If you want to build Vim with RubyInstaller 1.9 or 2.X using MSVC, you need
some tricks. See the src/INSTALLpc.txt for detail. some tricks. See the src/INSTALLpc.txt for detail.
If Vim is built with RubyInstaller 2.4 or later, you may also need to add
"C:\Ruby<version>\bin\ruby_builtin_dlls" to the PATH environment variable.
Unix ~ Unix ~

View File

@ -1,4 +1,4 @@
*indent.txt* For Vim version 8.0. Last change: 2014 Dec 06 *indent.txt* For Vim version 8.0. Last change: 2018 Apr 04
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -414,10 +414,10 @@ The examples below assume a 'shiftwidth' of 4.
*cino-(* *cino-(*
(N When in unclosed parentheses, indent N characters from the line (N When in unclosed parentheses, indent N characters from the line
with the unclosed parentheses. Add a 'shiftwidth' for every with the unclosed parentheses. Add a 'shiftwidth' for every
unclosed parentheses. When N is 0 or the unclosed parentheses extra unclosed parentheses. When N is 0 or the unclosed
is the first non-white character in its line, line up with the parentheses is the first non-white character in its line, line
next non-white character after the unclosed parentheses. up with the next non-white character after the unclosed
(default 'shiftwidth' * 2). parentheses. (default 'shiftwidth' * 2).
cino= cino=(0 > cino= cino=(0 >
if (c1 && (c2 || if (c1 && (c2 || if (c1 && (c2 || if (c1 && (c2 ||
@ -428,7 +428,8 @@ The examples below assume a 'shiftwidth' of 4.
{ { { {
< <
*cino-u* *cino-u*
uN Same as (N, but for one level deeper. (default 'shiftwidth'). uN Same as (N, but for one nesting level deeper.
(default 'shiftwidth').
cino= cino=u2 > cino= cino=u2 >
if (c123456789 if (c123456789 if (c123456789 if (c123456789

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 8.0. Last change: 2017 Aug 02 *index.txt* For Vim version 8.0. Last change: 2018 Apr 19
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -959,7 +959,7 @@ tag command note action in Visual mode ~
|v_i{| i{ same as iB |v_i{| i{ same as iB
|v_i}| i} same as iB |v_i}| i} same as iB
|v_o| o move cursor to other corner of area |v_o| o move cursor to other corner of area
|v_r| r 2 delete highlighted area and start insert |v_r| r 2 replace highlighted area with a character
|v_s| s 2 delete highlighted area and start insert |v_s| s 2 delete highlighted area and start insert
|v_u| u 2 make highlighted area lowercase |v_u| u 2 make highlighted area lowercase
|v_v| v make Visual mode characterwise or stop |v_v| v make Visual mode characterwise or stop

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 8.0. Last change: 2017 Sep 23 *map.txt* For Vim version 8.0. Last change: 2018 May 13
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -542,9 +542,9 @@ scenario: >
:imap <M-C> foo :imap <M-C> foo
:set encoding=utf-8 :set encoding=utf-8
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3 The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
byte. If you type the character <EFBFBD> (0xe1 <M-a>) in UTF-8 encoding this is the byte. If you type the character á (0xe1 <M-a>) in UTF-8 encoding this is the
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then or two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then or
otherwise it would be impossible to type the <EFBFBD> character. otherwise it would be impossible to type the á character.
*<Leader>* *mapleader* *<Leader>* *mapleader*
To define a mapping which uses the "mapleader" variable, the special string To define a mapping which uses the "mapleader" variable, the special string
@ -917,7 +917,9 @@ an additional rule:
full-id In front of the match is a non-keyword character, or this is where full-id In front of the match is a non-keyword character, or this is where
the line or insertion starts. Exception: When the abbreviation is the line or insertion starts. Exception: When the abbreviation is
only one character, it is not recognized if there is a non-keyword only one character, it is not recognized if there is a non-keyword
character in front of it, other than a space or a tab. character in front of it, other than a space or a tab. However, for
the command line "'<,'>" (or any other marks) is ignored, as if the
command line starts after it.
end-id In front of the match is a keyword character, or a space or a tab, end-id In front of the match is a keyword character, or a space or a tab,
or this is where the line or insertion starts. or this is where the line or insertion starts.
@ -1272,6 +1274,7 @@ By default, the arguments of user defined commands do not undergo completion.
However, by specifying one or the other of the following attributes, argument However, by specifying one or the other of the following attributes, argument
completion can be enabled: completion can be enabled:
-complete=arglist file names in argument list
-complete=augroup autocmd groups -complete=augroup autocmd groups
-complete=buffer buffer names -complete=buffer buffer names
-complete=behave :behave suboptions -complete=behave :behave suboptions

View File

@ -1,4 +1,4 @@
*mlang.txt* For Vim version 8.0. Last change: 2017 Mar 04 *mlang.txt* For Vim version 8.0. Last change: 2018 May 06
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -190,8 +190,8 @@ you can do it without restarting Vim: >
:source $VIMRUNTIME/menu.vim :source $VIMRUNTIME/menu.vim
Each part of a menu path is translated separately. The result is that when Each part of a menu path is translated separately. The result is that when
"Help" is translated to "Hilfe" and "Overview" to "<EFBFBD>berblick" then "Help" is translated to "Hilfe" and "Overview" to "Überblick" then
"Help.Overview" will be translated to "Hilfe.<EFBFBD>berblick". "Help.Overview" will be translated to "Hilfe.Überblick".
============================================================================== ==============================================================================
3. Scripts *multilang-scripts* 3. Scripts *multilang-scripts*

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2018 Feb 25 *options.txt* For Vim version 8.0. Last change: 2018 Apr 22
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -402,8 +402,8 @@ Setting the filetype
used to set the option value in, unless this is a help used to set the option value in, unless this is a help
window, in which case the window below help window is window, in which case the window below help window is
used (skipping the option-window). used (skipping the option-window).
{not available when compiled without the |+eval| or {not available when compiled without the |+eval|
|+autocmd| features} feature}
*$HOME* *$HOME*
Using "~" is like using "$HOME", but it is only recognized at the start of an Using "~" is like using "$HOME", but it is only recognized at the start of an
@ -1087,7 +1087,9 @@ A jump table for the options with a short description can be found at |Q_op|.
< Use 'backupdir' to put the backup in a different directory. < Use 'backupdir' to put the backup in a different directory.
*'backupskip'* *'bsk'* *'backupskip'* *'bsk'*
'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") 'backupskip' 'bsk' string (default: "$TMPDIR/*,$TMP/*,$TEMP/*"
Unix: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*"
Mac: "/private/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
global global
{not in Vi} {not in Vi}
{not available when compiled without the |+wildignore| {not available when compiled without the |+wildignore|
@ -1385,8 +1387,7 @@ A jump table for the options with a short description can be found at |Q_op|.
written written
nowrite buffer which will not be written nowrite buffer which will not be written
acwrite buffer which will always be written with BufWriteCmd acwrite buffer which will always be written with BufWriteCmd
autocommands. {not available when compiled without the autocommands.
|+autocmd| feature}
quickfix quickfix buffer, contains list of errors |:cwindow| quickfix quickfix buffer, contains list of errors |:cwindow|
or list of locations |:lwindow| or list of locations |:lwindow|
help help buffer (you are not supposed to set this help help buffer (you are not supposed to set this
@ -2116,7 +2117,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*cpo-E* *cpo-E*
E It is an error when using "y", "d", "c", "g~", "gu" or E It is an error when using "y", "d", "c", "g~", "gu" or
"gU" on an Empty region. The operators only work when "gU" on an Empty region. The operators only work when
at least one character is to be operate on. Example: at least one character is to be operated on. Example:
This makes "y0" fail in the first column. This makes "y0" fail in the first column.
*cpo-f* *cpo-f*
f When included, a ":read" command with a file name f When included, a ":read" command with a file name
@ -2466,8 +2467,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'cursorbind' 'crb' boolean (default off) 'cursorbind' 'crb' boolean (default off)
local to window local to window
{not in Vi} {not in Vi}
{not available when compiled without the |+cursorbind|
feature}
When this option is set, as the cursor in the current When this option is set, as the cursor in the current
window moves other cursorbound windows (windows that also have window moves other cursorbound windows (windows that also have
this option set) move their cursors to the corresponding line and this option set) move their cursors to the corresponding line and
@ -2918,8 +2917,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'eventignore' 'ei' string (default "") 'eventignore' 'ei' string (default "")
global global
{not in Vi} {not in Vi}
{not available when compiled without the |+autocmd|
feature}
A list of autocommand event names, which are to be ignored. A list of autocommand event names, which are to be ignored.
When set to "all" or when "all" is one of the items, all autocommand When set to "all" or when "all" is one of the items, all autocommand
events are ignored, autocommands will not be executed. events are ignored, autocommands will not be executed.
@ -3168,8 +3165,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'filetype' 'ft' string (default: "") 'filetype' 'ft' string (default: "")
local to buffer local to buffer
{not in Vi} {not in Vi}
{not available when compiled without the |+autocmd|
feature}
When this option is set, the FileType autocommand event is triggered. When this option is set, the FileType autocommand event is triggered.
All autocommands that match with the value of this option will be All autocommands that match with the value of this option will be
executed. Thus the value of 'filetype' is used in place of the file executed. Thus the value of 'filetype' is used in place of the file
@ -3852,7 +3847,14 @@ A jump table for the options with a short description can be found at |Q_op|.
To avoid problems with flags that are added in the future, use the To avoid problems with flags that are added in the future, use the
"+=" and "-=" feature of ":set" |add-option-flags|. "+=" and "-=" feature of ":set" |add-option-flags|.
Valid letters are as follows: Valid characters are as follows:
*'go-!'*
'!' External commands are executed in a terminal window. Without
this flag the MS-Windows GUI will open a console window to
execute the command. The Unix GUI will simulate a dumb
terminal to list the command output.
The terminal window will be positioned at the bottom, and grow
upwards as needed.
*guioptions_a* *'go-a'* *guioptions_a* *'go-a'*
'a' Autoselect: If present, then whenever VISUAL mode is started, 'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of or the Visual area extended, Vim tries to become the owner of
@ -5334,6 +5336,8 @@ A jump table for the options with a short description can be found at |Q_op|.
an explanation. an explanation.
When 'buftype' is "nowrite" or "nofile" this option may be set, but When 'buftype' is "nowrite" or "nofile" this option may be set, but
will be ignored. will be ignored.
Note that the text may actually be the same, e.g. 'modified' is set
when using "rA" on an "A".
*'more'* *'nomore'* *'more'* *'nomore'*
'more' boolean (Vim default: on, Vi default: off) 'more' boolean (Vim default: on, Vi default: off)
@ -5422,6 +5426,8 @@ A jump table for the options with a short description can be found at |Q_op|.
In the "popup" model the right mouse button produces a pop-up menu. In the "popup" model the right mouse button produces a pop-up menu.
You need to define this first, see |popup-menu|. You need to define this first, see |popup-menu|.
In a terminal the popup menu works if Vim is compiled with the
|+insert_expand| option.
Note that you can further refine the meaning of buttons with mappings. Note that you can further refine the meaning of buttons with mappings.
See |gui-mouse-mapping|. But mappings are NOT used for modeless See |gui-mouse-mapping|. But mappings are NOT used for modeless
@ -6078,7 +6084,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{only available when compiled with the |+reltime| {only available when compiled with the |+reltime|
feature} feature}
The time in milliseconds for redrawing the display. This applies to The time in milliseconds for redrawing the display. This applies to
searching for patterns for 'hlsearch', |:match| highlighting an syntax searching for patterns for 'hlsearch', |:match| highlighting and syntax
highlighting. highlighting.
When redrawing takes more than this many milliseconds no further When redrawing takes more than this many milliseconds no further
matches will be highlighted. matches will be highlighted.
@ -6441,6 +6447,8 @@ A jump table for the options with a short description can be found at |Q_op|.
to find files which replace a distributed runtime files. You can put to find files which replace a distributed runtime files. You can put
a directory after $VIMRUNTIME to find files which add to distributed a directory after $VIMRUNTIME to find files which add to distributed
runtime files. runtime files.
When Vim is started with |--clean| the home directory entries are not
included.
This option cannot be set from a |modeline| or in the |sandbox|, for This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons. security reasons.
@ -6459,8 +6467,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'scrollbind' 'scb' boolean (default off) 'scrollbind' 'scb' boolean (default off)
local to window local to window
{not in Vi} {not in Vi}
{not available when compiled without the |+scrollbind|
feature}
See also |scroll-binding|. When this option is set, the current See also |scroll-binding|. When this option is set, the current
window scrolls as other scrollbind windows (windows that also have window scrolls as other scrollbind windows (windows that also have
this option set) scroll. This option is useful for viewing the this option set) scroll. This option is useful for viewing the
@ -6498,8 +6504,6 @@ A jump table for the options with a short description can be found at |Q_op|.
*'scrollopt'* *'sbo'* *'scrollopt'* *'sbo'*
'scrollopt' 'sbo' string (default "ver,jump") 'scrollopt' 'sbo' string (default "ver,jump")
global global
{not available when compiled without the |+scrollbind|
feature}
{not in Vi} {not in Vi}
This is a comma-separated list of words that specifies how This is a comma-separated list of words that specifies how
'scrollbind' windows should behave. 'sbo' stands for ScrollBind 'scrollbind' windows should behave. 'sbo' stands for ScrollBind
@ -6589,7 +6593,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'sessionoptions'* *'ssop'* *'sessionoptions'* *'ssop'*
'sessionoptions' 'ssop' string (default: "blank,buffers,curdir,folds, 'sessionoptions' 'ssop' string (default: "blank,buffers,curdir,folds,
help,options,tabpages,winsize") help,options,tabpages,winsize,terminal")
global global
{not in Vi} {not in Vi}
{not available when compiled without the |+mksession| {not available when compiled without the |+mksession|
@ -6621,6 +6625,7 @@ A jump table for the options with a short description can be found at |Q_op|.
tabpages all tab pages; without this only the current tab page tabpages all tab pages; without this only the current tab page
is restored, so that you can make a session for each is restored, so that you can make a session for each
tab page separately tab page separately
terminal include terminal windows where the command can be restored
unix with Unix end-of-line format (single <NL>), even when unix with Unix end-of-line format (single <NL>), even when
on Windows or DOS on Windows or DOS
winpos position of the whole Vim window winpos position of the whole Vim window
@ -7416,7 +7421,6 @@ A jump table for the options with a short description can be found at |Q_op|.
W F Preview window flag, text is ",PRV". W F Preview window flag, text is ",PRV".
y F Type of file in the buffer, e.g., "[vim]". See 'filetype'. y F Type of file in the buffer, e.g., "[vim]". See 'filetype'.
Y F Type of file in the buffer, e.g., ",VIM". See 'filetype'. Y F Type of file in the buffer, e.g., ",VIM". See 'filetype'.
{not available when compiled without |+autocmd| feature}
q S "[Quickfix List]", "[Location List]" or empty. q S "[Quickfix List]", "[Location List]" or empty.
k S Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are k S Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are
being used: "<keymap>" being used: "<keymap>"
@ -7440,7 +7444,9 @@ A jump table for the options with a short description can be found at |Q_op|.
a S Argument list status as in default title. ({current} of {max}) a S Argument list status as in default title. ({current} of {max})
Empty if the argument file count is zero or one. Empty if the argument file count is zero or one.
{ NF Evaluate expression between '%{' and '}' and substitute result. { NF Evaluate expression between '%{' and '}' and substitute result.
Note that there is no '%' before the closing '}'. Note that there is no '%' before the closing '}'. The
expression cannot contain a '}' character, call a function to
work around that.
( - Start of item group. Can be used for setting the width and ( - Start of item group. Can be used for setting the width and
alignment of a section. Must be followed by %) somewhere. alignment of a section. Must be followed by %) somewhere.
) - End of item group. No width fields allowed. ) - End of item group. No width fields allowed.
@ -7929,32 +7935,50 @@ A jump table for the options with a short description can be found at |Q_op|.
Note that the "cterm" attributes are still used, not the "gui" ones. Note that the "cterm" attributes are still used, not the "gui" ones.
NOTE: This option is reset when 'compatible' is set. NOTE: This option is reset when 'compatible' is set.
*'termkey'* *'tk'* *'termwinscroll'* *'twsl'*
'termkey' 'tk' string (default "") 'termwinscroll' 'twsl' number (default 10000)
local to buffer
{not in Vi}
{not available when compiled without the
|+terminal| feature}
Number of scrollback lines to keep. When going over this limit the
first 10% of the scrollback lines are deleted. This is just to reduce
the memory usage. See |Terminal-Normal|.
*'termwinkey'* *'twk'*
'termwinkey' 'twk' string (default "")
local to window local to window
{not in Vi} {not in Vi}
The key that starts a CTRL-W command in a terminal window. Other keys The key that starts a CTRL-W command in a terminal window. Other keys
are sent to the job running in the window. are sent to the job running in the window.
The <> notation can be used, e.g.: > The <> notation can be used, e.g.: >
:set termkey=<C-L> :set termwinkey=<C-L>
< The string must be one key stroke but can be multiple bytes. < The string must be one key stroke but can be multiple bytes.
When not set CTRL-W is used, so that CTRL-W : gets you to the command When not set CTRL-W is used, so that CTRL-W : gets you to the command
line. If 'termkey' is set to CTRL-L then CTRL-L : gets you to the line. If 'termwinkey' is set to CTRL-L then CTRL-L : gets you to the
command line. command line.
*'termsize'* *'tms'* *'termwinsize'* *'tws'*
'termsize' 'tms' string (default "") 'termwinsize' 'tws' string (default "")
local to window local to window
{not in Vi} {not in Vi}
Size of the |terminal| window. Format: {rows}x{columns}. Size of the |terminal| window. Format: {rows}x{columns} or
{rows}*{columns}.
- When empty the terminal gets the size from the window. - When empty the terminal gets the size from the window.
- When set (e.g., "24x80") the terminal size is not adjusted to the - When set with a "x" (e.g., "24x80") the terminal size is not
window size. If the window is smaller only the top-left part is adjusted to the window size. If the window is smaller only the
displayed. top-left part is displayed.
When rows is zero then use the height of the window. - When set with a "*" (e.g., "10*50") the terminal size follows the
When columns is zero then use the width of the window. window size, but will not be smaller than the specified rows and/or
For example: "30x0" uses 30 rows with the current window width. columns.
Using "0x0" is the same as empty. - When rows is zero then use the height of the window.
- When columns is zero then use the width of the window.
- Using "0x0" or "0*0" is the same as empty.
Examples:
"30x0" uses 30 rows and the current window width.
"20*0" uses at least 20 rows and the current window width.
"0*40" uses the current window height and at least 40 columns.
Note that the command running in the terminal window may still change Note that the command running in the terminal window may still change
the size of the terminal. In that case the Vim window will be the size of the terminal. In that case the Vim window will be
adjusted to that size, if possible. adjusted to that size, if possible.

View File

@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 8.0. Last change: 2014 Aug 29 *os_vms.txt* For Vim version 8.0. Last change: 2018 May 06
VIM REFERENCE MANUAL VIM REFERENCE MANUAL
@ -702,13 +702,13 @@ In a cluster that contains nodes with different architectures like below:
$show cluster $show cluster
View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31 View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31
+---------------------------------+ +---------------------------------+
<EFBFBD> SYSTEMS <EFBFBD> MEMBERS <EFBFBD> | SYSTEMS | MEMBERS |
+-----------------------+---------<EFBFBD> +-----------------------+---------|
<EFBFBD> NODE <EFBFBD> SOFTWARE <EFBFBD> STATUS <EFBFBD> | NODE | SOFTWARE | STATUS |
+--------+--------------+---------<EFBFBD> +--------+--------------+---------|
<EFBFBD> TOR <EFBFBD> VMS V7.3-2 <EFBFBD> MEMBER <EFBFBD> | TOR | VMS V7.3-2 | MEMBER |
<EFBFBD> TITAN2 <EFBFBD> VMS V8.3 <EFBFBD> MEMBER <EFBFBD> | TITAN2 | VMS V8.3 | MEMBER |
<EFBFBD> ODIN <EFBFBD> VMS V7.3-2 <EFBFBD> MEMBER <EFBFBD> | ODIN | VMS V7.3-2 | MEMBER |
+---------------------------------+ +---------------------------------+
It is convenient to have a common VIM directory but execute different It is convenient to have a common VIM directory but execute different

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.0. Last change: 2018 Feb 04 *pattern.txt* For Vim version 8.0. Last change: 2018 Mar 13
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -1166,7 +1166,8 @@ x A single character, with no special meaning, matches itself
- Matching with a collection can be slow, because each character in - Matching with a collection can be slow, because each character in
the text has to be compared with each character in the collection. the text has to be compared with each character in the collection.
Use one of the other atoms above when possible. Example: "\d" is Use one of the other atoms above when possible. Example: "\d" is
much faster than "[0-9]" and matches the same characters. much faster than "[0-9]" and matches the same characters. However,
the new |NFA| regexp engine deals with this better than the old one.
*/\%[]* *E69* *E70* *E369* */\%[]* *E69* *E70* *E369*
\%[] A sequence of optionally matched atoms. This always matches. \%[] A sequence of optionally matched atoms. This always matches.

View File

@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 8.0. Last change: 2017 Dec 13 *quickfix.txt* For Vim version 8.0. Last change: 2018 May 01
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -330,9 +330,9 @@ deleted for some reason, the message "line changed" is shown to warn you that
the error location may not be correct. If you quit Vim and start again the the error location may not be correct. If you quit Vim and start again the
marks are lost and the error locations may not be correct anymore. marks are lost and the error locations may not be correct anymore.
If vim is built with |+autocmd| support, two autocommands are available for Two autocommands are available for running commands before and after a
running commands before and after a quickfix command (':make', ':grep' and so quickfix command (':make', ':grep' and so on) is executed. See
on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details. |QuickFixCmdPre| and |QuickFixCmdPost| for details.
*QuickFixCmdPost-example* *QuickFixCmdPost-example*
When 'encoding' differs from the locale, the error messages may have a When 'encoding' differs from the locale, the error messages may have a
@ -419,8 +419,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
autocommand event is disabled by adding it to autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing 'eventignore'. This considerably speeds up editing
each buffer. each buffer.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|, Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|,
|:ldo|, |:cfdo| and |:lfdo|. |:ldo|, |:cfdo| and |:lfdo|.
@ -433,8 +432,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
:{cmd} :{cmd}
etc. etc.
< Otherwise it works the same as `:cdo`. < Otherwise it works the same as `:cdo`.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
*:ldo* *:ldo*
:ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list :ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list
@ -447,8 +445,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
etc. etc.
< Only valid entries in the location list are used. < Only valid entries in the location list are used.
Otherwise it works the same as `:cdo`. Otherwise it works the same as `:cdo`.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
*:lfdo* *:lfdo*
:lfdo[!] {cmd} Execute {cmd} in each file in the location list for :lfdo[!] {cmd} Execute {cmd} in each file in the location list for
@ -460,8 +457,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
:{cmd} :{cmd}
etc. etc.
< Otherwise it works the same as `:ldo`. < Otherwise it works the same as `:ldo`.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
============================================================================= =============================================================================
2. The error window *quickfix-window* 2. The error window *quickfix-window*
@ -600,6 +596,110 @@ window ID of the quickfix window and location list window respectively (if
present). Examples: > present). Examples: >
echo getqflist({'winid' : 1}).winid echo getqflist({'winid' : 1}).winid
echo getloclist(2, {'winid' : 1}).winid echo getloclist(2, {'winid' : 1}).winid
<
*getqflist-examples*
The getqflist() and getloclist() functions can be used to get the various
attributes of a quickfix and location list respectively. Some examples for
using these functions are below:
>
" get the title of the current quickfix list
:echo getqflist({'title' : 0}).title
" get the identifier of the current quickfix list
:let qfid = getqflist({'id' : 0}).id
" get the identifier of the fourth quickfix list in the stack
:let qfid = getqflist({'nr' : 4, 'id' : 0}).id
" check whether a quickfix list with a specific identifier exists
:if getqflist({'id' : qfid}).id == qfid
" get the index of the current quickfix list in the stack
:let qfnum = getqflist({'nr' : 0}).nr
" get the items of a quickfix list specified by an identifier
:echo getqflist({'id' : qfid, 'items' : 0}).items
" get the number of entries in a quickfix list specified by an id
:echo getqflist({'id' : qfid, 'size' : 0}).size
" get the context of the third quickfix list in the stack
:echo getqflist({'nr' : 3, 'context' : 0}).context
" get the number of quickfix lists in the stack
:echo getqflist({'nr' : '$'}).nr
" get the number of times the current quickfix list is changed
:echo getqflist({'changedtick' : 0}).changedtick
" get the current entry in a quickfix list specified by an identifier
:echo getqflist({'id' : qfid, 'idx' : 0}).idx
" get all the quickfix list attributes using an identifier
:echo getqflist({'id' : qfid, 'all' : 0})
" parse text from a List of lines and return a quickfix list
:let myList = ["a.java:10:L10", "b.java:20:L20"]
:echo getqflist({'lines' : myList}).items
" parse text using a custom 'efm' and return a quickfix list
:echo getqflist({'lines' : ['a.c#10#Line 10'], 'efm':'%f#%l#%m'}).items
" get the quickfix list window id
:echo getqflist({'winid' : 0}).winid
" get the context of the current location list
:echo getloclist(0, {'context' : 0}).context
" get the location list window id of the third window
:echo getloclist(3, {'winid' : 0}).winid
<
*setqflist-examples*
The setqflist() and setloclist() functions can be used to set the various
attributes of a quickfix and location list respectively. Some examples for
using these functions are below:
>
" create an empty quickfix list with a title and a context
:let t = 'Search results'
:let c = {'cmd' : 'grep'}
:call setqflist([], ' ', {'title' : t, 'context' : c})
" set the title of the current quickfix list
:call setqflist([], 'a', {'title' : 'Mytitle'})
" set the context of a quickfix list specified by an identifier
:call setqflist([], 'a', {'id' : qfid, 'context' : {'val' : 100}})
" create a new quickfix list from a command output
:call setqflist([], ' ', {'lines' : systemlist('grep -Hn main *.c')})
" parse text using a custom efm and add to a particular quickfix list
:call setqflist([], 'a', {'id' : qfid,
\ 'lines' : ["a.c#10#L10", "b.c#20#L20"], 'efm':'%f#%l#%m'})
" add items to the quickfix list specified by an identifier
:let newItems = [{'filename' : 'a.txt', 'lnum' : 10, 'text' : "Apple"},
\ {'filename' : 'b.txt', 'lnum' : 20, 'text' : "Orange"}]
:call setqflist([], 'a', {'id' : qfid, 'items' : newItems})
" empty a quickfix list specified by an identifier
:call setqflist([], 'r', {'id' : qfid, 'items' : []})
" free all the quickfix lists in the stack
:call setqflist([], 'f')
" set the title of the fourth quickfix list
:call setqflist([], 'a', {'nr' : 4, 'title' : 'SomeTitle'})
" create a new quickfix list at the end of the stack
:call setqflist([], ' ', {'nr' : '$',
\ 'lines' : systemlist('grep -Hn class *.java')})
" create a new location list from a command output
:call setloclist(0, [], ' ', {'lines' : systemlist('grep -Hn main *.c')})
" replace the location list entries for the third window
:call setloclist(3, [], 'r', {'items' : newItems})
< <
============================================================================= =============================================================================
3. Using more than one list of errors *quickfix-error-lists* 3. Using more than one list of errors *quickfix-error-lists*
@ -657,8 +757,8 @@ To get the number of the current list in the stack: >
4. Using :make *:make_makeprg* 4. Using :make *:make_makeprg*
*:mak* *:make* *:mak* *:make*
:mak[e][!] [arguments] 1. If vim was built with |+autocmd|, all relevant :mak[e][!] [arguments] 1. All relevant |QuickFixCmdPre| autocommands are
|QuickFixCmdPre| autocommands are executed. executed.
2. If the 'autowrite' option is on, write any changed 2. If the 'autowrite' option is on, write any changed
buffers buffers
3. An errorfile name is made from 'makeef'. If 3. An errorfile name is made from 'makeef'. If
@ -670,9 +770,8 @@ To get the number of the current list in the stack: >
errorfile (for Unix it is also echoed on the errorfile (for Unix it is also echoed on the
screen). screen).
5. The errorfile is read using 'errorformat'. 5. The errorfile is read using 'errorformat'.
6. If vim was built with |+autocmd|, all relevant 6. All relevant |QuickFixCmdPost| autocommands are
|QuickFixCmdPost| autocommands are executed. executed. See example below.
See example below.
7. If [!] is not given the first error is jumped to. 7. If [!] is not given the first error is jumped to.
8. The errorfile is deleted. 8. The errorfile is deleted.
9. You can now move through the errors with commands 9. You can now move through the errors with commands
@ -1135,6 +1234,7 @@ you want to match case, add "\C" to the pattern |/\C|.
Basic items Basic items
%f file name (finds a string) %f file name (finds a string)
%o module name (finds a string)
%l line number (finds a number) %l line number (finds a number)
%c column number (finds a number representing character %c column number (finds a number representing character
column of the error, (1 <tab> == 1 character column)) column of the error, (1 <tab> == 1 character column))
@ -1171,7 +1271,7 @@ or >
to indicate the column of the error. This is to be used in a multi-line error to indicate the column of the error. This is to be used in a multi-line error
message. See |errorformat-javac| for a useful example. message. See |errorformat-javac| for a useful example.
The "%s" conversion specifies the text to search for to locate the error line. The "%s" conversion specifies the text to search for, to locate the error line.
The text is used as a literal string. The anchors "^" and "$" are added to The text is used as a literal string. The anchors "^" and "$" are added to
the text to locate the error line exactly matching the search text and the the text to locate the error line exactly matching the search text and the
text is prefixed with the "\V" atom to make it "very nomagic". The "%s" text is prefixed with the "\V" atom to make it "very nomagic". The "%s"
@ -1179,6 +1279,11 @@ conversion can be used to locate lines without a line number in the error
output. Like the output of the "grep" shell command. output. Like the output of the "grep" shell command.
When the pattern is present the line number will not be used. When the pattern is present the line number will not be used.
The "%o" conversion specifies the module name in quickfix entry. If present
it will be used in quickfix error window instead of the filename. The module
name is used only for displaying purposes, the file name is used when jumping
to the file.
Changing directory Changing directory
The following uppercase conversion characters specify the type of special The following uppercase conversion characters specify the type of special

View File

@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.0. Last change: 2018 Feb 11 *quickref.txt* For Vim version 8.0. Last change: 2018 Apr 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -927,8 +927,9 @@ Short explanation of each option: *option-list*
'termbidi' 'tbidi' terminal takes care of bi-directionality 'termbidi' 'tbidi' terminal takes care of bi-directionality
'termencoding' 'tenc' character encoding used by the terminal 'termencoding' 'tenc' character encoding used by the terminal
'termguicolors' 'tgc' use GUI colors for the terminal 'termguicolors' 'tgc' use GUI colors for the terminal
'termkey' 'tk' key that precedes a Vim command in a terminal 'termwinkey' 'twk' key that precedes a Vim command in a terminal
'termsize' 'tms' size of a terminal window 'termwinscroll' 'twsl' max number of scrollback lines in a terminal window
'termwinsize' 'tws' size of a terminal window
'terse' shorten some messages 'terse' shorten some messages
'textauto' 'ta' obsolete, use 'fileformats' 'textauto' 'ta' obsolete, use 'fileformats'
'textmode' 'tx' obsolete, use 'fileformat' 'textmode' 'tx' obsolete, use 'fileformat'

View File

@ -1,4 +1,4 @@
*quotes.txt* For Vim version 8.0. Last change: 2010 Nov 03 *quotes.txt* For Vim version 8.0. Last change: 2018 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -18,7 +18,7 @@ Coming with a very GUI mindset from Windows, I always thought of people using
Vi as some kind of outer space alien in human clothes. Once I tried I really Vi as some kind of outer space alien in human clothes. Once I tried I really
got addicted by its power and now I found myself typing Vim keypresses in the got addicted by its power and now I found myself typing Vim keypresses in the
oddest places! That's why I would like to see Vim embedded in every oddest places! That's why I would like to see Vim embedded in every
application which deals with text editing. (Jos<EFBFBD> Fonseca) application which deals with text editing. (José Fonseca)
I was a 12-year emacs user who switched to Vim about a year ago after finally I was a 12-year emacs user who switched to Vim about a year ago after finally
giving up on the multiple incompatible versions, flaky contributed packages, giving up on the multiple incompatible versions, flaky contributed packages,

View File

@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.0. Last change: 2018 Feb 11 *repeat.txt* For Vim version 8.0. Last change: 2018 Mar 04
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -265,6 +265,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
loaded during initialization, see |load-plugins|. loaded during initialization, see |load-plugins|.
Also see |pack-add|. Also see |pack-add|.
{only available when compiled with +eval}
*:packl* *:packloadall* *:packl* *:packloadall*
:packl[oadall][!] Load all packages in the "start" directory under each :packl[oadall][!] Load all packages in the "start" directory under each
@ -288,6 +289,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
An error only causes sourcing the script where it An error only causes sourcing the script where it
happens to be aborted, further plugins will be loaded. happens to be aborted, further plugins will be loaded.
See |packages|. See |packages|.
{only available when compiled with +eval}
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167* :scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
Specify the character encoding used in the script. Specify the character encoding used in the script.

View File

@ -1,4 +1,4 @@
*scroll.txt* For Vim version 8.0. Last change: 2016 Nov 10 *scroll.txt* For Vim version 8.0. Last change: 2018 Apr 26
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -32,6 +32,7 @@ seen):
*CTRL-E* *CTRL-E*
CTRL-E Scroll window [count] lines downwards in the buffer. CTRL-E Scroll window [count] lines downwards in the buffer.
The text moves upwards on the screen.
Mnemonic: Extra lines. Mnemonic: Extra lines.
*CTRL-D* *CTRL-D*
@ -70,6 +71,7 @@ seen):
*CTRL-Y* *CTRL-Y*
CTRL-Y Scroll window [count] lines upwards in the buffer. CTRL-Y Scroll window [count] lines upwards in the buffer.
The text moves downwards on the screen.
Note: When using the MS-Windows key bindings CTRL-Y is Note: When using the MS-Windows key bindings CTRL-Y is
remapped to redo. remapped to redo.

View File

@ -1,4 +1,4 @@
*spell.txt* For Vim version 8.0. Last change: 2017 Oct 26 *spell.txt* For Vim version 8.0. Last change: 2018 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -907,9 +907,9 @@ when using "cp1250" on Unix.
*spell-LOW* *spell-UPP* *spell-LOW* *spell-UPP*
Three lines in the affix file are needed. Simplistic example: Three lines in the affix file are needed. Simplistic example:
FOL <EFBFBD><EFBFBD><EFBFBD> ~ FOL áëñ ~
LOW <EFBFBD><EFBFBD><EFBFBD> ~ LOW áëñ ~
UPP <EFBFBD><EFBFBD><EFBFBD> ~ UPP ÁËÑ ~
All three lines must have exactly the same number of characters. All three lines must have exactly the same number of characters.
@ -924,9 +924,9 @@ The "UPP" line specifies the characters with upper-case. That is, a character
is upper-case where it's different from the character at the same position in is upper-case where it's different from the character at the same position in
"FOL". "FOL".
An exception is made for the German sharp s <EFBFBD>. The upper-case version is An exception is made for the German sharp s ß. The upper-case version is
"SS". In the FOL/LOW/UPP lines it should be included, so that it's recognized "SS". In the FOL/LOW/UPP lines it should be included, so that it's recognized
as a word character, but use the <EFBFBD> character in all three. as a word character, but use the ß character in all three.
ASCII characters should be omitted, Vim always handles these in the same way. ASCII characters should be omitted, Vim always handles these in the same way.
When the encoding is UTF-8 no word characters need to be specified. When the encoding is UTF-8 no word characters need to be specified.
@ -1397,7 +1397,7 @@ suggestions would spend most time trying all kind of weird compound words.
*spell-SYLLABLE* *spell-SYLLABLE*
The SYLLABLE item defines characters or character sequences that are used to The SYLLABLE item defines characters or character sequences that are used to
count the number of syllables in a word. Example: count the number of syllables in a word. Example:
SYLLABLE a<EFBFBD>e<EFBFBD>i<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>y/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui ~ SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui ~
Before the first slash is the set of characters that are counted for one Before the first slash is the set of characters that are counted for one
syllable, also when repeated and mixed, until the next character that is not syllable, also when repeated and mixed, until the next character that is not
@ -1478,8 +1478,8 @@ alike. This is mostly used for a letter with different accents. This is used
to prefer suggestions with these letters substituted. Example: to prefer suggestions with these letters substituted. Example:
MAP 2 ~ MAP 2 ~
MAP e<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ MAP eéëêè ~
MAP u<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ MAP uüùúû ~
The first line specifies the number of MAP lines following. Vim ignores the The first line specifies the number of MAP lines following. Vim ignores the
number, but the line must be there. number, but the line must be there.

View File

@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.0. Last change: 2018 Feb 10 *starting.txt* For Vim version 8.0. Last change: 2018 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -127,7 +127,8 @@ argument.
On VMS all option arguments are assumed to be lowercase, unless preceded with On VMS all option arguments are assumed to be lowercase, unless preceded with
a slash. Thus "-R" means recovery and "-/R" readonly. a slash. Thus "-R" means recovery and "-/R" readonly.
--help *-h* *--help* --help *-h* *--help* *-?*
-?
-h Give usage (help) message and exit. {not in Vi} -h Give usage (help) message and exit. {not in Vi}
See |info-message| about capturing the text. See |info-message| about capturing the text.
@ -510,11 +511,12 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
{not in Vi} {not in Vi}
*--clean* *--clean*
--clean Equal to "-u DEFAULTS -i NONE": --clean Equal to "-u DEFAULTS -U NONE -i NONE":
- initializations from files and environment variables is - initializations from files and environment variables is
skipped skipped
- the |defaults.vim| script is loaded, which implies - the |defaults.vim| script is loaded, which implies
'nocompatible': use Vim defaults 'nocompatible': use Vim defaults
- no |gvimrc| script is loaded
- no viminfo file is read or written - no viminfo file is read or written
- the home directory is excluded from 'runtimepath' - the home directory is excluded from 'runtimepath'
*-x* *-x*

View File

@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.0. Last change: 2018 Jan 31 *syntax.txt* For Vim version 8.0. Last change: 2018 Apr 30
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -4627,7 +4627,9 @@ in their own color.
runtime colors/evening.vim runtime colors/evening.vim
hi Statement ctermfg=Blue guifg=Blue hi Statement ctermfg=Blue guifg=Blue
< After the color scheme has been loaded the < Before the color scheme will be loaded the
|ColorSchemePre| autocommand event is triggered.
After the color scheme has been loaded the
|ColorScheme| autocommand event is triggered. |ColorScheme| autocommand event is triggered.
For info about writing a colorscheme file: > For info about writing a colorscheme file: >
:edit $VIMRUNTIME/colors/README.txt :edit $VIMRUNTIME/colors/README.txt

View File

@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.0. Last change: 2016 Oct 20 *tabpage.txt* For Vim version 8.0. Last change: 2018 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -286,8 +286,7 @@ LOOPING OVER TAB PAGES:
current tab page. current tab page.
{cmd} can contain '|' to concatenate several commands. {cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close tab pages or reorder them. {cmd} must not open or close tab pages or reorder them.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo| Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|
and |:lfdo| and |:lfdo|

View File

@ -294,6 +294,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'gfw' options.txt /*'gfw'* 'gfw' options.txt /*'gfw'*
'ghr' options.txt /*'ghr'* 'ghr' options.txt /*'ghr'*
'go' options.txt /*'go'* 'go' options.txt /*'go'*
'go-!' options.txt /*'go-!'*
'go-A' options.txt /*'go-A'* 'go-A' options.txt /*'go-A'*
'go-F' options.txt /*'go-F'* 'go-F' options.txt /*'go-F'*
'go-L' options.txt /*'go-L'* 'go-L' options.txt /*'go-L'*
@ -1087,8 +1088,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'termbidi' options.txt /*'termbidi'* 'termbidi' options.txt /*'termbidi'*
'termencoding' options.txt /*'termencoding'* 'termencoding' options.txt /*'termencoding'*
'termguicolors' options.txt /*'termguicolors'* 'termguicolors' options.txt /*'termguicolors'*
'termkey' options.txt /*'termkey'* 'termwinkey' options.txt /*'termwinkey'*
'termsize' options.txt /*'termsize'* 'termwinscroll' options.txt /*'termwinscroll'*
'termwinsize' options.txt /*'termwinsize'*
'terse' options.txt /*'terse'* 'terse' options.txt /*'terse'*
'textauto' options.txt /*'textauto'* 'textauto' options.txt /*'textauto'*
'textmode' options.txt /*'textmode'* 'textmode' options.txt /*'textmode'*
@ -1104,10 +1106,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'titlelen' options.txt /*'titlelen'* 'titlelen' options.txt /*'titlelen'*
'titleold' options.txt /*'titleold'* 'titleold' options.txt /*'titleold'*
'titlestring' options.txt /*'titlestring'* 'titlestring' options.txt /*'titlestring'*
'tk' options.txt /*'tk'*
'tl' options.txt /*'tl'* 'tl' options.txt /*'tl'*
'tm' options.txt /*'tm'* 'tm' options.txt /*'tm'*
'tms' options.txt /*'tms'*
'to' options.txt /*'to'* 'to' options.txt /*'to'*
'toolbar' options.txt /*'toolbar'* 'toolbar' options.txt /*'toolbar'*
'toolbariconsize' options.txt /*'toolbariconsize'* 'toolbariconsize' options.txt /*'toolbariconsize'*
@ -1128,6 +1128,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'ttyscroll' options.txt /*'ttyscroll'* 'ttyscroll' options.txt /*'ttyscroll'*
'ttytype' options.txt /*'ttytype'* 'ttytype' options.txt /*'ttytype'*
'tw' options.txt /*'tw'* 'tw' options.txt /*'tw'*
'twk' options.txt /*'twk'*
'tws' options.txt /*'tws'*
'twsl' options.txt /*'twsl'*
'tx' options.txt /*'tx'* 'tx' options.txt /*'tx'*
'uc' options.txt /*'uc'* 'uc' options.txt /*'uc'*
'udf' options.txt /*'udf'* 'udf' options.txt /*'udf'*
@ -1405,6 +1408,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
--ttyfail starting.txt /*--ttyfail* --ttyfail starting.txt /*--ttyfail*
--version starting.txt /*--version* --version starting.txt /*--version*
--windowid starting.txt /*--windowid* --windowid starting.txt /*--windowid*
-? starting.txt /*-?*
-A starting.txt /*-A* -A starting.txt /*-A*
-C starting.txt /*-C* -C starting.txt /*-C*
-D starting.txt /*-D* -D starting.txt /*-D*
@ -1931,11 +1935,18 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:AdaTagDir ft_ada.txt /*:AdaTagDir* :AdaTagDir ft_ada.txt /*:AdaTagDir*
:AdaTagFile ft_ada.txt /*:AdaTagFile* :AdaTagFile ft_ada.txt /*:AdaTagFile*
:AdaTypes ft_ada.txt /*:AdaTypes* :AdaTypes ft_ada.txt /*:AdaTypes*
:Arguments terminal.txt /*:Arguments*
:Break terminal.txt /*:Break*
:Clear terminal.txt /*:Clear*
:CompilerSet usr_41.txt /*:CompilerSet* :CompilerSet usr_41.txt /*:CompilerSet*
:Continue terminal.txt /*:Continue*
:DiffOrig diff.txt /*:DiffOrig* :DiffOrig diff.txt /*:DiffOrig*
:DoMatchParen pi_paren.txt /*:DoMatchParen* :DoMatchParen pi_paren.txt /*:DoMatchParen*
:Evaluate terminal.txt /*:Evaluate*
:Explore pi_netrw.txt /*:Explore* :Explore pi_netrw.txt /*:Explore*
:Finish terminal.txt /*:Finish*
:GLVS pi_getscript.txt /*:GLVS* :GLVS pi_getscript.txt /*:GLVS*
:Gdb terminal.txt /*:Gdb*
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* :GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
:GnatFind ft_ada.txt /*:GnatFind* :GnatFind ft_ada.txt /*:GnatFind*
:GnatPretty ft_ada.txt /*:GnatPretty* :GnatPretty ft_ada.txt /*:GnatPretty*
@ -1960,11 +1971,14 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:Ntree pi_netrw.txt /*:Ntree* :Ntree pi_netrw.txt /*:Ntree*
:Nw pi_netrw.txt /*:Nw* :Nw pi_netrw.txt /*:Nw*
:Nwrite pi_netrw.txt /*:Nwrite* :Nwrite pi_netrw.txt /*:Nwrite*
:Over terminal.txt /*:Over*
:P various.txt /*:P* :P various.txt /*:P*
:Pexplore pi_netrw.txt /*:Pexplore* :Pexplore pi_netrw.txt /*:Pexplore*
:Print various.txt /*:Print* :Print various.txt /*:Print*
:Program terminal.txt /*:Program*
:Rexplore pi_netrw.txt /*:Rexplore* :Rexplore pi_netrw.txt /*:Rexplore*
:RmVimball pi_vimball.txt /*:RmVimball* :RmVimball pi_vimball.txt /*:RmVimball*
:Run terminal.txt /*:Run*
:RustEmitAsm ft_rust.txt /*:RustEmitAsm* :RustEmitAsm ft_rust.txt /*:RustEmitAsm*
:RustEmitIr ft_rust.txt /*:RustEmitIr* :RustEmitIr ft_rust.txt /*:RustEmitIr*
:RustExpand ft_rust.txt /*:RustExpand* :RustExpand ft_rust.txt /*:RustExpand*
@ -1973,14 +1987,19 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:RustPlay ft_rust.txt /*:RustPlay* :RustPlay ft_rust.txt /*:RustPlay*
:RustRun ft_rust.txt /*:RustRun* :RustRun ft_rust.txt /*:RustRun*
:Sexplore pi_netrw.txt /*:Sexplore* :Sexplore pi_netrw.txt /*:Sexplore*
:Source terminal.txt /*:Source*
:Step terminal.txt /*:Step*
:Stop terminal.txt /*:Stop*
:TOhtml syntax.txt /*:TOhtml* :TOhtml syntax.txt /*:TOhtml*
:TarDiff pi_tar.txt /*:TarDiff* :TarDiff pi_tar.txt /*:TarDiff*
:Termdebug terminal.txt /*:Termdebug* :Termdebug terminal.txt /*:Termdebug*
:TermdebugCommand terminal.txt /*:TermdebugCommand*
:Texplore pi_netrw.txt /*:Texplore* :Texplore pi_netrw.txt /*:Texplore*
:UseVimball pi_vimball.txt /*:UseVimball* :UseVimball pi_vimball.txt /*:UseVimball*
:Vexplore pi_netrw.txt /*:Vexplore* :Vexplore pi_netrw.txt /*:Vexplore*
:VimballList pi_vimball.txt /*:VimballList* :VimballList pi_vimball.txt /*:VimballList*
:Vimuntar pi_tar.txt /*:Vimuntar* :Vimuntar pi_tar.txt /*:Vimuntar*
:Winbar terminal.txt /*:Winbar*
:X editing.txt /*:X* :X editing.txt /*:X*
:XMLent insert.txt /*:XMLent* :XMLent insert.txt /*:XMLent*
:XMLns insert.txt /*:XMLns* :XMLns insert.txt /*:XMLns*
@ -3182,6 +3201,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:unhide windows.txt /*:unhide* :unhide windows.txt /*:unhide*
:unl eval.txt /*:unl* :unl eval.txt /*:unl*
:unlet eval.txt /*:unlet* :unlet eval.txt /*:unlet*
:unlet-$ eval.txt /*:unlet-$*
:unlet-environment eval.txt /*:unlet-environment*
:unlo eval.txt /*:unlo* :unlo eval.txt /*:unlo*
:unlockvar eval.txt /*:unlockvar* :unlockvar eval.txt /*:unlockvar*
:unm map.txt /*:unm* :unm map.txt /*:unm*
@ -3511,6 +3532,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
@r eval.txt /*@r* @r eval.txt /*@r*
A insert.txt /*A* A insert.txt /*A*
ACL editing.txt /*ACL* ACL editing.txt /*ACL*
ANSI-C develop.txt /*ANSI-C*
ATTENTION usr_11.txt /*ATTENTION* ATTENTION usr_11.txt /*ATTENTION*
Abbreviations map.txt /*Abbreviations* Abbreviations map.txt /*Abbreviations*
Aleph options.txt /*Aleph* Aleph options.txt /*Aleph*
@ -3547,6 +3569,8 @@ BufWritePre autocmd.txt /*BufWritePre*
C change.txt /*C* C change.txt /*C*
C-editing tips.txt /*C-editing* C-editing tips.txt /*C-editing*
C-indenting indent.txt /*C-indenting* C-indenting indent.txt /*C-indenting*
C89 develop.txt /*C89*
C99 develop.txt /*C99*
COMSPEC starting.txt /*COMSPEC* COMSPEC starting.txt /*COMSPEC*
CR-used-for-NL pattern.txt /*CR-used-for-NL* CR-used-for-NL pattern.txt /*CR-used-for-NL*
CTRL-6 editing.txt /*CTRL-6* CTRL-6 editing.txt /*CTRL-6*
@ -3675,6 +3699,7 @@ CmdlineLeave autocmd.txt /*CmdlineLeave*
CmdwinEnter autocmd.txt /*CmdwinEnter* CmdwinEnter autocmd.txt /*CmdwinEnter*
CmdwinLeave autocmd.txt /*CmdwinLeave* CmdwinLeave autocmd.txt /*CmdwinLeave*
ColorScheme autocmd.txt /*ColorScheme* ColorScheme autocmd.txt /*ColorScheme*
ColorSchemePre autocmd.txt /*ColorSchemePre*
Command-line cmdline.txt /*Command-line* Command-line cmdline.txt /*Command-line*
Command-line-mode cmdline.txt /*Command-line-mode* Command-line-mode cmdline.txt /*Command-line-mode*
CompleteDone autocmd.txt /*CompleteDone* CompleteDone autocmd.txt /*CompleteDone*
@ -4589,6 +4614,7 @@ E951 pattern.txt /*E951*
E952 autocmd.txt /*E952* E952 autocmd.txt /*E952*
E953 eval.txt /*E953* E953 eval.txt /*E953*
E954 options.txt /*E954* E954 options.txt /*E954*
E955 eval.txt /*E955*
E96 diff.txt /*E96* E96 diff.txt /*E96*
E97 diff.txt /*E97* E97 diff.txt /*E97*
E98 diff.txt /*E98* E98 diff.txt /*E98*
@ -4600,6 +4626,7 @@ EncodingChanged autocmd.txt /*EncodingChanged*
Eterm syntax.txt /*Eterm* Eterm syntax.txt /*Eterm*
Ex intro.txt /*Ex* Ex intro.txt /*Ex*
Ex-mode intro.txt /*Ex-mode* Ex-mode intro.txt /*Ex-mode*
ExitPre autocmd.txt /*ExitPre*
Exuberant_ctags tagsrch.txt /*Exuberant_ctags* Exuberant_ctags tagsrch.txt /*Exuberant_ctags*
F motion.txt /*F* F motion.txt /*F*
FALSE eval.txt /*FALSE* FALSE eval.txt /*FALSE*
@ -4829,7 +4856,10 @@ TabNew autocmd.txt /*TabNew*
Tcl if_tcl.txt /*Tcl* Tcl if_tcl.txt /*Tcl*
TermChanged autocmd.txt /*TermChanged* TermChanged autocmd.txt /*TermChanged*
TermResponse autocmd.txt /*TermResponse* TermResponse autocmd.txt /*TermResponse*
Terminal-Job terminal.txt /*Terminal-Job*
Terminal-Normal terminal.txt /*Terminal-Normal*
Terminal-mode terminal.txt /*Terminal-mode* Terminal-mode terminal.txt /*Terminal-mode*
TerminalOpen autocmd.txt /*TerminalOpen*
TextChanged autocmd.txt /*TextChanged* TextChanged autocmd.txt /*TextChanged*
TextChangedI autocmd.txt /*TextChangedI* TextChangedI autocmd.txt /*TextChangedI*
TextChangedP autocmd.txt /*TextChangedP* TextChangedP autocmd.txt /*TextChangedP*
@ -5093,6 +5123,7 @@ asin() eval.txt /*asin()*
asm.vim syntax.txt /*asm.vim* asm.vim syntax.txt /*asm.vim*
asm68k syntax.txt /*asm68k* asm68k syntax.txt /*asm68k*
asmh8300.vim syntax.txt /*asmh8300.vim* asmh8300.vim syntax.txt /*asmh8300.vim*
assert-return eval.txt /*assert-return*
assert_beeps() eval.txt /*assert_beeps()* assert_beeps() eval.txt /*assert_beeps()*
assert_equal() eval.txt /*assert_equal()* assert_equal() eval.txt /*assert_equal()*
assert_equalfile() eval.txt /*assert_equalfile()* assert_equalfile() eval.txt /*assert_equalfile()*
@ -5257,6 +5288,7 @@ c_<C-Left> cmdline.txt /*c_<C-Left>*
c_<C-R> cmdline.txt /*c_<C-R>* c_<C-R> cmdline.txt /*c_<C-R>*
c_<C-R>_<C-A> cmdline.txt /*c_<C-R>_<C-A>* c_<C-R>_<C-A> cmdline.txt /*c_<C-R>_<C-A>*
c_<C-R>_<C-F> cmdline.txt /*c_<C-R>_<C-F>* c_<C-R>_<C-F> cmdline.txt /*c_<C-R>_<C-F>*
c_<C-R>_<C-L> cmdline.txt /*c_<C-R>_<C-L>*
c_<C-R>_<C-O> cmdline.txt /*c_<C-R>_<C-O>* c_<C-R>_<C-O> cmdline.txt /*c_<C-R>_<C-O>*
c_<C-R>_<C-P> cmdline.txt /*c_<C-R>_<C-P>* c_<C-R>_<C-P> cmdline.txt /*c_<C-R>_<C-P>*
c_<C-R>_<C-R> cmdline.txt /*c_<C-R>_<C-R>* c_<C-R>_<C-R> cmdline.txt /*c_<C-R>_<C-R>*
@ -5305,6 +5337,7 @@ c_CTRL-R cmdline.txt /*c_CTRL-R*
c_CTRL-R_= cmdline.txt /*c_CTRL-R_=* c_CTRL-R_= cmdline.txt /*c_CTRL-R_=*
c_CTRL-R_CTRL-A cmdline.txt /*c_CTRL-R_CTRL-A* c_CTRL-R_CTRL-A cmdline.txt /*c_CTRL-R_CTRL-A*
c_CTRL-R_CTRL-F cmdline.txt /*c_CTRL-R_CTRL-F* c_CTRL-R_CTRL-F cmdline.txt /*c_CTRL-R_CTRL-F*
c_CTRL-R_CTRL-L cmdline.txt /*c_CTRL-R_CTRL-L*
c_CTRL-R_CTRL-O cmdline.txt /*c_CTRL-R_CTRL-O* c_CTRL-R_CTRL-O cmdline.txt /*c_CTRL-R_CTRL-O*
c_CTRL-R_CTRL-P cmdline.txt /*c_CTRL-R_CTRL-P* c_CTRL-R_CTRL-P cmdline.txt /*c_CTRL-R_CTRL-P*
c_CTRL-R_CTRL-R cmdline.txt /*c_CTRL-R_CTRL-R* c_CTRL-R_CTRL-R cmdline.txt /*c_CTRL-R_CTRL-R*
@ -6106,6 +6139,7 @@ fork os_unix.txt /*fork*
form.vim syntax.txt /*form.vim* form.vim syntax.txt /*form.vim*
format-bullet-list tips.txt /*format-bullet-list* format-bullet-list tips.txt /*format-bullet-list*
format-comments change.txt /*format-comments* format-comments change.txt /*format-comments*
format-formatexpr change.txt /*format-formatexpr*
formatting change.txt /*formatting* formatting change.txt /*formatting*
formfeed intro.txt /*formfeed* formfeed intro.txt /*formfeed*
fortran.vim syntax.txt /*fortran.vim* fortran.vim syntax.txt /*fortran.vim*
@ -6496,6 +6530,7 @@ g:tar_nomax pi_tar.txt /*g:tar_nomax*
g:tar_readoptions pi_tar.txt /*g:tar_readoptions* g:tar_readoptions pi_tar.txt /*g:tar_readoptions*
g:tar_secure pi_tar.txt /*g:tar_secure* g:tar_secure pi_tar.txt /*g:tar_secure*
g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions* g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions*
g:terminal_ansi_colors terminal.txt /*g:terminal_ansi_colors*
g:tex_comment_nospell syntax.txt /*g:tex_comment_nospell* g:tex_comment_nospell syntax.txt /*g:tex_comment_nospell*
g:tex_conceal syntax.txt /*g:tex_conceal* g:tex_conceal syntax.txt /*g:tex_conceal*
g:tex_fast syntax.txt /*g:tex_fast* g:tex_fast syntax.txt /*g:tex_fast*
@ -6594,6 +6629,7 @@ getmatches() eval.txt /*getmatches()*
getpid() eval.txt /*getpid()* getpid() eval.txt /*getpid()*
getpos() eval.txt /*getpos()* getpos() eval.txt /*getpos()*
getqflist() eval.txt /*getqflist()* getqflist() eval.txt /*getqflist()*
getqflist-examples quickfix.txt /*getqflist-examples*
getreg() eval.txt /*getreg()* getreg() eval.txt /*getreg()*
getregtype() eval.txt /*getregtype()* getregtype() eval.txt /*getregtype()*
getscript pi_getscript.txt /*getscript* getscript pi_getscript.txt /*getscript*
@ -6606,6 +6642,7 @@ gettabinfo() eval.txt /*gettabinfo()*
gettabvar() eval.txt /*gettabvar()* gettabvar() eval.txt /*gettabvar()*
gettabwinvar() eval.txt /*gettabwinvar()* gettabwinvar() eval.txt /*gettabwinvar()*
getwininfo() eval.txt /*getwininfo()* getwininfo() eval.txt /*getwininfo()*
getwinpos() eval.txt /*getwinpos()*
getwinposx() eval.txt /*getwinposx()* getwinposx() eval.txt /*getwinposx()*
getwinposy() eval.txt /*getwinposy()* getwinposy() eval.txt /*getwinposy()*
getwinvar() eval.txt /*getwinvar()* getwinvar() eval.txt /*getwinvar()*
@ -7852,8 +7889,8 @@ option-backslash options.txt /*option-backslash*
option-list quickref.txt /*option-list* option-list quickref.txt /*option-list*
option-summary options.txt /*option-summary* option-summary options.txt /*option-summary*
option-window options.txt /*option-window* option-window options.txt /*option-window*
option_restore() eval.txt /*option_restore()* option_restore() todo.txt /*option_restore()*
option_save() eval.txt /*option_save()* option_save() todo.txt /*option_save()*
options options.txt /*options* options options.txt /*options*
options-changed version5.txt /*options-changed* options-changed version5.txt /*options-changed*
options-in-terminal terminal.txt /*options-in-terminal* options-in-terminal terminal.txt /*options-in-terminal*
@ -8331,6 +8368,7 @@ setloclist() eval.txt /*setloclist()*
setmatches() eval.txt /*setmatches()* setmatches() eval.txt /*setmatches()*
setpos() eval.txt /*setpos()* setpos() eval.txt /*setpos()*
setqflist() eval.txt /*setqflist()* setqflist() eval.txt /*setqflist()*
setqflist-examples quickfix.txt /*setqflist-examples*
setreg() eval.txt /*setreg()* setreg() eval.txt /*setreg()*
settabvar() eval.txt /*settabvar()* settabvar() eval.txt /*settabvar()*
settabwinvar() eval.txt /*settabwinvar()* settabwinvar() eval.txt /*settabwinvar()*
@ -8915,6 +8953,7 @@ term_dumpdiff() eval.txt /*term_dumpdiff()*
term_dumpload() eval.txt /*term_dumpload()* term_dumpload() eval.txt /*term_dumpload()*
term_dumpwrite() eval.txt /*term_dumpwrite()* term_dumpwrite() eval.txt /*term_dumpwrite()*
term_getaltscreen() eval.txt /*term_getaltscreen()* term_getaltscreen() eval.txt /*term_getaltscreen()*
term_getansicolors() eval.txt /*term_getansicolors()*
term_getattr() eval.txt /*term_getattr()* term_getattr() eval.txt /*term_getattr()*
term_getcursor() eval.txt /*term_getcursor()* term_getcursor() eval.txt /*term_getcursor()*
term_getjob() eval.txt /*term_getjob()* term_getjob() eval.txt /*term_getjob()*
@ -8927,6 +8966,9 @@ term_gettty() eval.txt /*term_gettty()*
term_list() eval.txt /*term_list()* term_list() eval.txt /*term_list()*
term_scrape() eval.txt /*term_scrape()* term_scrape() eval.txt /*term_scrape()*
term_sendkeys() eval.txt /*term_sendkeys()* term_sendkeys() eval.txt /*term_sendkeys()*
term_setansicolors() eval.txt /*term_setansicolors()*
term_setkill() eval.txt /*term_setkill()*
term_setrestore() eval.txt /*term_setrestore()*
term_setsize() eval.txt /*term_setsize()* term_setsize() eval.txt /*term_setsize()*
term_start() eval.txt /*term_start()* term_start() eval.txt /*term_start()*
term_wait() eval.txt /*term_wait()* term_wait() eval.txt /*term_wait()*
@ -8944,8 +8986,13 @@ termdebug-example terminal.txt /*termdebug-example*
termdebug-starting terminal.txt /*termdebug-starting* termdebug-starting terminal.txt /*termdebug-starting*
termdebug-stepping terminal.txt /*termdebug-stepping* termdebug-stepping terminal.txt /*termdebug-stepping*
termdebug-variables terminal.txt /*termdebug-variables* termdebug-variables terminal.txt /*termdebug-variables*
termdebug_popup terminal.txt /*termdebug_popup*
termdebug_wide terminal.txt /*termdebug_wide*
terminal terminal.txt /*terminal* terminal terminal.txt /*terminal*
terminal-api terminal.txt /*terminal-api*
terminal-client-server terminal.txt /*terminal-client-server*
terminal-colors os_unix.txt /*terminal-colors* terminal-colors os_unix.txt /*terminal-colors*
terminal-communication terminal.txt /*terminal-communication*
terminal-cursor-style terminal.txt /*terminal-cursor-style* terminal-cursor-style terminal.txt /*terminal-cursor-style*
terminal-debug terminal.txt /*terminal-debug* terminal-debug terminal.txt /*terminal-debug*
terminal-diff terminal.txt /*terminal-diff* terminal-diff terminal.txt /*terminal-diff*
@ -8959,9 +9006,11 @@ terminal-options term.txt /*terminal-options*
terminal-output-codes term.txt /*terminal-output-codes* terminal-output-codes term.txt /*terminal-output-codes*
terminal-resizing terminal.txt /*terminal-resizing* terminal-resizing terminal.txt /*terminal-resizing*
terminal-screendump terminal.txt /*terminal-screendump* terminal-screendump terminal.txt /*terminal-screendump*
terminal-session terminal.txt /*terminal-session*
terminal-size-color terminal.txt /*terminal-size-color* terminal-size-color terminal.txt /*terminal-size-color*
terminal-special-keys terminal.txt /*terminal-special-keys* terminal-special-keys terminal.txt /*terminal-special-keys*
terminal-testing terminal.txt /*terminal-testing* terminal-testing terminal.txt /*terminal-testing*
terminal-to-job terminal.txt /*terminal-to-job*
terminal-typing terminal.txt /*terminal-typing* terminal-typing terminal.txt /*terminal-typing*
terminal-unix terminal.txt /*terminal-unix* terminal-unix terminal.txt /*terminal-unix*
terminal-use terminal.txt /*terminal-use* terminal-use terminal.txt /*terminal-use*
@ -9033,6 +9082,7 @@ tolower() eval.txt /*tolower()*
toolbar-icon gui.txt /*toolbar-icon* toolbar-icon gui.txt /*toolbar-icon*
toupper() eval.txt /*toupper()* toupper() eval.txt /*toupper()*
tr() eval.txt /*tr()* tr() eval.txt /*tr()*
trim() eval.txt /*trim()*
trojan-horse starting.txt /*trojan-horse* trojan-horse starting.txt /*trojan-horse*
true-variable eval.txt /*true-variable* true-variable eval.txt /*true-variable*
trunc() eval.txt /*trunc()* trunc() eval.txt /*trunc()*
@ -9693,6 +9743,7 @@ zz scroll.txt /*zz*
{Visual} intro.txt /*{Visual}* {Visual} intro.txt /*{Visual}*
{address} cmdline.txt /*{address}* {address} cmdline.txt /*{address}*
{arglist} editing.txt /*{arglist}* {arglist} editing.txt /*{arglist}*
{bufname} windows.txt /*{bufname}*
{char1-char2} intro.txt /*{char1-char2}* {char1-char2} intro.txt /*{char1-char2}*
{event} autocmd.txt /*{event}* {event} autocmd.txt /*{event}*
{file} editing.txt /*{file}* {file} editing.txt /*{file}*

View File

@ -1,4 +1,4 @@
*tagsrch.txt* For Vim version 8.0. Last change: 2017 Oct 20 *tagsrch.txt* For Vim version 8.0. Last change: 2018 May 04
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -36,12 +36,12 @@ An easy way back is with the CTRL-T command. Also read about the tag stack
below. below.
*:ta* *:tag* *E426* *E429* *:ta* *:tag* *E426* *E429*
:[count]ta[g][!] {ident} :[count]ta[g][!] {name}
Jump to the definition of {ident}, using the Jump to the definition of {name}, using the
information in the tags file(s). Put {ident} in the information in the tags file(s). Put {name} in the
tag stack. See |tag-!| for [!]. tag stack. See |tag-!| for [!].
{ident} can be a regexp pattern, see |tag-regexp|. {name} can be a regexp pattern, see |tag-regexp|.
When there are several matching tags for {ident}, jump When there are several matching tags for {name}, jump
to the [count] one. When [count] is omitted the to the [count] one. When [count] is omitted the
first one is jumped to. See |tag-matchlist| for first one is jumped to. See |tag-matchlist| for
jumping to other matching tags. jumping to other matching tags.
@ -49,16 +49,16 @@ below.
g<LeftMouse> *g<LeftMouse>* g<LeftMouse> *g<LeftMouse>*
<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* <C-LeftMouse> *<C-LeftMouse>* *CTRL-]*
CTRL-] Jump to the definition of the keyword under the CTRL-] Jump to the definition of the keyword under the
cursor. Same as ":tag {ident}", where {ident} is the cursor. Same as ":tag {name}", where {name} is the
keyword under or after cursor. keyword under or after cursor.
When there are several matching tags for {ident}, jump When there are several matching tags for {name}, jump
to the [count] one. When no [count] is given the to the [count] one. When no [count] is given the
first one is jumped to. See |tag-matchlist| for first one is jumped to. See |tag-matchlist| for
jumping to other matching tags. jumping to other matching tags.
{Vi: identifier after the cursor} {Vi: identifier after the cursor}
*v_CTRL-]* *v_CTRL-]*
{Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that {Visual}CTRL-] Same as ":tag {name}", where {name} is the text that
is highlighted. {not in Vi} is highlighted. {not in Vi}
*telnet-CTRL-]* *telnet-CTRL-]*
@ -82,7 +82,7 @@ When there are multiple matches for a tag, this priority is used:
Note that when the current file changes, the priority list is mostly not Note that when the current file changes, the priority list is mostly not
changed, to avoid confusion when using ":tnext". It is changed when using changed, to avoid confusion when using ":tnext". It is changed when using
":tag {ident}". ":tag {name}".
The ignore-case matches are not found for a ":tag" command when: The ignore-case matches are not found for a ":tag" command when:
- the 'ignorecase' option is off and 'tagcase' is "followic" - the 'ignorecase' option is off and 'tagcase' is "followic"
@ -167,7 +167,7 @@ You can get from main to FuncA by using CTRL-] on the call to FuncA. Then
you can CTRL-] to get to FuncC. If you now want to go back to main you can you can CTRL-] to get to FuncC. If you now want to go back to main you can
use CTRL-T twice. Then you can CTRL-] to FuncB. use CTRL-T twice. Then you can CTRL-] to FuncB.
If you issue a ":ta {ident}" or CTRL-] command, this tag is inserted at the If you issue a ":ta {name}" or CTRL-] command, this tag is inserted at the
current position in the stack. If the stack was full (it can hold up to 20 current position in the stack. If the stack was full (it can hold up to 20
entries), the oldest entry is deleted and the older entries shift one entries), the oldest entry is deleted and the older entries shift one
position up (their index number is decremented by one). If the last used position up (their index number is decremented by one). If the last used
@ -191,14 +191,14 @@ between them. Note that these commands don't change the tag stack, they keep
the same entry. the same entry.
*:ts* *:tselect* *:ts* *:tselect*
:ts[elect][!] [ident] List the tags that match [ident], using the :ts[elect][!] [name] List the tags that match [name], using the
information in the tags file(s). information in the tags file(s).
When [ident] is not given, the last tag name from the When [name] is not given, the last tag name from the
tag stack is used. tag stack is used.
See |tag-!| for [!]. See |tag-!| for [!].
With a '>' in the first column is indicated which is With a '>' in the first column is indicated which is
the current position in the list (if there is one). the current position in the list (if there is one).
[ident] can be a regexp pattern, see |tag-regexp|. [name] can be a regexp pattern, see |tag-regexp|.
See |tag-priority| for the priorities used in the See |tag-priority| for the priorities used in the
listing. {not in Vi} listing. {not in Vi}
Example output: Example output:
@ -226,7 +226,7 @@ the same entry.
type 'q' and enter the number. type 'q' and enter the number.
*:sts* *:stselect* *:sts* *:stselect*
:sts[elect][!] [ident] Does ":tselect[!] [ident]" and splits the window for :sts[elect][!] [name] Does ":tselect[!] [name]" and splits the window for
the selected tag. {not in Vi} the selected tag. {not in Vi}
*g]* *g]*
@ -238,11 +238,11 @@ g] Like CTRL-], but use ":tselect" instead of ":tag".
identifier. {not in Vi} identifier. {not in Vi}
*:tj* *:tjump* *:tj* *:tjump*
:tj[ump][!] [ident] Like ":tselect", but jump to the tag directly when :tj[ump][!] [name] Like ":tselect", but jump to the tag directly when
there is only one match. {not in Vi} there is only one match. {not in Vi}
*:stj* *:stjump* *:stj* *:stjump*
:stj[ump][!] [ident] Does ":tjump[!] [ident]" and splits the window for the :stj[ump][!] [name] Does ":tjump[!] [name]" and splits the window for the
selected tag. {not in Vi} selected tag. {not in Vi}
*g_CTRL-]* *g_CTRL-]*
@ -277,9 +277,9 @@ g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag".
in Vi} in Vi}
*:lt* *:ltag* *:lt* *:ltag*
:lt[ag][!] [ident] Jump to tag [ident] and add the matching tags to a new :lt[ag][!] [name] Jump to tag [name] and add the matching tags to a new
location list for the current window. [ident] can be location list for the current window. [name] can be
a regexp pattern, see |tag-regexp|. When [ident] is a regexp pattern, see |tag-regexp|. When [name] is
not given, the last tag name from the tag stack is not given, the last tag name from the tag stack is
used. The search pattern to locate the tag line is used. The search pattern to locate the tag line is
prefixed with "\V" to escape all the special prefixed with "\V" to escape all the special
@ -311,12 +311,12 @@ the same as above, with a "p" prepended.
{not available when compiled without the |+quickfix| feature} {not available when compiled without the |+quickfix| feature}
*:pts* *:ptselect* *:pts* *:ptselect*
:pts[elect][!] [ident] Does ":tselect[!] [ident]" and shows the new tag in a :pts[elect][!] [name] Does ":tselect[!] [name]" and shows the new tag in a
"Preview" window. See |:ptag| for more info. "Preview" window. See |:ptag| for more info.
{not in Vi} {not in Vi}
*:ptj* *:ptjump* *:ptj* *:ptjump*
:ptj[ump][!] [ident] Does ":tjump[!] [ident]" and shows the new tag in a :ptj[ump][!] [name] Does ":tjump[!] [name]" and shows the new tag in a
"Preview" window. See |:ptag| for more info. "Preview" window. See |:ptag| for more info.
{not in Vi} {not in Vi}

View File

@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.0. Last change: 2018 Feb 20 *terminal.txt* For Vim version 8.0. Last change: 2018 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -20,14 +20,19 @@ If the result is "1" you have it.
Terminal Modes |Terminal-mode| Terminal Modes |Terminal-mode|
Cursor style |terminal-cursor-style| Cursor style |terminal-cursor-style|
Special keys |terminal-special-keys| Special keys |terminal-special-keys|
Session |terminal-session|
Unix |terminal-unix| Unix |terminal-unix|
MS-Windows |terminal-ms-windows| MS-Windows |terminal-ms-windows|
2. Remote testing |terminal-testing| 2. Terminal communication |terminal-communication|
3. Diffing screen dumps |terminal-diff| Vim to job: term_sendkeys() |terminal-to-job|
Job to Vim: JSON API |terminal-api|
Using the client-server feature |terminal-client-server|
3. Remote testing |terminal-testing|
4. Diffing screen dumps |terminal-diff|
Writing a screen dump test for Vim |terminal-dumptest| Writing a screen dump test for Vim |terminal-dumptest|
Creating a screen dump |terminal-screendump| Creating a screen dump |terminal-screendump|
Comparing screen dumps |terminal-diffscreendump| Comparing screen dumps |terminal-diffscreendump|
4. Debugging |terminal-debug| 5. Debugging |terminal-debug|
Starting |termdebug-starting| Starting |termdebug-starting|
Example session |termdebug-example| Example session |termdebug-example|
Stepping through code |termdebug-stepping| Stepping through code |termdebug-stepping|
@ -67,6 +72,7 @@ See |CTRL-W| for more commands.
Special in the terminal window: *CTRL-W_.* *CTRL-W_N* Special in the terminal window: *CTRL-W_.* *CTRL-W_N*
CTRL-W . send a CTRL-W to the job in the terminal CTRL-W . send a CTRL-W to the job in the terminal
CTRL-W CTRL-\ send a CTRL-\ to the job in the terminal
CTRL-W N go to Terminal-Normal mode, see |Terminal-mode| CTRL-W N go to Terminal-Normal mode, see |Terminal-mode|
CTRL-\ CTRL-N go to Terminal-Normal mode, see |Terminal-mode| CTRL-\ CTRL-N go to Terminal-Normal mode, see |Terminal-mode|
CTRL-W " {reg} paste register {reg} *CTRL-W_quote* CTRL-W " {reg} paste register {reg} *CTRL-W_quote*
@ -74,16 +80,16 @@ Special in the terminal window: *CTRL-W_.* *CTRL-W_N*
evaluating an expression. evaluating an expression.
CTRL-W CTRL-C ends the job, see below |t_CTRL-W_CTRL-C| CTRL-W CTRL-C ends the job, see below |t_CTRL-W_CTRL-C|
See option 'termkey' for specifying another key instead of CTRL-W that See option 'termwinkey' for specifying another key instead of CTRL-W that
will work like CTRL-W. However, typing 'termkey' twice sends 'termkey' to will work like CTRL-W. However, typing 'termwinkey' twice sends 'termwinkey'
the job. For example: to the job. For example:
'termkey' CTRL-W move focus to the next window 'termwinkey' CTRL-W move focus to the next window
'termkey' : enter an Ex command 'termwinkey' : enter an Ex command
'termkey' 'termkey' send 'termkey' to the job in the terminal 'termwinkey' 'termwinkey' send 'termwinkey' to the job in the terminal
'termkey' . send a CTRL-W to the job in the terminal 'termwinkey' . send a CTRL-W to the job in the terminal
'termkey' N go to terminal Normal mode, see below 'termwinkey' N go to terminal Normal mode, see below
'termkey' CTRL-N same as CTRL-W N 'termwinkey' CTRL-N same as CTRL-W N
'termkey' CTRL-C same as |t_CTRL-W_CTRL-C| 'termwinkey' CTRL-C same as |t_CTRL-W_CTRL-C|
*t_CTRL-\_CTRL-N* *t_CTRL-\_CTRL-N*
The special key combination CTRL-\ CTRL-N can be used to switch to Normal The special key combination CTRL-\ CTRL-N can be used to switch to Normal
mode, just like this works in any other mode. mode, just like this works in any other mode.
@ -98,9 +104,14 @@ themselves (like Vim does).
To change the keys you type use terminal mode mappings, see |:tmap|. To change the keys you type use terminal mode mappings, see |:tmap|.
These are defined like any mapping, but apply only when typing keys that are These are defined like any mapping, but apply only when typing keys that are
sent to the job running in the terminal. For example, to make Escape switch sent to the job running in the terminal. For example, to make F1 switch
to Terminal-Normal mode: > to Terminal-Normal mode: >
tnoremap <F1> <C-W>N
You can use Esc, but you need to make sure it won't cause other keys to
break: >
tnoremap <Esc> <C-W>N tnoremap <Esc> <C-W>N
set notimeout ttimeout timeoutlen=100
< *options-in-terminal* < *options-in-terminal*
After opening the terminal window and setting 'buftype' to "terminal" the After opening the terminal window and setting 'buftype' to "terminal" the
BufWinEnter autocommand event is triggered. This makes it possible to set BufWinEnter autocommand event is triggered. This makes it possible to set
@ -114,7 +125,7 @@ when 'balloonevalterm' is enabled.
Size and color ~ Size and color ~
*terminal-size-color* *terminal-size-color*
See option 'termsize' for controlling the size of the terminal window. See option 'termwinsize' for controlling the size of the terminal window.
(TODO: scrolling when the terminal is larger than the window) (TODO: scrolling when the terminal is larger than the window)
The job running in the terminal can change the colors. The default foreground The job running in the terminal can change the colors. The default foreground
@ -126,6 +137,16 @@ terminal window will start with a white or black background.
To use a different color the Terminal highlight group can be used, for To use a different color the Terminal highlight group can be used, for
example: > example: >
hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue
<
*g:terminal_ansi_colors*
In GUI mode or with 'termguicolors', the 16 ANSI colors used by default in new
terminal windows may be configured using the variable
`g:terminal_ansi_colors`, which should be a list of 16 color names or
hexadecimal color codes, similar to those accepted by |highlight-guifg|. When
not using GUI colors, the terminal window always uses the 16 ANSI colors of
the underlying terminal.
The |term_setansicolors()| function can be used to change the colors, and
|term_getansicolors()| to get the currently used colors.
Syntax ~ Syntax ~
@ -139,6 +160,13 @@ Syntax ~
if [command] is NONE no job is started, the pty of the if [command] is NONE no job is started, the pty of the
terminal can be used by a command like gdb. terminal can be used by a command like gdb.
If [command] is missing the default behavior is to
close the terminal when the shell exits. This can be
changed with the ++noclose argument.
If [command] is present the default behavior is to
keep the terminal open in Terminal-Normal mode. This
can be changed with the ++close argument.
A new buffer will be created, using [command] or A new buffer will be created, using [command] or
'shell' as the name, prefixed with a "!". If a buffer 'shell' as the name, prefixed with a "!". If a buffer
by this name already exists a number is added in by this name already exists a number is added in
@ -154,15 +182,25 @@ Syntax ~
Supported [options] are: Supported [options] are:
++close The terminal window will close ++close The terminal window will close
automatically when the job terminates. automatically when the job terminates.
++noclose The terminal window will NOT close
automatically when the job terminates.
++open When the job terminates and no window ++open When the job terminates and no window
shows it, a window will be opened. shows it, a window will be opened.
Note that this can be interruptive. Note that this can be interruptive.
The last of ++close, ++noclose and ++open
matters and rules out earlier arguments.
++curwin Open the terminal in the current ++curwin Open the terminal in the current
window, do not split the current window, do not split the current
window. Fails if the current buffer window. Fails if the current buffer
cannot be |abandon|ed. cannot be |abandon|ed.
++hidden Open the terminal in a hidden buffer, ++hidden Open the terminal in a hidden buffer,
no window will be used. no window will be used.
++norestore Do not include this terminal window
in a session file.
++kill={how} When trying to close the terminal
window kill the job with {how}. See
|term_setkill()| for the values.
++rows={height} Use {height} for the terminal window ++rows={height} Use {height} for the terminal window
height. If the terminal uses the full height. If the terminal uses the full
Vim height (no window above or below Vim height (no window above or below
@ -186,8 +224,12 @@ Syntax ~
If you want to use more options use the |term_start()| If you want to use more options use the |term_start()|
function. function.
When the buffer associated with the terminal is unloaded or wiped out the job When the buffer associated with the terminal is forcibly unloaded or wiped out
is killed, similar to calling `job_stop(job, "kill")` the job is killed, similar to calling `job_stop(job, "kill")` .
Closing the window normally results in |E947|. When a kill method was set
with "++kill={how}" or |term_setkill()| then closing the window will use that
way to kill or interrupt the job. For example: >
:term ++kill=term tail -f /tmp/log
So long as the job is running the window behaves like it contains a modified So long as the job is running the window behaves like it contains a modified
buffer. Trying to close the window with `CTRL-W :quit` fails. When using buffer. Trying to close the window with `CTRL-W :quit` fails. When using
@ -227,39 +269,41 @@ Resizing ~
*terminal-resizing* *terminal-resizing*
The size of the terminal can be in one of three modes: The size of the terminal can be in one of three modes:
1. The 'termsize' option is empty: The terminal size follows the window size. 1. The 'termwinsize' option is empty: The terminal size follows the window
The minimal size is 2 screen lines with 10 cells. size. The minimal size is 2 screen lines with 10 cells.
2. The 'termsize' option is "rows*cols", where "rows" is the minimal number of 2. The 'termwinsize' option is "rows*cols", where "rows" is the minimal number
screen rows and "cols" is the minimal number of cells. of screen rows and "cols" is the minimal number of cells.
3. The 'termsize' option is "rowsXcols" (where the x is upper or lower case). 3. The 'termwinsize' option is "rowsXcols" (where the x is upper or lower
The terminal size is fixed to the specified number of screen lines and case). The terminal size is fixed to the specified number of screen lines
cells. If the window is bigger there will be unused empty space. and cells. If the window is bigger there will be unused empty space.
If the window is smaller than the terminal size, only part of the terminal can If the window is smaller than the terminal size, only part of the terminal can
be seen (the lower-left part). be seen (the lower-left part).
The |term_getsize()| function can be used to get the current size of the The |term_getsize()| function can be used to get the current size of the
terminal. |term_setsize()| can be used only when in the first or second mode, terminal. |term_setsize()| can be used only when in the first or second mode,
not when 'termsize' is "rowsXcols". not when 'termwinsize' is "rowsXcols".
Terminal-Job and Terminal-Normal mode ~ Terminal-Job and Terminal-Normal mode ~
*Terminal-mode* *Terminal-mode* *Terminal-Job*
When the job is running the contents of the terminal is under control of the When the job is running the contents of the terminal is under control of the
job. That includes the cursor position. Typed keys are sent to the job. job. That includes the cursor position. Typed keys are sent to the job.
The terminal contents can change at any time. This is called Terminal-Job The terminal contents can change at any time. This is called Terminal-Job
mode. mode.
Use CTRL-W N (or 'termkey' N) to switch to Terminal-Normal mode. Now the Use CTRL-W N (or 'termwinkey' N) to switch to Terminal-Normal mode. Now the
contents of the terminal window is under control of Vim, the job output is contents of the terminal window is under control of Vim, the job output is
suspended. CTRL-\ CTRL-N does the same. suspended. CTRL-\ CTRL-N does the same.
Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by
|term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are. |term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are.
*E946* It is not possible to enter Insert mode from Terminal-Job mode.
*Terminal-Normal* *E946*
In Terminal-Normal mode you can move the cursor around with the usual Vim In Terminal-Normal mode you can move the cursor around with the usual Vim
commands, Visually mark text, yank text, etc. But you cannot change the commands, Visually mark text, yank text, etc. But you cannot change the
contents of the buffer. The commands that would start insert mode, such as contents of the buffer. The commands that would start insert mode, such as
@ -270,7 +314,10 @@ In Terminal-Normal mode the statusline and window title show "(Terminal)". If
the job ends while in Terminal-Normal mode this changes to the job ends while in Terminal-Normal mode this changes to
"(Terminal-finished)". "(Terminal-finished)".
It is not possible to enter Insert mode from Terminal-Job mode. When the job outputs lines in the terminal, such that the contents scrolls off
the top, those lines are remembered and can be seen in Terminal-Normal mode.
The number of lines is limited by the 'termwinscroll' option. When going over
this limit, the first 10% of the scrolled lines are deleted and are lost.
Cursor style ~ Cursor style ~
@ -286,6 +333,22 @@ is inverted. Since Vim cannot detect this, the terminal window cursor
blinking will also be inverted. blinking will also be inverted.
Session ~
*terminal-session*
A terminal window will be restored when using a session file, if possible and
wanted.
If "terminal" was removed from 'sessionoptions' then no terminal windows will
be restored.
If the job in the terminal was finished the window will not be restored.
If the terminal can be restored, the command that was used to open it will be
used again. To change this use the |term_setrestore()| function. This can
also be used to not restore a specific terminal by setting the command to
"NONE".
Special keys ~ Special keys ~
*terminal-special-keys* *terminal-special-keys*
Since the terminal emulator simulates an xterm, only escape sequences that Since the terminal emulator simulates an xterm, only escape sequences that
@ -305,22 +368,15 @@ On Unix a pty is used to make it possible to run all kinds of commands. You
can even run Vim in the terminal! That's used for debugging, see below. can even run Vim in the terminal! That's used for debugging, see below.
Environment variables are used to pass information to the running job: Environment variables are used to pass information to the running job:
TERM name of the terminal, 'term' TERM the name of the terminal, from the 'term' option or
$TERM in the GUI; falls back to "xterm" if it does not
start with "xterm"
ROWS number of rows in the terminal initially ROWS number of rows in the terminal initially
LINES same as ROWS LINES same as ROWS
COLUMNS number of columns in the terminal initially COLUMNS number of columns in the terminal initially
COLORS number of colors, 't_Co' (256*256*256 in the GUI) COLORS number of colors, 't_Co' (256*256*256 in the GUI)
VIM_SERVERNAME v:servername VIM_SERVERNAME v:servername
The |client-server| feature can be used to communicate with the Vim instance
where the job was started. This only works when v:servername is not empty.
If needed you can set it with: >
call remote_startserver('vim-server')
In the job you can then do something like: >
vim --servername $VIM_SERVERNAME --remote +123 some_file.c
This will open the file "some_file.c" and put the cursor on line 123.
MS-Windows ~ MS-Windows ~
*terminal-ms-windows* *terminal-ms-windows*
@ -346,7 +402,113 @@ Environment variables are used to pass information to the running job:
VIM_SERVERNAME v:servername VIM_SERVERNAME v:servername
============================================================================== ==============================================================================
2. Remote testing *terminal-testing* 2. Terminal communication *terminal-communication*
There are several ways to communicate with the job running in a terminal:
- Use |term_sendkeys()| to send text and escape sequences from Vim to the job.
- Use the JSON API to send encoded commands from the job to Vim.
- Use the |client-server| mechanism. This works on machines with an X server
and on MS-Windows.
Vim to job: term_sendkeys() ~
*terminal-to-job*
This allows for remote controlling the job running in the terminal. It is a
one-way mechanism. The job can update the display to signal back to Vim.
For example, if a shell is running in a terminal, you can do: >
call term_sendkeys(buf, "ls *.java\<CR>")
This requires for the job to be in the right state where it will do the right
thing when receiving the keys. For the above example, the shell must be
waiting for a command to be typed.
For a job that was written for the purpose, you can use the JSON API escape
sequence in the other direction. E.g.: >
call term_sendkeys(buf, "\<Esc>]51;["response"]\x07")
Job to Vim: JSON API ~
*terminal-api*
The job can send JSON to Vim, using a special escape sequence. The JSON
encodes a command that Vim understands. Example of such a message: >
<Esc>]51;["drop", "README.md"]<07>
The body is always a list, making it easy to find the end: ]<07>.
The <Esc>]51;msg<07> sequence is reserved by xterm for "Emacs shell", which is
similar to what we are doing here.
Currently supported commands:
call {funcname} {argument}
Call a user defined function with {argument}.
The function is called with two arguments: the buffer number
of the terminal and {argument}, the decoded JSON argument.
The function name must start with "Tapi_" to avoid
accidentally calling a function not meant to be used for the
terminal API
The user function should sanity check the argument.
The function can use |term_sendkeys()| to send back a reply.
Example in JSON: >
["call", "Tapi_Impression", ["play", 14]]
< Calls a function defined like this: >
function Tapi_Impression(bufnum, arglist)
if len(a:arglist) == 2
echomsg "impression " . a:arglist[0]
echomsg "count " . a:arglist[1]
endif
endfunc
< Output from `:echo` may be erased by a redraw, use `:echomsg`
to be able to see it with `:messages`.
drop {filename} [options]
Let Vim open a file, like the `:drop` command. If {filename}
is already open in a window, switch to that window. Otherwise
open a new window to edit {filename}.
Note that both the job and Vim may change the current
directory, thus it's best to use the full path.
[options] is only used when opening a new window. If present,
it must be a Dict. Similarly to |++opt|, These entries are recognized:
"ff" file format: "dos", "mac" or "unix"
"fileformat" idem
"enc" overrides 'fileencoding'
"encoding" idem
"bin" sets 'binary'
"binary" idem
"nobin" resets 'binary'
"nobinary" idem
"bad" specifies behavior for bad characters, see
|++bad|
Example in JSON: >
["drop", "path/file.txt", {"ff": "dos"}]
A trick to have Vim send this escape sequence: >
exe "set t_ts=\<Esc>]51; t_fs=\x07"
let &titlestring = '["call","Tapi_TryThis",["hello",123]]'
redraw
set t_ts& t_fs&
Rationale: Why not allow for any command or expression? Because that might
create a security problem.
Using the client-server feature ~
*terminal-client-server*
This only works when v:servername is not empty. If needed you can set it,
before opening the terminal, with: >
call remote_startserver('vim-server')
$VIM_SERVERNAME is set in the terminal to pass on the server name.
In the job you can then do something like: >
vim --servername $VIM_SERVERNAME --remote +123 some_file.c
This will open the file "some_file.c" and put the cursor on line 123.
==============================================================================
3. Remote testing *terminal-testing*
Most Vim tests execute a script inside Vim. For some tests this does not Most Vim tests execute a script inside Vim. For some tests this does not
work, running the test interferes with the code being tested. To avoid this work, running the test interferes with the code being tested. To avoid this
@ -361,7 +523,7 @@ term_scrape() inspect terminal screen
============================================================================== ==============================================================================
3. Diffing screen dumps *terminal-diff* 4. Diffing screen dumps *terminal-diff*
In some cases it can be bothersome to test that Vim displays the right In some cases it can be bothersome to test that Vim displays the right
characters on the screen. E.g. with syntax highlighting. To make this characters on the screen. E.g. with syntax highlighting. To make this
@ -370,7 +532,7 @@ an expected screen dump.
Vim uses the window size, text, color and other attributes as displayed. The Vim uses the window size, text, color and other attributes as displayed. The
Vim screen size, font and other properties do not matter. Therefore this Vim screen size, font and other properties do not matter. Therefore this
mechanism is portable across systems. A convential screenshot would reflect mechanism is portable across systems. A conventional screenshot would reflect
all differences, including font size and family. all differences, including font size and family.
@ -445,13 +607,13 @@ This will open a window consisting of three parts:
3. The contents of the second dump 3. The contents of the second dump
You can usually see what differs in the second part. Use the 'ruler' to You can usually see what differs in the second part. Use the 'ruler' to
relate it to the postion in the first or second dump. relate it to the position in the first or second dump.
Alternatively, press "s" to swap the first and second dump. Do this everal Alternatively, press "s" to swap the first and second dump. Do this several
times so that you can spot the difference in the context of the text. times so that you can spot the difference in the context of the text.
============================================================================== ==============================================================================
4. Debugging *terminal-debug* 5. Debugging *terminal-debug*
The Terminal debugging plugin can be used to debug a program with gdb and view The Terminal debugging plugin can be used to debug a program with gdb and view
the source code in a Vim window. Since this is completely contained inside the source code in a Vim window. Since this is completely contained inside
@ -463,7 +625,8 @@ Starting ~
Load the plugin with this command: > Load the plugin with this command: >
packadd termdebug packadd termdebug
< *:Termdebug* < *:Termdebug*
To start debugging use `:Termdebug` followed by the command name, for example: > To start debugging use `:Termdebug` or `:TermdebugCommand`` followed by the
command name, for example: >
:Termdebug vim :Termdebug vim
This opens two windows: This opens two windows:
@ -481,7 +644,8 @@ source file location will be displayed, if possible. A sign is used to
highlight the current position, using highlight group debugPC. highlight the current position, using highlight group debugPC.
If the buffer in the current window is modified, another window will be opened If the buffer in the current window is modified, another window will be opened
to display the current gdb position. to display the current gdb position. You can use `:Winbar` to add a window
toolbar there.
Focus the terminal of the executed program to interact with it. This works Focus the terminal of the executed program to interact with it. This works
the same as any command running in a terminal window. the same as any command running in a terminal window.
@ -489,6 +653,26 @@ the same as any command running in a terminal window.
When the debugger ends, typically by typing "quit" in the gdb window, the two When the debugger ends, typically by typing "quit" in the gdb window, the two
opened windows are closed. opened windows are closed.
Only one debugger can be active at a time.
*:TermdebugCommand*
If you want to give specific commands to the command being debugged, you can
use the `:TermdebugCommand` command followed by the command name and
additional parameters. >
:TermdebugCommand vim --clean -c ':set nu'
Both the `:Termdebug` and `:TermdebugCommand` support an optional "!" bang
argument to start the command right away, without pausing at the gdb window
(and cursor will be in the debugged window). For example: >
:TermdebugCommand! vim --clean
To attach gdb to an already running executable or use a core file, pass extra
arguments. E.g.: >
:Termdebug vim core
:Termdebug vim 98343
If no argument is given, you'll end up in a gdb window, in which you need to
specify which command to run using e.g. the gdb `file` command.
Example session ~ Example session ~
*termdebug-example* *termdebug-example*
@ -561,18 +745,20 @@ Put focus on the gdb window to type commands there. Some common ones are:
- frame N go to the Nth stack frame - frame N go to the Nth stack frame
- continue continue execution - continue continue execution
In the window showing the source code these commands can be used to control gdb: *:Run* *:Arguments*
In the window showing the source code these commands can be used to control
gdb:
`:Run` [args] run the program with [args] or the previous arguments `:Run` [args] run the program with [args] or the previous arguments
`:Arguments` {args} set arguments for the next `:Run` `:Arguments` {args} set arguments for the next `:Run`
`:Break` set a breakpoint at the current line; a sign will be displayed *:Break* set a breakpoint at the current line; a sign will be displayed
`:Clear` delete the breakpoint at the current line *:Clear* delete the breakpoint at the current line
`:Step` execute the gdb "step" command *:Step* execute the gdb "step" command
`:Over` execute the gdb "next" command (`:Next` is a Vim command) *:Over* execute the gdb "next" command (`:Next` is a Vim command)
`:Finish` execute the gdb "finish" command *:Finish* execute the gdb "finish" command
`:Continue` execute the gdb "continue" command *:Continue* execute the gdb "continue" command
`:Stop` interrupt the program *:Stop* interrupt the program
If 'mouse' is set the plugin adds a window toolbar with these entries: If 'mouse' is set the plugin adds a window toolbar with these entries:
Step `:Step` Step `:Step`
@ -583,13 +769,18 @@ If 'mouse' is set the plugin adds a window toolbar with these entries:
Eval `:Evaluate` Eval `:Evaluate`
This way you can use the mouse to perform the most common commands. You need This way you can use the mouse to perform the most common commands. You need
to have the 'mouse' option set to enable mouse clicks. to have the 'mouse' option set to enable mouse clicks.
*:Winbar*
You can add the window toolbar in other windows you open with: > You can add the window toolbar in other windows you open with: >
:Winbar :Winbar
If gdb stops at a source line and there is no window currently showing the
source code, a new window will be created for the source code. This also
happens if the buffer in the source code window has been modified and can't be
abandoned.
Inspecting variables ~ Inspecting variables ~
*termdebug-variables* *termdebug-variables* *:Evaluate*
`:Evaluate` evaluate the expression under the cursor `:Evaluate` evaluate the expression under the cursor
`K` same `K` same
`:Evaluate` {expr} evaluate {expr} `:Evaluate` {expr} evaluate {expr}
@ -601,8 +792,10 @@ You can usually shorten `:Evaluate` to `:Ev`.
Other commands ~ Other commands ~
*termdebug-commands* *termdebug-commands*
:Gdb jump to the gdb window *:Gdb* jump to the gdb window
:Program jump to the window with the running program *:Program* jump to the window with the running program
*:Source* jump to the window with the source code, create it if there
isn't one
Communication ~ Communication ~
@ -621,7 +814,8 @@ invoking `:Termdebug`: >
let termdebugger = "mygdb" let termdebugger = "mygdb"
< *gdb-version* < *gdb-version*
Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI
interface. This probably requires gdb version 7.12. if you get this error: interface. The "new-ui" command requires gdb version 7.12 or later. if you
get this error:
Undefined command: "new-ui". Try "help".~ Undefined command: "new-ui". Try "help".~
Then your gdb is too old. Then your gdb is too old.

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2018 Feb 27 *todo.txt* For Vim version 8.0. Last change: 2018 May 13
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -35,89 +35,140 @@ entered there will not be repeated below, unless there is extra information.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
Terminal emulator window: Terminal emulator window:
- using feedkeys() does not work? (Charles Sheridan, 2018 Feb 17) - Duplicated lines when making terminal only window. (Dominique, #2909)
- Lots of stuff to implement, see src/terminal.c - Still some stuff to implement and bugs to fix, see src/terminal.c
- Improve debugger interface: - Add more functionality for terminal API? (Ozaki Kiichi 2018 May 13, #2907)
- Implement the right-click popup menu for the terminal. Can use the
completion popup menu code and mouse dragging.
Use it for "set breakpoint", "remove breakpoint", etc.
- Look into the idevim plugin/script.
- Improve screen dump testing:
Add docs for how to properly use the screen dumps for testing, e.g. for
syntax highlighting.
Mode message isn't updated on vertical split. (Alexei Averchenko, 2018 Feb 2, Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
#2611) 13, #2910) Can't reproduce?
On Win32 when not in the console and t_Co >= 256, allow using 'tgc'.
(Nobuhiro Takasaki, #2833) Also check t_Co.
Pop-up menu overlapping terminal is not cleared completely. (Lifepillar, 2018
May 13, #2908)
balloon_show() does not work properly in the terminal. (Ben Jackson, 2017 Dec
20, #2481)
Also see #2352, want better control over balloon, perhaps set the position.
Errors found with random data: Errors found with random data:
heap-buffer-overflow in alist_add (#2472) heap-buffer-overflow in alist_add (#2472)
More warnings from static analysis:
https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
When opening foo/x.txt and bar/x.txt get swap file warning. Should check the
file name. (Juergen Weigert)
Script generated by :mksession does not work well if there are windows with
modified buffers
change "silent only" into "silent only!"
change "edit fname" of first buffer to "hide edit fname"
skip "badd fname" if "fname" is already in the buffer list
remove remark about unloading buffers from documentation
Compiler warnings (geeknik, 2017 Oct 26): Compiler warnings (geeknik, 2017 Oct 26):
- signed integer overflow in do_sub() (#2249) - signed integer overflow in do_sub() (#2249)
- signed integer overflow in get_address() (#2248) - signed integer overflow in get_address() (#2248)
- signed integer overflow in getdecchrs() (#2254) - signed integer overflow in getdecchrs() (#2254)
- undefined left shift in get_string_tv() (#2250) - undefined left shift in get_string_tv() (#2250)
Patch to fix 'undolevels' in options window. (Yasuhiro Matsumoto, 2018 Feb 14, Tests failing for "make testgui" with GTK:
#2645) - Test_setbufvar_options()
- Test_exit_callback_interval()
Patch to fix fd leak when using jobs. (ichizok, 2018 Feb 16, #2651) Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
or asyncmake:
https://github.com/yegappan/asyncmake
Popup menu is too wide, causing it not to be aligned. (Linwei, 2018 Feb 22, Add a ModeChanged autocommand that has an argument indicating the old and new
#2661) mode. Also used for switching Terminal mode.
balloon_show() does not work properly in the terminal. (Ben Jackson, 2017 Dec Add an option with file patterns, to be used when unloading a buffer: If there
20, #2481) is a match, remove entries for the buffer from marks, jumplist, etc. To be
Also see #2352, want better control over balloon, perhaps set the position. used for git temp files.
Cursor in status line after search. (#2530)
Cursor in wrong position when line wraps. (#2540) Cursor in wrong position when line wraps. (#2540)
Add an option similar to 'lazyredraw' to skip redrawing while executing a
script or function.
MS-Windows: write may fail if another program is reading the file.
If 'readonly' is not set but the file appears to be readonly later, try again
(wait a little while).
CreateFile() returns ERROR_SHARING_VIOLATION (Linwei, 2018 May 5)
Should add a test for every command line argument. Check coverage for what is
missing: --nofork, -A , -b, -h, etc.
Improve the installer for MS-Windows. There are a few alternatives:
- Add silent install option. (Shane Lee, #751)
- Installer from Cream (Steve Hall).
- Modern UI 2.0 for the Nsis installer. (Guopeng Wen)
https://github.com/gpwen/vim-installer-mui2
- make it possible to do a silent install, see
http://nsis.sourceforge.net/Docs/Chapter4.html#4.12
Version from Guopeng Wen does this.
- MSI installer: https://github.com/petrkle/vim-msi/
- The one on Issue 279.
Problem: they all work slightly different (e.g. don't install vimrun.exe).
How to test that it works well for all Vim users?
Alternative manpager.vim. (Enno, 2018 Jan 5, #2529) Alternative manpager.vim. (Enno, 2018 Jan 5, #2529)
Does setting 'cursorline' cause syntax highlighting to slow down? Perhaps is
mess up the cache? (Mike Lee Williams, 2018 Jan 27, #2539)
Also: 'foldtext' is evaluated too often. (Daniel Hahler, #2773)
When using :packadd files under "later" are not used, which is inconsistent When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994) with packages under "start". (xtal8, #1994)
Column number is wrong whsn using 'linebreak' and 'wrap'. (Keith Smiley, 2018 Patch to support "xxd -ps". (Erik Auerswald, 2018 May 1)
Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018
Jan 15, #2555) Jan 15, #2555)
":bufdo e" disabled syntax HL in windows other than the current. (BPJ)
Check argument of systemlist(). (Pavlov) Check argument of systemlist(). (Pavlov)
When 'inchsearch' and 'hlsearch' are set /\v highlights everything. Patch to add reg_executing() and reg_recording(). (Hirohito Higashi, #2745)
Also see #2337
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
Python indenting: alternative way to indent arguments:
http://orchistro.tistory.com/236
Should be supported with a flag.
Starting job with cwd option, when the directory does not exist, gives a Starting job with cwd option, when the directory does not exist, gives a
confusing error message. (Wang Shidong, 2018 Jan 2, #2519) confusing error message. (Wang Shidong, 2018 Jan 2, #2519)
7 Make "ga" show the digraph for a character, if it exists. Add the debug command line history to viminfo.
Patch from Christian Brabandt, 2011 Aug 19.
Patch to add "module" to quickfix entries. (Marcin Szamotulski, Coot, 2017 Jun Avoid that "sign unplace id" does a redraw right away, esp. when there is a
8, #1757) Now part of #2322. Or #2327? #1757 was re-opened, include that sequence of these commands. (Andy Stewart, 2018 Mar 16)
first.
ch_sendraw() with long string does not try to read inbetween, which may cause ch_sendraw() with long string does not try to read inbetween, which may cause
a deadlock if the reading side is waiting for the write to finish. (Nate a deadlock if the reading side is waiting for the write to finish. (Nate
Bosch, 2018 Jan 13, #2548) Bosch, 2018 Jan 13, #2548)
Patch to include a cfilter plugin to filter quickfix/location lists.
(Yegappan Lakshmanan, 2018 May 12)
Add Makefiles to the runtime/spell directory tree, since nobody uses Aap. Add Makefiles to the runtime/spell directory tree, since nobody uses Aap.
Will have to explain the manual steps (downloading the .aff and .dic files, Will have to explain the manual steps (downloading the .aff and .dic files,
applying the diff, etc. applying the diff, etc.
Pasting a register in Visual mode cannot be repeated. (Mahmoud Al-Qudsi, 2018
Apr 26, #2849)
User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a
word is re-added to it. (Matej Cepl, 2018 Feb 6) word is re-added to it. (Matej Cepl, 2018 Feb 6)
Problem with mouse scroll in tmux. (fcying, #2419) Might be caused by patch
8.0.1309. Removing "held_button = MOUSE_RELEASE;" helps. (2018 Feb 5)
Does setting 'cursorline' cause syntax highlighting to slow down? Perhaps is
mess up the cache? (Mike Lee Williams, 2018 Jan 27, #2539)
Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9) Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9)
With foldmethod=syntax and nofoldenable comment highlighting isn't removed. With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
@ -126,11 +177,37 @@ With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
Using 'wildignore' also applies to literally entered file name. Also with Using 'wildignore' also applies to literally entered file name. Also with
:drop (remote commands). :drop (remote commands).
Patch to support ":tag <tagkind> <tagname". (emmrk, 2018 May 7, #2871)
Implement option_save() and option_restore():
option_restore({list}) *option_restore()*
Restore options previously saved by option_save().
When buffer-local options have been saved, this function must
be called when the same buffer is the current buffer.
When window-local options have been saved, this function must
be called when the same window is the current window.
When in the wrong buffer and/or window an error is given and
the local options won't be restored.
option_save({list}) *option_save()*
Saves the options named in {list}. The returned value can be
passed to option_restore(). Example: >
let s:saved_options = option_save([
\ 'ignorecase',
\ 'iskeyword',
\ ])
au <buffer> BufLeave *
\ call option_restore(s:saved_options)
< The advantage over using `:let` is that global and local
values are handled and the script ID is restored, so that
`:verbose set` will show where the option was originally set,
not where it was restored.
"gvim --remote" from a directory with non-word characters changes the current "gvim --remote" from a directory with non-word characters changes the current
directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266) directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
Also see #1689. Also see #1689.
ml_get error when using a Python. (Yggdroot, 2017 Jun 1, #1737) ml_get error when using a Python script. (Yggdroot, 2017 Jun 1, #1737)
Lemonboy can reproduce (2017 Jun 5) Lemonboy can reproduce (2017 Jun 5)
crash when removing an element while inside map(). (Nikolai Pavlov, 2018 Feb crash when removing an element while inside map(). (Nikolai Pavlov, 2018 Feb
@ -150,27 +227,27 @@ No profile information for function that executes ":quit". (Daniel Hahler,
Get a "No Name" buffer when 'hidden' is set and opening a new window from the Get a "No Name" buffer when 'hidden' is set and opening a new window from the
quickfix list. (bfrg, 2018 Jan 22, #2574) quickfix list. (bfrg, 2018 Jan 22, #2574)
CTRL-X on zero gets stuck on 0xfffffffffffffffe. (Hengyang Zhao, #2746)
A function on a dictionary is not profiled. (ZyX, 2010 Dec 25) A function on a dictionary is not profiled. (ZyX, 2010 Dec 25)
Patch to fix E806. (Dominique, 2017 Nov 22, #2368)
Kazunobu Kuriyama: caused by XtSetLanguageProc().
Patch to fix GUI find/replace dialog. (kiloliter, 2017 Dec 11, report in
#2418, fix in #2435)
Invalid range error when using BufWinLeave for closing terminal. Invalid range error when using BufWinLeave for closing terminal.
(Gabriel Barta, 2017 Nov 15, #2339) (Gabriel Barta, 2017 Nov 15, #2339)
Using an external diff is inefficient. Not all systems have a good diff
program available (esp. MS-Windows). Would be nice to have in internal diff
implementation. Can then also use this for displaying changes within a line.
Olaf Dabrunz is working on this. (10 Jan 2016)
9 Instead invoking an external diff program, use builtin code. One can be
found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
It's complicated and badly documented.
Alternative: use the xdiff library. Patch from Christian Brabandt, 2018 Mar
20, #2732)
ml_get errors with buggy script. (Dominique, 2017 Apr 30) ml_get errors with buggy script. (Dominique, 2017 Apr 30)
Error in emsg with buggy script. (Dominique, 2017 Apr 30) Error in emsg with buggy script. (Dominique, 2017 Apr 30)
Patch to fix encoding in print document name (Yasuhiro Matsumoto, 2017 Dec 20,
#2478)
Patch to copy buffer-local options before buffer leaves the window. (Bjorn
Linse, 2017 Nov 14, #2336)
Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494) Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494)
Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24) Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24)
@ -178,6 +255,9 @@ Patch to support hunspell. (Matej Cepl, Jan 2018, #2500) Based on older patch
in #846) in #846)
Doesn't work on Windows yet. Not ready to included, hard coded paths. Doesn't work on Windows yet. Not ready to included, hard coded paths.
Win32 GUI: when running a fast timer, the cursor no longer blinks.
Was reported: cursor blinks in terminal on widows with a timer. (xtal8, #2142)
When a timer is running and typing CTRL-R on the command line, it is not When a timer is running and typing CTRL-R on the command line, it is not
redrawn properly. (xtal8, 2017 Oct 23, #2241) redrawn properly. (xtal8, 2017 Oct 23, #2241)
@ -187,9 +267,6 @@ In an optional package the "after" directory is not scanned?
Universal solution to detect if t_RS is working, using cursor position. Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126 Koichi Iwamoto, #2126
Patch to fix cmdline abbreviation after '<,'>. (Christian Brabandt, 2017 Nov
13, on issue #2320)
Patch for Neovim concerning restoring when closing help window. (glacambre Patch for Neovim concerning restoring when closing help window. (glacambre
neovim #7431) neovim #7431)
@ -199,8 +276,12 @@ Ask whether to use Windows or Vim key behavior?
Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017 Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
Nov 21) Nov 21)
Add a ModeChanged autocommand that has an argument indicating the old and new When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
mode. Also used for switching Terminal mode. triggered. Use the code from the end of set_num_option() in
set_color_count().
Add another autocommand like TermResponse that is fired for the other terminal
responses, such as bg and fg. Use "bg", "fg", "blink", etc. for the name.
When using command line window, CmdlineLeave is triggered without When using command line window, CmdlineLeave is triggered without
CmdlineEnter. (xtal8, 2017 Oct 30, #2263) CmdlineEnter. (xtal8, 2017 Oct 30, #2263)
@ -225,6 +306,10 @@ Start with filetype detection: testdir/test_filetype.vim
Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029) Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029)
Duplication of completion suggestions for ":!hom". Issue #539.
Patch by Christian, 2016 Jan 29
Another patch in #2733.
>
Add options_default() / options_restore() to set several options to Vim Add options_default() / options_restore() to set several options to Vim
defaults for a plugin. Comments from Zyx, 2017 May 10. defaults for a plugin. Comments from Zyx, 2017 May 10.
Perhaps use a vimcontext / endvimcontext command block. Perhaps use a vimcontext / endvimcontext command block.
@ -240,6 +325,9 @@ line breaks. (Ken Takata, 2017 Aug 22)
The ":move" command does not honor closed folds. (Ryan Lue, #2351) The ":move" command does not honor closed folds. (Ryan Lue, #2351)
Patch to fix increment/decrement not working properly when 'virtualedit' is
set. (Hirohito Higashi, 2016 Aug 1, #923)
Memory leaks in test_channel? (or is it because of fork()) Memory leaks in test_channel? (or is it because of fork())
Using uninitialized value in test_crypt. Using uninitialized value in test_crypt.
Memory leaks in test_escaped_glob Memory leaks in test_escaped_glob
@ -360,8 +448,6 @@ Or is this not an actual problem?
Better TeX indent file. (Christian Brabandt, 2017 May 3) Better TeX indent file. (Christian Brabandt, 2017 May 3)
Openhab syntax file (mueller, #1678)
Patch to use a separate code for BS on Windows. (Linwei, #1823) Patch to use a separate code for BS on Windows. (Linwei, #1823)
Use gvimext.dll from the nightly build? (Issue #249) Use gvimext.dll from the nightly build? (Issue #249)
@ -500,9 +586,6 @@ Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
Update Aug 2017: #1954 Update Aug 2017: #1954
Characters deleted on completion. (Adrià Farrés, 2017 Apr 20, #1645)
Remarks from Christian Brabandt (Apr 21)
The TermResponse event is not triggered when a plugin has set 'eventignore' to The TermResponse event is not triggered when a plugin has set 'eventignore' to
"all". Netrw does this. (Gary Johnson, 2017 Jan 24) "all". Netrw does this. (Gary Johnson, 2017 Jan 24)
Postpone the event until 'eventignore' is reset. Postpone the event until 'eventignore' is reset.
@ -544,20 +627,14 @@ Does this also fix #1408 ?
Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30) Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
Patch to fix profiling condition lines. (Ozaki Kiichi,, 2017 Dec 26, #2499)
Patch to be able to separately map CTRL-H and BS on Windows. Patch to be able to separately map CTRL-H and BS on Windows.
(Linwei, 2017 Jul 11, #1833) (Linwei, 2017 Jul 11, #1833)
When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017 When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017
Apr 23, #1653) Apr 23, #1653)
Using an external diff is inefficient. Not all systems have a good diff
program available (esp. MS-Windows). Would be nice to have in internal diff
implementation. Can then also use this for displaying changes within a line.
Olaf Dabrunz is working on this. (10 Jan 2016)
9 Instead invoking an external diff program, use builtin code. One can be
found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
It's complicated and badly documented.
Window resizing with 'winfixheight': With a vertical split the height changes Window resizing with 'winfixheight': With a vertical split the height changes
anyway. (Tommy allen, 2017 Feb 21, #1502) anyway. (Tommy allen, 2017 Feb 21, #1502)
@ -573,8 +650,6 @@ Patch to make it possible to extend a list with itself.
Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24) Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24)
Patch to add trim() function. (Bukn, 2016 Nov 25, #1280)
Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275) Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
Patch to change argument of :marks. (LemonBoy, 2017 Jan 29, #1426) Patch to change argument of :marks. (LemonBoy, 2017 Jan 29, #1426)
@ -600,8 +675,6 @@ sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
+channel: +channel:
- Add a separate timeout for opening a socket. Currently it's fixed at 50 - Add a separate timeout for opening a socket. Currently it's fixed at 50
msec, which is too small for a remote connection. (tverniquet, #2130) msec, which is too small for a remote connection. (tverniquet, #2130)
- Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026) - Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
- Writing raw mode to a buffer should still handle NL characters as line - Writing raw mode to a buffer should still handle NL characters as line
breaks. (Dmitry Zotikov, 2017 Aug 16) breaks. (Dmitry Zotikov, 2017 Aug 16)
@ -693,6 +766,8 @@ command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
Patch to support CamelCase for spell checking: See a lower-to-upper case Patch to support CamelCase for spell checking: See a lower-to-upper case
change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235) change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235)
patch for 'spellcamelcase' option: spellcheck each CamelCased word.
(Ben Tucker, 2016 Dec 2)
Idea from Sven: record sequence of keys. Useful to show others what they are Idea from Sven: record sequence of keys. Useful to show others what they are
doing (look over the shoulder), and also to see what happened. doing (look over the shoulder), and also to see what happened.
@ -709,9 +784,6 @@ cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25) Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25)
patch for 'spellcamelcase' option: spellcheck each CamelCased word.
(Ben Tucker, 2016 Dec 2)
When using ":diffput" through a mapping, undo in the target buffer isn't When using ":diffput" through a mapping, undo in the target buffer isn't
synced. (Ryan Carney, 2016 Sep 14) synced. (Ryan Carney, 2016 Sep 14)
@ -779,9 +851,6 @@ emoji_width table has only one entry.
It's possible to add ",," to 'wildignore', an empty entry. Causes problems. It's possible to add ",," to 'wildignore', an empty entry. Causes problems.
Reject the value? #710. Reject the value? #710.
Patch to fix increment/decrement not working properly when 'virtualedit' is
set. (Hirohito Higashi, 2016 Aug 1, #923)
When doing "vi buf.md" a BufNew autocommand for *.md is not triggered. When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
Because of using the initial buffer? (Dun Peal, 2016 May 12) Because of using the initial buffer? (Dun Peal, 2016 May 12)
@ -811,9 +880,6 @@ Appveyor build with self-installing executable, includes getting most
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
result: https://ci.appveyor.com/project/k-takata/vim/history result: https://ci.appveyor.com/project/k-takata/vim/history
Duplication of completion suggestions for ":!hom". Issue 539.
Patch by Christian, 2016 Jan 29
>
Problem that a previous silent ":throw" causes a following try/catch not to Problem that a previous silent ":throw" causes a following try/catch not to
work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24) work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)
@ -921,10 +987,6 @@ github with a URL like this:
https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
Diff for version.c contains more context, can't skip a patch. Diff for version.c contains more context, can't skip a patch.
When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
triggered. Use the code from the end of set_num_option() in
set_color_count().
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
Comparing nested structures with "==" uses a different comparator than when Comparing nested structures with "==" uses a different comparator than when
@ -1102,7 +1164,7 @@ Patch: On MS-Windows shellescape() may have to triple double quotes.
(Ingo Karkat, 2015 Jan 16) (Ingo Karkat, 2015 Jan 16)
Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15) Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15)
Update 2016 Jun 10, # 857 Update 2018 March 12, #2711
Redo only remembers the last change. Could use "{count}g." to redo an older Redo only remembers the last change. Could use "{count}g." to redo an older
change. How does the user know which change? At least have a way to list change. How does the user know which change? At least have a way to list
@ -1141,6 +1203,9 @@ Spell files use a latin single quote. Unicode also has another single quote:
New OpenOffice spell files support this with ICONV. But they are not New OpenOffice spell files support this with ICONV. But they are not
compatible with Vim spell files. The old files can no longer be downloaded. compatible with Vim spell files. The old files can no longer be downloaded.
Spell checking: Add a feature to only consider two spaces after a dot to start
a new sentence. Don't give the capitalization error when there is one space.
xterm should be able to pass focus changes to Vim, so that Vim can check for xterm should be able to pass focus changes to Vim, so that Vim can check for
buffers that changed. Perhaps in misc.c, function selectwindow(). buffers that changed. Perhaps in misc.c, function selectwindow().
Xterm 224 supports it! Xterm 224 supports it!
@ -1153,9 +1218,6 @@ Idea: For a window in the middle (has window above and below it), use
right-mouse-drag on the status line to move a window up/down without changing right-mouse-drag on the status line to move a window up/down without changing
its height? It's like dragging the status bar above it at the same time. its height? It's like dragging the status bar above it at the same time.
Can we make ":unlet $VAR" use unsetenv() to delete the env var?
What for systems that don't have unsetenv()? (Issue #1116)
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21) Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
This does not give an error: (Andre Sihera, 2014 Mar 21) This does not give an error: (Andre Sihera, 2014 Mar 21)
@ -1320,19 +1382,6 @@ optional. (2013 Jul 12)
Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2) Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2)
Improve the installer for MS-Windows. There are a few alternatives:
- Add silent install option. (Shane Lee, #751)
- Installer from Cream (Steve Hall).
- Modern UI 2.0 for the Nsis installer. (Guopeng Wen)
https://github.com/gpwen/vim-installer-mui2
- make it possible to do a silent install, see
http://nsis.sourceforge.net/Docs/Chapter4.html#4.12
Version from Guopeng Wen does this.
- MSI installer: https://github.com/petrkle/vim-msi/
- The one on Issue 279.
Problem: they all work slightly different (e.g. don't install vimrun.exe).
How to test that it works well for all Vim users?
Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec) Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine - Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
@ -4318,6 +4367,8 @@ Perl interface:
Shared libraries: Shared libraries:
8 libcall() can keep the library around instead of always calling dlclose().
(Jason Felice, 2018 Mar 20)
6 Add support for loading shared libraries, and calling functions in it. 6 Add support for loading shared libraries, and calling functions in it.
:libload internal-name libname :libload internal-name libname
:libunload internal-name :libunload internal-name

View File

@ -1,4 +1,4 @@
*usr_11.txt* For Vim version 8.0. Last change: 2010 Jul 20 *usr_11.txt* For Vim version 8.0. Last change: 2018 Apr 13
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@ -234,7 +234,7 @@ that file, be prepared to redo your last changes.
WHAT TO DO? *swap-exists-choices* WHAT TO DO? *swap-exists-choices*
If dialogs are supported you will be asked to select one of five choices: If dialogs are supported you will be asked to select one of six choices:
Swap file ".main.c.swp" already exists! ~ Swap file ".main.c.swp" already exists! ~
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~

View File

@ -1,4 +1,4 @@
*usr_24.txt* For Vim version 8.0. Last change: 2006 Jul 23 *usr_24.txt* For Vim version 8.0. Last change: 2018 Mar 18
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@ -538,8 +538,8 @@ a 16 bit and a 32 bit number (e.g., for a Unicode character): >
*24.9* Digraphs *24.9* Digraphs
Some characters are not on the keyboard. For example, the copyright character Some characters are not on the keyboard. For example, the copyright character
(<EFBFBD>). To type these characters in Vim, you use digraphs, where two characters (©). To type these characters in Vim, you use digraphs, where two characters
represent one. To enter a <EFBFBD>, for example, you press three keys: > represent one. To enter a ©, for example, you press three keys: >
CTRL-K Co CTRL-K Co
@ -549,12 +549,12 @@ To find out what digraphs are available, use the following command: >
Vim will display the digraph table. Here are three lines of it: Vim will display the digraph table. Here are three lines of it:
AC ~_ 159 NS | 160 !I <EFBFBD> 161 Ct <EFBFBD> 162 Pd <EFBFBD> 163 Cu <EFBFBD> 164 Ye <EFBFBD> 165 ~ AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~
BB <EFBFBD> 166 SE <EFBFBD> 167 ': <EFBFBD> 168 Co <EFBFBD> 169 -a <EFBFBD> 170 << <EFBFBD> 171 NO <EFBFBD> 172 ~ BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~
-- <EFBFBD> 173 Rg <EFBFBD> 174 'm <EFBFBD> 175 DG <EFBFBD> 176 +- <EFBFBD> 177 2S <EFBFBD> 178 3S <EFBFBD> 179 ~ -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~
This shows, for example, that the digraph you get by typing CTRL-K Pd is the This shows, for example, that the digraph you get by typing CTRL-K Pd is the
character (<EFBFBD>). This is character number 163 (decimal). character (£). This is character number 163 (decimal).
Pd is short for Pound. Most digraphs are selected to give you a hint about Pd is short for Pound. Most digraphs are selected to give you a hint about
the character they will produce. If you look through the list you will the character they will produce. If you look through the list you will
understand the logic. understand the logic.
@ -569,9 +569,9 @@ that combination. Thus CTRL-K dP also works. Since there is no digraph for
You can define your own digraphs. Example: > You can define your own digraphs. Example: >
:digraph a" <EFBFBD> :digraph a" ä
This defines that CTRL-K a" inserts an <EFBFBD> character. You can also specify the This defines that CTRL-K a" inserts an ä character. You can also specify the
character with a decimal number. This defines the same digraph: > character with a decimal number. This defines the same digraph: >
:digraph a" 228 :digraph a" 228

View File

@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.0. Last change: 2018 Feb 13 *usr_41.txt* For Vim version 8.0. Last change: 2018 Apr 11
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@ -885,8 +885,9 @@ Interactive: *interactive-functions*
GUI: *gui-functions* GUI: *gui-functions*
getfontname() get name of current font being used getfontname() get name of current font being used
getwinposx() X position of the GUI Vim window getwinpos() position of the Vim window
getwinposy() Y position of the GUI Vim window getwinposx() X position of the Vim window
getwinposy() Y position of the Vim window
balloon_show() set the balloon content balloon_show() set the balloon content
balloon_split() split a message for a balloon balloon_split() split a message for a balloon
@ -987,6 +988,8 @@ Terminal window: *terminal-functions*
term_getstatus() get the status of a terminal term_getstatus() get the status of a terminal
term_gettitle() get the title of a terminal term_gettitle() get the title of a terminal
term_gettty() get the tty name of a terminal term_gettty() get the tty name of a terminal
term_setansicolors() set 16 ANSI colors, used for GUI
term_getansicolors() get 16 ANSI colors, used for GUI
Timers: *timer-functions* Timers: *timer-functions*
timer_start() create a timer timer_start() create a timer

View File

@ -1,4 +1,4 @@
*various.txt* For Vim version 8.0. Last change: 2018 Feb 27 *various.txt* For Vim version 8.0. Last change: 2018 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -306,7 +306,7 @@ g8 Print the hex values of the bytes used in the
Here is an overview of the features. Here is an overview of the features.
The first column shows the smallest version in which The first column shows the smallest version in which
they are included: they are included:
T tiny T tiny (always)
S small S small
N normal N normal
B big B big
@ -320,7 +320,7 @@ g8 Print the hex values of the bytes used in the
*+acl* |ACL| support included *+acl* |ACL| support included
*+ARP* Amiga only: ARP support included *+ARP* Amiga only: ARP support included
B *+arabic* |Arabic| language support B *+arabic* |Arabic| language support
N *+autocmd* |:autocmd|, automatic commands T *+autocmd* |:autocmd|, automatic commands
H *+autoservername* Automatically enable |clientserver| H *+autoservername* Automatically enable |clientserver|
m *+balloon_eval* |balloon-eval| support in the GUI. Included when m *+balloon_eval* |balloon-eval| support in the GUI. Included when
compiling with supported GUI (Motif, GTK, GUI) and compiling with supported GUI (Motif, GTK, GUI) and
@ -344,7 +344,7 @@ N *+comments* |'comments'| support
B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
N *+cryptv* encryption support |encryption| N *+cryptv* encryption support |encryption|
B *+cscope* |cscope| support B *+cscope* |cscope| support
m *+cursorbind* |'cursorbind'| support T *+cursorbind* |'cursorbind'| support
m *+cursorshape* |termcap-cursor-shape| support m *+cursorshape* |termcap-cursor-shape| support
m *+debug* Compiled for debugging. m *+debug* Compiled for debugging.
N *+dialog_gui* Support for |:confirm| with GUI dialog. N *+dialog_gui* Support for |:confirm| with GUI dialog.
@ -352,7 +352,7 @@ N *+dialog_con* Support for |:confirm| with console dialog.
N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
N *+diff* |vimdiff| and 'diff' N *+diff* |vimdiff| and 'diff'
N *+digraphs* |digraphs| *E196* N *+digraphs* |digraphs| *E196*
m *+directx* Win32 GUI only: DirectX and |'renderoptions'| *+directx* Win32 GUI only: DirectX and |'renderoptions'|
*+dnd* Support for DnD into the "~ register |quote_~|. *+dnd* Support for DnD into the "~ register |quote_~|.
B *+emacs_tags* |emacs-tags| files B *+emacs_tags* |emacs-tags| files
N *+eval* expression evaluation |eval.txt| N *+eval* expression evaluation |eval.txt|
@ -384,7 +384,7 @@ B *+langmap* |'langmap'|
N *+libcall* |libcall()| N *+libcall* |libcall()|
N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'|
N *+lispindent* |'lisp'| N *+lispindent* |'lisp'|
N *+listcmds* Vim commands for the list of buffers |buffer-hidden| T *+listcmds* Vim commands for the list of buffers |buffer-hidden|
and argument list |:argdelete| and argument list |:argdelete|
N *+localmap* Support for mappings local to a buffer |:map-local| N *+localmap* Support for mappings local to a buffer |:map-local|
m *+lua* |Lua| interface m *+lua* |Lua| interface
@ -429,7 +429,7 @@ N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
B *+rightleft* Right to left typing |'rightleft'| B *+rightleft* Right to left typing |'rightleft'|
m *+ruby* Ruby interface |ruby| m *+ruby* Ruby interface |ruby|
m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
N *+scrollbind* |'scrollbind'| T *+scrollbind* |'scrollbind'|
B *+signs* |:sign| B *+signs* |:sign|
N *+smartindent* |'smartindent'| N *+smartindent* |'smartindent'|
N *+startuptime* |--startuptime| argument N *+startuptime* |--startuptime| argument

View File

@ -1,4 +1,4 @@
*version6.txt* For Vim version 8.0. Last change: 2014 Aug 29 *version6.txt* For Vim version 8.0. Last change: 2018 Mar 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -6103,7 +6103,7 @@ New tutor translations:
Slovak (Lubos Celko) Slovak (Lubos Celko)
Greek (Christos Kontas) Greek (Christos Kontas)
German (Joachim Hofmann) German (Joachim Hofmann)
Norwegian (<EFBFBD>yvind Holm) Norwegian (Øyvind Holm)
New filetype plugins: New filetype plugins:
Occam (Mario Schweigler) Occam (Mario Schweigler)
@ -6121,13 +6121,13 @@ New compiler plugins:
Modelsim vcom (Paul Baleme) Modelsim vcom (Paul Baleme)
New menu translations: New menu translations:
Brazilian (Jos<EFBFBD> de Paula) Brazilian (José de Paula)
British (Mike Williams) British (Mike Williams)
Korean in UTF-8. (Nam SungHyun) Korean in UTF-8. (Nam SungHyun)
Norwegian (<EFBFBD>yvind Holm) Norwegian (Øyvind Holm)
Serbian (Aleksandar Jelenak) Serbian (Aleksandar Jelenak)
New message translation for Norwegian. (<EFBFBD>yvind Holm) New message translation for Norwegian. (Øyvind Holm)
New color scheme: New color scheme:
desert (Hans Fugal) desert (Hans Fugal)
@ -10066,7 +10066,7 @@ Files: src/os_unix.c
Patch 6.2.019 (lang) Patch 6.2.019 (lang)
Problem: Loading the Portuguese menu causes an error message. Problem: Loading the Portuguese menu causes an error message.
Solution: Join two lines. (Jose Pedro Oliveira, Jos<EFBFBD> de Paula) Solution: Join two lines. (Jose Pedro Oliveira, José de Paula)
Files: runtime/lang/menu_pt_br.vim Files: runtime/lang/menu_pt_br.vim
Patch 6.2.020 Patch 6.2.020
@ -12418,7 +12418,7 @@ Files: src/message.c
Patch 6.2.376 Patch 6.2.376
Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6.
Solution: Add #ifdefs around use of rb_w32_snprintf(). (Beno<EFBFBD>t Cerrina) Solution: Add #ifdefs around use of rb_w32_snprintf(). (Benoît Cerrina)
Files: src/if_ruby.c Files: src/if_ruby.c
Patch 6.2.377 (after 6.2.372) Patch 6.2.377 (after 6.2.372)
@ -14320,7 +14320,7 @@ Files: src/edit.c
Patch 6.3.061 Patch 6.3.061
Problem: When editing a utf-8 file in an utf-8 xterm and there is a Problem: When editing a utf-8 file in an utf-8 xterm and there is a
multi-byte character in the last column, displaying is messed up. multi-byte character in the last column, displaying is messed up.
(Jo<EFBFBD>l Rio) (Joël Rio)
Solution: Check for a multi-byte character, not a multi-column character. Solution: Check for a multi-byte character, not a multi-column character.
Files: src/screen.c Files: src/screen.c

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 25 *windows.txt* For Vim version 8.0. Last change: 2018 Apr 24
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -731,8 +731,7 @@ can also get to them with the buffer list commands, like ":bnext".
the current window. the current window.
{cmd} can contain '|' to concatenate several commands. {cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close windows or reorder them. {cmd} must not open or close windows or reorder them.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo| |:cfdo| and |:lfdo|
@ -760,8 +759,7 @@ can also get to them with the buffer list commands, like ":bnext".
autocommand event is disabled by adding it to autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing 'eventignore'. This considerably speeds up editing
each buffer. each buffer.
{not in Vi} {not available when compiled without the {not in Vi}
|+listcmds| feature}
Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo| |:cfdo| and |:lfdo|
@ -974,7 +972,6 @@ is no word under the cursor, and a few other things: >
A hidden buffer is not displayed in a window, but is still loaded into memory. A hidden buffer is not displayed in a window, but is still loaded into memory.
This makes it possible to jump from file to file, without the need to read or This makes it possible to jump from file to file, without the need to read or
write the file every time you get another buffer in a window. write the file every time you get another buffer in a window.
{not available when compiled without the |+listcmds| feature}
*:buffer-!* *:buffer-!*
If the option 'hidden' ('hid') is set, abandoned buffers are kept for all If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
@ -1049,6 +1046,9 @@ list of buffers. |unlisted-buffer|
x buffers with a read error x buffers with a read error
% current buffer % current buffer
# alternate buffer # alternate buffer
R terminal buffers with a running job
F terminal buffers with a finished job
? terminal buffers without a job: `:terminal NONE`
Combining flags means they are "and"ed together, e.g.: Combining flags means they are "and"ed together, e.g.:
h+ hidden buffers which are modified h+ hidden buffers which are modified
a+ active buffers which are modified a+ active buffers which are modified
@ -1083,10 +1083,8 @@ list of buffers. |unlisted-buffer|
< <
:bdelete[!] {bufname} *E93* *E94* :bdelete[!] {bufname} *E93* *E94*
Like ":bdelete[!] [N]", but buffer given by name. Note that a Like ":bdelete[!] [N]", but buffer given by name, see
buffer whose name is a number cannot be referenced by that |{bufname}|.
name; use the buffer number instead. Insert a backslash
before a space in a buffer name.
:bdelete[!] N1 N2 ... :bdelete[!] N1 N2 ...
Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
@ -1123,10 +1121,8 @@ list of buffers. |unlisted-buffer|
into a loaded buffer. into a loaded buffer.
:bunload[!] {bufname} :bunload[!] {bufname}
Like ":bunload[!] [N]", but buffer given by name. Note that a Like ":bunload[!] [N]", but buffer given by name.
buffer whose name is a number cannot be referenced by that Also see |{bufname}|.
name; use the buffer number instead. Insert a backslash
before a space in a buffer name.
:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M :N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
|inclusive|. |inclusive|.
@ -1144,10 +1140,16 @@ list of buffers. |unlisted-buffer|
list, without setting the 'buflisted' flag. list, without setting the 'buflisted' flag.
Also see |+cmd|. Also see |+cmd|.
:[N]b[uffer][!] [+cmd] {bufname} :[N]b[uffer][!] [+cmd] {bufname} *{bufname}*
Edit buffer for {bufname} from the buffer list. See Edit buffer for {bufname} from the buffer list. A partial
|:buffer-!| for [!]. This will also edit a buffer that is not name also works, so long as it is unique in the list of
in the buffer list, without setting the 'buflisted' flag. buffers.
Note that a buffer whose name is a number cannot be referenced
by that name; use the buffer number instead.
Insert a backslash before a space in a buffer name.
See |:buffer-!| for [!].
This will also edit a buffer that is not in the buffer list,
without setting the 'buflisted' flag.
Also see |+cmd|. Also see |+cmd|.
:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* :[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer*
@ -1159,7 +1161,7 @@ list of buffers. |unlisted-buffer|
Also see |+cmd|. Also see |+cmd|.
:[N]sb[uffer] [+cmd] {bufname} :[N]sb[uffer] [+cmd] {bufname}
Split window and edit buffer for {bufname} from the buffer Split window and edit buffer for |{bufname}| from the buffer
list. This will also edit a buffer that is not in the buffer list. This will also edit a buffer that is not in the buffer
list, without setting the 'buflisted' flag. list, without setting the 'buflisted' flag.
Note: If what you want to do is split the buffer, make a copy Note: If what you want to do is split the buffer, make a copy

View File

@ -57,7 +57,7 @@ are all equivalent.
.PP .PP
.TP .TP
.IR \-a " | " \-autoskip .IR \-a " | " \-autoskip
toggle autoskip: A single '*' replaces nul-lines. Default off. Toggle autoskip: A single '*' replaces nul-lines. Default off.
.TP .TP
.IR \-b " | " \-bits .IR \-b " | " \-bits
Switch to bits (binary digits) dump, rather than hexdump. Switch to bits (binary digits) dump, rather than hexdump.
@ -67,10 +67,13 @@ followed by an ascii (or ebcdic) representation. The command line switches
\-r, \-p, \-i do not work with this mode. \-r, \-p, \-i do not work with this mode.
.TP .TP
.IR "\-c cols " | " \-cols cols" .IR "\-c cols " | " \-cols cols"
format Format
.RI < cols > .RI < cols >
octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256.
.TP .TP
.IR \-C " | " \-capitalize
Capitalize variable names in C include file style, when using \-i.
.TP
.IR \-E " | " \-EBCDIC .IR \-E " | " \-EBCDIC
Change the character encoding in the righthand column from ASCII to EBCDIC. Change the character encoding in the righthand column from ASCII to EBCDIC.
This does not change the hexadecimal representation. The option is This does not change the hexadecimal representation. The option is
@ -87,7 +90,7 @@ The command line switches
\-r, \-p, \-i do not work with this mode. \-r, \-p, \-i do not work with this mode.
.TP .TP
.IR "\-g bytes " | " \-groupsize bytes" .IR "\-g bytes " | " \-groupsize bytes"
separate the output of every Separate the output of every
.RI < bytes > .RI < bytes >
bytes (two hex characters or eight bit-digits each) by a whitespace. bytes (two hex characters or eight bit-digits each) by a whitespace.
Specify Specify
@ -98,28 +101,28 @@ in normal mode, \fI4\fP in little-endian mode and \fI1\fP in bits mode.
Grouping does not apply to postscript or include style. Grouping does not apply to postscript or include style.
.TP .TP
.IR \-h " | " \-help .IR \-h " | " \-help
print a summary of available commands and exit. No hex dumping is performed. Print a summary of available commands and exit. No hex dumping is performed.
.TP .TP
.IR \-i " | " \-include .IR \-i " | " \-include
output in C include file style. A complete static array definition is written Output in C include file style. A complete static array definition is written
(named after the input file), unless xxd reads from stdin. (named after the input file), unless xxd reads from stdin.
.TP .TP
.IR "\-l len " | " \-len len" .IR "\-l len " | " \-len len"
stop after writing Stop after writing
.RI < len > .RI < len >
octets. octets.
.TP .TP
.I \-o offset .I \-o offset
add Add
.RI < offset > .RI < offset >
to the displayed file position. to the displayed file position.
.TP .TP
.IR \-p " | " \-ps " | " \-postscript " | " \-plain .IR \-p " | " \-ps " | " \-postscript " | " \-plain
output in postscript continuous hexdump style. Also known as plain hexdump Output in postscript continuous hexdump style. Also known as plain hexdump
style. style.
.TP .TP
.IR \-r " | " \-revert .IR \-r " | " \-revert
reverse operation: convert (or patch) hexdump into binary. Reverse operation: convert (or patch) hexdump into binary.
If not writing to stdout, xxd writes into its output file without truncating If not writing to stdout, xxd writes into its output file without truncating
it. Use the combination it. Use the combination
.I \-r \-p .I \-r \-p
@ -135,7 +138,7 @@ revert with
added to file positions found in hexdump. added to file positions found in hexdump.
.TP .TP
.I \-s [+][\-]seek .I \-s [+][\-]seek
start at Start at
.RI < seek > .RI < seek >
bytes abs. (or rel.) infile offset. bytes abs. (or rel.) infile offset.
\fI+ \fRindicates that the seek is relative to the current stdin file position \fI+ \fRindicates that the seek is relative to the current stdin file position
@ -145,10 +148,10 @@ should be that many characters from the end of the input (or if combined with
Without \-s option, xxd starts at the current file position. Without \-s option, xxd starts at the current file position.
.TP .TP
.I \-u .I \-u
use upper case hex letters. Default is lower case. Use upper case hex letters. Default is lower case.
.TP .TP
.IR \-v " | " \-version .IR \-v " | " \-version
show version string. Show version string.
.SH CAVEATS .SH CAVEATS
.PP .PP
.I xxd \-r .I xxd \-r

View File

@ -30,7 +30,7 @@ OPTIONS
notation. Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent. notation. Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent.
-a | -autoskip -a | -autoskip
toggle autoskip: A single '*' replaces nul-lines. Default off. Toggle autoskip: A single '*' replaces nul-lines. Default off.
-b | -bits -b | -bits
Switch to bits (binary digits) dump, rather than hexdump. This Switch to bits (binary digits) dump, rather than hexdump. This
@ -41,9 +41,13 @@ OPTIONS
mode. mode.
-c cols | -cols cols -c cols | -cols cols
format <cols> octets per line. Default 16 (-i: 12, -ps: 30, -b: Format <cols> octets per line. Default 16 (-i: 12, -ps: 30, -b:
6). Max 256. 6). Max 256.
-C | -capitalize
Capitalize variable names in C include file style, when using
-i.
-E | -EBCDIC -E | -EBCDIC
Change the character encoding in the righthand column from ASCII Change the character encoding in the righthand column from ASCII
to EBCDIC. This does not change the hexadecimal representation. to EBCDIC. This does not change the hexadecimal representation.
@ -52,41 +56,41 @@ OPTIONS
-e Switch to little-endian hexdump. This option treats byte groups -e Switch to little-endian hexdump. This option treats byte groups
as words in little-endian byte order. The default grouping of 4 as words in little-endian byte order. The default grouping of 4
bytes may be changed using -g. This option only applies to hex bytes may be changed using -g. This option only applies to hex
dump, leaving the ASCII (or EBCDIC) representation unchanged. dump, leaving the ASCII (or EBCDIC) representation unchanged.
The command line switches -r, -p, -i do not work with this mode. The command line switches -r, -p, -i do not work with this mode.
-g bytes | -groupsize bytes -g bytes | -groupsize bytes
separate the output of every <bytes> bytes (two hex characters Separate the output of every <bytes> bytes (two hex characters
or eight bit-digits each) by a whitespace. Specify -g 0 to sup or eight bit-digits each) by a whitespace. Specify -g 0 to sup
press grouping. <Bytes> defaults to 2 in normal mode, 4 in lit press grouping. <Bytes> defaults to 2 in normal mode, 4 in lit
tle-endian mode and 1 in bits mode. Grouping does not apply to tle-endian mode and 1 in bits mode. Grouping does not apply to
postscript or include style. postscript or include style.
-h | -help -h | -help
print a summary of available commands and exit. No hex dumping Print a summary of available commands and exit. No hex dumping
is performed. is performed.
-i | -include -i | -include
output in C include file style. A complete static array defini Output in C include file style. A complete static array defini
tion is written (named after the input file), unless xxd reads tion is written (named after the input file), unless xxd reads
from stdin. from stdin.
-l len | -len len -l len | -len len
stop after writing <len> octets. Stop after writing <len> octets.
-o offset -o offset
add <offset> to the displayed file position. Add <offset> to the displayed file position.
-p | -ps | -postscript | -plain -p | -ps | -postscript | -plain
output in postscript continuous hexdump style. Also known as Output in postscript continuous hexdump style. Also known as
plain hexdump style. plain hexdump style.
-r | -revert -r | -revert
reverse operation: convert (or patch) hexdump into binary. If Reverse operation: convert (or patch) hexdump into binary. If
not writing to stdout, xxd writes into its output file without not writing to stdout, xxd writes into its output file without
truncating it. Use the combination -r -p to read plain hexadeci truncating it. Use the combination -r -p to read plain hexadeci
mal dumps without line number information and without a particu mal dumps without line number information and without a particu
lar column layout. Additional Whitespace and line-breaks are lar column layout. Additional Whitespace and line-breaks are
allowed anywhere. allowed anywhere.
-seek offset -seek offset
@ -94,34 +98,34 @@ OPTIONS
found in hexdump. found in hexdump.
-s [+][-]seek -s [+][-]seek
start at <seek> bytes abs. (or rel.) infile offset. + indicates Start at <seek> bytes abs. (or rel.) infile offset. + indicates
that the seek is relative to the current stdin file position that the seek is relative to the current stdin file position
(meaningless when not reading from stdin). - indicates that the (meaningless when not reading from stdin). - indicates that the
seek should be that many characters from the end of the input seek should be that many characters from the end of the input
(or if combined with +: before the current stdin file position). (or if combined with +: before the current stdin file position).
Without -s option, xxd starts at the current file position. Without -s option, xxd starts at the current file position.
-u use upper case hex letters. Default is lower case. -u Use upper case hex letters. Default is lower case.
-v | -version -v | -version
show version string. Show version string.
CAVEATS CAVEATS
xxd -r has some builtin magic while evaluating line number information. xxd -r has some builtin magic while evaluating line number information.
If the output file is seekable, then the linenumbers at the start of If the output file is seekable, then the linenumbers at the start of
each hexdump line may be out of order, lines may be missing, or over each hexdump line may be out of order, lines may be missing, or over
lapping. In these cases xxd will lseek(2) to the next position. If the lapping. In these cases xxd will lseek(2) to the next position. If the
output file is not seekable, only gaps are allowed, which will be output file is not seekable, only gaps are allowed, which will be
filled by null-bytes. filled by null-bytes.
xxd -r never generates parse errors. Garbage is silently skipped. xxd -r never generates parse errors. Garbage is silently skipped.
When editing hexdumps, please note that xxd -r skips everything on the When editing hexdumps, please note that xxd -r skips everything on the
input line after reading enough columns of hexadecimal data (see option input line after reading enough columns of hexadecimal data (see option
-c). This also means, that changes to the printable ascii (or ebcdic) -c). This also means, that changes to the printable ascii (or ebcdic)
columns are always ignored. Reverting a plain (or postscript) style columns are always ignored. Reverting a plain (or postscript) style
hexdump with xxd -r -p does not depend on the correct number of col hexdump with xxd -r -p does not depend on the correct number of col
umns. Here anything that looks like a pair of hex-digits is inter umns. Here anything that looks like a pair of hex-digits is inter
preted. preted.
Note the difference between Note the difference between
@ -129,28 +133,28 @@ CAVEATS
and and
% xxd -i < file % xxd -i < file
xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to
"rewind" input. A '+' makes a difference if the input source is stdin, "rewind" input. A '+' makes a difference if the input source is stdin,
and if stdin's file position is not at the start of the file by the and if stdin's file position is not at the start of the file by the
time xxd is started and given its input. The following examples may time xxd is started and given its input. The following examples may
help to clarify (or further confuse!)... help to clarify (or further confuse!)...
Rewind stdin before reading; needed because the `cat' has already read Rewind stdin before reading; needed because the `cat' has already read
to the end of stdin. to the end of stdin.
% sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file
Hexdump from file position 0x480 (=1024+128) onwards. The `+' sign Hexdump from file position 0x480 (=1024+128) onwards. The `+' sign
means "relative to the current position", thus the `128' adds to the 1k means "relative to the current position", thus the `128' adds to the 1k
where dd left off. where dd left off.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet"
< file < file
Hexdump from file position 0x100 ( = 1024-768) on. Hexdump from file position 0x100 ( = 1024-768) on.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet"
< file < file
However, this is a rare situation and the use of `+' is rarely needed. However, this is a rare situation and the use of `+' is rarely needed.
The author prefers to monitor the effect of xxd with strace(1) or The author prefers to monitor the effect of xxd with strace(1) or
truss(1), whenever -s is used. truss(1), whenever -s is used.
EXAMPLES EXAMPLES
@ -194,7 +198,7 @@ EXAMPLES
% xxd -s 0x36 -l 13 -c 13 xxd.1 % xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
Create a 65537 byte file with all bytes 0x00, except for the last one Create a 65537 byte file with all bytes 0x00, except for the last one
which is 'A' (hex 0x41). which is 'A' (hex 0x41).
% echo "010000: 41" | xxd -r > file % echo "010000: 41" | xxd -r > file
@ -204,7 +208,7 @@ EXAMPLES
* *
000fffc: 0000 0000 40 ....A 000fffc: 0000 0000 40 ....A
Create a 1 byte file containing a single 'A' character. The number Create a 1 byte file containing a single 'A' character. The number
after '-r -s' adds to the linenumbers found in the file; in effect, the after '-r -s' adds to the linenumbers found in the file; in effect, the
leading bytes are suppressed. leading bytes are suppressed.
% echo "010000: 41" | xxd -r -s -0x10000 > file % echo "010000: 41" | xxd -r -s -0x10000 > file
@ -245,7 +249,7 @@ SEE ALSO
uuencode(1), uudecode(1), patch(1) uuencode(1), uudecode(1), patch(1)
WARNINGS WARNINGS
The tools weirdness matches its creators brain. Use entirely at your The tools weirdness matches its creators brain. Use entirely at your
own risk. Copy files. Trace it. Become a wizard. own risk. Copy files. Trace it. Become a wizard.
VERSION VERSION

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2018 Jan 28 " Last Change: 2018 May 04
" Listen very carefully, I will say this only once " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")
@ -429,6 +429,13 @@ au BufNewFile,BufRead control
\| setf debcontrol \| setf debcontrol
\| endif \| endif
" Debian Copyright
au BufNewFile,BufRead */debian/copyright setf debcopyright
au BufNewFile,BufRead copyright
\ if getline(1) =~ '^Format:'
\| setf debcopyright
\| endif
" Debian Sources.list " Debian Sources.list
au BufNewFile,BufRead */etc/apt/sources.list setf debsources au BufNewFile,BufRead */etc/apt/sources.list setf debsources
au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources

View File

@ -1,5 +1,5 @@
" CHICKEN-specific Vim customizations " CHICKEN-specific Vim customizations
" Last Change: 2018-01-06 " Last Change: 2018-03-05
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" URL: https://foldling.org/vim/ftplugin/chicken.vim " URL: https://foldling.org/vim/ftplugin/chicken.vim
@ -14,34 +14,37 @@ endif
setl keywordprg=chicken-doc setl keywordprg=chicken-doc
setl lispwords+=and-let* setl lispwords+=and-let*
setl lispwords+=begin-for-syntax
setl lispwords+=compiler-typecase setl lispwords+=compiler-typecase
setl lispwords+=condition-case setl lispwords+=condition-case
setl lispwords+=define-compiler-syntax setl lispwords+=define-compiler-syntax
setl lispwords+=define-constant setl lispwords+=define-constant
setl lispwords+=define-external setl lispwords+=define-external
setl lispwords+=define-for-syntax setl lispwords+=define-for-syntax
setl lispwords+=define-foreign-type
setl lispwords+=define-inline setl lispwords+=define-inline
setl lispwords+=define-location
setl lispwords+=define-record setl lispwords+=define-record
setl lispwords+=define-record-printer setl lispwords+=define-record-printer
setl lispwords+=define-specialization setl lispwords+=define-specialization
setl lispwords+=define-syntax-rule
setl lispwords+=eval-when
setl lispwords+=fluid-let setl lispwords+=fluid-let
setl lispwords+=foreign-lambda*
setl lispwords+=foreign-primitive
setl lispwords+=foreign-safe-lambda*
setl lispwords+=functor
setl lispwords+=handle-exceptions setl lispwords+=handle-exceptions
setl lispwords+=let-compiler-syntax setl lispwords+=let-compiler-syntax
setl lispwords+=let-location
setl lispwords+=let-optionals setl lispwords+=let-optionals
setl lispwords+=let-optionals* setl lispwords+=let-optionals*
setl lispwords+=letrec-values setl lispwords+=letrec-values
setl lispwords+=match setl lispwords+=match
setl lispwords+=match-lambda
setl lispwords+=match-lambda*
setl lispwords+=match-let setl lispwords+=match-let
setl lispwords+=match-let* setl lispwords+=match-let*
setl lispwords+=match-letrec
setl lispwords+=module setl lispwords+=module
setl lispwords+=receive setl lispwords+=receive
setl lispwords+=select
setl lispwords+=set!-values setl lispwords+=set!-values
setl lispwords+=test-group
let b:undo_ftplugin = b:undo_ftplugin . ' keywordprg<' let b:undo_ftplugin = b:undo_ftplugin . ' keywordprg<'

View File

@ -3,20 +3,20 @@
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de> " Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
" Stefano Zacchiroli <zack@debian.org> " Stefano Zacchiroli <zack@debian.org>
" Last Change: 2018-01-06 " Last Change: 2018-01-28
" License: Vim License " License: Vim License
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim
" Bug completion requires apt-listbugs installed for Debian packages or " Bug completion requires apt-listbugs installed for Debian packages or
" python-launchpadlib installed for Ubuntu packages " python-launchpadlib installed for Ubuntu packages
if exists("b:did_ftplugin") if exists('b:did_ftplugin')
finish finish
endif endif
let b:did_ftplugin=1 let b:did_ftplugin=1
" {{{1 Local settings (do on every load) " {{{1 Local settings (do on every load)
if exists("g:debchangelog_fold_enable") if exists('g:debchangelog_fold_enable')
setlocal foldmethod=expr setlocal foldmethod=expr
setlocal foldexpr=DebGetChangelogFold(v:lnum) setlocal foldexpr=DebGetChangelogFold(v:lnum)
setlocal foldtext=DebChangelogFoldText() setlocal foldtext=DebChangelogFoldText()
@ -28,10 +28,10 @@ setlocal tw=78
setlocal comments=f:* setlocal comments=f:*
" Clean unloading " Clean unloading
let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<" let b:undo_ftplugin = 'setlocal tw< comments< foldmethod< foldexpr< foldtext<'
" }}}1 " }}}1
if exists("g:did_changelog_ftplugin") if exists('g:did_changelog_ftplugin')
finish finish
endif endif
@ -44,41 +44,41 @@ let g:did_changelog_ftplugin = 1
" Returns full name, either from $DEBFULLNAME or debianfullname. " Returns full name, either from $DEBFULLNAME or debianfullname.
" TODO Is there a way to determine name from anywhere else? " TODO Is there a way to determine name from anywhere else?
function <SID>FullName() function <SID>FullName()
if exists("$DEBFULLNAME") if exists('$DEBFULLNAME')
return $DEBFULLNAME return $DEBFULLNAME
elseif exists("g:debianfullname") elseif exists('g:debianfullname')
return g:debianfullname return g:debianfullname
else else
return "Your Name" return 'Your Name'
endif endif
endfunction endfunction
" Returns email address, from $DEBEMAIL, $EMAIL or debianemail. " Returns email address, from $DEBEMAIL, $EMAIL or debianemail.
function <SID>Email() function <SID>Email()
if exists("$DEBEMAIL") if exists('$DEBEMAIL')
return $DEBEMAIL return $DEBEMAIL
elseif exists("$EMAIL") elseif exists('$EMAIL')
return $EMAIL return $EMAIL
elseif exists("g:debianemail") elseif exists('g:debianemail')
return g:debianemail return g:debianemail
else else
return "your@email.address" return 'your@email.address'
endif endif
endfunction endfunction
" Returns date in RFC822 format. " Returns date in RFC822 format.
function <SID>Date() function <SID>Date()
let savelang = v:lc_time let savelang = v:lc_time
execute "language time C" execute 'language time C'
let dateandtime = strftime("%a, %d %b %Y %X %z") let dateandtime = strftime('%a, %d %b %Y %X %z')
execute "language time " . savelang execute 'language time ' . savelang
return dateandtime return dateandtime
endfunction endfunction
function <SID>WarnIfNotUnfinalised() function <SID>WarnIfNotUnfinalised()
if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 if match(getline('.'), ' -- [[:alpha:]][[:alnum:].]')!=-1
echohl WarningMsg echohl WarningMsg
echo "The entry has not been unfinalised before editing." echo 'The entry has not been unfinalised before editing.'
echohl None echohl None
return 1 return 1
endif endif
@ -86,10 +86,10 @@ function <SID>WarnIfNotUnfinalised()
endfunction endfunction
function <SID>Finalised() function <SID>Finalised()
let savelinenum = line(".") let savelinenum = line('.')
normal 1G 1
call search("^ -- ") call search('^ -- ')
if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 if match(getline('.'), ' -- [[:alpha:]][[:alnum:].]')!=-1
let returnvalue = 1 let returnvalue = 1
else else
let returnvalue = 0 let returnvalue = 0
@ -109,54 +109,54 @@ function NewVersion()
amenu disable Changelog.Unfinalise amenu disable Changelog.Unfinalise
amenu enable Changelog.Finalise amenu enable Changelog.Finalise
call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', '')) call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', ''))
call append(1, "") call append(1, '')
call append(2, "") call append(2, '')
call append(3, " -- ") call append(3, ' -- ')
call append(4, "") call append(4, '')
call Urgency("low") call Urgency('low')
normal 1G0 normal! 1G0
call search(")") call search(')')
normal h normal! h
normal  normal! 
call setline(1, substitute(getline(1), '-\$\$', '-', '')) call setline(1, substitute(getline(1), '-\$\$', '-', ''))
if exists("g:debchangelog_fold_enable") if exists('g:debchangelog_fold_enable')
foldopen foldopen
endif endif
call AddEntry() call AddEntry()
endfunction endfunction
function AddEntry() function AddEntry()
normal 1G 1
call search("^ -- ") call search('^ -- ')
normal kk .-2
call append(".", " * ") call append('.', ' * ')
normal jjj .+3
let warn=<SID>WarnIfNotUnfinalised() let warn=<SID>WarnIfNotUnfinalised()
normal kk .-2
if warn if warn
echohl MoreMsg echohl MoreMsg
call input("Hit ENTER") call input('Hit ENTER')
echohl None echohl None
endif endif
startinsert! startinsert!
endfunction endfunction
function CloseBug() function CloseBug()
normal 1G 1
call search("^ -- ") call search('^ -- ')
let warn=<SID>WarnIfNotUnfinalised() let warn=<SID>WarnIfNotUnfinalised()
normal kk .-2
call append(".", " * (closes: #" . input("Bug number to close: ") . ")") call append('.', ' * (closes: #' . input('Bug number to close: ') . ')')
normal j^ll normal! j^ll
startinsert startinsert
endfunction endfunction
function Distribution(dist) function Distribution(dist)
call setline(1, substitute(getline(1), ') *\%(UNRELEASED\|\l\+\);', ") " . a:dist . ";", "")) call setline(1, substitute(getline(1), ') *\%(UNRELEASED\|\l\+\);', ') ' . a:dist . ';', ''))
endfunction endfunction
function Urgency(urg) function Urgency(urg)
call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, "")) call setline(1, substitute(getline(1), 'urgency=.*$', 'urgency=' . a:urg, ''))
endfunction endfunction
function <SID>UnfinaliseMenu() function <SID>UnfinaliseMenu()
@ -172,9 +172,9 @@ endfunction
function Unfinalise() function Unfinalise()
call <SID>UnfinaliseMenu() call <SID>UnfinaliseMenu()
normal 1G 1
call search("^ -- ") call search('^ -- ')
call setline(".", " -- ") call setline('.', ' -- ')
endfunction endfunction
function <SID>FinaliseMenu() function <SID>FinaliseMenu()
@ -190,9 +190,9 @@ endfunction
function Finalise() function Finalise()
call <SID>FinaliseMenu() call <SID>FinaliseMenu()
normal 1G 1
call search("^ -- ") call search('^ -- ')
call setline(".", " -- " . <SID>FullName() . " <" . <SID>Email() . "> " . <SID>Date()) call setline('.', ' -- ' . <SID>FullName() . ' <' . <SID>Email() . '> ' . <SID>Date())
endfunction endfunction
@ -239,7 +239,7 @@ function! s:getAuthor(zonestart, zoneend)
let linepos = a:zoneend let linepos = a:zoneend
while linepos >= a:zonestart while linepos >= a:zonestart
let line = getline(linepos) let line = getline(linepos)
if line =~ '^ --' if line =~# '^ --'
return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '') return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '')
endif endif
let linepos -= 1 let linepos -= 1
@ -254,7 +254,7 @@ function! DebGetPkgSrcName(lineno)
let pkgname = '' let pkgname = ''
while lineidx > 0 while lineidx > 0
let curline = getline(lineidx) let curline = getline(lineidx)
if curline =~ '^\S' if curline =~# '^\S'
let pkgname = matchlist(curline, '^\(\S\+\).*$')[1] let pkgname = matchlist(curline, '^\(\S\+\).*$')[1]
break break
endif endif
@ -264,7 +264,7 @@ function! DebGetPkgSrcName(lineno)
endfunction endfunction
function! DebChangelogFoldText() function! DebChangelogFoldText()
if v:folddashes == '-' " changelog entry fold if v:folddashes ==# '-' " changelog entry fold
return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' ' return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' '
endif endif
return foldtext() return foldtext()
@ -272,19 +272,19 @@ endfunction
function! DebGetChangelogFold(lnum) function! DebGetChangelogFold(lnum)
let line = getline(a:lnum) let line = getline(a:lnum)
if line =~ '^\w\+' if line =~# '^\w\+'
return '>1' " beginning of a changelog entry return '>1' " beginning of a changelog entry
endif endif
if line =~ '^\s\+\[.*\]' if line =~# '^\s\+\[.*\]'
return '>2' " beginning of an author-specific chunk return '>2' " beginning of an author-specific chunk
endif endif
if line =~ '^ --' if line =~# '^ --'
return '1' return '1'
endif endif
return '=' return '='
endfunction endfunction
if exists("g:debchangelog_fold_enable") if exists('g:debchangelog_fold_enable')
silent! foldopen! " unfold the entry the cursor is on (usually the first one) silent! foldopen! " unfold the entry the cursor is on (usually the first one)
endif endif
@ -305,13 +305,13 @@ fun! DebCompleteBugs(findstart, base)
let try_colidx = col('.') - 1 let try_colidx = col('.') - 1
let colidx = -1 " default to no-completion-possible let colidx = -1 " default to no-completion-possible
while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:' while try_colidx > 0 && line[try_colidx - 1] =~# '\s\|\d\|#\|,\|:'
let try_colidx = try_colidx - 1 let try_colidx = try_colidx - 1
if line[try_colidx] == '#' && colidx == -1 if line[try_colidx] ==# '#' && colidx == -1
" found hash, where we complete from: " found hash, where we complete from:
let colidx = try_colidx let colidx = try_colidx
elseif line[try_colidx] == ':' elseif line[try_colidx] ==# ':'
if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~ '\clp:' if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~? '\clp:'
let g:debchangelog_complete_mode = 'lp' let g:debchangelog_complete_mode = 'lp'
endif endif
break break
@ -320,7 +320,7 @@ fun! DebCompleteBugs(findstart, base)
return colidx return colidx
else " return matches: else " return matches:
let bug_lines = [] let bug_lines = []
if g:debchangelog_complete_mode == 'lp' if g:debchangelog_complete_mode ==? 'lp'
if ! has('python') if ! has('python')
echoerr 'vim must be built with Python support to use LP bug completion' echoerr 'vim must be built with Python support to use LP bug completion'
return return
@ -363,7 +363,7 @@ EOF
for line in bug_lines for line in bug_lines
let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$') let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$')
" filter only those which match a:base: " filter only those which match a:base:
if parts[1] !~ "^" . a:base if parts[1] !~ '^' . a:base
continue continue
endif endif
let completion = {} let completion = {}

View File

@ -2,17 +2,17 @@
" Language: Debian control files " Language: Debian control files
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainer: Pierre Habouzit <madcoder@debian.org> " Former Maintainer: Pierre Habouzit <madcoder@debian.org>
" Last Change: 2018-01-06 " Last Change: 2018-01-28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim
" Do these settings once per buffer " Do these settings once per buffer
if exists("b:did_ftplugin") if exists('b:did_ftplugin')
finish finish
endif endif
let b:did_ftplugin=1 let b:did_ftplugin=1
" {{{1 Local settings (do on every load) " {{{1 Local settings (do on every load)
if exists("g:debcontrol_fold_enable") if exists('g:debcontrol_fold_enable')
setlocal foldmethod=expr setlocal foldmethod=expr
setlocal foldexpr=DebControlFold(v:lnum) setlocal foldexpr=DebControlFold(v:lnum)
setlocal foldtext=DebControlFoldText() setlocal foldtext=DebControlFoldText()
@ -20,7 +20,7 @@ endif
setlocal textwidth=0 setlocal textwidth=0
" Clean unloading " Clean unloading
let b:undo_ftplugin = "setlocal tw< foldmethod< foldexpr< foldtext<" let b:undo_ftplugin = 'setlocal tw< foldmethod< foldexpr< foldtext<'
" }}}1 " }}}1
@ -32,7 +32,7 @@ function! s:getField(f, lnum)
while line !~ '^'.a:f.':' while line !~ '^'.a:f.':'
let fwdsteps += 1 let fwdsteps += 1
let line = getline(a:lnum + fwdsteps) let line = getline(a:lnum + fwdsteps)
if line == '' if line ==# ''
return 'unknown' return 'unknown'
endif endif
endwhile endwhile
@ -40,9 +40,9 @@ function! s:getField(f, lnum)
endfunction endfunction
function! DebControlFoldText() function! DebControlFoldText()
if v:folddashes == '-' " debcontrol entry fold if v:folddashes ==# '-' " debcontrol entry fold
let type = substitute(getline(v:foldstart), ':.*', '', '') let type = substitute(getline(v:foldstart), ':.*', '', '')
if type == 'Source' if type ==# 'Source'
let ftext = substitute(foldtext(), ' *Source: *', ' ', '') let ftext = substitute(foldtext(), ' *Source: *', ' ', '')
return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' ' return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' '
endif endif
@ -56,11 +56,11 @@ endfunction
function! DebControlFold(l) function! DebControlFold(l)
" This is for not merging blank lines around folds to them " This is for not merging blank lines around folds to them
if getline(a:l) =~ '^Source:' if getline(a:l) =~# '^Source:'
return '>1' return '>1'
endif endif
if getline(a:l) =~ '^Package:' if getline(a:l) =~# '^Package:'
return '>1' return '>1'
endif endif

View File

@ -1,7 +1,7 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: man " Language: man
" Maintainer: SungHyun Nam <goweol@gmail.com> " Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2018 Jan 15 " Last Change: 2018 May 2
" To make the ":Man" command available before editing a manual page, source " To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file. " this script from your startup vimrc file.
@ -164,7 +164,7 @@ func <SID>GetPage(...)
setl buftype=nofile noswapfile setl buftype=nofile noswapfile
setl ma nonu nornu nofen setl ma nonu nornu nofen
silent exec "norm 1GdG" silent exec "norm! 1GdG"
let unsetwidth = 0 let unsetwidth = 0
if empty($MANWIDTH) if empty($MANWIDTH)
let $MANWIDTH = winwidth(0) let $MANWIDTH = winwidth(0)
@ -188,10 +188,10 @@ func <SID>GetPage(...)
endif endif
" Remove blank lines from top and bottom. " Remove blank lines from top and bottom.
while getline(1) =~ '^\s*$' while getline(1) =~ '^\s*$'
silent keepj norm ggdd silent keepj norm! ggdd
endwhile endwhile
while getline('$') =~ '^\s*$' while getline('$') =~ '^\s*$'
silent keepj norm Gdd silent keepj norm! Gdd
endwhile endwhile
1 1
setl ft=man nomod setl ft=man nomod
@ -208,7 +208,7 @@ func <SID>PopPage()
exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth
exec s:man_tag_buf."b" exec s:man_tag_buf."b"
exec s:man_tag_lin exec s:man_tag_lin
exec "norm ".s:man_tag_col."|" exec "norm! ".s:man_tag_col."|"
exec "unlet s:man_tag_buf_".s:man_tag_depth exec "unlet s:man_tag_buf_".s:man_tag_depth
exec "unlet s:man_tag_lin_".s:man_tag_depth exec "unlet s:man_tag_lin_".s:man_tag_depth
exec "unlet s:man_tag_col_".s:man_tag_depth exec "unlet s:man_tag_col_".s:man_tag_depth

View File

@ -3,7 +3,7 @@
" Maintainer: Tom Picton <tom@tompicton.co.uk> " Maintainer: Tom Picton <tom@tompicton.co.uk>
" Previous Maintainer: James Sully <sullyj3@gmail.com> " Previous Maintainer: James Sully <sullyj3@gmail.com>
" Previous Maintainer: Johannes Zellner <johannes@zellner.org> " Previous Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: Wed, 20 December 2017 " Last Change: Sun, 15 April 2018
" https://github.com/tpict/vim-ftplugin-python " https://github.com/tpict/vim-ftplugin-python
if exists("b:did_ftplugin") | finish | endif if exists("b:did_ftplugin") | finish | endif
@ -14,7 +14,25 @@ set cpo&vim
setlocal cinkeys-=0# setlocal cinkeys-=0#
setlocal indentkeys-=0# setlocal indentkeys-=0#
setlocal include=^\\s*\\(from\\\|import\\) setlocal include=^\\s*\\(from\\\|import\\)
setlocal includeexpr=substitute(v:fname,'\\.','/','g')
" For imports with leading .., append / and replace additional .s with ../
let b:grandparent_match = '^\(.\.\)\(\.*\)'
let b:grandparent_sub = '\=submatch(1)."/".repeat("../",strlen(submatch(2)))'
" For imports with a single leading ., replace it with ./
let b:parent_match = '^\.\(\.\)\@!'
let b:parent_sub = './'
" Replace any . sandwiched between word characters with /
let b:child_match = '\(\w\)\.\(\w\)'
let b:child_sub = '\1/\2'
setlocal includeexpr=substitute(substitute(substitute(
\v:fname,
\b:grandparent_match,b:grandparent_sub,''),
\b:parent_match,b:parent_sub,''),
\b:child_match,b:child_sub,'g')
setlocal suffixesadd=.py setlocal suffixesadd=.py
setlocal comments=b:#,fb:- setlocal comments=b:#,fb:-
setlocal commentstring=#\ %s setlocal commentstring=#\ %s
@ -35,35 +53,35 @@ let b:prev='\v^\s*(class\|def\|async def)>'
let b:next_end='\v\S\n*(%$\|^(\s*\n*)*(class\|def\|async def)\|^\S)' let b:next_end='\v\S\n*(%$\|^(\s*\n*)*(class\|def\|async def)\|^\S)'
let b:prev_end='\v\S\n*(^(\s*\n*)*(class\|def\|async def)\|^\S)' let b:prev_end='\v\S\n*(^(\s*\n*)*(class\|def\|async def)\|^\S)'
execute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W')<cr>" execute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W', v:count1)<cr>"
execute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb')<cr>" execute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb', v:count1)<cr>"
execute "nnoremap <silent> <buffer> ][ :call <SID>Python_jump('n', '". b:next_endtoplevel."', 'W', 0)<cr>" execute "nnoremap <silent> <buffer> ][ :call <SID>Python_jump('n', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>"
execute "nnoremap <silent> <buffer> [] :call <SID>Python_jump('n', '". b:prev_endtoplevel."', 'Wb', 0)<cr>" execute "nnoremap <silent> <buffer> [] :call <SID>Python_jump('n', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>"
execute "nnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '". b:next."', 'W')<cr>" execute "nnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '". b:next."', 'W', v:count1)<cr>"
execute "nnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '". b:prev."', 'Wb')<cr>" execute "nnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '". b:prev."', 'Wb', v:count1)<cr>"
execute "nnoremap <silent> <buffer> ]M :call <SID>Python_jump('n', '". b:next_end."', 'W', 0)<cr>" execute "nnoremap <silent> <buffer> ]M :call <SID>Python_jump('n', '". b:next_end."', 'W', 0, v:count1)<cr>"
execute "nnoremap <silent> <buffer> [M :call <SID>Python_jump('n', '". b:prev_end."', 'Wb', 0)<cr>" execute "nnoremap <silent> <buffer> [M :call <SID>Python_jump('n', '". b:prev_end."', 'Wb', 0, v:count1)<cr>"
execute "onoremap <silent> <buffer> ]] :call <SID>Python_jump('o', '". b:next_toplevel."', 'W')<cr>" execute "onoremap <silent> <buffer> ]] :call <SID>Python_jump('o', '". b:next_toplevel."', 'W', v:count1)<cr>"
execute "onoremap <silent> <buffer> [[ :call <SID>Python_jump('o', '". b:prev_toplevel."', 'Wb')<cr>" execute "onoremap <silent> <buffer> [[ :call <SID>Python_jump('o', '". b:prev_toplevel."', 'Wb', v:count1)<cr>"
execute "onoremap <silent> <buffer> ][ :call <SID>Python_jump('o', '". b:next_endtoplevel."', 'W', 0)<cr>" execute "onoremap <silent> <buffer> ][ :call <SID>Python_jump('o', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>"
execute "onoremap <silent> <buffer> [] :call <SID>Python_jump('o', '". b:prev_endtoplevel."', 'Wb', 0)<cr>" execute "onoremap <silent> <buffer> [] :call <SID>Python_jump('o', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>"
execute "onoremap <silent> <buffer> ]m :call <SID>Python_jump('o', '". b:next."', 'W')<cr>" execute "onoremap <silent> <buffer> ]m :call <SID>Python_jump('o', '". b:next."', 'W', v:count1)<cr>"
execute "onoremap <silent> <buffer> [m :call <SID>Python_jump('o', '". b:prev."', 'Wb')<cr>" execute "onoremap <silent> <buffer> [m :call <SID>Python_jump('o', '". b:prev."', 'Wb', v:count1)<cr>"
execute "onoremap <silent> <buffer> ]M :call <SID>Python_jump('o', '". b:next_end."', 'W', 0)<cr>" execute "onoremap <silent> <buffer> ]M :call <SID>Python_jump('o', '". b:next_end."', 'W', 0, v:count1)<cr>"
execute "onoremap <silent> <buffer> [M :call <SID>Python_jump('o', '". b:prev_end."', 'Wb', 0)<cr>" execute "onoremap <silent> <buffer> [M :call <SID>Python_jump('o', '". b:prev_end."', 'Wb', 0, v:count1)<cr>"
execute "xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '". b:next_toplevel."', 'W')<cr>" execute "xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '". b:next_toplevel."', 'W', v:count1)<cr>"
execute "xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '". b:prev_toplevel."', 'Wb')<cr>" execute "xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '". b:prev_toplevel."', 'Wb', v:count1)<cr>"
execute "xnoremap <silent> <buffer> ][ :call <SID>Python_jump('x', '". b:next_endtoplevel."', 'W', 0)<cr>" execute "xnoremap <silent> <buffer> ][ :call <SID>Python_jump('x', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>"
execute "xnoremap <silent> <buffer> [] :call <SID>Python_jump('x', '". b:prev_endtoplevel."', 'Wb', 0)<cr>" execute "xnoremap <silent> <buffer> [] :call <SID>Python_jump('x', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>"
execute "xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '". b:next."', 'W')<cr>" execute "xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '". b:next."', 'W', v:count1)<cr>"
execute "xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '". b:prev."', 'Wb')<cr>" execute "xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '". b:prev."', 'Wb', v:count1)<cr>"
execute "xnoremap <silent> <buffer> ]M :call <SID>Python_jump('x', '". b:next_end."', 'W', 0)<cr>" execute "xnoremap <silent> <buffer> ]M :call <SID>Python_jump('x', '". b:next_end."', 'W', 0, v:count1)<cr>"
execute "xnoremap <silent> <buffer> [M :call <SID>Python_jump('x', '". b:prev_end."', 'Wb', 0)<cr>" execute "xnoremap <silent> <buffer> [M :call <SID>Python_jump('x', '". b:prev_end."', 'Wb', 0, v:count1)<cr>"
if !exists('*<SID>Python_jump') if !exists('*<SID>Python_jump')
fun! <SID>Python_jump(mode, motion, flags, ...) range fun! <SID>Python_jump(mode, motion, flags, count, ...) range
let l:startofline = (a:0 >= 1) ? a:1 : 1 let l:startofline = (a:0 >= 1) ? a:1 : 1
if a:mode == 'x' if a:mode == 'x'
@ -74,7 +92,7 @@ if !exists('*<SID>Python_jump')
normal! 0 normal! 0
endif endif
let cnt = v:count1 let cnt = a:count
mark ' mark '
while cnt > 0 while cnt > 0
call search(a:motion, a:flags) call search(a:motion, a:flags)

View File

@ -1,6 +1,6 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Scheme (R7RS) " Language: Scheme (R7RS)
" Last Change: 2018-01-20 " Last Change: 2018-03-05
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com> " Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
@ -14,25 +14,20 @@ let s:cpo = &cpo
set cpo&vim set cpo&vim
setl lisp setl lisp
setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,ex:\|# setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,mb:\|,ex:\|#
setl commentstring=;%s setl commentstring=;%s
setl define=^\\s*(def\\k* setl define=^\\s*(def\\k*
setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126 setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126
let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<' let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<'
setl lispwords=begin setl lispwords=case
setl lispwords+=case
setl lispwords+=case-lambda
setl lispwords+=cond
setl lispwords+=cond-expand
setl lispwords+=define setl lispwords+=define
setl lispwords+=define-record-type setl lispwords+=define-record-type
setl lispwords+=define-syntax setl lispwords+=define-syntax
setl lispwords+=define-values setl lispwords+=define-values
setl lispwords+=do setl lispwords+=do
setl lispwords+=guard setl lispwords+=guard
setl lispwords+=import
setl lispwords+=lambda setl lispwords+=lambda
setl lispwords+=let setl lispwords+=let
setl lispwords+=let* setl lispwords+=let*

View File

@ -1,8 +1,10 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: xml " Language: xml
" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> " Maintainer: Christian Brabandt <cb@256bit.org>
" Last Changed: 20 Jan 2009 " Last Changed: May 08th, 2018
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin " Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
@ -10,16 +12,16 @@ let b:did_ftplugin = 1
" Make sure the continuation lines below do not cause problems in " Make sure the continuation lines below do not cause problems in
" compatibility mode. " compatibility mode.
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo-=C set cpo&vim
setlocal commentstring=<!--%s--> setlocal commentstring=<!--%s-->
setlocal comments=s:<!--,m:\ \ \ \ \ ,e:--> " Remove the middlepart from the comments section, as this causes problems:
" https://groups.google.com/d/msg/vim_dev/x4GT-nqa0Kg/jvtRnEbtAnMJ
setlocal comments=s:<!--,e:-->
setlocal formatoptions-=t setlocal formatoptions-=t
if !exists("g:ft_xml_autocomment") || (g:ft_xml_autocomment == 1) setlocal formatoptions+=croql
setlocal formatoptions+=croql setlocal formatexpr=xmlformat#Format()
endif
" XML: thanks to Johannes Zellner and Akbar Ibrahim " XML: thanks to Johannes Zellner and Akbar Ibrahim
" - case sensitive " - case sensitive
@ -39,7 +41,6 @@ if exists("loaded_matchit")
\ '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>' \ '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
endif endif
"
" For Omni completion, by Mikolaj Machowski. " For Omni completion, by Mikolaj Machowski.
if exists('&ofu') if exists('&ofu')
setlocal ofu=xmlcomplete#CompleteTags setlocal ofu=xmlcomplete#CompleteTags
@ -47,17 +48,17 @@ endif
command! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>) command! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>)
command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>) command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>)
" Change the :browse e filter to primarily show xml-related files. " Change the :browse e filter to primarily show xml-related files.
if has("gui_win32") if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter="XML Files (*.xml)\t*.xml\n" . let b:browsefilter="XML Files (*.xml)\t*.xml\n" .
\ "DTD Files (*.dtd)\t*.dtd\n" . \ "DTD Files (*.dtd)\t*.dtd\n" .
\ "All Files (*.*)\t*.*\n" \ "XSD Files (*.xsd)\t*.xsd\n" .
\ "All Files (*.*)\t*.*\n"
endif endif
" Undo the stuff we changed. " Undo the stuff we changed.
let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" . let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions< formatexpr< " .
\ " | unlet! b:match_ignorecase b:match_words b:browsefilter" \ " | unlet! b:match_ignorecase b:match_words b:browsefilter"
" Restore the saved compatibility options. " Restore the saved compatibility options.
let &cpo = s:save_cpo let &cpo = s:save_cpo

View File

@ -2,7 +2,7 @@
" Header: "{{{ " Header: "{{{
" Maintainer: Bram Moolenaar " Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de> " Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2017 Jun 13 " Last Change: 2018 Mar 28
" Version: 1.0 " Version: 1.0
" Description: HTML indent script with cached state for faster indenting on a " Description: HTML indent script with cached state for faster indenting on a
" range of lines. " range of lines.
@ -56,6 +56,9 @@ let s:cpo_save = &cpo
set cpo-=C set cpo-=C
"}}} "}}}
" Pattern to match the name of a tag, including custom elements.
let s:tagname = '\w\+\(-\w\+\)*'
" Check and process settings from b:html_indent and g:html_indent... variables. " Check and process settings from b:html_indent and g:html_indent... variables.
" Prefer using buffer-local settings over global settings, so that there can " Prefer using buffer-local settings over global settings, so that there can
" be defaults for all HTML files and exceptions for specific types of HTML " be defaults for all HTML files and exceptions for specific types of HTML
@ -213,7 +216,8 @@ endfunc "}}}
" Add known tag pairs. " Add known tag pairs.
" Self-closing tags and tags that are sometimes {{{ " Self-closing tags and tags that are sometimes {{{
" self-closing (e.g., <p>) are not here (when encountering </p> we can find " self-closing (e.g., <p>) are not here (when encountering </p> we can find
" the matching <p>, but not the other way around). " the matching <p>, but not the other way around). Known self-closing tags:
" 'p', 'img', 'source'.
" Old HTML tags: " Old HTML tags:
call s:AddITags(s:indent_tags, [ call s:AddITags(s:indent_tags, [
\ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', \ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big',
@ -230,9 +234,9 @@ call s:AddITags(s:indent_tags, [
call s:AddITags(s:indent_tags, [ call s:AddITags(s:indent_tags, [
\ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas', \ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas',
\ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption', \ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption',
\ 'figure', 'footer', 'header', 'keygen', 'mark', 'meter', 'nav', 'output', \ 'figure', 'footer', 'header', 'keygen', 'main', 'mark', 'meter',
\ 'progress', 'rp', 'rt', 'ruby', 'section', 'source', 'summary', 'svg', \ 'nav', 'output', 'picture', 'progress', 'rp', 'rt', 'ruby', 'section',
\ 'time', 'track', 'video', 'wbr']) \ 'summary', 'svg', 'time', 'track', 'video', 'wbr'])
" Tags added for web components: " Tags added for web components:
call s:AddITags(s:indent_tags, [ call s:AddITags(s:indent_tags, [
@ -280,7 +284,7 @@ func! s:CountITags(text)
let s:nextrel = 0 " relative indent steps for next line [unit &sw]: let s:nextrel = 0 " relative indent steps for next line [unit &sw]:
let s:block = 0 " assume starting outside of a block let s:block = 0 " assume starting outside of a block
let s:countonly = 1 " don't change state let s:countonly = 1 " don't change state
call substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g') call substitute(a:text, '<\zs/\=' . s:tagname . '\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
let s:countonly = 0 let s:countonly = 0
endfunc "}}} endfunc "}}}
@ -292,7 +296,7 @@ func! s:CountTagsAndState(text)
let s:nextrel = 0 " relative indent steps for next line [unit &sw]: let s:nextrel = 0 " relative indent steps for next line [unit &sw]:
let s:block = b:hi_newstate.block let s:block = b:hi_newstate.block
let tmp = substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g') let tmp = substitute(a:text, '<\zs/\=' . s:tagname . '\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
if s:block == 3 if s:block == 3
let b:hi_newstate.scripttype = s:GetScriptType(matchstr(tmp, '\C.*<SCRIPT\>\zs[^>]*')) let b:hi_newstate.scripttype = s:GetScriptType(matchstr(tmp, '\C.*<SCRIPT\>\zs[^>]*'))
endif endif
@ -530,7 +534,7 @@ func! s:FreshState(lnum)
let swendtag = match(text, '^\s*</') >= 0 let swendtag = match(text, '^\s*</') >= 0
" If previous line ended in a closing tag, line up with the opening tag. " If previous line ended in a closing tag, line up with the opening tag.
if !swendtag && text =~ '</\w\+\s*>\s*$' if !swendtag && text =~ '</' . s:tagname . '\s*>\s*$'
call cursor(state.lnum, 99999) call cursor(state.lnum, 99999)
normal! F< normal! F<
let start_lnum = HtmlIndent_FindStartTag() let start_lnum = HtmlIndent_FindStartTag()
@ -860,7 +864,7 @@ func! HtmlIndent_FindStartTag()
" The cursor must be on or before a closing tag. " The cursor must be on or before a closing tag.
" If found, positions the cursor at the match and returns the line number. " If found, positions the cursor at the match and returns the line number.
" Otherwise returns 0. " Otherwise returns 0.
let tagname = matchstr(getline('.')[col('.') - 1:], '</\zs\w\+\ze') let tagname = matchstr(getline('.')[col('.') - 1:], '</\zs' . s:tagname . '\ze')
let start_lnum = searchpair('<' . tagname . '\>', '', '</' . tagname . '\>', 'bW') let start_lnum = searchpair('<' . tagname . '\>', '', '</' . tagname . '\>', 'bW')
if start_lnum > 0 if start_lnum > 0
return start_lnum return start_lnum
@ -876,7 +880,7 @@ func! HtmlIndent_FindTagEnd()
" a self-closing tag, to the matching ">". " a self-closing tag, to the matching ">".
" Limited to look up to b:html_indent_line_limit lines away. " Limited to look up to b:html_indent_line_limit lines away.
let text = getline('.') let text = getline('.')
let tagname = matchstr(text, '\w\+\|!--', col('.')) let tagname = matchstr(text, s:tagname . '\|!--', col('.'))
if tagname == '!--' if tagname == '!--'
call search('--\zs>') call search('--\zs>')
elseif s:get_tag('/' . tagname) != 0 elseif s:get_tag('/' . tagname) != 0
@ -921,9 +925,22 @@ func! s:InsideTag(foundHtmlString)
else else
let idx = match(text, '\s\zs[_a-zA-Z0-9-]\+="') let idx = match(text, '\s\zs[_a-zA-Z0-9-]\+="')
endif endif
if idx == -1
" try <tag attr
let idx = match(text, '<' . s:tagname . '\s\+\zs\w')
endif
if idx == -1
" after just <tag indent one level more
let idx = match(text, '<' . s:tagname . '$')
if idx >= 0
call cursor(lnum, idx)
return virtcol('.') + shiftwidth()
endif
endif
if idx > 0 if idx > 0
" Found the attribute. TODO: assumes spaces, no Tabs. " Found the attribute to align with.
return idx call cursor(lnum, idx)
return virtcol('.')
endif endif
endwhile endwhile
return -1 return -1

View File

@ -1,12 +1,15 @@
" Vim indent file " Vim indent file
" Language: Shell Script " Language: Shell Script
" Maintainer: Christian Brabandt <cb@256bit.org> " Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Original Author: Nikolai Weibull <now@bitwi.se> " Original Author: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2017-08-08 " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Latest Revision: 2018-03-26
" License: Vim (see :h license) " License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent " Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog: " Changelog:
" 20180326 - better support for line continuation
" 20180325 - better detection of function definitions
" 20180127 - better support for zsh complex commands
" 20170808: - better indent of line continuation " 20170808: - better indent of line continuation
" 20170502: - get rid of buffer-shiftwidth function " 20170502: - get rid of buffer-shiftwidth function
" 20160912: - preserve indentation of here-doc blocks " 20160912: - preserve indentation of here-doc blocks
@ -59,12 +62,15 @@ function! GetShIndent()
if lnum == 0 if lnum == 0
return 0 return 0
endif endif
let line = getline(lnum)
let pnum = prevnonblank(lnum - 1) let pnum = prevnonblank(lnum - 1)
let pline = getline(pnum)
let ind = indent(lnum) let ind = indent(lnum)
let line = getline(lnum)
if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' " Check contents of previous lines
if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' ||
\ (&ft is# 'zsh' && line =~ '\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>')
if line !~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$' if line !~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$'
let ind += s:indent_value('default') let ind += s:indent_value('default')
endif endif
@ -72,21 +78,35 @@ function! GetShIndent()
if !s:is_case_ended(line) if !s:is_case_ended(line)
let ind += s:indent_value('case-statements') let ind += s:indent_value('case-statements')
endif endif
elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{' || line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{' " function definition
elseif s:is_function_definition(line)
if line !~ '}\s*\%(#.*\)\=$' if line !~ '}\s*\%(#.*\)\=$'
let ind += s:indent_value('default') let ind += s:indent_value('default')
endif endif
elseif s:is_continuation_line(line) elseif s:is_continuation_line(line)
if pnum == 0 || !s:is_continuation_line(getline(pnum)) if pnum == 0 || !s:is_continuation_line(pline)
let ind += s:indent_value('continuation-line') let ind += s:indent_value('continuation-line')
endif endif
elseif pnum != 0 && s:is_continuation_line(getline(pnum)) elseif s:end_block(line) && !s:start_block(line)
let ind = indent(s:find_continued_lnum(pnum)) let ind -= s:indent_value('default')
elseif pnum != 0 && s:is_continuation_line(pline) && !s:end_block(getline(v:lnum))
" only add indent, if line and pline is in the same block
let i = v:lnum
let ind2 = indent(s:find_continued_lnum(pnum))
while !s:is_empty(getline(i)) && i > pnum
let i -= 1
endw
if i == pnum
let ind += ind2
else
let ind = ind2
endif
endif endif
let pine = line let pine = line
" Check content of current line
let line = getline(v:lnum) let line = getline(v:lnum)
if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\|end\)\>' || line =~ '^\s*}' if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\|end\)\>' || s:end_block(line)
let ind -= s:indent_value('default') let ind -= s:indent_value('default')
elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1)) elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1))
let ind -= s:indent_value('default') let ind -= s:indent_value('default')
@ -112,14 +132,24 @@ function! GetShIndent()
" statements, executed within a here document. Keep the current indent " statements, executed within a here document. Keep the current indent
elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1 elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1
return indent(v:lnum) return indent(v:lnum)
elseif s:is_comment(line) && s:is_empty(getline(v:lnum-1))
return indent(v:lnum)
endif endif
return ind return ind > 0 ? ind : 0
endfunction endfunction
function! s:is_continuation_line(line) function! s:is_continuation_line(line)
return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\||\)' . " Comment, cannot be a line continuation
if a:line =~ '^\s*#'
return 0
else
" start-of-line
" \\ or && or || or |
" followed optionally by { or #
return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\||\)' .
\ '\s*\({\s*\)\=\(#.*\)\=$' \ '\s*\({\s*\)\=\(#.*\)\=$'
endif
endfunction endfunction
function! s:find_continued_lnum(lnum) function! s:find_continued_lnum(lnum)
@ -130,6 +160,12 @@ function! s:find_continued_lnum(lnum)
return i return i
endfunction endfunction
function! s:is_function_definition(line)
return a:line =~ '^\s*\<\k\+\>\s*()\s*{' ||
\ a:line =~ '^\s*{' ||
\ a:line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{'
endfunction
function! s:is_case_label(line, pnum) function! s:is_case_label(line, pnum)
if a:line !~ '^\s*(\=.*)' if a:line !~ '^\s*(\=.*)'
return 0 return 0
@ -195,5 +231,29 @@ function! s:escape(pattern)
return '\V'. escape(a:pattern, '\\') return '\V'. escape(a:pattern, '\\')
endfunction endfunction
function! s:is_empty(line)
return a:line =~ '^\s*$'
endfunction
function! s:end_block(line)
return a:line =~ '^\s*}'
endfunction
function! s:start_block(line)
return a:line =~ '{\s*\(#.*\)\?$'
endfunction
function! s:find_start_block(lnum)
let i = a:lnum
while i > 1 && !s:start_block(getline(i))
let i -= 1
endwhile
return i
endfunction
function! s:is_comment(line)
return a:line =~ '^\s*#'
endfunction
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

View File

@ -2,7 +2,7 @@
" Language: LaTeX " Language: LaTeX
" Maintainer: Yichao Zhou <broken.zhou AT gmail.com> " Maintainer: Yichao Zhou <broken.zhou AT gmail.com>
" Created: Sat, 16 Feb 2002 16:50:19 +0100 " Created: Sat, 16 Feb 2002 16:50:19 +0100
" Version: 0.9.4 " Version: 1.0.0
" Please email me if you found something I can do. Comments, bug report and " Please email me if you found something I can do. Comments, bug report and
" feature request are welcome. " feature request are welcome.
@ -62,6 +62,8 @@
" (*) Fix a bug between g:tex_noindent_env and g:tex_indent_items " (*) Fix a bug between g:tex_noindent_env and g:tex_indent_items
" Now g:tex_noindent_env='document\|verbatim\|itemize' (Emacs " Now g:tex_noindent_env='document\|verbatim\|itemize' (Emacs
" style) is supported. Thanks Miles Wheeler for reporting. " style) is supported. Thanks Miles Wheeler for reporting.
" 2018/02/07 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Make indentation more smart in the normal mode
" "
" }}} " }}}
@ -91,19 +93,14 @@
" If this variable is set, item-environments are indented like Emacs does " If this variable is set, item-environments are indented like Emacs does
" it, i.e., continuation lines are indented with a shiftwidth. " it, i.e., continuation lines are indented with a shiftwidth.
" "
" NOTE: I've already set the variable below; delete the corresponding line " set unset
" if you don't like this behaviour. " ------------------------------------------------------
" " \begin{itemize} \begin{itemize}
" Per default, it is unset. " \item blablabla \item blablabla
" " bla bla bla bla bla bla
" set unset " \item blablabla \item blablabla
" ---------------------------------------------------------------- " bla bla bla bla bla bla
" \begin{itemize} \begin{itemize} " \end{itemize} \end{itemize}
" \item blablabla \item blablabla
" bla bla bla bla bla bla
" \item blablabla \item blablabla
" bla bla bla bla bla bla
" \end{itemize} \end{itemize}
" "
" "
" * g:tex_items " * g:tex_items
@ -290,8 +287,9 @@ function! GetTeXIndent() " {{{
endif endif
endif endif
if stay if stay && mode() == 'i'
" If there is no obvious indentation hint, we trust our user. " If there is no obvious indentation hint, and indentation is triggered
" in insert mode, we trust our user.
if empty(cline) if empty(cline)
return ind return ind
else else

View File

@ -2,7 +2,7 @@
" Maintainer: Adrien Beau <version.francaise@free.fr> " Maintainer: Adrien Beau <version.francaise@free.fr>
" First Version: Francois Thunus <thunus@systran.fr> " First Version: Francois Thunus <thunus@systran.fr>
" Last Modification: David Blanchet <david.blanchet@free.fr> " Last Modification: David Blanchet <david.blanchet@free.fr>
" Last Change: 2012 May 01 " Last Change: 2018 Apr 25
" Quit when menu translations have already been done. " Quit when menu translations have already been done.
if exists("did_menu_trans") if exists("did_menu_trans")
@ -47,7 +47,7 @@ menutrans &Close<Tab>:close &Fermer<Tab>:close
menutrans &Save<Tab>:w &Enregistrer<Tab>:w menutrans &Save<Tab>:w &Enregistrer<Tab>:w
menutrans Save\ &As\.\.\.<Tab>:sav Enregistrer\ &sous\.\.\.<Tab>:sav menutrans Save\ &As\.\.\.<Tab>:sav Enregistrer\ &sous\.\.\.<Tab>:sav
" -SEP2- " -SEP2-
menutrans Split\ &Diff\ with\.\.\. &Difference\ avec\.\.\. menutrans Split\ &Diff\ with\.\.\. &Diff<EFBFBD>rence\ avec\.\.\.
"menutrans Split\ Patched\ &By\.\.\. &Patcher\ avec\.\.\. "menutrans Split\ Patched\ &By\.\.\. &Patcher\ avec\.\.\.
menutrans Split\ Patched\ &By\.\.\. &Tester\ un\ patch\.\.\. menutrans Split\ Patched\ &By\.\.\. &Tester\ un\ patch\.\.\.
" -SEP3- " -SEP3-
@ -121,7 +121,7 @@ menutrans Soft\ &Tabstop &Pseudo-tabulations
menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\. menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\.
menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\. menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\.
let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour d<>sactiver le formattage)." let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour d<>sactiver le formatage)."
let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel <20>crire le fichier." let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel <20>crire le fichier."
let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler " let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler "
@ -340,7 +340,7 @@ fun! Do_toolbar_tmenu()
tmenu ToolBar.WinClose Fermer fen<EFBFBD>tre tmenu ToolBar.WinClose Fermer fen<EFBFBD>tre
endif endif
tmenu ToolBar.LoadSesn Ouvrir session tmenu ToolBar.LoadSesn Ouvrir session
tmenu ToolBar.SaveSesn Enregister session courante tmenu ToolBar.SaveSesn Enregistrer session courante
tmenu ToolBar.RunScript Lancer un script Vim tmenu ToolBar.RunScript Lancer un script Vim
tmenu ToolBar.Make Lancer make tmenu ToolBar.Make Lancer make
tmenu ToolBar.RunCtags Cr<EFBFBD>er les <20>tiquettes tmenu ToolBar.RunCtags Cr<EFBFBD>er les <20>tiquettes

View File

@ -1,7 +1,7 @@
" These commands create the option window. " These commands create the option window.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2018 Feb 27 " Last Change: 2018 May 15
" If there already is an option window, jump to that one. " If there already is an option window, jump to that one.
let buf = bufnr('option-window') let buf = bufnr('option-window')
@ -325,7 +325,8 @@ call <SID>OptionL("scr")
call append("$", "scrolloff\tnumber of screen lines to show around the cursor") call append("$", "scrolloff\tnumber of screen lines to show around the cursor")
call append("$", " \tset so=" . &so) call append("$", " \tset so=" . &so)
call append("$", "wrap\tlong lines wrap") call append("$", "wrap\tlong lines wrap")
call <SID>BinOptionG("wrap", &wrap) call append("$", "\t(local to window)")
call <SID>BinOptionL("wrap")
call append("$", "linebreak\twrap long lines at a character in 'breakat'") call append("$", "linebreak\twrap long lines at a character in 'breakat'")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
call <SID>BinOptionL("lbr") call <SID>BinOptionL("lbr")
@ -506,12 +507,15 @@ if has("cursorbind")
call <SID>BinOptionL("crb") call <SID>BinOptionL("crb")
endif endif
if has("terminal") if has("terminal")
call append("$", "termsize\tsize of a terminal window") call append("$", "termwinsize\tsize of a terminal window")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
call <SID>OptionL("tms") call <SID>OptionL("tws")
call append("$", "termkey\tkey that precedes Vim commands in a terminal window") call append("$", "termwinkey\tkey that precedes Vim commands in a terminal window")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
call <SID>OptionL("tk") call <SID>OptionL("twk")
call append("$", "termwinscroll\tmax number of lines to keep for scrollback in a terminal window")
call append("$", "\t(local to window)")
call <SID>OptionL("twsl")
if exists("&winptydll") if exists("&winptydll")
call append("$", "winptydll\tname of the winpty dynamic library") call append("$", "winptydll\tname of the winpty dynamic library")
call <SID>OptionG("winptydll", &winptydll) call <SID>OptionG("winptydll", &winptydll)

View File

@ -25,7 +25,8 @@ endif
" The command that starts debugging, e.g. ":Termdebug vim". " The command that starts debugging, e.g. ":Termdebug vim".
" To end type "quit" in the gdb window. " To end type "quit" in the gdb window.
command -nargs=* -complete=file Termdebug call s:StartDebug(<q-args>) command -nargs=* -complete=file -bang Termdebug call s:StartDebug(<bang>0, <f-args>)
command -nargs=+ -complete=file -bang TermdebugCommand call s:StartDebugCommand(<bang>0, <f-args>)
" Name of the gdb command, defaults to "gdb". " Name of the gdb command, defaults to "gdb".
if !exists('termdebugger') if !exists('termdebugger')
@ -43,7 +44,22 @@ else
endif endif
hi default debugBreakpoint term=reverse ctermbg=red guibg=red hi default debugBreakpoint term=reverse ctermbg=red guibg=red
func s:StartDebug(cmd) func s:StartDebug(bang, ...)
" First argument is the command to debug, second core file or process ID.
call s:StartDebug_internal({'gdb_args': a:000, 'bang': a:bang})
endfunc
func s:StartDebugCommand(bang, ...)
" First argument is the command to debug, rest are run arguments.
call s:StartDebug_internal({'gdb_args': [a:1], 'proc_args': a:000[1:], 'bang': a:bang})
endfunc
func s:StartDebug_internal(dict)
if exists('s:gdbwin')
echoerr 'Terminal debugger already running'
return
endif
let s:startwin = win_getid(winnr()) let s:startwin = win_getid(winnr())
let s:startsigncolumn = &signcolumn let s:startsigncolumn = &signcolumn
@ -90,7 +106,10 @@ func s:StartDebug(cmd)
" Open a terminal window to run the debugger. " Open a terminal window to run the debugger.
" Add -quiet to avoid the intro message causing a hit-enter prompt. " Add -quiet to avoid the intro message causing a hit-enter prompt.
let cmd = [g:termdebugger, '-quiet', '-tty', pty, a:cmd] let gdb_args = get(a:dict, 'gdb_args', [])
let proc_args = get(a:dict, 'proc_args', [])
let cmd = [g:termdebugger, '-quiet', '-tty', pty] + gdb_args
echomsg 'executing "' . join(cmd) . '"' echomsg 'executing "' . join(cmd) . '"'
let s:gdbbuf = term_start(cmd, { let s:gdbbuf = term_start(cmd, {
\ 'exit_cb': function('s:EndDebug'), \ 'exit_cb': function('s:EndDebug'),
@ -104,15 +123,54 @@ func s:StartDebug(cmd)
endif endif
let s:gdbwin = win_getid(winnr()) let s:gdbwin = win_getid(winnr())
" Set arguments to be run
if len(proc_args)
call term_sendkeys(s:gdbbuf, 'set args ' . join(proc_args) . "\r")
endif
" Connect gdb to the communication pty, using the GDB/MI interface " Connect gdb to the communication pty, using the GDB/MI interface
" If you get an error "undefined command" your GDB is too old.
call term_sendkeys(s:gdbbuf, 'new-ui mi ' . commpty . "\r") call term_sendkeys(s:gdbbuf, 'new-ui mi ' . commpty . "\r")
" Wait for the response to show up, users may not notice the error and wonder
" why the debugger doesn't work.
let try_count = 0
while 1
let response = ''
for lnum in range(1,200)
if term_getline(s:gdbbuf, lnum) =~ 'new-ui mi '
let response = term_getline(s:gdbbuf, lnum + 1)
if response =~ 'Undefined command'
echoerr 'Sorry, your gdb is too old, gdb 7.12 is required'
exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf
return
endif
if response =~ 'New UI allocated'
" Success!
break
endif
endif
endfor
if response =~ 'New UI allocated'
break
endif
let try_count += 1
if try_count > 100
echoerr 'Cannot check if your gdb works, continuing anyway'
break
endif
sleep 10m
endwhile
" Interpret commands while the target is running. This should usualy only be " Interpret commands while the target is running. This should usualy only be
" exec-interrupt, since many commands don't work properly while the target is " exec-interrupt, since many commands don't work properly while the target is
" running. " running.
call s:SendCommand('-gdb-set mi-async on') call s:SendCommand('-gdb-set mi-async on')
" Disable pagination, it causes everything to stop at the gdb
" "Type <return> to continue" prompt.
call s:SendCommand('-gdb-set pagination off')
" Sign used to highlight the line where the program has stopped. " Sign used to highlight the line where the program has stopped.
" There can be only one. " There can be only one.
sign define debugPC linehl=debugPC sign define debugPC linehl=debugPC
@ -143,11 +201,20 @@ func s:StartDebug(cmd)
au BufRead * call s:BufRead() au BufRead * call s:BufRead()
au BufUnload * call s:BufUnloaded() au BufUnload * call s:BufUnloaded()
augroup END augroup END
" Run the command if the bang attribute was given
" and got to the window
if get(a:dict, 'bang', 0)
call s:SendCommand('-exec-run')
call win_gotoid(s:ptywin)
endif
endfunc endfunc
func s:EndDebug(job, status) func s:EndDebug(job, status)
exe 'bwipe! ' . s:ptybuf exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf exe 'bwipe! ' . s:commbuf
unlet s:gdbwin
let curwinid = win_getid(winnr()) let curwinid = win_getid(winnr())
@ -212,6 +279,7 @@ func s:InstallCommands()
command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>) command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>)
command Gdb call win_gotoid(s:gdbwin) command Gdb call win_gotoid(s:gdbwin)
command Program call win_gotoid(s:ptywin) command Program call win_gotoid(s:ptywin)
command Source call s:GotoStartwinOrCreateIt()
command Winbar call s:InstallWinbar() command Winbar call s:InstallWinbar()
" TODO: can the K mapping be restored? " TODO: can the K mapping be restored?
@ -235,13 +303,15 @@ let s:winbar_winids = []
" Install the window toolbar in the current window. " Install the window toolbar in the current window.
func s:InstallWinbar() func s:InstallWinbar()
nnoremenu WinBar.Step :Step<CR> if has('menu') && &mouse != ''
nnoremenu WinBar.Next :Over<CR> nnoremenu WinBar.Step :Step<CR>
nnoremenu WinBar.Finish :Finish<CR> nnoremenu WinBar.Next :Over<CR>
nnoremenu WinBar.Cont :Continue<CR> nnoremenu WinBar.Finish :Finish<CR>
nnoremenu WinBar.Stop :Stop<CR> nnoremenu WinBar.Cont :Continue<CR>
nnoremenu WinBar.Eval :Evaluate<CR> nnoremenu WinBar.Stop :Stop<CR>
call add(s:winbar_winids, win_getid(winnr())) nnoremenu WinBar.Eval :Evaluate<CR>
call add(s:winbar_winids, win_getid(winnr()))
endif
endfunc endfunc
" Delete installed debugger commands in the current window. " Delete installed debugger commands in the current window.
@ -258,6 +328,7 @@ func s:DeleteCommands()
delcommand Evaluate delcommand Evaluate
delcommand Gdb delcommand Gdb
delcommand Program delcommand Program
delcommand Source
delcommand Winbar delcommand Winbar
nunmap K nunmap K
@ -416,6 +487,14 @@ func s:HandleError(msg)
echoerr substitute(a:msg, '.*msg="\(.*\)"', '\1', '') echoerr substitute(a:msg, '.*msg="\(.*\)"', '\1', '')
endfunc endfunc
func s:GotoStartwinOrCreateIt()
if !win_gotoid(s:startwin)
new
let s:startwin = win_getid(winnr())
call s:InstallWinbar()
endif
endfunc
" Handle stopping and running message from gdb. " Handle stopping and running message from gdb.
" Will update the sign that shows the current position. " Will update the sign that shows the current position.
func s:HandleCursor(msg) func s:HandleCursor(msg)
@ -427,31 +506,32 @@ func s:HandleCursor(msg)
let s:stopped = 0 let s:stopped = 0
endif endif
if win_gotoid(s:startwin) call s:GotoStartwinOrCreateIt()
let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '')
if a:msg =~ '^\(\*stopped\|=thread-selected\)' && filereadable(fname)
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
if lnum =~ '^[0-9]*$'
if expand('%:p') != fnamemodify(fname, ':p')
if &modified
" TODO: find existing window
exe 'split ' . fnameescape(fname)
let s:startwin = win_getid(winnr())
else
exe 'edit ' . fnameescape(fname)
endif
endif
exe lnum
exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname
setlocal signcolumn=yes
endif
else
exe 'sign unplace ' . s:pc_id
endif
call win_gotoid(wid) let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '')
if a:msg =~ '^\(\*stopped\|=thread-selected\)' && filereadable(fname)
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
if lnum =~ '^[0-9]*$'
if expand('%:p') != fnamemodify(fname, ':p')
if &modified
" TODO: find existing window
exe 'split ' . fnameescape(fname)
let s:startwin = win_getid(winnr())
call s:InstallWinbar()
else
exe 'edit ' . fnameescape(fname)
endif
endif
exe lnum
exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname
setlocal signcolumn=yes
endif
else
exe 'sign unplace ' . s:pc_id
endif endif
call win_gotoid(wid)
endfunc endfunc
" Handle setting a breakpoint " Handle setting a breakpoint

View File

@ -1,6 +1,6 @@
" Vim syntax file " Vim syntax file
" Language: Scheme (CHICKEN) " Language: Scheme (CHICKEN)
" Last Change: 2018 Jan 31 " Last Change: 2018-02-05
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" URL: https://foldling.org/vim/syntax/chicken.vim " URL: https://foldling.org/vim/syntax/chicken.vim
@ -14,7 +14,7 @@ if !exists('b:did_scheme_syntax')
endif endif
" Lighten parentheses. " Lighten parentheses.
hi def link schemeParentheses Comment hi! def link schemeParentheses Comment
" foo#bar " foo#bar
syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/ syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/

View File

@ -1,10 +1,12 @@
" Vim syntax file " Vim syntax file
" Language: C# " Language: C#
" Maintainer: Anduin Withers <awithers@anduin.com> " Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainer: Anduin Withers <awithers@anduin.com>
" Former Maintainer: Johannes Zellner <johannes@zellner.org> " Former Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: Fri Aug 14 13:56:37 PDT 2009 " Last Change: 2018-05-02
" Filenames: *.cs " Filenames: *.cs
" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $ " License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
" "
" REFERENCES: " REFERENCES:
" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc) " [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
@ -17,11 +19,8 @@ let s:cs_cpo_save = &cpo
set cpo&vim set cpo&vim
" type syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
syn keyword csType bool byte char decimal double float int long object sbyte short string uint ulong ushort void syn keyword csStorage delegate enum interface namespace struct
" storage
syn keyword csStorage class delegate enum interface namespace struct
" repeat / condition / label
syn keyword csRepeat break continue do for foreach goto return while syn keyword csRepeat break continue do for foreach goto return while
syn keyword csConditional else if switch syn keyword csConditional else if switch
syn keyword csLabel case default syn keyword csLabel case default
@ -29,21 +28,16 @@ syn keyword csLabel case default
syn match csOperatorError display +::+ syn match csOperatorError display +::+
" user labels (see [1] 8.6 Statements) " user labels (see [1] 8.6 Statements)
syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+ syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
" modifier
syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
" constant
syn keyword csConstant false null true syn keyword csConstant false null true
" exception syn keyword csException try catch finally throw when
syn keyword csException try catch finally throw syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
syn keyword csAsync async await
" TODO: syn keyword csUnspecifiedStatement as base checked event fixed get in is lock nameof operator out params ref set sizeof stackalloc this typeof unchecked unsafe using
syn keyword csUnspecifiedStatement as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using
" TODO:
syn keyword csUnsupportedStatement add remove value syn keyword csUnsupportedStatement add remove value
" TODO:
syn keyword csUnspecifiedKeyword explicit implicit syn keyword csUnspecifiedKeyword explicit implicit
" Contextual Keywords " Contextual Keywords
syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5 syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7 syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
@ -56,7 +50,7 @@ syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
" "
" TODO: include strings ? " TODO: include strings ?
" "
syn keyword csTodo contained TODO FIXME XXX NOTE syn keyword csTodo contained TODO FIXME XXX NOTE HACK
syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
@ -89,8 +83,15 @@ syn region csPreCondit
\ skip="\\$" end="$" contains=csComment keepend \ skip="\\$" end="$" contains=csComment keepend
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
\ end="^\s*#\s*endregion" transparent fold contains=TOP \ end="^\s*#\s*endregion" transparent fold contains=TOP
syn region csSummary start="^\s*/// <summary" end="^\(\s*///\)\@!" transparent fold keepend
syn region csClassType start="\(@\)\@<!class\>"hs=s+6 end="[:\n{]"he=e-1 contains=csClass
syn region csNewType start="\(@\)\@<!new\>"hs=s+4 end="[\(\<{\[]"he=e-1 contains=csNew contains=csNewType
syn region csIsType start="\v (is|as) "hs=s+4 end="\v[A-Za-z0-9]+" oneline contains=csIsAs
syn keyword csNew new contained
syn keyword csClass class contained
syn keyword csIsAs is as
" Strings and constants " Strings and constants
syn match csSpecialError contained "\\." syn match csSpecialError contained "\\."
@ -113,7 +114,11 @@ syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
" The default highlighting. " The default highlighting.
hi def link csType Type hi def link csType Type
hi def link csNewType Type
hi def link csClassType Type
hi def link csIsType Type
hi def link csStorage StorageClass hi def link csStorage StorageClass
hi def link csClass StorageClass
hi def link csRepeat Repeat hi def link csRepeat Repeat
hi def link csConditional Conditional hi def link csConditional Conditional
hi def link csLabel Label hi def link csLabel Label
@ -123,8 +128,13 @@ hi def link csException Exception
hi def link csUnspecifiedStatement Statement hi def link csUnspecifiedStatement Statement
hi def link csUnsupportedStatement Statement hi def link csUnsupportedStatement Statement
hi def link csUnspecifiedKeyword Keyword hi def link csUnspecifiedKeyword Keyword
hi def link csNew Statement
hi def link csLinq Statement
hi def link csIsAs Keyword
hi def link csAsync Keyword
hi def link csContextualStatement Statement hi def link csContextualStatement Statement
hi def link csOperatorError Error hi def link csOperatorError Error
hi def link csInterfaceDeclaration Include
hi def link csTodo Todo hi def link csTodo Todo
hi def link csComment Comment hi def link csComment Comment

View File

@ -3,11 +3,11 @@
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org> " Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2018 Jan 06 " Last Change: 2018 May 03
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization " Standard syntax initialization
if exists("b:current_syntax") if exists('b:current_syntax')
finish finish
endif endif
@ -21,7 +21,7 @@ let s:binNMU='binary-only=yes'
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ " syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"' exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"' exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile|lts|security)|%(wheezy|jessie)%(-backports%(-sloppy)=|-security)=|stretch%(-backports|-security)=|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic)%(-%(security|proposed|updates|backports|commercial|partner))=)+" syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile|lts|security)|%(wheezy|jessie)%(-backports%(-sloppy)=|-security)=|stretch%(-backports|-security)=|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogVersion contained "(.\{-})" syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*" syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*" syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
@ -46,6 +46,6 @@ hi def link debchangelogVersion Identifier
hi def link debchangelogTarget Identifier hi def link debchangelogTarget Identifier
hi def link debchangelogEmail Special hi def link debchangelogEmail Special
let b:current_syntax = "debchangelog" let b:current_syntax = 'debchangelog'
" vim: ts=8 sw=2 " vim: ts=8 sw=2

View File

@ -3,11 +3,11 @@
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org> " Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2018 Jan 06 " Last Change: 2018 Jan 28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
" Standard syntax initialization " Standard syntax initialization
if exists("b:current_syntax") if exists('b:current_syntax')
finish finish
endif endif
@ -135,7 +135,7 @@ hi def link debcontrolR3 Identifier
hi def link debcontrolComment Comment hi def link debcontrolComment Comment
hi def link debcontrolElse Special hi def link debcontrolElse Special
let b:current_syntax = "debcontrol" let b:current_syntax = 'debcontrol'
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

View File

@ -0,0 +1,33 @@
" Vim syntax file
" Language: Debian copyright file
" Maintainer: Debian Vim Maintainers
" Last Change: 2018 Feb 05
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcopyright.vim
" Standard syntax initialization
if exists('b:current_syntax')
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn case match
syn match debcopyrightUrl "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\): *"
syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
syn match debcopyrightEmail "<.\{-}>"
syn match debcopyrightComment "^#.*$" contains=@Spell
hi def link debcopyrightUrl Identifier
hi def link debcopyrightKey Keyword
hi def link debcopyrightEmail Identifier
hi def link debcopyrightComment Comment
let b:current_syntax = 'debcopyright'
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: ts=8 sw=2

View File

@ -2,11 +2,11 @@
" Language: Debian sources.list " Language: Debian sources.list
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl> " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2018 Jan 06 " Last Change: 2018 May 03
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Standard syntax initialization " Standard syntax initialization
if exists("b:current_syntax") if exists('b:current_syntax')
finish finish
endif endif
@ -25,7 +25,7 @@ let s:supported = [
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
\ 'wheezy', 'jessie', 'stretch', 'sid', 'rc-buggy', \ 'wheezy', 'jessie', 'stretch', 'sid', 'rc-buggy',
\ \
\ 'trusty', 'xenial', 'zesty', 'artful', 'bionic', 'devel' \ 'trusty', 'xenial', 'artful', 'bionic', 'cosmic', 'devel'
\ ] \ ]
let s:unsupported = [ let s:unsupported = [
\ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@ -34,12 +34,12 @@ let s:unsupported = [
\ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty', \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
\ 'utopic', 'vivid', 'wily', 'yakkety' \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty'
\ ] \ ]
let &cpo=s:cpo let &cpo=s:cpo
" Match uri's " Match uri's
syn match debsourcesUri +\(https\?://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++ syn match debsourcesUri '\(https\?://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\+'
exe 'syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:supported, '\|'). '\)\>\([-[:alnum:]_./]*\)+' exe 'syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:supported, '\|'). '\)\>\([-[:alnum:]_./]*\)+'
exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:unsupported, '\|') .'\)\>\([-[:alnum:]_./]*\)+' exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:unsupported, '\|') .'\)\>\([-[:alnum:]_./]*\)+'
@ -51,4 +51,4 @@ hi def link debsourcesUnsupportedDistrKeyword WarningMsg
hi def link debsourcesComment Comment hi def link debsourcesComment Comment
hi def link debsourcesUri Constant hi def link debsourcesUri Constant
let b:current_syntax = "debsources" let b:current_syntax = 'debsources'

View File

@ -1,84 +1,10 @@
" Vim syntax file " Vim syntax file
" Language: FORTH " Language: FORTH
" Maintainer: Christian V. J. Br<42>ssow <cvjb@cvjb.de> " Current Maintainer: Johan Kotlinski <kotlinski@gmail.com>
" Last Change: So 27 Mai 2012 15:56:28 CEST " Previous Maintainer: Christian V. J. Br<42>ssow <cvjb@cvjb.de>
" Last Change: 2018-03-29
" Filenames: *.fs,*.ft " Filenames: *.fs,*.ft
" URL: http://www.cvjb.de/comp/vim/forth.vim " URL: https://github.com/jkotlinski/forth.vim
" $Id: forth.vim,v 1.14 2012/05/27 15:57:22 bruessow Exp $
" The list of keywords is incomplete, compared with the official ANS
" wordlist. If you use this language, please improve it, and send me
" the patches.
"
" Before sending me patches, please download the newest version of this file
" from http://www.cvjb.de/comp/vim/forth.vim or http://www.vim.org/ (search
" for forth.vim).
" Many Thanks to...
"
" 2012-05-13:
" Dominique Pell<6C> <dominique dot pelle at gmail dot com> for sending the
" patch to allow spellchecking of strings, comments, ...
"
" 2012-01-07:
" Thilo Six <T.Six at gmx dot de> send a patch for cpoptions.
" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151
"
" 2009-06-28:
" Josh Grams send a patch to allow the parenthesis comments at the
" beginning of a line. That patch also fixed a typo in one of the
" comments.
"
" 2008-02-09:
" Shawn K. Quinn <sjquinn at speakeasy dot net> send a big patch with
" new words commonly used in Forth programs or defined by GNU Forth.
"
" 2007-07-11:
" Benjamin Krill <ben at codiert dot org> send me a patch
" to highlight space errors.
" You can toggle this feature on through setting the
" flag forth_space_errors in you vimrc. If you have switched it on,
" you can turn off highlighting of trailing spaces in comments by
" setting forth_no_trail_space_error in your vimrc. If you do not want
" the highlighting of a tabulator following a space in comments, you
" can turn this off by setting forth_no_tab_space_error.
"
" 2006-05-25:
" Bill McCarthy <WJMc@...> and Ilya Sher <ilya-vim@...>
" Who found a bug in the ccomment line in 2004!!!
" I'm really very sorry, that it has taken two years to fix that
" in the official version of this file. Shame on me.
" I think my face will be red the next ten years...
"
" 2006-05-21:
" Thomas E. Vaughan <tevaugha at ball dot com> send me a patch
" for the parenthesis comment word, so words with a trailing
" parenthesis will not start the highlighting for such comments.
"
" 2003-05-10:
" Andrew Gaul <andrew at gaul.org> send me a patch for
" forthOperators.
"
" 2003-04-03:
" Ron Aaron <ron at ronware dot org> made updates for an
" improved Win32Forth support.
"
" 2002-04-22:
" Charles Shattuck <charley at forth dot org> helped me to settle up with the
" binary and hex number highlighting.
"
" 2002-04-20:
" Charles Shattuck <charley at forth dot org> send me some code for correctly
" highlighting char and [char] followed by an opening paren. He also added
" some words for operators, conditionals, and definitions; and added the
" highlighting for s" and c".
"
" 2000-03-28:
" John Providenza <john at probo dot com> made improvements for the
" highlighting of strings, and added the code for highlighting hex numbers.
"
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@ -129,7 +55,10 @@ syn keyword forthOperators F~REL F~ABS F~
syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<= syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<=
syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<> syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<>
syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE
syn keyword forthOperators ?DNEGATE syn keyword forthOperators ?DNEGATE TRUE FALSE
" various words that take an input and do something with it
syn keyword forthFunction . U. .R U.R
" stack manipulations " stack manipulations
syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL
@ -141,7 +70,7 @@ syn keyword forthRstack 4>R 4R> 4R@ 4RDROP
syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT
" stack pointer manipulations " stack pointer manipulations
syn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! syn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! DEPTH
" address operations " address operations
syn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF! syn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF!
@ -150,7 +79,7 @@ syn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+
syn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED syn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED
syn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED syn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED
syn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE syn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE
syn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK syn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK UNUSED
" conditionals " conditionals
syn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF syn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF
@ -159,7 +88,7 @@ syn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN
" iterations " iterations
syn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN syn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN
syn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP syn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP
syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT RECURSE
" new words " new words
syn match forthClassDef '\<:class\s*[^ \t]\+\>' syn match forthClassDef '\<:class\s*[^ \t]\+\>'
@ -174,8 +103,8 @@ syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION> syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
syn keyword forthDefine NAME>STRING STATE C; CVARIABLE syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER
syn keyword forthDefine , 2, F, C, syn keyword forthDefine , 2, F, C, COMPILE,
syn match forthDefine "\[IFDEF]" syn match forthDefine "\[IFDEF]"
syn match forthDefine "\[IFUNDEF]" syn match forthDefine "\[IFUNDEF]"
syn match forthDefine "\[THEN]" syn match forthDefine "\[THEN]"
@ -196,6 +125,7 @@ syn match forthDefine "'"
syn match forthDefine '\<\[\>' syn match forthDefine '\<\[\>'
syn match forthDefine "\[']" syn match forthDefine "\[']"
syn match forthDefine '\[COMPILE]' syn match forthDefine '\[COMPILE]'
syn match forthDefine '\[CHAR]'
" debugging " debugging
syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE
@ -206,7 +136,7 @@ syn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C,
" basic character operations " basic character operations
syn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY syn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
syn keyword forthCharOps KEY? TIB CR syn keyword forthCharOps KEY? TIB CR BL COUNT SPACE SPACES
" recognize 'char (' or '[char] (' correctly, so it doesn't " recognize 'char (' or '[char] (' correctly, so it doesn't
" highlight everything after the paren as a comment till a closing ')' " highlight everything after the paren as a comment till a closing ')'
syn match forthCharOps '\<char\s\S\s' syn match forthCharOps '\<char\s\S\s'
@ -216,12 +146,15 @@ syn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+
" char-number conversion " char-number conversion
syn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F syn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F
syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
syn keyword forthConversion F>S S>F syn keyword forthConversion F>S S>F HOLDS
" interpreter, wordbook, compiler " interpreter, wordbook, compiler
syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( ) syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
syn keyword forthForth >IN ACCEPT ENVIRONMENT? EVALUATE QUIT SOURCE ACTION-OF
syn keyword forthForth DEFER! DEFER@ PARSE PARSE-NAME REFILL RESTORE-INPUT
syn keyword forthForth SAVE-INPUT SOURCE-ID
syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+ syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+
" vocabularies " vocabularies
@ -236,16 +169,17 @@ syn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE
syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION
syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE
syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR
syn keyword forthFileWords INCLUDE-FILE INCLUDED REQUIRED
syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET
syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK
syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED? syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED?
syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU
syn keyword forthBlocks BLOCK-INCLUDED syn keyword forthBlocks BLOCK-INCLUDED BLK
" numbers " numbers
syn keyword forthMath DECIMAL HEX BASE syn keyword forthMath DECIMAL HEX BASE
syn match forthInteger '\<-\=[0-9.]*[0-9.]\+\>' syn match forthInteger '\<-\=[0-9]\+.\=\>'
syn match forthInteger '\<&-\=[0-9.]*[0-9.]\+\>' syn match forthInteger '\<&-\=[0-9]\+.\=\>'
" recognize hex and binary numbers, the '$' and '%' notation is for gforth " recognize hex and binary numbers, the '$' and '%' notation is for gforth
syn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess syn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess
syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order! syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order!
@ -253,28 +187,29 @@ syn match forthInteger '\<%[0-1]*[0-1]\+\>'
syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>' syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>'
syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>' syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
" XXX If you find this overkill you can remove it. This has to come after the " XXX If you find this overkill you can remove it. this has to come after the
" highlighting for numbers otherwise it has no effect. " highlighting for numbers otherwise it has no effect.
syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
" Strings " Strings
syn region forthString start=+\.*\"+ end=+"+ end=+$+ contains=@Spell syn region forthString start=+\.*\"+ end=+"+ end=+$+
" XXX " XXX
syn region forthString start=+s\"+ end=+"+ end=+$+ contains=@Spell syn region forthString start=+s\"+ end=+"+ end=+$+
syn region forthString start=+c\"+ end=+"+ end=+$+ contains=@Spell syn region forthString start=+s\\\"+ end=+"+ end=+$+
syn region forthString start=+c\"+ end=+"+ end=+$+
" Comments " Comments
syn match forthComment '\\\s.*$' contains=@Spell,forthTodo,forthSpaceError syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
syn region forthComment start='\\S\s' end='.*' contains=@Spell,forthTodo,forthSpaceError syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
syn match forthComment '\.(\s[^)]*)' contains=@Spell,forthTodo,forthSpaceError syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=@Spell,forthTodo,forthSpaceError syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
syn region forthComment start='/\*' end='\*/' contains=@Spell,forthTodo,forthSpaceError syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
" Include files " Include files
syn match forthInclude '^INCLUDE\s\+\k\+' syn match forthInclude '^INCLUDE\s\+\k\+'
syn match forthInclude '^require\s\+\k\+' syn match forthInclude '^REQUIRE\s\+\k\+'
syn match forthInclude '^fload\s\+' syn match forthInclude '^FLOAD\s\+'
syn match forthInclude '^needs\s\+' syn match forthInclude '^NEEDS\s\+'
" Locals definitions " Locals definitions
syn region forthLocals start='{\s' start='{$' end='\s}' end='^}' syn region forthLocals start='{\s' start='{$' end='\s}' end='^}'
@ -282,9 +217,6 @@ syn match forthLocals '{ }' " otherwise, at least two spaces between
syn region forthDeprecated start='locals|' end='|' syn region forthDeprecated start='locals|' end='|'
" Define the default highlighting. " Define the default highlighting.
" Only when an item doesn't have highlighting yet
" The default methods for highlighting. Can be overridden later.
hi def link forthTodo Todo hi def link forthTodo Todo
hi def link forthOperators Operator hi def link forthOperators Operator
hi def link forthMath Number hi def link forthMath Number
@ -318,11 +250,11 @@ hi def link forthInclude Include
hi def link forthLocals Type " nothing else uses type and locals must stand out hi def link forthLocals Type " nothing else uses type and locals must stand out
hi def link forthDeprecated Error " if you must, change to Type hi def link forthDeprecated Error " if you must, change to Type
hi def link forthFileMode Function hi def link forthFileMode Function
hi def link forthFunction Function
hi def link forthFileWords Statement hi def link forthFileWords Statement
hi def link forthBlocks Statement hi def link forthBlocks Statement
hi def link forthSpaceError Error hi def link forthSpaceError Error
let b:current_syntax = "forth" let b:current_syntax = "forth"
let &cpo = s:cpo_save let &cpo = s:cpo_save

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Haskell " Language: Haskell
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org> " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Last Change: 2017 Dec 16 " Last Change: 2018 Mar 29 by Marcin Szamotulski
" Original Author: John Williams <jrw@pobox.com> " Original Author: John Williams <jrw@pobox.com>
" "
" Thanks to Ryan Crumley for suggestions and John Meacham for " Thanks to Ryan Crumley for suggestions and John Meacham for
@ -38,8 +38,8 @@ if exists("b:current_syntax")
endif endif
" (Qualified) identifiers (no default highlighting) " (Qualified) identifiers (no default highlighting)
syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" contains=@NoSpell
syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" contains=@NoSpell
" Infix operators--most punctuation characters and any (qualified) identifier " Infix operators--most punctuation characters and any (qualified) identifier
" enclosed in `backquotes`. An operator starting with : is a constructor, " enclosed in `backquotes`. An operator starting with : is a constructor,
@ -56,7 +56,7 @@ syn match hsDelimiter "(\|)\|\[\|\]\|,\|;\|_\|{\|}"
syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)" syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)"
syn match hsSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)" syn match hsSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)"
syn match hsSpecialCharError contained "\\&\|'''\+" syn match hsSpecialCharError contained "\\&\|'''\+"
syn region hsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hsSpecialChar syn region hsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hsSpecialChar,@NoSpell
syn match hsCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=hsSpecialChar,hsSpecialCharError syn match hsCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=hsSpecialChar,hsSpecialCharError
syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hsSpecialCharError syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hsSpecialCharError
syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>" syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>"
@ -66,8 +66,8 @@ syn match hsFloat "\v<[0-9]%(_*[0-9])*\.[0-9]%(_*[0-9])*%(_*[eE][-+]?[0-9]%(_
" because otherwise they would match as keywords at the start of a " because otherwise they would match as keywords at the start of a
" "literate" comment (see lhs.vim). " "literate" comment (see lhs.vim).
syn match hsModule "\<module\>" syn match hsModule "\<module\>"
syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment,@NoSpell
syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>" syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>" contains=@NoSpell
syn match hsInfix "\<\(infix\|infixl\|infixr\)\>" syn match hsInfix "\<\(infix\|infixl\|infixr\)\>"
syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>" syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>"
syn match hsTypedef "\<\(type\|newtype\)\>" syn match hsTypedef "\<\(type\|newtype\)\>"
@ -97,8 +97,8 @@ endif
" Comments " Comments
syn match hsLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" syn match hsLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contains=@Spell
syn region hsBlockComment start="{-" end="-}" contains=hsBlockComment syn region hsBlockComment start="{-" end="-}" contains=hsBlockComment,@Spell
syn region hsPragma start="{-#" end="#-}" syn region hsPragma start="{-#" end="#-}"
" C Preprocessor directives. Shamelessly ripped from c.vim and trimmed " C Preprocessor directives. Shamelessly ripped from c.vim and trimmed

View File

@ -9,6 +9,7 @@
" (ss) additional factoring of keywords, globals, and members " (ss) additional factoring of keywords, globals, and members
" Last Change: 2012 Oct 05 " Last Change: 2012 Oct 05
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) " 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
" tuning parameters: " tuning parameters:
" unlet javaScript_fold " unlet javaScript_fold
@ -37,7 +38,7 @@ syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ con
syn match javaScriptSpecialCharacter "'\\.'" syn match javaScriptSpecialCharacter "'\\.'"
syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
syn keyword javaScriptConditional if else switch syn keyword javaScriptConditional if else switch
syn keyword javaScriptRepeat while for do in syn keyword javaScriptRepeat while for do in

View File

@ -1,9 +1,9 @@
" Vim syntax file " Vim syntax file
" Language: Lisp " Language: Lisp
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: May 02, 2016 " Last Change: Feb 15, 2018
" Version: 26 " Version: 27
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
" "
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec " Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim " Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim
@ -40,8 +40,8 @@ syn case ignore
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Lists: {{{1 " Lists: {{{1
syn match lispSymbol contained ![^()'`,"; \t]\+! syn match lispSymbol contained ![^()'`,"; \t]\+!
syn match lispBarSymbol contained !|..\{-}|! syn match lispBarSymbol contained !|..\{-}|!
if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1
syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2
@ -71,320 +71,320 @@ syn match lispLeadWhite contained "^\s\+"
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Standard Lisp Functions and Macros: {{{1 " Standard Lisp Functions and Macros: {{{1
syn keyword lispFunc * find-method pprint-indent syn keyword lispFunc < find-method pprint-indent
syn keyword lispFunc ** find-package pprint-linear syn keyword lispFunc <= find-package pprint-linear
syn keyword lispFunc *** find-restart pprint-logical-block syn keyword lispFunc = find-restart pprint-logical-block
syn keyword lispFunc + find-symbol pprint-newline syn keyword lispFunc > find-symbol pprint-newline
syn keyword lispFunc ++ finish-output pprint-pop syn keyword lispFunc >= finish-output pprint-pop
syn keyword lispFunc +++ first pprint-tab syn keyword lispFunc - first pprint-tab
syn keyword lispFunc - fixnum pprint-tabular syn keyword lispFunc / fixnum pprint-tabular
syn keyword lispFunc / flet prin1 syn keyword lispFunc /= flet prin1
syn keyword lispFunc // float prin1-to-string syn keyword lispFunc // float prin1-to-string
syn keyword lispFunc /// float-digits princ syn keyword lispFunc /// float-digits princ
syn keyword lispFunc /= float-precision princ-to-string syn keyword lispFunc * floating-point-inexact princ-to-string
syn keyword lispFunc 1+ float-radix print syn keyword lispFunc ** floating-point-invalid-operation print
syn keyword lispFunc 1- float-sign print-not-readable syn keyword lispFunc *** floating-point-overflow print-not-readable
syn keyword lispFunc < floating-point-inexact print-not-readable-object syn keyword lispFunc + floating-point-underflow print-not-readable-object
syn keyword lispFunc <= floating-point-invalid-operation print-object syn keyword lispFunc ++ floatp print-object
syn keyword lispFunc = floating-point-overflow print-unreadable-object syn keyword lispFunc +++ float-precision print-unreadable-object
syn keyword lispFunc > floating-point-underflow probe-file syn keyword lispFunc 1- float-radix probe-file
syn keyword lispFunc >= floatp proclaim syn keyword lispFunc 1+ float-sign proclaim
syn keyword lispFunc abort floor prog syn keyword lispFunc abort floor prog
syn keyword lispFunc abs fmakunbound prog* syn keyword lispFunc abs fmakunbound prog*
syn keyword lispFunc access force-output prog1 syn keyword lispFunc access force-output prog1
syn keyword lispFunc acons format prog2 syn keyword lispFunc acons format prog2
syn keyword lispFunc acos formatter progn syn keyword lispFunc acos formatter progn
syn keyword lispFunc acosh fourth program-error syn keyword lispFunc acosh fourth program-error
syn keyword lispFunc add-method fresh-line progv syn keyword lispFunc add-method fresh-line progv
syn keyword lispFunc adjoin fround provide syn keyword lispFunc adjoin fround provide
syn keyword lispFunc adjust-array ftruncate psetf syn keyword lispFunc adjustable-array-p ftruncate psetf
syn keyword lispFunc adjustable-array-p ftype psetq syn keyword lispFunc adjust-array ftype psetq
syn keyword lispFunc allocate-instance funcall push syn keyword lispFunc allocate-instance funcall push
syn keyword lispFunc alpha-char-p function pushnew syn keyword lispFunc alpha-char-p function pushnew
syn keyword lispFunc alphanumericp function-keywords putprop syn keyword lispFunc alphanumericp function-keywords putprop
syn keyword lispFunc and function-lambda-expression quote syn keyword lispFunc and function-lambda-expression quote
syn keyword lispFunc append functionp random syn keyword lispFunc append functionp random
syn keyword lispFunc apply gbitp random-state syn keyword lispFunc apply gbitp random-state
syn keyword lispFunc applyhook gcd random-state-p syn keyword lispFunc applyhook gcd random-state-p
syn keyword lispFunc apropos generic-function rassoc syn keyword lispFunc apropos generic-function rassoc
syn keyword lispFunc apropos-list gensym rassoc-if syn keyword lispFunc apropos-list gensym rassoc-if
syn keyword lispFunc aref gentemp rassoc-if-not syn keyword lispFunc aref gentemp rassoc-if-not
syn keyword lispFunc arithmetic-error get ratio syn keyword lispFunc arithmetic-error get ratio
syn keyword lispFunc arithmetic-error-operands get-decoded-time rational syn keyword lispFunc arithmetic-error-operands get-decoded-time rational
syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize
syn keyword lispFunc array get-internal-real-time rationalp syn keyword lispFunc array getf rationalp
syn keyword lispFunc array-dimension get-internal-run-time read syn keyword lispFunc array-dimension gethash read
syn keyword lispFunc array-dimension-limit get-macro-character read-byte syn keyword lispFunc array-dimension-limit get-internal-real-time read-byte
syn keyword lispFunc array-dimensions get-output-stream-string read-char syn keyword lispFunc array-dimensions get-internal-run-time read-char
syn keyword lispFunc array-displacement get-properties read-char-no-hang syn keyword lispFunc array-displacement get-macro-character read-char-no-hang
syn keyword lispFunc array-element-type get-setf-expansion read-delimited-list syn keyword lispFunc array-element-type get-output-stream-string read-delimited-list
syn keyword lispFunc array-has-fill-pointer-p get-setf-method read-eval-print syn keyword lispFunc array-has-fill-pointer-p get-properties reader-error
syn keyword lispFunc array-in-bounds-p get-universal-time read-from-string syn keyword lispFunc array-in-bounds-p get-setf-expansion read-eval-print
syn keyword lispFunc array-rank getf read-line syn keyword lispFunc arrayp get-setf-method read-from-string
syn keyword lispFunc array-rank-limit gethash read-preserving-whitespace syn keyword lispFunc array-rank get-universal-time read-line
syn keyword lispFunc array-row-major-index go read-sequence syn keyword lispFunc array-rank-limit go read-preserving-whitespace
syn keyword lispFunc array-total-size graphic-char-p reader-error syn keyword lispFunc array-row-major-index graphic-char-p read-sequence
syn keyword lispFunc array-total-size-limit handler-bind readtable syn keyword lispFunc array-total-size handler-bind readtable
syn keyword lispFunc arrayp handler-case readtable-case syn keyword lispFunc array-total-size-limit handler-case readtable-case
syn keyword lispFunc ash hash-table readtablep syn keyword lispFunc ash hash-table readtablep
syn keyword lispFunc asin hash-table-count real syn keyword lispFunc asin hash-table-count real
syn keyword lispFunc asinh hash-table-p realp syn keyword lispFunc asinh hash-table-p realp
syn keyword lispFunc assert hash-table-rehash-size realpart syn keyword lispFunc assert hash-table-rehash-size realpart
syn keyword lispFunc assoc hash-table-rehash-threshold reduce syn keyword lispFunc assoc hash-table-rehash-threshold reduce
syn keyword lispFunc assoc-if hash-table-size reinitialize-instance syn keyword lispFunc assoc-if hash-table-size reinitialize-instance
syn keyword lispFunc assoc-if-not hash-table-test rem syn keyword lispFunc assoc-if-not hash-table-test rem
syn keyword lispFunc atan host-namestring remf syn keyword lispFunc atan host-namestring remf
syn keyword lispFunc atanh identity remhash syn keyword lispFunc atanh identity remhash
syn keyword lispFunc atom if remove syn keyword lispFunc atom if remove
syn keyword lispFunc base-char if-exists remove-duplicates syn keyword lispFunc base-char if-exists remove-duplicates
syn keyword lispFunc base-string ignorable remove-if syn keyword lispFunc base-string ignorable remove-if
syn keyword lispFunc bignum ignore remove-if-not syn keyword lispFunc bignum ignore remove-if-not
syn keyword lispFunc bit ignore-errors remove-method syn keyword lispFunc bit ignore-errors remove-method
syn keyword lispFunc bit-and imagpart remprop syn keyword lispFunc bit-and imagpart remprop
syn keyword lispFunc bit-andc1 import rename-file syn keyword lispFunc bit-andc1 import rename-file
syn keyword lispFunc bit-andc2 in-package rename-package syn keyword lispFunc bit-andc2 incf rename-package
syn keyword lispFunc bit-eqv in-package replace syn keyword lispFunc bit-eqv initialize-instance replace
syn keyword lispFunc bit-ior incf require syn keyword lispFunc bit-ior inline require
syn keyword lispFunc bit-nand initialize-instance rest syn keyword lispFunc bit-nand in-package rest
syn keyword lispFunc bit-nor inline restart syn keyword lispFunc bit-nor in-package restart
syn keyword lispFunc bit-not input-stream-p restart-bind syn keyword lispFunc bit-not input-stream-p restart-bind
syn keyword lispFunc bit-orc1 inspect restart-case syn keyword lispFunc bit-orc1 inspect restart-case
syn keyword lispFunc bit-orc2 int-char restart-name syn keyword lispFunc bit-orc2 int-char restart-name
syn keyword lispFunc bit-vector integer return syn keyword lispFunc bit-vector integer return
syn keyword lispFunc bit-vector-p integer-decode-float return-from syn keyword lispFunc bit-vector-p integer-decode-float return-from
syn keyword lispFunc bit-xor integer-length revappend syn keyword lispFunc bit-xor integer-length revappend
syn keyword lispFunc block integerp reverse syn keyword lispFunc block integerp reverse
syn keyword lispFunc boole interactive-stream-p room syn keyword lispFunc boole interactive-stream-p room
syn keyword lispFunc boole-1 intern rotatef syn keyword lispFunc boole-1 intern rotatef
syn keyword lispFunc boole-2 internal-time-units-per-second round syn keyword lispFunc boole-2 internal-time-units-per-second round
syn keyword lispFunc boole-and intersection row-major-aref syn keyword lispFunc boolean intersection row-major-aref
syn keyword lispFunc boole-andc1 invalid-method-error rplaca syn keyword lispFunc boole-and invalid-method-error rplaca
syn keyword lispFunc boole-andc2 invoke-debugger rplacd syn keyword lispFunc boole-andc1 invoke-debugger rplacd
syn keyword lispFunc boole-c1 invoke-restart safety syn keyword lispFunc boole-andc2 invoke-restart safety
syn keyword lispFunc boole-c2 invoke-restart-interactively satisfies syn keyword lispFunc boole-c1 invoke-restart-interactively satisfies
syn keyword lispFunc boole-clr isqrt sbit syn keyword lispFunc boole-c2 isqrt sbit
syn keyword lispFunc boole-eqv keyword scale-float syn keyword lispFunc boole-clr keyword scale-float
syn keyword lispFunc boole-ior keywordp schar syn keyword lispFunc boole-eqv keywordp schar
syn keyword lispFunc boole-nand labels search syn keyword lispFunc boole-ior labels search
syn keyword lispFunc boole-nor lambda second syn keyword lispFunc boole-nand lambda second
syn keyword lispFunc boole-orc1 lambda-list-keywords sequence syn keyword lispFunc boole-nor lambda-list-keywords sequence
syn keyword lispFunc boole-orc2 lambda-parameters-limit serious-condition syn keyword lispFunc boole-orc1 lambda-parameters-limit serious-condition
syn keyword lispFunc boole-set last set syn keyword lispFunc boole-orc2 last set
syn keyword lispFunc boole-xor lcm set-char-bit syn keyword lispFunc boole-set lcm set-char-bit
syn keyword lispFunc boolean ldb set-difference syn keyword lispFunc boole-xor ldb set-difference
syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character
syn keyword lispFunc boundp ldiff set-exclusive-or syn keyword lispFunc boundp ldiff set-exclusive-or
syn keyword lispFunc break least-negative-double-float set-macro-character syn keyword lispFunc break least-negative-double-float setf
syn keyword lispFunc broadcast-stream least-negative-long-float set-pprint-dispatch syn keyword lispFunc broadcast-stream least-negative-long-float set-macro-character
syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-syntax-from-char syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-pprint-dispatch
syn keyword lispFunc built-in-class least-negative-normalized-long-float setf syn keyword lispFunc built-in-class least-negative-normalized-long-float setq
syn keyword lispFunc butlast least-negative-normalized-short-float setq syn keyword lispFunc butlast least-negative-normalized-short-float set-syntax-from-char
syn keyword lispFunc byte least-negative-normalized-single-float seventh syn keyword lispFunc byte least-negative-normalized-single-float seventh
syn keyword lispFunc byte-position least-negative-short-float shadow syn keyword lispFunc byte-position least-negative-short-float shadow
syn keyword lispFunc byte-size least-negative-single-float shadowing-import syn keyword lispFunc byte-size least-negative-single-float shadowing-import
syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize
syn keyword lispFunc call-method least-positive-long-float shiftf syn keyword lispFunc call-method least-positive-long-float shiftf
syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float
syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon
syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon
syn keyword lispFunc case least-positive-normalized-single-float short-site-name syn keyword lispFunc case least-positive-normalized-single-float short-site-name
syn keyword lispFunc catch least-positive-short-float signal syn keyword lispFunc catch least-positive-short-float signal
syn keyword lispFunc ccase least-positive-single-float signed-byte syn keyword lispFunc ccase least-positive-single-float signed-byte
syn keyword lispFunc cdr length signum syn keyword lispFunc cdr length signum
syn keyword lispFunc ceiling let simple-condition syn keyword lispFunc ceiling let simple-array
syn keyword lispFunc cell-error let* simple-array syn keyword lispFunc cell-error let* simple-base-string
syn keyword lispFunc cell-error-name lisp simple-base-string syn keyword lispFunc cell-error-name lisp simple-bit-vector
syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector-p
syn keyword lispFunc change-class lisp-implementation-version simple-bit-vector-p syn keyword lispFunc change-class lisp-implementation-version simple-condition
syn keyword lispFunc char list simple-condition-format-arguments syn keyword lispFunc char list simple-condition-format-arguments
syn keyword lispFunc char-bit list* simple-condition-format-control syn keyword lispFunc char< list* simple-condition-format-control
syn keyword lispFunc char-bits list-all-packages simple-error syn keyword lispFunc char<= list-all-packages simple-error
syn keyword lispFunc char-bits-limit list-length simple-string syn keyword lispFunc char= listen simple-string
syn keyword lispFunc char-code listen simple-string-p syn keyword lispFunc char> list-length simple-string-p
syn keyword lispFunc char-code-limit listp simple-type-error syn keyword lispFunc char>= listp simple-type-error
syn keyword lispFunc char-control-bit load simple-vector syn keyword lispFunc char/= load simple-vector
syn keyword lispFunc char-downcase load-logical-pathname-translations simple-vector-p syn keyword lispFunc character load-logical-pathname-translations simple-vector-p
syn keyword lispFunc char-equal load-time-value simple-warning syn keyword lispFunc characterp load-time-value simple-warning
syn keyword lispFunc char-font locally sin syn keyword lispFunc char-bit locally sin
syn keyword lispFunc char-font-limit log single-flaot-epsilon syn keyword lispFunc char-bits log single-flaot-epsilon
syn keyword lispFunc char-greaterp logand single-float syn keyword lispFunc char-bits-limit logand single-float
syn keyword lispFunc char-hyper-bit logandc1 single-float-epsilon syn keyword lispFunc char-code logandc1 single-float-epsilon
syn keyword lispFunc char-int logandc2 single-float-negative-epsilon syn keyword lispFunc char-code-limit logandc2 single-float-negative-epsilon
syn keyword lispFunc char-lessp logbitp sinh syn keyword lispFunc char-control-bit logbitp sinh
syn keyword lispFunc char-meta-bit logcount sixth syn keyword lispFunc char-downcase logcount sixth
syn keyword lispFunc char-name logeqv sleep syn keyword lispFunc char-equal logeqv sleep
syn keyword lispFunc char-not-equal logical-pathname slot-boundp syn keyword lispFunc char-font logical-pathname slot-boundp
syn keyword lispFunc char-not-greaterp logical-pathname-translations slot-exists-p syn keyword lispFunc char-font-limit logical-pathname-translations slot-exists-p
syn keyword lispFunc char-not-lessp logior slot-makunbound syn keyword lispFunc char-greaterp logior slot-makunbound
syn keyword lispFunc char-super-bit lognand slot-missing syn keyword lispFunc char-hyper-bit lognand slot-missing
syn keyword lispFunc char-upcase lognor slot-unbound syn keyword lispFunc char-int lognor slot-unbound
syn keyword lispFunc char/= lognot slot-value syn keyword lispFunc char-lessp lognot slot-value
syn keyword lispFunc char< logorc1 software-type syn keyword lispFunc char-meta-bit logorc1 software-type
syn keyword lispFunc char<= logorc2 software-version syn keyword lispFunc char-name logorc2 software-version
syn keyword lispFunc char= logtest some syn keyword lispFunc char-not-equal logtest some
syn keyword lispFunc char> logxor sort syn keyword lispFunc char-not-greaterp logxor sort
syn keyword lispFunc char>= long-float space syn keyword lispFunc char-not-lessp long-float space
syn keyword lispFunc character long-float-epsilon special syn keyword lispFunc char-super-bit long-float-epsilon special
syn keyword lispFunc characterp long-float-negative-epsilon special-form-p syn keyword lispFunc char-upcase long-float-negative-epsilon special-form-p
syn keyword lispFunc check-type long-site-name special-operator-p syn keyword lispFunc check-type long-site-name special-operator-p
syn keyword lispFunc cis loop speed syn keyword lispFunc cis loop speed
syn keyword lispFunc class loop-finish sqrt syn keyword lispFunc class loop-finish sqrt
syn keyword lispFunc class-name lower-case-p stable-sort syn keyword lispFunc class-name lower-case-p stable-sort
syn keyword lispFunc class-of machine-instance standard syn keyword lispFunc class-of machine-instance standard
syn keyword lispFunc clear-input machine-type standard-char syn keyword lispFunc clear-input machine-type standard-char
syn keyword lispFunc clear-output machine-version standard-char-p syn keyword lispFunc clear-output machine-version standard-char-p
syn keyword lispFunc close macro-function standard-class syn keyword lispFunc close macroexpand standard-class
syn keyword lispFunc clrhash macroexpand standard-generic-function syn keyword lispFunc clrhash macroexpand-1 standard-generic-function
syn keyword lispFunc code-char macroexpand-1 standard-method syn keyword lispFunc code-char macroexpand-l standard-method
syn keyword lispFunc coerce macroexpand-l standard-object syn keyword lispFunc coerce macro-function standard-object
syn keyword lispFunc commonp macrolet step syn keyword lispFunc commonp macrolet step
syn keyword lispFunc compilation-speed make-array storage-condition syn keyword lispFunc compilation-speed make-array storage-condition
syn keyword lispFunc compile make-array store-value syn keyword lispFunc compile make-array store-value
syn keyword lispFunc compile-file make-broadcast-stream stream syn keyword lispFunc compiled-function make-broadcast-stream stream
syn keyword lispFunc compile-file-pathname make-char stream-element-type syn keyword lispFunc compiled-function-p make-char stream-element-type
syn keyword lispFunc compiled-function make-concatenated-stream stream-error syn keyword lispFunc compile-file make-concatenated-stream stream-error
syn keyword lispFunc compiled-function-p make-condition stream-error-stream syn keyword lispFunc compile-file-pathname make-condition stream-error-stream
syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format
syn keyword lispFunc compiler-macro make-echo-stream streamp syn keyword lispFunc compiler-macro make-echo-stream streamp
syn keyword lispFunc compiler-macro-function make-hash-table streamup syn keyword lispFunc compiler-macro-function make-hash-table streamup
syn keyword lispFunc complement make-instance string syn keyword lispFunc complement make-instance string
syn keyword lispFunc complex make-instances-obsolete string-capitalize syn keyword lispFunc complex make-instances-obsolete string<
syn keyword lispFunc complexp make-list string-char syn keyword lispFunc complexp make-list string<=
syn keyword lispFunc compute-applicable-methods make-load-form string-char-p syn keyword lispFunc compute-applicable-methods make-load-form string=
syn keyword lispFunc compute-restarts make-load-form-saving-slots string-downcase syn keyword lispFunc compute-restarts make-load-form-saving-slots string>
syn keyword lispFunc concatenate make-method string-equal syn keyword lispFunc concatenate make-method string>=
syn keyword lispFunc concatenated-stream make-package string-greaterp syn keyword lispFunc concatenated-stream make-package string/=
syn keyword lispFunc concatenated-stream-streams make-pathname string-left-trim syn keyword lispFunc concatenated-stream-streams make-pathname string-capitalize
syn keyword lispFunc cond make-random-state string-lessp syn keyword lispFunc cond make-random-state string-char
syn keyword lispFunc condition make-sequence string-not-equal syn keyword lispFunc condition make-sequence string-char-p
syn keyword lispFunc conjugate make-string string-not-greaterp syn keyword lispFunc conjugate make-string string-downcase
syn keyword lispFunc cons make-string-input-stream string-not-lessp syn keyword lispFunc cons make-string-input-stream string-equal
syn keyword lispFunc consp make-string-output-stream string-right-strim syn keyword lispFunc consp make-string-output-stream string-greaterp
syn keyword lispFunc constantly make-symbol string-right-trim syn keyword lispFunc constantly make-symbol string-left-trim
syn keyword lispFunc constantp make-synonym-stream string-stream syn keyword lispFunc constantp make-synonym-stream string-lessp
syn keyword lispFunc continue make-two-way-stream string-trim syn keyword lispFunc continue make-two-way-stream string-not-equal
syn keyword lispFunc control-error makunbound string-upcase syn keyword lispFunc control-error makunbound string-not-greaterp
syn keyword lispFunc copy-alist map string/= syn keyword lispFunc copy-alist map string-not-lessp
syn keyword lispFunc copy-list map-into string< syn keyword lispFunc copy-list mapc stringp
syn keyword lispFunc copy-pprint-dispatch mapc string<= syn keyword lispFunc copy-pprint-dispatch mapcan string-right-strim
syn keyword lispFunc copy-readtable mapcan string= syn keyword lispFunc copy-readtable mapcar string-right-trim
syn keyword lispFunc copy-seq mapcar string> syn keyword lispFunc copy-seq mapcon string-stream
syn keyword lispFunc copy-structure mapcon string>= syn keyword lispFunc copy-structure maphash string-trim
syn keyword lispFunc copy-symbol maphash stringp syn keyword lispFunc copy-symbol map-into string-upcase
syn keyword lispFunc copy-tree mapl structure syn keyword lispFunc copy-tree mapl structure
syn keyword lispFunc cos maplist structure-class syn keyword lispFunc cos maplist structure-class
syn keyword lispFunc cosh mask-field structure-object syn keyword lispFunc cosh mask-field structure-object
syn keyword lispFunc count max style-warning syn keyword lispFunc count max style-warning
syn keyword lispFunc count-if member sublim syn keyword lispFunc count-if member sublim
syn keyword lispFunc count-if-not member-if sublis syn keyword lispFunc count-if-not member-if sublis
syn keyword lispFunc ctypecase member-if-not subseq syn keyword lispFunc ctypecase member-if-not subseq
syn keyword lispFunc debug merge subsetp syn keyword lispFunc debug merge subsetp
syn keyword lispFunc decf merge-pathname subst syn keyword lispFunc decf merge-pathname subst
syn keyword lispFunc declaim merge-pathnames subst-if syn keyword lispFunc declaim merge-pathnames subst-if
syn keyword lispFunc declaration method subst-if-not syn keyword lispFunc declaration method subst-if-not
syn keyword lispFunc declare method-combination substitute syn keyword lispFunc declare method-combination substitute
syn keyword lispFunc decode-float method-combination-error substitute-if syn keyword lispFunc decode-float method-combination-error substitute-if
syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not
syn keyword lispFunc defclass min subtypep syn keyword lispFunc defclass min subtypep
syn keyword lispFunc defconstant minusp svref syn keyword lispFunc defconstant minusp svref
syn keyword lispFunc defgeneric mismatch sxhash syn keyword lispFunc defgeneric mismatch sxhash
syn keyword lispFunc define-compiler-macro mod symbol syn keyword lispFunc define-compiler-macro mod symbol
syn keyword lispFunc define-condition most-negative-double-float symbol-function syn keyword lispFunc define-condition most-negative-double-float symbol-function
syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet
syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name
syn keyword lispFunc define-setf-expander most-negative-short-float symbol-package syn keyword lispFunc define-setf-expander most-negative-short-float symbolp
syn keyword lispFunc define-setf-method most-negative-single-float symbol-plist syn keyword lispFunc define-setf-method most-negative-single-float symbol-package
syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-value syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-plist
syn keyword lispFunc defmacro most-positive-fixnum symbolp syn keyword lispFunc defmacro most-positive-fixnum symbol-value
syn keyword lispFunc defmethod most-positive-long-float synonym-stream syn keyword lispFunc defmethod most-positive-long-float synonym-stream
syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol
syn keyword lispFunc defparameter most-positive-single-float sys syn keyword lispFunc defparameter most-positive-single-float sys
syn keyword lispFunc defsetf muffle-warning system syn keyword lispFunc defsetf muffle-warning system
syn keyword lispFunc defstruct multiple-value-bind t syn keyword lispFunc defstruct multiple-value-bind t
syn keyword lispFunc deftype multiple-value-call tagbody syn keyword lispFunc deftype multiple-value-call tagbody
syn keyword lispFunc defun multiple-value-list tailp syn keyword lispFunc defun multiple-value-list tailp
syn keyword lispFunc defvar multiple-value-prog1 tan syn keyword lispFunc defvar multiple-value-prog1 tan
syn keyword lispFunc delete multiple-value-seteq tanh syn keyword lispFunc delete multiple-value-seteq tanh
syn keyword lispFunc delete-duplicates multiple-value-setq tenth syn keyword lispFunc delete-duplicates multiple-value-setq tenth
syn keyword lispFunc delete-file multiple-values-limit terpri syn keyword lispFunc delete-file multiple-values-limit terpri
syn keyword lispFunc delete-if name-char the syn keyword lispFunc delete-if name-char the
syn keyword lispFunc delete-if-not namestring third syn keyword lispFunc delete-if-not namestring third
syn keyword lispFunc delete-package nbutlast throw syn keyword lispFunc delete-package nbutlast throw
syn keyword lispFunc denominator nconc time syn keyword lispFunc denominator nconc time
syn keyword lispFunc deposit-field next-method-p trace syn keyword lispFunc deposit-field next-method-p trace
syn keyword lispFunc describe nil translate-logical-pathname syn keyword lispFunc describe nil translate-logical-pathname
syn keyword lispFunc describe-object nintersection translate-pathname syn keyword lispFunc describe-object nintersection translate-pathname
syn keyword lispFunc destructuring-bind ninth tree-equal syn keyword lispFunc destructuring-bind ninth tree-equal
syn keyword lispFunc digit-char no-applicable-method truename syn keyword lispFunc digit-char no-applicable-method truename
syn keyword lispFunc digit-char-p no-next-method truncase syn keyword lispFunc digit-char-p no-next-method truncase
syn keyword lispFunc directory not truncate syn keyword lispFunc directory not truncate
syn keyword lispFunc directory-namestring notany two-way-stream syn keyword lispFunc directory-namestring notany two-way-stream
syn keyword lispFunc disassemble notevery two-way-stream-input-stream syn keyword lispFunc disassemble notevery two-way-stream-input-stream
syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream
syn keyword lispFunc do nreconc type syn keyword lispFunc do nreconc type
syn keyword lispFunc do* nreverse type-error syn keyword lispFunc do* nreverse typecase
syn keyword lispFunc do-all-symbols nset-difference type-error-datum syn keyword lispFunc do-all-symbols nset-difference type-error
syn keyword lispFunc do-exeternal-symbols nset-exclusive-or type-error-expected-type syn keyword lispFunc documentation nset-exclusive-or type-error-datum
syn keyword lispFunc do-external-symbols nstring type-of syn keyword lispFunc do-exeternal-symbols nstring type-error-expected-type
syn keyword lispFunc do-symbols nstring-capitalize typecase syn keyword lispFunc do-external-symbols nstring-capitalize type-of
syn keyword lispFunc documentation nstring-downcase typep syn keyword lispFunc dolist nstring-downcase typep
syn keyword lispFunc dolist nstring-upcase unbound-slot syn keyword lispFunc do-symbols nstring-upcase unbound-slot
syn keyword lispFunc dotimes nsublis unbound-slot-instance syn keyword lispFunc dotimes nsublis unbound-slot-instance
syn keyword lispFunc double-float nsubst unbound-variable syn keyword lispFunc double-float nsubst unbound-variable
syn keyword lispFunc double-float-epsilon nsubst-if undefined-function syn keyword lispFunc double-float-epsilon nsubst-if undefined-function
syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport
syn keyword lispFunc dpb nsubstitute unintern syn keyword lispFunc dpb nsubstitute unintern
syn keyword lispFunc dribble nsubstitute-if union syn keyword lispFunc dribble nsubstitute-if union
syn keyword lispFunc dynamic-extent nsubstitute-if-not unless syn keyword lispFunc dynamic-extent nsubstitute-if-not unless
syn keyword lispFunc ecase nth unread syn keyword lispFunc ecase nth unread
syn keyword lispFunc echo-stream nth-value unread-char syn keyword lispFunc echo-stream nthcdr unread-char
syn keyword lispFunc echo-stream-input-stream nthcdr unsigned-byte syn keyword lispFunc echo-stream-input-stream nth-value unsigned-byte
syn keyword lispFunc echo-stream-output-stream null untrace syn keyword lispFunc echo-stream-output-stream null untrace
syn keyword lispFunc ed number unuse-package syn keyword lispFunc ed number unuse-package
syn keyword lispFunc eighth numberp unwind-protect syn keyword lispFunc eighth numberp unwind-protect
syn keyword lispFunc elt numerator update-instance-for-different-class syn keyword lispFunc elt numerator update-instance-for-different-class
syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class
syn keyword lispFunc end-of-file oddp upgraded-array-element-type syn keyword lispFunc end-of-file oddp upgraded-array-element-type
syn keyword lispFunc endp open upgraded-complex-part-type syn keyword lispFunc endp open upgraded-complex-part-type
syn keyword lispFunc enough-namestring open-stream-p upper-case-p syn keyword lispFunc enough-namestring open-stream-p upper-case-p
syn keyword lispFunc ensure-directories-exist optimize use-package syn keyword lispFunc ensure-directories-exist optimize use-package
syn keyword lispFunc ensure-generic-function or use-value syn keyword lispFunc ensure-generic-function or user
syn keyword lispFunc eq otherwise user syn keyword lispFunc eq otherwise user-homedir-pathname
syn keyword lispFunc eql output-stream-p user-homedir-pathname syn keyword lispFunc eql output-stream-p use-value
syn keyword lispFunc equal package values syn keyword lispFunc equal package values
syn keyword lispFunc equalp package-error values-list syn keyword lispFunc equalp package-error values-list
syn keyword lispFunc error package-error-package vector syn keyword lispFunc error package-error-package variable
syn keyword lispFunc etypecase package-name vector-pop syn keyword lispFunc etypecase package-name vector
syn keyword lispFunc eval package-nicknames vector-push syn keyword lispFunc eval package-nicknames vectorp
syn keyword lispFunc eval-when package-shadowing-symbols vector-push-extend syn keyword lispFunc evalhook packagep vector-pop
syn keyword lispFunc evalhook package-use-list vectorp syn keyword lispFunc eval-when package-shadowing-symbols vector-push
syn keyword lispFunc evenp package-used-by-list warn syn keyword lispFunc evenp package-used-by-list vector-push-extend
syn keyword lispFunc every packagep warning syn keyword lispFunc every package-use-list warn
syn keyword lispFunc exp pairlis when syn keyword lispFunc exp pairlis warning
syn keyword lispFunc export parse-error wild-pathname-p syn keyword lispFunc export parse-error when
syn keyword lispFunc expt parse-integer with-accessors syn keyword lispFunc expt parse-integer wild-pathname-p
syn keyword lispFunc extended-char parse-namestring with-compilation-unit syn keyword lispFunc extended-char parse-namestring with-accessors
syn keyword lispFunc fboundp pathname with-condition-restarts syn keyword lispFunc fboundp pathname with-compilation-unit
syn keyword lispFunc fceiling pathname-device with-hash-table-iterator syn keyword lispFunc fceiling pathname-device with-condition-restarts
syn keyword lispFunc fdefinition pathname-directory with-input-from-string syn keyword lispFunc fdefinition pathname-directory with-hash-table-iterator
syn keyword lispFunc ffloor pathname-host with-open-file syn keyword lispFunc ffloor pathname-host with-input-from-string
syn keyword lispFunc fifth pathname-match-p with-open-stream syn keyword lispFunc fifth pathname-match-p with-open-file
syn keyword lispFunc file-author pathname-name with-output-to-string syn keyword lispFunc file-author pathname-name with-open-stream
syn keyword lispFunc file-error pathname-type with-package-iterator syn keyword lispFunc file-error pathnamep with-output-to-string
syn keyword lispFunc file-error-pathname pathname-version with-simple-restart syn keyword lispFunc file-error-pathname pathname-type with-package-iterator
syn keyword lispFunc file-length pathnamep with-slots syn keyword lispFunc file-length pathname-version with-simple-restart
syn keyword lispFunc file-namestring peek-char with-standard-io-syntax syn keyword lispFunc file-namestring peek-char with-slots
syn keyword lispFunc file-position phase write syn keyword lispFunc file-position phase with-standard-io-syntax
syn keyword lispFunc file-stream pi write-byte syn keyword lispFunc file-stream pi write
syn keyword lispFunc file-string-length plusp write-char syn keyword lispFunc file-string-length plusp write-byte
syn keyword lispFunc file-write-date pop write-line syn keyword lispFunc file-write-date pop write-char
syn keyword lispFunc fill position write-sequence syn keyword lispFunc fill position write-line
syn keyword lispFunc fill-pointer position-if write-string syn keyword lispFunc fill-pointer position-if write-sequence
syn keyword lispFunc find position-if-not write-to-string syn keyword lispFunc find position-if-not write-string
syn keyword lispFunc find-all-symbols pprint y-or-n-p syn keyword lispFunc find-all-symbols pprint write-to-string
syn keyword lispFunc find-class pprint-dispatch yes-or-no-p syn keyword lispFunc find-class pprint-dispatch yes-or-no-p
syn keyword lispFunc find-if pprint-exit-if-list-exhausted zerop syn keyword lispFunc find-if pprint-exit-if-list-exhausted y-or-n-p
syn keyword lispFunc find-if-not pprint-fill syn keyword lispFunc find-if-not pprint-fill zerop
syn match lispFunc "\<c[ad]\+r\>" syn match lispFunc "\<c[ad]\+r\>"
if exists("g:lispsyntax_clisp") if exists("g:lispsyntax_clisp")
@ -563,50 +563,50 @@ syn sync lines=100
" Define Highlighting: {{{1 " Define Highlighting: {{{1
if !exists("skip_lisp_syntax_inits") if !exists("skip_lisp_syntax_inits")
hi def link lispCommentRegion lispComment hi def link lispCommentRegion lispComment
hi def link lispAtomNmbr lispNumber hi def link lispAtomNmbr lispNumber
hi def link lispAtomMark lispMark hi def link lispAtomMark lispMark
hi def link lispInStringString lispString hi def link lispInStringString lispString
hi def link lispAtom Identifier hi def link lispAtom Identifier
hi def link lispAtomBarSymbol Special hi def link lispAtomBarSymbol Special
hi def link lispBarSymbol Special hi def link lispBarSymbol Special
hi def link lispComment Comment hi def link lispComment Comment
hi def link lispConcat Statement hi def link lispConcat Statement
hi def link lispDecl Statement hi def link lispDecl Statement
hi def link lispFunc Statement hi def link lispFunc Statement
hi def link lispKey Type hi def link lispKey Type
hi def link lispMark Delimiter hi def link lispMark Delimiter
hi def link lispNumber Number hi def link lispNumber Number
hi def link lispParenError Error hi def link lispParenError Error
hi def link lispEscapeSpecial Type hi def link lispEscapeSpecial Type
hi def link lispString String hi def link lispString String
hi def link lispTodo Todo hi def link lispTodo Todo
hi def link lispVar Statement hi def link lispVar Statement
if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
if &bg == "dark" if &bg == "dark"
hi def hlLevel0 ctermfg=red guifg=red1 hi def hlLevel0 ctermfg=red guifg=red1
hi def hlLevel1 ctermfg=yellow guifg=orange1 hi def hlLevel1 ctermfg=yellow guifg=orange1
hi def hlLevel2 ctermfg=green guifg=yellow1 hi def hlLevel2 ctermfg=green guifg=yellow1
hi def hlLevel3 ctermfg=cyan guifg=greenyellow hi def hlLevel3 ctermfg=cyan guifg=greenyellow
hi def hlLevel4 ctermfg=magenta guifg=green1 hi def hlLevel4 ctermfg=magenta guifg=green1
hi def hlLevel5 ctermfg=red guifg=springgreen1 hi def hlLevel5 ctermfg=red guifg=springgreen1
hi def hlLevel6 ctermfg=yellow guifg=cyan1 hi def hlLevel6 ctermfg=yellow guifg=cyan1
hi def hlLevel7 ctermfg=green guifg=slateblue1 hi def hlLevel7 ctermfg=green guifg=slateblue1
hi def hlLevel8 ctermfg=cyan guifg=magenta1 hi def hlLevel8 ctermfg=cyan guifg=magenta1
hi def hlLevel9 ctermfg=magenta guifg=purple1 hi def hlLevel9 ctermfg=magenta guifg=purple1
else else
hi def hlLevel0 ctermfg=red guifg=red3 hi def hlLevel0 ctermfg=red guifg=red3
hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 hi def hlLevel1 ctermfg=darkyellow guifg=orangered3
hi def hlLevel2 ctermfg=darkgreen guifg=orange2 hi def hlLevel2 ctermfg=darkgreen guifg=orange2
hi def hlLevel3 ctermfg=blue guifg=yellow3 hi def hlLevel3 ctermfg=blue guifg=yellow3
hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
hi def hlLevel5 ctermfg=red guifg=green4 hi def hlLevel5 ctermfg=red guifg=green4
hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
hi def hlLevel8 ctermfg=blue guifg=darkslateblue hi def hlLevel8 ctermfg=blue guifg=darkslateblue
hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
endif endif
endif endif

View File

@ -1,10 +1,10 @@
" Vim syntax file " Vim syntax file
" Language: NeoMutt setup files " Language: NeoMutt setup files
" Maintainer: Guillaume Brogi <gui-gui@netcourrier.com> " Maintainer: Guillaume Brogi <gui-gui@netcourrier.com>
" Last Change: 2017 Oct 28 " Last Change: 2018-03-25
" Original version based on syntax/muttrc.vim " Original version based on syntax/muttrc.vim
" This file covers NeoMutt 20170912 " This file covers NeoMutt 2018-03-23
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@ -134,7 +134,7 @@ syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip
" Format escapes and conditionals " Format escapes and conditionals
syntax match muttrcFormatConditionals2 contained /[^?]*?/ syntax match muttrcFormatConditionals2 contained /[^?]*?/
function s:escapesConditionals(baseName, sequence, alignment, secondary) function! s:escapesConditionals(baseName, sequence, alignment, secondary)
exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/' exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/'
if a:alignment if a:alignment
exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./' exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./'
@ -146,43 +146,40 @@ function s:escapesConditionals(baseName, sequence, alignment, secondary)
endif endif
endfunction endfunction
" flatcap compiled a list of formats here: https://pastebin.com/raw/5QXhiP6L " CHECKED 2018-04-18
" UPDATE " Ref: index_format_str() in hdrline.c
" The following info was pulled from hdr_format_str in hdrline.c call s:escapesConditionals('IndexFormat', '[AaBbCcDdEeFfgHIiJKLlMmNnOPqRrSsTtuvWXxYyZz(<[{]\|G[a-zA-Z]\+', 1, 1)
call s:escapesConditionals('IndexFormat', '[AaBbCcDdEeFfgHIiJKLlMmNnOPqrSsTtuvWXxYyZz(<[{]\|G[a-zA-Z]\+', 1, 1) " Ref: alias_format_str() in addrbook.c
" The following info was pulled from alias_format_str in addrbook.c
syntax match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ syntax match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/
" The following info was pulled from newsgroup_format_str in browser.c " Ref: group_index_format_str() in browser.c
call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1) call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
" The following info was pulled from cb_format_str in sidebar.c " Ref: sidebar_format_str() in sidebar.c
call s:escapesConditionals('SidebarFormat', '[BdFLNnSt!]', 1, 1) call s:escapesConditionals('SidebarFormat', '[BdFLNnSt!]', 1, 1)
" The following info was pulled from query_format_str in query.c " Ref: query_format_str() in query.c
call s:escapesConditionals('QueryFormat', '[acent]', 0, 1) call s:escapesConditionals('QueryFormat', '[acent]', 0, 1)
" The following info was pulled from mutt_attach_fmt in recvattach.c " Ref: attach_format_str() in recvattach.c
call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1) call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1)
" The following info was pulled from compose_format_str in compose.c " Ref: compose_format_str() in compose.c
syntax match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ syntax match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/
syntax match muttrcComposeFormatEscapes contained /%[>|*]./ syntax match muttrcComposeFormatEscapes contained /%[>|*]./
" The following info was pulled from folder_format_str in browser.c " Ref: folder_format_str() in browser.c
call s:escapesConditionals('FolderFormat', '[CDdfFglNstu]', 1, 0) call s:escapesConditionals('FolderFormat', '[CDdFfglmNnstu]', 1, 0)
" The following info was pulled from mix_entry_fmt in remailer.c " Ref: mix_format_str() in remailer.c
call s:escapesConditionals('MixFormat', '[acns]', 0, 0) call s:escapesConditionals('MixFormat', '[acns]', 0, 0)
" The following info was pulled from crypt_entry_fmt in crypt-gpgme.c " Ref: status_format_str() in status.c
" and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports call s:escapesConditionals('StatusFormat', '[bdFfhLlMmnoPpRrSstuVv]', 1, 1)
" 'p', but pgp_entry_fmt does not). " Ref: fmt_smime_command() in ncrypt/smime.c
call s:escapesConditionals('PGPFormat', '[acfklnptu[]', 0, 0)
" The following info was pulled from _mutt_fmt_pgp_command in
" pgpinvoke.c
call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
" The following info was pulled from status_format_str in status.c
call s:escapesConditionals('StatusFormat', '[bdFfhLlMmnoPprSstuVu]', 1, 1)
" This matches the documentation, but directly contradicts the code
" (according to the code, this should be identical to the
" muttrcPGPCmdFormatEscapes
syntax match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acfklntu[%]/
" The following info was pulled from _mutt_fmt_smime_command in
" smime.c
call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1) call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
" Ref: crypt_format_str() in ncrypt/crypt_gpgme.c
" Ref: pgp_entry_fmt() in ncrypt/pgpkey.c
" Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not
call s:escapesConditionals('PGPFormat', '[acfklnptu[]', 0, 0)
" Ref: fmt_pgp_command() ncrypt/pgpinvoke.c
call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
" This matches the documentation, but directly contradicts the code
" (according to the code, this should be identical to the muttrcPGPCmdFormatEscapes
syntax match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acfklntu[%]/
syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
@ -190,36 +187,36 @@ syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrf
syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
syntax match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr syntax match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr
syntax match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr syntax match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr
syntax match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr syntax match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr
syntax match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr syntax match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr
syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr syntax match muttrcVarEqualsGrpIdxFmt contained skipwhite "=" nextgroup=muttrcGroupIndexFormatStr
syntax match muttrcVarEqualsGrpIdxFmt contained skipwhite "=" nextgroup=muttrcGroupIndexFormatStr syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr
syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr
syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr
syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
syntax match muttrcVarEqualsSdbFmt contained skipwhite "=" nextgroup=muttrcSidebarFormatStr
syntax match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
syntax match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr syntax match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
syntax match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr syntax match muttrcVarEqualsSdbFmt contained skipwhite "=" nextgroup=muttrcSidebarFormatStr
syntax match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
syntax match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" CHECKED 2018-04-18
" List of the different screens in mutt " List of the different screens in mutt
" UPDATE syntax keyword muttrcMenu contained alias attach browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime
syntax keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic
syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu
syntax match muttrcMenuCommas /,/ contained syntax match muttrcMenuCommas /,/ contained
" CHECKED 2018-04-18
" List of hooks in Commands in init.h " List of hooks in Commands in init.h
" UPDATE
syntax keyword muttrcHooks contained skipwhite syntax keyword muttrcHooks contained skipwhite
\ account-hook append-hook charset-hook \ account-hook append-hook close-hook crypt-hook fcc-hook fcc-save-hook
\ close-hook crypt-hook fcc-hook fcc-save-hook folder-hook iconv-hook mbox-hook \ folder-hook iconv-hook mbox-hook message-hook open-hook pgp-hook
\ message-hook open-hook pgp-hook reply-hook save-hook send-hook send2-hook \ reply-hook save-hook send-hook send2-hook
syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
syntax region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syntax region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
@ -375,28 +372,29 @@ syntax keyword muttrcMonoAttrib contained bold none normal reverse standout unde
syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose
syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono
" CHECKED 2018-04-18
" List of fields in Fields in color.c " List of fields in Fields in color.c
" UPDATE syntax keyword muttrcColorField skipwhite contained
syntax keyword muttrcColorField skipwhite contained \ attachment attach_headers body bold error hdrdefault header index
\ attach_headers attachment bold error hdrdefault index_author index_collapsed \ index_author index_collapsed index_date index_flags index_label
\ index_date index_label index_number index_size index_subject index_tags \ index_number index_size index_subject index_tag index_tags indicator
\ indicator markers message normal progress prompt quoted search sidebar_divider \ markers message normal progress prompt quoted search sidebar_divider
\ sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new \ sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
\ sidebar_ordinary sidebar_spoolfile signature status tilde tree underline \ sidebar_ordinary sidebar_spoolfile signature status tilde tree underline
\ body header index index_flags index_tag
\ nextgroup=muttrcColor \ nextgroup=muttrcColor
syntax match muttrcColorField contained "\<quoted\d\=\>" syntax match muttrcColorField contained "\<quoted\d\=\>"
syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField
" CHECKED 2018-04-18
" List of fields in ComposeFields in color.c " List of fields in ComposeFields in color.c
" UPDATE
syntax keyword muttrcColorComposeField skipwhite contained syntax keyword muttrcColorComposeField skipwhite contained
\ header security_encrypt security_sign security_both security_none \ header security_both security_encrypt security_none security_sign
\ nextgroup=muttrcColorFG,muttrcColorFGNL \ nextgroup=muttrcColorFG,muttrcColorFGNL
syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
function s:boolQuadGen(type, vars, deprecated) function! s:boolQuadGen(type, vars, deprecated)
let l:novars = copy(a:vars) let l:novars = copy(a:vars)
call map(l:novars, '"no" . v:val') call map(l:novars, '"no" . v:val')
let l:invvars = copy(a:vars) let l:invvars = copy(a:vars)
@ -414,104 +412,107 @@ function s:boolQuadGen(type, vars, deprecated)
exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr' exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
endfunction endfunction
" CHECKED 2018-04-18
" List of DT_BOOL in MuttVars in init.h " List of DT_BOOL in MuttVars in init.h
" UPDATE
call s:boolQuadGen('Bool', [ call s:boolQuadGen('Bool', [
\ 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc', 'askcc', \ 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc',
\ 'ask_follow_up', 'ask_x_comment_to', 'attach_split', 'autoedit', 'auto_tag', \ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_split', 'autoedit',
\ 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly', 'check_mbox_size', \ 'auto_tag', 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
\ 'check_new', 'collapse_all', 'collapse_flagged', 'collapse_unread', \ 'change_folder_next', 'check_mbox_size', 'check_new', 'collapse_all',
\ 'confirmappend', 'confirmcreate', 'crypt_autoencrypt', 'crypt_autopgp', \ 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate',
\ 'crypt_autosign', 'crypt_autosmime', 'crypt_confirmhook', \ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime',
\ 'crypt_opportunistic_encrypt', 'crypt_replyencrypt', 'crypt_replysign', \ 'crypt_confirmhook', 'crypt_opportunistic_encrypt', 'crypt_replyencrypt',
\ 'crypt_replysignencrypted', 'crypt_timestamp', 'crypt_use_gpgme', \ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp',
\ 'crypt_use_pka', 'delete_untag', 'digest_collapse', 'duplicate_threads', \ 'crypt_use_gpgme', 'crypt_use_pka', 'delete_untag', 'digest_collapse',
\ 'edit_headers', 'encode_from', 'fast_reply', 'fcc_clear', 'flag_safe', \ 'duplicate_threads', 'edit_headers', 'encode_from', 'fast_reply',
\ 'followup_to', 'force_name', 'forward_decode', 'forward_decrypt', \ 'fcc_clear', 'flag_safe', 'followup_to', 'force_name', 'forward_decode',
\ 'forward_quote', 'forward_references', 'hdrs', 'header', \ 'forward_decrypt', 'forward_quote', 'forward_references', 'hdrs',
\ 'header_cache_compress', 'header_color_partial', 'help', 'hidden_host', \ 'header', 'header_cache_compress', 'header_color_partial', 'help',
\ 'hide_limited', 'hide_missing', 'hide_thread_subject', 'hide_top_limited', \ 'hidden_host', 'hide_limited', 'hide_missing', 'hide_thread_subject',
\ 'hide_top_missing', 'history_remove_dups', 'honor_disposition', 'idn_decode', \ 'hide_top_limited', 'hide_top_missing', 'history_remove_dups',
\ 'idn_encode', 'ignore_linear_white_space', 'ignore_list_reply_to', \ 'honor_disposition', 'idn_decode', 'idn_encode', 'ignore_list_reply_to',
\ 'imap_check_subscribed', 'imap_idle', 'imap_list_subscribed', 'imap_passive', \ 'imap_check_subscribed', 'imap_idle', 'imap_list_subscribed',
\ 'imap_peek', 'imap_servernoise', 'implicit_autoview', 'include_onlyfirst', \ 'imap_passive', 'imap_peek', 'imap_servernoise', 'implicit_autoview',
\ 'keep_flagged', 'keywords_legacy', 'keywords_standard', 'mailcap_sanitize', \ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize',
\ 'mail_check_recent', 'mail_check_stats', 'maildir_check_cur', \ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash',
\ 'maildir_header_cache_verify', 'maildir_trash', 'markers', 'mark_old', \ 'mail_check_recent', 'mail_check_stats', 'markers', 'mark_old',
\ 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key', 'metoo', \ 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key',
\ 'mh_purge', 'mime_forward_decode', 'mime_subject', 'mime_type_query_first', \ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject',
\ 'narrow_tree', 'nm_record', 'nntp_listgroup', 'nntp_load_description', \ 'mime_type_query_first', 'narrow_tree', 'nm_record', 'nntp_listgroup',
\ 'pager_stop', 'pgp_auto_decode', 'pgp_autoinline', 'pgp_check_exit', \ 'nntp_load_description', 'pager_stop', 'pgp_autoinline',
\ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_replyinline', \ 'pgp_auto_decode', 'pgp_check_exit', 'pgp_ignore_subkeys', 'pgp_long_ids',
\ 'pgp_retainable_sigs', 'pgp_self_encrypt', 'pgp_show_unusable', \ 'pgp_replyinline', 'pgp_retainable_sigs', 'pgp_self_encrypt',
\ 'pgp_strict_enc', 'pgp_use_gpg_agent', 'pipe_decode', 'pipe_split', \ 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent', 'pipe_decode',
\ 'pop_auth_try_all', 'pop_last', 'postpone_encrypt', 'print_decode', \ 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt',
\ 'print_split', 'prompt_after', 'read_only', 'reflow_space_quotes', \ 'print_decode', 'print_split', 'prompt_after', 'read_only',
\ 'reflow_text', 'reply_self', 'reply_with_xorig', 'resolve', \ 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig',
\ 'resume_draft_files', 'resume_edited_draft_files', 'reverse_alias', \ 'resolve', 'resume_draft_files', 'resume_edited_draft_files',
\ 'reverse_name', 'reverse_realname', 'rfc2047_parameters', 'save_address', \ 'reverse_alias', 'reverse_name', 'reverse_realname', 'rfc2047_parameters',
\ 'save_empty', 'save_name', 'save_unsubscribed', 'score', 'show_new_news', \ 'save_address', 'save_empty', 'save_name', 'save_unsubscribed', 'score',
\ 'show_only_unread', 'sidebar_folder_indent', 'sidebar_new_mail_only', \ 'show_new_news', 'show_only_unread', 'sidebar_folder_indent',
\ 'sidebar_next_new_wrap', 'sidebar_on_right', 'sidebar_short_path', \ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_on_right',
\ 'sidebar_visible', 'sig_dashes', 'sig_on_top', 'smart_wrap', \ 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top',
\ 'smime_ask_cert_label', 'smime_decrypt_use_default_key', 'smime_is_default', \ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key',
\ 'smime_self_encrypt', 'sort_re', 'ssl_force_tls', 'ssl_use_sslv2', \ 'smime_is_default', 'smime_self_encrypt', 'sort_re', 'ssl_force_tls',
\ 'ssl_use_sslv3', 'ssl_usesystemcerts', 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', \ 'ssl_usesystemcerts', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_tlsv1',
\ 'ssl_use_tlsv1_2', 'ssl_verify_dates', 'ssl_verify_host', \ 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_verify_dates',
\ 'ssl_verify_partial_chains', 'status_on_top', 'strict_threads', 'suspend', \ 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
\ 'text_flowed', 'thorough_search', 'thread_received', 'tilde', 'ts_enabled', \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search',
\ 'uncollapse_jump', 'uncollapse_new', 'use_8bitmime', 'use_domain', \ 'thread_received', 'tilde', 'ts_enabled', 'uncollapse_jump',
\ 'use_envelope_from', 'use_from', 'use_ipv6', 'user_agent', \ 'uncollapse_new', 'user_agent', 'use_8bitmime', 'use_domain',
\ 'virtual_spoolfile', 'wait_key', 'weed', 'wrap_search', 'write_bcc', \ 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile',
\ 'x_comment_to' \ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to'
\ ], 0) \ ], 0)
" CHECKED 2018-04-18
" Deprecated Bools " Deprecated Bools
" UPDATE
" List of DT_SYNONYM synonyms of Bools in MuttVars in init.h " List of DT_SYNONYM synonyms of Bools in MuttVars in init.h
call s:boolQuadGen('Bool', [ call s:boolQuadGen('Bool', [
\ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote', \ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt',
\ 'pgp_autoencrypt', 'pgp_autosign', 'pgp_auto_traditional', \ 'forw_quote', 'ignore_linear_white_space', 'pgp_autoencrypt',
\ 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replysign', \ 'pgp_autosign', 'pgp_auto_traditional', 'pgp_create_traditional',
\ 'pgp_replysignencrypted', 'xterm_set_titles' \ 'pgp_replyencrypt', 'pgp_replysign', 'pgp_replysignencrypted',
\ 'xterm_set_titles'
\ ], 1) \ ], 1)
" CHECKED 2018-04-18
" List of DT_QUAD in MuttVars in init.h " List of DT_QUAD in MuttVars in init.h
" UPDATE
call s:boolQuadGen('Quad', [ call s:boolQuadGen('Quad', [
\ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce',
\ 'catchup_newsgroup', 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach', \ 'catchup_newsgroup', 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach',
\ 'followup_to_poster', 'forward_edit', 'honor_followup_to', 'include', \ 'followup_to_poster', 'forward_edit', 'honor_followup_to', 'include',
\ 'mime_forward', 'mime_forward_rest', 'move', 'pgp_encrypt_self', \ 'mime_forward', 'mime_forward_rest', 'move', 'pgp_mime_auto',
\ 'pgp_mime_auto', 'pop_delete', 'pop_reconnect', 'post_moderated', 'postpone', \ 'pop_delete', 'pop_reconnect', 'postpone', 'post_moderated', 'print',
\ 'print', 'quit', 'recall', 'reply_to', 'smime_encrypt_self', 'ssl_starttls', \ 'quit', 'recall', 'reply_to', 'ssl_starttls'
\ ], 0) \ ], 0)
" CHECKED 2018-04-18
" Deprecated Quads " Deprecated Quads
" UPDATE
" List of DT_SYNONYM synonyms of Quads in MuttVars in init.h " List of DT_SYNONYM synonyms of Quads in MuttVars in init.h
call s:boolQuadGen('Quad', [ call s:boolQuadGen('Quad', [
\ 'mime_fwd', 'pgp_verify_sig' \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
\ ], 1) \ ], 1)
" CHECKED 2018-04-18
" List of DT_NUMBER in MuttVars in init.h " List of DT_NUMBER in MuttVars in init.h
" UPDATE
syntax keyword muttrcVarNum skipwhite contained syntax keyword muttrcVarNum skipwhite contained
\ connect_timeout debug_level history imap_keepalive imap_pipeline_depth \ connect_timeout debug_level history imap_keepalive imap_pipeline_depth
\ imap_poll_timeout mail_check mail_check_stats_interval menu_context net_inc \ imap_poll_timeout mail_check mail_check_stats_interval menu_context
\ nm_db_limit nm_open_timeout nm_query_window_current_position \ net_inc nm_db_limit nm_open_timeout nm_query_window_current_position
\ nm_query_window_duration nntp_context nntp_poll pager_context \ nm_query_window_duration nntp_context nntp_poll pager_context
\ pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap \ pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap
\ save_history score_threshold_delete score_threshold_flag score_threshold_read \ save_history score_threshold_delete score_threshold_flag
\ search_context sendmail_wait sidebar_width skip_quoted_offset sleep_time \ score_threshold_read search_context sendmail_wait sidebar_component_depth
\ smime_timeout ssl_min_dh_prime_bits time_inc timeout wrap wrap_headers \ sidebar_width skip_quoted_offset sleep_time smime_timeout
\ wrapmargin write_inc \ ssl_min_dh_prime_bits timeout time_inc wrap wrap_headers write_inc
\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
syntax keyword muttrcVarDeprecatedNum contained skipwhite
\ wrapmargin
\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" CHECKED 2018-04-18
" List of DT_STRING in MuttVars in init.h " List of DT_STRING in MuttVars in init.h
" UPDATE
" Special cases first, and all the rest at the end " Special cases first, and all the rest at the end
" A lot of special cases are format, flatcap compiled a list here https://pastebin.com/raw/5QXhiP6L
" Formats themselves must be updated in their respective groups " Formats themselves must be updated in their respective groups
" See s:escapesConditionals " See s:escapesConditionals
syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
@ -523,49 +524,52 @@ syntax keyword muttrcVarStr contained skipwhite attribution index_format message
" Deprecated format " Deprecated format
syntax keyword muttrcVarDeprecatedStr contained skipwhite hdr_format msg_format nextgroup=muttrcVarEqualsIdxFmt syntax keyword muttrcVarDeprecatedStr contained skipwhite hdr_format msg_format nextgroup=muttrcVarEqualsIdxFmt
syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ pgp_decode_command pgp_verify_command pgp_decrypt_command \ pgp_clearsign_command pgp_decode_command pgp_decrypt_command
\ pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command \ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command
\ pgp_encrypt_only_command pgp_import_command pgp_export_command \ pgp_import_command pgp_list_pubring_command pgp_list_secring_command
\ pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command \ pgp_sign_command pgp_verify_command pgp_verify_key_command
\ nextgroup=muttrcVarEqualsPGPCmdFmt \ nextgroup=muttrcVarEqualsPGPCmdFmt
syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
syntax keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt syntax keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ smime_decrypt_command smime_verify_command smime_verify_opaque_command \ smime_decrypt_command smime_encrypt_command smime_get_cert_command
\ smime_sign_command smime_sign_opaque_command smime_encrypt_command \ smime_get_cert_email_command smime_get_signer_cert_command
\ smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command \ smime_import_cert_command smime_pk7out_command smime_sign_command
\ smime_import_cert_command smime_get_cert_email_command \ smime_verify_command smime_verify_opaque_command
\ nextgroup=muttrcVarEqualsSmimeFmt \ nextgroup=muttrcVarEqualsSmimeFmt
syntax keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt syntax keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt
" Deprecated format " Deprecated format
syntax keyword muttrcVarDeprecatedStr contained skipwhite xterm_icon xterm_title nextgroup=muttrcVarEqualsStatusFmt syntax keyword muttrcVarDeprecatedStr contained skipwhite xterm_icon xterm_title nextgroup=muttrcVarEqualsStatusFmt
syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
syntax keyword muttrcVarStr contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt syntax keyword muttrcVarStr contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt
syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ assumed_charset attach_charset attach_sep attribution_locale charset \ assumed_charset attach_charset attach_sep attribution_locale charset
\ config_charset content_type default_hook dsn_notify dsn_return empty_subject \ config_charset content_type default_hook dsn_notify dsn_return
\ escape forward_attribution_intro forward_attribution_trailer forward_format \ empty_subject escape forward_attribution_intro forward_attribution_trailer
\ header_cache_pagesize hostname imap_authenticators imap_delim_chars \ forward_format header_cache_pagesize hidden_tags hostname
\ imap_headers imap_login imap_pass imap_user indent_string mailcap_path \ imap_authenticators imap_delim_chars imap_headers imap_login imap_pass
\ mark_macro_prefix mh_seq_flagged mh_seq_replied mh_seq_unseen \ imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged
\ mime_type_query_command newsgroups_charset news_server nm_default_uri \ mh_seq_replied mh_seq_unseen mime_type_query_command newsgroups_charset
\ nm_exclude_tags nm_hidden_tags nm_query_type nm_query_window_current_search \ news_server nm_default_uri nm_exclude_tags nm_query_type
\ nm_query_window_timebase nm_record_tags nm_unread_tag nntp_authenticators \ nm_query_window_current_search nm_query_window_timebase nm_record_tags
\ nntp_pass nntp_user pgp_self_encrypt_as pgp_sign_as pipe_sep \ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key
\ pop_authenticators pop_host pop_pass pop_user post_indent_string \ pgp_sign_as pipe_sep pop_authenticators pop_host pop_pass pop_user
\ postpone_encrypt_as preconnect realname send_charset \ postpone_encrypt_as post_indent_string preconnect realname send_charset
\ show_multipart_alternative sidebar_delim_chars sidebar_divider_char \ show_multipart_alternative sidebar_delim_chars sidebar_divider_char
\ sidebar_indent_string simple_search smime_default_key smime_encrypt_with \ sidebar_indent_string simple_search smime_default_key smime_encrypt_with
\ smime_self_encrypt_as smime_sign_digest_alg smtp_authenticators smtp_pass \ smime_sign_as smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url
\ smtp_url spam_separator ssl_ciphers tunnel xlabel_delimiter \ spam_separator ssl_ciphers tunnel
\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" Deprecated strings " Deprecated strings
syntax keyword muttrcVarDeprecatedStr contained skipwhite syntax keyword muttrcVarDeprecatedStr contained skipwhite
\ forw_format indent_str post_indent_str smime_sign_as \ forw_format indent_str pgp_self_encrypt_as post_indent_str
\ smime_self_encrypt_as
\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" CHECKED 2018-04-18
" List of DT_ADDRESS " List of DT_ADDRESS
syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of DT_HCACHE " List of DT_HCACHE
@ -574,6 +578,8 @@ syntax keyword muttrcVarStr contained skipwhite header_cache_backend nextgroup=m
syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of DT_MBTABLE " List of DT_MBTABLE
syntax keyword muttrcVarStr contained skipwhite flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" CHECKED 2018-04-18
" List of DT_PATH " List of DT_PATH
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ alias_file certificate_file debug_file display_filter editor entropy_file \ alias_file certificate_file debug_file display_filter editor entropy_file
@ -583,20 +589,24 @@ syntax keyword muttrcVarStr contained skipwhite
\ smime_certificates smime_keys spoolfile ssl_ca_certificates_file \ smime_certificates smime_keys spoolfile ssl_ca_certificates_file
\ ssl_client_cert tmpdir trash visual \ ssl_client_cert tmpdir trash visual
\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of deprecated DT_PATH
syntax keyword muttrcVarDeprecatedStr contained skipwhite print_cmd nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr " CHECKED 2018-04-18
" List of DT_REGEX " List of DT_REGEX
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ attach_keyword gecos_mask mask pgp_decryption_okay pgp_good_sign quote_regexp \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign
\ reply_regexp smileys \ quote_regex reply_regex smileys
\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of deprecated DT_PATH
syntax keyword muttrcVarDeprecatedStr contained skipwhite print_cmd nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of deprecated DT_REGEX
syntax keyword muttrcVarDeprecatedStr contained skipwhite abort_noattach_regexp attach_keyword quote_regexp reply_regexp nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" List of DT_SORT " List of DT_SORT
syntax keyword muttrcVarStr contained skipwhite syntax keyword muttrcVarStr contained skipwhite
\ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
" CHECKED 2018-04-18
" List of commands in Commands in init.h " List of commands in Commands in init.h
" UPDATE
" Remember to remove hooks, they have already been dealt with " Remember to remove hooks, they have already been dealt with
syntax keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString syntax keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString
syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks
@ -609,19 +619,16 @@ syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrc
syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
syntax keyword muttrcCommand skipwhite exec nextgroup=muttrcFunction syntax keyword muttrcCommand skipwhite exec nextgroup=muttrcFunction
syntax keyword muttrcCommand skipwhite syntax keyword muttrcCommand skipwhite
\ alternative_order attachments auto_view hdr_order ifdef ifndef ignore lua \ alternative_order attachments auto_view finish hdr_order ifdef ifndef
\ lua-source mailboxes mailto_allow mime_lookup my_hdr push score setenv \ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score
\ sidebar_whitelist source subjectrx tag-formats tag-transforms \ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats
\ unalternative_order unattachments unauto_view uncolor unhdr_order unignore \ tag-transforms unalternative_order unattachments unauto_view uncolor
\ unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore unsetenv \ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono
\ unsidebar_whitelist unsubjectrx unvirtual-mailboxes virtual-mailboxes \ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from
\ unvirtual-mailboxes virtual-mailboxes
" CHECKED 2018-04-18
" List of functions in functions.h " List of functions in functions.h
" UPDATE
syntax match muttrcFunction contained "\<accept\>"
syntax match muttrcFunction contained "\<append\>"
syntax match muttrcFunction contained "\<attach-file\>"
syntax match muttrcFunction contained "\<attach-key\>"
syntax match muttrcFunction contained "\<accept\>" syntax match muttrcFunction contained "\<accept\>"
syntax match muttrcFunction contained "\<append\>" syntax match muttrcFunction contained "\<append\>"
syntax match muttrcFunction contained "\<attach-file\>" syntax match muttrcFunction contained "\<attach-file\>"
@ -632,8 +639,8 @@ syntax match muttrcFunction contained "\<backspace\>"
syntax match muttrcFunction contained "\<backward-char\>" syntax match muttrcFunction contained "\<backward-char\>"
syntax match muttrcFunction contained "\<backward-word\>" syntax match muttrcFunction contained "\<backward-word\>"
syntax match muttrcFunction contained "\<bol\>" syntax match muttrcFunction contained "\<bol\>"
syntax match muttrcFunction contained "\<bottom\>"
syntax match muttrcFunction contained "\<bottom-page\>" syntax match muttrcFunction contained "\<bottom-page\>"
syntax match muttrcFunction contained "\<bottom\>"
syntax match muttrcFunction contained "\<bounce-message\>" syntax match muttrcFunction contained "\<bounce-message\>"
syntax match muttrcFunction contained "\<break-thread\>" syntax match muttrcFunction contained "\<break-thread\>"
syntax match muttrcFunction contained "\<buffy-cycle\>" syntax match muttrcFunction contained "\<buffy-cycle\>"
@ -643,10 +650,10 @@ syntax match muttrcFunction contained "\<catchup\>"
syntax match muttrcFunction contained "\<chain-next\>" syntax match muttrcFunction contained "\<chain-next\>"
syntax match muttrcFunction contained "\<chain-prev\>" syntax match muttrcFunction contained "\<chain-prev\>"
syntax match muttrcFunction contained "\<change-dir\>" syntax match muttrcFunction contained "\<change-dir\>"
syntax match muttrcFunction contained "\<change-folder\>"
syntax match muttrcFunction contained "\<change-folder-readonly\>" syntax match muttrcFunction contained "\<change-folder-readonly\>"
syntax match muttrcFunction contained "\<change-newsgroup\>" syntax match muttrcFunction contained "\<change-folder\>"
syntax match muttrcFunction contained "\<change-newsgroup-readonly\>" syntax match muttrcFunction contained "\<change-newsgroup-readonly\>"
syntax match muttrcFunction contained "\<change-newsgroup\>"
syntax match muttrcFunction contained "\<change-vfolder\>" syntax match muttrcFunction contained "\<change-vfolder\>"
syntax match muttrcFunction contained "\<check-new\>" syntax match muttrcFunction contained "\<check-new\>"
syntax match muttrcFunction contained "\<check-traditional-pgp\>" syntax match muttrcFunction contained "\<check-traditional-pgp\>"
@ -654,8 +661,8 @@ syntax match muttrcFunction contained "\<clear-flag\>"
syntax match muttrcFunction contained "\<collapse-all\>" syntax match muttrcFunction contained "\<collapse-all\>"
syntax match muttrcFunction contained "\<collapse-parts\>" syntax match muttrcFunction contained "\<collapse-parts\>"
syntax match muttrcFunction contained "\<collapse-thread\>" syntax match muttrcFunction contained "\<collapse-thread\>"
syntax match muttrcFunction contained "\<complete\>"
syntax match muttrcFunction contained "\<complete-query\>" syntax match muttrcFunction contained "\<complete-query\>"
syntax match muttrcFunction contained "\<complete\>"
syntax match muttrcFunction contained "\<compose-to-sender\>" syntax match muttrcFunction contained "\<compose-to-sender\>"
syntax match muttrcFunction contained "\<copy-file\>" syntax match muttrcFunction contained "\<copy-file\>"
syntax match muttrcFunction contained "\<copy-message\>" syntax match muttrcFunction contained "\<copy-message\>"
@ -668,7 +675,6 @@ syntax match muttrcFunction contained "\<decode-copy\>"
syntax match muttrcFunction contained "\<decode-save\>" syntax match muttrcFunction contained "\<decode-save\>"
syntax match muttrcFunction contained "\<decrypt-copy\>" syntax match muttrcFunction contained "\<decrypt-copy\>"
syntax match muttrcFunction contained "\<decrypt-save\>" syntax match muttrcFunction contained "\<decrypt-save\>"
syntax match muttrcFunction contained "\<delete\>"
syntax match muttrcFunction contained "\<delete-char\>" syntax match muttrcFunction contained "\<delete-char\>"
syntax match muttrcFunction contained "\<delete-entry\>" syntax match muttrcFunction contained "\<delete-entry\>"
syntax match muttrcFunction contained "\<delete-mailbox\>" syntax match muttrcFunction contained "\<delete-mailbox\>"
@ -676,13 +682,13 @@ syntax match muttrcFunction contained "\<delete-message\>"
syntax match muttrcFunction contained "\<delete-pattern\>" syntax match muttrcFunction contained "\<delete-pattern\>"
syntax match muttrcFunction contained "\<delete-subthread\>" syntax match muttrcFunction contained "\<delete-subthread\>"
syntax match muttrcFunction contained "\<delete-thread\>" syntax match muttrcFunction contained "\<delete-thread\>"
syntax match muttrcFunction contained "\<delete\>"
syntax match muttrcFunction contained "\<detach-file\>" syntax match muttrcFunction contained "\<detach-file\>"
syntax match muttrcFunction contained "\<display-address\>" syntax match muttrcFunction contained "\<display-address\>"
syntax match muttrcFunction contained "\<display-filename\>" syntax match muttrcFunction contained "\<display-filename\>"
syntax match muttrcFunction contained "\<display-message\>" syntax match muttrcFunction contained "\<display-message\>"
syntax match muttrcFunction contained "\<display-toggle-weed\>" syntax match muttrcFunction contained "\<display-toggle-weed\>"
syntax match muttrcFunction contained "\<downcase-word\>" syntax match muttrcFunction contained "\<downcase-word\>"
syntax match muttrcFunction contained "\<edit\>"
syntax match muttrcFunction contained "\<edit-bcc\>" syntax match muttrcFunction contained "\<edit-bcc\>"
syntax match muttrcFunction contained "\<edit-cc\>" syntax match muttrcFunction contained "\<edit-cc\>"
syntax match muttrcFunction contained "\<edit-description\>" syntax match muttrcFunction contained "\<edit-description\>"
@ -696,11 +702,14 @@ syntax match muttrcFunction contained "\<edit-label\>"
syntax match muttrcFunction contained "\<edit-message\>" syntax match muttrcFunction contained "\<edit-message\>"
syntax match muttrcFunction contained "\<edit-mime\>" syntax match muttrcFunction contained "\<edit-mime\>"
syntax match muttrcFunction contained "\<edit-newsgroups\>" syntax match muttrcFunction contained "\<edit-newsgroups\>"
syntax match muttrcFunction contained "\<edit-or-view-raw-message\>"
syntax match muttrcFunction contained "\<edit-raw-message\>"
syntax match muttrcFunction contained "\<edit-reply-to\>" syntax match muttrcFunction contained "\<edit-reply-to\>"
syntax match muttrcFunction contained "\<edit-subject\>" syntax match muttrcFunction contained "\<edit-subject\>"
syntax match muttrcFunction contained "\<edit-to\>" syntax match muttrcFunction contained "\<edit-to\>"
syntax match muttrcFunction contained "\<edit-type\>" syntax match muttrcFunction contained "\<edit-type\>"
syntax match muttrcFunction contained "\<edit-x-comment-to\>" syntax match muttrcFunction contained "\<edit-x-comment-to\>"
syntax match muttrcFunction contained "\<edit\>"
syntax match muttrcFunction contained "\<end-cond\>" syntax match muttrcFunction contained "\<end-cond\>"
syntax match muttrcFunction contained "\<enter-command\>" syntax match muttrcFunction contained "\<enter-command\>"
syntax match muttrcFunction contained "\<enter-mask\>" syntax match muttrcFunction contained "\<enter-mask\>"
@ -723,11 +732,13 @@ syntax match muttrcFunction contained "\<get-children\>"
syntax match muttrcFunction contained "\<get-message\>" syntax match muttrcFunction contained "\<get-message\>"
syntax match muttrcFunction contained "\<get-parent\>" syntax match muttrcFunction contained "\<get-parent\>"
syntax match muttrcFunction contained "\<goto-folder\>" syntax match muttrcFunction contained "\<goto-folder\>"
syntax match muttrcFunction contained "\<goto-parent\>"
syntax match muttrcFunction contained "\<group-reply\>" syntax match muttrcFunction contained "\<group-reply\>"
syntax match muttrcFunction contained "\<half-down\>" syntax match muttrcFunction contained "\<half-down\>"
syntax match muttrcFunction contained "\<half-up\>" syntax match muttrcFunction contained "\<half-up\>"
syntax match muttrcFunction contained "\<help\>" syntax match muttrcFunction contained "\<help\>"
syntax match muttrcFunction contained "\<history-down\>" syntax match muttrcFunction contained "\<history-down\>"
syntax match muttrcFunction contained "\<history-search\>"
syntax match muttrcFunction contained "\<history-up\>" syntax match muttrcFunction contained "\<history-up\>"
syntax match muttrcFunction contained "\<imap-fetch-mail\>" syntax match muttrcFunction contained "\<imap-fetch-mail\>"
syntax match muttrcFunction contained "\<imap-logout-all\>" syntax match muttrcFunction contained "\<imap-logout-all\>"
@ -739,29 +750,32 @@ syntax match muttrcFunction contained "\<kill-eow\>"
syntax match muttrcFunction contained "\<kill-line\>" syntax match muttrcFunction contained "\<kill-line\>"
syntax match muttrcFunction contained "\<kill-word\>" syntax match muttrcFunction contained "\<kill-word\>"
syntax match muttrcFunction contained "\<last-entry\>" syntax match muttrcFunction contained "\<last-entry\>"
syntax match muttrcFunction contained "\<limit\>"
syntax match muttrcFunction contained "\<limit-current-thread\>" syntax match muttrcFunction contained "\<limit-current-thread\>"
syntax match muttrcFunction contained "\<limit\>"
syntax match muttrcFunction contained "\<link-threads\>" syntax match muttrcFunction contained "\<link-threads\>"
syntax match muttrcFunction contained "\<list-reply\>" syntax match muttrcFunction contained "\<list-reply\>"
syntax match muttrcFunction contained "\<mail\>"
syntax match muttrcFunction contained "\<mail-key\>" syntax match muttrcFunction contained "\<mail-key\>"
syntax match muttrcFunction contained "\<mail\>"
syntax match muttrcFunction contained "\<mark-as-new\>" syntax match muttrcFunction contained "\<mark-as-new\>"
syntax match muttrcFunction contained "\<mark-message\>" syntax match muttrcFunction contained "\<mark-message\>"
syntax match muttrcFunction contained "\<middle-page\>" syntax match muttrcFunction contained "\<middle-page\>"
syntax match muttrcFunction contained "\<mix\>" syntax match muttrcFunction contained "\<mix\>"
syntax match muttrcFunction contained "\<modify-labels\>"
syntax match muttrcFunction contained "\<modify-labels-then-hide\>" syntax match muttrcFunction contained "\<modify-labels-then-hide\>"
syntax match muttrcFunction contained "\<modify-labels\>"
syntax match muttrcFunction contained "\<modify-tags-then-hide\>"
syntax match muttrcFunction contained "\<modify-tags\>"
syntax match muttrcFunction contained "\<new-mime\>" syntax match muttrcFunction contained "\<new-mime\>"
syntax match muttrcFunction contained "\<next-entry\>" syntax match muttrcFunction contained "\<next-entry\>"
syntax match muttrcFunction contained "\<next-line\>" syntax match muttrcFunction contained "\<next-line\>"
syntax match muttrcFunction contained "\<next-new\>"
syntax match muttrcFunction contained "\<next-new-then-unread\>" syntax match muttrcFunction contained "\<next-new-then-unread\>"
syntax match muttrcFunction contained "\<next-new\>"
syntax match muttrcFunction contained "\<next-page\>" syntax match muttrcFunction contained "\<next-page\>"
syntax match muttrcFunction contained "\<next-subthread\>" syntax match muttrcFunction contained "\<next-subthread\>"
syntax match muttrcFunction contained "\<next-thread\>" syntax match muttrcFunction contained "\<next-thread\>"
syntax match muttrcFunction contained "\<next-undeleted\>" syntax match muttrcFunction contained "\<next-undeleted\>"
syntax match muttrcFunction contained "\<next-unread\>"
syntax match muttrcFunction contained "\<next-unread-mailbox\>" syntax match muttrcFunction contained "\<next-unread-mailbox\>"
syntax match muttrcFunction contained "\<next-unread\>"
syntax match muttrcFunction contained "\<noop\>"
syntax match muttrcFunction contained "\<parent-message\>" syntax match muttrcFunction contained "\<parent-message\>"
syntax match muttrcFunction contained "\<pgp-menu\>" syntax match muttrcFunction contained "\<pgp-menu\>"
syntax match muttrcFunction contained "\<pipe-entry\>" syntax match muttrcFunction contained "\<pipe-entry\>"
@ -770,8 +784,8 @@ syntax match muttrcFunction contained "\<post-message\>"
syntax match muttrcFunction contained "\<postpone-message\>" syntax match muttrcFunction contained "\<postpone-message\>"
syntax match muttrcFunction contained "\<previous-entry\>" syntax match muttrcFunction contained "\<previous-entry\>"
syntax match muttrcFunction contained "\<previous-line\>" syntax match muttrcFunction contained "\<previous-line\>"
syntax match muttrcFunction contained "\<previous-new\>"
syntax match muttrcFunction contained "\<previous-new-then-unread\>" syntax match muttrcFunction contained "\<previous-new-then-unread\>"
syntax match muttrcFunction contained "\<previous-new\>"
syntax match muttrcFunction contained "\<previous-page\>" syntax match muttrcFunction contained "\<previous-page\>"
syntax match muttrcFunction contained "\<previous-subthread\>" syntax match muttrcFunction contained "\<previous-subthread\>"
syntax match muttrcFunction contained "\<previous-thread\>" syntax match muttrcFunction contained "\<previous-thread\>"
@ -782,8 +796,8 @@ syntax match muttrcFunction contained "\<print-message\>"
syntax match muttrcFunction contained "\<purge-message\>" syntax match muttrcFunction contained "\<purge-message\>"
syntax match muttrcFunction contained "\<purge-thread\>" syntax match muttrcFunction contained "\<purge-thread\>"
syntax match muttrcFunction contained "\<quasi-delete\>" syntax match muttrcFunction contained "\<quasi-delete\>"
syntax match muttrcFunction contained "\<query\>"
syntax match muttrcFunction contained "\<query-append\>" syntax match muttrcFunction contained "\<query-append\>"
syntax match muttrcFunction contained "\<query\>"
syntax match muttrcFunction contained "\<quit\>" syntax match muttrcFunction contained "\<quit\>"
syntax match muttrcFunction contained "\<quote-char\>" syntax match muttrcFunction contained "\<quote-char\>"
syntax match muttrcFunction contained "\<read-subthread\>" syntax match muttrcFunction contained "\<read-subthread\>"
@ -801,40 +815,41 @@ syntax match muttrcFunction contained "\<resend-message\>"
syntax match muttrcFunction contained "\<root-message\>" syntax match muttrcFunction contained "\<root-message\>"
syntax match muttrcFunction contained "\<save-entry\>" syntax match muttrcFunction contained "\<save-entry\>"
syntax match muttrcFunction contained "\<save-message\>" syntax match muttrcFunction contained "\<save-message\>"
syntax match muttrcFunction contained "\<search\>"
syntax match muttrcFunction contained "\<search-next\>" syntax match muttrcFunction contained "\<search-next\>"
syntax match muttrcFunction contained "\<search-opposite\>" syntax match muttrcFunction contained "\<search-opposite\>"
syntax match muttrcFunction contained "\<search-reverse\>" syntax match muttrcFunction contained "\<search-reverse\>"
syntax match muttrcFunction contained "\<search-toggle\>" syntax match muttrcFunction contained "\<search-toggle\>"
syntax match muttrcFunction contained "\<search\>"
syntax match muttrcFunction contained "\<select-entry\>" syntax match muttrcFunction contained "\<select-entry\>"
syntax match muttrcFunction contained "\<select-new\>" syntax match muttrcFunction contained "\<select-new\>"
syntax match muttrcFunction contained "\<send-message\>" syntax match muttrcFunction contained "\<send-message\>"
syntax match muttrcFunction contained "\<set-flag\>" syntax match muttrcFunction contained "\<set-flag\>"
syntax match muttrcFunction contained "\<shell-escape\>" syntax match muttrcFunction contained "\<shell-escape\>"
syntax match muttrcFunction contained "\<show-limit\>" syntax match muttrcFunction contained "\<show-limit\>"
syntax match muttrcFunction contained "\<show-log-messages\>"
syntax match muttrcFunction contained "\<show-version\>" syntax match muttrcFunction contained "\<show-version\>"
syntax match muttrcFunction contained "\<sidebar-next\>"
syntax match muttrcFunction contained "\<sidebar-next-new\>" syntax match muttrcFunction contained "\<sidebar-next-new\>"
syntax match muttrcFunction contained "\<sidebar-next\>"
syntax match muttrcFunction contained "\<sidebar-open\>" syntax match muttrcFunction contained "\<sidebar-open\>"
syntax match muttrcFunction contained "\<sidebar-page-down\>" syntax match muttrcFunction contained "\<sidebar-page-down\>"
syntax match muttrcFunction contained "\<sidebar-page-up\>" syntax match muttrcFunction contained "\<sidebar-page-up\>"
syntax match muttrcFunction contained "\<sidebar-prev\>"
syntax match muttrcFunction contained "\<sidebar-prev-new\>" syntax match muttrcFunction contained "\<sidebar-prev-new\>"
syntax match muttrcFunction contained "\<sidebar-prev\>"
syntax match muttrcFunction contained "\<sidebar-toggle-virtual\>" syntax match muttrcFunction contained "\<sidebar-toggle-virtual\>"
syntax match muttrcFunction contained "\<sidebar-toggle-visible\>" syntax match muttrcFunction contained "\<sidebar-toggle-visible\>"
syntax match muttrcFunction contained "\<skip-quoted\>" syntax match muttrcFunction contained "\<skip-quoted\>"
syntax match muttrcFunction contained "\<smime-menu\>" syntax match muttrcFunction contained "\<smime-menu\>"
syntax match muttrcFunction contained "\<sort\>"
syntax match muttrcFunction contained "\<sort-mailbox\>" syntax match muttrcFunction contained "\<sort-mailbox\>"
syntax match muttrcFunction contained "\<sort-reverse\>" syntax match muttrcFunction contained "\<sort-reverse\>"
syntax match muttrcFunction contained "\<subscribe\>" syntax match muttrcFunction contained "\<sort\>"
syntax match muttrcFunction contained "\<subscribe-pattern\>" syntax match muttrcFunction contained "\<subscribe-pattern\>"
syntax match muttrcFunction contained "\<subscribe\>"
syntax match muttrcFunction contained "\<sync-mailbox\>" syntax match muttrcFunction contained "\<sync-mailbox\>"
syntax match muttrcFunction contained "\<tag-entry\>" syntax match muttrcFunction contained "\<tag-entry\>"
syntax match muttrcFunction contained "\<tag-message\>" syntax match muttrcFunction contained "\<tag-message\>"
syntax match muttrcFunction contained "\<tag-pattern\>" syntax match muttrcFunction contained "\<tag-pattern\>"
syntax match muttrcFunction contained "\<tag-prefix\>"
syntax match muttrcFunction contained "\<tag-prefix-cond\>" syntax match muttrcFunction contained "\<tag-prefix-cond\>"
syntax match muttrcFunction contained "\<tag-prefix\>"
syntax match muttrcFunction contained "\<tag-subthread\>" syntax match muttrcFunction contained "\<tag-subthread\>"
syntax match muttrcFunction contained "\<tag-thread\>" syntax match muttrcFunction contained "\<tag-thread\>"
syntax match muttrcFunction contained "\<toggle-disposition\>" syntax match muttrcFunction contained "\<toggle-disposition\>"
@ -846,8 +861,8 @@ syntax match muttrcFunction contained "\<toggle-recode\>"
syntax match muttrcFunction contained "\<toggle-subscribed\>" syntax match muttrcFunction contained "\<toggle-subscribed\>"
syntax match muttrcFunction contained "\<toggle-unlink\>" syntax match muttrcFunction contained "\<toggle-unlink\>"
syntax match muttrcFunction contained "\<toggle-write\>" syntax match muttrcFunction contained "\<toggle-write\>"
syntax match muttrcFunction contained "\<top\>"
syntax match muttrcFunction contained "\<top-page\>" syntax match muttrcFunction contained "\<top-page\>"
syntax match muttrcFunction contained "\<top\>"
syntax match muttrcFunction contained "\<transpose-chars\>" syntax match muttrcFunction contained "\<transpose-chars\>"
syntax match muttrcFunction contained "\<uncatchup\>" syntax match muttrcFunction contained "\<uncatchup\>"
syntax match muttrcFunction contained "\<undelete-entry\>" syntax match muttrcFunction contained "\<undelete-entry\>"
@ -855,8 +870,8 @@ syntax match muttrcFunction contained "\<undelete-message\>"
syntax match muttrcFunction contained "\<undelete-pattern\>" syntax match muttrcFunction contained "\<undelete-pattern\>"
syntax match muttrcFunction contained "\<undelete-subthread\>" syntax match muttrcFunction contained "\<undelete-subthread\>"
syntax match muttrcFunction contained "\<undelete-thread\>" syntax match muttrcFunction contained "\<undelete-thread\>"
syntax match muttrcFunction contained "\<unsubscribe\>"
syntax match muttrcFunction contained "\<unsubscribe-pattern\>" syntax match muttrcFunction contained "\<unsubscribe-pattern\>"
syntax match muttrcFunction contained "\<unsubscribe\>"
syntax match muttrcFunction contained "\<untag-pattern\>" syntax match muttrcFunction contained "\<untag-pattern\>"
syntax match muttrcFunction contained "\<upcase-word\>" syntax match muttrcFunction contained "\<upcase-word\>"
syntax match muttrcFunction contained "\<update-encoding\>" syntax match muttrcFunction contained "\<update-encoding\>"
@ -864,11 +879,12 @@ syntax match muttrcFunction contained "\<verify-key\>"
syntax match muttrcFunction contained "\<vfolder-from-query\>" syntax match muttrcFunction contained "\<vfolder-from-query\>"
syntax match muttrcFunction contained "\<vfolder-window-backward\>" syntax match muttrcFunction contained "\<vfolder-window-backward\>"
syntax match muttrcFunction contained "\<vfolder-window-forward\>" syntax match muttrcFunction contained "\<vfolder-window-forward\>"
syntax match muttrcFunction contained "\<view-attach\>"
syntax match muttrcFunction contained "\<view-attachments\>" syntax match muttrcFunction contained "\<view-attachments\>"
syntax match muttrcFunction contained "\<view-attach\>"
syntax match muttrcFunction contained "\<view-file\>" syntax match muttrcFunction contained "\<view-file\>"
syntax match muttrcFunction contained "\<view-mailcap\>" syntax match muttrcFunction contained "\<view-mailcap\>"
syntax match muttrcFunction contained "\<view-name\>" syntax match muttrcFunction contained "\<view-name\>"
syntax match muttrcFunction contained "\<view-raw-message\>"
syntax match muttrcFunction contained "\<view-text\>" syntax match muttrcFunction contained "\<view-text\>"
syntax match muttrcFunction contained "\<what-key\>" syntax match muttrcFunction contained "\<what-key\>"
syntax match muttrcFunction contained "\<write-fcc\>" syntax match muttrcFunction contained "\<write-fcc\>"
@ -1029,4 +1045,5 @@ let b:current_syntax = "neomuttrc"
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save
"EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim
" vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim isk+=-

View File

@ -1,16 +1,16 @@
" ninja build file syntax. " ninja build file syntax.
" Language: ninja build file as described at " Language: ninja build file as described at
" http://martine.github.com/ninja/manual.html " http://ninja-build.org/manual.html
" Version: 1.4 " Version: 1.5
" Last Change: 2014/05/13 " Last Change: 2018/04/05
" Maintainer: Nicolas Weber <nicolasweber@gmx.de> " Maintainer: Nicolas Weber <nicolasweber@gmx.de>
" Version 1.4 of this script is in the upstream vim repository and will be " Version 1.5 of this script is in the upstream vim repository and will be
" included in the next vim release. If you change this, please send your change " included in the next vim release. If you change this, please send your change
" upstream. " upstream.
" ninja lexer and parser are at " ninja lexer and parser are at
" https://github.com/martine/ninja/blob/master/src/lexer.in.cc " https://github.com/ninja-build/ninja/blob/master/src/lexer.in.cc
" https://github.com/martine/ninja/blob/master/src/manifest_parser.cc " https://github.com/ninja-build/ninja/blob/master/src/manifest_parser.cc
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -21,7 +21,10 @@ set cpo&vim
syn case match syn case match
syn match ninjaComment /#.*/ contains=@Spell " Comments are only matched when the # is at the beginning of the line (with
" optional whitespace), as long as the prior line didn't end with a $
" continuation.
syn match ninjaComment /\(\$\n\)\@<!\_^\s*#.*$/ contains=@Spell
" Toplevel statements are the ones listed here and " Toplevel statements are the ones listed here and
" toplevel variable assignments (ident '=' value). " toplevel variable assignments (ident '=' value).
@ -38,12 +41,13 @@ syn match ninjaKeyword "^subninja\>"
" limited set of magic variables, 'build' allows general " limited set of magic variables, 'build' allows general
" let assignments. " let assignments.
" manifest_parser.cc, ParseRule() " manifest_parser.cc, ParseRule()
syn region ninjaRule start="^rule" end="^\ze\S" contains=ALL transparent syn region ninjaRule start="^rule" end="^\ze\S" contains=TOP transparent
syn keyword ninjaRuleCommand contained command deps depfile description generator syn keyword ninjaRuleCommand contained containedin=ninjaRule command
\ deps depfile description generator
\ pool restat rspfile rspfile_content \ pool restat rspfile rspfile_content
syn region ninjaPool start="^pool" end="^\ze\S" contains=ALL transparent syn region ninjaPool start="^pool" end="^\ze\S" contains=TOP transparent
syn keyword ninjaPoolCommand contained depth syn keyword ninjaPoolCommand contained containedin=ninjaPool depth
" Strings are parsed as follows: " Strings are parsed as follows:
" lexer.in.cc, ReadEvalString() " lexer.in.cc, ReadEvalString()

View File

@ -1,9 +1,9 @@
" Vim syntax file " Vim syntax file
" Language: NSIS script, for version of NSIS 3.02 and later " Language: NSIS script, for version of NSIS 3.03 and later
" Maintainer: Ken Takata " Maintainer: Ken Takata
" URL: https://github.com/k-takata/vim-nsis " URL: https://github.com/k-takata/vim-nsis
" Previous Maintainer: Alex Jakushev <Alex.Jakushev@kemek.lt> " Previous Maintainer: Alex Jakushev <Alex.Jakushev@kemek.lt>
" Last Change: 2018-01-26 " Last Change: 2018-02-07
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@ -395,7 +395,8 @@ syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_TEMPORARY
syn keyword nsisInstruction contained Abort Call ClearErrors GetCurrentAddress syn keyword nsisInstruction contained Abort Call ClearErrors GetCurrentAddress
syn keyword nsisInstruction contained GetFunctionAddress GetLabelAddress Goto syn keyword nsisInstruction contained GetFunctionAddress GetLabelAddress Goto
syn keyword nsisInstruction contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent syn keyword nsisInstruction contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent
syn keyword nsisInstruction contained IntCmp IntCmpU Return Quit SetErrors StrCmp StrCmpS syn keyword nsisInstruction contained IntCmp IntCmpU Int64Cmp Int64CmpU IntPtrCmp IntPtrCmpU
syn keyword nsisInstruction contained Return Quit SetErrors StrCmp StrCmpS
syn keyword nsisInstruction contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite syn keyword nsisInstruction contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite
syn region nsisMessageBoxOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox syn region nsisMessageBoxOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox
@ -434,7 +435,7 @@ syn keyword nsisInstruction contained StrCpy StrLen
syn keyword nsisInstruction contained Exch Push Pop syn keyword nsisInstruction contained Exch Push Pop
"FUNCTIONS - Integer manipulation support (4.9.10) "FUNCTIONS - Integer manipulation support (4.9.10)
syn keyword nsisInstruction contained IntOp IntFmt syn keyword nsisInstruction contained IntFmt Int64Fmt IntOp IntPtrOp
"FUNCTIONS - Rebooting support (4.9.11) "FUNCTIONS - Rebooting support (4.9.11)
syn keyword nsisInstruction contained Reboot SetRebootFlag syn keyword nsisInstruction contained Reboot SetRebootFlag
@ -541,6 +542,7 @@ syn match nsisSystem contained "!finalize\>"
syn match nsisSystem contained "!system\>" syn match nsisSystem contained "!system\>"
syn match nsisSystem contained "!tempfile\>" syn match nsisSystem contained "!tempfile\>"
syn match nsisSystem contained "!getdllversion\>" syn match nsisSystem contained "!getdllversion\>"
syn match nsisSystem contained "!gettlbversion\>"
syn match nsisSystem contained "!warning\>" syn match nsisSystem contained "!warning\>"
syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite

View File

@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh) " Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
" Last Change: Oct 02, 2017 " Last Change: Mar 19, 2018
" Version: 172 " Version: 174
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
" For options and settings, please use: :help ft-sh-syntax " For options and settings, please use: :help ft-sh-syntax
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
@ -121,7 +121,7 @@ syn case match
" Clusters: contains=@... clusters {{{1 " Clusters: contains=@... clusters {{{1
"================================== "==================================
syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_bash")
syn cluster ErrorList add=shDTestError syn cluster ErrorList add=shDTestError
endif endif
syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
@ -164,7 +164,7 @@ syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" ski
" Alias: {{{1 " Alias: {{{1
" ===== " =====
if exists("b:is_kornshell") || exists("b:is_bash") if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn match shStatement "\<alias\>" syn match shStatement "\<alias\>"
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`"
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="="
@ -186,7 +186,7 @@ if !exists("g:sh_no_error")
syn match shCurlyError "}" syn match shCurlyError "}"
syn match shParenError ")" syn match shParenError ")"
syn match shOK '\.\(done\|fi\|in\|esac\)' syn match shOK '\.\(done\|fi\|in\|esac\)'
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_bash")
syn match shDTestError "]]" syn match shDTestError "]]"
endif endif
syn match shTestError "]" syn match shTestError "]"
@ -245,12 +245,14 @@ ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_
ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr
if exists("b:is_kornshell") || exists("b:is_bash") if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn cluster shCaseList add=shRepeat syn cluster shCaseList add=shRepeat
syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shRepeat
syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace
syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace
syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList if !exists("b:is_posix")
syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList
endif
else else
syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList
syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList
@ -287,7 +289,7 @@ endif
" Misc: {{{1 " Misc: {{{1
"====== "======
syn match shWrapLineOperator "\\$" syn match shWrapLineOperator "\\$"
syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList
syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.'
" $() and $(()): {{{1 " $() and $(()): {{{1
@ -315,7 +317,7 @@ if exists("b:is_bash")
syn keyword bashStatement command compgen syn keyword bashStatement command compgen
endif endif
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
syn cluster shCommandSubList add=kshSpecialVariables,kshStatement syn cluster shCommandSubList add=kshSpecialVariables,kshStatement
syn cluster shCaseList add=kshStatement syn cluster shCaseList add=kshStatement
syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL
@ -327,7 +329,7 @@ syn match shSource "^\.\s"
syn match shSource "\s\.\s" syn match shSource "\s\.\s"
"syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList "syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
"syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2 "syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
syn match shColon '^\s*\zs:' syn match shColon '^\s*\zs:'
endif endif
@ -339,19 +341,18 @@ syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained
if exists("b:is_bash") if exists("b:is_bash")
syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
endif
if exists("b:is_bash")
syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt
syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt
elseif !exists("g:sh_no_error") elseif !exists("g:sh_no_error")
syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial
syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial
endif endif
syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart
syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
syn match shStringSpecial "[^[:print:] \t]" contained syn match shStringSpecial "[^[:print:] \t]" contained
syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList
syn match shSpecialStart "\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList
syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]"
syn match shSpecialNoZS contained "\%(\\\\\)*\\[\\"'`$()#]" syn match shSpecialNoZS contained "\%(\\\\\)*\\[\\"'`$()#]"
syn match shSpecialNxt contained "\\[\\"'`$()#]" syn match shSpecialNxt contained "\\[\\"'`$()#]"
@ -373,21 +374,21 @@ syn match shQuickComment contained "#.*$"
" Here Documents: {{{1 " Here Documents: {{{1
" ========================================= " =========================================
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^ \t|>]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^ \t|>]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^ \t|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^ \t|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^ \t|>]\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^ \t|>]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$"
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$"
" Here Strings: {{{1 " Here Strings: {{{1
" ============= " =============
@ -405,7 +406,7 @@ syn region shAtExpr contained start="@(" end=")" contains=@shIdList
if exists("b:is_bash") if exists("b:is_bash")
syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList
syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList
elseif exists("b:is_kornshell") elseif exists("b:is_kornshell") || exists("b:is_posix")
syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
else else
@ -439,14 +440,14 @@ syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,
syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList
syn match shDerefSimple "\$\$" nextgroup=@shNoZSList syn match shDerefSimple "\$\$" nextgroup=@shNoZSList
syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList
if exists("b:is_bash") || exists("b:is_kornshell") if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS
syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS
endif endif
" ksh: ${!var[*]} array index list syntax: {{{1 " ksh: ${!var[*]} array index list syntax: {{{1
" ======================================== " ========================================
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray
endif endif
@ -464,7 +465,7 @@ syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefO
syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList
syn match shDerefVar contained '\d' nextgroup=@shDerefVarList syn match shDerefVar contained '\d' nextgroup=@shDerefVarList
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList
endif endif
@ -490,7 +491,7 @@ if !exists("g:sh_no_error")
endif endif
syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList
syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList
if exists("b:is_bash") || exists("b:is_kornshell") if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList
syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList
syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern
@ -537,7 +538,7 @@ endif
" Useful ksh Keywords: {{{1 " Useful ksh Keywords: {{{1
" ==================== " ====================
if exists("b:is_kornshell") || exists("b:is_bash") if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn keyword shStatement autoload bg false fc fg functions getopts hash history integer jobs let nohup printf r stop suspend times true type unalias whence syn keyword shStatement autoload bg false fc fg functions getopts hash history integer jobs let nohup printf r stop suspend times true type unalias whence
if exists("b:is_posix") if exists("b:is_posix")
syn keyword shStatement command syn keyword shStatement command
@ -635,6 +636,7 @@ if !exists("skip_sh_syntax_inits")
hi def link shSingleQuote shString hi def link shSingleQuote shString
hi def link shSource shOperator hi def link shSource shOperator
hi def link shStringSpecial shSpecial hi def link shStringSpecial shSpecial
hi def link shSpecialStart shSpecial
hi def link shSubShRegion shOperator hi def link shSubShRegion shOperator
hi def link shTestOpr shConditional hi def link shTestOpr shConditional
hi def link shTestPattern shString hi def link shTestPattern shString
@ -652,7 +654,7 @@ if !exists("skip_sh_syntax_inits")
hi def link shDerefOff shDerefOp hi def link shDerefOff shDerefOp
hi def link shDerefLen shDerefOff hi def link shDerefLen shDerefOff
endif endif
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
hi def link kshSpecialVariables shShellVariables hi def link kshSpecialVariables shShellVariables
hi def link kshStatement shStatement hi def link kshStatement shStatement
endif endif
@ -669,7 +671,7 @@ if !exists("skip_sh_syntax_inits")
hi def link shInError Error hi def link shInError Error
hi def link shParenError Error hi def link shParenError Error
hi def link shTestError Error hi def link shTestError Error
if exists("b:is_kornshell") if exists("b:is_kornshell") || exists("b:is_posix")
hi def link shDTestError Error hi def link shDTestError Error
endif endif
endif endif
@ -725,6 +727,8 @@ if exists("b:is_bash")
let b:current_syntax = "bash" let b:current_syntax = "bash"
elseif exists("b:is_kornshell") elseif exists("b:is_kornshell")
let b:current_syntax = "ksh" let b:current_syntax = "ksh"
elseif exists("b:is_posix")
let b:current_syntax = "posix"
else else
let b:current_syntax = "sh" let b:current_syntax = "sh"
endif endif

View File

@ -4,12 +4,13 @@
" Repository: https://github.com/chrisbra/vim-sqloracle-syntax " Repository: https://github.com/chrisbra/vim-sqloracle-syntax
" License: Vim " License: Vim
" Previous Maintainer: Paul Moore " Previous Maintainer: Paul Moore
" Last Change: 2016 Jul 22 " Last Change: 2018 May 13
" Changes: " Changes:
" 02.04.2016: Support for when keyword " 02.04.2016: Support for when keyword
" 03.04.2016: Support for join related keywords " 03.04.2016: Support for join related keywords
" 22.07.2016: Support Oracle Q-Quote-Syntax " 22.07.2016: Support Oracle Q-Quote-Syntax
" 25.07.2016: Support for Oracle N'-Quote syntax
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -53,8 +54,8 @@ syn keyword sqlType boolean char character date float integer long
syn keyword sqlType mlslabel number raw rowid varchar varchar2 varray syn keyword sqlType mlslabel number raw rowid varchar varchar2 varray
" Strings: " Strings:
syn region sqlString matchgroup=Quote start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region sqlString matchgroup=Quote start=+n\?"+ skip=+\\\\\|\\"+ end=+"+
syn region sqlString matchgroup=Quote start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region sqlString matchgroup=Quote start=+n\?'+ skip=+\\\\\|\\'+ end=+'+
syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+
syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+ syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+
syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+ syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+

View File

@ -1,8 +1,8 @@
" Vim syntax file " Vim syntax file
" Language: TeX " Language: TeX
" Maintainer: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM> " Maintainer: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
" Last Change: Dec 11, 2017 " Last Change: Mar 30, 2018
" Version: 107 " Version: 109
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
" "
" Notes: {{{1 " Notes: {{{1
@ -396,7 +396,7 @@ endif
" Bad Math (mismatched): {{{1 " Bad Math (mismatched): {{{1
if !exists("g:tex_no_math") && !s:tex_no_error if !exists("g:tex_no_math") && !s:tex_no_error
syn match texBadMath "\\end\s*{\s*\(array\|bBpvV]matrix\|split\|smallmatrix\)\s*}" syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}" syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
syn match texBadMath "\\[\])]" syn match texBadMath "\\[\])]"
endif endif
@ -1012,6 +1012,48 @@ if has("conceal") && &enc == 'utf-8'
syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅ " syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
syn match texMathSymbol '\\dot{B}' contained conceal cchar=
syn match texMathSymbol '\\dot{b}' contained conceal cchar=
syn match texMathSymbol '\\dot{D}' contained conceal cchar=
syn match texMathSymbol '\\dot{d}' contained conceal cchar=
syn match texMathSymbol '\\dot{F}' contained conceal cchar=
syn match texMathSymbol '\\dot{f}' contained conceal cchar=
syn match texMathSymbol '\\dot{H}' contained conceal cchar=
syn match texMathSymbol '\\dot{h}' contained conceal cchar=
syn match texMathSymbol '\\dot{M}' contained conceal cchar=
syn match texMathSymbol '\\dot{m}' contained conceal cchar=
syn match texMathSymbol '\\dot{N}' contained conceal cchar=
syn match texMathSymbol '\\dot{n}' contained conceal cchar=
syn match texMathSymbol '\\dot{P}' contained conceal cchar=
syn match texMathSymbol '\\dot{p}' contained conceal cchar=
syn match texMathSymbol '\\dot{R}' contained conceal cchar=
syn match texMathSymbol '\\dot{r}' contained conceal cchar=
syn match texMathSymbol '\\dot{S}' contained conceal cchar=
syn match texMathSymbol '\\dot{s}' contained conceal cchar=
syn match texMathSymbol '\\dot{T}' contained conceal cchar=
syn match texMathSymbol '\\dot{t}' contained conceal cchar=
syn match texMathSymbol '\\dot{W}' contained conceal cchar=
syn match texMathSymbol '\\dot{w}' contained conceal cchar=
syn match texMathSymbol '\\dot{X}' contained conceal cchar=
syn match texMathSymbol '\\dot{x}' contained conceal cchar=
syn match texMathSymbol '\\dot{Y}' contained conceal cchar=
syn match texMathSymbol '\\dot{y}' contained conceal cchar=
syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż
syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ
syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ
syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė
syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė
syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ
syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ
syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ
syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ
syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
endif endif
" Greek {{{2 " Greek {{{2

View File

@ -3,7 +3,7 @@
" Maintainer: Daniel Kho <daniel.kho@tauhop.com> " Maintainer: Daniel Kho <daniel.kho@tauhop.com>
" Previous Maintainer: Czo <Olivier.Sirol@lip6.fr> " Previous Maintainer: Czo <Olivier.Sirol@lip6.fr>
" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn> " Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
" Last Changed: 2016 Mar 05 by Daniel Kho " Last Changed: 2018 May 06 by Daniel Kho
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@ -43,6 +43,8 @@ syn keyword vhdlStatement sequence strong
syn keyword vhdlStatement then to transport type syn keyword vhdlStatement then to transport type
syn keyword vhdlStatement unaffected units until use syn keyword vhdlStatement unaffected units until use
syn keyword vhdlStatement variable syn keyword vhdlStatement variable
" VHDL-2017 interface
syn keyword vhdlStatement view
syn keyword vhdlStatement vmode vprop vunit syn keyword vhdlStatement vmode vprop vunit
syn keyword vhdlStatement wait when while with syn keyword vhdlStatement wait when while with
syn keyword vhdlStatement note warning error failure syn keyword vhdlStatement note warning error failure
@ -69,9 +71,7 @@ syn match vhdlType "\<time_vector\>\'\="
syn match vhdlType "\<character\>\'\=" syn match vhdlType "\<character\>\'\="
syn match vhdlType "\<string\>\'\=" syn match vhdlType "\<string\>\'\="
"syn keyword vhdlType severity_level syn keyword vhdlType line text side width
syn keyword vhdlType line
syn keyword vhdlType text
" Predefined standard IEEE VHDL types " Predefined standard IEEE VHDL types
syn match vhdlType "\<std_ulogic\>\'\=" syn match vhdlType "\<std_ulogic\>\'\="
@ -124,6 +124,8 @@ syn match vhdlAttribute "\'succ"
syn match vhdlAttribute "\'val" syn match vhdlAttribute "\'val"
syn match vhdlAttribute "\'image" syn match vhdlAttribute "\'image"
syn match vhdlAttribute "\'value" syn match vhdlAttribute "\'value"
" VHDL-2017 interface attribute
syn match vhdlAttribute "\'converse"
syn keyword vhdlBoolean true false syn keyword vhdlBoolean true false
@ -165,6 +167,9 @@ syn match vhdlOperator "=\|\/=\|>\|<\|>="
syn match vhdlOperator "<=\|:=" syn match vhdlOperator "<=\|:="
syn match vhdlOperator "=>" syn match vhdlOperator "=>"
" VHDL-2017 concurrent signal association (spaceship) operator
syn match vhdlOperator "<=>"
" VHDL-2008 conversion, matching equality/non-equality operators " VHDL-2008 conversion, matching equality/non-equality operators
syn match vhdlOperator "??\|?=\|?\/=\|?<\|?<=\|?>\|?>=" syn match vhdlOperator "??\|?=\|?\/=\|?<\|?<=\|?>\|?>="
@ -183,8 +188,11 @@ syn match vhdlError "\(<\)[&+\-\/\\]\+"
syn match vhdlError "[>=&+\-\/\\]\+\(<\)" syn match vhdlError "[>=&+\-\/\\]\+\(<\)"
" Covers most operators " Covers most operators
" support negative sign after operators. E.g. q<=-b; " support negative sign after operators. E.g. q<=-b;
syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|<=\|:=\|=>\)[<>=&+\*\\?:]\+" " Supports VHDL-2017 spaceship (concurrent simple signal association).
syn match vhdlError "[<>=&+\-\*\\:]\+\(&\|+\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\|=>\)" syn match vhdlError "\(<=\)[<=&+\*\\?:]\+"
syn match vhdlError "[>=&+\-\*\\:]\+\(=>\)"
syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|:=\|=>\)[<>=&+\*\\?:]\+"
syn match vhdlError "[<>=&+\-\*\\:]\+\(&\|+\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\)"
syn match vhdlError "\(?<\|?>\)[<>&+\*\/\\?:]\+" syn match vhdlError "\(?<\|?>\)[<>&+\*\/\\?:]\+"
syn match vhdlError "\(<<\|>>\)[<>&+\*\/\\?:]\+" syn match vhdlError "\(<<\|>>\)[<>&+\*\/\\?:]\+"

View File

@ -1,8 +1,8 @@
" Vim syntax file " Vim syntax file
" Language: Vim 8.0 script " Language: Vim 8.0 script
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: Dec 15, 2017 " Last Change: April 30, 2018
" Version: 8.0-07 " Version: 8.0-14
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1 " Automatically generated keyword lists: {{{1
@ -19,38 +19,38 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2 " regular vim commands {{{2
syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop
syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme
syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu
syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo
syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank] syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank]
syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell]
syn match vimCommand contained "\<z[-+^.=]\=\>" syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns
" vimOptions are caught only when contained in a vimSet {{{2 " vimOptions are caught only when contained in a vimSet {{{2
syn keyword vimOption contained acd ambw arshape background ballooneval bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imactivatekey imi imstyle indentkeys isf isprint km laststatus lisp loadplugins lz mat maxmempattern mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvw rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors tf title tms ts ttybuiltin tx undolevels vbs viewdir vop wd wic wildmode winheight wm wrapscan syn keyword vimOption contained acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace lnr lw makeprg maxmem mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pumwidth pythonthreehome readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termwinscroll tgc titlelen toolbariconsize ttimeout ttymouse tx undolevels vbs viewdir vop wd wic wildmode winheight wm wrapscan
syn keyword vimOption contained ai anti autochdir backspace balloonexpr bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imaf iminsert inc indk isfname joinspaces kmp lazyredraw lispwords lpl ma matchpairs maxmemtot mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pythondll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termkey tgc titlelen to tsl ttyfast uc undoreload vdir viewoptions wa weirdinvert wig wildoptions winminheight wmh write syn keyword vimOption contained ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp loadplugins lz mat maxmempattern mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvh pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc termwinsize tgst titleold top ttimeoutlen ttyscroll uc undoreload vdir viewoptions wa weirdinvert wig wildoptions winminheight wmh write
syn keyword vimOption contained akm antialias autoindent backup bdir bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imak ims include inex isi js kp lbr list lrm macatsui matchtime mco mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pythonthreedll readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termsize tgst titleold toolbar tsr ttym udf updatecount ve vif wak wfh wildchar wim winminwidth wmnu writeany syn keyword vimOption contained akm antialias autoindent backup balloonexpr bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lpl ma matchpairs maxmemtot mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pvw pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term terse thesaurus titlestring tpm ttm ttytype udf updatecount ve vif wak wfh wildchar wim winminwidth wmnu writeany
syn keyword vimOption contained al ar autoread backupcopy bdlay binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imc imsearch includeexpr inf isident key langmap lcs listchars ls magic maxcombine mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc terse thesaurus titlestring toolbariconsize ttimeout ttymouse udir updatetime verbose viminfo warn wfw wildcharm winaltkeys winptydll wmw writebackup syn keyword vimOption contained al ar autoread backupcopy bdir bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list lrm macatsui matchtime mco mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pw qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textauto tildeop tl tr tty tw udir updatetime verbose viminfo warn wfw wildcharm winaltkeys winptydll wmw writebackup
syn keyword vimOption contained aleph arab autowrite backupdir belloff bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imcmdline imsf incsearch infercase isk keymap langmenu linebreak lm lsp makeef maxfuncdepth menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term textauto tildeop tk top ttimeoutlen ttyscroll ul ur verbosefile viminfofile wb wh wildignore window winwidth wop writedelay syn keyword vimOption contained aleph arab autowrite backupdir bdlay bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imc imsf inde is isprint kmp lbr listchars ls magic maxcombine mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pythondll quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textmode timeout tm ts ttybuiltin twk ul ur verbosefile viminfofile wb wh wildignore window winwidth wop writedelay
syn keyword vimOption contained allowrevins arabic autowriteall backupext beval bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imd imst inde insertmode iskeyword keymodel langnoremap lines lmap luadll makeencoding maxmapdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textmode timeout tl tpm ttm ttytype undodir ut vfile virtualedit wc whichwrap wildignorecase winfixheight wiv wrap ws syn keyword vimOption contained allowrevins arabic autowriteall backupext belloff binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm lsp makeef maxfuncdepth menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pythonhome rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors textwidth timeoutlen to tsl ttyfast tws undodir ut vfile virtualedit wc whichwrap wildignorecase winfixheight wiv wrap ws
syn keyword vimOption contained altkeymap arabicshape aw backupskip bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imdisable imstatusfunc indentexpr is isp keywordprg langremap linespace lnr lw makeprg maxmem mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pvh quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textwidth timeoutlen tm tr tty tw undofile vb vi visualbell wcm wi wildmenu winfixwidth wiw wrapmargin ww syn keyword vimOption contained altkeymap arabicshape aw backupskip beval bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap luadll makeencoding maxmapdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight pythonthreedll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termwinkey tf title toolbar tsr ttym twsl undofile vb vi visualbell wcm wi wildmenu winfixwidth wiw wrapmargin ww
syn keyword vimOption contained ambiwidth ari awa balloondelay bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls syn keyword vimOption contained ambiwidth ari awa balloondelay bevalterm bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imdisable imstyle indk isi key langmenu lines
" vimOptions: These are the turn-off setting variants {{{2 " vimOptions: These are the turn-off setting variants {{{2
syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolazyredraw nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup
syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolbr nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr
" vimOptions: These are the invertible variants {{{2 " vimOptions: These are the invertible variants {{{2
syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlazyredraw invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup
syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlbr invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr
" termcap codes (which can also be set) {{{2 " termcap codes (which can also be set) {{{2
syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_RI t_RS t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_so t_sr t_SR t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_RI t_RS t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_so t_sr t_SR t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR
syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7
syn match vimOption contained "t_%1" syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2" syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4" syn match vimOption contained "t_#4"
@ -62,70 +62,70 @@ syn match vimOption contained "t_k;"
" unsupported settings: some were supported by vi but don't do anything in vim {{{2 " unsupported settings: some were supported by vi but don't do anything in vim {{{2
" others have been dropped along with msdos support " others have been dropped along with msdos support
syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beautify flash graphic hardtabs mesg novice open op optimize redraw slow slowopen sourceany w300 w1200 w9600 hardtabs ht nobioskey nobiosk noconskey noconsk noautoprint nobeautify noflash nographic nohardtabs nomesg nonovice noopen noop nooptimize noredraw noslow noslowopen nosourceany now300 now1200 now9600 w1200 w300 w9600 syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beautify flash graphic hardtabs mesg novice open op optimize redraw slow slowopen sourceany w300 w1200 w9600 hardtabs ht nobioskey nobiosk noconskey noconsk noautoprint nobeautify noflash nographic nohardtabs nomesg nonovice noopen noop nooptimize noredraw noslow noslowopen nosourceany now300 now1200 now9600 w1200 w300 w9600
" AutoCmd Events {{{2 " AutoCmd Events {{{2
syn case ignore syn case ignore
syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TermResponse TextChanged TextChangedI TextChangedP User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI DirChanged EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew
" Highlight commonly used Groupnames {{{2 " Highlight commonly used Groupnames {{{2
syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
" Default highlighting groups {{{2 " Default highlighting groups {{{2
syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
syn match vimHLGroup contained "Conceal" syn match vimHLGroup contained "Conceal"
syn case match syn case match
" Function Names {{{2 " Function Names {{{2
syn keyword vimFuncName contained abs append argv assert_fails assert_notequal atan browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pow py3eval readfile remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strcharpart strftime string strridx submatch synID synstack tabpagebuflist tagfiles tanh term_getattr term_getline term_getstatus term_gettty term_sendkeys term_wait test_feedinput test_null_channel test_null_list test_override timer_pause timer_stopall tr undofile values wildmenumode win_findbuf winheight winline winrestview wordcount syn keyword vimFuncName contained abs append argv assert_equalfile assert_inrange assert_report balloon_show bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchangelist getcmdline getcompletion getfperm getjumplist getpid getregtype getwininfo getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval option_save pow py3eval readfile remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strchars stridx strridx substitute synIDtrans tabpagebuflist taglist term_dumpdiff term_getansicolors term_getline term_gettitle term_sendkeys term_setsize test_autochdir test_ignore_error test_null_job test_null_string timer_info timer_stop toupper trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview wordcount
syn keyword vimFuncName contained acos argc asin assert_false assert_notmatch atan2 bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchar getcmdpos getcurpos getfsize getloclist getqflist gettabvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode or prevnonblank pyeval reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strchars strgetchar strlen strtrans substitute synIDattr system tabpagenr taglist tempname term_getcursor term_getscrolled term_gettitle term_list term_setsize test_alloc_fail test_garbagecollect_now test_null_dict test_null_partial test_settime timer_start tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview writefile syn keyword vimFuncName contained acos argc asin assert_exception assert_match assert_true balloon_split buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getchar getcmdpos getcurpos getfsize getline getpos gettabinfo getwinpos glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank or prevnonblank pyeval reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strdisplaywidth string strtrans synconcealed synstack tabpagenr tan term_dumpload term_getattr term_getscrolled term_gettty term_setansicolors term_start test_feedinput test_null_channel test_null_list test_override timer_pause timer_stopall tr type uniq visualmode wincol win_gotoid win_id2win winrestcmd win_screenpos writefile
syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_report balloon_show buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getcharmod getcmdtype getcwd getftime getmatches getreg gettabwinvar getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval pathshorten printf pyxeval reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strdisplaywidth stridx strpart strwidth synconcealed synIDtrans systemlist tabpagewinnr tan term_getaltscreen term_getjob term_getsize term_getttty term_scrape term_start test_autochdir test_ignore_error test_null_job test_null_string timer_info timer_stop toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd winwidth xor syn keyword vimFuncName contained add argidx assert_beeps assert_fails assert_notequal atan browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharmod getcmdtype getcwd getftime getloclist getqflist gettabvar getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pathshorten printf pyxeval reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strftime strlen strwidth synID system tabpagewinnr tanh term_dumpwrite term_getcursor term_getsize term_list term_setkill term_wait test_garbagecollect_now test_null_dict test_null_partial test_settime timer_start tolower trim undofile values wildmenumode win_findbuf winheight winline winrestview winwidth xor
syn keyword vimFuncName contained and arglistid assert_exception assert_match assert_true browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharsearch getcmdwintype getfontname getftype getpid getregtype getwininfo glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank perleval pumvisible range reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split syn keyword vimFuncName contained and arglistid assert_equal assert_false assert_notmatch atan2 browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcharsearch getcmdwintype getfontname getftype getmatches getreg gettabwinvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode option_restore perleval pumvisible range reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split strcharpart strgetchar strpart submatch synIDattr systemlist tagfiles tempname term_getaltscreen term_getjob term_getstatus term_scrape term_setrestore test_alloc_fail
"--- syntax here and above generated by mkvimvim --- "--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1 " Special Vim Highlighting (not automatic) {{{1
" Set up folding commands " Set up folding commands
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
if g:vimsyn_folding =~# 'a' if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold com! -nargs=* VimFolda <args> fold
else else
com! -nargs=* VimFolda <args> com! -nargs=* VimFolda <args>
endif endif
if g:vimsyn_folding =~# 'f' if g:vimsyn_folding =~# 'f'
com! -nargs=* VimFoldf <args> fold com! -nargs=* VimFoldf <args> fold
else else
com! -nargs=* VimFoldf <args> com! -nargs=* VimFoldf <args>
endif endif
if g:vimsyn_folding =~# 'l' if g:vimsyn_folding =~# 'l'
com! -nargs=* VimFoldl <args> fold com! -nargs=* VimFoldl <args> fold
else else
com! -nargs=* VimFoldl <args> com! -nargs=* VimFoldl <args>
endif endif
if g:vimsyn_folding =~# 'm' if g:vimsyn_folding =~# 'm'
com! -nargs=* VimFoldm <args> fold com! -nargs=* VimFoldm <args> fold
else else
com! -nargs=* VimFoldm <args> com! -nargs=* VimFoldm <args>
endif endif
if g:vimsyn_folding =~# 'p' if g:vimsyn_folding =~# 'p'
com! -nargs=* VimFoldp <args> fold com! -nargs=* VimFoldp <args> fold
else else
com! -nargs=* VimFoldp <args> com! -nargs=* VimFoldp <args>
endif endif
if g:vimsyn_folding =~# 'P' if g:vimsyn_folding =~# 'P'
com! -nargs=* VimFoldP <args> fold com! -nargs=* VimFoldP <args> fold
else else
com! -nargs=* VimFoldP <args> com! -nargs=* VimFoldP <args>
endif endif
if g:vimsyn_folding =~# 'r' if g:vimsyn_folding =~# 'r'
com! -nargs=* VimFoldr <args> fold com! -nargs=* VimFoldr <args> fold
else else
com! -nargs=* VimFoldr <args> com! -nargs=* VimFoldr <args>
endif endif
if g:vimsyn_folding =~# 't' if g:vimsyn_folding =~# 't'
com! -nargs=* VimFoldt <args> fold com! -nargs=* VimFoldt <args> fold
else else
com! -nargs=* VimFoldt <args> com! -nargs=* VimFoldt <args>
endif endif
else else
com! -nargs=* VimFolda <args> com! -nargs=* VimFolda <args>
@ -164,7 +164,7 @@ endif
syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
syn match vimNumber "\<0[xX]\x\+" syn match vimNumber "\<0[xX]\x\+"
syn match vimNumber "\%(^\|[^a-zA-Z]\)\zs#\x\{6}" syn match vimNumber "\%(^\|\A\)\zs#\x\{6}"
" All vimCommands are contained by vimIsCommands. {{{2 " All vimCommands are contained by vimIsCommands. {{{2
syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
@ -214,7 +214,7 @@ syn keyword vimAugroupKey contained aug[roup]
" Operators: {{{2 " Operators: {{{2
" ========= " =========
syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "\(\<is\>\|\<isnot\>\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\<is\>\|\<isnot\>\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
@ -321,7 +321,7 @@ syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z
syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
syn match vimCollClassErr contained "\[:.\{-\}:\]" syn match vimCollClassErr contained "\[:.\{-\}:\]"
syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]" syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
syn match vimSubstSubstr contained "\\z\=\d" syn match vimSubstSubstr contained "\\z\=\d"
syn match vimSubstTwoBS contained "\\\\" syn match vimSubstTwoBS contained "\\\\"
syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
@ -394,7 +394,7 @@ syn keyword vimMap mapc[lear] smapc[lear]
syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
syn case ignore syn case ignore
@ -416,27 +416,27 @@ syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
" Angle-Bracket Notation (tnx to Michael Geddes) {{{2 " Angle-Bracket Notation (tnx to Michael Geddes) {{{2
" ====================== " ======================
syn case ignore syn case ignore
syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket syn match vimNotation '\%#=1\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
syn match vimBracket contained "[\\<>]" syn match vimBracket contained "[\\<>]"
syn case match syn case match
" User Function Highlighting {{{2 " User Function Highlighting {{{2
" (following Gautam Iyer's suggestion) " (following Gautam Iyer's suggestion)
" ========================== " ==========================
syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>" syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
" Errors And Warnings: {{{2 " Errors And Warnings: {{{2
" ==================== " ====================
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
" syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank " syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
syn match vimElseIfErr "\<else\s\+if\>" syn match vimElseIfErr "\<else\s\+if\>"
syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/ syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
endif endif
@ -493,14 +493,14 @@ syn cluster vimFuncBodyList add=vimSynType
syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
syn cluster vimFuncBodyList add=vimSynType syn cluster vimFuncBodyList add=vimSynType
" Syntax: match {{{2 " Syntax: match {{{2
syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
if has("conceal") if has("conceal")
syn match vimSynMtchOpt contained "\<cchar=" nextgroup=vimSynMtchCchar syn match vimSynMtchOpt contained "\<cchar=" nextgroup=vimSynMtchCchar
syn match vimSynMtchCchar contained "\S" syn match vimSynMtchCchar contained "\S"
@ -515,12 +515,12 @@ syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vim
syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
syn match vimSynPatMod contained "lc=\d\+" syn match vimSynPatMod contained "lc=\d\+"
syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
@ -553,7 +553,7 @@ syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotatio
" ============ " ============
syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror") if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
syn match vimHiCtermError contained "[^0-9]\i*" syn match vimHiCtermError contained "\D\i*"
endif endif
syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
@ -645,6 +645,7 @@ if !filereadable(s:luapath)
endif endif
if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath) if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
unlet! b:current_syntax unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimLuaRegion
exe "syn include @vimLuaScript ".s:luapath exe "syn include @vimLuaScript ".s:luapath
VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
@ -667,9 +668,10 @@ if !filereadable(s:perlpath)
endif endif
if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath) if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
unlet! b:current_syntax unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPerlRegion
exe "syn include @vimPerlScript ".s:perlpath exe "syn include @vimPerlScript ".s:perlpath
VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
syn cluster vimFuncBodyList add=vimPerlRegion syn cluster vimFuncBodyList add=vimPerlRegion
else else
syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
@ -688,10 +690,11 @@ if !filereadable(s:rubypath)
endfor endfor
endif endif
if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath) if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
syn cluster vimFuncBodyList add=vimRubyRegion
unlet! b:current_syntax unlet! b:current_syntax
exe "syn include @vimRubyScript ".s:rubypath exe "syn include @vimRubyScript ".s:rubypath
VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
syn cluster vimFuncBodyList add=vimRubyRegion syn cluster vimFuncBodyList add=vimRubyRegion
else else
syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
@ -709,13 +712,14 @@ if !filereadable(s:pythonpath)
endif endif
endfor endfor
endif endif
if g:vimsyn_embed =~# 'P' && (has("python") || has("python3")) && filereadable(s:pythonpath) if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
unlet! b:current_syntax unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimPythonRegion
exe "syn include @vimPythonScript ".s:pythonpath exe "syn include @vimPythonScript ".s:pythonpath
VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
syn cluster vimFuncBodyList add=vimPythonRegion syn cluster vimFuncBodyList add=vimPythonRegion
else else
syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
@ -742,6 +746,7 @@ if s:trytcl
endif endif
if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath) if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
unlet! b:current_syntax unlet! b:current_syntax
syn cluster vimFuncBodyList add=vimTclRegion
exe "syn include @vimTclScript ".s:tclpath exe "syn include @vimTclScript ".s:tclpath
VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
@ -770,6 +775,7 @@ endif
if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath) if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
unlet! b:current_syntax unlet! b:current_syntax
let s:iskKeep= &isk let s:iskKeep= &isk
syn cluster vimFuncBodyList add=vimMzSchemeRegion
exe "syn include @vimMzSchemeScript ".s:mzschemepath exe "syn include @vimMzSchemeScript ".s:mzschemepath
let &isk= s:iskKeep let &isk= s:iskKeep
unlet s:iskKeep unlet s:iskKeep

View File

@ -2,7 +2,7 @@
" Language: Zsh shell script " Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org> " Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2017-11-22 " Latest Revision: 2018-05-12
" License: Vim (see :h license) " License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh " Repository: https://github.com/chrisbra/vim-zsh
@ -67,15 +67,15 @@ syn match zshRedir '|&\='
syn region zshHereDoc matchgroup=zshRedir syn region zshHereDoc matchgroup=zshRedir
\ start='<\@<!<<\s*\z([^<]\S*\)' \ start='<\@<!<<\s*\z([^<]\S*\)'
\ end='^\z1\>' \ end='^\z1\>'
\ contains=@zshSubst \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
syn region zshHereDoc matchgroup=zshRedir syn region zshHereDoc matchgroup=zshRedir
\ start='<\@<!<<\s*\\\z(\S\+\)' \ start='<\@<!<<\s*\\\z(\S\+\)'
\ end='^\z1\>' \ end='^\z1\>'
\ contains=@zshSubst \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
syn region zshHereDoc matchgroup=zshRedir syn region zshHereDoc matchgroup=zshRedir
\ start='<\@<!<<-\s*\\\=\z(\S\+\)' \ start='<\@<!<<-\s*\\\=\z(\S\+\)'
\ end='^\s*\z1\>' \ end='^\s*\z1\>'
\ contains=@zshSubst \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
syn region zshHereDoc matchgroup=zshRedir syn region zshHereDoc matchgroup=zshRedir
\ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+ \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+
\ end='^\z1\>' \ end='^\z1\>'
@ -118,8 +118,8 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd
\ ttyctl type ulimit umask unalias unfunction \ ttyctl type ulimit umask unalias unfunction
\ unhash unlimit unset vared wait \ unhash unlimit unset vared wait
\ whence where which zcompile zformat zftp zle \ whence where which zcompile zformat zftp zle
\ zmodload zparseopts zprof zpty zregexparse \ zmodload zparseopts zprof zpty zrecompile
\ zsocket zstyle ztcp \ zregexparse zsocket zstyle ztcp
" Options, generated by: echo ${(j:\n:)options[(I)*]} | sort " Options, generated by: echo ${(j:\n:)options[(I)*]} | sort
" Create a list of option names from zsh source dir: " Create a list of option names from zsh source dir:

View File

@ -1,3 +1,13 @@
READ THIS FIRST
===============
ccfilter is a C program to filter the output of a few compilers to a common
QuickFix format. It is provided with Vim to make quickfix useful for more
compilers.
ccfilter WILL FAIL with long lines (more than 2047 bytes).
COMPILING AND INSTALLING: COMPILING AND INSTALLING:
========================= =========================

View File

@ -3,11 +3,12 @@
# shtags: create a tags file for perl scripts # shtags: create a tags file for perl scripts
# #
# Author: Stephen Riehm # Author: Stephen Riehm
# Last Changed: 96/11/27 19:46:06 # Updated by: David Woodfall <dave@dawoodfall.net>
# # Last Changed: 2018/04/02
# "@(#) shtags 1.1 by S. Riehm"
# #
use Getopt::Std;
# obvious... :-) # obvious... :-)
sub usage sub usage
{ {
@ -30,7 +31,7 @@ sub version
# #
# Version information # Version information
# #
@id = split( ', ', 'scripts/bin/shtags, /usr/local/, LOCAL_SCRIPTS, 1.1, 96/11/27, 19:46:06' ); @id = split( ', ', 'scripts/bin/shtags, /usr/local/, LOCAL_SCRIPTS, 1.2, 18/04/02, 07:37' );
$id[0] =~ s,.*/,,; $id[0] =~ s,.*/,,;
print <<_EOVERS; print <<_EOVERS;
$id[0]: $id[3] $id[0]: $id[3]
@ -45,12 +46,11 @@ _EOVERS
# initialisations # initialisations
# #
($program = $0) =~ s,.*/,,; ($program = $0) =~ s,.*/,,;
require 'getopts.pl';
# #
# parse command line # parse command line
# #
&Getopts( "t:s:vVwx" ) || &usage(); getopts( "t:s:vVwx" ) || &usage();
$tags_file = $opt_t || 'tags'; $tags_file = $opt_t || 'tags';
$explicit = $opt_x; $explicit = $opt_x;
$variable_tags = $opt_v; $variable_tags = $opt_v;

View File

@ -69,7 +69,7 @@
vimtutor <ENTER> vimtutor <ENTER>
4. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 1 <20><> 3 4. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 1 <20><> 3
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! :q! <ENTER> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! :q! <ENTER> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.
@ -790,10 +790,10 @@
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --->, <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --->, <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> xxx. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> xxx.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>Σ<EFBFBD>. <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>Σ<EFBFBD>.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx. 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx.

View File

@ -69,7 +69,7 @@
vimtutor <ENTER> vimtutor <ENTER>
4. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 1 <20><> 3 4. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 1 <20><> 3
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! :q! <ENTER> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! :q! <ENTER> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.
@ -790,10 +790,10 @@
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --->, <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --->, <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> xxx. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> xxx.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx. 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xxx.

View File

@ -1,12 +1,12 @@
" Vim tutor support file " Vim tutor support file
" Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es> " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
" Maintainer: Bram Moolenaar " Maintainer: Bram Moolenaar
" Last Change: 2016 Jul 16 " Last Change: 2018 Apr 11
" This Vim script is used for detecting if a translation of the " This Vim script is used for detecting if a translation of the
" tutor file exist, i.e., a tutor.xx file, where xx is the language. " tutor file exist, i.e., a tutor.xx file, where xx is the language.
" If the translation does not exist, or no extension is given, " If the translation does not exist, or no extension is given,
" it defaults to the english version. " it defaults to the English version.
" It is invoked by the vimtutor shell script. " It is invoked by the vimtutor shell script.

View File

@ -20,7 +20,7 @@
# #
# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
# using the excellent UPX compressor: # using the excellent UPX compressor:
# http://upx.sourceforge.net/ # https://upx.github.io/
# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
# http://www.matcode.com/mpress.htm # http://www.matcode.com/mpress.htm
# #
@ -28,52 +28,71 @@
# Updated 2014 Oct 13. # Updated 2014 Oct 13.
#>>>>> choose options: #>>>>> choose options:
# set to yes for a debug build
DEBUG=no
# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
OPTIMIZE=MAXSPEED
# set to yes to make gvim, no for vim
GUI=yes
# set to yes if you want to use DirectWrite (DirectX)
# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
DIRECTX=no
# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE]
# Set to TINY to make minimal version (few features). # Set to TINY to make minimal version (few features).
FEATURES=HUGE FEATURES=HUGE
# set to yes for a debug build
DEBUG=no
# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
OPTIMIZE=MAXSPEED
# set to yes to make gvim, no for vim
GUI=yes
# set to no if you do not want to use DirectWrite (DirectX)
# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
DIRECTX=yes
# Disable Color emoji support
# (default is yes if DIRECTX=yes, requires WinSDK 8.1 or later.)
#COLOR_EMOJI=no
# Set to one of i386, i486, i586, i686 as the minimum target processor. # Set to one of i386, i486, i586, i686 as the minimum target processor.
# For amd64/x64 architecture set ARCH=x86-64 . # For amd64/x64 architecture set ARCH=x86-64 .
# If not set, it will be automatically detected. (Normally i686 or x86-64.) # If not set, it will be automatically detected. (Normally i686 or x86-64.)
#ARCH=i686 #ARCH=i686
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin). # Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
CROSS=no CROSS=no
# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. # Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
# Use "yes" when the path does not need to be define. # Use "yes" when the path does not need to be define.
#ICONV="." #ICONV="."
ICONV=yes ICONV=yes
GETTEXT=yes GETTEXT=yes
# Set to yes to include multibyte support. # Set to yes to include multibyte support.
MBYTE=yes MBYTE=yes
# Set to yes to include IME support. # Set to yes to include IME support.
IME=yes IME=yes
DYNAMIC_IME=yes DYNAMIC_IME=yes
# Set to yes to enable writing a postscript file with :hardcopy. # Set to yes to enable writing a postscript file with :hardcopy.
POSTSCRIPT=no POSTSCRIPT=no
# Set to yes to enable OLE support. # Set to yes to enable OLE support.
OLE=no OLE=no
# Set the default $(WINVER) to make it work with WinXP. # Set the default $(WINVER) to make it work with WinXP.
ifndef WINVER ifndef WINVER
WINVER = 0x0501 WINVER = 0x0501
endif endif
# Set to yes to enable Cscope support. # Set to yes to enable Cscope support.
CSCOPE=yes CSCOPE=yes
# Set to yes to enable Netbeans support (requires CHANNEL). # Set to yes to enable Netbeans support (requires CHANNEL).
NETBEANS=$(GUI) NETBEANS=$(GUI)
# Set to yes to enable inter process communication. # Set to yes to enable inter process communication.
ifeq (HUGE, $(FEATURES)) ifeq (HUGE, $(FEATURES))
CHANNEL=yes CHANNEL=yes
else else
CHANNEL=$(GUI) CHANNEL=$(GUI)
endif endif
# Set to yes to enable terminal support. # Set to yes to enable terminal support.
ifeq (HUGE, $(FEATURES)) ifeq (HUGE, $(FEATURES))
TERMINAL=yes TERMINAL=yes
@ -371,7 +390,7 @@ endif
# Ruby interface: # Ruby interface:
# RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak) # RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak)
# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically, "no" for static)
# RUBY_VER=[Ruby version, eg 19, 22] (default is 22) # RUBY_VER=[Ruby version, eg 19, 22] (default is 22)
# RUBY_API_VER_LONG=[Ruby API version, eg 1.8, 1.9.1, 2.2.0] # RUBY_API_VER_LONG=[Ruby API version, eg 1.8, 1.9.1, 2.2.0]
# (default is 2.2.0) # (default is 2.2.0)
@ -518,6 +537,9 @@ ifeq (yes, $(DYNAMIC_RUBY))
CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
endif endif
ifeq (no, $(DYNAMIC_RUBY))
CFLAGS += -DRUBY_VERSION=$(RUBY_VER)
endif
ifneq ($(findstring w64-mingw32,$(CC)),) ifneq ($(findstring w64-mingw32,$(CC)),)
# A workaround for MinGW-w64 # A workaround for MinGW-w64
CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
@ -588,7 +610,10 @@ endif
ifeq ($(DIRECTX),yes) ifeq ($(DIRECTX),yes)
# Only allow DirectWrite for a GUI build. # Only allow DirectWrite for a GUI build.
ifeq (yes, $(GUI)) ifeq (yes, $(GUI))
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX -DFEAT_DIRECTX_COLOR_EMOJI DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
ifneq ($(COLOR_EMOJI),no)
DEFINES += -DFEAT_DIRECTX_COLOR_EMOJI
endif
endif endif
endif endif

View File

@ -26,7 +26,7 @@
# GUI interface: GUI=yes (default is no) # GUI interface: GUI=yes (default is no)
# #
# GUI with DirectWrite (DirectX): DIRECTX=yes # GUI with DirectWrite (DirectX): DIRECTX=yes
# (default is no, requires GUI=yes and MBYTE=yes) # (default is yes if GUI=yes, requires GUI=yes and MBYTE=yes)
# #
# Color emoji support: COLOR_EMOJI=yes # Color emoji support: COLOR_EMOJI=yes
# (default is yes if DIRECTX=yes, requires WinSDK 8.1 or later.) # (default is yes if DIRECTX=yes, requires WinSDK 8.1 or later.)
@ -180,6 +180,10 @@
TARGETOS = WINNT TARGETOS = WINNT
!ifndef DIRECTX
DIRECTX = $(GUI)
!endif
# Select one of eight object code directories, depends on GUI, OLE, DEBUG and # Select one of eight object code directories, depends on GUI, OLE, DEBUG and
# interfaces. # interfaces.
# If you change something else, do "make clean" first! # If you change something else, do "make clean" first!
@ -1154,7 +1158,9 @@ LINK_PDB = /PDB:$(VIM).pdb -debug
# CFLAGS with /Fo$(OUTDIR)/ # CFLAGS with /Fo$(OUTDIR)/
CFLAGS_OUTDIR=$(CFLAGS) /Fo$(OUTDIR)/ CFLAGS_OUTDIR=$(CFLAGS) /Fo$(OUTDIR)/
conflags = /nologo /subsystem:$(SUBSYSTEM) # Add /opt:ref to remove unreferenced functions and data even when /DEBUG is
# added.
conflags = /nologo /subsystem:$(SUBSYSTEM) /opt:ref
PATHDEF_SRC = $(OUTDIR)\pathdef.c PATHDEF_SRC = $(OUTDIR)\pathdef.c

View File

@ -1396,6 +1396,8 @@ TERM_DEPS = \
libvterm/src/utf8.h \ libvterm/src/utf8.h \
libvterm/src/vterm_internal.h libvterm/src/vterm_internal.h
TERM_SRC = libvterm/src/*.c
### Command to create dependencies based on #include "..." ### Command to create dependencies based on #include "..."
### prototype headers are ignored due to -DPROTO, system ### prototype headers are ignored due to -DPROTO, system
### headers #include <...> are ignored if we use the -MM option, as ### headers #include <...> are ignored if we use the -MM option, as
@ -2040,7 +2042,7 @@ notags:
# Motif and Athena GUI # Motif and Athena GUI
# You can ignore error messages for missing files. # You can ignore error messages for missing files.
tags TAGS: notags tags TAGS: notags
$(TAGPRG) $(TAGS_SRC) $(TAGS_INCL) $(TAGPRG) $(TAGS_SRC) $(TAGS_INCL) $(TERM_SRC) $(TERM_DEPS)
# Make a highlight file for types. Requires Exuberant ctags and awk # Make a highlight file for types. Requires Exuberant ctags and awk
types: types.vim types: types.vim
@ -2086,6 +2088,10 @@ benchmark:
unittesttargets: unittesttargets:
$(MAKE) -f Makefile $(UNITTEST_TARGETS) $(MAKE) -f Makefile $(UNITTEST_TARGETS)
# Swap these lines to run individual tests with gvim instead of vim.
VIMTESTTARGET = $(VIMTARGET)
# VIMTESTTARGET = $(GVIMTARGET)
# Execute the unittests one by one. # Execute the unittests one by one.
unittest unittests: $(RUN_UNITTESTS) unittest unittests: $(RUN_UNITTESTS)
@ -2113,7 +2119,7 @@ test1 \
test70 test72 \ test70 test72 \
test85 test86 test87 test88 \ test85 test86 test87 test88 \
test94 test95 test99 test108: test94 test95 test99 test108:
cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTESTTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
# Run individual NEW style test. # Run individual NEW style test.
# These do not depend on the executable, compile it when needed. # These do not depend on the executable, compile it when needed.
@ -2125,6 +2131,7 @@ test_arglist \
test_autocmd \ test_autocmd \
test_autoload \ test_autoload \
test_backspace_opt \ test_backspace_opt \
test_blockedit \
test_breakindent \ test_breakindent \
test_bufline \ test_bufline \
test_bufwintabinfo \ test_bufwintabinfo \
@ -2155,6 +2162,7 @@ test_arglist \
test_eval_stuff \ test_eval_stuff \
test_ex_undo \ test_ex_undo \
test_ex_z \ test_ex_z \
test_exit \
test_exec_while_if \ test_exec_while_if \
test_execute_func \ test_execute_func \
test_exists \ test_exists \
@ -2304,17 +2312,18 @@ test_arglist \
test_windows_home \ test_windows_home \
test_wordcount \ test_wordcount \
test_writefile \ test_writefile \
test_xxd \
test_alot_latin \ test_alot_latin \
test_alot_utf8 \ test_alot_utf8 \
test_alot: test_alot:
cd testdir; rm -f $@.res test.log messages; $(MAKE) -f Makefile $@.res VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) cd testdir; rm -f $@.res test.log messages; $(MAKE) -f Makefile $@.res VIMPROG=../$(VIMTESTTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
@if test -f testdir/test.log; then \ @if test -f testdir/test.log; then \
cat testdir/test.log; \ cat testdir/test.log; \
fi fi
cat testdir/messages cat testdir/messages
newtests: newtests:
cd testdir; rm -f $@.res test.log messages; $(MAKE) -f Makefile newtestssilent VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) cd testdir; rm -f $@.res test.log messages; $(MAKE) -f Makefile newtestssilent VIMPROG=../$(VIMTESTTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
@if test -f testdir/test.log; then \ @if test -f testdir/test.log; then \
cat testdir/test.log; \ cat testdir/test.log; \
fi fi
@ -2464,8 +2473,9 @@ installrtbase: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(DEST_RT) \
cd $(PRINTSOURCE); $(INSTALL_DATA) *.ps $(DEST_PRINT) cd $(PRINTSOURCE); $(INSTALL_DATA) *.ps $(DEST_PRINT)
cd $(DEST_PRINT); chmod $(FILEMOD) *.ps cd $(DEST_PRINT); chmod $(FILEMOD) *.ps
# install the colorscheme files # install the colorscheme files
cd $(COLSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COL) cd $(COLSOURCE); $(INSTALL_DATA_R) *.vim tools README.txt $(DEST_COL)
cd $(DEST_COL); chmod $(HELPMOD) *.vim README.txt cd $(DEST_COL); chmod $(DIRMOD) tools
cd $(DEST_COL); chmod $(HELPMOD) *.vim README.txt tools/*.vim
# install the syntax files # install the syntax files
cd $(SYNSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_SYN) cd $(SYNSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_SYN)
cd $(DEST_SYN); chmod $(HELPMOD) *.vim README.txt cd $(DEST_SYN); chmod $(HELPMOD) *.vim README.txt
@ -2814,6 +2824,7 @@ uninstall_runtime:
-rm -f $(SYS_FTPLUGOF_FILE) $(SYS_FTPLUGIN_FILE) -rm -f $(SYS_FTPLUGOF_FILE) $(SYS_FTPLUGIN_FILE)
-rm -f $(SYS_OPTWIN_FILE) -rm -f $(SYS_OPTWIN_FILE)
-rm -f $(DEST_COL)/*.vim $(DEST_COL)/README.txt -rm -f $(DEST_COL)/*.vim $(DEST_COL)/README.txt
-rm -rf $(DEST_COL)/tools
-rm -f $(DEST_SYN)/*.vim $(DEST_SYN)/README.txt -rm -f $(DEST_SYN)/*.vim $(DEST_SYN)/README.txt
-rm -f $(DEST_IND)/*.vim $(DEST_IND)/README.txt -rm -f $(DEST_IND)/*.vim $(DEST_IND)/README.txt
-rm -rf $(DEST_MACRO) -rm -rf $(DEST_MACRO)
@ -3161,12 +3172,6 @@ objects/if_perl.o: auto/if_perl.c
objects/if_perlsfio.o: if_perlsfio.c objects/if_perlsfio.o: if_perlsfio.c
$(CCC_NF) $(PERL_CFLAGS) $(ALL_CFLAGS) -o $@ if_perlsfio.c $(CCC_NF) $(PERL_CFLAGS) $(ALL_CFLAGS) -o $@ if_perlsfio.c
objects/py_getpath.o: $(PYTHON_CONFDIR)/getpath.c
$(CCC_NF) $(PYTHON_CFLAGS) $(ALL_CFLAGS) -o $@ \
$(PYTHON_CONFDIR)/getpath.c \
-I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN \
$(PYTHON_GETPATH_CFLAGS)
objects/if_python.o: if_python.c if_py_both.h objects/if_python.o: if_python.c if_py_both.h
$(CCC_NF) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) $(ALL_CFLAGS) -o $@ if_python.c $(CCC_NF) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) $(ALL_CFLAGS) -o $@ if_python.c

View File

@ -15,6 +15,7 @@ typedef enum {
aid_qf_dirname_start, aid_qf_dirname_start,
aid_qf_dirname_now, aid_qf_dirname_now,
aid_qf_namebuf, aid_qf_namebuf,
aid_qf_module,
aid_qf_errmsg, aid_qf_errmsg,
aid_qf_pattern, aid_qf_pattern,
aid_last aid_last

444
src/auto/configure vendored
View File

@ -679,14 +679,11 @@ PYTHON3_OBJ
PYTHON3_SRC PYTHON3_SRC
PYTHON3_CFLAGS PYTHON3_CFLAGS
PYTHON3_LIBS PYTHON3_LIBS
PYTHON3_CONFDIR
vi_cv_path_python3 vi_cv_path_python3
PYTHON_OBJ PYTHON_OBJ
PYTHON_SRC PYTHON_SRC
PYTHON_CFLAGS PYTHON_CFLAGS
PYTHON_GETPATH_CFLAGS
PYTHON_LIBS PYTHON_LIBS
PYTHON_CONFDIR
vi_cv_path_python vi_cv_path_python
PERL_LIBS PERL_LIBS
PERL_CFLAGS PERL_CFLAGS
@ -805,8 +802,10 @@ enable_mzschemeinterp
with_plthome with_plthome
enable_perlinterp enable_perlinterp
enable_pythoninterp enable_pythoninterp
with_python_command
with_python_config_dir with_python_config_dir
enable_python3interp enable_python3interp
with_python3_command
with_python3_config_dir with_python3_config_dir
enable_tclinterp enable_tclinterp
with_tclsh with_tclsh
@ -1535,8 +1534,10 @@ Optional Packages:
--with-lua-prefix=PFX Prefix where Lua is installed. --with-lua-prefix=PFX Prefix where Lua is installed.
--with-luajit Link with LuaJIT instead of Lua. --with-luajit Link with LuaJIT instead of Lua.
--with-plthome=PLTHOME Use PLTHOME. --with-plthome=PLTHOME Use PLTHOME.
--with-python-config-dir=PATH Python's config directory --with-python-command=NAME name of the Python 2 command (default: python2 or python)
--with-python3-config-dir=PATH Python's config directory --with-python-config-dir=PATH Python's config directory (deprecated)
--with-python3-command=NAME name of the Python 3 command (default: python3 or python)
--with-python3-config-dir=PATH Python's config directory (deprecated)
--with-tclsh=PATH which tclsh to use (default: tclsh8.0) --with-tclsh=PATH which tclsh to use (default: tclsh8.0)
--with-ruby-command=RUBY name of the Ruby command (default: ruby) --with-ruby-command=RUBY name of the Ruby command (default: ruby)
--with-x use the X Window System --with-x use the X Window System
@ -3452,6 +3453,183 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
if ${ac_cv_prog_cc_c99+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c99=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <wchar.h>
#include <stdio.h>
// Check varargs macros. These examples are taken from C99 6.10.3.5.
#define debug(...) fprintf (stderr, __VA_ARGS__)
#define showlist(...) puts (#__VA_ARGS__)
#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
static void
test_varargs_macros (void)
{
int x = 1234;
int y = 5678;
debug ("Flag");
debug ("X = %d\n", x);
showlist (The first, second, and third items.);
report (x>y, "x is %d but y is %d", x, y);
}
// Check long long types.
#define BIG64 18446744073709551615ull
#define BIG32 4294967295ul
#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
#if !BIG_OK
your preprocessor is broken;
#endif
#if BIG_OK
#else
your preprocessor is broken;
#endif
static long long int bignum = -9223372036854775807LL;
static unsigned long long int ubignum = BIG64;
struct incomplete_array
{
int datasize;
double data[];
};
struct named_init {
int number;
const wchar_t *name;
double average;
};
typedef const char *ccp;
static inline int
test_restrict (ccp restrict text)
{
// See if C++-style comments work.
// Iterate through items via the restricted pointer.
// Also check for declarations in for loops.
for (unsigned int i = 0; *(text+i) != '\0'; ++i)
continue;
return 0;
}
// Check varargs and va_copy.
static void
test_varargs (const char *format, ...)
{
va_list args;
va_start (args, format);
va_list args_copy;
va_copy (args_copy, args);
const char *str;
int number;
float fnumber;
while (*format)
{
switch (*format++)
{
case 's': // string
str = va_arg (args_copy, const char *);
break;
case 'd': // int
number = va_arg (args_copy, int);
break;
case 'f': // float
fnumber = va_arg (args_copy, double);
break;
default:
break;
}
}
va_end (args_copy);
va_end (args);
}
int
main ()
{
// Check bool.
_Bool success = false;
// Check restrict.
if (test_restrict ("String literal") == 0)
success = true;
char *restrict newvar = "Another string";
// Check varargs.
test_varargs ("s, d' f .", "string", 65, 34.234);
test_varargs_macros ();
// Check flexible array members.
struct incomplete_array *ia =
malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
ia->datasize = 10;
for (int i = 0; i < ia->datasize; ++i)
ia->data[i] = i * 1.234;
// Check named initializers.
struct named_init ni = {
.number = 34,
.name = L"Test wide string",
.average = 543.34343,
};
ni.number = 58;
int dynamic_array[ni.number];
dynamic_array[ni.number - 1] = 543;
// work around unused variable warnings
return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
|| dynamic_array[ni.number - 1] != 543);
;
return 0;
}
_ACEOF
for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
do
CC="$ac_save_CC $ac_arg"
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_prog_cc_c99=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext
test "x$ac_cv_prog_cc_c99" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi
# AC_CACHE_VAL
case "x$ac_cv_prog_cc_c99" in
x)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
$as_echo "none needed" >&6; } ;;
xno)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
$as_echo "unsupported" >&6; } ;;
*)
CC="$CC $ac_cv_prog_cc_c99"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
esac
if test "x$ac_cv_prog_cc_c99" != xno; then :
fi
ac_ext=c ac_ext=c
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@ -4087,6 +4265,194 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
fi fi
if test x"$ac_cv_prog_cc_c99" != xno; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
$as_echo_n "checking for unsigned long long int... " >&6; }
if ${ac_cv_type_unsigned_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_type_unsigned_long_long_int=yes
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* For now, do not test the preprocessor; as of 2007 there are too many
implementations with broken preprocessors. Perhaps this can
be revisited in 2012. In the meantime, code should not expect
#if to work with literals wider than 32 bits. */
/* Test literals. */
long long int ll = 9223372036854775807ll;
long long int nll = -9223372036854775807LL;
unsigned long long int ull = 18446744073709551615ULL;
/* Test constant expressions. */
typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
? 1 : -1)];
typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
? 1 : -1)];
int i = 63;
int
main ()
{
/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
unsigned long long int ullmax = 18446744073709551615ull;
return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
| (llmax / ll) | (llmax % ll)
| (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
| (ullmax / ull) | (ullmax % ull));
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
else
ac_cv_type_unsigned_long_long_int=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
if test $ac_cv_type_unsigned_long_long_int = yes; then
$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
$as_echo_n "checking for long long int... " >&6; }
if ${ac_cv_type_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_type_long_long_int=yes
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
if test $ac_cv_type_long_long_int = yes; then
if test "$cross_compiling" = yes; then :
:
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
#ifndef LLONG_MAX
# define HALF \
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
# define LLONG_MAX (HALF - 1 + HALF)
#endif
int
main ()
{
long long int n = 1;
int i;
for (i = 0; ; i++)
{
long long int m = n << i;
if (m >> i != n)
return 1;
if (LLONG_MAX / 2 < m)
break;
}
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
else
ac_cv_type_long_long_int=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
$as_echo "$ac_cv_type_long_long_int" >&6; }
if test $ac_cv_type_long_long_int = yes; then
$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
fi
if test "$ac_cv_type_long_long_int" = no; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Compiler does not support long long int
See \`config.log' for more details" "$LINENO" 5; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports trailing commas" >&5
$as_echo_n "checking if the compiler supports trailing commas... " >&6; }
trailing_commas=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
enum {
one,
};
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }; trailing_commas=yes
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$trailing_commas" = no; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Compiler does not support trailing comma in enum
See \`config.log' for more details" "$LINENO" 5; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports C++ comments" >&5
$as_echo_n "checking if the compiler supports C++ comments... " >&6; }
slash_comments=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
// C++ comments?
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }; slash_comments=yes
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$slash_comments" = no; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Compiler does not support C++ comments
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
$as_echo_n "checking --enable-fail-if-missing argument... " >&6; } $as_echo_n "checking --enable-fail-if-missing argument... " >&6; }
@ -5849,6 +6215,21 @@ if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; th
as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5 as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-python-command argument" >&5
$as_echo_n "checking --with-python-command argument... " >&6; }
# Check whether --with-python-command was given.
if test "${with_python_command+set}" = set; then :
withval=$with_python_command; vi_cv_path_python="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python" >&5
$as_echo "$vi_cv_path_python" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "X$vi_cv_path_python" = "X"; then
for ac_prog in python2 python for ac_prog in python2 python
do do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
@ -5894,6 +6275,7 @@ fi
test -n "$vi_cv_path_python" && break test -n "$vi_cv_path_python" && break
done done
fi
if test "X$vi_cv_path_python" != "X"; then if test "X$vi_cv_path_python" != "X"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
@ -5955,7 +6337,7 @@ fi
# Check whether --with-python-config-dir was given. # Check whether --with-python-config-dir was given.
if test "${with_python_config_dir+set}" = set; then : if test "${with_python_config_dir+set}" = set; then :
withval=$with_python_config_dir; vi_cv_path_python_conf="${withval}" withval=$with_python_config_dir; vi_cv_path_python_conf="${withval}"; have_python_config_dir=1
fi fi
@ -6018,11 +6400,7 @@ eof
vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python" vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
fi fi
else else
if test "${vi_cv_var_python_version}" = "1.4"; then vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
else
vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
fi
if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'` python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'`
python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t][ \t]*\(.*\)/\2/'` python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t][ \t]*\(.*\)/\2/'`
@ -6058,16 +6436,16 @@ $as_echo "$vi_cv_dll_name_python" >&6; }
PYTHON_LIBS="${vi_cv_path_python_plibs}" PYTHON_LIBS="${vi_cv_path_python_plibs}"
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
else else
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
fi
if test "X$have_python_config_dir" = "X1" -a "$enable_pythoninterp" = "dynamic"; then
PYTHON_CFLAGS="${PYTHON_CFLAGS} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
fi fi
PYTHON_SRC="if_python.c" PYTHON_SRC="if_python.c"
PYTHON_OBJ="objects/if_python.o" PYTHON_OBJ="objects/if_python.o"
if test "${vi_cv_var_python_version}" = "1.4"; then
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
fi
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
$as_echo_n "checking if -pthread should be used... " >&6; } $as_echo_n "checking if -pthread should be used... " >&6; }
@ -6171,8 +6549,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-python3interp argument" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-python3interp argument" >&5
$as_echo_n "checking --enable-python3interp argument... " >&6; } $as_echo_n "checking --enable-python3interp argument... " >&6; }
# Check whether --enable-python3interp was given. # Check whether --enable-python3interp was given.
@ -6189,6 +6565,21 @@ if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic";
as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5 as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-python3-command argument" >&5
$as_echo_n "checking --with-python3-command argument... " >&6; }
# Check whether --with-python3-command was given.
if test "${with_python3_command+set}" = set; then :
withval=$with_python3_command; vi_cv_path_python3="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3" >&5
$as_echo "$vi_cv_path_python3" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "X$vi_cv_path_python3" = "X"; then
for ac_prog in python3 python for ac_prog in python3 python
do do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
@ -6234,6 +6625,7 @@ fi
test -n "$vi_cv_path_python3" && break test -n "$vi_cv_path_python3" && break
done done
fi
if test "X$vi_cv_path_python3" != "X"; then if test "X$vi_cv_path_python3" != "X"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
@ -6312,7 +6704,7 @@ fi
# Check whether --with-python3-config-dir was given. # Check whether --with-python3-config-dir was given.
if test "${with_python3_config_dir+set}" = set; then : if test "${with_python3_config_dir+set}" = set; then :
withval=$with_python3_config_dir; vi_cv_path_python3_conf="${withval}" withval=$with_python3_config_dir; vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1
fi fi
@ -6390,10 +6782,13 @@ $as_echo "$vi_cv_dll_name_python3" >&6; }
PYTHON3_LIBS="${vi_cv_path_python3_plibs}" PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
else else
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
fi fi
if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
fi
PYTHON3_SRC="if_python3.c" PYTHON3_SRC="if_python3.c"
PYTHON3_OBJ="objects/if_python3.o" PYTHON3_OBJ="objects/if_python3.o"
@ -6497,7 +6892,6 @@ fi
if test "$python_ok" = yes && test "$python3_ok" = yes; then if test "$python_ok" = yes && test "$python3_ok" = yes; then
$as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h $as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h
@ -12215,7 +12609,7 @@ for ac_func in fchdir fchown fchmod fsync getcwd getpseudotty \
getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \ sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \
strnicmp strpbrk strtol tgetent towlower towupper iswupper \ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
usleep utime utimes mblen ftruncate usleep utime utimes mblen ftruncate unsetenv
do : do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@ -14316,7 +14710,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need to force -D_FILE_OFFSET_BITS=64" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need to force -D_FILE_OFFSET_BITS=64" >&5
$as_echo_n "checking whether we need to force -D_FILE_OFFSET_BITS=64... " >&6; } $as_echo_n "checking whether we need to force -D_FILE_OFFSET_BITS=64... " >&6; }
if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_GETPATH_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; } $as_echo "yes" >&6; }
$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h $as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h

View File

@ -27,13 +27,9 @@
#include "vim.h" #include "vim.h"
#if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL)
static char_u *buflist_match(regmatch_T *rmp, buf_T *buf, int ignore_case); static char_u *buflist_match(regmatch_T *rmp, buf_T *buf, int ignore_case);
# define HAVE_BUFLIST_MATCH
static char_u *fname_match(regmatch_T *rmp, char_u *name, int ignore_case); static char_u *fname_match(regmatch_T *rmp, char_u *name, int ignore_case);
#endif
static void buflist_setfpos(buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options); static void buflist_setfpos(buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options);
static wininfo_T *find_wininfo(buf_T *buf, int skip_diff_buffer);
#ifdef UNIX #ifdef UNIX
static buf_T *buflist_findname_stat(char_u *ffname, stat_T *st); static buf_T *buflist_findname_stat(char_u *ffname, stat_T *st);
static int otherfile_buf(buf_T *buf, char_u *ffname, stat_T *stp); static int otherfile_buf(buf_T *buf, char_u *ffname, stat_T *stp);
@ -291,6 +287,13 @@ open_buffer(
unchanged(curbuf, FALSE); unchanged(curbuf, FALSE);
save_file_ff(curbuf); /* keep this fileformat */ save_file_ff(curbuf); /* keep this fileformat */
/* Set last_changedtick to avoid triggering a TextChanged autocommand right
* after it was added. */
curbuf->b_last_changedtick = CHANGEDTICK(curbuf);
#ifdef FEAT_INS_EXPAND
curbuf->b_last_changedtick_pum = CHANGEDTICK(curbuf);
#endif
/* require "!" to overwrite the file, because it wasn't read completely */ /* require "!" to overwrite the file, because it wasn't read completely */
#ifdef FEAT_EVAL #ifdef FEAT_EVAL
if (aborting()) if (aborting())
@ -414,6 +417,8 @@ buf_hashtab_remove(buf_T *buf)
hash_remove(&buf_hashtab, hi); hash_remove(&buf_hashtab, hi);
} }
static char *e_buflocked = N_("E937: Attempt to delete a buffer that is in use");
/* /*
* Close the link to a buffer. * Close the link to a buffer.
* "action" is used when there is no longer a window for the buffer. * "action" is used when there is no longer a window for the buffer.
@ -473,8 +478,15 @@ close_buffer(
if (term_job_running(buf->b_term)) if (term_job_running(buf->b_term))
{ {
if (wipe_buf || unload_buf) if (wipe_buf || unload_buf)
{
if (buf->b_locked)
{
EMSG(_(e_buflocked));
return;
}
/* Wiping out or unloading a terminal buffer kills the job. */ /* Wiping out or unloading a terminal buffer kills the job. */
free_terminal(buf); free_terminal(buf);
}
else else
{ {
/* The job keeps running, hide the buffer. */ /* The job keeps running, hide the buffer. */
@ -496,7 +508,7 @@ close_buffer(
* halfway a command that relies on it). Unloading is allowed. */ * halfway a command that relies on it). Unloading is allowed. */
if (buf->b_locked > 0 && (del_buf || wipe_buf)) if (buf->b_locked > 0 && (del_buf || wipe_buf))
{ {
EMSG(_("E937: Attempt to delete a buffer that is in use")); EMSG(_(e_buflocked));
return; return;
} }
@ -941,7 +953,6 @@ clear_wininfo(buf_T *buf)
} }
} }
#if defined(FEAT_LISTCMDS) || defined(PROTO)
/* /*
* Go to another buffer. Handles the result of the ATTENTION dialog. * Go to another buffer. Handles the result of the ATTENTION dialog.
*/ */
@ -952,42 +963,41 @@ goto_buffer(
int dir, int dir,
int count) int count)
{ {
# if defined(HAS_SWAP_EXISTS_ACTION) #if defined(HAS_SWAP_EXISTS_ACTION)
bufref_T old_curbuf; bufref_T old_curbuf;
set_bufref(&old_curbuf, curbuf); set_bufref(&old_curbuf, curbuf);
swap_exists_action = SEA_DIALOG; swap_exists_action = SEA_DIALOG;
# endif #endif
(void)do_buffer(*eap->cmd == 's' ? DOBUF_SPLIT : DOBUF_GOTO, (void)do_buffer(*eap->cmd == 's' ? DOBUF_SPLIT : DOBUF_GOTO,
start, dir, count, eap->forceit); start, dir, count, eap->forceit);
# if defined(HAS_SWAP_EXISTS_ACTION) #if defined(HAS_SWAP_EXISTS_ACTION)
if (swap_exists_action == SEA_QUIT && *eap->cmd == 's') if (swap_exists_action == SEA_QUIT && *eap->cmd == 's')
{ {
# if defined(FEAT_EVAL) # if defined(FEAT_EVAL)
cleanup_T cs; cleanup_T cs;
/* Reset the error/interrupt/exception state here so that /* Reset the error/interrupt/exception state here so that
* aborting() returns FALSE when closing a window. */ * aborting() returns FALSE when closing a window. */
enter_cleanup(&cs); enter_cleanup(&cs);
# endif # endif
/* Quitting means closing the split window, nothing else. */ /* Quitting means closing the split window, nothing else. */
win_close(curwin, TRUE); win_close(curwin, TRUE);
swap_exists_action = SEA_NONE; swap_exists_action = SEA_NONE;
swap_exists_did_quit = TRUE; swap_exists_did_quit = TRUE;
# if defined(FEAT_EVAL) # if defined(FEAT_EVAL)
/* Restore the error/interrupt/exception state if not discarded by a /* Restore the error/interrupt/exception state if not discarded by a
* new aborting error, interrupt, or uncaught exception. */ * new aborting error, interrupt, or uncaught exception. */
leave_cleanup(&cs); leave_cleanup(&cs);
# endif # endif
} }
else else
handle_swap_exists(&old_curbuf); handle_swap_exists(&old_curbuf);
# endif
}
#endif #endif
}
#if defined(HAS_SWAP_EXISTS_ACTION) || defined(PROTO) #if defined(HAS_SWAP_EXISTS_ACTION) || defined(PROTO)
/* /*
@ -1065,7 +1075,6 @@ handle_swap_exists(bufref_T *old_curbuf)
} }
#endif #endif
#if defined(FEAT_LISTCMDS) || defined(PROTO)
/* /*
* do_bufdel() - delete or unload buffer(s) * do_bufdel() - delete or unload buffer(s)
* *
@ -1192,10 +1201,6 @@ do_bufdel(
return errormsg; return errormsg;
} }
#endif /* FEAT_LISTCMDS */
#if defined(FEAT_LISTCMDS) || defined(FEAT_PYTHON) \
|| defined(FEAT_PYTHON3) || defined(PROTO)
static int empty_curbuf(int close_others, int forceit, int action); static int empty_curbuf(int close_others, int forceit, int action);
@ -1352,7 +1357,6 @@ do_buffer(
need_mouse_correct = TRUE; need_mouse_correct = TRUE;
#endif #endif
#ifdef FEAT_LISTCMDS
/* /*
* delete buffer buf from memory and/or the list * delete buffer buf from memory and/or the list
*/ */
@ -1361,6 +1365,12 @@ do_buffer(
int forward; int forward;
bufref_T bufref; bufref_T bufref;
if (buf->b_locked)
{
EMSG(_(e_buflocked));
return FAIL;
}
set_bufref(&bufref, buf); set_bufref(&bufref, buf);
/* When unloading or deleting a buffer that's already unloaded and /* When unloading or deleting a buffer that's already unloaded and
@ -1370,7 +1380,7 @@ do_buffer(
if (!forceit && bufIsChanged(buf)) if (!forceit && bufIsChanged(buf))
{ {
# if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && p_write) if ((p_confirm || cmdmod.confirm) && p_write)
{ {
dialog_changed(buf, FALSE); dialog_changed(buf, FALSE);
@ -1384,7 +1394,7 @@ do_buffer(
return FAIL; return FAIL;
} }
else else
# endif #endif
{ {
EMSGN(_("E89: No write since last change for buffer %ld (add ! to override)"), EMSGN(_("E89: No write since last change for buffer %ld (add ! to override)"),
buf->b_fnum); buf->b_fnum);
@ -1550,7 +1560,6 @@ do_buffer(
if (win_split(0, 0) == FAIL) if (win_split(0, 0) == FAIL)
return FAIL; return FAIL;
} }
#endif
/* go to current buffer - nothing to do */ /* go to current buffer - nothing to do */
if (buf == curbuf) if (buf == curbuf)
@ -1583,12 +1592,10 @@ do_buffer(
/* Go to the other buffer. */ /* Go to the other buffer. */
set_curbuf(buf, action); set_curbuf(buf, action);
#if defined(FEAT_LISTCMDS)
if (action == DOBUF_SPLIT) if (action == DOBUF_SPLIT)
{ {
RESET_BINDING(curwin); /* reset 'scrollbind' and 'cursorbind' */ RESET_BINDING(curwin); /* reset 'scrollbind' and 'cursorbind' */
} }
#endif
#if defined(FEAT_EVAL) #if defined(FEAT_EVAL)
if (aborting()) /* autocmds may abort script processing */ if (aborting()) /* autocmds may abort script processing */
@ -1597,7 +1604,6 @@ do_buffer(
return OK; return OK;
} }
#endif
/* /*
* Set current buffer to "buf". Executes autocommands and closes current * Set current buffer to "buf". Executes autocommands and closes current
@ -1773,7 +1779,7 @@ enter_buffer(buf_T *buf)
#endif #endif
/* Change directories when the 'acd' option is set. */ /* Change directories when the 'acd' option is set. */
DO_AUTOCHDIR DO_AUTOCHDIR;
#ifdef FEAT_KEYMAP #ifdef FEAT_KEYMAP
if (curbuf->b_kmap_state & KEYMAP_INIT) if (curbuf->b_kmap_state & KEYMAP_INIT)
@ -1835,6 +1841,20 @@ no_write_message_nobang(buf_T *buf UNUSED)
static int top_file_num = 1; /* highest file number */ static int top_file_num = 1; /* highest file number */
/*
* Return TRUE if the current buffer is empty, unnamed, unmodified and used in
* only one window. That means it can be re-used.
*/
int
curbuf_reusable(void)
{
return (curbuf != NULL
&& curbuf->b_ffname == NULL
&& curbuf->b_nwindows <= 1
&& (curbuf->b_ml.ml_mfp == NULL || BUFEMPTY())
&& !curbufIsChanged());
}
/* /*
* Add a file name to the buffer list. Return a pointer to the buffer. * Add a file name to the buffer list. Return a pointer to the buffer.
* If the same file name already exists return a pointer to that buffer. * If the same file name already exists return a pointer to that buffer.
@ -1915,11 +1935,7 @@ buflist_new(
* buffer.) * buffer.)
*/ */
buf = NULL; buf = NULL;
if ((flags & BLN_CURBUF) if ((flags & BLN_CURBUF) && curbuf_reusable())
&& curbuf != NULL
&& curbuf->b_ffname == NULL
&& curbuf->b_nwindows <= 1
&& (curbuf->b_ml.ml_mfp == NULL || BUFEMPTY()))
{ {
buf = curbuf; buf = curbuf;
/* It's like this buffer is deleted. Watch out for autocommands that /* It's like this buffer is deleted. Watch out for autocommands that
@ -2404,8 +2420,6 @@ buflist_findname_stat(
return NULL; return NULL;
} }
#if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) \
|| defined(PROTO)
/* /*
* Find file in buffer list by a regexp pattern. * Find file in buffer list by a regexp pattern.
* Return fnum of the found buffer. * Return fnum of the found buffer.
@ -2527,7 +2541,6 @@ buflist_findpat(
EMSG2(_("E94: No matching buffer for %s"), pattern); EMSG2(_("E94: No matching buffer for %s"), pattern);
return match; return match;
} }
#endif
#if defined(FEAT_CMDL_COMPL) || defined(PROTO) #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
@ -2637,7 +2650,6 @@ ExpandBufnames(
#endif /* FEAT_CMDL_COMPL */ #endif /* FEAT_CMDL_COMPL */
#ifdef HAVE_BUFLIST_MATCH
/* /*
* Check for a match on the file name for buffer "buf" with regprog "prog". * Check for a match on the file name for buffer "buf" with regprog "prog".
*/ */
@ -2688,7 +2700,6 @@ fname_match(
return match; return match;
} }
#endif
/* /*
* Find a file in the buffer list by buffer number. * Find a file in the buffer list by buffer number.
@ -2884,8 +2895,23 @@ get_winopts(buf_T *buf)
#endif #endif
wip = find_wininfo(buf, TRUE); wip = find_wininfo(buf, TRUE);
if (wip != NULL && wip->wi_optset) if (wip != NULL && wip->wi_win != NULL
&& wip->wi_win != curwin && wip->wi_win->w_buffer == buf)
{ {
/* The buffer is currently displayed in the window: use the actual
* option values instead of the saved (possibly outdated) values. */
win_T *wp = wip->wi_win;
copy_winopt(&wp->w_onebuf_opt, &curwin->w_onebuf_opt);
#ifdef FEAT_FOLDING
curwin->w_fold_manual = wp->w_fold_manual;
curwin->w_foldinvalid = TRUE;
cloneFoldGrowArray(&wp->w_folds, &curwin->w_folds);
#endif
}
else if (wip != NULL && wip->wi_optset)
{
/* the buffer was displayed in the current window earlier */
copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt); copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
#ifdef FEAT_FOLDING #ifdef FEAT_FOLDING
curwin->w_fold_manual = wip->wi_fold_manual; curwin->w_fold_manual = wip->wi_fold_manual;
@ -2933,7 +2959,6 @@ buflist_findlnum(buf_T *buf)
return buflist_findfpos(buf)->lnum; return buflist_findfpos(buf)->lnum;
} }
#if defined(FEAT_LISTCMDS) || defined(PROTO)
/* /*
* List all known file names (for :files and :buffers command). * List all known file names (for :files and :buffers command).
*/ */
@ -2945,18 +2970,34 @@ buflist_list(exarg_T *eap)
int i; int i;
int ro_char; int ro_char;
int changed_char; int changed_char;
#ifdef FEAT_TERMINAL
int job_running;
int job_none_open;
#endif
for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next) for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next)
{ {
#ifdef FEAT_TERMINAL
job_running = term_job_running(buf->b_term);
job_none_open = job_running && term_none_open(buf->b_term);
#endif
/* skip unlisted buffers, unless ! was used */ /* skip unlisted buffers, unless ! was used */
if ((!buf->b_p_bl && !eap->forceit && !vim_strchr(eap->arg, 'u')) if ((!buf->b_p_bl && !eap->forceit && !vim_strchr(eap->arg, 'u'))
|| (vim_strchr(eap->arg, 'u') && buf->b_p_bl) || (vim_strchr(eap->arg, 'u') && buf->b_p_bl)
|| (vim_strchr(eap->arg, '+') || (vim_strchr(eap->arg, '+')
&& ((buf->b_flags & BF_READERR) || !bufIsChanged(buf))) && ((buf->b_flags & BF_READERR) || !bufIsChanged(buf)))
|| (vim_strchr(eap->arg, 'a') || (vim_strchr(eap->arg, 'a')
&& (buf->b_ml.ml_mfp == NULL || buf->b_nwindows == 0)) && (buf->b_ml.ml_mfp == NULL || buf->b_nwindows == 0))
|| (vim_strchr(eap->arg, 'h') || (vim_strchr(eap->arg, 'h')
&& (buf->b_ml.ml_mfp == NULL || buf->b_nwindows != 0)) && (buf->b_ml.ml_mfp == NULL || buf->b_nwindows != 0))
#ifdef FEAT_TERMINAL
|| (vim_strchr(eap->arg, 'R')
&& (!job_running || (job_running && job_none_open)))
|| (vim_strchr(eap->arg, '?')
&& (!job_running || (job_running && !job_none_open)))
|| (vim_strchr(eap->arg, 'F')
&& (job_running || buf->b_term == NULL))
#endif
|| (vim_strchr(eap->arg, '-') && buf->b_p_ma) || (vim_strchr(eap->arg, '-') && buf->b_p_ma)
|| (vim_strchr(eap->arg, '=') && !buf->b_p_ro) || (vim_strchr(eap->arg, '=') && !buf->b_p_ro)
|| (vim_strchr(eap->arg, 'x') && !(buf->b_flags & BF_READERR)) || (vim_strchr(eap->arg, 'x') && !(buf->b_flags & BF_READERR))
@ -3017,7 +3058,6 @@ buflist_list(exarg_T *eap)
ui_breakcheck(); ui_breakcheck();
} }
} }
#endif
/* /*
* Get file name and line number for file 'fnum'. * Get file name and line number for file 'fnum'.
@ -5088,7 +5128,6 @@ do_arg_all(
vim_free(opened); vim_free(opened);
} }
# if defined(FEAT_LISTCMDS) || defined(PROTO)
/* /*
* Open a window for a number of buffers. * Open a window for a number of buffers.
*/ */
@ -5293,7 +5332,6 @@ ex_buffer_all(exarg_T *eap)
} }
} }
} }
# endif /* FEAT_LISTCMDS */
static int chk_modeline(linenr_T, int); static int chk_modeline(linenr_T, int);

View File

@ -158,6 +158,7 @@ ch_log_lead(const char *what, channel_T *ch)
static int did_log_msg = TRUE; static int did_log_msg = TRUE;
#ifndef PROTO /* prototype is in vim.h */
void void
ch_log(channel_T *ch, const char *fmt, ...) ch_log(channel_T *ch, const char *fmt, ...)
{ {
@ -174,6 +175,14 @@ ch_log(channel_T *ch, const char *fmt, ...)
did_log_msg = TRUE; did_log_msg = TRUE;
} }
} }
#endif
static void
ch_error(channel_T *ch, const char *fmt, ...)
#ifdef USE_PRINTF_FORMAT_ATTRIBUTE
__attribute__((format(printf, 2, 3)))
#endif
;
static void static void
ch_error(channel_T *ch, const char *fmt, ...) ch_error(channel_T *ch, const char *fmt, ...)
@ -335,6 +344,15 @@ channel_still_useful(channel_T *channel)
&& has_err_msg); && has_err_msg);
} }
/*
* Return TRUE if "channel" is closeable (i.e. all readable fds are closed).
*/
static int
channel_can_close(channel_T *channel)
{
return channel->ch_to_be_closed == 0;
}
/* /*
* Close a channel and free all its resources. * Close a channel and free all its resources.
*/ */
@ -467,7 +485,7 @@ channel_read_fd(int fd)
*/ */
#ifdef FEAT_GUI_X11 #ifdef FEAT_GUI_X11
static void static void
messageFromServer(XtPointer clientData, messageFromServerX11(XtPointer clientData,
int *unused1 UNUSED, int *unused1 UNUSED,
XtInputId *unused2 UNUSED) XtInputId *unused2 UNUSED)
{ {
@ -478,7 +496,7 @@ messageFromServer(XtPointer clientData,
#ifdef FEAT_GUI_GTK #ifdef FEAT_GUI_GTK
# if GTK_CHECK_VERSION(3,0,0) # if GTK_CHECK_VERSION(3,0,0)
static gboolean static gboolean
messageFromServer(GIOChannel *unused1 UNUSED, messageFromServerGtk3(GIOChannel *unused1 UNUSED,
GIOCondition unused2 UNUSED, GIOCondition unused2 UNUSED,
gpointer clientData) gpointer clientData)
{ {
@ -488,7 +506,7 @@ messageFromServer(GIOChannel *unused1 UNUSED,
} }
# else # else
static void static void
messageFromServer(gpointer clientData, messageFromServerGtk2(gpointer clientData,
gint unused1 UNUSED, gint unused1 UNUSED,
GdkInputCondition unused2 UNUSED) GdkInputCondition unused2 UNUSED)
{ {
@ -508,41 +526,48 @@ channel_gui_register_one(channel_T *channel, ch_part_T part)
return; return;
# ifdef FEAT_GUI_X11 # ifdef FEAT_GUI_X11
/* Tell notifier we are interested in being called /* Tell notifier we are interested in being called when there is input on
* when there is input on the editor connection socket. */ * the editor connection socket. */
if (channel->ch_part[part].ch_inputHandler == (XtInputId)NULL) if (channel->ch_part[part].ch_inputHandler == (XtInputId)NULL)
{
ch_log(channel, "Registering part %s with fd %d",
part_names[part], channel->ch_part[part].ch_fd);
channel->ch_part[part].ch_inputHandler = XtAppAddInput( channel->ch_part[part].ch_inputHandler = XtAppAddInput(
(XtAppContext)app_context, (XtAppContext)app_context,
channel->ch_part[part].ch_fd, channel->ch_part[part].ch_fd,
(XtPointer)(XtInputReadMask + XtInputExceptMask), (XtPointer)(XtInputReadMask + XtInputExceptMask),
messageFromServer, messageFromServerX11,
(XtPointer)(long)channel->ch_part[part].ch_fd); (XtPointer)(long)channel->ch_part[part].ch_fd);
}
# else # else
# ifdef FEAT_GUI_GTK # ifdef FEAT_GUI_GTK
/* Tell gdk we are interested in being called when there /* Tell gdk we are interested in being called when there is input on the
* is input on the editor connection socket. */ * editor connection socket. */
if (channel->ch_part[part].ch_inputHandler == 0) if (channel->ch_part[part].ch_inputHandler == 0)
# if GTK_CHECK_VERSION(3,0,0)
{ {
ch_log(channel, "Registering part %s with fd %d",
part_names[part], channel->ch_part[part].ch_fd);
# if GTK_CHECK_VERSION(3,0,0)
GIOChannel *chnnl = g_io_channel_unix_new( GIOChannel *chnnl = g_io_channel_unix_new(
(gint)channel->ch_part[part].ch_fd); (gint)channel->ch_part[part].ch_fd);
channel->ch_part[part].ch_inputHandler = g_io_add_watch( channel->ch_part[part].ch_inputHandler = g_io_add_watch(
chnnl, chnnl,
G_IO_IN|G_IO_HUP|G_IO_ERR|G_IO_PRI, G_IO_IN|G_IO_HUP|G_IO_ERR|G_IO_PRI,
messageFromServer, messageFromServerGtk3,
GINT_TO_POINTER(channel->ch_part[part].ch_fd)); GINT_TO_POINTER(channel->ch_part[part].ch_fd));
g_io_channel_unref(chnnl); g_io_channel_unref(chnnl);
}
# else # else
channel->ch_part[part].ch_inputHandler = gdk_input_add( channel->ch_part[part].ch_inputHandler = gdk_input_add(
(gint)channel->ch_part[part].ch_fd, (gint)channel->ch_part[part].ch_fd,
(GdkInputCondition) (GdkInputCondition)
((int)GDK_INPUT_READ + (int)GDK_INPUT_EXCEPTION), ((int)GDK_INPUT_READ + (int)GDK_INPUT_EXCEPTION),
messageFromServer, messageFromServerGtk2,
(gpointer)(long)channel->ch_part[part].ch_fd); (gpointer)(long)channel->ch_part[part].ch_fd);
# endif # endif
}
# endif # endif
# endif # endif
} }
@ -580,6 +605,7 @@ channel_gui_unregister_one(channel_T *channel, ch_part_T part)
# ifdef FEAT_GUI_X11 # ifdef FEAT_GUI_X11
if (channel->ch_part[part].ch_inputHandler != (XtInputId)NULL) if (channel->ch_part[part].ch_inputHandler != (XtInputId)NULL)
{ {
ch_log(channel, "Unregistering part %s", part_names[part]);
XtRemoveInput(channel->ch_part[part].ch_inputHandler); XtRemoveInput(channel->ch_part[part].ch_inputHandler);
channel->ch_part[part].ch_inputHandler = (XtInputId)NULL; channel->ch_part[part].ch_inputHandler = (XtInputId)NULL;
} }
@ -587,6 +613,7 @@ channel_gui_unregister_one(channel_T *channel, ch_part_T part)
# ifdef FEAT_GUI_GTK # ifdef FEAT_GUI_GTK
if (channel->ch_part[part].ch_inputHandler != 0) if (channel->ch_part[part].ch_inputHandler != 0)
{ {
ch_log(channel, "Unregistering part %s", part_names[part]);
# if GTK_CHECK_VERSION(3,0,0) # if GTK_CHECK_VERSION(3,0,0)
g_source_remove(channel->ch_part[part].ch_inputHandler); g_source_remove(channel->ch_part[part].ch_inputHandler);
# else # else
@ -663,9 +690,9 @@ channel_open(
{ {
char *p; char *p;
/* When using host->h_addr directly ubsan warns for it to not be /* When using host->h_addr_list[0] directly ubsan warns for it to not
* aligned. First copy the pointer to aviod that. */ * be aligned. First copy the pointer to avoid that. */
memcpy(&p, &host->h_addr, sizeof(p)); memcpy(&p, &host->h_addr_list[0], sizeof(p));
memcpy((char *)&server.sin_addr, p, host->h_length); memcpy((char *)&server.sin_addr, p, host->h_length);
} }
@ -883,7 +910,7 @@ channel_open(
channel->ch_nb_close_cb = nb_close_cb; channel->ch_nb_close_cb = nb_close_cb;
channel->ch_hostname = (char *)vim_strsave((char_u *)hostname); channel->ch_hostname = (char *)vim_strsave((char_u *)hostname);
channel->ch_port = port_in; channel->ch_port = port_in;
channel->ch_to_be_closed |= (1 << PART_SOCK); channel->ch_to_be_closed |= (1U << PART_SOCK);
#ifdef FEAT_GUI #ifdef FEAT_GUI
channel_gui_register_one(channel, PART_SOCK); channel_gui_register_one(channel, PART_SOCK);
@ -979,7 +1006,8 @@ ch_close_part(channel_T *channel, ch_part_T part)
} }
*fd = INVALID_FD; *fd = INVALID_FD;
channel->ch_to_be_closed &= ~(1 << part); /* channel is closed, may want to end the job if it was the last */
channel->ch_to_be_closed &= ~(1U << part);
} }
} }
@ -990,6 +1018,12 @@ channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err)
{ {
ch_close_part(channel, PART_IN); ch_close_part(channel, PART_IN);
channel->CH_IN_FD = in; channel->CH_IN_FD = in;
# if defined(UNIX)
/* Do not end the job when all output channels are closed, wait until
* the job ended. */
if (isatty(in))
channel->ch_to_be_closed |= (1U << PART_IN);
# endif
} }
if (out != INVALID_FD) if (out != INVALID_FD)
{ {
@ -998,7 +1032,7 @@ channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err)
# endif # endif
ch_close_part(channel, PART_OUT); ch_close_part(channel, PART_OUT);
channel->CH_OUT_FD = out; channel->CH_OUT_FD = out;
channel->ch_to_be_closed |= (1 << PART_OUT); channel->ch_to_be_closed |= (1U << PART_OUT);
# if defined(FEAT_GUI) # if defined(FEAT_GUI)
channel_gui_register_one(channel, PART_OUT); channel_gui_register_one(channel, PART_OUT);
# endif # endif
@ -1010,7 +1044,7 @@ channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err)
# endif # endif
ch_close_part(channel, PART_ERR); ch_close_part(channel, PART_ERR);
channel->CH_ERR_FD = err; channel->CH_ERR_FD = err;
channel->ch_to_be_closed |= (1 << PART_ERR); channel->ch_to_be_closed |= (1U << PART_ERR);
# if defined(FEAT_GUI) # if defined(FEAT_GUI)
channel_gui_register_one(channel, PART_ERR); channel_gui_register_one(channel, PART_ERR);
# endif # endif
@ -1442,8 +1476,8 @@ channel_write_in(channel_T *channel)
ch_close_part(channel, PART_IN); ch_close_part(channel, PART_IN);
} }
else else
ch_log(channel, "Still %d more lines to write", ch_log(channel, "Still %ld more lines to write",
buf->b_ml.ml_line_count - lnum + 1); (long)(buf->b_ml.ml_line_count - lnum + 1));
} }
/* /*
@ -1536,8 +1570,8 @@ channel_write_new_lines(buf_T *buf)
else if (written > 1) else if (written > 1)
ch_log(channel, "written %d lines to channel", written); ch_log(channel, "written %d lines to channel", written);
if (lnum < buf->b_ml.ml_line_count) if (lnum < buf->b_ml.ml_line_count)
ch_log(channel, "Still %d more lines to write", ch_log(channel, "Still %ld more lines to write",
buf->b_ml.ml_line_count - lnum); (long)(buf->b_ml.ml_line_count - lnum));
in_part->ch_buf_bot = lnum; in_part->ch_buf_bot = lnum;
} }
@ -2081,7 +2115,8 @@ channel_get_json(
{ {
*rettv = item->jq_value; *rettv = item->jq_value;
if (tv->v_type == VAR_NUMBER) if (tv->v_type == VAR_NUMBER)
ch_log(channel, "Getting JSON message %d", tv->vval.v_number); ch_log(channel, "Getting JSON message %ld",
(long)tv->vval.v_number);
remove_json_node(head, item); remove_json_node(head, item);
return OK; return OK;
} }
@ -3219,7 +3254,16 @@ ch_close_part_on_error(
(int)STRLEN(DETACH_MSG_RAW), FALSE, "PUT "); (int)STRLEN(DETACH_MSG_RAW), FALSE, "PUT ");
/* When reading is not possible close this part of the channel. Don't /* When reading is not possible close this part of the channel. Don't
* close the channel yet, there may be something to read on another part. */ * close the channel yet, there may be something to read on another part.
* When stdout and stderr use the same FD we get the error only on one of
* them, also close the other. */
if (part == PART_OUT || part == PART_ERR)
{
ch_part_T other = part == PART_OUT ? PART_ERR : PART_OUT;
if (channel->ch_part[part].ch_fd == channel->ch_part[other].ch_fd)
ch_close_part(channel, other);
}
ch_close_part(channel, part); ch_close_part(channel, part);
#ifdef FEAT_GUI #ifdef FEAT_GUI
@ -4150,8 +4194,9 @@ channel_select_check(int ret_in, void *rfds_in, void *wfds_in)
if (ret > 0 && in_part->ch_fd != INVALID_FD if (ret > 0 && in_part->ch_fd != INVALID_FD
&& FD_ISSET(in_part->ch_fd, wfds)) && FD_ISSET(in_part->ch_fd, wfds))
{ {
channel_write_input(channel); /* Clear the flag first, ch_fd may change in channel_write_input(). */
FD_CLR(in_part->ch_fd, wfds); FD_CLR(in_part->ch_fd, wfds);
channel_write_input(channel);
--ret; --ret;
} }
} }
@ -4189,9 +4234,9 @@ channel_parse_messages(void)
} }
while (channel != NULL) while (channel != NULL)
{ {
if (channel->ch_to_be_closed == 0) if (channel_can_close(channel))
{ {
channel->ch_to_be_closed = (1 << PART_COUNT); channel->ch_to_be_closed = (1U << PART_COUNT);
channel_close_now(channel); channel_close_now(channel);
/* channel may have been freed, start over */ /* channel may have been freed, start over */
channel = first_channel; channel = first_channel;
@ -4746,45 +4791,109 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
{ {
if (!(supported2 & JO2_TERM_ROWS)) if (!(supported2 & JO2_TERM_ROWS))
break; break;
opt->jo_set |= JO2_TERM_ROWS; opt->jo_set2 |= JO2_TERM_ROWS;
opt->jo_term_rows = get_tv_number(item); opt->jo_term_rows = get_tv_number(item);
} }
else if (STRCMP(hi->hi_key, "term_cols") == 0) else if (STRCMP(hi->hi_key, "term_cols") == 0)
{ {
if (!(supported2 & JO2_TERM_COLS)) if (!(supported2 & JO2_TERM_COLS))
break; break;
opt->jo_set |= JO2_TERM_COLS; opt->jo_set2 |= JO2_TERM_COLS;
opt->jo_term_cols = get_tv_number(item); opt->jo_term_cols = get_tv_number(item);
} }
else if (STRCMP(hi->hi_key, "vertical") == 0) else if (STRCMP(hi->hi_key, "vertical") == 0)
{ {
if (!(supported2 & JO2_VERTICAL)) if (!(supported2 & JO2_VERTICAL))
break; break;
opt->jo_set |= JO2_VERTICAL; opt->jo_set2 |= JO2_VERTICAL;
opt->jo_vertical = get_tv_number(item); opt->jo_vertical = get_tv_number(item);
} }
else if (STRCMP(hi->hi_key, "curwin") == 0) else if (STRCMP(hi->hi_key, "curwin") == 0)
{ {
if (!(supported2 & JO2_CURWIN)) if (!(supported2 & JO2_CURWIN))
break; break;
opt->jo_set |= JO2_CURWIN; opt->jo_set2 |= JO2_CURWIN;
opt->jo_curwin = get_tv_number(item); opt->jo_curwin = get_tv_number(item);
} }
else if (STRCMP(hi->hi_key, "hidden") == 0) else if (STRCMP(hi->hi_key, "hidden") == 0)
{ {
if (!(supported2 & JO2_HIDDEN)) if (!(supported2 & JO2_HIDDEN))
break; break;
opt->jo_set |= JO2_HIDDEN; opt->jo_set2 |= JO2_HIDDEN;
opt->jo_hidden = get_tv_number(item); opt->jo_hidden = get_tv_number(item);
} }
else if (STRCMP(hi->hi_key, "norestore") == 0)
{
if (!(supported2 & JO2_NORESTORE))
break;
opt->jo_set2 |= JO2_NORESTORE;
opt->jo_term_norestore = get_tv_number(item);
}
else if (STRCMP(hi->hi_key, "term_kill") == 0)
{
if (!(supported2 & JO2_TERM_KILL))
break;
opt->jo_set2 |= JO2_TERM_KILL;
opt->jo_term_kill = get_tv_string_chk(item);
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
else if (STRCMP(hi->hi_key, "ansi_colors") == 0)
{
int n = 0;
listitem_T *li;
long_u rgb[16];
if (!(supported2 & JO2_ANSI_COLORS))
break;
if (item == NULL || item->v_type != VAR_LIST
|| item->vval.v_list == NULL)
{
EMSG2(_(e_invargval), "ansi_colors");
return FAIL;
}
li = item->vval.v_list->lv_first;
for (; li != NULL && n < 16; li = li->li_next, n++)
{
char_u *color_name;
guicolor_T guicolor;
color_name = get_tv_string_chk(&li->li_tv);
if (color_name == NULL)
return FAIL;
guicolor = GUI_GET_COLOR(color_name);
if (guicolor == INVALCOLOR)
return FAIL;
rgb[n] = GUI_MCH_GET_RGB(guicolor);
}
if (n != 16 || li != NULL)
{
EMSG2(_(e_invargval), "ansi_colors");
return FAIL;
}
opt->jo_set2 |= JO2_ANSI_COLORS;
memcpy(opt->jo_ansi_colors, rgb, sizeof(rgb));
}
# endif
#endif #endif
else if (STRCMP(hi->hi_key, "env") == 0) else if (STRCMP(hi->hi_key, "env") == 0)
{ {
if (!(supported2 & JO2_ENV)) if (!(supported2 & JO2_ENV))
break; break;
opt->jo_set |= JO2_ENV; if (item->v_type != VAR_DICT)
{
EMSG2(_(e_invargval), "env");
return FAIL;
}
opt->jo_set2 |= JO2_ENV;
opt->jo_env = item->vval.v_dict; opt->jo_env = item->vval.v_dict;
++item->vval.v_dict->dv_refcount; if (opt->jo_env != NULL)
++opt->jo_env->dv_refcount;
} }
else if (STRCMP(hi->hi_key, "cwd") == 0) else if (STRCMP(hi->hi_key, "cwd") == 0)
{ {
@ -4796,7 +4905,7 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
EMSG2(_(e_invargval), "cwd"); EMSG2(_(e_invargval), "cwd");
return FAIL; return FAIL;
} }
opt->jo_set |= JO2_CWD; opt->jo_set2 |= JO2_CWD;
} }
else if (STRCMP(hi->hi_key, "waittime") == 0) else if (STRCMP(hi->hi_key, "waittime") == 0)
{ {
@ -4927,6 +5036,8 @@ static job_T *first_job = NULL;
static void static void
job_free_contents(job_T *job) job_free_contents(job_T *job)
{ {
int i;
ch_log(job->jv_channel, "Freeing job"); ch_log(job->jv_channel, "Freeing job");
if (job->jv_channel != NULL) if (job->jv_channel != NULL)
{ {
@ -4944,6 +5055,12 @@ job_free_contents(job_T *job)
vim_free(job->jv_tty_out); vim_free(job->jv_tty_out);
vim_free(job->jv_stoponexit); vim_free(job->jv_stoponexit);
free_callback(job->jv_exit_cb, job->jv_exit_partial); free_callback(job->jv_exit_cb, job->jv_exit_partial);
if (job->jv_argv != NULL)
{
for (i = 0; job->jv_argv[i] != NULL; i++)
vim_free(job->jv_argv[i]);
vim_free(job->jv_argv);
}
} }
static void static void
@ -4996,6 +5113,15 @@ job_channel_still_useful(job_T *job)
return job->jv_channel != NULL && channel_still_useful(job->jv_channel); return job->jv_channel != NULL && channel_still_useful(job->jv_channel);
} }
/*
* Return TRUE if the channel of "job" is closeable.
*/
static int
job_channel_can_close(job_T *job)
{
return job->jv_channel != NULL && channel_can_close(job->jv_channel);
}
/* /*
* Return TRUE if the job should not be freed yet. Do not free the job when * Return TRUE if the job should not be freed yet. Do not free the job when
* it has not ended yet and there is a "stoponexit" flag, an exit callback * it has not ended yet and there is a "stoponexit" flag, an exit callback
@ -5007,6 +5133,25 @@ job_still_useful(job_T *job)
return job_need_end_check(job) || job_channel_still_useful(job); return job_need_end_check(job) || job_channel_still_useful(job);
} }
#if defined(GUI_MAY_FORK) || defined(PROTO)
/*
* Return TRUE when there is any running job that we care about.
*/
int
job_any_running()
{
job_T *job;
for (job = first_job; job != NULL; job = job->jv_next)
if (job_still_useful(job))
{
ch_log(NULL, "GUI not forking because a job is running");
return TRUE;
}
return FALSE;
}
#endif
#if !defined(USE_ARGV) || defined(PROTO) #if !defined(USE_ARGV) || defined(PROTO)
/* /*
* Escape one argument for an external command. * Escape one argument for an external command.
@ -5126,6 +5271,10 @@ job_cleanup(job_T *job)
/* Ready to cleanup the job. */ /* Ready to cleanup the job. */
job->jv_status = JOB_FINISHED; job->jv_status = JOB_FINISHED;
/* When only channel-in is kept open, close explicitly. */
if (job->jv_channel != NULL)
ch_close_part(job->jv_channel, PART_IN);
if (job->jv_exit_cb != NULL) if (job->jv_exit_cb != NULL)
{ {
typval_T argv[3]; typval_T argv[3];
@ -5330,8 +5479,9 @@ has_pending_job(void)
for (job = first_job; job != NULL; job = job->jv_next) for (job = first_job; job != NULL; job = job->jv_next)
/* Only should check if the channel has been closed, if the channel is /* Only should check if the channel has been closed, if the channel is
* open the job won't exit. */ * open the job won't exit. */
if (job->jv_status == JOB_STARTED && job->jv_exit_cb != NULL if ((job->jv_status == JOB_STARTED && !job_channel_still_useful(job))
&& !job_channel_still_useful(job)) || (job->jv_status == JOB_FINISHED
&& job_channel_can_close(job)))
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
@ -5369,18 +5519,21 @@ job_check_ended(void)
/* /*
* Create a job and return it. Implements job_start(). * Create a job and return it. Implements job_start().
* "argv_arg" is only for Unix.
* When "argv_arg" is NULL then "argvars" is used.
* The returned job has a refcount of one. * The returned job has a refcount of one.
* Returns NULL when out of memory. * Returns NULL when out of memory.
*/ */
job_T * job_T *
job_start(typval_T *argvars, jobopt_T *opt_arg) job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg)
{ {
job_T *job; job_T *job;
char_u *cmd = NULL; char_u *cmd = NULL;
#if defined(UNIX)
# define USE_ARGV
char **argv = NULL; char **argv = NULL;
int argc = 0; int argc = 0;
#if defined(UNIX)
# define USE_ARGV
int i;
#else #else
garray_T ga; garray_T ga;
#endif #endif
@ -5460,6 +5613,21 @@ job_start(typval_T *argvars, jobopt_T *opt_arg)
job_set_options(job, &opt); job_set_options(job, &opt);
#ifdef USE_ARGV
if (argv_arg != NULL)
{
/* Make a copy of argv_arg for job->jv_argv. */
for (i = 0; argv_arg[i] != NULL; i++)
argc++;
argv = (char **)alloc(sizeof(char *) * (argc + 1));
if (argv == NULL)
goto theend;
for (i = 0; i < argc; i++)
argv[i] = (char *)vim_strsave((char_u *)argv_arg[i]);
argv[argc] = NULL;
}
else
#endif
if (argvars[0].v_type == VAR_STRING) if (argvars[0].v_type == VAR_STRING)
{ {
/* Command is a string. */ /* Command is a string. */
@ -5469,11 +5637,9 @@ job_start(typval_T *argvars, jobopt_T *opt_arg)
EMSG(_(e_invarg)); EMSG(_(e_invarg));
goto theend; goto theend;
} }
#ifdef USE_ARGV
if (mch_parse_cmd(cmd, FALSE, &argv, &argc) == FAIL) if (build_argv_from_string(cmd, &argv, &argc) == FAIL)
goto theend; goto theend;
argv[argc] = NULL;
#endif
} }
else if (argvars[0].v_type != VAR_LIST else if (argvars[0].v_type != VAR_LIST
|| argvars[0].vval.v_list == NULL || argvars[0].vval.v_list == NULL
@ -5484,35 +5650,24 @@ job_start(typval_T *argvars, jobopt_T *opt_arg)
} }
else else
{ {
list_T *l = argvars[0].vval.v_list; list_T *l = argvars[0].vval.v_list;
#ifdef USE_ARGV
listitem_T *li;
char_u *s;
/* Pass argv[] to mch_call_shell(). */ if (build_argv_from_list(l, &argv, &argc) == FAIL)
argv = (char **)alloc(sizeof(char *) * (l->lv_len + 1));
if (argv == NULL)
goto theend; goto theend;
for (li = l->lv_first; li != NULL; li = li->li_next) #ifndef USE_ARGV
{
s = get_tv_string_chk(&li->li_tv);
if (s == NULL)
goto theend;
argv[argc++] = (char *)s;
}
argv[argc] = NULL;
#else
if (win32_build_cmd(l, &ga) == FAIL) if (win32_build_cmd(l, &ga) == FAIL)
goto theend; goto theend;
cmd = ga.ga_data; cmd = ga.ga_data;
#endif #endif
} }
/* Save the command used to start the job. */
job->jv_argv = argv;
#ifdef USE_ARGV #ifdef USE_ARGV
if (ch_log_active()) if (ch_log_active())
{ {
garray_T ga; garray_T ga;
int i;
ga_init2(&ga, (int)sizeof(char), 200); ga_init2(&ga, (int)sizeof(char), 200);
for (i = 0; i < argc; ++i) for (i = 0; i < argc; ++i)
@ -5535,11 +5690,11 @@ job_start(typval_T *argvars, jobopt_T *opt_arg)
channel_write_in(job->jv_channel); channel_write_in(job->jv_channel);
theend: theend:
#ifdef USE_ARGV #ifndef USE_ARGV
vim_free(argv);
#else
vim_free(ga.ga_data); vim_free(ga.ga_data);
#endif #endif
if (argv != job->jv_argv)
vim_free(argv);
free_job_options(&opt); free_job_options(&opt);
return job; return job;
} }
@ -5575,6 +5730,8 @@ job_info(job_T *job, dict_T *dict)
{ {
dictitem_T *item; dictitem_T *item;
varnumber_T nr; varnumber_T nr;
list_T *l;
int i;
dict_add_nr_str(dict, "status", 0L, (char_u *)job_status(job)); dict_add_nr_str(dict, "status", 0L, (char_u *)job_status(job));
@ -5603,6 +5760,34 @@ job_info(job_T *job, dict_T *dict)
dict_add_nr_str(dict, "exitval", job->jv_exitval, NULL); dict_add_nr_str(dict, "exitval", job->jv_exitval, NULL);
dict_add_nr_str(dict, "exit_cb", 0L, job->jv_exit_cb); dict_add_nr_str(dict, "exit_cb", 0L, job->jv_exit_cb);
dict_add_nr_str(dict, "stoponexit", 0L, job->jv_stoponexit); dict_add_nr_str(dict, "stoponexit", 0L, job->jv_stoponexit);
l = list_alloc();
if (l != NULL)
{
dict_add_list(dict, "cmd", l);
if (job->jv_argv != NULL)
for (i = 0; job->jv_argv[i] != NULL; i++)
list_append_string(l, (char_u *)job->jv_argv[i], -1);
}
}
/*
* Implementation of job_info() to return info for all jobs.
*/
void
job_info_all(list_T *l)
{
job_T *job;
typval_T tv;
for (job = first_job; job != NULL; job = job->jv_next)
{
tv.v_type = VAR_JOB;
tv.vval.v_job = job;
if (list_append_tv(l, &tv) != OK)
return;
}
} }
/* /*

View File

@ -1417,7 +1417,12 @@ getvcol_nolist(pos_T *posp)
colnr_T vcol; colnr_T vcol;
curwin->w_p_list = FALSE; curwin->w_p_list = FALSE;
getvcol(curwin, posp, NULL, &vcol, NULL); #ifdef FEAT_VIRTUALEDIT
if (posp->coladd)
getvvcol(curwin, posp, NULL, &vcol, NULL);
else
#endif
getvcol(curwin, posp, NULL, &vcol, NULL);
curwin->w_p_list = list_save; curwin->w_p_list = list_save;
return vcol; return vcol;
} }
@ -1787,7 +1792,6 @@ skiptowhite(char_u *p)
return p; return p;
} }
#if defined(FEAT_LISTCMDS) || defined(FEAT_SIGNS) || defined(PROTO)
/* /*
* skiptowhite_esc: Like skiptowhite(), but also skip escaped chars * skiptowhite_esc: Like skiptowhite(), but also skip escaped chars
*/ */
@ -1802,7 +1806,6 @@ skiptowhite_esc(char_u *p)
} }
return p; return p;
} }
#endif
/* /*
* Getdigits: Get a number from a string and skip over it. * Getdigits: Get a number from a string and skip over it.

View File

@ -47,8 +47,6 @@ PYTHON_SRC = @PYTHON_SRC@
PYTHON_OBJ = @PYTHON_OBJ@ PYTHON_OBJ = @PYTHON_OBJ@
PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CFLAGS = @PYTHON_CFLAGS@
PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_CONFDIR = @PYTHON_CONFDIR@
PYTHON_GETPATH_CFLAGS = @PYTHON_GETPATH_CFLAGS@
TCL = @vi_cv_path_tcl@ TCL = @vi_cv_path_tcl@
TCL_SRC = @TCL_SRC@ TCL_SRC = @TCL_SRC@

View File

@ -211,6 +211,7 @@
#undef HAVE_TOWLOWER #undef HAVE_TOWLOWER
#undef HAVE_TOWUPPER #undef HAVE_TOWUPPER
#undef HAVE_ISWUPPER #undef HAVE_ISWUPPER
#undef HAVE_UNSETENV
#undef HAVE_USLEEP #undef HAVE_USLEEP
#undef HAVE_UTIME #undef HAVE_UTIME
#undef HAVE_BIND_TEXTDOMAIN_CODESET #undef HAVE_BIND_TEXTDOMAIN_CODESET

View File

@ -65,14 +65,11 @@ PYTHON_SRC = @PYTHON_SRC@
PYTHON_OBJ = @PYTHON_OBJ@ PYTHON_OBJ = @PYTHON_OBJ@
PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_CFLAGS = @PYTHON_CFLAGS@
PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_CONFDIR = @PYTHON_CONFDIR@
PYTHON_GETPATH_CFLAGS = @PYTHON_GETPATH_CFLAGS@
PYTHON3_SRC = @PYTHON3_SRC@ PYTHON3_SRC = @PYTHON3_SRC@
PYTHON3_OBJ = @PYTHON3_OBJ@ PYTHON3_OBJ = @PYTHON3_OBJ@
PYTHON3_CFLAGS = @PYTHON3_CFLAGS@ PYTHON3_CFLAGS = @PYTHON3_CFLAGS@
PYTHON3_LIBS = @PYTHON3_LIBS@ PYTHON3_LIBS = @PYTHON3_LIBS@
PYTHON3_CONFDIR = @PYTHON3_CONFDIR@
TCL = @vi_cv_path_tcl@ TCL = @vi_cv_path_tcl@
TCL_SRC = @TCL_SRC@ TCL_SRC = @TCL_SRC@

View File

@ -11,7 +11,7 @@ AC_DEFINE(UNIX)
AC_PROG_MAKE_SET AC_PROG_MAKE_SET
dnl Checks for programs. dnl Checks for programs.
AC_PROG_CC dnl required by almost everything AC_PROG_CC_C99 dnl required by almost everything
AC_PROG_CPP dnl required by header file checks AC_PROG_CPP dnl required by header file checks
AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
AC_PROG_FGREP dnl finds working grep -F AC_PROG_FGREP dnl finds working grep -F
@ -29,6 +29,39 @@ dnl in autoconf needs it, where it uses STDC_HEADERS.
AC_HEADER_STDC AC_HEADER_STDC
AC_HEADER_SYS_WAIT AC_HEADER_SYS_WAIT
dnl Check that the C99 features that Vim uses are supported:
if test x"$ac_cv_prog_cc_c99" != xno; then
dnl If the compiler doesn't explicitly support C99, then check
dnl for the specific features Vim uses
AC_TYPE_LONG_LONG_INT
if test "$ac_cv_type_long_long_int" = no; then
AC_MSG_FAILURE([Compiler does not support long long int])
fi
AC_MSG_CHECKING([if the compiler supports trailing commas])
trailing_commas=no
AC_TRY_COMPILE([], [
enum {
one,
};],
[AC_MSG_RESULT(yes); trailing_commas=yes],
[AC_MSG_RESULT(no)])
if test "$trailing_commas" = no; then
AC_MSG_FAILURE([Compiler does not support trailing comma in enum])
fi
AC_MSG_CHECKING([if the compiler supports C++ comments])
slash_comments=no
AC_TRY_COMPILE([],
[// C++ comments?],
[AC_MSG_RESULT(yes); slash_comments=yes],
[AC_MSG_RESULT(no)])
if test "$slash_comments" = no; then
AC_MSG_FAILURE([Compiler does not support C++ comments])
fi
fi
dnl Check for the flag that fails if stuff are missing. dnl Check for the flag that fails if stuff are missing.
AC_MSG_CHECKING(--enable-fail-if-missing argument) AC_MSG_CHECKING(--enable-fail-if-missing argument)
@ -1117,7 +1150,15 @@ if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; th
fi fi
dnl -- find the python executable dnl -- find the python executable
AC_PATH_PROGS(vi_cv_path_python, python2 python) AC_MSG_CHECKING(--with-python-command argument)
AC_SUBST(vi_cv_path_python)
AC_ARG_WITH(python-command, [ --with-python-command=NAME name of the Python 2 command (default: python2 or python)],
vi_cv_path_python="$withval"; AC_MSG_RESULT($vi_cv_path_python),
AC_MSG_RESULT(no))
if test "X$vi_cv_path_python" = "X"; then
AC_PATH_PROGS(vi_cv_path_python, python2 python)
fi
if test "X$vi_cv_path_python" != "X"; then if test "X$vi_cv_path_python" != "X"; then
dnl -- get its version number dnl -- get its version number
@ -1156,8 +1197,8 @@ if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; th
dnl -- where the Python implementation library archives are dnl -- where the Python implementation library archives are
AC_ARG_WITH(python-config-dir, AC_ARG_WITH(python-config-dir,
[ --with-python-config-dir=PATH Python's config directory], [ --with-python-config-dir=PATH Python's config directory (deprecated)],
[ vi_cv_path_python_conf="${withval}" ] ) [ vi_cv_path_python_conf="${withval}"; have_python_config_dir=1 ] )
AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf, AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
[ [
@ -1211,11 +1252,7 @@ eof
vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python" vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
fi fi
else else
if test "${vi_cv_var_python_version}" = "1.4"; then vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
else
vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
fi
dnl -- Check if the path contained in python_LINKFORSHARED is dnl -- Check if the path contained in python_LINKFORSHARED is
dnl usable for vim build. If not, make and try other dnl usable for vim build. If not, make and try other
dnl candidates. dnl candidates.
@ -1251,16 +1288,17 @@ eof
PYTHON_LIBS="${vi_cv_path_python_plibs}" PYTHON_LIBS="${vi_cv_path_python_plibs}"
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
else else
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
fi
if test "X$have_python_config_dir" = "X1" -a "$enable_pythoninterp" = "dynamic"; then
dnl Define PYTHON_HOME if --with-python-config-dir was used
PYTHON_CFLAGS="${PYTHON_CFLAGS} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
fi fi
PYTHON_SRC="if_python.c" PYTHON_SRC="if_python.c"
PYTHON_OBJ="objects/if_python.o" PYTHON_OBJ="objects/if_python.o"
if test "${vi_cv_var_python_version}" = "1.4"; then
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
fi
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
dnl On FreeBSD linking with "-pthread" is required to use threads. dnl On FreeBSD linking with "-pthread" is required to use threads.
dnl _THREAD_SAFE must be used for compiling then. dnl _THREAD_SAFE must be used for compiling then.
@ -1329,9 +1367,7 @@ eof
fi fi
fi fi
AC_SUBST(PYTHON_CONFDIR)
AC_SUBST(PYTHON_LIBS) AC_SUBST(PYTHON_LIBS)
AC_SUBST(PYTHON_GETPATH_CFLAGS)
AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_CFLAGS)
AC_SUBST(PYTHON_SRC) AC_SUBST(PYTHON_SRC)
AC_SUBST(PYTHON_OBJ) AC_SUBST(PYTHON_OBJ)
@ -1348,7 +1384,15 @@ if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic";
fi fi
dnl -- find the python3 executable dnl -- find the python3 executable
AC_PATH_PROGS(vi_cv_path_python3, python3 python) AC_MSG_CHECKING(--with-python3-command argument)
AC_SUBST(vi_cv_path_python3)
AC_ARG_WITH(python3-command, [ --with-python3-command=NAME name of the Python 3 command (default: python3 or python)],
vi_cv_path_python3="$withval"; AC_MSG_RESULT($vi_cv_path_python3),
AC_MSG_RESULT(no))
if test "X$vi_cv_path_python3" = "X"; then
AC_PATH_PROGS(vi_cv_path_python3, python3 python)
fi
if test "X$vi_cv_path_python3" != "X"; then if test "X$vi_cv_path_python3" != "X"; then
dnl -- get its version number dnl -- get its version number
@ -1398,8 +1442,8 @@ if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic";
dnl -- where the Python implementation library archives are dnl -- where the Python implementation library archives are
AC_ARG_WITH(python3-config-dir, AC_ARG_WITH(python3-config-dir,
[ --with-python3-config-dir=PATH Python's config directory], [ --with-python3-config-dir=PATH Python's config directory (deprecated)],
[ vi_cv_path_python3_conf="${withval}" ] ) [ vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1 ] )
AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
[ [
@ -1460,10 +1504,14 @@ eof
PYTHON3_LIBS="${vi_cv_path_python3_plibs}" PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
else else
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
fi fi
if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
dnl Define PYTHON3_HOME if --with-python-config-dir was used
PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
fi
PYTHON3_SRC="if_python3.c" PYTHON3_SRC="if_python3.c"
PYTHON3_OBJ="objects/if_python3.o" PYTHON3_OBJ="objects/if_python3.o"
@ -1533,7 +1581,6 @@ eof
fi fi
fi fi
AC_SUBST(PYTHON3_CONFDIR)
AC_SUBST(PYTHON3_LIBS) AC_SUBST(PYTHON3_LIBS)
AC_SUBST(PYTHON3_CFLAGS) AC_SUBST(PYTHON3_CFLAGS)
AC_SUBST(PYTHON3_SRC) AC_SUBST(PYTHON3_SRC)
@ -3662,7 +3709,7 @@ AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \
getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \ sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \
strnicmp strpbrk strtol tgetent towlower towupper iswupper \ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
usleep utime utimes mblen ftruncate) usleep utime utimes mblen ftruncate unsetenv)
AC_FUNC_FSEEKO AC_FUNC_FSEEKO
dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
@ -4373,7 +4420,7 @@ dnl (e.g. ino_t and off_t), all of Vim's modules must be compiled with a
dnl consistent value. It's therefore safest to force the use of the define dnl consistent value. It's therefore safest to force the use of the define
dnl if it's present in any of the *_CFLAGS variables. dnl if it's present in any of the *_CFLAGS variables.
AC_MSG_CHECKING(whether we need to force -D_FILE_OFFSET_BITS=64) AC_MSG_CHECKING(whether we need to force -D_FILE_OFFSET_BITS=64)
if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_GETPATH_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(_FILE_OFFSET_BITS, 64) AC_DEFINE(_FILE_OFFSET_BITS, 64)
else else

View File

@ -1,7 +1,7 @@
# Python script to get both the data and resource fork from a BinHex encoded # Python script to get both the data and resource fork from a BinHex encoded
# file. # file.
# Author: MURAOKA Taro <koron.kaoriya@gmail.com> # Author: MURAOKA Taro <koron.kaoriya@gmail.com>
# Last Change: 2012 Jun 29 # Last Change: 2018 Mar 27
# #
# Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com> # Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com>
# THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. # THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
@ -15,11 +15,13 @@ info = conv.FInfo
out = conv.FName out = conv.FName
out_data = out out_data = out
out_rsrc = out + '.rsrcfork' out_rsrc = out + '.rsrcfork'
#print 'out_rsrc=' + out_rsrc
print 'In file: ' + input # This uses the print statement on Python 2, print function on Python 3.
#print('out_rsrc=' + out_rsrc)
print('In file: ' + input)
outfile = open(out_data, 'wb') outfile = open(out_data, 'wb')
print ' Out data fork: ' + out_data print(' Out data fork: ' + out_data)
while 1: while 1:
d = conv.read(128000) d = conv.read(128000)
if not d: break if not d: break
@ -29,7 +31,7 @@ conv.close_data()
d = conv.read_rsrc(128000) d = conv.read_rsrc(128000)
if d: if d:
print ' Out rsrc fork: ' + out_rsrc print(' Out rsrc fork: ' + out_rsrc)
outfile = open(out_rsrc, 'wb') outfile = open(out_rsrc, 'wb')
outfile.write(d) outfile.write(d)
while 1: while 1:

View File

@ -909,7 +909,8 @@ ex_diffpatch(exarg_T *eap)
if (cmdmod.browse) if (cmdmod.browse)
{ {
browseFile = do_browse(0, (char_u *)_("Patch file"), browseFile = do_browse(0, (char_u *)_("Patch file"),
eap->arg, NULL, NULL, BROWSE_FILTER_ALL_FILES, NULL); eap->arg, NULL, NULL,
(char_u *)_(BROWSE_FILTER_ALL_FILES), NULL);
if (browseFile == NULL) if (browseFile == NULL)
return; /* operation cancelled */ return; /* operation cancelled */
eap->arg = browseFile; eap->arg = browseFile;

View File

@ -23,7 +23,14 @@
#define GVIMEXT32_PATH "GvimExt32\\gvimext.dll" #define GVIMEXT32_PATH "GvimExt32\\gvimext.dll"
/* Macro to do an error check I was typing over and over */ /* Macro to do an error check I was typing over and over */
#define CHECK_REG_ERROR(code) if (code != ERROR_SUCCESS) { printf("%ld error number: %ld\n", (long)__LINE__, (long)code); return 1; } #define CHECK_REG_ERROR(code) \
do { \
if (code != ERROR_SUCCESS) \
{ \
printf("%ld error number: %ld\n", (long)__LINE__, (long)code); \
return 1; \
} \
} while (0)
int has_vim = 0; /* installable vim.exe exists */ int has_vim = 0; /* installable vim.exe exists */
int has_gvim = 0; /* installable gvim.exe exists */ int has_gvim = 0; /* installable gvim.exe exists */
@ -1190,13 +1197,17 @@ install_vimrc(int idx)
fprintf(fd, " let opt = '-a --binary '\n"); fprintf(fd, " let opt = '-a --binary '\n");
fprintf(fd, " if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif\n"); fprintf(fd, " if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif\n");
fprintf(fd, " if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif\n"); fprintf(fd, " if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif\n");
/* Use quotes only when needed, they may cause trouble. */ /* Use quotes only when needed, they may cause trouble.
* Always escape "!". */
fprintf(fd, " let arg1 = v:fname_in\n"); fprintf(fd, " let arg1 = v:fname_in\n");
fprintf(fd, " if arg1 =~ ' ' | let arg1 = '\"' . arg1 . '\"' | endif\n"); fprintf(fd, " if arg1 =~ ' ' | let arg1 = '\"' . arg1 . '\"' | endif\n");
fprintf(fd, " let arg1 = substitute(arg1, '!', '\\!', 'g')\n");
fprintf(fd, " let arg2 = v:fname_new\n"); fprintf(fd, " let arg2 = v:fname_new\n");
fprintf(fd, " if arg2 =~ ' ' | let arg2 = '\"' . arg2 . '\"' | endif\n"); fprintf(fd, " if arg2 =~ ' ' | let arg2 = '\"' . arg2 . '\"' | endif\n");
fprintf(fd, " let arg2 = substitute(arg2, '!', '\\!', 'g')\n");
fprintf(fd, " let arg3 = v:fname_out\n"); fprintf(fd, " let arg3 = v:fname_out\n");
fprintf(fd, " if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n"); fprintf(fd, " if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n");
fprintf(fd, " let arg3 = substitute(arg3, '!', '\\!', 'g')\n");
/* If the path has a space: When using cmd.exe (Win NT/2000/XP) put /* If the path has a space: When using cmd.exe (Win NT/2000/XP) put
* quotes around the diff command and rely on the default value of * quotes around the diff command and rely on the default value of
@ -1218,6 +1229,7 @@ install_vimrc(int idx)
fprintf(fd, " else\n"); fprintf(fd, " else\n");
fprintf(fd, " let cmd = $VIMRUNTIME . '\\diff'\n"); fprintf(fd, " let cmd = $VIMRUNTIME . '\\diff'\n");
fprintf(fd, " endif\n"); fprintf(fd, " endif\n");
fprintf(fd, " let cmd = substitute(cmd, '!', '\\!', 'g')\n");
fprintf(fd, " silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3\n"); fprintf(fd, " silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3\n");
fprintf(fd, " if exists('l:shxq_sav')\n"); fprintf(fd, " if exists('l:shxq_sav')\n");
fprintf(fd, " let &shellxquote=l:shxq_sav\n"); fprintf(fd, " let &shellxquote=l:shxq_sav\n");

View File

@ -431,7 +431,7 @@ edit(
#ifdef FEAT_CONCEAL #ifdef FEAT_CONCEAL
/* Check if the cursor line needs redrawing before changing State. If /* Check if the cursor line needs redrawing before changing State. If
* 'concealcursor' is "n" it needs to be redrawn without concealing. */ * 'concealcursor' is "n" it needs to be redrawn without concealing. */
conceal_check_cursur_line(); conceal_check_cursor_line();
#endif #endif
#ifdef FEAT_MOUSE #ifdef FEAT_MOUSE
@ -1374,7 +1374,7 @@ doESCkey:
goto doESCkey; goto doESCkey;
} }
#endif #endif
if (ins_eol(c) && !p_im) if (ins_eol(c) == FAIL && !p_im)
goto doESCkey; /* out of memory */ goto doESCkey; /* out of memory */
auto_format(FALSE, FALSE); auto_format(FALSE, FALSE);
inserted_space = FALSE; inserted_space = FALSE;
@ -3656,7 +3656,9 @@ ins_compl_set_original_text(char_u *str)
{ {
char_u *p; char_u *p;
/* Replace the original text entry. */ /* Replace the original text entry.
* The ORIGINAL_TEXT flag is either at the first item or might possibly be
* at the last item for backward completion */
if (compl_first_match->cp_flags & ORIGINAL_TEXT) /* safety check */ if (compl_first_match->cp_flags & ORIGINAL_TEXT) /* safety check */
{ {
p = vim_strsave(str); p = vim_strsave(str);
@ -3666,6 +3668,16 @@ ins_compl_set_original_text(char_u *str)
compl_first_match->cp_str = p; compl_first_match->cp_str = p;
} }
} }
else if (compl_first_match->cp_prev != NULL
&& (compl_first_match->cp_prev->cp_flags & ORIGINAL_TEXT))
{
p = vim_strsave(str);
if (p != NULL)
{
vim_free(compl_first_match->cp_prev->cp_str);
compl_first_match->cp_prev->cp_str = p;
}
}
} }
/* /*
@ -6173,6 +6185,8 @@ insertchar(
* 'paste' is set).. * 'paste' is set)..
* Don't do this when there an InsertCharPre autocommand is defined, * Don't do this when there an InsertCharPre autocommand is defined,
* because we need to fire the event for every character. * because we need to fire the event for every character.
* Do the check for InsertCharPre before the call to vpeekc() because the
* InsertCharPre autocommand could change the input buffer.
*/ */
#ifdef USE_ON_FLY_SCROLL #ifdef USE_ON_FLY_SCROLL
dont_scroll = FALSE; /* allow scrolling here */ dont_scroll = FALSE; /* allow scrolling here */
@ -6182,6 +6196,7 @@ insertchar(
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
&& (!has_mbyte || (*mb_char2len)(c) == 1) && (!has_mbyte || (*mb_char2len)(c) == 1)
#endif #endif
&& !has_insertcharpre()
&& vpeekc() != NUL && vpeekc() != NUL
&& !(State & REPLACE_FLAG) && !(State & REPLACE_FLAG)
#ifdef FEAT_CINDENT #ifdef FEAT_CINDENT
@ -6190,7 +6205,7 @@ insertchar(
#ifdef FEAT_RIGHTLEFT #ifdef FEAT_RIGHTLEFT
&& !p_ri && !p_ri
#endif #endif
&& !has_insertcharpre()) )
{ {
#define INPUT_BUFLEN 100 #define INPUT_BUFLEN 100
char_u buf[INPUT_BUFLEN + 1]; char_u buf[INPUT_BUFLEN + 1];
@ -8907,7 +8922,17 @@ ins_del(void)
|| do_join(2, FALSE, TRUE, FALSE, FALSE) == FAIL) || do_join(2, FALSE, TRUE, FALSE, FALSE) == FAIL)
vim_beep(BO_BS); vim_beep(BO_BS);
else else
{
curwin->w_cursor.col = temp; curwin->w_cursor.col = temp;
#ifdef FEAT_VREPLACE
/* Adjust orig_line_count in case more lines have been deleted than
* have been added. That makes sure, that open_line() later
* can access all buffer lines correctly */
if (State & VREPLACE_FLAG &&
orig_line_count > curbuf->b_ml.ml_line_count)
orig_line_count = curbuf->b_ml.ml_line_count;
#endif
}
} }
else if (del_char(FALSE) == FAIL) /* delete char under cursor */ else if (del_char(FALSE) == FAIL) /* delete char under cursor */
vim_beep(BO_BS); vim_beep(BO_BS);
@ -10179,7 +10204,7 @@ ins_tab(void)
/* /*
* Handle CR or NL in insert mode. * Handle CR or NL in insert mode.
* Return TRUE when out of memory or can't undo. * Return FAIL when out of memory or can't undo.
*/ */
static int static int
ins_eol(int c) ins_eol(int c)
@ -10187,9 +10212,9 @@ ins_eol(int c)
int i; int i;
if (echeck_abbr(c + ABBR_OFF)) if (echeck_abbr(c + ABBR_OFF))
return FALSE; return OK;
if (stop_arrow() == FAIL) if (stop_arrow() == FAIL)
return TRUE; return FAIL;
undisplay_dollar(); undisplay_dollar();
/* /*
@ -10244,7 +10269,7 @@ ins_eol(int c)
foldOpenCursor(); foldOpenCursor();
#endif #endif
return (!i); return i;
} }
#ifdef FEAT_DIGRAPHS #ifdef FEAT_DIGRAPHS

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