Compare commits

...

160 Commits

Author SHA1 Message Date
Bram Moolenaar
2aeaf3fc01 patch 8.0.0756: cannot build libvterm with MSVC
Problem:    Cannot build libvterm with MSVC.
Solution:   Add an MSVC Makefile to libvterm. (Yasuhiro Matsumoto, closes
            #1865)
2017-07-23 17:11:15 +02:00
Bram Moolenaar
26af85d97b patch 8.0.0755: terminal window does not have colors in the GUI
Problem:    Terminal window does not have colors in the GUI.
Solution:   Lookup the GUI color.
2017-07-23 16:45:10 +02:00
Bram Moolenaar
eeac677886 patch 8.0.0754: terminal window does not support colors
Problem:    Terminal window does not support colors.
Solution:   Lookup the color attribute.
2017-07-23 15:48:37 +02:00
Bram Moolenaar
b13501f7da patch 8.0.0753: no size reports to a job running in a terminal
Problem:    A job running in a terminal does not get notified of changes in
            the terminal size.
Solution:   Use ioctl() and SIGWINCH to report the terminal size.
2017-07-22 22:32:56 +02:00
Bram Moolenaar
d7d3cbedb3 patch 8.0.0752: build fails on MS-Windows
Problem:    Build fails on MS-Windows.
Solution:   Change #ifdef for set_color_count().
2017-07-22 21:15:42 +02:00
Bram Moolenaar
613fe7ad2b patch 8.0.0751: OpenPTY missing with some combination of features
Problem:    OpenPTY missing with some combination of features. (Kazunobu
            Kuriyama)
Solution:   Adjust #ifdef.  Also include pty.pro when needed.
2017-07-22 21:11:53 +02:00
Bram Moolenaar
6ed8069c79 patch 8.0.0750: OpenPTY missing in non-GUI build
Problem:    OpenPTY missing in non-GUI build.
Solution:   Always include pty.c, add an #ifdef to skip over the contents.
2017-07-22 20:53:21 +02:00
Bram Moolenaar
816e7660e1 patch 8.0.0749: some unicode digraphs are hard to remember
Problem:    Some unicode digraphs are hard to remember.
Solution:   Add alternatives with a backtick. (Chris Harding, closes #1861)
2017-07-22 20:42:04 +02:00
Bram Moolenaar
b7a8dfeb49 patch 8.0.0748: running Vim in terminal window doesn't use the right colors
Problem:    When running Vim in a terminal window it does not detect the right
            number of colors available.
Solution:   Detect the version string that libvterm returns.  Pass the number
            of colors in $COLORS.
2017-07-22 20:33:05 +02:00
Bram Moolenaar
e173fd0972 patch 8.0.0747: :terminal without an argument doesn't work
Problem:    :terminal without an argument doesn't work.
Solution:   Use the 'shell' option. (Yasuhiro Matsumoto, closes #1860)
2017-07-22 19:03:32 +02:00
Bram Moolenaar
61a6605ea1 patch 8.0.0746: when :term fails the job is not properly cleaned up
Problem:    When :term fails the job is not properly cleaned up.
Solution:   Free the terminal. Handle a job that failed to start. (closes
            #1858)
2017-07-22 18:39:00 +02:00
Bram Moolenaar
9f1f49b839 patch 8.0.0745: multi-byte characters in a terminal don't display well
Problem:    multi-byte characters in a terminal window are not displayed
            properly.
Solution:   Set the unused screen characters. (Yasuhiro Matsumoto, closes
            #1857)
2017-07-22 18:14:17 +02:00
Bram Moolenaar
5a1feb8091 patch 8.0.0744: terminal window does not use a pty
Problem:    A terminal window uses pipes instead of a pty.
Solution:   Add pty support.
2017-07-22 18:04:08 +02:00
Bram Moolenaar
825680f5f4 patch 8.0.0743: the 'termsize' option can be set to an invalid value
Problem:    The 'termsize' option can be set to an invalid value.
Solution:   Check the 'termsize' option to be valid.
2017-07-22 17:04:02 +02:00
Bram Moolenaar
8f84c3a866 patch 8.0.0742: terminal feature does not work on MS-Windows
Problem:    Terminal feature does not work on MS-Windows.
Solution:   Use libvterm and libwinpty on MS-Windows. (Yasuhiro Matsumoto)
2017-07-22 16:14:44 +02:00
Bram Moolenaar
5f7e7bdcf8 patch 8.0.0741: cannot build with HPUX
Problem:    Cannot build with HPUX.
Solution:   Rename envbuf_TERM to envbuf_Term. (John Marriott)
2017-07-22 14:08:43 +02:00
Bram Moolenaar
e906ae85b2 patch 8.0.0740: cannot resize a terminal window by the command
Problem:    Cannot resize a terminal window by the command running in it.
Solution:   Add support for the window size escape sequence.  Make BS work.
2017-07-21 21:10:01 +02:00
Bram Moolenaar
58556cd0e5 patch 8.0.0739: terminal resizing doesn't work well.
Problem:    Terminal resizing doesn't work well.
Solution:   Resize the terminal to the Vim window and the other way around.
            Avoid mapping typed keys.  Set the environment properly.
2017-07-20 23:04:46 +02:00
Bram Moolenaar
e825d8b0a4 patch 8.0.0738: cannot use the mouse to resize a terminal window
Problem:    Cannot use the mouse to resize window while the focus is in a
            terminal window.
Solution:   Recognize nice mouse events in the terminal window.  A few more
            fixes for the terminal window.
2017-07-19 23:20:19 +02:00
Bram Moolenaar
cdb7e1b7f9 patch 8.0.0737: crash when X11 selection is very big
Problem:    Crash when X11 selection is very big.
Solution:   Use static items instead of allocating them.  Add callbacks.
            (Ozaki Kiichi)
2017-07-19 19:55:58 +02:00
Bram Moolenaar
04f62f881c patch 8.0.0736: OptionSet not triggered when entering diff mode
Problem:    The OptionSet autocommand event is not triggered when entering
            diff mode.
Solution:   use set_option_value() instead of setting the option directly.
            Change the tests from old to new style. (Christian Brabandt)
2017-07-19 18:18:39 +02:00
Bram Moolenaar
a8788f4d0b patch 8.0.0735: no indication that the quickfix window/buffer changed
Problem:    There is no way to notice that the quickfix window contents has
            changed.
Solution:   Increment b:changedtick when updating the quickfix window.
            (Yegappan Lakshmanan)
2017-07-19 17:06:20 +02:00
Bram Moolenaar
bf92e3a371 Update translations. 2017-07-19 14:59:34 +02:00
Bram Moolenaar
7f93703149 patch 8.0.0734: the script to check translations can be improved
Problem:    The script to check translations can be improved.
Solution:   Restore the view when no errors are found.  Check for matching
            line break at the end of the message. (Christian Brabandt)
2017-07-19 14:34:42 +02:00
Bram Moolenaar
a7df8c70c8 patch 8.0.0733: can only add entries to one list in the quickfix stack
Problem:    Can only add entries to one list in the quickfix stack.
Solution:   Move state variables from qf_list_T to qf_list_T. (Yegappan
            Lakshmanan)
2017-07-19 13:23:06 +02:00
Bram Moolenaar
80dd3f9d41 patch 8.0.0732: when updating a buffer modeless selection is lost
Problem:    When updating a buffer for a callback the modeless selection is
            lost.
Solution:   Do not insert or delete screen lines when redrawing for a callback
            and there is a modeless selection.
2017-07-19 12:51:52 +02:00
Bram Moolenaar
4fc63505d3 patch 8.0.0731: cannot build the terminal feature on MS-Windows
Problem:    Cannot build the terminal feature on MS-Windows.
Solution:   Add the Makefile changes. (Yasuhiro Matsumoto, closes #1851)
2017-07-19 11:28:17 +02:00
Bram Moolenaar
8c0095c59a patch 8.0.0730: terminal feature only supports Unix-like systems
Problem:    Terminal feature only supports Unix-like systems.
Solution:   Prepare for adding an MS-Windows implementaiton.
2017-07-18 22:53:21 +02:00
Bram Moolenaar
8008b6318d patch 8.0.0729: the help for the terminal configure option is wrong
Problem:    The help for the terminal configure option is wrong.
Solution:   Change "Disable" to "Enable". (E Kawashima, closes #1849)
            Improve alignment.
2017-07-18 21:33:20 +02:00
Bram Moolenaar
96ca27a0ee patch 8.0.0728: the terminal structure is never freed
Problem:    The terminal structure is never freed.
Solution:   Free the structure and unreference what it contains.
2017-07-17 23:20:24 +02:00
Bram Moolenaar
60d0e97497 patch 8.0.0727: message about what register to yank into is not translated
Problem:    Message about what register to yank into is not translated.
            (LemonBoy)
Solution:   Add _().
2017-07-16 20:54:34 +02:00
Bram Moolenaar
4d2ba822fd patch 8.0.0726: translations cleanup script is too conservative
Problem:    Translations cleanup script is too conservative.
Solution:   Also delete untranslated messages.
2017-07-16 20:32:25 +02:00
Bram Moolenaar
938783d0ab patch 8.0.0725: a terminal window does not handle keyboard input
Problem:    A terminal window does not handle keyboard input.
Solution:   Add terminal_loop().  ":term bash -i" sort of works now.
2017-07-16 20:13:26 +02:00
Bram Moolenaar
e45deb7997 patch 8.0.0724: the message for yanking doesn't indicate the register
Problem:    The message for yanking doesn't indicate the register.
Solution:   Show the register name in the "N lines yanked" message. (Lemonboy,
            closes #1803, closes #1809)
2017-07-16 17:56:16 +02:00
Bram Moolenaar
9b50bba643 patch 8.0.0723: arglist test fails if file name case is ignored
Problem:    Arglist test fails if file name case is ignored.
Solution:   Wipe existing buffers, check for fname_case property.
2017-07-16 16:42:13 +02:00
Bram Moolenaar
c9041079a1 patch 8.0.0722: screen is messed by timer up at inputlist() prompt
Problem:    Screen is messed by timer up at inputlist() prompt.
Solution:   Set state to ASKMORE. (closes #1843)
2017-07-16 15:48:46 +02:00
Bram Moolenaar
90305c66a8 patch 8.0.0721: :argedit can only have one argument
Problem:    :argedit can only have one argument.
Solution:   Allow for multiple arguments. (Christian Brabandt)
2017-07-16 15:31:17 +02:00
Bram Moolenaar
6a77d2667e patch 8.0.0720: unfinished mapping not displayed when running timer
Problem:    Unfinished mapping not displayed when running timer.
Solution:   Also use the extra_char while waiting for a mapping and digraph.
            (closes #1844)
2017-07-16 15:24:01 +02:00
Bram Moolenaar
c0aa482a5a patch 8.0.0719: build failure without +terminal feature
Problem:    Build failure without +terminal feature.
Solution:   Add #ifdefs.
2017-07-16 14:04:29 +02:00
Bram Moolenaar
cb8bbe9bf3 patch 8.0.0718: output of job in terminal is not displayed
Problem:    Output of job in terminal is not displayed.
Solution:   Connect the job output to the terminal.
2017-07-16 13:48:22 +02:00
Bram Moolenaar
26e8558e74 patch 8.0.0717: terminal feature precence unclear
Problem:    Terminal feature not included in :version output.
Solution:   Add +terminal or -terminal.
2017-07-15 20:05:54 +02:00
Bram Moolenaar
c4da113ef9 patch 8.0.0716: not easy to start Vim cleanly
Problem:    Not easy to start Vim cleanly without changing the viminfo file.
            Not possible to know whether the -i command line flag was used.
Solution:   Add the --clean command line argument.  Add the 'viminfofile'
            option.  Add "-u DEFAULTS".
2017-07-15 19:39:43 +02:00
Bram Moolenaar
a92522fbf3 patch 8.0.0714: when a timer causes a command line redraw " goes missing
Problem:    When a timer causes a command line redraw the " that is displayed
            for CTRL-R goes missing.
Solution:   Remember an extra character to display.
2017-07-15 15:21:38 +02:00
Bram Moolenaar
0daf843b4c patch 8.0.0713: 'termkey' option not fully implemented
Problem:    'termkey' option not fully implemented.
Solution:   Add initialisation.
2017-07-15 15:16:40 +02:00
Bram Moolenaar
1b0675caec patch 8.0.0712: the terminal implementation is incomplete
Problem:    The terminal implementation is incomplete.
Solution:   Add the 'termkey' option.
2017-07-15 14:04:01 +02:00
Bram Moolenaar
74675a666b Updated runtime files and translations. 2017-07-15 13:53:23 +02:00
Bram Moolenaar
85dad2c815 patch 8.0.0711: cannot build without the wildmenu feature
Problem:    Cannot build without the wildmenu feature.
Solution:   Add #ifdef
2017-07-12 21:12:43 +02:00
Bram Moolenaar
8603356bf4 patch 8.0.0710: a job that writes to a buffer clears completion
Problem:    A job that writes to a buffer clears command line completion.
            (Ramel Eshed)
Solution:   Do not redraw while showing the completion menu.
2017-07-12 20:24:41 +02:00
Bram Moolenaar
8327d1df17 patch 8.0.0709: libvterm cannot use vsnprintf()
Problem:    Libvterm cannot use vsnprintf(), it does not exist in C90.
Solution:   Use vim_vsnprintf() instead.
2017-07-11 22:34:51 +02:00
Bram Moolenaar
292eff0c5a patch 8.0.0708: some tests are old style
Problem:    Some tests are old style.
Solution:   Change a few tests from old style to new style. (pschuh,
            closes #1813)
2017-07-11 21:46:28 +02:00
Bram Moolenaar
f1d13478e3 patch 8.0.0707: freeing wrong memory with certain autocommands
Problem:    Freeing wrong memory when manipulating buffers in autocommands.
            (James McCoy)
Solution:   Also set the w_s pointer if w_buffer was NULL.
2017-07-11 18:28:46 +02:00
Bram Moolenaar
5a15b6aa0a patch 8.0.0706: crash when cancelling the cmdline window in Ex mode
Problem:    Crash when cancelling the cmdline window in Ex mode. (James McCoy)
Solution:   Do not set cmdbuff to NULL, make it empty.
2017-07-11 15:11:57 +02:00
Bram Moolenaar
cae24be4a8 patch 8.0.0705: crash when there is an error in a timer callback
Problem:    Crash when there is an error in a timer callback. (Aron Griffis,
            Ozaki Kiichi)
Solution:   Check did_throw before discarding an exception.  NULLify
            current_exception when no longer valid.
2017-07-10 22:12:10 +02:00
Bram Moolenaar
163095f088 patch 8.0.0704: problems with autocommands when opening help
Problem:    Problems with autocommands when opening help.
Solution:   Avoid using invalid "varp" value.  Allow using :wincmd if buffer
            is locked. (closes #1806, closes #1804)
2017-07-09 15:41:53 +02:00
Bram Moolenaar
faf29d7f91 patch 8.0.0703: illegal memory access with empty :doau command
Problem:    Illegal memory access with empty :doau command.
Solution:   Check the event for being out of range. (James McCoy)
2017-07-09 11:07:16 +02:00
Bram Moolenaar
c577d813b7 patch 8.0.0702: an error in a timer can make Vim unusable
Problem:    An error in a timer can make Vim unusable.
Solution:   Don't set the error flag or exception from a timer.  Stop a timer
            if it causes an error 3 out of 3 times.  Discard an exception
            caused inside a timer.
2017-07-08 22:37:34 +02:00
Bram Moolenaar
11e79bb04e patch 8.0.0701: system test failing when using X11 forwarding
Problem:    System test failing when using X11 forwarding.
Solution:   Set $XAUTHORITY before changing $HOME. (closes #1812)
            Also use a better check for the exit value.
2017-07-08 17:03:21 +02:00
Bram Moolenaar
0ea5070d79 patch 8.0.0700: segfault with QuitPre autocommand closes the window
Problem:    Segfault with QuitPre autocommand closes the window. (Marek)
Solution:   Check that the window pointer is still valid. (Christian Brabandt,
            closes #1817)
2017-07-08 14:44:50 +02:00
Bram Moolenaar
710b4a1646 patch 8.0.0699: checksum tests are not actually run
Problem:    Checksum tests are not actually run.
Solution:   Add the tests to the list. (Dominique Pelle, closes #1819)
2017-07-08 14:29:19 +02:00
Bram Moolenaar
c4f833808a patch 8.0.0698: crash on exit when using Python function in timer.
Problem:    When a timer uses ":pyeval" or another Python command and it
            happens to be triggered while exiting a Crash may happen.
            (Ricky Zhou)
Solution:   Avoid running a Python command after python_end() was called.
            Do not trigger timers while exiting.  (closes #1824)
2017-07-07 14:50:44 +02:00
Bram Moolenaar
8858498516 patch 8.0.0697: recorded key sequences may become invalid
Problem:    Recorded key sequences may become invalid.
Solution:   Add back KE_SNIFF removed in 7.4.1433. Use fixed numbers for the
            key_extra enum.
2017-07-07 13:32:14 +02:00
Bram Moolenaar
cce1cf12eb patch 8.0.0696: .inc files missing in git
Problem:    The .inc files are missing in git. (Nazri Ramliy)
Solution:   Remove the .inc line from .gitignore.
2017-07-07 13:04:16 +02:00
Bram Moolenaar
e5ae108ab8 patch 8.0.0695: missing dependencies breaks parallel make
Problem:    Missing dependencies breaks parallel make.
Solution:   Add dependencies for terminal.o.
2017-07-07 12:42:40 +02:00
Bram Moolenaar
a34293ae0a patch 8.0.0694: building in shadow directory does not work
Problem:    Building in shadow directory does not work.  Running Vim fails.
Solution:   Add the new libvterm directory.  Add missing change in command
            list.
2017-07-07 12:22:55 +02:00
Bram Moolenaar
e4f25e4a8d patch 8.0.0693: no terminal emulator support
Problem:    No terminal emulator support.  Cannot properly run commands in the
            GUI.  Cannot run a job interactively with an ssh connection.
Solution:   Very early implementation of the :terminal command.  Includes
            libvterm converted to ANSI C.  Many parts still missing.
2017-07-07 11:54:15 +02:00
Bram Moolenaar
da5116da45 patch 8.0.0692: CTRL-G with 'incsearch' and ? goes in the wrong direction
Problem:    Using CTRL-G with 'incsearch' and ? goes in the wrong direction.
            (Ramel Eshed)
Solution:   Adjust search_start. (Christian Brabandt)
2017-07-01 23:11:17 +02:00
Bram Moolenaar
a83fe75ca7 patch 8.0.0691: compiler warning without the linebreak feature
Problem:    Compiler warning without the linebreak feature.
Solution:   Add #ifdef. (John Marriott)
2017-06-29 22:33:13 +02:00
Bram Moolenaar
c2226845eb patch 8.0.0690: compiler warning on non-Unix system
Problem:    Compiler warning on non-Unix system.
Solution:   Add #ifdef. (John Marriott)
2017-06-29 22:27:24 +02:00
Bram Moolenaar
a693d0584b patch 8.0.0689: ~ character not escaped when extending search pattern
Problem:    The ~ character is not escaped when adding to the search pattern
            with CTRL-L. (Ramel Eshed)
Solution:   Escape the character. (Christian Brabandt)
2017-06-29 22:23:06 +02:00
Bram Moolenaar
9c4fefffb6 patch 8.0.0688: cannot resize the window in a FileType autocommand
Problem:    Cannot resize the window in a FileType autocommand. (Ingo Karkat)
Solution:   Add the CMDWIN flag to :resize. (test by Ingo Karkat,
            closes #1804)
2017-06-28 22:26:54 +02:00
Bram Moolenaar
86f100dc09 patch 8.0.0687: minor issues related to quickfix
Problem:    Minor issues related to quickfix.
Solution:   Set the proper return status for all cases in setqflist() and at
            test cases for this.  Move the "adding" flag outside of
            FEAT_WINDOWS. Minor update to the setqflist() help text. (Yegappan
            Lakshmanan)
2017-06-28 21:26:27 +02:00
Bram Moolenaar
9f5f7bf4d5 patch 8.0.0686: extra redraw when using CTRL-L in second window
Problem:    When typing CTRL-L in a window that's not the first one, another
            redraw will happen later. (Christian Brabandt)
Solution:   Reset must_redraw after calling screenclear().
2017-06-28 20:45:26 +02:00
Bram Moolenaar
e6bf655bc4 patch 8.0.0685: when conversion fails written file may be truncated
Problem:    When making backups is disabled and conversion with iconv fails
            the written file is truncated. (Luo Chen)
Solution:   First try converting the file and write the file only when it did
            not fail. (partly by Christian Brabandt)
2017-06-27 22:11:51 +02:00
Bram Moolenaar
28b238225a patch 8.0.0684: old style tests are not nice
Problem:    Old style tests are not nice.
Solution:   Turn two tests into new style. (pschuh, closes #1797)
2017-06-27 18:29:17 +02:00
Bram Moolenaar
2e147caa14 patch 8.0.0683: visual bell flashes too quickly
Problem:    When using a visual bell there is no delay, causing the flash to
            be very short, possibly unnoticeable.  Also, the flash and the
            beep can lockup the UI when repeated often.
Solution:   Do the delay in Vim or flush the output before the delay. Limit the
            bell to once per half a second. (Ozaki Kiichi, closes #1789)
2017-06-27 17:09:37 +02:00
Bram Moolenaar
0b2eef24bc patch 8.0.0682: no test for synIDtrans()
Problem:    No test for synIDtrans().
Solution:   Add a test. (Dominique Pelle, closes #1796)
2017-06-27 15:43:49 +02:00
Bram Moolenaar
18d90b95c4 patch 8.0.0681: unnamed register only contains the last deleted text
Problem:    Unnamed register only contains the last deleted text when
            appending deleted text to a register. (Wolfgang Jeltsch)
Solution:   Only set y_previous when not using y_append. (Christian Brabandt)
2017-06-27 15:39:14 +02:00
Bram Moolenaar
07ecfa64a1 patch 8.0.0680: plugins in start packages are sourced twice
Problem:    Plugins in start packages are sourced twice. (mseplowitz)
Solution:   Use the unmodified runtime path when loading plugins (test by Ingo
            Karkat, closes #1801)
2017-06-27 14:43:55 +02:00
Bram Moolenaar
41cc038ff8 patch 8.0.0679: using freed memory
Problem:    Using freed memory.
Solution:   Get the parent frame pointer earlier.
2017-06-26 09:59:35 +02:00
Bram Moolenaar
8eeeba8c02 patch 8.0.0678: closing a window does not trigger resizing
Problem:    When 'equalalways' is set and closing a window in a separate
            frame, not all window sizes are adjusted. (Glacambre)
Solution:   Resize all windows if the new current window is not in the same
            frame as the closed window. (closes #1707)
2017-06-25 22:45:39 +02:00
Bram Moolenaar
1814183b86 patch 8.0.0677: setting 'filetype' may switch buffers
Problem:    Setting 'filetype' internally may cause the current buffer and
            window to change unexpectedly.
Solution:   Set curbuf_lock. (closes #1734)
2017-06-25 21:17:25 +02:00
Bram Moolenaar
182a17b1e8 patch 8.0.0676: crash when closing quickfix window in autocmd
Problem:    Crash when closing the quickfix window in a FileType autocommand
            that triggers when the quickfix window is opened.
Solution:   Save the new value before triggering the OptionSet autocommand.
            Add the "starting" flag to test_override() to make the text work.
2017-06-25 20:57:18 +02:00
Bram Moolenaar
774e5a9673 patch 8.0.0675: 'colorcolumn' has a higher priority than 'hlsearch'
Problem:    'colorcolumn' has a higher priority than 'hlsearch', it should be
            the other way around. (Nazri Ramliy)
Solution:   Change the priorities. (LemonBoy, closes #1794)
2017-06-25 18:03:37 +02:00
Bram Moolenaar
5d7be4f0fa patch 8.0.0674: cannot build with eval but without timers
Problem:    Cannot build with eval but without timers.
Solution:   Add #ifdef (John Marriott)
2017-06-25 13:40:17 +02:00
Bram Moolenaar
ea20de8146 patch 8.0.0673: build failure without conceal feature
Problem:    Build failure without conceal feature.
Solution:   Add #ifdef.
2017-06-24 22:52:24 +02:00
Bram Moolenaar
cc0750dc6e patch 8.0.0672: third item of synconcealed() changes too often
Problem:    Third item of synconcealed() changes too often. (Dominique Pelle)
Solution:   Reset the sequence number at the start of each line.
2017-06-24 22:29:24 +02:00
Bram Moolenaar
4eb6531b03 patch 8.0.0671: hang when typing CTRL-C in confirm() in timer
Problem:    When a function invoked from a timer calls confirm() and the user
            types CTRL-C then Vim hangs.
Solution:   Reset typebuf_was_filled. (Ozaki Kiichi, closes #1791)
2017-06-24 18:49:00 +02:00
Bram Moolenaar
1e8e14552e patch 8.0.0670: can't use input() in a timer callback
Problem:    Can't use input() in a timer callback. (Cosmin Popescu)
Solution:   Reset vgetc_busy and set timer_busy. (Ozaki Kiichi, closes #1790,
            closes #1129)
2017-06-24 16:03:06 +02:00
Bram Moolenaar
24a9e348aa patch 8.0.0669: CTRL-N at start of the buffer does not work correctly
Problem:    In Insert mode, CTRL-N at start of the buffer does not work
            correctly. (zuloloxi)
Solution:   Wrap around the start of the buffer. (Christian Brabandt)
2017-06-24 15:39:07 +02:00
Bram Moolenaar
a1bd86e0f2 patch 8.0.0668: nsis installer script does not work
Problem:    Nsis installer script does not work. (Christian Brabandt)
Solution:   Fix the syntax of /SD.
2017-06-24 15:11:01 +02:00
Bram Moolenaar
53564f7c1a patch 8.0.0667: memory access error when command follows :endfunc
Problem:    Memory access error when command follows :endfunction. (Nikolai
            Pavlov)
Solution:   Make memory handling in :function straightforward. (closes #1793)
2017-06-24 14:48:11 +02:00
Bram Moolenaar
5fe691240b patch 8.0.0666: dead for loop
Problem:    Dead for loop. (Coverity)
Solution:   Remove the for loop.
2017-06-23 23:00:08 +02:00
Bram Moolenaar
090209bfbd patch 8.0.0665: warning for uninitialized variable
Problem:    Warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize it.
2017-06-23 22:45:33 +02:00
Bram Moolenaar
6d006f9e95 patch 8.0.0664: mouse does not work in tmux
Problem:    Mouse does not work in tmux. (lilydjwg)
Solution:   Add flag for SGR release being present.
2017-06-23 22:35:34 +02:00
Bram Moolenaar
f8be461d02 patch 8.0.0663: unexpected error message only when 'verbose' is set
Problem:    Giving an error message only when 'verbose' set is unexpected.
Solution:   Give a warning message instead.
2017-06-23 20:52:40 +02:00
Bram Moolenaar
4670490673 patch 8.0.0662: stray FIXME for fixed problem
Problem:    Stray FIXME for fixed problem.
Solution:   Remove the comment. (Dominique Pelle)
2017-06-22 23:03:12 +02:00
Bram Moolenaar
a529ce068b patch 8.0.0661: recognizing urxvt mouse codes does not work well
Problem:    Recognizing urxvt mouse codes does not work well.
Solution:   Recognize "Esc[*M" and "Esc[*m". (Maurice Bos, closes #1486)
2017-06-22 22:37:57 +02:00
Bram Moolenaar
a1fed064d1 patch 8.0.0660: silent install on MS-Windows shows dialog
Problem:    Silent install on MS-Windows does show a dialog.
Solution:   Add /SD to the default choice. (allburov, closes #1772)
2017-06-22 22:05:02 +02:00
Bram Moolenaar
4d785895d1 patch 8.0.0659: no test for conceal mode
Problem:    No test for conceal mode.
Solution:   Add a conceal mode test. (Dominique Pelle, closes #1783)
2017-06-22 22:00:50 +02:00
Bram Moolenaar
d2c061d24c patch 8.0.0658: spell test is old style
Problem:    Spell test is old style.
Solution:   Turn the spell test into a new style test (pschuh, closes #1778)
2017-06-22 21:42:49 +02:00
Bram Moolenaar
6a8958db25 patch 8.0.0657: cannot get and set quickfix list items
Problem:    Cannot get and set quickfix list items.
Solution:   Add the "items" argument to getqflist() and setqflist(). (Yegappan
            Lakshmanan)
2017-06-22 21:33:20 +02:00
Bram Moolenaar
6f9a476b2f patch 8.0.0656: cannot use ! after some user commands
Problem:    Cannot use ! after some user commands.
Solution:   Properly check for existing command. (Higashi Higashi)
2017-06-22 20:39:17 +02:00
Bram Moolenaar
d6abcd154c patch 8.0.0655: not easy to make sure a function does not exist
Problem:    Not easy to make sure a function does not exist.
Solution:   Add ! as an optional argument to :delfunc.
2017-06-22 19:15:24 +02:00
Bram Moolenaar
663bb23316 patch 8.0.0654: no warning for text after :endfunction
Problem:    Text found after :endfunction is silently ignored.
Solution:   Give a warning if 'verbose' is set.  When | or \n are used,
            execute the text as a command.
2017-06-22 19:12:10 +02:00
Bram Moolenaar
c768a208ca patch 8.0.0653: the default highlight for QuickFixLine is not good
Problem:    The default highlight for QuickFixLine does not work for several
            color schemes. (Manas Thakur)
Solution:   Make the default use the old color. (closes #1780)
2017-06-22 16:04:27 +02:00
Bram Moolenaar
383aa84c0d patch 8.0.0652: unicode information is outdated
Problem:    Unicode information is outdated.
Solution:   Update to Unicode 10. (Christian Brabandt)
2017-06-22 15:27:37 +02:00
Bram Moolenaar
157069b04e patch 8.0.0651: build failure without the auto command feature
Problem:    Build failure without the auto command feature.
Solution:   Add #ifdef. (closes #1782)
2017-06-22 14:56:12 +02:00
Bram Moolenaar
868831f122 patch 8.0.0650: for extra help files the filetype is set more than once
Problem:    For extra help files the filetype is set more than once.
Solution:   In *.txt files check that there is no help file modline.
2017-06-22 14:47:22 +02:00
Bram Moolenaar
9049298f8d patch 8.0.0649: when opening a help file the filetype is set several times
Problem:    When opening a help file the filetype is set several times.
Solution:   When setting the filetype to the same value from a modeline, don't
            trigger FileType autocommands.  Don't set the filetype to "help"
            when it's already set correctly.
2017-06-22 14:16:31 +02:00
Bram Moolenaar
fadacf01d0 patch 8.0.0648: possible use of NULL pointer
Problem:    Possible use of NULL pointer if buflist_new() returns NULL.
            (Coverity)
Solution:   Check for NULL pointer in set_bufref().
2017-06-19 20:35:32 +02:00
Bram Moolenaar
06f1ed2f78 patch 8.0.0647: syntax highlighting can make cause a freeze
Problem:    Syntax highlighting can make cause a freeze.
Solution:   Apply 'redrawtime' to syntax highlighting, per window.
2017-06-18 22:41:03 +02:00
Bram Moolenaar
0946326580 patch 8.0.0646: the hlsearch test fails on fast systems
Problem:    The hlsearch test fails on fast systems.
Solution:   Make the search pattern slower.  Fix that the old regexp engine
            doesn't timeout properly.
2017-06-17 20:55:06 +02:00
Bram Moolenaar
1ef9bbe215 patch 8.0.0645: no error for illegal back reference in NFA engine
Problem:    The new regexp engine does not give an error for using a back
            reference where it is not allowed. (Dominique Pelle)
Solution:   Check the back reference like the old engine. (closes #1774)
2017-06-17 20:08:20 +02:00
Bram Moolenaar
5b1affefd0 patch 8.0.0644: the timeout for 'hlsearch' is not tested
Problem:    There is no test for 'hlsearch' timing out.
Solution:   Add a test.
2017-06-17 19:13:49 +02:00
Bram Moolenaar
fbd0b0af68 patch 8.0.0643: when a pattern search is slow Vim becomes unusable
Problem:    When 'hlsearch' is set and matching with the last search pattern
            is very slow, Vim becomes unusable.  Cannot quit search by
            pressing CTRL-C.
Solution:   When the search times out set a flag and don't try again.  Check
            for timeout and CTRL-C in NFA loop that adds states.
2017-06-17 18:44:21 +02:00
Bram Moolenaar
8cf91286ca patch 8.0.0642: writefile() continues after detecting an error
Problem:    writefile() continues after detecting an error.
Solution:   Bail out as soon as an error is detected. (suggestions by Nikolai
            Pavlov, closes #1476)
2017-06-13 19:38:37 +02:00
Bram Moolenaar
3ec574f2b5 Update runtime files.
Includes changing &sw to shiftwidth() for all indent scripts.
2017-06-13 18:12:01 +02:00
Bram Moolenaar
2102035488 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Problem:    Cannot set a separate highlighting for the current line in the
            quickfix window.
Solution:   Add QuickFixLine. (anishsane, closes #1755)
2017-06-13 17:21:04 +02:00
Bram Moolenaar
83064068ea patch 8.0.0640: mismatch between help and actual message
Problem:    Mismatch between help and actual message for ":syn conceal".
Solution:   Change the message to match the help. (Ken Takata)
2017-06-13 16:34:54 +02:00
Bram Moolenaar
9a48961d8b patch 8.0.0639: the cursor position is set when editing a new commit message
Problem:    The cursor position is set to the last position in a new commit
            message.
Solution:   Don't set the position if the filetype matches "commit".
            (Christian Brabandt)
2017-06-13 16:12:51 +02:00
Bram Moolenaar
d7383881c8 patch 8.0.0638: cannot build with new MSVC version
Problem:    Cannot build with new MSVC version VS2017.
Solution:   Change the compiler arguments. (Leonardo Manera, closes #1731,
            closes #1747)
2017-06-13 15:22:12 +02:00
Bram Moolenaar
21b34b63b3 patch 8.0.0637: crash when using some version of GTK 3
Problem:    Crash when using some version of GTK 3.
Solution:   Add #ifdefs around incrementing the menu index. (Kazunobu
            Kuriyama)
2017-06-13 14:34:01 +02:00
Bram Moolenaar
56f2db562d patch 8.0.0636: when reading the undo file fails may use uninitialized data
Problem:    When reading the undo file fails may use uninitialized data.
Solution:   Always clear the buffer on failure.
2017-06-11 23:09:15 +02:00
Bram Moolenaar
3a429efb62 patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Problem:    When 'ignorecase' is set script detection is inaccurate.
Solution:   Enforce matching case for text. (closes #1753)
2017-06-11 17:10:32 +02:00
Bram Moolenaar
875feea6ce patch 8.0.0634: cannot easily get to the last quickfix list
Problem:    Cannot easily get to the last quickfix list.
Solution:   Add "$" as a value for the "nr" argument of getqflist() and
            setqflist(). (Yegappan Lakshmanan)
2017-06-11 16:07:51 +02:00
Bram Moolenaar
60964f6874 patch 8.0.0633: the client-server test is still a bit flaky
Problem:    The client-server test is still a bit flaky.
Solution:   Wait a bit for the GUI to start.  Check that the version number
            can be obtained.
2017-06-10 17:06:16 +02:00
Bram Moolenaar
1c13c0fe3e patch 8.0.0632: the quotestar test is still a bit flaky
Problem:    The quotestar test is still a bit flaky.
Solution:   Kill any existing server to make the retry work.  Wait for the
            register to be filled.
2017-06-10 16:30:32 +02:00
Bram Moolenaar
fa4161cb0c patch 8.0.0631: can't build with Perl 5.26
Problem:    Perl 5.26 also needs S_TOPMARK and S_POPMARK defined.
Solution:   Define the functions when needed. (Jesin, closes #1748)
2017-06-10 15:46:23 +02:00
Bram Moolenaar
f84b122a99 patch 8.0.0630: it is not easy to work on lines without a match
Problem:    The :global command does not work recursively, which makes it
            difficult to execute a command on a line where one pattern matches
            and another does not match. (Miles Cranmer)
Solution:   Allow for recursion if it is for only one line. (closes #1760)
2017-06-10 14:29:52 +02:00
Bram Moolenaar
6b1da3312e patch 8.0.0629: checking for ambigous width is not working
Problem:    Checking for ambigous width is not working. (Hirohito Higashi)
Solution:   Reset "starting" earlier.
2017-06-09 21:35:47 +02:00
Bram Moolenaar
f085f4266e patch 8.0.0628: cursor disappears after silent mapping
Problem:    Cursor disappears after silent mapping. (Ramel Eshed)
Solution:   Do restore the cursor when it was changed, but don't change it in
            the first place for a silent mapping.
2017-06-07 20:39:47 +02:00
Bram Moolenaar
add8dce38d patch 8.0.0627: "gn" selects only one character with 'nowrapscan'
Problem:    When 'wrapscan' is off "gn" does not select the whole pattern when
            it's the last one in the text. (KeyboardFire)
Solution:   Check if the search fails. (Christian Brabandt, closes #1683)
2017-06-05 19:56:04 +02:00
Bram Moolenaar
e21d69eec1 patch 8.0.0626: in the GUI the cursor may flicker
Problem:    In the GUI the cursor may flicker.
Solution:   Check the cmd_silent flag before updating the cursor shape.
            (Hirohito Higashi, closes #1637)
2017-06-05 19:32:32 +02:00
Bram Moolenaar
206155280d patch 8.0.0625: shellescape() always escapes a newline
Problem:    shellescape() always escapes a newline, which does not work with
            some shells. (Harm te Hennepe)
Solution:   Only escape a newline when the "special" argument is non-zero.
            (Christian Brabandt, closes #1590)
2017-06-05 18:46:26 +02:00
Bram Moolenaar
6c95fbc9ae patch 8.0.0624: warning for unused variable in tiny build
Problem:    Warning for unused variable in tiny build. (Tony Mechelynck)
Solution:   Add an #ifdef.
2017-06-05 17:53:37 +02:00
Bram Moolenaar
966e58e413 patch 8.0.0623: error for invalid regexp is not very informative
Problem:    The message "Invalid range" is used for multiple errors.
Solution:   Add two more specific error messages. (Itchyny, Ken Hamada)
2017-06-05 16:54:08 +02:00
Bram Moolenaar
c5e2b040b4 patch 8.0.0622: selecting quoted text fails with 'selection' "exclusive"
Problem:    Using a text object to select quoted text fails when 'selection'
            is set to "exclusive". (Guraga)
Solution:   Swap cursor and visual start position. (Christian Brabandt,
            closes #1687)
2017-06-05 16:37:07 +02:00
Bram Moolenaar
8ad80dea08 patch 8.0.0621: :stag does not respect 'switchbuf'
Problem:    The ":stag" command does not respect 'switchbuf'.
Solution:   Check 'switchbuf' for tag commands that may open a new window.
            (Ingo Karkat, closes #1681)  Define macros for the return values
            of getfile().
2017-06-05 16:01:59 +02:00
Bram Moolenaar
b463e8d999 patch 8.0.0620: checking for HAVE_GTK_MULTIHEAD is not needed
Problem:    Since we only support GTK versions that have it, the ckeck for
            HAVE_GTK_MULTIHEAD is no longer needed.
Solution:   Remove HAVE_GTK_MULTIHEAD. (Kazunobu Kuriyama)
2017-06-05 15:07:09 +02:00
Bram Moolenaar
6aa8cea46d Update runtime files. 2017-06-05 14:44:35 +02:00
Bram Moolenaar
9472eec83c patch 8.0.0619: GUI gets stuck if timer uses feedkeys()
Problem:    In the GUI, when a timer uses feedkeys(), it still waits for an
            event. (Raymond Ko)
Solution:   Check tb_change_cnt in one more place.
2017-06-05 13:31:56 +02:00
Bram Moolenaar
bb7943b792 patch 8.0.0618: NFA regex engine handles [0-z] incorrectly
Problem:    NFA regex engine handles [0-z] incorrectly.
Solution:   Return at the right point. (James McCoy, closes #1703)
2017-06-05 13:30:06 +02:00
Bram Moolenaar
763209c57b patch 8.0.0617: hardcopy test hangs on MS-Windows
Problem:    Hardcopy test hangs on MS-Windows.
Solution:   Check the postscript feature is supported.
2017-06-04 21:40:36 +02:00
Bram Moolenaar
1615b36b91 patch 8.0.0616: not always setting 'background' correctly after :hi Normal
Problem:    When setting the cterm background with ":hi Normal" the value of
            'background' may be set wrongly.
Solution:   Check that the color is less than 16.  Don't set 'background' when
            it was set explicitly. (Lemonboy, closes #1710)
2017-06-04 21:06:09 +02:00
Bram Moolenaar
bf15b8d78b patch 8.0.0615: using % with :hardcopy wrongly escapes spaces
Problem:    Using % with :hardcopy wrongly escapes spaces. (Alexey Muranov)
Solution:   Expand % differently. (Christian Brabandt, closes #1682)
2017-06-04 20:43:48 +02:00
Bram Moolenaar
863e80b445 patch 8.0.0614: float2nr() is not exactly right
Problem:    float2nr() is not exactly right.
Solution:   Make float2nr() more accurate.  Turn test64 into a new style test.
            (Hirohito Higashi, closes #1688)
2017-06-04 20:30:00 +02:00
Bram Moolenaar
3e54569b17 patch 8.0.0613: the conf filetype is used before ftdetect from packages
Problem:    The conf filetype detection is done before ftdetect scripts from
            packages that are added later.
Solution:   Add the FALLBACK argument to :setfiletype. (closes #1679,
            closes #1693)
2017-06-04 19:00:32 +02:00
Bram Moolenaar
ce876aaa9a patch 8.0.0612: pack dirs are added to 'runtimepath' too late
Problem:    Package directories are added to 'runtimepath' only after loading
            non-package plugins.
Solution:   Split off the code to add package directories to 'runtimepath'.
            (Ingo Karkat, closes #1680)
2017-06-04 17:47:42 +02:00
Bram Moolenaar
976787d1f3 patch 8.0.0611: the screen is not redrawn after sending t_u7
Problem:    When t_u7 is sent a few characters in the second screen line are
            overwritten and not redrawn later. (Rastislav Barlik)
Solution:   Move redrawing the screen to after overwriting the characters.
2017-06-04 15:45:50 +02:00
Bram Moolenaar
4b974d5443 patch 8.0.0610: the screen is redrawn when default 'background' is detected
Problem:    The screen is redrawn when t_BG is set and used to detect the
            value for 'background'.
Solution:   Don't redraw when the value of 'background' didn't change.
2017-06-04 15:37:46 +02:00
Bram Moolenaar
28a8193e31 patch 8.0.0609: some people still don't know how to quit
Problem:    For some people the hint about quitting is not sufficient.
Solution:   Put <Enter> separately.  Also use ":qa!" to get out even when
            there are changes.
2017-06-04 15:33:48 +02:00
Bram Moolenaar
a3921f48c6 patch 8.0.0608: cannot manipulate other than the current quickfix list
Problem:    Cannot manipulate other than the current quickfix list.
Solution:   Pass the list index to quickfix functions. (Yegappan Lakshmanan)
2017-06-04 15:30:34 +02:00
Bram Moolenaar
45e5fd135d patch 8.0.0607: after :bwipe + :new bufref might still be valid
Problem:    When creating a bufref, then using :bwipe and :new it might get
            the same memory and bufref_valid() returns true.
Solution:   Add br_fnum to check the buffer number didn't change.
2017-06-04 14:58:02 +02:00
Bram Moolenaar
6e62da3e14 patch 8.0.0606: cannot set the context for a specified quickfix list
Problem:    Cannot set the context for a specified quickfix list.
Solution:   Use the list index instead of the current list. (Yegappan
            Lakshmanan)
2017-05-28 08:16:25 +02:00
Bram Moolenaar
6dd4a53502 patch 8.0.0605: the quickfix cached buffer may become invalid
Problem:    The buffer that quickfix caches for performance may become
            invalid. (Daniel Hahler)
Solution:   Reset qf_last_bufref in qf_init_ext(). (Daniel Hahler,
            closes #1728, closes #1676)
2017-05-28 07:56:36 +02:00
Bram Moolenaar
b4d6c3ea4a Update runtime files. 2017-05-27 16:45:17 +02:00
Bram Moolenaar
712598f210 patch 8.0.0604: gF test fails still on MS-Windows
Problem:    gF test fails still on MS-Windows.
Solution:   Use : before the line number and remove it from 'isfname'.
2017-05-24 10:42:37 +02:00
Bram Moolenaar
d7aca7a71c patch 8.0.0603: gF test fails on MS-Windows
Problem:    gF test fails on MS-Windows.
Solution:   Use @ instead of : before the line number
2017-05-24 10:05:56 +02:00
Bram Moolenaar
2a79ed293c patch 8.0.0602: when gF fails to edit the file the cursor still moves
Problem:    When gF fails to edit the file the cursor still moves to the found
            line number.
Solution:   Check the return value of do_ecmd(). (Michael Hwang)
2017-05-24 09:51:39 +02:00
Bram Moolenaar
545cb79da5 patch 8.0.0601: no test coverage for :spellrepall
Problem:    No test coverage for :spellrepall.
Solution:   Add a test. (Dominique Pelle, closes #1717)
2017-05-23 11:31:22 +02:00
392 changed files with 27491 additions and 8197 deletions

View File

@@ -85,6 +85,7 @@ SRC_ALL = \
src/syntax.c \ src/syntax.c \
src/tag.c \ src/tag.c \
src/term.c \ src/term.c \
src/terminal.c \
src/term.h \ src/term.h \
src/termlib.c \ src/termlib.c \
src/ui.c \ src/ui.c \
@@ -187,6 +188,7 @@ SRC_ALL = \
src/proto/syntax.pro \ src/proto/syntax.pro \
src/proto/tag.pro \ src/proto/tag.pro \
src/proto/term.pro \ src/proto/term.pro \
src/proto/terminal.pro \
src/proto/termlib.pro \ src/proto/termlib.pro \
src/proto/ui.pro \ src/proto/ui.pro \
src/proto/undo.pro \ src/proto/undo.pro \
@@ -194,6 +196,76 @@ SRC_ALL = \
src/proto/version.pro \ src/proto/version.pro \
src/proto/winclip.pro \ src/proto/winclip.pro \
src/proto/window.pro \ src/proto/window.pro \
src/libvterm/.bzrignore \
src/libvterm/.gitignore \
src/libvterm/LICENSE \
src/libvterm/Makefile \
src/libvterm/README \
src/libvterm/tbl2inc_c.pl \
src/libvterm/vterm.pc.in \
src/libvterm/bin/unterm.c \
src/libvterm/bin/vterm-ctrl.c \
src/libvterm/bin/vterm-dump.c \
src/libvterm/doc/URLs \
src/libvterm/doc/seqs.txt \
src/libvterm/include/vterm.h \
src/libvterm/include/vterm_keycodes.h \
src/libvterm/src/encoding.c \
src/libvterm/src/encoding/DECdrawing.inc \
src/libvterm/src/encoding/DECdrawing.tbl \
src/libvterm/src/encoding/uk.inc \
src/libvterm/src/encoding/uk.tbl \
src/libvterm/src/keyboard.c \
src/libvterm/src/mouse.c \
src/libvterm/src/parser.c \
src/libvterm/src/pen.c \
src/libvterm/src/rect.h \
src/libvterm/src/screen.c \
src/libvterm/src/state.c \
src/libvterm/src/unicode.c \
src/libvterm/src/utf8.h \
src/libvterm/src/vterm.c \
src/libvterm/src/vterm_internal.h \
src/libvterm/t/02parser.test \
src/libvterm/t/03encoding_utf8.test \
src/libvterm/t/10state_putglyph.test \
src/libvterm/t/11state_movecursor.test \
src/libvterm/t/12state_scroll.test \
src/libvterm/t/13state_edit.test \
src/libvterm/t/14state_encoding.test \
src/libvterm/t/15state_mode.test \
src/libvterm/t/16state_resize.test \
src/libvterm/t/17state_mouse.test \
src/libvterm/t/18state_termprops.test \
src/libvterm/t/20state_wrapping.test \
src/libvterm/t/21state_tabstops.test \
src/libvterm/t/22state_save.test \
src/libvterm/t/25state_input.test \
src/libvterm/t/26state_query.test \
src/libvterm/t/27state_reset.test \
src/libvterm/t/28state_dbl_wh.test \
src/libvterm/t/29state_fallback.test \
src/libvterm/t/30pen.test \
src/libvterm/t/40screen_ascii.test \
src/libvterm/t/41screen_unicode.test \
src/libvterm/t/42screen_damage.test \
src/libvterm/t/43screen_resize.test \
src/libvterm/t/44screen_pen.test \
src/libvterm/t/45screen_protect.test \
src/libvterm/t/46screen_extent.test \
src/libvterm/t/47screen_dbl_wh.test \
src/libvterm/t/48screen_termprops.test \
src/libvterm/t/90vttest_01-movement-1.test \
src/libvterm/t/90vttest_01-movement-2.test \
src/libvterm/t/90vttest_01-movement-3.test \
src/libvterm/t/90vttest_01-movement-4.test \
src/libvterm/t/90vttest_02-screen-1.test \
src/libvterm/t/90vttest_02-screen-2.test \
src/libvterm/t/90vttest_02-screen-3.test \
src/libvterm/t/90vttest_02-screen-4.test \
src/libvterm/t/92lp1640917.test \
src/libvterm/t/harness.c \
src/libvterm/t/run-test.pl \
# source files for Unix only # source files for Unix only

View File

@@ -87,6 +87,7 @@ UninstPage instfiles
Function .onInit Function .onInit
MessageBox MB_YESNO|MB_ICONQUESTION \ MessageBox MB_YESNO|MB_ICONQUESTION \
"This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer.$\n Continue?" \ "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer.$\n Continue?" \
/SD IDYES \
IDYES NoAbort IDYES NoAbort
Abort ; causes installer to quit. Abort ; causes installer to quit.
NoAbort: NoAbort:

View File

@@ -1,7 +1,7 @@
" The default vimrc file. " The default vimrc file.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2017 Apr 12 " Last change: 2017 Jun 13
" "
" This is loaded if no vimrc file was found. " This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C". " Except when Vim is run with "-u NONE" or "-C".
@@ -106,12 +106,13 @@ if has("autocmd")
au! au!
" When editing a file, always jump to the last known cursor position. " When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler " Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim). " (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost * autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") | \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ exe "normal! g`\"" | \ | exe "normal! g`\""
\ endif \ | endif
augroup END augroup END

View File

@@ -101,6 +101,7 @@ DOCS = \
tabpage.txt \ tabpage.txt \
tagsrch.txt \ tagsrch.txt \
term.txt \ term.txt \
terminal.txt \
tips.txt \ tips.txt \
todo.txt \ todo.txt \
uganda.txt \ uganda.txt \
@@ -236,6 +237,7 @@ HTMLS = \
tabpage.html \ tabpage.html \
tagsrch.html \ tagsrch.html \
term.html \ term.html \
terminal.html \
tips.html \ tips.html \
todo.html \ todo.html \
uganda.html \ uganda.html \

View File

@@ -10,11 +10,11 @@ Arabic Language support (options & mappings) for Vim *Arabic*
*E800* *E800*
In order to use right-to-left and Arabic mapping support, it is In order to use right-to-left and Arabic mapping support, it is
necessary to compile VIM with the |+arabic| feature. necessary to compile Vim with the |+arabic| feature.
These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org> These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org>
It is best to view this file with these settings within VIM's GUI: > It is best to view this file with these settings within Vim's GUI: >
:set encoding=utf-8 :set encoding=utf-8
:set arabicshape :set arabicshape
@@ -42,7 +42,7 @@ the user interface remains the standard Vi interface.
Highlights Highlights
---------- ----------
o Editing left-to-right files as in the original VIM hasn't changed. o Editing left-to-right files as in the original Vim hasn't changed.
o Viewing and editing files in right-to-left windows. File o Viewing and editing files in right-to-left windows. File
orientation is per window, so it is possible to view the same orientation is per window, so it is possible to view the same
@@ -52,7 +52,7 @@ o No special terminal with right-to-left capabilities is required.
The right-to-left changes are completely hardware independent. The right-to-left changes are completely hardware independent.
Only Arabic fonts are necessary. Only Arabic fonts are necessary.
o Compatible with the original VIM. Almost all features work in o Compatible with the original Vim. Almost all features work in
right-to-left mode (there are liable to be bugs). right-to-left mode (there are liable to be bugs).
o Changing keyboard mapping and reverse insert modes using a single o Changing keyboard mapping and reverse insert modes using a single
@@ -66,14 +66,14 @@ o While in Arabic mode, numbers are entered from left to right. Upon
o Arabic keymapping on the command line in reverse insert mode. o Arabic keymapping on the command line in reverse insert mode.
o Proper Bidirectional functionality is possible given VIM is o Proper Bidirectional functionality is possible given Vim is
started within a Bidi capable terminal emulator. started within a Bidi capable terminal emulator.
Arabic Fonts *arabicfonts* Arabic Fonts *arabicfonts*
------------ ------------
VIM requires monospaced fonts of which there are many out there. Vim requires monospaced fonts of which there are many out there.
Arabic requires ISO-8859-6 as well as Presentation Form-B fonts Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
(without Form-B, Arabic will _NOT_ be usable). It is highly (without Form-B, Arabic will _NOT_ be usable). It is highly
recommended that users search for so-called 'ISO-10646-1' fonts. recommended that users search for so-called 'ISO-10646-1' fonts.
@@ -96,13 +96,13 @@ o Installation of fonts for X Window systems (Unix/Linux)
Usage Usage
----- -----
Prior to the actual usage of Arabic within VIM, a number of settings Prior to the actual usage of Arabic within Vim, a number of settings
need to be accounted for and invoked. need to be accounted for and invoked.
o Setting the Arabic fonts o Setting the Arabic fonts
+ For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done + For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done
by entering the following command in the VIM window. by entering the following command in the Vim window.
> >
:set guifont=your_ARABIC_FONT :set guifont=your_ARABIC_FONT
< <
@@ -115,7 +115,7 @@ o Setting the Arabic fonts
you can include ':set guifont=your_ARABIC_FONT' to your .vimrc you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
file. file.
+ Under the X Window environment, you can also start VIM with + Under the X Window environment, you can also start Vim with
'-fn your_ARABIC_FONT' option. '-fn your_ARABIC_FONT' option.
o Setting the appropriate character Encoding o Setting the appropriate character Encoding
@@ -124,7 +124,7 @@ o Setting the appropriate character Encoding
> >
:set encoding=utf-8 :set encoding=utf-8
< <
to your .vimrc file (entering the command manually into you VIM to your .vimrc file (entering the command manually into you Vim
window is highly discouraged). In short, include ':set window is highly discouraged). In short, include ':set
encoding=utf-8' to your .vimrc file. encoding=utf-8' to your .vimrc file.
@@ -137,11 +137,11 @@ o Setting the appropriate character Encoding
o Enable Arabic settings [short-cut] o Enable Arabic settings [short-cut]
In order to simplify and streamline things, you can either invoke In order to simplify and streamline things, you can either invoke
VIM with the command-line option, Vim with the command-line option,
% vim -A my_utf8_arabic_file ... % vim -A my_utf8_arabic_file ...
or enable 'arabic' via the following command within VIM or enable 'arabic' via the following command within Vim
> >
:set arabic :set arabic
< <
@@ -189,7 +189,7 @@ o Enable Arabic settings [short-cut]
> >
:set keymap=arabic :set keymap=arabic
< <
in your VIM window. You can also append the 'keymap' set command to in your Vim window. You can also append the 'keymap' set command to
your .vimrc file. In other words, you can include ':set keymap=arabic' your .vimrc file. In other words, you can include ':set keymap=arabic'
to your .vimrc file. to your .vimrc file.
@@ -202,7 +202,7 @@ o Enable Arabic settings [short-cut]
+ Arabic deletion of a combined pair character + Arabic deletion of a combined pair character
By default VIM has the 'delcombine' option disabled. This option By default Vim has the 'delcombine' option disabled. This option
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
and still retain the LAM (i.e. it reverts to treating the combined and still retain the LAM (i.e. it reverts to treating the combined
character as its natural two characters form -- this also pertains character as its natural two characters form -- this also pertains
@@ -211,13 +211,13 @@ o Enable Arabic settings [short-cut]
> >
:set delcombine :set delcombine
< <
in our VIM window. You can also append the 'delcombine' set command in our Vim window. You can also append the 'delcombine' set command
to your .vimrc file. In other words, you can include ':set delcombine' to your .vimrc file. In other words, you can include ':set delcombine'
to your .vimrc file. to your .vimrc file.
+ Arabic right-to-left Mode + Arabic right-to-left Mode
By default VIM starts in Left-to-right mode. 'rightleft' is the By default Vim starts in Left-to-right mode. 'rightleft' is the
command that allows one to alter a window's orientation - that can command that allows one to alter a window's orientation - that can
be accomplished via, be accomplished via,
@@ -253,7 +253,7 @@ o Enable Arabic settings [short-cut]
> >
:set arabicshape :set arabicshape
< <
in our VIM window. You can also append the 'arabicshape' set in our Vim window. You can also append the 'arabicshape' set
command to your .vimrc file. In other words, you can include command to your .vimrc file. In other words, you can include
':set arabicshape' to your .vimrc file. ':set arabicshape' to your .vimrc file.
@@ -261,7 +261,7 @@ o Enable Arabic settings [short-cut]
Keymap/Keyboard *arabickeymap* Keymap/Keyboard *arabickeymap*
--------------- ---------------
The character/letter encoding used in VIM is the standard UTF-8. The character/letter encoding used in Vim is the standard UTF-8.
It is widely discouraged that any other encoding be used or even It is widely discouraged that any other encoding be used or even
attempted. attempted.
@@ -294,7 +294,7 @@ o Keyboard
Restrictions Restrictions
------------ ------------
o VIM in its GUI form does not currently support Bi-directionality o Vim in its GUI form does not currently support Bi-directionality
(i.e. the ability to see both Arabic and Latin intermixed within (i.e. the ability to see both Arabic and Latin intermixed within
the same line). the same line).

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.0. Last change: 2017 Apr 07 *autocmd.txt* For Vim version 8.0. Last change: 2017 Jul 14
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -610,7 +610,7 @@ FileChangedShell When Vim notices that the modification time of
|timestamp| |timestamp|
Mostly triggered after executing a shell Mostly triggered after executing a shell
command, but also with a |:checktime| command command, but also with a |:checktime| command
or when Gvim regains input focus. or when gvim regains input focus.
This autocommand is triggered for each changed This autocommand is triggered for each changed
file. It is not used when 'autoread' is set file. It is not used when 'autoread' is set
and the buffer was not changed. If a and the buffer was not changed. If a
@@ -651,7 +651,8 @@ FileType When the 'filetype' option has been set. The
pattern is matched against the filetype. pattern is matched against the filetype.
<afile> can be used for the name of the file <afile> can be used for the name of the file
where this option was set, and <amatch> for where this option was set, and <amatch> for
the new value of 'filetype'. the new value of 'filetype'. Navigating to
another window or buffer is not allowed.
See |filetypes|. See |filetypes|.
*FileWriteCmd* *FileWriteCmd*
FileWriteCmd Before writing to a file, when not writing the FileWriteCmd Before writing to a file, when not writing the

View File

@@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.0. Last change: 2016 Dec 02 *channel.txt* For Vim version 8.0. Last change: 2017 Jun 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -489,6 +489,11 @@ If you want to handle both stderr and stdout with one handler use the
"callback" option: > "callback" option: >
let job = job_start(command, {"callback": "MyHandler"}) let job = job_start(command, {"callback": "MyHandler"})
Depending on the system, starting a job can put Vim in the background, the
started job gets the focus. To avoid that, use the `foreground()` function.
This might not always work when called early, put in the callback handler or
use a timer to call it after the job has started.
You can send a message to the command with ch_evalraw(). If the channel is in You can send a message to the command with ch_evalraw(). If the channel is in
JSON or JS mode you can use ch_evalexpr(). JSON or JS mode you can use ch_evalexpr().
@@ -513,7 +518,7 @@ By default this reads the whole buffer. This can be changed with the "in_top"
and "in_bot" options. and "in_bot" options.
A special mode is when "in_top" is set to zero and "in_bot" is not set: Every A special mode is when "in_top" is set to zero and "in_bot" is not set: Every
time a line is added to the buffer, the last-but-one line will be send to the time a line is added to the buffer, the last-but-one line will be sent to the
job stdin. This allows for editing the last line and sending it when pressing job stdin. This allows for editing the last line and sending it when pressing
Enter. Enter.
*channel-close-in* *channel-close-in*

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.0. Last change: 2016 Sep 27 *cmdline.txt* For Vim version 8.0. Last change: 2017 Jul 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -455,6 +455,9 @@ matches exactly one character.
The 'wildignorecase' option can be set to ignore case in filenames. The 'wildignorecase' option can be set to ignore case in filenames.
The 'wildmenu' option can be set to show the matches just above the command
line.
If you like tcsh's autolist completion, you can use this mapping: If you like tcsh's autolist completion, you can use this mapping:
:cnoremap X <C-L><C-D> :cnoremap X <C-L><C-D>
(Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D) (Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D)

View File

@@ -1,4 +1,4 @@
*debug.txt* For Vim version 8.0. Last change: 2012 Feb 11 *debug.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -53,7 +53,7 @@ Use this command to start Vim:
valgrind --log-file=valgrind.log --leak-check=full ./vim valgrind --log-file=valgrind.log --leak-check=full ./vim
Note: Vim will run much slower. If your .vimrc is big or you have several Note: Vim will run much slower. If your .vimrc is big or you have several
plugins you need to be patient for startup, or run with the "-u NONE" plugins you need to be patient for startup, or run with the "--clean"
argument. argument.
There are often a few leaks from libraries, such as getpwuid() and There are often a few leaks from libraries, such as getpwuid() and

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.0. Last change: 2017 Apr 10 *editing.txt* For Vim version 8.0. Last change: 2017 Jul 16
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -617,16 +617,16 @@ list of the current window.
Also see |++opt| and |+cmd|. Also see |++opt| and |+cmd|.
{Vi: no ++opt} {Vi: no ++opt}
:[count]arge[dit][!] [++opt] [+cmd] {name} *:arge* *:argedit* :[count]arge[dit][!] [++opt] [+cmd] {name} .. *:arge* *:argedit*
Add {name} to the argument list and edit it. Add {name}s to the argument list and edit it.
When {name} already exists in the argument list, this When {name} already exists in the argument list, this
entry is edited. entry is edited.
This is like using |:argadd| and then |:edit|. This is like using |:argadd| and then |:edit|.
Note that only one file name is allowed, and spaces Spaces in filenames have to be escaped with "\".
inside the file name are allowed, like with |:edit|.
[count] is used like with |:argadd|. [count] is used like with |:argadd|.
[!] is required if the current file cannot be If the current file cannot be |abandon|ed {name}s will
|abandon|ed. still be added to the argument list, but won't be
edited. No check for duplicates is done.
Also see |++opt| and |+cmd|. Also see |++opt| and |+cmd|.
{not in Vi} {not in Vi}
@@ -1328,9 +1328,11 @@ present in 'cpoptions' and "!" is not used in the command.
:chd[ir][!] [path] Same as |:cd|. :chd[ir][!] [path] Same as |:cd|.
*:lc* *:lcd* *:lc* *:lcd*
:lc[d][!] {path} Like |:cd|, but only set the current directory for the :lc[d][!] {path} Like |:cd|, but only set the current directory when
current window. The current directory for other the cursor is in the current window. The current
windows is not changed. {not in Vi} directory for other windows is not changed, switching
to another window will stop using {path}.
{not in Vi}
*:lch* *:lchdir* *:lch* *:lchdir*
:lch[dir][!] Same as |:lcd|. {not in Vi} :lch[dir][!] Same as |:lcd|. {not in Vi}

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.0. Last change: 2017 Apr 29 *eval.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2369,6 +2369,12 @@ tagfiles() List tags files used
tan({expr}) Float tangent of {expr} tan({expr}) Float tangent of {expr}
tanh({expr}) Float hyperbolic tangent of {expr} tanh({expr}) Float hyperbolic tangent of {expr}
tempname() String name for a temporary file tempname() String name for a temporary file
term_getsize() Dict get the size of a terminal
term_open() Job open a terminal window and run a job
term_scrape() List inspect terminal screen
term_sendkeys() Number send keystrokes to a terminal
term_setsize() Number set the size of a terminal
term_wait() Number wait for screen to be updated
test_alloc_fail({id}, {countdown}, {repeat}) test_alloc_fail({id}, {countdown}, {repeat})
none make memory allocation fail none make memory allocation fail
test_autochdir() none enable 'autochdir' during startup test_autochdir() none enable 'autochdir' during startup
@@ -3373,6 +3379,7 @@ did_filetype() Returns |TRUE| when autocommands are being executed and the
FileType event has been triggered at least once. Can be used FileType event has been triggered at least once. Can be used
to avoid triggering the FileType event again in the scripts to avoid triggering the FileType event again in the scripts
that detect the file type. |FileType| that detect the file type. |FileType|
Returns |FALSE| when `:setf FALLBACK` was used.
When editing another file, the counter is reset, thus this When editing another file, the counter is reset, thus this
really checks if the FileType event has been triggered for the really checks if the FileType event has been triggered for the
current buffer. This allows an autocommand that starts current buffer. This allows an autocommand that starts
@@ -4188,14 +4195,14 @@ getchar([expr]) *getchar()*
not consumed. Return zero if no character available. not consumed. Return zero if no character available.
Without [expr] and when [expr] is 0 a whole character or Without [expr] and when [expr] is 0 a whole character or
special key is returned. If it is an 8-bit character, the special key is returned. If it is a single character, the
result is a number. Use nr2char() to convert it to a String. result is a number. Use nr2char() to convert it to a String.
Otherwise a String is returned with the encoded character. Otherwise a String is returned with the encoded character.
For a special key it's a sequence of bytes starting with 0x80 For a special key it's a String with a sequence of bytes
(decimal: 128). This is the same value as the string starting with 0x80 (decimal: 128). This is the same value as
"\<Key>", e.g., "\<Left>". The returned value is also a the String "\<Key>", e.g., "\<Left>". The returned value is
String when a modifier (shift, control, alt) was used that is also a String when a modifier (shift, control, alt) was used
not included in the character. that is not included in the character.
When [expr] is 0 and Esc is typed, there will be a short delay When [expr] is 0 and Esc is typed, there will be a short delay
while Vim waits to see if this is the start of an escape while Vim waits to see if this is the start of an escape
@@ -4585,18 +4592,24 @@ 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}:
context get the context stored with |setqflist()| context get the context stored with |setqflist()|
items quickfix list entries
nr get information for this quickfix list; zero nr get information for this quickfix list; zero
means the current quickfix list means the current quickfix list and '$' means
the last quickfix list
title get the list title title get the list title
winid get the |window-ID| (if opened) winid get the |window-ID| (if opened)
all all of the above quickfix properties all all of the above quickfix properties
Non-string items in {what} are ignored. Non-string items in {what} are ignored.
If "nr" is not present then the current quickfix list is used. If "nr" is not present then the current quickfix list is used.
To get the number of lists in the quickfix stack, set 'nr' to
'$' in {what}. The 'nr' value in the returned dictionary
contains the quickfix stack size.
In case of error processing {what}, an empty dictionary is In case of error processing {what}, an empty dictionary is
returned. returned.
The returned dictionary contains the following entries: The returned dictionary contains the following entries:
context context information stored with |setqflist()| context context information stored with |setqflist()|
items quickfix list entries
nr quickfix list number nr quickfix list number
title quickfix list title text title quickfix list title text
winid quickfix |window-ID| (if opened) winid quickfix |window-ID| (if opened)
@@ -5460,7 +5473,10 @@ line({expr}) The result is a Number, which is the line number of the file
< *last-position-jump* < *last-position-jump*
This autocommand jumps to the last known position in a file This autocommand jumps to the last known position in a file
just after opening it, if the '" mark is set: > just after opening it, if the '" mark is set: >
:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif :au BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
line2byte({lnum}) *line2byte()* line2byte({lnum}) *line2byte()*
Return the byte count from the start of the buffer for line Return the byte count from the start of the buffer for line
@@ -5882,7 +5898,7 @@ max({expr}) Return the maximum value of all items in {expr}.
it returns the maximum of all values in the dictionary. it returns the maximum of all values in the dictionary.
If {expr} is neither a list nor a dictionary, or one of the If {expr} is neither a list nor a dictionary, or one of the
items in {expr} cannot be used as a Number this results in items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero. an error. An empty |List| or |Dictionary| results in zero.
*min()* *min()*
min({expr}) Return the minimum value of all items in {expr}. min({expr}) Return the minimum value of all items in {expr}.
@@ -5890,7 +5906,7 @@ min({expr}) Return the minimum value of all items in {expr}.
it returns the minimum of all values in the dictionary. it returns the minimum of all values in the dictionary.
If {expr} is neither a list nor a dictionary, or one of the If {expr} is neither a list nor a dictionary, or one of the
items in {expr} cannot be used as a Number this results in items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero. an error. An empty |List| or |Dictionary| results in zero.
*mkdir()* *E739* *mkdir()* *E739*
mkdir({name} [, {path} [, {prot}]]) mkdir({name} [, {path} [, {prot}]])
@@ -6185,8 +6201,8 @@ printf({fmt}, {expr1} ...) *printf()*
zero the decimal point is omitted. When the precision zero the decimal point is omitted. When the precision
is not specified 6 is used. A really big number is not specified 6 is used. A really big number
(out of range or dividing by zero) results in "inf" (out of range or dividing by zero) results in "inf"
or "-inf" with %f (INF or -INF with %F). or "-inf" with %f (INF or -INF with %F).
"0.0 / 0.0" results in "nan" with %f (NAN with %F). "0.0 / 0.0" results in "nan" with %f (NAN with %F).
Example: > Example: >
echo printf("%.2f", 12.115) echo printf("%.2f", 12.115)
< 12.12 < 12.12
@@ -6990,11 +7006,16 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
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 any Vim type can be stored as a context
nr list number in the quickfix stack items list of quickfix entries. Same as the {list}
argument.
nr list number in the quickfix stack; zero
means the current quickfix list and '$' means
the last quickfix list
title quickfix list title text title quickfix list title text
Unsupported keys in {what} are ignored. Unsupported keys in {what} are ignored.
If the "nr" item is not present, then the current quickfix list If the "nr" item is not present, then the current quickfix list
is modified. is modified. When creating a new quickfix list, "nr" can be
set to a value one greater than the quickfix stack size.
Examples: > Examples: >
:call setqflist([], 'r', {'title': 'My search'}) :call setqflist([], 'r', {'title': 'My search'})
@@ -7094,18 +7115,22 @@ shellescape({string} [, {special}]) *shellescape()*
quotes within {string}. quotes within {string}.
Otherwise it will enclose {string} in single quotes and Otherwise it will enclose {string} in single quotes and
replace all "'" with "'\''". replace all "'" with "'\''".
When the {special} argument is present and it's a non-zero When the {special} argument is present and it's a non-zero
Number or a non-empty String (|non-zero-arg|), then special Number or a non-empty String (|non-zero-arg|), then special
items such as "!", "%", "#" and "<cword>" will be preceded by items such as "!", "%", "#" and "<cword>" will be preceded by
a backslash. This backslash will be removed again by the |:!| a backslash. This backslash will be removed again by the |:!|
command. command.
The "!" character will be escaped (again with a |non-zero-arg| The "!" character will be escaped (again with a |non-zero-arg|
{special}) when 'shell' contains "csh" in the tail. That is {special}) when 'shell' contains "csh" in the tail. That is
because for csh and tcsh "!" is used for history replacement because for csh and tcsh "!" is used for history replacement
even when inside single quotes. even when inside single quotes.
The <NL> character is also escaped. With a |non-zero-arg|
{special} and 'shell' containing "csh" in the tail it's With a |non-zero-arg| {special} the <NL> character is also
escaped. When 'shell' containing "csh" in the tail it's
escaped a second time. escaped a second time.
Example of use with a |:!| command: > Example of use with a |:!| command: >
:exe '!dir ' . shellescape(expand('<cfile>'), 1) :exe '!dir ' . shellescape(expand('<cfile>'), 1)
< This results in a directory listing for the file under the < This results in a directory listing for the file under the
@@ -7637,17 +7662,29 @@ synIDtrans({synID}) *synIDtrans()*
":highlight link" are followed. ":highlight link" are followed.
synconcealed({lnum}, {col}) *synconcealed()* synconcealed({lnum}, {col}) *synconcealed()*
The result is a List. The first item in the list is 0 if the The result is a List with currently three items:
character at the position {lnum} and {col} is not part of a 1. The first item in the list is 0 if the character at the
concealable region, 1 if it is. The second item in the list is position {lnum} and {col} is not part of a concealable
a string. If the first item is 1, the second item contains the region, 1 if it is.
text which will be displayed in place of the concealed text, 2. The second item in the list is a string. If the first item
depending on the current setting of 'conceallevel'. The third is 1, the second item contains the text which will be
and final item in the list is a unique number representing the displayed in place of the concealed text, depending on the
specific syntax region matched. This allows detection of the current setting of 'conceallevel' and 'listchars'.
beginning of a new concealable region if there are two 3. The third and final item in the list is a number
consecutive regions with the same replacement character. representing the specific syntax region matched in the
For an example use see $VIMRUNTIME/syntax/2html.vim . line. When the character is not concealed the value is
zero. This allows detection of the beginning of a new
concealable region if there are two consecutive regions
with the same replacement character. For an example, if
the text is "123456" and both "23" and "45" are concealed
and replace by the character "X", then:
call returns ~
synconcealed(lnum, 1) [0, '', 0]
synconcealed(lnum, 2) [1, 'X', 1]
synconcealed(lnum, 3) [1, 'X', 1]
synconcealed(lnum, 4) [1, 'X', 2]
synconcealed(lnum, 5) [1, 'X', 2]
synconcealed(lnum, 6) [0, '', 0]
synstack({lnum}, {col}) *synstack()* synstack({lnum}, {col}) *synstack()*
@@ -7856,6 +7893,23 @@ tempname() *tempname()* *temp-file-name*
For MS-Windows forward slashes are used when the 'shellslash' For MS-Windows forward slashes are used when the 'shellslash'
option is set or when 'shellcmdflag' starts with '-'. option is set or when 'shellcmdflag' starts with '-'.
term_getsize() *term_getsize()*
Get the size of a terminal. NOT IMPLEMENTED YET
term_open() *term_open()*
Open a terminal window and run a job. NOT IMPLEMENTED YET
term_scrape() *term_scrape()*
Inspect terminal screen. NOT IMPLEMENTED YET
term_sendkeys() *term_sendkeys()*
Send keystrokes to a terminal. NOT IMPLEMENTED YET
term_setsize() *term_setsize()*
Set the size of a terminal. NOT IMPLEMENTED YET
term_wait() *term_wait()*
Wait for screen to be updated. NOT IMPLEMENTED YET
test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()* test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()*
This is for testing: If the memory allocation with {id} is This is for testing: If the memory allocation with {id} is
@@ -7912,8 +7966,19 @@ test_override({name}, {val}) *test_override()*
name effect when {val} is non-zero ~ name effect when {val} is non-zero ~
redraw disable the redrawing() function redraw disable the redrawing() function
char_avail disable the char_avail() function char_avail disable the char_avail() function
starting reset the "starting" variable, see below
ALL clear all overrides ({val} is not used) ALL clear all overrides ({val} is not used)
"starting" is to be used when a test should behave like
startup was done. Since the tests are run by sourcing a
script the "starting" variable is non-zero. This is usually a
good thing (tests run faster), but sometimes changes behavior
in a way that the test doesn't work properly.
When using: >
call test_override('starting', 1)
< The value of "starting" is saved. It is restored by: >
call test_override('starting', 0)
test_settime({expr}) *test_settime()* test_settime({expr}) *test_settime()*
Set the time Vim uses internally. Currently only used for Set the time Vim uses internally. Currently only used for
timestamps in the history, as they are used in viminfo, and timestamps in the history, as they are used in viminfo, and
@@ -7975,6 +8040,10 @@ timer_start({time}, {callback} [, {options}])
"repeat" Number of times to repeat calling the "repeat" Number of times to repeat calling the
callback. -1 means forever. When not present callback. -1 means forever. When not present
the callback will be called once. the callback will be called once.
If the timer causes an error three times in a
row the repeat is cancelled. This avoids that
Vim becomes unusable because of all the error
messages.
Example: > Example: >
func MyHandler(timer) func MyHandler(timer)
@@ -8334,8 +8403,8 @@ winwidth({nr}) *winwidth()*
:if winwidth(0) <= 50 :if winwidth(0) <= 50
: exe "normal 50\<C-W>|" : exe "normal 50\<C-W>|"
:endif :endif
< For getting the terminal or screen size, see the 'columns' < For getting the terminal or screen size, see the 'columns'
option. option.
wordcount() *wordcount()* wordcount() *wordcount()*
@@ -8353,11 +8422,11 @@ wordcount() *wordcount()*
cursor_words Number of words before cursor position cursor_words Number of words before cursor position
(not in Visual mode) (not in Visual mode)
visual_bytes Number of bytes visually selected visual_bytes Number of bytes visually selected
(only in Visual mode) (only in Visual mode)
visual_chars Number of chars visually selected visual_chars Number of chars visually selected
(only in Visual mode) (only in Visual mode)
visual_words Number of chars visually selected visual_words Number of chars visually selected
(only in Visual mode) (only in Visual mode)
*writefile()* *writefile()*
@@ -8701,6 +8770,9 @@ See |:verbose-cmd| for more information.
not used an error message is given. When [!] is used, not used an error message is given. When [!] is used,
an existing function is silently replaced. Unless it an existing function is silently replaced. Unless it
is currently being executed, that is an error. is currently being executed, that is an error.
NOTE: Use ! wisely. If used without care it can cause
an existing function to be replaced unexpectedly,
which is hard to debug.
For the {arguments} see |function-argument|. For the {arguments} see |function-argument|.
@@ -8750,18 +8822,36 @@ See |:verbose-cmd| for more information.
implies that the effect of |:nohlsearch| is undone implies that the effect of |:nohlsearch| is undone
when the function returns. when the function returns.
*:endf* *:endfunction* *E126* *E193* *:endf* *:endfunction* *E126* *E193* *W22*
:endf[unction] The end of a function definition. Must be on a line :endf[unction] [argument]
by its own, without other commands. The end of a function definition. Best is to put it
on a line by its own, without [argument].
[argument] can be:
| command command to execute next
\n command command to execute next
" comment always ignored
anything else ignored, warning given when
'verbose' is non-zero
The support for a following command was added in Vim
8.0.0654, before that any argument was silently
ignored.
To be able to define a function inside an `:execute`
command, use line breaks instead of |:bar|: >
:exe "func Foo()\necho 'foo'\nendfunc"
<
*:delf* *:delfunction* *E130* *E131* *E933* *:delf* *:delfunction* *E130* *E131* *E933*
:delf[unction] {name} Delete function {name}. :delf[unction][!] {name}
Delete function {name}.
{name} can also be a |Dictionary| entry that is a {name} can also be a |Dictionary| entry that is a
|Funcref|: > |Funcref|: >
:delfunc dict.init :delfunc dict.init
< This will remove the "init" entry from "dict". The < This will remove the "init" entry from "dict". The
function is deleted if there are no more references to function is deleted if there are no more references to
it. it.
With the ! there is no error if the function does not
exist.
*:retu* *:return* *E133* *:retu* *:return* *E133*
:retu[rn] [expr] Return from a function. When "[expr]" is given, it is :retu[rn] [expr] Return from a function. When "[expr]" is given, it is
evaluated and returned as the result of the function. evaluated and returned as the result of the function.
@@ -10692,12 +10782,6 @@ When the |+eval| feature is available the command is skipped because of the
"while 0". Without the |+eval| feature the "while 0" is an error, which is "while 0". Without the |+eval| feature the "while 0" is an error, which is
silently ignored, and the command is executed. silently ignored, and the command is executed.
The "<CR>" here is a real CR character, type CTRL-V Enter to get it.
When the |+eval| feature is available the ":" is remapped to add a double
quote, which has the effect of commenting-out the command. Without the
|+eval| feature the nnoremap command is skipped and the command is executed.
============================================================================== ==============================================================================
11. The sandbox *eval-sandbox* *sandbox* *E48* 11. The sandbox *eval-sandbox* *sandbox* *E48*

View File

@@ -116,7 +116,7 @@ NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
then "gnat xref -v *.ad?" then "gnat xref -v *.ad?"
4) Project manager support is completely broken - don't even try "gnat xref 4) Project manager support is completely broken - don't even try "gnat xref
-Padacl.gpr". -Padacl.gpr".
5) VIM is faster when the tags file is sorted - use "sort --unique 5) Vim is faster when the tags file is sorted - use "sort --unique
--ignore-case --output=tags tags" . --ignore-case --output=tags tags" .
6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark 6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
the file assorted. the file assorted.

View File

@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 8.0. Last change: 2016 Sep 12 *gui_x11.txt* For Vim version 8.0. Last change: 2017 Jun 27
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -279,8 +279,9 @@ For CDE "dtwm" (a derivative of Motif) add this line in the .Xdefaults: >
For "mwm" (Motif window manager) the line would be: > For "mwm" (Motif window manager) the line would be: >
Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
Mouse Pointers Available in X11 *X11_mouse_shapes*
Mouse Pointers Available in X11 ~
*X11_mouse_shapes*
By using the |'mouseshape'| option, the mouse pointer can be automatically By using the |'mouseshape'| option, the mouse pointer can be automatically
changed whenever Vim enters one of its various modes (e.g., Insert or changed whenever Vim enters one of its various modes (e.g., Insert or
Command). Currently, the available pointers are: Command). Currently, the available pointers are:
@@ -354,7 +355,9 @@ to the GTK documentation, however little there is, on how to do this.
See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
for more information. for more information.
*gtk-tooltip-colors*
Tooltip Colors ~
*gtk-tooltip-colors*
Example, which sets the tooltip colors to black on light-yellow: > Example, which sets the tooltip colors to black on light-yellow: >
style "tooltips" style "tooltips"
@@ -372,15 +375,122 @@ distribution.
For GTK+ 3, an effect similar to the above can be obtained by adding the For GTK+ 3, an effect similar to the above can be obtained by adding the
following snippet of CSS code to $XDG_HOME_DIR/gtk-3.0/gtk.css (usually, following snippet of CSS code to $XDG_HOME_DIR/gtk-3.0/gtk.css (usually,
$HOME/.config/gtk-3.0/gtk.css): $HOME/.config/gtk-3.0/gtk.css):
>
For GTK+ 3 < 3.20: >
.tooltip { .tooltip {
background-color: #ffffcc; background-color: #ffffcc;
color: #000000; color: #000000;
} }
< <
For GTK+ 3 >= 3.20: >
Using Vim as a GTK+ plugin *gui-gtk-socketid* tooltip {
background-color: #ffffcc;
text-shadow: none;
}
tooltip label {
color: #2e3436;
}
<
A Quick Look at GTK+ CSS ~
*gtk-css*
The contents of this subsection apply to GTK+ 3.20 or later which provides
stable support for GTK+ CSS:
https://developer.gnome.org/gtk3/stable/theming.html
GTK+ uses CSS for styling and layout of widgets. In this subsection, we'll
have a quick look at GTK+ CSS through simple, illustrative examples.
Example 1. Empty Space Adjustment ~
By default, the toolbar and the tabline of the GTK+ 3 GUI are somewhat larger
than those of the GTK+ 2 GUI. Some people may want to make them look similar
to the GTK+ 2 GUI in size.
To do that, we'll try reducing empty space around icons and labels that looks
apparently superfluous.
Add the following lines to $XDG_HOME_DIR/gtk-3.0/gtk.css (usually,
$HOME/.config/gtk-3.0/gtk.css): >
toolbar button {
margin-top: -2px;
margin-right: 0px;
margin-bottom: -2px;
margin-left: 0px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
notebook tab {
margin-top: -1px;
margin-right: 3px;
margin-bottom: -1px;
margin-left: 3px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
<
Since it's a CSS, they can be rewritten using shorthand: >
toolbar button {
margin: -2px 0px;
padding: 0px;
}
notebook tab {
margin: -1px 3px;
padding: 0px
}
<
Note: You might want to use 'toolbariconsize' to adjust the icon size, too.
Note: Depending on the icon theme and/or the font in use, some extra tweaks
may be needed for a satisfactory result.
Note: In addition to margin and padding, you can use border. For details,
refer to the box model of CSS, e.g.,
https://www.w3schools.com/css/css_boxmodel.asp
Example 2. More Than Just Colors ~
GTK+ CSS supports gradients as well: >
tooltip {
background-image: -gtk-gradient(linear,
0 0, 0 1,
color-stop(0, #344752),
color-stop(0.5, #546772),
color-stop(1, #243742));
}
tooltip label {
color: #f3f3f3;
}
<
Gradients can be used to make a GUI element visually distinguishable from
others without relying on high contrast. Accordingly, effective use of them is
a useful technique to give a theme a sense of unity in color and luminance.
Note: Theming can be difficult since it must make every application look
equally good; making a single application more charming often gets others
unexpectedly less attractive or even deteriorates their usability. Keep this
in mind always when you try improving a theme.
Using Vim as a GTK+ plugin ~
*gui-gtk-socketid*
When the GTK+ version of Vim starts up normally, it creates its own top level When the GTK+ version of Vim starts up normally, it creates its own top level
window (technically, a 'GtkWindow'). GTK+ provides an embedding facility with window (technically, a 'GtkWindow'). GTK+ provides an embedding facility with
its GtkSocket and GtkPlug widgets. If one GTK+ application creates a its GtkSocket and GtkPlug widgets. If one GTK+ application creates a
@@ -425,8 +535,8 @@ Note: Avoid use of --enable-gnome-check with GTK+ 3 GUI build. The
functionality mentioned above is consolidated in GTK+ 3. functionality mentioned above is consolidated in GTK+ 3.
GNOME session support *gui-gnome-session* *gnome-session* GNOME session support ~
*gui-gnome-session* *gnome-session*
On logout, Vim shows the well-known exit confirmation dialog if any buffers On logout, Vim shows the well-known exit confirmation dialog if any buffers
are modified. Clicking [Cancel] will stop the logout process. Otherwise the are modified. Clicking [Cancel] will stop the logout process. Otherwise the
current session is stored to disk by using the |:mksession| command, and current session is stored to disk by using the |:mksession| command, and

View File

@@ -6,7 +6,7 @@
Introduction *hangul* Introduction *hangul*
------------ ------------
It is to input hangul, the Korean language, with VIM GUI version. It is to input hangul, the Korean language, with Vim GUI version.
If you have a XIM program, you can use another |+xim| feature. If you have a XIM program, you can use another |+xim| feature.
Basically, it is for anybody who has no XIM program. Basically, it is for anybody who has no XIM program.
@@ -31,7 +31,7 @@ You should set LANG variable to Korean locale such as ko, ko_KR.eucKR
or ko_KR.UTF-8. or ko_KR.UTF-8.
If you set LC_ALL variable, it should be set to Korean locale also. If you set LC_ALL variable, it should be set to Korean locale also.
VIM resource Vim resource
------------ ------------
You may want to set 'encoding' and 'fileencodings'. You may want to set 'encoding' and 'fileencodings'.
Next are examples: > Next are examples: >
@@ -53,12 +53,12 @@ If both are set, VIM_KEYBOARD has higher priority.
Hangul Fonts Hangul Fonts
------------ ------------
If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. If you use GTK version of gvim, you should set 'guifont' and 'guifontwide'.
For example: > For example: >
set guifont=Courier\ 12 set guifont=Courier\ 12
set guifontwide=NanumGothicCoding\ 12 set guifontwide=NanumGothicCoding\ 12
If you use Motif or Athena version of GVIM, you should set 'guifontset' in If you use Motif or Athena version of gvim, you should set 'guifontset' in
your vimrc. You can set fontset in the .Xdefaults file. your vimrc. You can set fontset in the .Xdefaults file.
$HOME/.gvimrc: > $HOME/.gvimrc: >
@@ -77,11 +77,11 @@ $HOME/.Xdefaults: >
attention! the , (comma) or ; (semicolon) attention! the , (comma) or ; (semicolon)
And there should be no ':set guifont'. If it exists, then Gvim ignores And there should be no ':set guifont'. If it exists, then gvim ignores
':set guifontset'. It means VIM runs without fontset supporting. ':set guifontset'. It means Vim runs without fontset supporting.
So, you can see only English. Hangul does not be correctly displayed. So, you can see only English. Hangul does not be correctly displayed.
After "fontset" feature is enabled, VIM does not allow using english After "fontset" feature is enabled, Vim does not allow using english
font only in "font" setting for syntax. font only in "font" setting for syntax.
For example, if you use > For example, if you use >
:set guifontset=eng_font,your_font :set guifontset=eng_font,your_font
@@ -99,7 +99,7 @@ We don't support Johab font.
We don't support Hanja input. We don't support Hanja input.
And We don't have any plan to support them. And We don't have any plan to support them.
If you really need such features, you can use console version of VIM with a If you really need such features, you can use console version of Vim with a
capable terminal emulator. capable terminal emulator.
Bug or Comment Bug or Comment

View File

@@ -31,7 +31,7 @@ Get specific help: It is possible to go directly to whatever you want help
help entries for "word". help entries for "word".
Or use ":helpgrep word". |:helpgrep| Or use ":helpgrep word". |:helpgrep|
VIM stands for Vi IMproved. Most of VIM was made by Bram Moolenaar, but only Vim stands for Vi IMproved. Most of Vim was made by Bram Moolenaar, but only
through the help of many others. See |credits|. through the help of many others. See |credits|.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*doc-file-list* *Q_ct* *doc-file-list* *Q_ct*

View File

@@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 8.0. Last change: 2011 Jun 12 *if_cscop.txt* For Vim version 8.0. Last change: 2017 Jun 14
VIM REFERENCE MANUAL by Andy Kahn VIM REFERENCE MANUAL by Andy Kahn
@@ -91,9 +91,10 @@ suggested use.)
2. Cscope related commands *cscope-commands* 2. Cscope related commands *cscope-commands*
*:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560* *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
All cscope commands are accessed through suboptions to the main cscope All cscope commands are accessed through suboptions to the cscope commands.
command ":cscope". The shortest abbreviation is ":cs". The ":scscope" `:cscope` or `:cs` is the main command
command does the same and also splits the window (short: "scs"). `:scscope` or `:scs` does the same and splits the window
`:lcscope` or `:lcs` uses the location list, see |:lcscope|
The available subcommands are: The available subcommands are:

View File

@@ -41,9 +41,9 @@ instance), code similar to the following should be used:
$vim = new Win32::OLE 'Vim.Application'; $vim = new Win32::OLE 'Vim.Application';
[C#] > [C#] >
// Add a reference to VIM in your project. // Add a reference to Vim in your project.
// Choose the COM tab. // Choose the COM tab.
// Select "VIM Ole Interface 1.1 Type Library" // Select "Vim Ole Interface 1.1 Type Library"
Vim.Vim vimobj = new Vim.Vim(); Vim.Vim vimobj = new Vim.Vim();
Vim does not support acting as a "hidden" OLE server, like some other OLE Vim does not support acting as a "hidden" OLE server, like some other OLE

View File

@@ -7,7 +7,7 @@
Perl and Vim *perl* *Perl* Perl and Vim *perl* *Perl*
1. Editing Perl files |perl-editing| 1. Editing Perl files |perl-editing|
2. Compiling VIM with Perl interface |perl-compiling| 2. Compiling Vim with Perl interface |perl-compiling|
3. Using the Perl interface |perl-using| 3. Using the Perl interface |perl-using|
4. Dynamic loading |perl-dynamic| 4. Dynamic loading |perl-dynamic|
@@ -33,7 +33,7 @@ Vim in the $VIMRUNTIME/tools directory. This script has currently more
features than Exuberant ctags' Perl support. features than Exuberant ctags' Perl support.
============================================================================== ==============================================================================
2. Compiling VIM with Perl interface *perl-compiling* 2. Compiling Vim with Perl interface *perl-compiling*
To compile Vim with Perl interface, you need Perl 5.004 (or later). Perl must To compile Vim with Perl interface, you need Perl 5.004 (or later). Perl must
be installed before you compile Vim. Vim's Perl interface does NOT work with be installed before you compile Vim. Vim's Perl interface does NOT work with

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 8.0. Last change: 2017 Apr 22 *index.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1573,6 +1573,7 @@ tag command action ~
|:tcldo| :tcld[o] execute Tcl command for each line |:tcldo| :tcld[o] execute Tcl command for each line
|:tclfile| :tclf[ile] execute Tcl script file |:tclfile| :tclf[ile] execute Tcl script file
|:tearoff| :te[aroff] tear-off a menu |:tearoff| :te[aroff] tear-off a menu
|:terminal| :ter[minal] open a terminal window
|:tfirst| :tf[irst] jump to first matching tag |:tfirst| :tf[irst] jump to first matching tag
|:throw| :th[row] throw an exception |:throw| :th[row] throw an exception
|:tjump| :tj[ump] like ":tselect", but jump directly when there |:tjump| :tj[ump] like ":tselect", but jump directly when there

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.0. Last change: 2017 Apr 07 *insert.txt* For Vim version 8.0. Last change: 2017 May 30
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -634,13 +634,13 @@ Completion can be done for:
10. User defined completion |i_CTRL-X_CTRL-U| 10. User defined completion |i_CTRL-X_CTRL-U|
11. omni completion |i_CTRL-X_CTRL-O| 11. omni completion |i_CTRL-X_CTRL-O|
12. Spelling suggestions |i_CTRL-X_s| 12. Spelling suggestions |i_CTRL-X_s|
13. keywords in 'complete' |i_CTRL-N| 13. keywords in 'complete' |i_CTRL-N| |i_CTRL-P|
All these (except 2) are done in CTRL-X mode. This is a sub-mode of Insert All these, except CTRL-N and CTRL-P, are done in CTRL-X mode. This is a
and Replace modes. You enter CTRL-X mode by typing CTRL-X and one of the sub-mode of Insert and Replace modes. You enter CTRL-X mode by typing CTRL-X
CTRL-X commands. You exit CTRL-X mode by typing a key that is not a valid and one of the CTRL-X commands. You exit CTRL-X mode by typing a key that is
CTRL-X mode command. Valid keys are the CTRL-X command itself, CTRL-N (next), not a valid CTRL-X mode command. Valid keys are the CTRL-X command itself,
and CTRL-P (previous). CTRL-N (next), and CTRL-P (previous).
Also see the 'infercase' option if you want to adjust the case of the match. Also see the 'infercase' option if you want to adjust the case of the match.

View File

@@ -84,8 +84,8 @@ The Vim pages contain the most recent information about Vim. They also
contain links to the most recent version of Vim. The FAQ is a list of contain links to the most recent version of Vim. The FAQ is a list of
Frequently Asked Questions. Read this if you have problems. Frequently Asked Questions. Read this if you have problems.
VIM home page: http://www.vim.org/ Vim home page: http://www.vim.org/
VIM FAQ: http://vimdoc.sf.net/ Vim FAQ: http://vimdoc.sf.net/
Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.0. Last change: 2017 Mar 10 *map.txt* For Vim version 8.0. Last change: 2017 May 30
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -185,7 +185,7 @@ that starts with ",". Then you need to type another character for Vim to know
whether to use the "," mapping or the longer one. To avoid this add the whether to use the "," mapping or the longer one. To avoid this add the
<nowait> argument. Then the mapping will be used when it matches, Vim does <nowait> argument. Then the mapping will be used when it matches, Vim does
not wait for more characters to be typed. However, if the characters were not wait for more characters to be typed. However, if the characters were
already type they are used. already typed they are used.
*:map-<silent>* *:map-silent* *:map-<silent>* *:map-silent*
To define a mapping which will not be echoed on the command line, add To define a mapping which will not be echoed on the command line, add
@@ -798,7 +798,7 @@ Bear in mind that convert-meta has been reported to have troubles when used in
UTF-8 locales. On terminals like xterm, the "metaSendsEscape" resource can be UTF-8 locales. On terminals like xterm, the "metaSendsEscape" resource can be
toggled on the fly through the "Main Options" menu, by pressing Ctrl-LeftClick toggled on the fly through the "Main Options" menu, by pressing Ctrl-LeftClick
on the terminal; that's a good last resource in case you want to send ESC when on the terminal; that's a good last resource in case you want to send ESC when
using other applications but not when inside VIM. using other applications but not when inside Vim.
1.11 MAPPING AN OPERATOR *:map-operator* 1.11 MAPPING AN OPERATOR *:map-operator*

View File

@@ -120,7 +120,7 @@ In case you do not want the NetBeans interface you can disable it by
uncommenting a line with "--disable-netbeans" in the Makefile. uncommenting a line with "--disable-netbeans" in the Makefile.
Currently the NetBeans interface is supported by Vim running in a terminal and Currently the NetBeans interface is supported by Vim running in a terminal and
by GVim when it is run with one of the following GUIs: GTK, GNOME, Windows, by gvim when it is run with one of the following GUIs: GTK, GNOME, Windows,
Athena and Motif. Athena and Motif.
If Motif support is required the user must supply XPM libraries. See If Motif support is required the user must supply XPM libraries. See
@@ -996,7 +996,7 @@ to "Vim". In the Expert tab make sure the "Vim Command" is correct.
You should be careful if you change the "Vim Command". There are command You should be careful if you change the "Vim Command". There are command
line options there which must be there for the connection to be properly line options there which must be there for the connection to be properly
set up. You can change the command name but that's about it. If your gvim set up. You can change the command name but that's about it. If your gvim
can be found by your $PATH then the VIM Command can start with "gvim". If can be found by your $PATH then the Vim Command can start with "gvim". If
you don't want gvim searched from your $PATH then hard code in the full you don't want gvim searched from your $PATH then hard code in the full
Unix path name. At this point you should get a gvim for any source file Unix path name. At this point you should get a gvim for any source file
you open in NetBeans. you open in NetBeans.

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2017 Mar 22 *options.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -370,7 +370,7 @@ Note: In the future more global options can be made global-local. Using
Setting the filetype Setting the filetype
:setf[iletype] {filetype} *:setf* *:setfiletype* :setf[iletype] [FALLBACK] {filetype} *:setf* *:setfiletype*
Set the 'filetype' option to {filetype}, but only if Set the 'filetype' option to {filetype}, but only if
not done yet in a sequence of (nested) autocommands. not done yet in a sequence of (nested) autocommands.
This is short for: > This is short for: >
@@ -380,6 +380,13 @@ Setting the filetype
< This command is used in a filetype.vim file to avoid < This command is used in a filetype.vim file to avoid
setting the 'filetype' option twice, causing different setting the 'filetype' option twice, causing different
settings and syntax files to be loaded. settings and syntax files to be loaded.
When the optional FALLBACK argument is present, a
later :setfiletype command will override the
'filetype'. This is to used for filetype detections
that are just a guess. |did_filetype()| will return
false after this command.
{not in Vi} {not in Vi}
*option-window* *optwin* *option-window* *optwin*
@@ -862,6 +869,12 @@ A jump table for the options with a short description can be found at |Q_op|.
< Vim will guess the value. In the GUI this should work correctly, < Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value. in other cases Vim might not be able to guess the right value.
When the t_BG option is set, Vim will use it to request the background
color from the terminal. If the returned RGB value is dark/light and
'background' is not dark/light, 'background' will be set and the
screen is redrawn. This may have side effects, make t_BG empty in
your .vimrc if you suspect this problem.
When starting the GUI, the default value for 'background' will be When starting the GUI, the default value for 'background' will be
"light". When the value is not set in the .gvimrc, and Vim detects "light". When the value is not set in the .gvimrc, and Vim detects
that the background is actually quite dark, 'background' is set to that the background is actually quite dark, 'background' is set to
@@ -2700,7 +2713,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Makes the 'g' and 'c' flags of the ":substitute" command to be Makes the 'g' and 'c' flags of the ":substitute" command to be
toggled each time the flag is given. See |complex-change|. See toggled each time the flag is given. See |complex-change|. See
also 'gdefault' option. also 'gdefault' option.
Switching this option on is discouraged! Switching this option on may break plugins!
*'emoji'* *'emo'* *'noemoji'* *'noemo'* *'emoji'* *'emo'* *'noemoji'* *'noemo'*
'emoji' 'emo' boolean (default: on) 'emoji' 'emo' boolean (default: on)
@@ -3509,6 +3522,9 @@ A jump table for the options with a short description can be found at |Q_op|.
:s///gg subst. all subst. one :s///gg subst. all subst. one
NOTE: This option is reset when 'compatible' is set. NOTE: This option is reset when 'compatible' is set.
DEPRECATED: Setting this option may break plugins that are not aware
of this option. Also, many users get confused that adding the /g flag
has the opposite effect of that it normally does.
*'grepformat'* *'gfm'* *'grepformat'* *'gfm'*
'grepformat' 'gfm' string (default "%f:%l:%m,%f:%l%m,%f %l%m") 'grepformat' 'gfm' string (default "%f:%l:%m,%f:%l%m,%f %l%m")
@@ -4024,7 +4040,9 @@ A jump table for the options with a short description can be found at |Q_op|.
D:DiffDelete,T:DiffText,>:SignColumn, D:DiffDelete,T:DiffText,>:SignColumn,
B:SpellBad,P:SpellCap,R:SpellRare, B:SpellBad,P:SpellCap,R:SpellRare,
L:SpellLocal,-:Conceal,+:Pmenu,=:PmenuSel, L:SpellLocal,-:Conceal,+:Pmenu,=:PmenuSel,
x:PmenuSbar,X:PmenuThumb") x:PmenuSbar,X:PmenuThumb,*:TabLine,
#:TabLineSel,_:TabLineFill,!:CursorColumn,
.:CursorLine,o:ColorColumn,q:QuickFixLine")
global global
{not in Vi} {not in Vi}
This option can be used to set highlighting mode for various This option can be used to set highlighting mode for various
@@ -4948,8 +4966,8 @@ A jump table for the options with a short description can be found at |Q_op|.
When on the plugin scripts are loaded when starting up |load-plugins|. When on the plugin scripts are loaded when starting up |load-plugins|.
This option can be reset in your |vimrc| file to disable the loading This option can be reset in your |vimrc| file to disable the loading
of plugins. of plugins.
Note that using the "-u NONE" and "--noplugin" command line arguments Note that using the "-u NONE", "-u DEFAULTS" and "--noplugin" command
reset this option. |-u| |--noplugin| line arguments reset this option. See |-u| and |--noplugin|.
*'luadll'* *'luadll'*
'luadll' string (default depends on the build) 'luadll' string (default depends on the build)
@@ -5927,10 +5945,14 @@ 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' and |:match| highlighting. searching for patterns for 'hlsearch', |:match| highlighting an syntax
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. This is used to avoid that Vim hangs matches will be highlighted.
when using a very complicated pattern. For syntax highlighting the time applies per window. When over the
limit syntax highlighting is disabled until |CTRL-L| is used.
This is used to avoid that Vim hangs when using a very complicated
pattern.
*'regexpengine'* *'re'* *'regexpengine'* *'re'*
'regexpengine' 're' number (default 0) 'regexpengine' 're' number (default 0)
@@ -7308,7 +7330,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Watch out for errors in expressions. They may render Vim unusable! Watch out for errors in expressions. They may render Vim unusable!
If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and
edit your .vimrc or whatever with "vim -u NONE" to get it right. edit your .vimrc or whatever with "vim --clean" to get it right.
Examples: Examples:
Emulate standard status line with 'ruler' set > Emulate standard status line with 'ruler' set >
@@ -7729,8 +7751,29 @@ A jump table for the options with a short description can be found at |Q_op|.
compatible terminal. compatible terminal.
If setting this option does not work (produces a colorless UI) If setting this option does not work (produces a colorless UI)
reading |xterm-true-color| might help. reading |xterm-true-color| might help.
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'*
'termkey' 'tk' string (default "CTRL-W")
local to window
{not in Vi}
The key that precedes a Vim command in a terminal window. Other keys
are sent to the job running in the window.
The string must be one key stroke.
NOT IMPLEMENTED YET
*'thesaurus'* *'tsr'*
'termsize' 'tms' string (default "")
local to window
{not in Vi}
Size of the |terminal| window. Format: {rows}x{columns}.
- When empty the terminal gets the size from the window.
- When set (e.g., "24x80") the terminal size is fixed. If the window
is smaller only the top-left part is displayed.
NOT IMPLEMENTED YET
*'terse'* *'noterse'* *'terse'* *'noterse'*
'terse' boolean (default off) 'terse' boolean (default off)
global global
@@ -8290,13 +8333,14 @@ A jump table for the options with a short description can be found at |Q_op|.
{not available when compiled without the |+viminfo| {not available when compiled without the |+viminfo|
feature} feature}
When non-empty, the viminfo file is read upon startup and written When non-empty, the viminfo file is read upon startup and written
when exiting Vim (see |viminfo-file|). The string should be a comma when exiting Vim (see |viminfo-file|). Except when 'viminfofile' is
separated list of parameters, each consisting of a single character "NONE".
identifying the particular parameter, followed by a number or string The string should be a comma separated list of parameters, each
which specifies the value of that parameter. If a particular consisting of a single character identifying the particular parameter,
character is left out, then the default value is used for that followed by a number or string which specifies the value of that
parameter. The following is a list of the identifying characters and parameter. If a particular character is left out, then the default
the effect of their value. value is used for that parameter. The following is a list of the
identifying characters and the effect of their value.
CHAR VALUE ~ CHAR VALUE ~
*viminfo-!* *viminfo-!*
! When included, save and restore global variables that start ! When included, save and restore global variables that start
@@ -8356,9 +8400,9 @@ A jump table for the options with a short description can be found at |Q_op|.
has been used since the last search command. has been used since the last search command.
*viminfo-n* *viminfo-n*
n Name of the viminfo file. The name must immediately follow n Name of the viminfo file. The name must immediately follow
the 'n'. Must be at the end of the option! If the "-i" the 'n'. Must be at the end of the option! If the
argument was given when starting Vim, that file name overrides 'viminfofile' option is set, that file name overrides the one
the one given here with 'viminfo'. Environment variables are given here with 'viminfo'. Environment variables are
expanded when opening the file, not when setting the option. expanded when opening the file, not when setting the option.
*viminfo-r* *viminfo-r*
r Removable media. The argument is a string (up to the next r Removable media. The argument is a string (up to the next
@@ -8399,6 +8443,17 @@ A jump table for the options with a short description can be found at |Q_op|.
NOTE: This option is set to the Vim default value when 'compatible' NOTE: This option is set to the Vim default value when 'compatible'
is reset. is reset.
*'viminfofile'* *'vif'*
'viminfofile' 'vif' string (default: "")
global
{not in Vi}
{not available when compiled without the |+viminfo|
feature}
When non-empty, overrides the file name used for viminfo.
When equal to "NONE" no viminfo file will be read or written.
This option can be set with the |-i| command line flag. The |--clean|
command line flag sets it to "NONE".
*'virtualedit'* *'ve'* *'virtualedit'* *'ve'*
'virtualedit' 've' string (default "") 'virtualedit' 've' string (default "")
global global
@@ -8432,14 +8487,27 @@ A jump table for the options with a short description can be found at |Q_op|.
'visualbell' 'vb' boolean (default off) 'visualbell' 'vb' boolean (default off)
global global
{not in Vi} {not in Vi}
Use visual bell instead of beeping. The terminal code to display the Use a visual bell instead of beeping. The terminal code to display the
visual bell is given with 't_vb'. When no beep or flash is wanted, visual bell is given with 't_vb'. When no beep or flash is wanted,
use ":set vb t_vb=". use: >
Note: When the GUI starts, 't_vb' is reset to its default value. You :set vb t_vb=
might want to set it again in your |gvimrc|. < If you want a short flash, you can use this on many terminals: >
:set vb t_vb=[?5h$<100>[?5l
< Here $<100> specifies the time, you can use a smaller or bigger value
to get a shorter or longer flash.
Note: Vim will limit the bell to once per half a second. This avoids
having to wait for the flashing to finish when there are lots of
bells, e.g. on key repeat. This also happens without 'visualbell'
set.
In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display
for 20 msec. If you want to use a different time, use "<Esc>|40f", for 20 msec. If you want to use a different time, use "<Esc>|40f",
where 40 is the time in msec. where 40 is the time in msec.
Note: When the GUI starts, 't_vb' is reset to its default value. You
might want to set it again in your |gvimrc|.
Does not work on the Amiga, you always get a screen flash. Does not work on the Amiga, you always get a screen flash.
Also see 'errorbells'. Also see 'errorbells'.

View File

@@ -144,7 +144,7 @@ The default value for $VIM is set at compile time and can be determined with >
:version :version
The normal value is /boot/home/config/share/vim. If you don't like it you can The normal value is /boot/home/config/share/vim. If you don't like it you can
set the VIM environment variable to override this, or set 'helpfile' in your set the Vim environment variable to override this, or set 'helpfile' in your
.vimrc: > .vimrc: >
:if version >= 500 :if version >= 500

View File

@@ -539,7 +539,7 @@ More info under :help hardcopy
8.10 Setting up the symbols 8.10 Setting up the symbols
When I use GVIM this way and press CTRL-Y in the parent terminal, gvim exits. When I use gvim this way and press CTRL-Y in the parent terminal, gvim exits.
I now use a different symbol that seems to work OK and fixes the problem. I now use a different symbol that seems to work OK and fixes the problem.
I suggest this instead: > I suggest this instead: >
@@ -547,7 +547,7 @@ I suggest this instead: >
The /INPUT=NLA0: separates the standard input of the gvim process from the The /INPUT=NLA0: separates the standard input of the gvim process from the
parent terminal, to block signals from the parent window. parent terminal, to block signals from the parent window.
Without the -GEOMETRY, the GVIM window size will be minimal and the menu Without the -GEOMETRY, the gvim window size will be minimal and the menu
will be confused after a window-resize. will be confused after a window-resize.
(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac) (Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac)
@@ -764,14 +764,14 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
9. VMS related changes *vms-changes* 9. VMS related changes *vms-changes*
Version 7.4 Version 7.4
- Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name" - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name"
add _un_ at the beginning to keep the extension add _un_ at the beginning to keep the extension
- correct swap file name wildcard handling - correct swap file name wildcard handling
- handle iconv usage correctly - handle iconv usage correctly
- do not optimize on vax - otherwise it hangs compiling crypto files - do not optimize on vax - otherwise it hangs compiling crypto files
- fileio.c fix the comment - fileio.c fix the comment
- correct RealWaitForChar - correct RealWaitForChar
- after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have
G_FLOAT but IA64 uses IEEE float otherwise Vim crashes G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
- guard against crashes that are caused by mixed filenames - guard against crashes that are caused by mixed filenames

View File

@@ -135,7 +135,7 @@ you will need to get a version older than that.
6. Running under Windows 3.1 *win32-win3.1* 6. Running under Windows 3.1 *win32-win3.1*
*win32s* *windows-3.1* *gui-w32s* *win32s* *windows-3.1* *gui-w32s*
There was a special version of Gvim that runs under Windows 3.1 and 3.11. There was a special version of gvim that runs under Windows 3.1 and 3.11.
Support was removed in patch 7.4.1363. Support was removed in patch 7.4.1363.
============================================================================== ==============================================================================

View File

@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.0. Last change: 2017 Mar 29 *pattern.txt* For Vim version 8.0. Last change: 2017 Jun 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1076,12 +1076,16 @@ x A single character, with no special meaning, matches itself
":s/[/x/" searches for "[/x" and replaces it with nothing. It does ":s/[/x/" searches for "[/x" and replaces it with nothing. It does
not search for "[" and replaces it with "x"! not search for "[" and replaces it with "x"!
*E944* *E945*
If the sequence begins with "^", it matches any single character NOT If the sequence begins with "^", it matches any single character NOT
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'. in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
- If two characters in the sequence are separated by '-', this is - If two characters in the sequence are separated by '-', this is
shorthand for the full list of ASCII characters between them. E.g., shorthand for the full list of ASCII characters between them. E.g.,
"[0-9]" matches any decimal digit. Non-ASCII characters can be "[0-9]" matches any decimal digit. If the starting character exceeds
used, but the character values must not be more than 256 apart. the ending character, e.g. [c-a], E944 occurs. Non-ASCII characters
can be used, but the character values must not be more than 256 apart
in the old regexp engine. For example, searching by [\u3000-\u4000]
after setting re=1 emits a E945 error. Prepending \%#=2 will fix it.
- A character class expression is evaluated to the set of characters - A character class expression is evaluated to the set of characters
belonging to that character class. The following character classes belonging to that character class. The following character classes
are supported: are supported:

View File

@@ -9,7 +9,7 @@ Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this The VIM LICENSE (see |copyright|) applies to the files in this
package, including getscriptPlugin.vim, getscript.vim, package, including getscriptPlugin.vim, getscript.vim,
GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript" GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript"
instead of "VIM". Like anything else that's free, getscript and its instead of "Vim". Like anything else that's free, getscript and its
associated files are provided *as is* and comes with no warranty of associated files are provided *as is* and comes with no warranty of
any kind, either expressed or implied. No guarantees of any kind, either expressed or implied. No guarantees of
merchantability. No guarantees of suitability for any purpose. By merchantability. No guarantees of suitability for any purpose. By
@@ -68,7 +68,7 @@ Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
mv GetLatestVimScripts.dist GetLatestVimScripts.dat mv GetLatestVimScripts.dist GetLatestVimScripts.dat
(edit GetLatestVimScripts.dat to install your own personal (edit GetLatestVimScripts.dat to install your own personal
list of desired plugins -- see |GetLatestVimScripts_dat|) list of desired plugins -- see |GetLatestVimScripts_dat|)
3. Windows: 3. Windows:
vim getscript.vba vim getscript.vba
:so % :so %

View File

@@ -99,25 +99,25 @@ If the option is empty, then vim will use the system default printer for
HPUX: hp-roman8, HPUX: hp-roman8,
EBCDIC: ebcdic-uk) EBCDIC: ebcdic-uk)
global global
Sets the character encoding used when printing. This option tells VIM which Sets the character encoding used when printing. This option tells Vim which
print character encoding file from the "print" directory in 'runtimepath' to print character encoding file from the "print" directory in 'runtimepath' to
use. use.
This option will accept any value from |encoding-names|. Any recognized names This option will accept any value from |encoding-names|. Any recognized names
are converted to VIM standard names - see 'encoding' for more details. Names are converted to Vim standard names - see 'encoding' for more details. Names
not recognized by VIM will just be converted to lower case and underscores not recognized by Vim will just be converted to lower case and underscores
replaced with '-' signs. replaced with '-' signs.
If 'printencoding' is empty or VIM cannot find the file then it will use If 'printencoding' is empty or Vim cannot find the file then it will use
'encoding' (if VIM is compiled with |+multi_byte| and it is set an 8-bit 'encoding' (if Vim is compiled with |+multi_byte| and it is set an 8-bit
encoding) to find the print character encoding file. If VIM is unable to find encoding) to find the print character encoding file. If Vim is unable to find
a character encoding file then it will use the "latin1" print character a character encoding file then it will use the "latin1" print character
encoding file. encoding file.
When 'encoding' is set to a multi-byte encoding, VIM will try to convert When 'encoding' is set to a multi-byte encoding, Vim will try to convert
characters to the printing encoding for printing (if 'printencoding' is empty characters to the printing encoding for printing (if 'printencoding' is empty
then the conversion will be to latin1). Conversion to a printing encoding then the conversion will be to latin1). Conversion to a printing encoding
other than latin1 will require VIM to be compiled with the |+iconv| feature. other than latin1 will require Vim to be compiled with the |+iconv| feature.
If no conversion is possible then printing will fail. Any characters that If no conversion is possible then printing will fail. Any characters that
cannot be converted will be replaced with upside down question marks. cannot be converted will be replaced with upside down question marks.
@@ -203,7 +203,7 @@ header is used when this option is empty.
'printmbcharset' 'pmbcs' string (default "") 'printmbcharset' 'pmbcs' string (default "")
global global
Sets the CJK character set to be used when generating CJK output from Sets the CJK character set to be used when generating CJK output from
|:hardcopy|. The following predefined values are currently recognised by VIM: |:hardcopy|. The following predefined values are currently recognised by Vim:
Value Description ~ Value Description ~
Chinese GB_2312-80 Chinese GB_2312-80
@@ -270,7 +270,7 @@ Japanese text you would do the following; >
If 'printmbcharset' is not one of the above values then it is assumed to If 'printmbcharset' is not one of the above values then it is assumed to
specify a custom multi-byte character set and no check will be made that it is specify a custom multi-byte character set and no check will be made that it is
compatible with the value for 'printencoding'. VIM will look for a file compatible with the value for 'printencoding'. Vim will look for a file
defining the character set in the "print" directory in 'runtimepath'. defining the character set in the "print" directory in 'runtimepath'.
*pmbfn-option* *pmbfn-option*
@@ -420,10 +420,10 @@ There are currently a number of limitations with PostScript printing:
possible to get all the characters in an encoding to print by installing a possible to get all the characters in an encoding to print by installing a
new version of the Courier font family. new version of the Courier font family.
- Multi-byte support - Currently VIM will try to convert multi-byte characters - Multi-byte support - Currently Vim will try to convert multi-byte characters
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
empty). Any characters that are not successfully converted are shown as empty). Any characters that are not successfully converted are shown as
unknown characters. Printing will fail if VIM cannot convert the multi-byte unknown characters. Printing will fail if Vim cannot convert the multi-byte
to the 8-bit encoding. to the 8-bit encoding.
============================================================================== ==============================================================================
@@ -434,11 +434,11 @@ you need to define your own PostScript font encoding vector. Details on how
to define a font encoding vector is beyond the scope of this help file, but to define a font encoding vector is beyond the scope of this help file, but
you can find details in the PostScript Language Reference Manual, 3rd Edition, you can find details in the PostScript Language Reference Manual, 3rd Edition,
published by Addison-Wesley and available in PDF form at published by Addison-Wesley and available in PDF form at
http://www.adobe.com/. The following describes what you need to do for VIM to http://www.adobe.com/. The following describes what you need to do for Vim to
locate and use your print character encoding. locate and use your print character encoding.
i. Decide on a unique name for your encoding vector, one that does not clash i. Decide on a unique name for your encoding vector, one that does not clash
with any of the recognized or standard encoding names that VIM uses (see with any of the recognized or standard encoding names that Vim uses (see
|encoding-names| for a list), and that no one else is likely to use. |encoding-names| for a list), and that no one else is likely to use.
ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
'runtimepath' and rename it with your unique name. 'runtimepath' and rename it with your unique name.
@@ -446,23 +446,23 @@ iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1
with your unique name (don't forget the line starting %%Title:), and with your unique name (don't forget the line starting %%Title:), and
modify the array of glyph names to define your new encoding vector. The modify the array of glyph names to define your new encoding vector. The
array must have exactly 256 entries or you will not be able to print! array must have exactly 256 entries or you will not be able to print!
iv. Within VIM, set 'printencoding' to your unique encoding name and then iv. Within Vim, set 'printencoding' to your unique encoding name and then
print your file. VIM will now use your custom print character encoding. print your file. Vim will now use your custom print character encoding.
VIM will report an error with the resource file if you change the order or Vim will report an error with the resource file if you change the order or
content of the first 3 lines, other than the name of the encoding on the line content of the first 3 lines, other than the name of the encoding on the line
starting %%Title: or the version number on the line starting %%Version:. starting %%Title: or the version number on the line starting %%Version:.
[Technical explanation for those that know PostScript - VIM looks for a file [Technical explanation for those that know PostScript - Vim looks for a file
with the same name as the encoding it will use when printing. The file with the same name as the encoding it will use when printing. The file
defines a new PostScript Encoding resource called /VIM-name, where name is the defines a new PostScript Encoding resource called /VIM-name, where name is the
print character encoding VIM will use.] print character encoding Vim will use.]
============================================================================== ==============================================================================
5. PostScript CJK Printing *postscript-cjk-printing* 5. PostScript CJK Printing *postscript-cjk-printing*
*E673* *E674* *E675* *E673* *E674* *E675*
VIM supports printing of Chinese, Japanese, and Korean files. Setting up VIM Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim
to correctly print CJK files requires setting up a few more options. to correctly print CJK files requires setting up a few more options.
Each of these countries has many standard character sets and encodings which Each of these countries has many standard character sets and encodings which
@@ -483,7 +483,7 @@ option allows you to specify different fonts to use when printing characters
which are syntax highlighted with the font styles normal, italic, bold and which are syntax highlighted with the font styles normal, italic, bold and
bold-italic. bold-italic.
No CJK fonts are supplied with VIM. There are some free Korean, Japanese, and No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and
Traditional Chinese fonts available at: Traditional Chinese fonts available at:
http://examples.oreilly.com/cjkvinfo/adobe/samples/ http://examples.oreilly.com/cjkvinfo/adobe/samples/
@@ -498,7 +498,7 @@ CJK fonts can be large containing several thousand glyphs, and it is not
uncommon to find that they only contain a subset of a national standard. It uncommon to find that they only contain a subset of a national standard. It
is not unusual to find the fonts to not include characters for codes in the is not unusual to find the fonts to not include characters for codes in the
ASCII code range. If you find half-width Roman characters are not appearing ASCII code range. If you find half-width Roman characters are not appearing
in your printout then you should configure VIM to use the Courier font the in your printout then you should configure Vim to use the Courier font the
half-width ASCII characters with 'printmbfont'. If your font does not include half-width ASCII characters with 'printmbfont'. If your font does not include
other characters then you will need to find another font that does. other characters then you will need to find another font that does.
@@ -506,7 +506,7 @@ Another issue with ASCII characters, is that the various national character
sets specify a couple of different glyphs in the ASCII code range. If you sets specify a couple of different glyphs in the ASCII code range. If you
print ASCII text using the national character set you may see some unexpected print ASCII text using the national character set you may see some unexpected
characters. If you want true ASCII code printing then you need to configure characters. If you want true ASCII code printing then you need to configure
VIM to output ASCII characters for the ASCII code range with 'printmbfont'. Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
It is possible to define your own multi-byte character set although this It is possible to define your own multi-byte character set although this
should not be attempted lightly. A discussion on the process if beyond the should not be attempted lightly. A discussion on the process if beyond the
@@ -525,13 +525,13 @@ print job completing.
There are a number of possible causes as to why the printing may have failed: There are a number of possible causes as to why the printing may have failed:
- Wrong version of the prolog resource file. The prolog resource file - Wrong version of the prolog resource file. The prolog resource file
contains some PostScript that VIM needs to be able to print. Each version contains some PostScript that Vim needs to be able to print. Each version
of VIM needs one particular version. Make sure you have correctly installed of Vim needs one particular version. Make sure you have correctly installed
the runtime files, and don't have any old versions of a file called prolog the runtime files, and don't have any old versions of a file called prolog
in the print directory in your 'runtimepath' directory. in the print directory in your 'runtimepath' directory.
- Paper size. Some PostScript printers will abort printing a file if they do - Paper size. Some PostScript printers will abort printing a file if they do
not support the requested paper size. By default VIM uses A4 paper. Find not support the requested paper size. By default Vim uses A4 paper. Find
out what size paper your printer normally uses and set the appropriate paper out what size paper your printer normally uses and set the appropriate paper
size with 'printoptions'. If you cannot find the name of the paper used, size with 'printoptions'. If you cannot find the name of the paper used,
measure a sheet and compare it with the table of supported paper sizes listed measure a sheet and compare it with the table of supported paper sizes listed
@@ -668,7 +668,7 @@ complex print document creation.
N-UP PRINTING N-UP PRINTING
The psnup utility takes an existing PostScript file generated from VIM and The psnup utility takes an existing PostScript file generated from Vim and
convert it to an n-up version. The simplest way to create a 2-up printout is convert it to an n-up version. The simplest way to create a 2-up printout is
to first create a PostScript file with: > to first create a PostScript file with: >
@@ -724,16 +724,16 @@ There are a couple of points to bear in mind:
============================================================================== ==============================================================================
8. Formfeed Characters *printing-formfeed* 8. Formfeed Characters *printing-formfeed*
By default VIM does not do any special processing of |formfeed| control By default Vim does not do any special processing of |formfeed| control
characters. Setting the 'printoptions' formfeed item will make VIM recognize characters. Setting the 'printoptions' formfeed item will make Vim recognize
formfeed characters and continue printing the current line at the beginning formfeed characters and continue printing the current line at the beginning
of the first line on a new page. The use of formfeed characters provides of the first line on a new page. The use of formfeed characters provides
rudimentary print control but there are certain things to be aware of. rudimentary print control but there are certain things to be aware of.
VIM will always start printing a line (including a line number if enabled) Vim will always start printing a line (including a line number if enabled)
containing a formfeed character, even if it is the first character on the containing a formfeed character, even if it is the first character on the
line. This means if a line starting with a formfeed character is the first line. This means if a line starting with a formfeed character is the first
line of a page then VIM will print a blank page. line of a page then Vim will print a blank page.
Since the line number is printed at the start of printing the line containing Since the line number is printed at the start of printing the line containing
the formfeed character, the remainder of the line printed on the new page the formfeed character, the remainder of the line printed on the new page
@@ -742,7 +742,7 @@ lines of a long line when wrap in 'printoptions' is enabled).
If the formfeed character is the last character on a line, then printing will If the formfeed character is the last character on a line, then printing will
continue on the second line of the new page, not the first. This is due to continue on the second line of the new page, not the first. This is due to
VIM processing the end of the line after the formfeed character and moving Vim processing the end of the line after the formfeed character and moving
down a line to continue printing. down a line to continue printing.
Due to the points made above it is recommended that when formfeed character Due to the points made above it is recommended that when formfeed character

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 8.0. Last change: 2017 Mar 06 *quickfix.txt* For Vim version 8.0. Last change: 2017 Jun 13
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -425,7 +425,9 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
which will indicate the command that produced the which will indicate the command that produced the
quickfix list. This can be used to compose a custom quickfix list. This can be used to compose a custom
status line if the value of 'statusline' is adjusted status line if the value of 'statusline' is adjusted
properly. properly. Whenever this buffer is modified by a
quickfix command or function, the |b:changedtick|
variable is incremented.
*:lop* *:lopen* *:lop* *:lopen*
:lop[en] [height] Open a window to show the location list for the :lop[en] [height] Open a window to show the location list for the
@@ -472,7 +474,11 @@ keep its height, ignoring 'winheight' and 'equalalways'. You can change the
height manually (e.g., by dragging the status line above it with the mouse). height manually (e.g., by dragging the status line above it with the mouse).
In the quickfix window, each line is one error. The line number is equal to In the quickfix window, each line is one error. The line number is equal to
the error number. You can use ":.cc" to jump to the error under the cursor. the error number. The current entry is highlighted with the QuickFixLine
highlighting. You can change it to your liking, e.g.: >
:hi QuickFixLine ctermbg=Yellow guibg=Yellow
You can use ":.cc" to jump to the error under the cursor.
Hitting the <Enter> key or double-clicking the mouse on a line has the same Hitting the <Enter> key or double-clicking the mouse on a line has the same
effect. The file containing the error is opened in the window above the effect. The file containing the error is opened in the window above the
quickfix window. If there already is a window for that file, it is used quickfix window. If there already is a window for that file, it is used

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.0. Last change: 2016 Dec 16 *quickref.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -920,6 +920,8 @@ 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
'termsize' 'tms' 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'
@@ -1309,6 +1311,7 @@ Context-sensitive completion on the command-line:
|:sfind| :sf[ind] {file} split window, find {file} in 'path' |:sfind| :sf[ind] {file} split window, find {file} in 'path'
and edit it and edit it
|:terminal| :terminal {cmd} open a terminal window
|CTRL-W_]| CTRL-W ] split window and jump to tag under |CTRL-W_]| CTRL-W ] split window and jump to tag under
cursor cursor
|CTRL-W_f| CTRL-W f split window and edit file name under |CTRL-W_f| CTRL-W f split window and edit file name under

View File

@@ -63,53 +63,53 @@ versions of 'emacs' in the late 1970's and was relieved by finding 'vi' in the
first UNIX I came across in 1983). In my opinion, it's about time 'VIM' first UNIX I came across in 1983). In my opinion, it's about time 'VIM'
replace 'emacs' as the standard for top editors. (Bo Thide', Sweden) replace 'emacs' as the standard for top editors. (Bo Thide', Sweden)
I love and use VIM heavily too. (Larry Wall) I love and use Vim heavily too. (Larry Wall)
Vi is like a Ferrari, if you're a beginner, it handles like a bitch, but once Vi is like a Ferrari, if you're a beginner, it handles like a bitch, but once
you get the hang of it, it's small, powerful and FAST! (Unknown) you get the hang of it, it's small, powerful and FAST! (Unknown)
VIM is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!" Vim is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!"
(Stephen Riehm, Germany) (Stephen Riehm, Germany)
Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht Schon bei Nutzung eines Bruchteils der Vim-Funktionen wird der Benutzer recht
schnell die Vorzuege dieses Editors kennen- und schaetzenlernen. schnell die Vorzuege dieses Editors kennen- und schaetzenlernen.
Translated: Even when only using a fraction of VIM-functions, the user will Translated: Even when only using a fraction of Vim-functions, the user will
quickly get used to and appreciate the advantages of this editor. (Garry quickly get used to and appreciate the advantages of this editor. (Garry
Glendown, conclusion of an article on VIM in iX magazine 9/1998) Glendown, conclusion of an article on Vim in iX magazine 9/1998)
I've recently acquired the O'Reilly book on VI (it also discusses VIM I've recently acquired the O'Reilly book on Vi (it also discusses Vim
in-depth), and I'm amazed at just how powerful this application is. (Jeffrey in-depth), and I'm amazed at just how powerful this application is. (Jeffrey
Rankin) Rankin)
This guide was written using the Windows 9.x distribution of GVIM, which is This guide was written using the Windows 9.x distribution of gvim, which is
quite possibly the greatest thing to come along since God created the naked quite possibly the greatest thing to come along since God created the naked
girl. (Michael DiBernardo) girl. (Michael DiBernardo)
Boy, I thought I knew almost everything about VIM, but every time I browse the Boy, I thought I knew almost everything about Vim, but every time I browse the
online documentation, I hit upon a minor but cool aspect of a VIM feature that online documentation, I hit upon a minor but cool aspect of a Vim feature that
I didn't know before! I must say the documentation is one the finest I've I didn't know before! I must say the documentation is one the finest I've
ever seen in a product -- even better than most commercial products. ever seen in a product -- even better than most commercial products.
(Gautam Mudunuri) (Gautam Mudunuri)
VIM 4.5 is really a fantastic editor. It has sooooo many features and more Vim 4.5 is really a fantastic editor. It has sooooo many features and more
importantly, the defaults are so well thought out that you really don't have importantly, the defaults are so well thought out that you really don't have
to change anything!! Words cannot express my amazement and gratitude to the to change anything!! Words cannot express my amazement and gratitude to the
creators of VIM. Keep it up. (Vikas, USA) creators of Vim. Keep it up. (Vikas, USA)
I wonder how long it will be before people will refer to other Vi editors as I wonder how long it will be before people will refer to other Vi editors as
VIM clones? (Darren Hiebert) Vim clones? (Darren Hiebert)
I read about [auto-positioning-in-file-based-on-the-errors-from-make] in one I read about [auto-positioning-in-file-based-on-the-errors-from-make] in one
of those "Perfect Programmer's Editor" threads and was delighted to discover of those "Perfect Programmer's Editor" threads and was delighted to discover
that VIM already supports it. (Brendan Macmillan, Australia) that Vim already supports it. (Brendan Macmillan, Australia)
I just discovered VIM (5.0) and I'm telling everyone I know about it! I just discovered Vim (5.0) and I'm telling everyone I know about it!
I tell them VIM stands for VI for the new (M)illenium. Thanks so much! I tell them Vim stands for Vi for the new (M)illenium. Thanks so much!
(Matt F. Valentine) (Matt F. Valentine)
I think from now on "vi" should be called "Vim Imitation", not the other way I think from now on "vi" should be called "Vim Imitation", not the other way
around. (Rungun Ramanathan) around. (Rungun Ramanathan)
The Law of VIM: The Law of Vim:
For each member b of the possible behaviour space B of program P, there exists For each member b of the possible behaviour space B of program P, there exists
a finite time t before which at least one user u in the total user space U of a finite time t before which at least one user u in the total user space U of
program P will request b becomes a member of the allowed behaviour space B' program P will request b becomes a member of the allowed behaviour space B'
@@ -118,42 +118,42 @@ In other words: Sooner or later everyone wants everything as an option.
(Negri) (Negri)
Whenever I move to a new computing platform, the first thing I do is to port Whenever I move to a new computing platform, the first thing I do is to port
VIM. Lately, I am simply stunned by its ease of compilation using the Vim. Lately, I am simply stunned by its ease of compilation using the
configure facility. (A.M. Sabuncu, Turkey) configure facility. (A.M. Sabuncu, Turkey)
The options are really excellent and very powerful. (Anish Maharaj) The options are really excellent and very powerful. (Anish Maharaj)
The Spring user-interface designs are in, and word from the boutiques is that The Spring user-interface designs are in, and word from the boutiques is that
80x24 text-only mode is back with a *vengeance! Vi editor clone VIM burst onto 80x24 text-only mode is back with a *vengeance! Vi editor clone Vim burst onto
March desk-tops with a dazzling show of pastel syntax highlights for its 5.0 March desk-tops with a dazzling show of pastel syntax highlights for its 5.0
look. Strident and customizable, VIM raises eyebrows with its interpretation look. Strident and customizable, Vim raises eyebrows with its interpretation
of the classic Vi single-key macro collection. of the classic Vi single-key macro collection.
http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l
I just wanted to take this opportunity to let you know that VIM 5 ROCKS! I just wanted to take this opportunity to let you know that Vim 5 ROCKS!
Syntax highlighting: how did I survive without it?! Thank you for creating Syntax highlighting: how did I survive without it?! Thank you for creating
mankind's best editor! (Mun Johl, USA) mankind's best editor! (Mun Johl, USA)
Thanks again for VIM. I use it every day on Linux. (Eric Foster-Johnson, Thanks again for Vim. I use it every day on Linux. (Eric Foster-Johnson,
author of the book "UNIX Programming Tools") author of the book "UNIX Programming Tools")
The BEST EDITOR EVER (Stuart Woolford) The BEST EDITOR EVER (Stuart Woolford)
I have used most of VIM's fancy features at least once, many frequently, and I I have used most of Vim's fancy features at least once, many frequently, and I
can honestly say that I couldn't live with anything less anymore. My can honestly say that I couldn't live with anything less anymore. My
productivity has easily doubled compared to what it was when I used vi. productivity has easily doubled compared to what it was when I used vi.
(Sitaram Chamarty) (Sitaram Chamarty)
I luv VIM. It is incredible. I'm naming my first-born Vimberly. (Jose I luv Vim. It is incredible. I'm naming my first-born Vimberly. (Jose
Unpingco, USA) Unpingco, USA)
Hint: "VIM" is "vi improved" - much better! (Sven Guckes, Germany) Hint: "Vim" is "vi improved" - much better! (Sven Guckes, Germany)
I use VIM every day. I spend more time in VIM than in any other program... I use Vim every day. I spend more time in Vim than in any other program...
It's the best vi clone there is. I think it's great. (Craig Sanders, It's the best vi clone there is. I think it's great. (Craig Sanders,
Australia) Australia)
I strongly advise using VIM--its infinite undo/redo saved me much grief. I strongly advise using Vim--its infinite undo/redo saved me much grief.
(Terry Brown) (Terry Brown)
Thanks very much for writing what in my opinion is the finest text editor on Thanks very much for writing what in my opinion is the finest text editor on
@@ -163,98 +163,98 @@ the planet. If I were to get another cat, I would name it "Vim".
I typed :set all and the screen FILLED up with options. A whole screen of I typed :set all and the screen FILLED up with options. A whole screen of
things to be set and unset. I saw some of my old friends like wrapmargin, things to be set and unset. I saw some of my old friends like wrapmargin,
modelines and showmode, but the screen was FILLED with new friends! I love modelines and showmode, but the screen was FILLED with new friends! I love
them all! I love VIM! I'm so happy that I've found this editor! I feel them all! I love Vim! I'm so happy that I've found this editor! I feel
like how I once felt when I started using vi after a couple of years of using like how I once felt when I started using vi after a couple of years of using
ed. I never thought I'd forsake my beloved ed, but vi ... oh god, vi was ed. I never thought I'd forsake my beloved ed, but vi ... oh god, vi was
great. And now, VIM. (Peter Jay Salzman, USA) great. And now, Vim. (Peter Jay Salzman, USA)
I am really happy with such a wonderful software package. Much better than I am really happy with such a wonderful software package. Much better than
almost any expensive, off the shelf program. (Jeff Walker) almost any expensive, off the shelf program. (Jeff Walker)
Whenever I reread the VIM documentation I'm overcome with excitement at the Whenever I reread the Vim documentation I'm overcome with excitement at the
power of the editor. (William Edward Webber, Australia) power of the editor. (William Edward Webber, Australia)
Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions Hurrah for Vim!! It is "at your fingertips" like vi, and has the extensions
that vi sorely needs: highlighting for executing commands on blocks, an easily that vi sorely needs: highlighting for executing commands on blocks, an easily
navigable and digestible help screen, and more. (Paul Pax) navigable and digestible help screen, and more. (Paul Pax)
The reason WHY I don't have this amazingly useful macro anymore, is that I The reason WHY I don't have this amazingly useful macro anymore, is that I
now use VIM - and this is built in!! (Stephen Riehm, Germany) now use Vim - and this is built in!! (Stephen Riehm, Germany)
I am a user of VIM and I love it. I use it to do all my programming, C, I am a user of Vim and I love it. I use it to do all my programming, C,
C++, HTML what ever. (Tim Allwine) C++, HTML what ever. (Tim Allwine)
I discovered VIM after years of struggling with the original vi, and I just I discovered Vim after years of struggling with the original vi, and I just
can't live without it anymore. (Emmanuel Mogenet, USA) can't live without it anymore. (Emmanuel Mogenet, USA)
Emacs has not a bit of chance to survive so long as VIM is around. Besides, Emacs has not a bit of chance to survive so long as Vim is around. Besides,
it also has the most detailed software documentation I have ever seen---much it also has the most detailed software documentation I have ever seen---much
better than most commercial software! (Leiming Qian) better than most commercial software! (Leiming Qian)
This version of VIM will just blow people apart when they discover just how This version of Vim will just blow people apart when they discover just how
fantastic it is! (Tony Nugent, Australia) fantastic it is! (Tony Nugent, Australia)
I took your advice & finally got VIM & I'm really impressed. Instant convert. I took your advice & finally got Vim & I'm really impressed. Instant convert.
(Patrick Killelea, USA) (Patrick Killelea, USA)
VIM is by far my favorite piece of shareware and I have been particularly Vim is by far my favorite piece of shareware and I have been particularly
pleased with version 3.0. This is really a solid piece of work. (Robert pleased with version 3.0. This is really a solid piece of work. (Robert
Colon, USA) Colon, USA)
VIM is a joy to use, it is so well thought and practical that I wonder why Vim is a joy to use, it is so well thought and practical that I wonder why
anybody would use visual development tools. VIM is powerful and elegant, it anybody would use visual development tools. Vim is powerful and elegant, it
looks deceptively simple but is almost as complex as a 747 (especially when I looks deceptively simple but is almost as complex as a 747 (especially when I
look at my growing .vimrc), keep up that wonderful job, VIM is a centerpiece look at my growing .vimrc), keep up that wonderful job, Vim is a centerpiece
of the free software world. (Louis-David Mitterand, USA) of the free software world. (Louis-David Mitterand, USA)
I cannot believe how great it is to use VIM. I think the guys at work are I cannot believe how great it is to use Vim. I think the guys at work are
getting tired of hearing me bragging about it. Others eyes are lighting up. getting tired of hearing me bragging about it. Others eyes are lighting up.
(Rick Croote) (Rick Croote)
Emacs takes way too much time to start up and run, it is too big and bulky for Emacs takes way too much time to start up and run, it is too big and bulky for
effective use and the interface is more confusing than it is of any help. VIM effective use and the interface is more confusing than it is of any help. Vim
however is short, it is fast, it is powerful, it has a good interface and it however is short, it is fast, it is powerful, it has a good interface and it
is all purpose. (Paal Ditlefsen Ekran) is all purpose. (Paal Ditlefsen Ekran)
From the first time I got VIM3.0, I was very enthusiastic. It has almost no From the first time I got Vim3.0, I was very enthusiastic. It has almost no
problems. The swapfile handling and the backup possibilities are robust, also problems. The swapfile handling and the backup possibilities are robust, also
the protection against editing one file twice. It is very compatible to the the protection against editing one file twice. It is very compatible to the
real VI (and that is a MUST, because my brain is trained over years in using real VI (and that is a MUST, because my brain is trained over years in using
it). (Gert van Antwerpen, Holland) it). (Gert van Antwerpen, Holland)
Visual mode in VIM is a very powerful thing! (Tony Nugent, Australia) Visual mode in Vim is a very powerful thing! (Tony Nugent, Australia)
I have to say that VIM is =THE= single greatest piece of source code to ever I have to say that Vim is =THE= single greatest piece of source code to ever
come across the net (Jim Battle, USA). come across the net (Jim Battle, USA).
In fact, if you do want to get a new vi I'd suggest VIM-3.0. This is, by In fact, if you do want to get a new vi I'd suggest Vim-3.0. This is, by
far, the best version of vi I've ever seen (Albert W. Schueller). far, the best version of vi I've ever seen (Albert W. Schueller).
I should mention that VIM is a very good editor and can compete with anything I should mention that Vim is a very good editor and can compete with anything
(Ilya Beloozerov). (Ilya Beloozerov).
To tell the truth sometimes I used elvis, vile, xvi, calvin, etc. And this is To tell the truth sometimes I used elvis, vile, xvi, calvin, etc. And this is
the reason that I can state that VIM is the best! (Ferenc Deak, Hungary) the reason that I can state that Vim is the best! (Ferenc Deak, Hungary)
VIM is by far the best editor that I have used in a long time, and I have Vim is by far the best editor that I have used in a long time, and I have
looked at just about every thing that is available for every platform that I looked at just about every thing that is available for every platform that I
use. VIM is the best on all of them. (Guy L. Oliver) use. Vim is the best on all of them. (Guy L. Oliver)
VIM is the greatest editor since the stone chisel. (Jose Unpingco, USA) Vim is the greatest editor since the stone chisel. (Jose Unpingco, USA)
I would like to say that with VIM I am finally making the 'emacs to vi' I would like to say that with Vim I am finally making the 'emacs to vi'
transition - as an Editor it is so much better in many ways: keyboard layout, transition - as an Editor it is so much better in many ways: keyboard layout,
memory usage, text alteration to name 3. (Mark Adam) memory usage, text alteration to name 3. (Mark Adam)
In fact, now if I want to know what a particular setting does in vi, I fire up In fact, now if I want to know what a particular setting does in vi, I fire up
VIM and check out its help! (Nikhil Patel, USA) Vim and check out its help! (Nikhil Patel, USA)
As a vi user, VIM has made working with text a far more pleasant task than As a vi user, Vim has made working with text a far more pleasant task than
before I encountered this program. (Steinar Knutsen, Norway) before I encountered this program. (Steinar Knutsen, Norway)
I use VIM since version 3.0. Since that time, it is the ONLY editor I use, I use Vim since version 3.0. Since that time, it is the ONLY editor I use,
with Solaris, Linux and OS/2 Warp. I suggest all my friends to use VIM, they with Solaris, Linux and OS/2 Warp. I suggest all my friends to use Vim, they
try, and they continue using it. VIM is really the best software I have ever try, and they continue using it. Vim is really the best software I have ever
downloaded from the Internet, and the best editor I know of. (Marco downloaded from the Internet, and the best editor I know of. (Marco
Eccettuato, Italy) Eccettuato, Italy)

View File

@@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.0. Last change: 2017 Feb 06 *repeat.txt* For Vim version 8.0. Last change: 2017 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -46,7 +46,7 @@ of area is used, see |visual-repeat|.
============================================================================== ==============================================================================
2. Multiple repeats *multi-repeat* 2. Multiple repeats *multi-repeat*
*:g* *:global* *E147* *E148* *:g* *:global* *E148*
:[range]g[lobal]/{pattern}/[cmd] :[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the Execute the Ex command [cmd] (default ":p") on the
lines within [range] where {pattern} matches. lines within [range] where {pattern} matches.
@@ -79,8 +79,15 @@ The default for [range] is the whole buffer (1,$). Use "CTRL-C" to interrupt
the command. If an error message is given for a line, the command for that the command. If an error message is given for a line, the command for that
line is aborted and the global command continues with the next marked or line is aborted and the global command continues with the next marked or
unmarked line. unmarked line.
*E147*
When the command is used recursively, it only works on one line. Giving a
range is then not allowed. This is useful to find all lines that match a
pattern and do not match another pattern: >
:g/found/v/notfound/{cmd}
This first finds all lines containing "found", but only executes {cmd} when
there is no match for "notfound".
To repeat a non-Ex command, you can use the ":normal" command: > To execute a non-Ex command, you can use the `:normal` command: >
:g/pat/normal {commands} :g/pat/normal {commands}
Make sure that {commands} ends with a whole command, otherwise Vim will wait Make sure that {commands} ends with a whole command, otherwise Vim will wait
for you to type the rest of the command for each match. The screen will not for you to type the rest of the command for each match. The screen will not

View File

@@ -478,7 +478,7 @@ Vim uses a binary file format for spelling. This greatly speeds up loading
the word list and keeps it small. the word list and keeps it small.
*.aff* *.dic* *Myspell* *.aff* *.dic* *Myspell*
You can create a Vim spell file from the .aff and .dic files that Myspell You can create a Vim spell file from the .aff and .dic files that Myspell
uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt
files are zip files which contain the .aff and .dic files. You should be able files are zip files which contain the .aff and .dic files. You should be able
to find them here: to find them here:
http://extensions.services.openoffice.org/dictionary http://extensions.services.openoffice.org/dictionary
@@ -1614,7 +1614,7 @@ COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE*
KEY (Hunspell) *spell-KEY* KEY (Hunspell) *spell-KEY*
Define characters that are close together on the keyboard. Define characters that are close together on the keyboard.
Used to give better suggestions. Not supported. Used to give better suggestions. Not supported.
LANG (Hunspell) *spell-LANG* LANG (Hunspell) *spell-LANG*
This specifies language-specific behavior. This actually This specifies language-specific behavior. This actually
moves part of the language knowledge into the program, moves part of the language knowledge into the program,

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.0. Last change: 2017 Jan 15 *starting.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -140,11 +140,12 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
--noplugin Skip loading plugins. Resets the 'loadplugins' option. --noplugin Skip loading plugins. Resets the 'loadplugins' option.
{not in Vi} {not in Vi}
Note that the |-u| argument may also disable loading plugins: Note that the |-u| argument may also disable loading plugins:
argument load vimrc files load plugins ~ argument load: vimrc files plugins defaults.vim ~
(nothing) yes yes (nothing) yes yes yes
-u NONE no no -u NONE no no no
-u NORC no yes -u DEFAULTS no no yes
--noplugin yes no -u NORC no yes no
--noplugin yes no yes
--startuptime {fname} *--startuptime* --startuptime {fname} *--startuptime*
During startup write timing messages to the file {fname}. During startup write timing messages to the file {fname}.
@@ -465,21 +466,30 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
--nofork GUI: Do not fork. Same as |-f|. --nofork GUI: Do not fork. Same as |-f|.
*-u* *E282* *-u* *E282*
-u {vimrc} The file {vimrc} is read for initializations. Most other -u {vimrc} The file {vimrc} is read for initializations. Most other
initializations are skipped; see |initialization|. This can initializations are skipped; see |initialization|.
be used to start Vim in a special mode, with special
This can be used to start Vim in a special mode, with special
mappings and settings. A shell alias can be used to make mappings and settings. A shell alias can be used to make
this easy to use. For example: > this easy to use. For example: >
alias vimc vim -u ~/.c_vimrc !* alias vimc vim -u ~/.c_vimrc !*
< Also consider using autocommands; see |autocommand|. < Also consider using autocommands; see |autocommand|.
When {vimrc} is equal to "NONE" (all uppercase), all When {vimrc} is equal to "NONE" (all uppercase), all
initializations from files and environment variables are initializations from files and environment variables are
skipped, including reading the |gvimrc| file when the GUI skipped, including reading the |gvimrc| file when the GUI
starts. Loading plugins is also skipped. starts. Loading plugins is also skipped.
When {vimrc} is equal to "NORC" (all uppercase), this has the When {vimrc} is equal to "NORC" (all uppercase), this has the
same effect as "NONE", but loading plugins is not skipped. same effect as "NONE", but loading plugins is not skipped.
Using the "-u" argument has the side effect that the
'compatible' option will be on by default. This can have When {vimrc} is equal to "DEFAULTS" (all uppercase), this has
unexpected effects. See |'compatible'|. the same effect as "NONE", but the |defaults.vim| script is
loaded, which will also set 'nocompatible'.
Using the "-u" argument with another argument than DEFAULTS
has the side effect that the 'compatible' option will be on by
default. This can have unexpected effects. See
|'compatible'|.
{not in Vi} {not in Vi}
*-U* *E230* *-U* *E230*
@@ -497,6 +507,13 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
":rv" or ":wv" are used. See also |viminfo-file|. ":rv" or ":wv" are used. See also |viminfo-file|.
{not in Vi} {not in Vi}
*--clean*
--clean Equal to "-u DEFAULTS -i NONE":
- initializations from files and environment variables is
skipped
- the |defaults.vim| script is loaded, which implies
'nocompatible': use Vim defaults
- no viminfo file is read or written
*-x* *-x*
-x Use encryption to read/write files. Will prompt for a key, -x Use encryption to read/write files. Will prompt for a key,
which is then stored in the 'key' option. All writes will which is then stored in the 'key' option. All writes will
@@ -868,6 +885,7 @@ accordingly. Vim proceeds in this order:
Loading plugins won't be done when: Loading plugins won't be done when:
- The 'loadplugins' option was reset in a vimrc file. - The 'loadplugins' option was reset in a vimrc file.
- The |--noplugin| command line argument is used. - The |--noplugin| command line argument is used.
- The |--clean| command line argument is used.
- The "-u NONE" command line argument is used |-u|. - The "-u NONE" command line argument is used |-u|.
- When Vim was compiled without the |+eval| feature. - When Vim was compiled without the |+eval| feature.
Note that using "-c 'set noloadplugins'" doesn't work, because the Note that using "-c 'set noloadplugins'" doesn't work, because the
@@ -990,6 +1008,7 @@ starts its initializations. But as soon as:
- a vimrc file in the current directory, or - a vimrc file in the current directory, or
- the "VIMINIT" environment variable is set, or - the "VIMINIT" environment variable is set, or
- the "-N" command line argument is given, or - the "-N" command line argument is given, or
- the "--clean" command line argument is given, or
even when no vimrc file exists. even when no vimrc file exists.
- the |defaults.vim| script is loaded, or - the |defaults.vim| script is loaded, or
- gvimrc file was found, - gvimrc file was found,

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.0. Last change: 2017 Feb 06 *syntax.txt* For Vim version 8.0. Last change: 2017 Jul 14
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4812,10 +4812,11 @@ ctermbg={color-nr} *highlight-ctermbg*
Example: > Example: >
:highlight Normal ctermfg=grey ctermbg=darkblue :highlight Normal ctermfg=grey ctermbg=darkblue
< When setting the "ctermbg" color for the Normal group, the < When setting the "ctermbg" color for the Normal group, the
'background' option will be adjusted automatically. This causes the 'background' option will be adjusted automatically, under the
highlight groups that depend on 'background' to change! This means condition that the color is recognized and 'background' was not set
you should set the colors for Normal first, before setting other explicitly. This causes the highlight groups that depend on
colors. 'background' to change! This means you should set the colors for
Normal first, before setting other colors.
When a colorscheme is being used, changing 'background' causes it to When a colorscheme is being used, changing 'background' causes it to
be reloaded, which may reset all colors (including Normal). First be reloaded, which may reset all colors (including Normal). First
delete the "g:colors_name" variable when you don't want this. delete the "g:colors_name" variable when you don't want this.
@@ -4981,10 +4982,11 @@ PmenuSbar Popup menu: scrollbar.
PmenuThumb Popup menu: Thumb of the scrollbar. PmenuThumb Popup menu: Thumb of the scrollbar.
*hl-Question* *hl-Question*
Question |hit-enter| prompt and yes/no questions Question |hit-enter| prompt and yes/no questions
*hl-QuickFixLine*
QuickFixLine Current |quickfix| item in the quickfix window.
*hl-Search* *hl-Search*
Search Last search pattern highlighting (see 'hlsearch'). Search Last search pattern highlighting (see 'hlsearch').
Also used for highlighting the current line in the quickfix Also used for similar items that need to stand out.
window and similar items that need to stand out.
*hl-SpecialKey* *hl-SpecialKey*
SpecialKey Meta and special keys listed with ":map", also for text used SpecialKey Meta and special keys listed with ":map", also for text used
to show unprintable characters in the text, 'listchars'. to show unprintable characters in the text, 'listchars'.

View File

@@ -3098,6 +3098,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:tclfile if_tcl.txt /*:tclfile* :tclfile if_tcl.txt /*:tclfile*
:te gui_w32.txt /*:te* :te gui_w32.txt /*:te*
:tearoff gui_w32.txt /*:tearoff* :tearoff gui_w32.txt /*:tearoff*
:ter terminal.txt /*:ter*
:terminal terminal.txt /*:terminal*
:tf tagsrch.txt /*:tf* :tf tagsrch.txt /*:tf*
:tfirst tagsrch.txt /*:tfirst* :tfirst tagsrch.txt /*:tfirst*
:th eval.txt /*:th* :th eval.txt /*:th*
@@ -4519,6 +4521,8 @@ E940 eval.txt /*E940*
E941 eval.txt /*E941* E941 eval.txt /*E941*
E942 eval.txt /*E942* E942 eval.txt /*E942*
E943 message.txt /*E943* E943 message.txt /*E943*
E944 pattern.txt /*E944*
E945 pattern.txt /*E945*
E95 message.txt /*E95* E95 message.txt /*E95*
E96 diff.txt /*E96* E96 diff.txt /*E96*
E97 diff.txt /*E97* E97 diff.txt /*E97*
@@ -4800,6 +4804,7 @@ W18 syntax.txt /*W18*
W19 autocmd.txt /*W19* W19 autocmd.txt /*W19*
W20 if_pyth.txt /*W20* W20 if_pyth.txt /*W20*
W21 if_pyth.txt /*W21* W21 if_pyth.txt /*W21*
W22 eval.txt /*W22*
WORD motion.txt /*WORD* WORD motion.txt /*WORD*
WWW intro.txt /*WWW* WWW intro.txt /*WWW*
Win32 os_win32.txt /*Win32* Win32 os_win32.txt /*Win32*
@@ -6569,6 +6574,7 @@ gs various.txt /*gs*
gsp.vim syntax.txt /*gsp.vim* gsp.vim syntax.txt /*gsp.vim*
gstar pattern.txt /*gstar* gstar pattern.txt /*gstar*
gt tabpage.txt /*gt* gt tabpage.txt /*gt*
gtk-css gui_x11.txt /*gtk-css*
gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors* gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors*
gu change.txt /*gu* gu change.txt /*gu*
gugu change.txt /*gugu* gugu change.txt /*gugu*
@@ -6738,6 +6744,7 @@ hl-PmenuSbar syntax.txt /*hl-PmenuSbar*
hl-PmenuSel syntax.txt /*hl-PmenuSel* hl-PmenuSel syntax.txt /*hl-PmenuSel*
hl-PmenuThumb syntax.txt /*hl-PmenuThumb* hl-PmenuThumb syntax.txt /*hl-PmenuThumb*
hl-Question syntax.txt /*hl-Question* hl-Question syntax.txt /*hl-Question*
hl-QuickFixLine syntax.txt /*hl-QuickFixLine*
hl-Scrollbar syntax.txt /*hl-Scrollbar* hl-Scrollbar syntax.txt /*hl-Scrollbar*
hl-Search syntax.txt /*hl-Search* hl-Search syntax.txt /*hl-Search*
hl-SignColumn syntax.txt /*hl-SignColumn* hl-SignColumn syntax.txt /*hl-SignColumn*
@@ -8776,6 +8783,12 @@ tempname() eval.txt /*tempname()*
term-dependent-settings term.txt /*term-dependent-settings* term-dependent-settings term.txt /*term-dependent-settings*
term-list syntax.txt /*term-list* term-list syntax.txt /*term-list*
term.txt term.txt /*term.txt* term.txt term.txt /*term.txt*
term_getsize() eval.txt /*term_getsize()*
term_open() eval.txt /*term_open()*
term_scrape() eval.txt /*term_scrape()*
term_sendkeys() eval.txt /*term_sendkeys()*
term_setsize() eval.txt /*term_setsize()*
term_wait() eval.txt /*term_wait()*
termcap term.txt /*termcap* termcap term.txt /*termcap*
termcap-changed version4.txt /*termcap-changed* termcap-changed version4.txt /*termcap-changed*
termcap-colors term.txt /*termcap-colors* termcap-colors term.txt /*termcap-colors*
@@ -8783,11 +8796,16 @@ termcap-cursor-color term.txt /*termcap-cursor-color*
termcap-cursor-shape term.txt /*termcap-cursor-shape* termcap-cursor-shape term.txt /*termcap-cursor-shape*
termcap-options term.txt /*termcap-options* termcap-options term.txt /*termcap-options*
termcap-title term.txt /*termcap-title* termcap-title term.txt /*termcap-title*
terminal terminal.txt /*terminal*
terminal-colors os_unix.txt /*terminal-colors* terminal-colors os_unix.txt /*terminal-colors*
terminal-debug terminal.txt /*terminal-debug*
terminal-info term.txt /*terminal-info* terminal-info term.txt /*terminal-info*
terminal-key-codes term.txt /*terminal-key-codes* terminal-key-codes term.txt /*terminal-key-codes*
terminal-options term.txt /*terminal-options* terminal-options term.txt /*terminal-options*
terminal-output-codes term.txt /*terminal-output-codes* terminal-output-codes term.txt /*terminal-output-codes*
terminal-testing terminal.txt /*terminal-testing*
terminal-use terminal.txt /*terminal-use*
terminal.txt terminal.txt /*terminal.txt*
terminfo term.txt /*terminfo* terminfo term.txt /*terminfo*
termresponse-variable eval.txt /*termresponse-variable* termresponse-variable eval.txt /*termresponse-variable*
test-functions usr_41.txt /*test-functions* test-functions usr_41.txt /*test-functions*

126
runtime/doc/terminal.txt Normal file
View File

@@ -0,0 +1,126 @@
*terminal.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar
Terminal window support *terminal*
WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE
1. Basic use |terminal-use|
2. Remote testing |terminal-testing|
3. Debugging |terminal-debug|
{Vi does not have any of these commands}
==============================================================================
1. Basic use *terminal-use*
This feature is for running a terminal emulator in a Vim window. A job can be
started connected to the terminal emulator. For example, to run a shell: >
:term bash
Or to run a debugger: >
:term gdb vim
The job runs asynchronously from Vim, the window will be updated to show
output from the job, also while editing in any other window.
When the keyboard focus is in the terminal window, typed keys will be send to
the job. This uses a pty when possible.
Navigate between windows with CTRL-W commands (and mouse).
E.g. CTRL-W CTRL-W moves focus to the next window.
See option 'termkey' for specifying the key that precedes a Vim command.
Default is CTRL-W.
See option 'termsize' for controlling the size of the terminal window.
(TODO: scrolling when the terminal is larger than the window)
Syntax ~
*:ter* *:terminal*
:terminal[!] [command] Open a new terminal window.
If [command] is provided run it as a job and connect
the input and output to the terminal.
If [command] is not given the 'shell' option is used.
A new buffer will be created, using [command] or
'shell' as the name. If a buffer by this name already
exists a number is added in parenthesis.
E.g. if "gdb" exists the second terminal buffer will
use "gdb (1)".
The window can be closed, in which case the buffer
becomes hidden. The command will not be stopped. The
`:buffer` command can be used to turn the current
window into a terminal window, using the existing
buffer. If there are unsaved changes this fails, use
! to force, as usual.
Resizing ~
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.
The minimal size is 2 screen lines with 10 cells.
2. The 'termsize' option is "rows*cols", where "rows" is the minimal number of
screen rows and "cols" is the minial number of cells.
3. The 'termsize' option is "rowsXcols" (where the x is upper or lower case).
The terminal size is fixed to the specified number of screen lines 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
be seen (the lower-left part).
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,
not when 'termsize' is "rowsXcols".
==============================================================================
2. Remote testing *terminal-testing*
Most Vim tests execute a script inside Vim. For some tests this does not
work, running the test interferes with the code being tested. To avoid this
Vim is executed in a terminal window. The test sends keystrokes to it and
inspects the resulting screen state.
Functions ~
term_sendkeys() send keystrokes to a terminal
term_wait() wait for screen to be updated
term_scrape() inspect terminal screen
==============================================================================
3. Debugging *terminal-debug*
The Terminal debugging plugin can be used to debug a program with gdb and view
the source code in a Vim window. For example: >
:TermDebug vim
This opens three windows:
- A terminal window in which "gdb vim" is executed. Here you can directly
interact with gdb.
- A terminal window for the executed program. When "run" is used in gdb the
program I/O will happen in this window, so that it does not interfere with
controlling gdb.
- A normal Vim window used to show the source code. When gdb jumps to a
source file location this window will display the code, if possible. Values
of variables can be inspected, breakpoints set and cleared, etc.
This uses two terminal windows. To open the gdb window: >
:term gdb [arguments]
To open the terminal to run the tested program |term_open()| is used.
TODO
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2017 Apr 28 *todo.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,13 +35,39 @@ 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 -----------------------
Remove the Farsi code? When redrawing for the channel buffer, command line completion is cleared.
(Ramel Eshed, 2017 May 4)
When a timer triggers the command completion disappears. (Dominique Pelle,
2017 Jun 13, #1768)
Caused by 8.0.0592.
Check if anything was output? Don't redraw when scrolled. (#1820)
When redrawing the command line a pending CTRL-R shows ", which is removed.
No maintainer for German translations.
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
Terminal emulator window:
- Lots of stuff to implement, see src/terminal.c
- Windows implementation (WiP): https://github.com/mattn/vim/tree/terminal
Using winpty ?
- Running a shell command from the GUI still has limitations. Look into how
the terminal emulator of the Vim shell project can help:
http://vimshell.wana.at
- Add debugger interface. Implementation for gdb by Xavier de Gaye.
Should work like an IDE. Try to keep it generic. Now found here:
http://clewn.sf.net.
- Look into the idevim plugin/script.
- Related wishes for NetBeans commands:
- make it possible to have 'defineAnnoType' also handle terminal colors.
- send 'balloonText' events for the cursor position (using CursorHold ?)
in terminal mode.
- Feature: switch between "running job" and a normal buffer (possibly
read-only) to allow for searching, copy/paste, etc. (Domnique). Having a
(large) scrollback would be useful.
+channel: +channel:
- job_stop() should not always close the channel, e.g. for "int".
(Martin Gammelsæter, 2017 Apr 11, #1632)
Only assume killed on "kill".
Check job->jv_status not to be JOB_ENDED.
- Try out background make plugin: - Try out background make plugin:
https://github.com/AndrewVos/vim-make-background 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)
@@ -105,28 +131,137 @@ Regexp problems:
col and vcol when moving to another line. col and vcol when moving to another line.
- this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/". Leaving - this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/". Leaving
out the \& works. Seems any column check after \& fails. out the \& works. Seems any column check after \& fails.
- The pattern "\1" with the old engine gives E65, with the new engine it
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
had_endbrace[] is set but not initialized or used.
- Difference between two engines: ".*\zs\/\@>\/" on text "///" - Difference between two engines: ".*\zs\/\@>\/" on text "///"
(Chris Paul, 2016 Nov 13) New engine not greedy enough? (Chris Paul, 2016 Nov 13) New engine not greedy enough?
Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*')
(2017 May 15, #1252)
Patch to update b:changedtick in the quickfix window. (Yegappan Lakshmanan,
2017 Jul 13)
With foldmethod=syntax and nofoldenable comment highlighting isn't removed. With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
(Marcin Szewczyk, 2017 Apr 26) (Marcin Szewczyk, 2017 Apr 26)
ml_get error when using a Python. (Yggdroot, 2017 Jun 1, #1737)
Lemonboy can reproduce (2017 Jun 5)
ml_get errors with buggy script. (Dominique, 2017 Apr 30)
Error in emsg with buggy script. (Dominique, 2017 Apr 30)
Better detection of strace file. (Steven Fernandez, 2017 Jul 12, #1837)
To reproduce problems "vim -u NONE -N" is often used, but this still uses
'viminfo'. Add "-I" to not use 'viminfo'?
Or use "vim -B" for "bug reproduction"?
Bug with conceal mode: 3rd element returned by synconcealed() differs for
every call. (Dominique Pelle, 2017 Jun 18)
Add options_default() / options_restore() to set several options to Vim
defaults for a plugin. Comments from Zyx, 2017 May 10.
Perhaps use a vimcontext / endvimcontext command block.
Patch to trigger OptionSet when entering diff mode. (Christian Brabandt, 2017
Jul 7)
Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
Still happens (2017 Jul 9)
Memory leak in test_arabic.
Refactored HTML indent file. (Michael Lee, #1821)
Using uninitialzed value in test_crypt.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
clip_x11_request_selection_cb() is called with zero value and length.
Also: Get an error message from free() in the process that owns the selection.
Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
Patch to fix this by Kiichi, 2017 Jul 11, #1822)
Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
When checking if a bufref is valid, also check the buffer number, to catch the
case of :bwipe followed by :new.
Files for Latvian language. (Vitolins, 2017 May 3, #1675)
MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017
Jul 4)
Setting 'clipboard' to "unnamed" makes a global command very slow (Daniel
Drucker, 2017 May 8).
This was supposed to be fixed, did it break again somehow?
Christian cannot reproduce it.
Using composing char in mapping does not work properly. maparg() shows the
wrong thing. (Nikolai Pavlov, 2017 Jul 8, #1827)
Or is this not an actual problem?
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)
Use gvimext.dll from the nightly build? (Issue #249)
'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
#1736)
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)
Include solarized color scheme?
Running test_gui and test_gui_init with Motif sometimes kills the window Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif? manager. Problem with Motif?
Bogus characters inserted when triggering indent while changing text.
(Vitor Antunes, 2016 Nov 22, #1269)
Using "wviminfo /tmp/viminfo" does not store file marks that Vim knows about,
it only works when merging with an existing file. (Shougo, 2017 Jun 19, #1781)
Segmentation fault with complete(). (Lifepillar, 2017 Apr 29, #1668)
Check for "pat" to be NULL in search_for_exact_line()?
How did it get NULL? Comment by Christian, Apr 30.
Is it possible to keep the complete menu open when calling complete()?
(Prabir Shrestha, 2017 May 19, #1713)
Memory leak in test97? The string is actually freed. Weird. Memory leak in test97? The string is actually freed. Weird.
Patch for shellescape(). (Christian Brabandt, 2017 Apr 20, #1590) assert_fails() can only check for the first error. Make it possible to have
it catch multiple errors and check all of them.
Patch for flickering redraw. (Hirohito Higashi, 2017 Apr 23, #1637)
New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652) New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652)
Add a toolbar in the terminal. Can be global, above all windows, or specific Add a toolbar in the terminal. Can be global, above all windows, or specific
for one window. for one window.
Make maparg() also return the raw rhs, so that it doesn't depend on 'cpo'.
(Brett Stahlman, 2017 May 23)
Even better: add a way to disable a mapping temporarily and re-enable it
later. This is for a sub-mode that is active for a short while (one buffer).
Still need maplist() to find the mappings. What can we use to identify a
mapping? Something unique would be better than the LHS.
Perhaps simpler: actually delete the mappings. Use maplist() to list matching
mappings (with a lhs prefix, like maparg()), mapdelete() to delete,
maprestore() to restore (using the output of maplist().
Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki
Kiichi, 2016 Feb 28)
Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98
Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98
Add an argument to :mkvimrc (or add aother command) to skip mappings from
plugins (source is a Vim script). No need to put these in a .vimrc, they will
be defined when the plugin is loaded.
Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}]) Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}])
tb_highlight(winid, 'ToolBar') tb_highlight(winid, 'ToolBar')
tb_get(winid) tb_get(winid)
@@ -136,6 +271,9 @@ What if there is an invalid character?
Json string with trailing \u should be an error. (Lcd) Json string with trailing \u should be an error. (Lcd)
import can't be used in define option when include matches too.
(Romain Lafourcade, 2017 Jun 18, #1519)
When session file has name in argument list but the buffer was deleted, the When session file has name in argument list but the buffer was deleted, the
buffer is not deleted when using the session file. (#1393) buffer is not deleted when using the session file. (#1393)
Should add the buffer in hidden state. Should add the buffer in hidden state.
@@ -147,9 +285,6 @@ Wrong diff highlighting with three files. (2016 Oct 20, #1186)
Also get E749 on exit. Also get E749 on exit.
Another example in #1309 Another example in #1309
Patch to change all use of &sw to shiftwidth(). (Tyru, 2017 Feb 19)
Wait until maintainers integrate it.
When deleting a mark or register, leave a tombstone, so that it's also deleted When deleting a mark or register, leave a tombstone, so that it's also deleted
when writing viminfo (and the delete was the most recent action). #1339 when writing viminfo (and the delete was the most recent action). #1339
@@ -160,6 +295,10 @@ Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
Completion for :!cmd shows each match twice. #1435 Completion for :!cmd shows each match twice. #1435
Patch to change GUI behavior: instead of changing the window size change the
lines/columns when menu/toolbar/etc. is added/removed. (Ychin, 2016 Mar 20,
#703)
GTK: When adding a timer from 'balloonexpr' it won't fire, because GTK: When adding a timer from 'balloonexpr' it won't fire, because
g_main_context_iteration() doesn't return. Need to trigger an event when the g_main_context_iteration() doesn't return. Need to trigger an event when the
timer expires. timer expires.
@@ -175,6 +314,12 @@ highlighting for both stl and stlnc. Patch by Ken Hamada (itchyny, 2016 Dec 11)
Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
Fuentes, 2017 Feb 12, #1470) Fuentes, 2017 Feb 12, #1470)
Add a "keytrans()" function, which turns the internal byte representation of a
key into a form that can be used for :map. E.g.
let xx = "\<C-Home>"
echo keytrans(xx)
<C-Home>
Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL. Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL.
(Nikolai Pavlov, 2017 Mar 13, #1557) (Nikolai Pavlov, 2017 Mar 13, #1557)
Make a function to check for function-like type? Make a function to check for function-like type?
@@ -188,18 +333,23 @@ Implement optional arguments for functions.
call Foo(12, all = 0) call Foo(12, all = 0)
call Foo(12, 15, 0) call Foo(12, 15, 0)
writefile() does not abort as soon as an error is found. (Nikolai Pavlov,
2017 Feb 14, #1476)
Patch to support on-the-spot and over-the-spot input method. (Ken Takata, 2017 Patch to support on-the-spot and over-the-spot input method. (Ken Takata, 2017
Feb 14). Feb 14).
Change the Farsi code to work with UTF-8. Possibly combined with the Arabic
support, or similar.
Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
Add a command to take a range of lines, filter them and put the output Add a command to take a range of lines, filter them and put the output
somewhere else. :{range}copy {dest} !cmd somewhere else. :{range}copy {dest} !cmd
Patch to fix that empty first tab is not in session. Patch to fix that empty first tab is not in session.
(Hirohito Higashi, 2016 Nov 25, #1282) (Hirohito Higashi, 2016 Nov 25, #1282)
Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
Alternative from Christian Brabandt. (2010 Sep 19)
New one from Yasuhiro Matsumoto, #1277.
Patch for restoring wide characters in the console buffer. Patch for restoring wide characters in the console buffer.
(Ken Takata, 2016 Jun 7) (Ken Takata, 2016 Jun 7)
@@ -213,9 +363,6 @@ 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.
Patch to make urxvt mouse work better, recognize Esc[*M termcap code.
(Maurice Bos, 2017 Feb 17, #1486)
Expanding /**/ is slow. Idea by Luc Hermitte, 2017 Apr 14. Expanding /**/ is slow. Idea by Luc Hermitte, 2017 Apr 14.
Once .exe with updated installer is available: Add remark to download page Once .exe with updated installer is available: Add remark to download page
@@ -249,11 +396,26 @@ Patch for wrong cursor position on wrapped line, involving breakindent.
(Ozaki Kiichi, 2016 Nov 25) (Ozaki Kiichi, 2016 Nov 25)
Does this also fix #1408 ? Does this also fix #1408 ?
Patch to add "module" to quickfix entries. (Coot, 2017 Jun 8, #1757)
'cursorline' and match interfere. (Ozaki Kiichi, 2017 Jun 23, #1792)
Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30) Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
Patch to be able to separately map CTRL-H and BS on Windows.
(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)
@@ -310,9 +472,6 @@ Include the test.
Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22. Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22.
New update 2017 Apr 10, #1628 New update 2017 Apr 10, #1628
Unnamed register only contains the last deleted text when appending deleted
text to a register. (Wolfgang Jeltsch, reproduced by Ben Fritz, 2017 Apr 10)
When 'keywordprg' starts with ":" the argument is still escaped as a shell When 'keywordprg' starts with ":" the argument is still escaped as a shell
command argument. (Romain Lafourcade, 2016 Oct 16, #1175) command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
@@ -330,6 +489,8 @@ execute() cannot be used with command completeion. (Daniel Hahler, 2016 Oct 1,
cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983) cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
:map X may print invalid data. (Nikolay Pavlov, 2017 Jul 3, #1816)
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. patch for 'spellcamelcase' option: spellcheck each CamelCased word.
@@ -369,15 +530,9 @@ Autocommands blocked in do_arg_all(). Supposed to happen later?
'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9) 'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
Patch to add context information to quickfix/location list. (Yegappan
Lakshmanan, 2016 Aug 25, #1012)
MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c? MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
Otherwise task flickers in taskbar. Otherwise task flickers in taskbar.
Bogus characters inserted when triggering indent while changing test.
(Vitor Antunes, 2016 Nov 22, #1269)
Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26) Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26)
Also for ":@.". Also for ":@.".
@@ -397,9 +552,6 @@ This does not work: :set cscopequickfix=a-
Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806) Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806)
Patch to add separate highlighting for quickfix current line.
(anishsane, 2016 Sep 16, #1080)
Filetype plugin for awk. (Doug Kearns, 2016 Sep 5) Filetype plugin for awk. (Doug Kearns, 2016 Sep 5)
Patch to improve map documentation. Issue #799. Patch to improve map documentation. Issue #799.
@@ -444,6 +596,8 @@ No test, needs some work to include.
Patch to improve indenting for C++ constructor with initializer list. Patch to improve indenting for C++ constructor with initializer list.
(Hirohito Higashi, 2016 Mar 31) (Hirohito Higashi, 2016 Mar 31)
Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)
Add stronger encryption. Could use libsodium (NaCl). Add stronger encryption. Could use libsodium (NaCl).
https://github.com/jedisct1/libsodium/ https://github.com/jedisct1/libsodium/
Possibly include the needed code so that it can be build everywhere. Possibly include the needed code so that it can be build everywhere.
@@ -451,11 +605,6 @@ Possibly include the needed code so that it can be build everywhere.
Add a way to restart a timer. It's similar to timer_stop() and timer_start(), Add a way to restart a timer. It's similar to timer_stop() and timer_start(),
but the reference remains valid. but the reference remains valid.
Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki
Kiichi, 2016 Feb 28)
Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98
Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98
Need to try out instructions in INSSTALLpc.txt about how to install all Need to try out instructions in INSSTALLpc.txt about how to install all
interfaces and how to build Vim with them. interfaces and how to build Vim with them.
Appveyor build with self-installing executable, includes getting most Appveyor build with self-installing executable, includes getting most
@@ -493,10 +642,6 @@ When command names are very long :command output is difficult to read. Use a
maximum for the column width? (#871) maximum for the column width? (#871)
Patcy by varmanishant, 2016 Jun 18, #876 Patcy by varmanishant, 2016 Jun 18, #876
Patch to change GUI behavior: instead of changing the window size change the
lines/columns when menu/toolbar/etc. is added/removed. (Ychin, 2016 Mar 20,
#703)
Installation of .desktop files does not work everywhere. Installation of .desktop files does not work everywhere.
It's now fixed, but the target directory probably isn't right. It's now fixed, but the target directory probably isn't right.
Add configure check? Add configure check?
@@ -572,8 +717,6 @@ Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17) Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17)
Only remembers one error. Only remembers one error.
Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab. Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
Unexpected delay when using CTRL-O u. It's not timeoutlen. Unexpected delay when using CTRL-O u. It's not timeoutlen.
@@ -615,7 +758,8 @@ Value of virtcol() for '[ and '] depend on multi-byte character.
(Luchr, #277) (Luchr, #277)
Can we cache the syntax attributes, so that updates for 'relativenumber' and Can we cache the syntax attributes, so that updates for 'relativenumber' and
'cursorline'/'cursorcolumn' are a lot faster? 'cursorline'/'cursorcolumn' are a lot faster? Thus store the attributes
before combining them.
C highlighting: modern C allows: /* comment */ #ifdef C highlighting: modern C allows: /* comment */ #ifdef
and also line continuation after #include. and also line continuation after #include.
@@ -640,11 +784,6 @@ Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
MS-Windows: Crash opening very long file name starting with "\\". MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29) (Christian Brock, 2012 Jun 29)
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.
The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep
24): :diffthis, :diffoff. 24): :diffthis, :diffoff.
@@ -930,8 +1069,6 @@ Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12)
Patch to add "ntab" item in 'listchars' to repeat first character. (Nathaniel Patch to add "ntab" item in 'listchars' to repeat first character. (Nathaniel
Braun, pragm, 2013 Oct 13) A better solution 2014 Mar 5. Braun, pragm, 2013 Oct 13) A better solution 2014 Mar 5.
/[b-a] gives error E16, should probably be E769.
7 Windows XP: When using "ClearType" for text smoothing, a column of yellow 7 Windows XP: When using "ClearType" for text smoothing, a column of yellow
pixels remains when typing spaces in front of a "D" ('guifont' set to pixels remains when typing spaces in front of a "D" ('guifont' set to
"lucida_console:h8"). "lucida_console:h8").
@@ -1342,9 +1479,6 @@ New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30)
Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer? ^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
'colorcolumn' has higher priority than hlsearch. Should probably be the other
way around. (Nazri Ramliy, 2013 Feb 19)
When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't
exit. It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan exit. It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan
9) Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c. 9) Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c.
@@ -1393,14 +1527,13 @@ setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
7 The 'directory' option supports changing path separators to "%" to make 7 The 'directory' option supports changing path separators to "%" to make
file names unique, also support this for 'backupdir'. (Mikolaj Machowski) file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
Patch by Christian Brabandt, 2010 Oct 21. Patch by Christian Brabandt, 2010 Oct 21.
Is this an update: related to: #179
https://github.com/chrisbra/vim-mq-patches/blob/master/backupdir
Fixed patch 2017 Jul 1.
With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott, With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
2010 Oct 24) 2010 Oct 24)
Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
Alternative from Christian Brabandt. (2010 Sep 19)
New one from Yasuhiro Matsumoto, #1277.
Messages in message.txt are highlighted as examples. Messages in message.txt are highlighted as examples.
When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010 When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
@@ -1519,8 +1652,6 @@ When a:base in 'completefunc' starts with a number it's passed as a number,
not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a
string value. string value.
Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
For running gvim on a USB stick: avoid the OLE registration. Use a command For running gvim on a USB stick: avoid the OLE registration. Use a command
line argument -noregister. line argument -noregister.
@@ -2342,13 +2473,6 @@ respond to selection requests. Invoking XtDisownSelection() before executing
the shell doesn't help. Would require forking and doing a message loop, like the shell doesn't help. Would require forking and doing a message loop, like
what happens for the GUI. what happens for the GUI.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
clip_x11_request_selection_cb() is called with zero value and length.
Also: Get an error message from free() in the process that owns the selection.
Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
":vimgrep" does not recognize a recursive symlink. Is it possible to detect ":vimgrep" does not recognize a recursive symlink. Is it possible to detect
this, at least for Unix (using device/inode)? this, at least for Unix (using device/inode)?
@@ -3211,18 +3335,6 @@ Most interesting new features to be added when all bugs have been fixed:
Alternative: Make a function for Ex commands: cmd_edit(). Alternative: Make a function for Ex commands: cmd_edit().
- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block - Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block
can be selected with CTRL-V. Allow '$' (end of line) for col2. can be selected with CTRL-V. Allow '$' (end of line) for col2.
- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye.
Should work like an IDE. Try to keep it generic. Now found here:
http://clewn.sf.net.
And the idevim plugin/script.
To be able to start the debugger from inside Vim: For GUI run a program
with a netbeans connection; for console: start a program that splits the
terminal, runs the debugger in one window and reconnect Vim I/O to the
other window.
Wishes for NetBeans commands:
- make it possible to have 'defineAnnoType' also handle terminal colors.
- send 'balloonText' events for the cursor position (using CursorHold ?)
in terminal mode.
- ECLIPSE plugin. Problem is: the interface is very complicated. Need to - ECLIPSE plugin. Problem is: the interface is very complicated. Need to
implement part in Java and then connect to Vim. Some hints from Alexandru implement part in Java and then connect to Vim. Some hints from Alexandru
Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR
@@ -3235,9 +3347,6 @@ Most interesting new features to be added when all bugs have been fixed:
scrolls back to where the cursor is. scrolls back to where the cursor is.
- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the - Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the
first line to be able to start halfway. first line to be able to start halfway.
- Running a shell command from the GUI still has limitations. Look into how
the terminal emulator of the Vim shell project can help:
http://vimshell.wana.at
8 Add a command to jump to a certain kind of tag. Allow the user to specify 8 Add a command to jump to a certain kind of tag. Allow the user to specify
values for the optional fields. E.g., ":tag size type=m". values for the optional fields. E.g., ":tag size type=m".
Also allow specifying the file and command, so that the result of Also allow specifying the file and command, so that the result of
@@ -3426,9 +3535,6 @@ Spell checking:
Diff mode: Diff mode:
9 When making small changes, e.g. deleting a character, update the diff. 9 When making small changes, e.g. deleting a character, update the diff.
Possibly without running diff. Possibly without running diff.
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 quite big and badly documented though.
8 Also show difference with the file when editing started? Should show what 8 Also show difference with the file when editing started? Should show what
can be undone. (Tom Popovich) can be undone. (Tom Popovich)

View File

@@ -1,4 +1,4 @@
*usr_01.txt* For Vim version 8.0. Last change: 2010 Nov 03 *usr_01.txt* For Vim version 8.0. Last change: 2017 Jul 15
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@@ -140,19 +140,19 @@ On other systems, you have to do a little work:
1. Copy the tutor file. You can do this with Vim (it knows where to find it): 1. Copy the tutor file. You can do this with Vim (it knows where to find it):
> >
vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' vim --clean -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q'
< <
This will write the file "TUTORCOPY" in the current directory. To use a This will write the file "TUTORCOPY" in the current directory. To use a
translated version of the tutor, append the two-letter language code to the translated version of the tutor, append the two-letter language code to the
filename. For French: filename. For French:
> >
vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' vim --clean -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q'
< <
2. Edit the copied file with Vim: 2. Edit the copied file with Vim:
> >
vim -u NONE -c "set nocp" TUTORCOPY vim --clean TUTORCOPY
< <
The extra arguments make sure Vim is started in a good mood. The --clean argument makes sure Vim is started with nice defaults.
3. Delete the copied file when you are finished with it: 3. Delete the copied file when you are finished with it:
> >

View File

@@ -191,7 +191,7 @@ mouse button. The selected text will be inserted.
The "current selection" will only remain valid until some other text is The "current selection" will only remain valid until some other text is
selected. After doing the paste in the other gVim, now select some characters selected. After doing the paste in the other gVim, now select some characters
in that window. You will notice that the words that were previously selected in that window. You will notice that the words that were previously selected
in the other gVim window are displayed differently. This means that it no in the other gvim window are displayed differently. This means that it no
longer is the current selection. longer is the current selection.
You don't need to select text with the mouse, using the keyboard commands for You don't need to select text with the mouse, using the keyboard commands for
@@ -215,7 +215,7 @@ USING BOTH
This use of both the "current selection" and the "real clipboard" might sound This use of both the "current selection" and the "real clipboard" might sound
a bit confusing. But it is very useful. Let's show this with an example. a bit confusing. But it is very useful. Let's show this with an example.
Use one gVim with a text file and perform these actions: Use one gvim with a text file and perform these actions:
- Select two words in Visual mode. - Select two words in Visual mode.
- Use the Edit/Copy menu to get these words onto the clipboard. - Use the Edit/Copy menu to get these words onto the clipboard.

View File

@@ -1,4 +1,4 @@
*usr_44.txt* For Vim version 8.0. Last change: 2008 Dec 28 *usr_44.txt* For Vim version 8.0. Last change: 2017 May 06
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@@ -686,7 +686,7 @@ that included files do this too, you might have to reset "b:current_syntax" if
you include two files. you include two files.
If you want your syntax file to work with Vim 5.x, add a check for v:version. If you want your syntax file to work with Vim 5.x, add a check for v:version.
See yacc.vim for an example. Find an syntax file in the Vim 7.2 distribution for an example.
Do not include anything that is a user preference. Don't set 'tabstop', Do not include anything that is a user preference. Don't set 'tabstop',
'expandtab', etc. These belong in a filetype plugin. 'expandtab', etc. These belong in a filetype plugin.

View File

@@ -9250,7 +9250,7 @@ Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c,
src/proto/quickfix.pro, src/quickfix.c src/proto/quickfix.pro, src/quickfix.c
Patch 6.1.424 (extra) Patch 6.1.424 (extra)
Problem: Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show Problem: Win32: gvim compiled with VC++ 7.0 run on Windows 95 does not show
menu items. menu items.
Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO.
(Muraoka Taro) (Muraoka Taro)
@@ -12319,7 +12319,7 @@ Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled.
Files: src/gui_w32.c Files: src/gui_w32.c
Patch 6.2.362 (extra, after 6.2.347) Patch 6.2.362 (extra, after 6.2.347)
Problem: Win32: The manifest causes Gvim not to work. (Dave Roberts) Problem: Win32: The manifest causes gvim not to work. (Dave Roberts)
Solution: Change "x86" to "X86". (Serge Pirotte) Solution: Change "x86" to "X86". (Serge Pirotte)
Files: src/gvim.exe.mnf Files: src/gvim.exe.mnf

View File

@@ -4151,7 +4151,7 @@ Patch 7.0.173
Problem: ":call f().TT()" doesn't work. (Richard Emberson) Problem: ":call f().TT()" doesn't work. (Richard Emberson)
Solution: When a function returns a Dictionary or another composite continue Solution: When a function returns a Dictionary or another composite continue
evaluating what follows. evaluating what follows.
Files: src/eval.c Files: src/eval.c
Patch 7.0.174 Patch 7.0.174
Problem: ":mksession" doesn't restore window layout correctly in tab pages Problem: ":mksession" doesn't restore window layout correctly in tab pages
@@ -4265,7 +4265,7 @@ Problem: When 'swapfile' is switched off in an empty file it is possible
that not all blocks are loaded into memory, causing ml_get errors that not all blocks are loaded into memory, causing ml_get errors
later. later.
Solution: Rename "dont_release" to "mf_dont_release" and also use it to Solution: Rename "dont_release" to "mf_dont_release" and also use it to
avoid using the cached line and locked block. avoid using the cached line and locked block.
Files: src/globals.h, src/memfile.c, src/memline.c Files: src/globals.h, src/memfile.c, src/memline.c
Patch 7.0.193 Patch 7.0.193
@@ -6031,7 +6031,7 @@ Solution: Add type casts. (Ben Schmidt)
Files: src/version.c Files: src/version.c
Patch 7.1.207 Patch 7.1.207
Problem: Netbeans: "remove" cannot delete one line. Problem: Netbeans: "remove" cannot delete one line.
Solution: Remove partial lines and whole lines properly. Avoid a memory Solution: Remove partial lines and whole lines properly. Avoid a memory
leak. (Xavier de Gaye) leak. (Xavier de Gaye)
Files: src/netbeans.c Files: src/netbeans.c
@@ -7991,7 +7991,7 @@ Files: src/ex_cmds.c
Patch 7.2.097 Patch 7.2.097
Problem: "!xterm&" doesn't work when 'shell' is "bash". Problem: "!xterm&" doesn't work when 'shell' is "bash".
Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert) Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert)
Files: src/os_unix.c Files: src/os_unix.c
Patch 7.2.098 Patch 7.2.098
@@ -8740,7 +8740,7 @@ Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro,
src/ui.c src/ui.c
Patch 7.2.222 Patch 7.2.222
Problem: ":mksession" doesn't work properly with 'acd' set. Problem: ":mksession" doesn't work properly with 'acd' set.
Solution: Make it work. (Yakov Lerner) Solution: Make it work. (Yakov Lerner)
Files: src/ex_docmd.c Files: src/ex_docmd.c
@@ -9150,7 +9150,7 @@ Solution: Add the missing "else". (Lech Lorens)
Files: src/ops.c Files: src/ops.c
Patch 7.2.293 Patch 7.2.293
Problem: When setting 'comments' option it may be used in a wrong way. Problem: When setting 'comments' option it may be used in a wrong way.
Solution: Don't increment after skipping over digits. (Yukihiro Nakadaira) Solution: Don't increment after skipping over digits. (Yukihiro Nakadaira)
Files: src/misc1.c Files: src/misc1.c
@@ -10191,32 +10191,32 @@ More information here: |two-engines|
Better Python interface *better-python-interface* Better Python interface *better-python-interface*
----------------------- -----------------------
Added |python-bindeval| function. Unlike |python-eval| this one returns Added |python-bindeval| function. Unlike |python-eval| this one returns
|python-Dictionary|, |python-List| and |python-Function| objects for |python-Dictionary|, |python-List| and |python-Function| objects for
dictionaries lists and functions respectively in place of their Python dictionaries lists and functions respectively in place of their Python
built-in equivalents (or None if we are talking about function references). built-in equivalents (or None if we are talking about function references).
For simple types this function returns Python built-in types and not only For simple types this function returns Python built-in types and not only
Python `str()` like |python-eval| does. On Python 3 it will return `bytes()` Python `str()` like |python-eval| does. On Python 3 it will return `bytes()`
objects in place of `str()` ones avoiding possibility of UnicodeDecodeError. objects in place of `str()` ones avoiding possibility of UnicodeDecodeError.
Interface of new objects mimics standard Python `dict()` and `list()` Interface of new objects mimics standard Python `dict()` and `list()`
interfaces to some extent. Extent will be improved in the future. interfaces to some extent. Extent will be improved in the future.
Added special |python-vars| objects also available for |python-buffer| and Added special |python-vars| objects also available for |python-buffer| and
|python-window|. They ease access to Vim script variables from Python. |python-window|. They ease access to Vim script variables from Python.
Now you no longer need to alter `sys.path` to import your module: special Now you no longer need to alter `sys.path` to import your module: special
hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and
{rtp}/pythonx directories (for Python 2, Python 3 and both respectively). {rtp}/pythonx directories (for Python 2, Python 3 and both respectively).
See |python-special-path|. See |python-special-path|.
Added possibility to work with |tabpage|s through |python-tabpage| object. Added possibility to work with |tabpage|s through |python-tabpage| object.
Added automatic conversion of Vim errors and exceptions to Python Added automatic conversion of Vim errors and exceptions to Python
exceptions. exceptions.
Changed the behavior of the |python-buffers| object: it now uses buffer numbers Changed the behavior of the |python-buffers| object: it now uses buffer numbers
as keys in place of the index of the buffer in the internal buffer list. as keys in place of the index of the buffer in the internal buffer list.
This should not break anything as the only way to get this index was This should not break anything as the only way to get this index was
iterating over |python-buffers|. iterating over |python-buffers|.
Added |:pydo| and |:py3do| commands. Added |:pydo| and |:py3do| commands.
@@ -10226,7 +10226,7 @@ Added the |pyeval()| and |py3eval()| functions.
Now in all places which previously accepted `str()` objects, `str()` and Now in all places which previously accepted `str()` objects, `str()` and
`unicode()` (Python 2) or `bytes()` and `str()` (Python 3) are accepted. `unicode()` (Python 2) or `bytes()` and `str()` (Python 3) are accepted.
|python-window| has gained `.col` and `.row` attributes that are currently |python-window| has gained `.col` and `.row` attributes that are currently
the only way to get internal window positions. the only way to get internal window positions.
Added or fixed support for `dir()` in Vim Python objects. Added or fixed support for `dir()` in Vim Python objects.
@@ -10235,12 +10235,12 @@ Added or fixed support for `dir()` in Vim Python objects.
Changed *changed-7.4* Changed *changed-7.4*
------- -------
Old Python versions (≤2.2) are no longer supported. Building with them did Old Python versions (≤2.2) are no longer supported. Building with them did
not work anyway. not work anyway.
Options: Options:
Added ability to automatically save the selection into the system Added ability to automatically save the selection into the system
clipboard when using non-GUI version of Vim (autoselectplus in clipboard when using non-GUI version of Vim (autoselectplus in
'clipboard'). Also added ability to use the system clipboard as 'clipboard'). Also added ability to use the system clipboard as
default register (previously only primary selection could be used). default register (previously only primary selection could be used).
(Ivan Krasilnikov, Christian Brabandt, Bram Moolenaar) (Ivan Krasilnikov, Christian Brabandt, Bram Moolenaar)
@@ -10255,12 +10255,12 @@ Options:
'relativenumber'. (Christian Brabandt) 'relativenumber'. (Christian Brabandt)
Commands: Commands:
|:diffoff| now saves the local values of some settings and restores |:diffoff| now saves the local values of some settings and restores
them in place of blindly resetting them to the defaults. (Christian them in place of blindly resetting them to the defaults. (Christian
Brabandt) Brabandt)
Other: Other:
Lua interface now also uses userdata binded to Vim structures. (Taro Lua interface now also uses userdata binded to Vim structures. (Taro
Muraoka, Luis Carvalho) Muraoka, Luis Carvalho)
glob() and autocommand patterns used to work with the undocumented glob() and autocommand patterns used to work with the undocumented
@@ -10285,74 +10285,74 @@ Functions:
Added |wildmenumode()| function. (Christian Brabandt) Added |wildmenumode()| function. (Christian Brabandt)
Debugging functions: |screenattr()|, |screenchar()|, |screencol()|, Debugging functions: |screenattr()|, |screenchar()|, |screencol()|,
|screenrow()|. (Simon Ruderich, Bram Moolenaar) |screenrow()|. (Simon Ruderich, Bram Moolenaar)
Added ability to use |Dictionary-function|s for |sort()|ing, via Added ability to use |Dictionary-function|s for |sort()|ing, via
optional third argument. (Nikolay Pavlov) optional third argument. (Nikolay Pavlov)
Added special |expand()| argument that expands to the current line Added special |expand()| argument that expands to the current line
number. number.
Made it possible to force |char2nr()| to always give unicode codepoints Made it possible to force |char2nr()| to always give unicode codepoints
regardless of current encoding. (Yasuhiro Matsumoto) regardless of current encoding. (Yasuhiro Matsumoto)
Made it possible for functions generating file list generate |List| Made it possible for functions generating file list generate |List|
and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian
Brabandt) Brabandt)
Functions that obtain variables from the specific window, tabpage or Functions that obtain variables from the specific window, tabpage or
buffer scope dictionary can now return specified default value in buffer scope dictionary can now return specified default value in
place of empty string in case variable is not found. (|gettabvar()|, place of empty string in case variable is not found. (|gettabvar()|,
|getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi) |getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi)
Autocommands: Autocommands:
Added |InsertCharPre| event launched before inserting character. Added |InsertCharPre| event launched before inserting character.
(Jakson A. Aquino) (Jakson A. Aquino)
Added |CompleteDone| event launched after finishing completion in Added |CompleteDone| event launched after finishing completion in
insert mode. (idea by Florian Klein) insert mode. (idea by Florian Klein)
Added |QuitPre| event launched when commands that can either close Vim Added |QuitPre| event launched when commands that can either close Vim
or only some window(s) are launched. or only some window(s) are launched.
Added |TextChanged| and |TextChangedI| events launched when text is Added |TextChanged| and |TextChangedI| events launched when text is
changed. changed.
Commands: Commands:
|:syntime| command useful for debugging. |:syntime| command useful for debugging.
Made it possible to remove all signs from the current buffer using Made it possible to remove all signs from the current buffer using
|:sign-unplace|. (Christian Brabandt) |:sign-unplace|. (Christian Brabandt)
Added |:language| autocompletion. (Dominique Pelle) Added |:language| autocompletion. (Dominique Pelle)
Added more |:command-complete| completion types: |:behave| suboptions, Added more |:command-complete| completion types: |:behave| suboptions,
color schemes, compilers, |:cscope| suboptions, files from 'path', color schemes, compilers, |:cscope| suboptions, files from 'path',
|:history| suboptions, locale names, |:syntime| suboptions, user |:history| suboptions, locale names, |:syntime| suboptions, user
names. (Dominique Pelle) names. (Dominique Pelle)
Added |:map-nowait| creating mapping which when having lhs that is the Added |:map-nowait| creating mapping which when having lhs that is the
prefix of another mappings lhs will not allow Vim to wait for user to prefix of another mappings lhs will not allow Vim to wait for user to
type more characters to resolve ambiguity, forcing Vim to take the type more characters to resolve ambiguity, forcing Vim to take the
shorter alternative: one with <nowait>. shorter alternative: one with <nowait>.
Options: Options:
Made it possible to ignore case when completing: 'wildignorecase'. Made it possible to ignore case when completing: 'wildignorecase'.
Added ability to delete comment leader when using |J| by `j` flag in Added ability to delete comment leader when using |J| by `j` flag in
'formatoptions' (|fo-table|). (Lech Lorens) 'formatoptions' (|fo-table|). (Lech Lorens)
Added ability to control indentation inside namespaces: |cino-N|. Added ability to control indentation inside namespaces: |cino-N|.
(Konstantin Lepa) (Konstantin Lepa)
Added ability to control alignment inside `if` condition separately Added ability to control alignment inside `if` condition separately
from alignment inside function arguments: |cino-k|. (Lech Lorens) from alignment inside function arguments: |cino-k|. (Lech Lorens)
Other: Other:
Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar) Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar)
Added |v:windowid| variable containing current window number in GUI Added |v:windowid| variable containing current window number in GUI
Vim. (Christian J. Robinson, Lech Lorens) Vim. (Christian J. Robinson, Lech Lorens)
Added rxvt-unicode and SGR mouse support. (Yiding Jia, Hayaki Saito) Added rxvt-unicode and SGR mouse support. (Yiding Jia, Hayaki Saito)
@@ -11923,7 +11923,7 @@ Solution: Pass the separator character to in_history(). (Taro Muraoka)
Files: src/ex_getln.c Files: src/ex_getln.c
Patch 7.3.266 Patch 7.3.266
Problem: In Gvim with iBus typing space in Insert mode doesn't work. Problem: In gvim with iBus typing space in Insert mode doesn't work.
Solution: Clear xim_expected_char after checking it. Solution: Clear xim_expected_char after checking it.
Files: src/mbyte.c Files: src/mbyte.c
@@ -11938,7 +11938,7 @@ Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler)
Files: src/os_unix.c Files: src/os_unix.c
Patch 7.3.269 Patch 7.3.269
Problem: 'shellcmdflag' only works with one flag. Problem: 'shellcmdflag' only works with one flag.
Solution: Split into multiple arguments. (Gary Johnson) Solution: Split into multiple arguments. (Gary Johnson)
Files: src/os_unix.c Files: src/os_unix.c
@@ -13118,7 +13118,7 @@ Files: src/ops.c
Patch 7.3.477 Patch 7.3.477
Problem: Using ":echo" to output enough lines to scroll, then using "j" and Problem: Using ":echo" to output enough lines to scroll, then using "j" and
"k" at the more prompt, displays the command on top of the output. "k" at the more prompt, displays the command on top of the output.
(Marcin Szamotulski) (Marcin Szamotulski)
Solution: Put the output below the command. (Christian Brabandt) Solution: Put the output below the command. (Christian Brabandt)
Files: src/eval.c Files: src/eval.c
@@ -13371,7 +13371,7 @@ Solution: Recognize completefunction returning -3. (Matsushita Shougo)
Files: src/edit.c Files: src/edit.c
Patch 7.3.520 Patch 7.3.520
Problem: Gvim starts up slow on Ubuntu 12.04. Problem: gvim starts up slow on Ubuntu 12.04.
Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro
Matsumoto) Do check $DISPLAY being set. Matsumoto) Do check $DISPLAY being set.
Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
@@ -13424,7 +13424,7 @@ Solution: Make the count select that many characters or lines. (Christian
Files: src/normal.c Files: src/normal.c
Patch 7.3.530 (after 7.3.520) Patch 7.3.530 (after 7.3.520)
Problem: Gvim does not work when 'guioptions' includes "f". (Davido) Problem: gvim does not work when 'guioptions' includes "f". (Davido)
Solution: Call gui_mch_init_check() when running GUI in the foreground. Solution: Call gui_mch_init_check() when running GUI in the foreground.
(Yasuhiro Matsumoto) (Yasuhiro Matsumoto)
Files: src/gui.c Files: src/gui.c
@@ -14287,7 +14287,7 @@ Files: Filelist
Patch 7.3.682 (after 7.3.677) Patch 7.3.682 (after 7.3.677)
Problem: Compiler complains about incompatible types. Problem: Compiler complains about incompatible types.
Solution: Remove type casts. (hint by Danek Duvall) Solution: Remove type casts. (hint by Danek Duvall)
Files: src/edit.c Files: src/edit.c
Patch 7.3.683 Patch 7.3.683
Problem: ":python" may crash when vimbindeval() returns None. Problem: ":python" may crash when vimbindeval() returns None.
@@ -16340,7 +16340,7 @@ Solution: Avoid negative argument to vim_strncpy(). (Narendran
Files: src/if_cscope.c Files: src/if_cscope.c
Patch 7.3.1039 Patch 7.3.1039
Problem: New regexp engine does not support \%23c, \%<23c and the like. Problem: New regexp engine does not support \%23c, \%<23c and the like.
Solution: Implement them. (partly by Yasuhiro Matsumoto) Solution: Implement them. (partly by Yasuhiro Matsumoto)
Files: src/regexp.h, src/regexp_nfa.c, src/testdir/test64.in, Files: src/regexp.h, src/regexp_nfa.c, src/testdir/test64.in,
src/testdir/test64.ok src/testdir/test64.ok
@@ -17552,9 +17552,9 @@ Solution: Specify a separate viminfo file.
Files: src/testdir/test61.in Files: src/testdir/test61.in
Patch 7.3.1252 Patch 7.3.1252
Problem: Gvim does not find the toolbar bitmap files in ~/vimfiles/bitmaps Problem: gvim does not find the toolbar bitmap files in ~/vimfiles/bitmaps
if the corresponding menu command contains additional characters if the corresponding menu command contains additional characters
like the shortcut marker '&' or if you use a non-english locale. like the shortcut marker '&' or if you use a non-english locale.
Solution: Use menu->en_dname or menu->dname. (Martin Gieseking) Solution: Use menu->en_dname or menu->dname. (Martin Gieseking)
Files: src/gui_w32.c Files: src/gui_w32.c
@@ -18175,7 +18175,7 @@ Files: src/window.c
Patch 7.4a.045 Patch 7.4a.045
Problem: Configure does not always find the right library for Lua. Missing Problem: Configure does not always find the right library for Lua. Missing
support for LuaJit. support for LuaJit.
Solution: Improve the configure detection of Lua. (Hiroshi Shirosaki) Solution: Improve the configure detection of Lua. (Hiroshi Shirosaki)
Files: src/Makefile, src/configure.in, src/auto/configure Files: src/Makefile, src/configure.in, src/auto/configure

View File

@@ -15117,7 +15117,7 @@ Files: src/option.c
Patch 8.0.0101 Patch 8.0.0101
Problem: Some options are not strictly checked. Problem: Some options are not strictly checked.
Solution: Add flags for strickter checks. Solution: Add flags for stricter checks.
Files: src/option.c Files: src/option.c
Patch 8.0.0102 (after 8.0.0101) Patch 8.0.0102 (after 8.0.0101)
@@ -15766,7 +15766,7 @@ Solution: Change #ifdef around ins_char_bytes.
Files: src/misc1.c Files: src/misc1.c
Patch 8.0.0212 Patch 8.0.0212
Problem: The buffer used to store a key name theoreticaly could be too Problem: The buffer used to store a key name theoretically could be too
small. (Coverity) small. (Coverity)
Solution: Count all possible modifier characters. Add a check for the Solution: Count all possible modifier characters. Add a check for the
length just in case. length just in case.
@@ -15834,7 +15834,7 @@ Files: src/ops.c, src/testdir/test_put.vim, src/Makefile,
Patch 8.0.0223 Patch 8.0.0223
Problem: Coverity gets confused by the flags passed to find_tags() and Problem: Coverity gets confused by the flags passed to find_tags() and
warnts for an uninitialized variable. warns about uninitialized variable.
Solution: Disallow using cscope and help tags at the same time. Solution: Disallow using cscope and help tags at the same time.
Files: src/tag.c Files: src/tag.c
@@ -15955,7 +15955,7 @@ Files: src/testdir/test_usercommands.vim
Patch 8.0.0243 Patch 8.0.0243
Problem: When making a character lower case with tolower() changes the byte Problem: When making a character lower case with tolower() changes the byte
cound, it is not made lower case. count, it is not made lower case.
Solution: Add strlow_save(). (Dominique Pelle, closes #1406) Solution: Add strlow_save(). (Dominique Pelle, closes #1406)
Files: src/evalfunc.c, src/misc2.c, src/proto/misc2.pro, Files: src/evalfunc.c, src/misc2.c, src/proto/misc2.pro,
src/testdir/test_functions.vim src/testdir/test_functions.vim
@@ -16032,9 +16032,9 @@ Files: src/Makefile, src/charset.c, src/kword_test.c, src/mbyte.c,
src/proto/mbyte.pro src/proto/mbyte.pro
Patch 8.0.0253 Patch 8.0.0253
Problem: When creating a session when winminheight is 2 or larger and Problem: When creating a session when 'winminheight' is 2 or larger and
loading that session gives an error. loading that session gives an error.
Solution: Also set winminheight before setting winheight to 1. (Rafael Solution: Also set 'winminheight' before setting 'winheight' to 1. (Rafael
Bodill, neovim #5717) Bodill, neovim #5717)
Files: src/ex_docmd.c, src/testdir/test_mksession.vim Files: src/ex_docmd.c, src/testdir/test_mksession.vim
@@ -16541,7 +16541,7 @@ Solution: For quoted text objects bail out if the Visual area spans more
Files: src/search.c, src/testdir/test_visual.vim Files: src/search.c, src/testdir/test_visual.vim
Patch 8.0.0340 Patch 8.0.0340
Problem: Not checking return valud of dict_add(). (Coverity) Problem: Not checking return value of dict_add(). (Coverity)
Solution: Handle a failure. Solution: Handle a failure.
Files: src/buffer.c Files: src/buffer.c
@@ -16612,12 +16612,12 @@ Files: src/testdir/test_expr.vim
Patch 8.0.0352 Patch 8.0.0352
Problem: The condition for when a typval needs to be cleared is too Problem: The condition for when a typval needs to be cleared is too
complicated. complicated.
Solution: Init the type to VAR_UNKNOWN and clear it always. Solution: Init the type to VAR_UNKNOWN and always clear it.
Files: src/eval.c Files: src/eval.c
Patch 8.0.0353 Patch 8.0.0353
Problem: If [RO] in the status line is translated to a longer string, it is Problem: If [RO] in the status line is translated to a longer string, it is
trunctted to 4 bytes. truncated to 4 bytes.
Solution: Skip over the resulting string. (Jente Hidskes, closes #1499) Solution: Skip over the resulting string. (Jente Hidskes, closes #1499)
Files: src/screen.c Files: src/screen.c
@@ -16827,7 +16827,7 @@ Patch 8.0.0388
Problem: filtering lines through "cat", without changing the line count, Problem: filtering lines through "cat", without changing the line count,
changes manual folds. changes manual folds.
Solution: Change how marks and folds are adjusted. (Matthew Malcomson, from Solution: Change how marks and folds are adjusted. (Matthew Malcomson, from
neovim #6194. neovim #6194).
Files: src/fold.c, src/testdir/test_fold.vim Files: src/fold.c, src/testdir/test_fold.vim
Patch 8.0.0389 Patch 8.0.0389
@@ -17294,7 +17294,7 @@ Files: src/misc2.c
Patch 8.0.0461 (after 8.0.0457) Patch 8.0.0461 (after 8.0.0457)
Problem: Test 45 hangs on MS-Windows. Problem: Test 45 hangs on MS-Windows.
Solution: Reset 'shiftwidth'. Also remove redundent function. Solution: Reset 'shiftwidth'. Also remove redundant function.
Files: src/fold.c, src/testdir/test45.in Files: src/fold.c, src/testdir/test45.in
Patch 8.0.0462 Patch 8.0.0462
@@ -17499,7 +17499,7 @@ Files: src/evalfunc.c, src/if_xcmdsrv.c, src/proto/if_xcmdsrv.pro,
Patch 8.0.0493 Patch 8.0.0493
Problem: Crash with cd command with very long argument. Problem: Crash with cd command with very long argument.
Solution: Check for running out of space. (Dominique pending, closes #1576) Solution: Check for running out of space. (Dominique Pelle, closes #1576)
Files: src/testdir/test_alot.vim, src/testdir/test_cd.vim, src/Makefile, Files: src/testdir/test_alot.vim, src/testdir/test_cd.vim, src/Makefile,
src/misc2.c src/misc2.c
@@ -17597,7 +17597,7 @@ Solution: Remove duplicate https:.
Files: README.md Files: README.md
Patch 8.0.0511 Patch 8.0.0511
Problem: Menuage for skipping client-server tests is unclear. Problem: Message for skipping client-server tests is unclear.
Solution: Be more specific about what's missing (Hirohito Higashi, Kazunobu Solution: Be more specific about what's missing (Hirohito Higashi, Kazunobu
Kuriyama) Kuriyama)
Files: src/testdir/test_quotestar.vim, src/testdir/test_clientserver.vim Files: src/testdir/test_quotestar.vim, src/testdir/test_clientserver.vim
@@ -17688,7 +17688,7 @@ Solution: Include the whole character.
Files: src/search.c, src/testdir/test_normal.vim Files: src/search.c, src/testdir/test_normal.vim
Patch 8.0.0524 (after 8.0.0518) Patch 8.0.0524 (after 8.0.0518)
Problem: Folds are messed up when 'encodin' is "utf-8". Problem: Folds are messed up when 'encoding' is "utf-8".
Solution: Also set the fold character when it's not multi-byte. Solution: Also set the fold character when it's not multi-byte.
Files: src/screen.c, src/testdir/test_display.vim Files: src/screen.c, src/testdir/test_display.vim
@@ -17882,7 +17882,7 @@ Solution: Add a test. (Dominique Pelle, closes #1622)
Files: src/testdir/test_syntax.vim Files: src/testdir/test_syntax.vim
Patch 8.0.0559 Patch 8.0.0559
Problem: Setting ttytype to xxx does not always fail as expected. (Marvin Problem: Setting 'ttytype' to xxx does not always fail as expected. (Marvin
Schmidt) Schmidt)
Solution: Catch both possible errors. (closes #1601) Solution: Catch both possible errors. (closes #1601)
Files: src/testdir/test_options.vim Files: src/testdir/test_options.vim
@@ -17919,7 +17919,7 @@ Solution: Set qf_last to NULL.
Files: src/quickfix.c Files: src/quickfix.c
Patch 8.0.0566 Patch 8.0.0566
Problem: Setting nocompatible for the tiny version moves the cursor. Problem: Setting 'nocompatible' for the tiny version moves the cursor.
Solution: Use another trick to skip commands when the +eval feature is Solution: Use another trick to skip commands when the +eval feature is
present. (Christian Brabandt, closes #1630) present. (Christian Brabandt, closes #1630)
Files: runtime/defaults.vim Files: runtime/defaults.vim
@@ -17938,7 +17938,7 @@ Files: src/testdir/test_goto.vim, src/normal.c
Patch 8.0.0569 Patch 8.0.0569
Problem: Bracketed paste is still enabled when executing a shell command. Problem: Bracketed paste is still enabled when executing a shell command.
(Michael Smith) (Michael Smith)
Solution: Disable brackted paste when going into cooked mode. (closes #1638) Solution: Disable bracketed paste when going into cooked mode. (closes #1638)
Files: src/term.c Files: src/term.c
Patch 8.0.0570 Patch 8.0.0570
@@ -17978,7 +17978,7 @@ Solution: Make a copy of 'indentexpr'.
Files: src/misc1.c, src/testdir/test_options.vim Files: src/misc1.c, src/testdir/test_options.vim
Patch 8.0.0576 (after 8.0.0570 and 8.0.0573) Patch 8.0.0576 (after 8.0.0570 and 8.0.0573)
Problem: Can't build when configure choses "install-sh". (Daniel Hahler) Problem: Can't build when configure chooses "install-sh". (Daniel Hahler)
Solution: Always use install-sh. Fix remaining use of mkinstalldirs. Solution: Always use install-sh. Fix remaining use of mkinstalldirs.
(closes #1647) (closes #1647)
Files: src/installman.sh, src/installml.sh, src/config.mk.in, Files: src/installman.sh, src/installml.sh, src/config.mk.in,

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: 2017 Apr 20 " Last Change: 2017 Jul 11
" 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")
@@ -48,6 +48,9 @@ func! s:StarSetf(ft)
endif endif
endfunc endfunc
" Vim help file
au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help
" Abaqus or Trasys " Abaqus or Trasys
au BufNewFile,BufRead *.inp call s:Check_inp() au BufNewFile,BufRead *.inp call s:Check_inp()
@@ -632,7 +635,13 @@ au BufNewFile,BufRead dict.conf,.dictrc setf dictconf
au BufNewFile,BufRead dictd.conf setf dictdconf au BufNewFile,BufRead dictd.conf setf dictdconf
" Diff files " Diff files
au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff au BufNewFile,BufRead *.diff,*.rej setf diff
au BufNewFile,BufRead *.patch
\ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' |
\ setf gitsendemail |
\ else |
\ setf diff |
\ endif
" Dircolors " Dircolors
au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors
@@ -801,6 +810,7 @@ if !empty($XDG_CONFIG_HOME)
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
endif endif
au BufNewFile,BufRead git-rebase-todo setf gitrebase au BufNewFile,BufRead git-rebase-todo setf gitrebase
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
au BufNewFile,BufRead .msg.[0-9]* au BufNewFile,BufRead .msg.[0-9]*
\ if getline(1) =~ '^From.*# This line is ignored.$' | \ if getline(1) =~ '^From.*# This line is ignored.$' |
\ setf gitsendemail | \ setf gitsendemail |
@@ -981,7 +991,7 @@ au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
" Innovation Data Processing " Innovation Data Processing
au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
au BufRead,BufNewFile upstream.log\c,upstream.*.log\c,*.upstream.log\c setf upstreamlog au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
@@ -1181,14 +1191,21 @@ au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown
" Mason " Mason
au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason
" Matlab or Objective C " Mathematica, Matlab, Murphi or Objective C
au BufNewFile,BufRead *.m call s:FTm() au BufNewFile,BufRead *.m call s:FTm()
func! s:FTm() func! s:FTm()
let n = 1 let n = 1
while n < 10 let saw_comment = 0 " Whether we've seen a multiline comment leader.
while n < 100
let line = getline(n) let line = getline(n)
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\|//\)' if line =~ '^\s*/\*'
" /* ... */ is a comment in Objective C and Murphi, so we can't conclude
" it's either of them yet, but track this as a hint in case we don't see
" anything more definitive.
let saw_comment = 1
endif
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|//\)'
setf objc setf objc
return return
endif endif
@@ -1200,11 +1217,23 @@ func! s:FTm()
setf mma setf mma
return return
endif endif
if line =~ '^\c\s*\(\(type\|var\)\>\|--\)'
setf murphi
return
endif
let n = n + 1 let n = n + 1
endwhile endwhile
if exists("g:filetype_m")
if saw_comment
" We didn't see anything definitive, but this looks like either Objective C
" or Murphi based on the comment leader. Assume the former as it is more
" common.
setf objc
elseif exists("g:filetype_m")
" Use user specified default filetype for .m
exe "setf " . g:filetype_m exe "setf " . g:filetype_m
else else
" Default is matlab
setf matlab setf matlab
endif endif
endfunc endfunc
@@ -1419,7 +1448,7 @@ if has("fname_case")
else else
au BufNewFile,BufRead *.pl call s:FTpl() au BufNewFile,BufRead *.pl call s:FTpl()
endif endif
au BufNewFile,BufRead *.plx,*.al setf perl au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl
au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
func! s:FTpl() func! s:FTpl()
@@ -1807,6 +1836,9 @@ au BufNewFile,BufRead *.sa setf sather
" Scala " Scala
au BufNewFile,BufRead *.scala setf scala au BufNewFile,BufRead *.scala setf scala
" SBT - Scala Build Tool
au BufNewFile,BufRead *.sbt setf sbt
" Scilab " Scilab
au BufNewFile,BufRead *.sci,*.sce setf scilab au BufNewFile,BufRead *.sci,*.sce setf scilab
@@ -2231,6 +2263,8 @@ func! s:FTtex()
let format = tolower(matchstr(firstline, '\a\+')) let format = tolower(matchstr(firstline, '\a\+'))
let format = substitute(format, 'pdf', '', '') let format = substitute(format, 'pdf', '', '')
if format == 'tex' if format == 'tex'
let format = 'latex'
elseif format == 'plaintex'
let format = 'plain' let format = 'plain'
endif endif
else else
@@ -2762,7 +2796,13 @@ au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
" Plain text files, needs to be far down to not override others. This avoids " Plain text files, needs to be far down to not override others. This avoids
" the "conf" type being used if there is a line starting with '#'. " the "conf" type being used if there is a line starting with '#'.
au BufNewFile,BufRead *.txt,*.text,README setf text au BufNewFile,BufRead *.text,README setf text
" Help files match *.txt but should have a last line that is a modeline.
au BufNewFile,BufRead *.txt
\ if getline('$') !~ 'vim:.*ft=help'
\| setf text
\| endif
" Use the filetype detect plugins. They may overrule any of the previously " Use the filetype detect plugins. They may overrule any of the previously
@@ -2774,12 +2814,12 @@ runtime! ftdetect/*.vim
" state. " state.
augroup END augroup END
" Generic configuration file (check this last, it's just guessing!) " Generic configuration file. Use FALLBACK, it's just guessing!
au filetypedetect BufNewFile,BufRead,StdinReadPost * au filetypedetect BufNewFile,BufRead,StdinReadPost *
\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
\ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
\ || getline(4) =~ '^#' || getline(5) =~ '^#') | \ || getline(4) =~ '^#' || getline(5) =~ '^#') |
\ setf conf | \ setf FALLBACK conf |
\ endif \ endif

15
runtime/ftplugin/sbt.vim Normal file
View File

@@ -0,0 +1,15 @@
" Vim filetype plugin file
" Language: sbt
" Maintainer: Steven Dobay <stevendobay at protonmail.com>
" License: Same as Vim
" Last Change: 2017.04.30
" ----------------------------------------------------------------------------
if exists('b:did_ftplugin') || &cp
finish
endif
let b:did_ftplugin = 1
runtime! ftplugin/scala.vim

View File

@@ -87,7 +87,7 @@ function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at)
endwhile endwhile
endwhile endwhile
" Fallback - just move back one " Fallback - just move back one
return a:prev_indent - &sw return a:prev_indent - shiftwidth()
endfunction MainBlockIndent endfunction MainBlockIndent
" Section: s:EndBlockIndent {{{1 " Section: s:EndBlockIndent {{{1
@@ -131,7 +131,7 @@ function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend )
endwhile endwhile
endwhile endwhile
" Fallback - just move back one " Fallback - just move back one
return a:prev_indent - &sw return a:prev_indent - shiftwidth()
endfunction EndBlockIndent endfunction EndBlockIndent
" Section: s:StatementIndent {{{1 " Section: s:StatementIndent {{{1
@@ -213,15 +213,15 @@ function GetAdaIndent()
endif endif
" Move indent in " Move indent in
if ! false_match if ! false_match
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
elseif line =~ '^\s*\(case\|exception\)\>' elseif line =~ '^\s*\(case\|exception\)\>'
" Move indent in twice (next 'when' will move back) " Move indent in twice (next 'when' will move back)
let ind = ind + 2 * &sw let ind = ind + 2 * shiftwidth()
elseif line =~ '^\s*end\s*record\>' elseif line =~ '^\s*end\s*record\>'
" Move indent back to tallying 'type' preceeding the 'record'. " Move indent back to tallying 'type' preceeding the 'record'.
" Allow indent to be equal to 'end record's. " Allow indent to be equal to 'end record's.
let ind = s:MainBlockIndent( ind+&sw, lnum, 'type\>', '' ) let ind = s:MainBlockIndent( ind+shiftwidth(), lnum, 'type\>', '' )
elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$' elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$'
" Revert to indent of line that started this parenthesis pair " Revert to indent of line that started this parenthesis pair
exe lnum exe lnum
@@ -235,10 +235,10 @@ function GetAdaIndent()
exe v:lnum exe v:lnum
elseif line =~ '[.=(]\s*$' elseif line =~ '[.=(]\s*$'
" A statement continuation - move in one " A statement continuation - move in one
let ind = ind + &sw let ind = ind + shiftwidth()
elseif line =~ '^\s*new\>' elseif line =~ '^\s*new\>'
" Multiple line generic instantiation ('package blah is\nnew thingy') " Multiple line generic instantiation ('package blah is\nnew thingy')
let ind = s:StatementIndent( ind - &sw, lnum ) let ind = s:StatementIndent( ind - shiftwidth(), lnum )
elseif line =~ ';\s*$' elseif line =~ ';\s*$'
" Statement end (but not 'end' ) - try to find current statement-start indent " Statement end (but not 'end' ) - try to find current statement-start indent
let ind = s:StatementIndent( ind, lnum ) let ind = s:StatementIndent( ind, lnum )
@@ -256,17 +256,17 @@ function GetAdaIndent()
elseif continuation && line =~ '^\s*(' elseif continuation && line =~ '^\s*('
" Don't do this if we've already indented due to the previous line " Don't do this if we've already indented due to the previous line
if ind == initind if ind == initind
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
elseif line =~ '^\s*\(begin\|is\)\>' elseif line =~ '^\s*\(begin\|is\)\>'
let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' ) let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' )
elseif line =~ '^\s*record\>' elseif line =~ '^\s*record\>'
let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + &sw let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + shiftwidth()
elseif line =~ '^\s*\(else\|elsif\)\>' elseif line =~ '^\s*\(else\|elsif\)\>'
let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' ) let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
elseif line =~ '^\s*when\>' elseif line =~ '^\s*when\>'
" Align 'when' one /in/ from matching block start " Align 'when' one /in/ from matching block start
let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + &sw let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + shiftwidth()
elseif line =~ '^\s*end\>\s*\<if\>' elseif line =~ '^\s*end\>\s*\<if\>'
" End of if statements " End of if statements
let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' ) let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' )

View File

@@ -60,7 +60,7 @@ function! GetAwkIndent()
" 'pattern { action }' (simple check match on /{/ increases the indent then) " 'pattern { action }' (simple check match on /{/ increases the indent then)
if s:Get_brace_balance( prev_data, '{', '}' ) > 0 if s:Get_brace_balance( prev_data, '{', '}' ) > 0
return ind + &sw return ind + shiftwidth()
endif endif
let brace_balance = s:Get_brace_balance( prev_data, '(', ')' ) let brace_balance = s:Get_brace_balance( prev_data, '(', ')' )
@@ -99,7 +99,7 @@ function! GetAwkIndent()
return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum)) return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
else else
" if/for/while without '{' " if/for/while without '{'
return ind + &sw return ind + shiftwidth()
endif endif
endif endif
endif endif
@@ -140,7 +140,7 @@ function! GetAwkIndent()
" Decrease indent if this line contains a '}'. " Decrease indent if this line contains a '}'.
if getline(v:lnum) =~ '^\s*}' if getline(v:lnum) =~ '^\s*}'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -69,7 +69,7 @@ function! GetBstIndent(lnum) abort
endif endif
let fakeline = substitute(line,'^}','','').matchstr(cline,'^}') let fakeline = substitute(line,'^}','','').matchstr(cline,'^}')
let ind = indent(lnum) let ind = indent(lnum)
let ind = ind + &sw * s:count(line,'{') let ind = ind + shiftwidth() * s:count(line,'{')
let ind = ind - &sw * s:count(fakeline,'}') let ind = ind - shiftwidth() * s:count(fakeline,'}')
return ind return ind
endfunction endfunction

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Bazel (http://bazel.io) " Language: Bazel (http://bazel.io)
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl) " Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
" Last Change: 2015 Aug 11 " Last Change: 2017 Jun 13
if exists('b:did_indent') if exists('b:did_indent')
finish finish
@@ -41,11 +41,8 @@ function GetBzlIndent(lnum) abort
if exists('g:pyindent_open_paren') if exists('g:pyindent_open_paren')
let l:pyindent_open_paren = g:pyindent_open_paren let l:pyindent_open_paren = g:pyindent_open_paren
endif endif
" Vim 7.3.693 and later defines a shiftwidth() function to get the effective let g:pyindent_nested_paren = 'shiftwidth() * 2'
" shiftwidth value. Fall back to &shiftwidth if the function doesn't exist. let g:pyindent_open_paren = 'shiftwidth() * 2'
let l:sw_expr = exists('*shiftwidth') ? 'shiftwidth()' : '&shiftwidth'
let g:pyindent_nested_paren = l:sw_expr . ' * 2'
let g:pyindent_open_paren = l:sw_expr . ' * 2'
endif endif
let l:indent = -1 let l:indent = -1

View File

@@ -47,7 +47,7 @@ fun! CdlGetIndent(lnum)
let thisline = getline(a:lnum) let thisline = getline(a:lnum)
if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0 if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0
" it's an attributes line " it's an attributes line
return &sw return shiftwidth()
elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0 elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0
" it's a header or '{' or '}' or a comment " it's a header or '{' or '}' or a comment
return 0 return 0
@@ -71,13 +71,13 @@ fun! CdlGetIndent(lnum)
let c = line[inicio-1] let c = line[inicio-1]
" ')' and '=' don't change indent and are useless to set 'f' " ')' and '=' don't change indent and are useless to set 'f'
if c == '{' if c == '{'
return &sw return shiftwidth()
elseif c != ')' && c != '=' elseif c != ')' && c != '='
let f = 1 " all but 'elseif' are followed by a formula let f = 1 " all but 'elseif' are followed by a formula
if c ==? 'n' || c ==? 'e' " 'then', 'else' if c ==? 'n' || c ==? 'e' " 'then', 'else'
let ind = ind + &sw let ind = ind + shiftwidth()
elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional
let ind = ind + &sw let ind = ind + shiftwidth()
let f = 0 let f = 0
end end
end end
@@ -98,16 +98,16 @@ fun! CdlGetIndent(lnum)
let ind = 0 let ind = 0
let f = 1 let f = 1
elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif' elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif'
let ind = ind - &sw let ind = ind - shiftwidth()
elseif c == '(' || c ==? 'f' " '(' or 'if' elseif c == '(' || c ==? 'f' " '(' or 'if'
let ind = ind + &sw let ind = ind + shiftwidth()
else " c == '=' else " c == '='
" if it is an asignment increase indent " if it is an asignment increase indent
if f == -1 " we don't know yet, find out if f == -1 " we don't know yet, find out
let f = CdlAsignment(lnum, strpart(line, 0, inicio)) let f = CdlAsignment(lnum, strpart(line, 0, inicio))
end end
if f == 1 " formula increase it if f == 1 " formula increase it
let ind = ind + &sw let ind = ind + shiftwidth()
end end
end end
endw endw
@@ -115,13 +115,13 @@ fun! CdlGetIndent(lnum)
" CURRENT LINE, if it starts with a closing element, decrease indent " CURRENT LINE, if it starts with a closing element, decrease indent
" or if it starts with '=' (asignment), increase indent " or if it starts with '=' (asignment), increase indent
if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0 if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0
let ind = ind - &sw let ind = ind - shiftwidth()
elseif match(thisline, '^\s*=') >= 0 elseif match(thisline, '^\s*=') >= 0
if f == -1 " we don't know yet if is an asignment, find out if f == -1 " we don't know yet if is an asignment, find out
let f = CdlAsignment(lnum, "") let f = CdlAsignment(lnum, "")
end end
if f == 1 " formula increase it if f == 1 " formula increase it
let ind = ind + &sw let ind = ind + shiftwidth()
end end
end end

View File

@@ -31,19 +31,19 @@ function! GetChaiScriptIndent()
let flag = 0 let flag = 0
let prevline = getline(lnum) let prevline = getline(lnum)
if prevline =~ '^.*{.*' if prevline =~ '^.*{.*'
let ind = ind + &shiftwidth let ind = ind + shiftwidth()
let flag = 1 let flag = 1
endif endif
" Subtract a 'shiftwidth' after lines containing a { followed by a } " Subtract a 'shiftwidth' after lines containing a { followed by a }
" to keep it balanced " to keep it balanced
if flag == 1 && prevline =~ '.*{.*}.*' if flag == 1 && prevline =~ '.*{.*}.*'
let ind = ind - &shiftwidth let ind = ind - shiftwidth()
endif endif
" Subtract a 'shiftwidth' on lines ending with } " Subtract a 'shiftwidth' on lines ending with }
if getline(v:lnum) =~ '^\s*\%(}\)' if getline(v:lnum) =~ '^\s*\%(}\)'
let ind = ind - &shiftwidth let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -261,7 +261,7 @@ if exists("*searchpairpos")
call cursor(paren) call cursor(paren)
if s:is_method_special_case(paren) if s:is_method_special_case(paren)
return [paren[0], paren[1] + &shiftwidth - 1] return [paren[0], paren[1] + shiftwidth() - 1]
endif endif
if s:is_reader_conditional_special_case(paren) if s:is_reader_conditional_special_case(paren)
@@ -299,19 +299,19 @@ if exists("*searchpairpos")
let ww = s:strip_namespace_and_macro_chars(w) let ww = s:strip_namespace_and_macro_chars(w)
if &lispwords =~# '\V\<' . ww . '\>' if &lispwords =~# '\V\<' . ww . '\>'
return [paren[0], paren[1] + &shiftwidth - 1] return [paren[0], paren[1] + shiftwidth() - 1]
endif endif
if g:clojure_fuzzy_indent if g:clojure_fuzzy_indent
\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww) \ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww) \ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
return [paren[0], paren[1] + &shiftwidth - 1] return [paren[0], paren[1] + shiftwidth() - 1]
endif endif
call search('\v\_s', 'cW') call search('\v\_s', 'cW')
call search('\v\S', 'W') call search('\v\S', 'W')
if paren[0] < line(".") if paren[0] < line(".")
return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)] return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : shiftwidth() - 1)]
endif endif
call search('\v\S', 'bW') call search('\v\S', 'bW')

View File

@@ -68,19 +68,19 @@ fun! CMakeGetIndent(lnum)
let ind = ind let ind = ind
else else
if previous_line =~? cmake_indent_begin_regex if previous_line =~? cmake_indent_begin_regex
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
if previous_line =~? cmake_indent_open_regex if previous_line =~? cmake_indent_open_regex
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
endif endif
" Subtract " Subtract
if this_line =~? cmake_indent_end_regex if this_line =~? cmake_indent_end_regex
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
if previous_line =~? cmake_indent_close_regex if previous_line =~? cmake_indent_close_regex
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -52,11 +52,11 @@ function! s:optionalblock(lnum,ind,blocks,clauses)
if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
let ind = indent(lastclause) let ind = indent(lastclause)
elseif lastclause > 0 elseif lastclause > 0
let ind = indent(lastclause) + &sw let ind = indent(lastclause) + shiftwidth()
"let ind = ind + &sw "let ind = ind + shiftwidth()
endif endif
elseif line =~? clauses && cline !~? end elseif line =~? clauses && cline !~? end
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
return ind return ind
endfunction endfunction
@@ -98,8 +98,8 @@ function! GetCobolIndent(lnum) abort
let num = matchstr(line,'^\s*\zs\d\+\>') let num = matchstr(line,'^\s*\zs\d\+\>')
if 0+cnum == num if 0+cnum == num
return lindent return lindent
elseif 0+cnum > num && default < lindent + &sw elseif 0+cnum > num && default < lindent + shiftwidth()
let default = lindent + &sw let default = lindent + shiftwidth()
endif endif
elseif lindent < bshft && lindent >= ashft elseif lindent < bshft && lindent >= ashft
break break
@@ -135,13 +135,13 @@ function! GetCobolIndent(lnum) abort
if line =~? '^PERFORM\>' if line =~? '^PERFORM\>'
let perfline = substitute(line, '\c^PERFORM\s*', "", "") let perfline = substitute(line, '\c^PERFORM\s*', "", "")
if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$' if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
let ind = ind + &sw let ind = ind + shiftwidth()
elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$' elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
endif endif
if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>' if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR') let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION') let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
@@ -157,10 +157,10 @@ function! GetCobolIndent(lnum) abort
"&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>' "&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
let ind = indent(lastclause) let ind = indent(lastclause)
elseif lastclause > 0 elseif lastclause > 0
let ind = indent(lastclause) + &sw let ind = indent(lastclause) + shiftwidth()
endif endif
elseif line =~? '^WHEN\>' elseif line =~? '^WHEN\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
"I'm not sure why I had this "I'm not sure why I had this
"if line =~? '^ELSE\>-\@!' && line !~? '\.$' "if line =~? '^ELSE\>-\@!' && line !~? '\.$'
@@ -168,7 +168,7 @@ function! GetCobolIndent(lnum) abort
"endif "endif
if cline =~? '^\(END\)\>-\@!' if cline =~? '^\(END\)\>-\@!'
" On lines with just END, 'guess' a simple shift left " On lines with just END, 'guess' a simple shift left
let ind = ind - &sw let ind = ind - shiftwidth()
elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!' elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
call cursor(a:lnum,indent(a:lnum)) call cursor(a:lnum,indent(a:lnum))
let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip) let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
@@ -209,7 +209,7 @@ function! GetCobolIndent(lnum) abort
if match > 0 if match > 0
let ind = indent(match) let ind = indent(match)
elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>' elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif
return ind < bshft ? bshft : ind return ind < bshft ? bshft : ind

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -27,7 +27,7 @@ function! GetCucumberIndent()
let line = getline(prevnonblank(v:lnum-1)) let line = getline(prevnonblank(v:lnum-1))
let cline = getline(v:lnum) let cline = getline(v:lnum)
let nline = getline(nextnonblank(v:lnum+1)) let nline = getline(nextnonblank(v:lnum+1))
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = exists('*shiftwidth') ? shiftwidth() : shiftwidth()
let syn = s:syn(prevnonblank(v:lnum-1)) let syn = s:syn(prevnonblank(v:lnum-1))
let csyn = s:syn(v:lnum) let csyn = s:syn(v:lnum)
let nsyn = s:syn(nextnonblank(v:lnum+1)) let nsyn = s:syn(nextnonblank(v:lnum+1))

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Dylan " Language: Dylan
" Version: 0.01 " Version: 0.01
" Last Change: 2003 Feb 04 " Last Change: 2017 Jun 13
" Maintainer: Brent A. Fulgham <bfulgham@debian.org> " Maintainer: Brent A. Fulgham <bfulgham@debian.org>
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
@@ -45,13 +45,13 @@ function DylanGetIndent()
" If previous line was a 'define', indent " If previous line was a 'define', indent
if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)' if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)'
let chg = &sw let chg = shiftwidth()
" local methods indent the shift-width, plus 6 for the 'local' " local methods indent the shift-width, plus 6 for the 'local'
elseif prevline =~? '^\s*local' elseif prevline =~? '^\s*local'
let chg = &sw + 6 let chg = shiftwidth() + 6
" If previous line was a let with no closing semicolon, indent " If previous line was a let with no closing semicolon, indent
elseif prevline =~? '^\s*let.*[^;]\s*$' elseif prevline =~? '^\s*let.*[^;]\s*$'
let chg = &sw let chg = shiftwidth()
" If previous line opened a parenthesis, and did not close it, indent " If previous line opened a parenthesis, and did not close it, indent
elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$' elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1 return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1
@@ -75,13 +75,13 @@ function DylanGetIndent()
" line doesn't start with an indentable command: " line doesn't start with an indentable command:
let curr_str = getline(curr_line) let curr_str = getline(curr_line)
if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)' if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)'
let chg = &sw let chg = shiftwidth()
endif endif
endif endif
" If a line starts with end, un-indent (even if we just indented!) " If a line starts with end, un-indent (even if we just indented!)
if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)' if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)'
let chg = chg - &sw let chg = chg - shiftwidth()
endif endif
return ind + chg return ind + chg

View File

@@ -669,7 +669,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
call s:Pop(a:stack) call s:Pop(a:stack)
if empty(a:stack) if empty(a:stack)
call s:Log(' Stack is ["when"], so LTI is in a guard -> return') call s:Log(' Stack is ["when"], so LTI is in a guard -> return')
return [1, a:stored_vcol + &sw + 2] return [1, a:stored_vcol + shiftwidth() + 2]
else else
return [1, s:UnexpectedToken(a:token, a:stack)] return [1, s:UnexpectedToken(a:token, a:stack)]
endif endif
@@ -678,7 +678,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
call s:Pop(a:stack) call s:Pop(a:stack)
if empty(a:stack) if empty(a:stack)
call s:Log(' Stack is ["->"], so LTI is in function body -> return') call s:Log(' Stack is ["->"], so LTI is in function body -> return')
return [1, a:stored_vcol + &sw] return [1, a:stored_vcol + shiftwidth()]
elseif a:stack[0] ==# ';' elseif a:stack[0] ==# ';'
call s:Pop(a:stack) call s:Pop(a:stack)
if empty(a:stack) if empty(a:stack)
@@ -797,7 +797,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
elseif token ==# 'begin' elseif token ==# 'begin'
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
\stored_vcol, 'end', &sw) \stored_vcol, 'end', shiftwidth())
if ret | return res | endif if ret | return res | endif
" case EXPR of BRANCHES end " case EXPR of BRANCHES end
@@ -848,11 +848,11 @@ function! s:ErlangCalcIndent2(lnum, stack)
elseif stack == ['->'] elseif stack == ['->']
call s:Log(' LTI is in a branch after ' . call s:Log(' LTI is in a branch after ' .
\'"of/receive/after/if/catch" -> return') \'"of/receive/after/if/catch" -> return')
return stored_vcol + &sw return stored_vcol + shiftwidth()
elseif stack == ['when'] elseif stack == ['when']
call s:Log(' LTI is in a guard after ' . call s:Log(' LTI is in a guard after ' .
\'"of/receive/after/if/catch" -> return') \'"of/receive/after/if/catch" -> return')
return stored_vcol + &sw return stored_vcol + shiftwidth()
else else
return s:UnexpectedToken(token, stack) return s:UnexpectedToken(token, stack)
endif endif
@@ -888,7 +888,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
if empty(stack) if empty(stack)
call s:Log(' LTI is in a condition; matching ' . call s:Log(' LTI is in a condition; matching ' .
\'"case/if/try/receive" found') \'"case/if/try/receive" found')
let stored_vcol = curr_vcol + &sw let stored_vcol = curr_vcol + shiftwidth()
elseif stack[0] ==# 'align_to_begin_element' elseif stack[0] ==# 'align_to_begin_element'
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol let stored_vcol = curr_vcol
@@ -897,23 +897,23 @@ function! s:ErlangCalcIndent2(lnum, stack)
\'"case/if/try/receive" found') \'"case/if/try/receive" found')
call s:Pop(stack) call s:Pop(stack)
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol + &sw let stored_vcol = curr_vcol + shiftwidth()
elseif stack[0] ==# '->' elseif stack[0] ==# '->'
call s:Log(' LTI is in a branch; matching ' . call s:Log(' LTI is in a branch; matching ' .
\'"case/if/try/receive" found') \'"case/if/try/receive" found')
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol + 2 * &sw let stored_vcol = curr_vcol + 2 * shiftwidth()
elseif stack[0] ==# 'when' elseif stack[0] ==# 'when'
call s:Log(' LTI is in a guard; matching ' . call s:Log(' LTI is in a guard; matching ' .
\'"case/if/try/receive" found') \'"case/if/try/receive" found')
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol + 2 * &sw + 2 let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
endif endif
endif endif
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
\stored_vcol, 'end', &sw) \stored_vcol, 'end', shiftwidth())
if ret | return res | endif if ret | return res | endif
elseif token ==# 'fun' elseif token ==# 'fun'
@@ -930,7 +930,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
" stack = ['when'] => LTI is in a guard " stack = ['when'] => LTI is in a guard
if empty(stack) if empty(stack)
call s:Log(' LTI is in a condition; matching "fun" found') call s:Log(' LTI is in a condition; matching "fun" found')
let stored_vcol = curr_vcol + &sw let stored_vcol = curr_vcol + shiftwidth()
elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';' elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';'
call s:Log(' LTI is in a condition; matching "fun" found') call s:Log(' LTI is in a condition; matching "fun" found')
call s:Pop(stack) call s:Pop(stack)
@@ -938,15 +938,15 @@ function! s:ErlangCalcIndent2(lnum, stack)
elseif stack[0] ==# '->' elseif stack[0] ==# '->'
call s:Log(' LTI is in a branch; matching "fun" found') call s:Log(' LTI is in a branch; matching "fun" found')
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol + 2 * &sw let stored_vcol = curr_vcol + 2 * shiftwidth()
elseif stack[0] ==# 'when' elseif stack[0] ==# 'when'
call s:Log(' LTI is in a guard; matching "fun" found') call s:Log(' LTI is in a guard; matching "fun" found')
call s:Pop(stack) call s:Pop(stack)
let stored_vcol = curr_vcol + 2 * &sw + 2 let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
endif endif
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
\stored_vcol, 'end', &sw) \stored_vcol, 'end', shiftwidth())
if ret | return res | endif if ret | return res | endif
else else
" Pass: we have a function reference (e.g. "fun f/0") " Pass: we have a function reference (e.g. "fun f/0")
@@ -1220,7 +1220,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
" when A, " when A,
" LTI " LTI
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol, let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
\stored_vcol, &sw) \stored_vcol, shiftwidth())
if ret | return res | endif if ret | return res | endif
else else
" Example: " Example:
@@ -1252,7 +1252,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
" If LTI is between an 'after' and the corresponding " If LTI is between an 'after' and the corresponding
" 'end', then let's return " 'end', then let's return
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol, let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
\stored_vcol, &sw) \stored_vcol, shiftwidth())
if ret | return res | endif if ret | return res | endif
endif endif

View File

@@ -47,11 +47,7 @@ set cpo&vim
function! GetErubyIndent(...) function! GetErubyIndent(...)
" The value of a single shift-width " The value of a single shift-width
if exists('*shiftwidth') let sw = shiftwidth()
let sw = shiftwidth()
else
let sw = &sw
endif
if a:0 && a:1 == '.' if a:0 && a:1 == '.'
let v:lnum = line('.') let v:lnum = line('.')

View File

@@ -339,7 +339,7 @@ function FalconGetIndent(...)
" If the previous line ended with a block opening, add a level of indent. " If the previous line ended with a block opening, add a level of indent.
if s:Match(lnum, s:block_regex) if s:Match(lnum, s:block_regex)
return indent(s:GetMSL(lnum)) + &sw return indent(s:GetMSL(lnum)) + shiftwidth()
endif endif
" If it contained hanging closing brackets, find the rightmost one, find its " If it contained hanging closing brackets, find the rightmost one, find its
@@ -350,20 +350,20 @@ function FalconGetIndent(...)
if opening.pos != -1 if opening.pos != -1
if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
if col('.') + 1 == col('$') if col('.') + 1 == col('$')
return ind + &sw return ind + shiftwidth()
else else
return virtcol('.') return virtcol('.')
endif endif
else else
let nonspace = matchend(line, '\S', opening.pos + 1) - 1 let nonspace = matchend(line, '\S', opening.pos + 1) - 1
return nonspace > 0 ? nonspace : ind + &sw return nonspace > 0 ? nonspace : ind + shiftwidth()
endif endif
elseif closing.pos != -1 elseif closing.pos != -1
call cursor(lnum, closing.pos + 1) call cursor(lnum, closing.pos + 1)
normal! % normal! %
if s:Match(line('.'), s:falcon_indent_keywords) if s:Match(line('.'), s:falcon_indent_keywords)
return indent('.') + &sw return indent('.') + shiftwidth()
else else
return indent('.') return indent('.')
endif endif
@@ -392,7 +392,7 @@ function FalconGetIndent(...)
let col = s:Match(lnum, s:falcon_indent_keywords) let col = s:Match(lnum, s:falcon_indent_keywords)
if col > 0 if col > 0
call cursor(lnum, col) call cursor(lnum, col)
let ind = virtcol('.') - 1 + &sw let ind = virtcol('.') - 1 + shiftwidth()
" TODO: make this better (we need to count them) (or, if a searchpair " TODO: make this better (we need to count them) (or, if a searchpair
" fails, we know that something is lacking an end and thus we indent a " fails, we know that something is lacking an end and thus we indent a
" level " level
@@ -422,9 +422,9 @@ function FalconGetIndent(...)
" TODO: this does not take into account contrived things such as " TODO: this does not take into account contrived things such as
" module Foo; class Bar; end " module Foo; class Bar; end
if s:Match(lnum, s:falcon_indent_keywords) if s:Match(lnum, s:falcon_indent_keywords)
let ind = msl_ind + &sw let ind = msl_ind + shiftwidth()
if s:Match(lnum, s:end_end_regex) if s:Match(lnum, s:end_end_regex)
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind
endif endif
@@ -433,7 +433,7 @@ function FalconGetIndent(...)
" closing bracket, indent one extra level. " closing bracket, indent one extra level.
if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)') if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)')
if lnum == p_lnum if lnum == p_lnum
let ind = msl_ind + &sw let ind = msl_ind + shiftwidth()
else else
let ind = msl_ind let ind = msl_ind
endif endif

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: git config file " Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -20,7 +20,7 @@ if exists("*GetGitconfigIndent")
endif endif
function! GetGitconfigIndent() function! GetGitconfigIndent()
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = shiftwidth()
let line = getline(prevnonblank(v:lnum-1)) let line = getline(prevnonblank(v:lnum-1))
let cline = getline(v:lnum) let cline = getline(v:lnum)
if line =~ '\\\@<!\%(\\\\\)*\\$' if line =~ '\\\@<!\%(\\\\\)*\\$'

View File

@@ -2,7 +2,7 @@
" Language: gitolite configuration " Language: gitolite configuration
" URL: https://github.com/tmatilai/gitolite.vim " URL: https://github.com/tmatilai/gitolite.vim
" Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi> " Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>
" Last Change: 2011-12-24 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -27,11 +27,11 @@ function! GetGitoliteIndent()
let cline = getline(v:lnum) let cline = getline(v:lnum)
if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]' if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]'
return &sw return shiftwidth()
elseif cline =~ '^\s*config\s' elseif cline =~ '^\s*config\s'
return &sw return shiftwidth()
elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$' elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$'
return &sw return shiftwidth()
elseif cline =~ '^\s*#' elseif cline =~ '^\s*#'
return indent(prevln) return indent(prevln)
elseif cline =~ '^\s*$' elseif cline =~ '^\s*$'

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Go " Language: Go
" Maintainer: David Barnett (https://github.com/google/vim-ft-go) " Maintainer: David Barnett (https://github.com/google/vim-ft-go)
" Last Change: 2014 Aug 16 " Last Change: 2017 Jun 13
" "
" TODO: " TODO:
" - function invocations split across lines " - function invocations split across lines
@@ -23,18 +23,6 @@ if exists('*GoIndent')
finish finish
endif endif
" The shiftwidth() function is relatively new.
" Don't require it to exist.
if exists('*shiftwidth')
function s:sw() abort
return shiftwidth()
endfunction
else
function s:sw() abort
return &shiftwidth
endfunction
endif
function! GoIndent(lnum) function! GoIndent(lnum)
let l:prevlnum = prevnonblank(a:lnum-1) let l:prevlnum = prevnonblank(a:lnum-1)
if l:prevlnum == 0 if l:prevlnum == 0
@@ -51,17 +39,17 @@ function! GoIndent(lnum)
if l:prevl =~ '[({]\s*$' if l:prevl =~ '[({]\s*$'
" previous line opened a block " previous line opened a block
let l:ind += s:sw() let l:ind += shiftwidth()
endif endif
if l:prevl =~# '^\s*\(case .*\|default\):$' if l:prevl =~# '^\s*\(case .*\|default\):$'
" previous line is part of a switch statement " previous line is part of a switch statement
let l:ind += s:sw() let l:ind += shiftwidth()
endif endif
" TODO: handle if the previous line is a label. " TODO: handle if the previous line is a label.
if l:thisl =~ '^\s*[)}]' if l:thisl =~ '^\s*[)}]'
" this line closed a block " this line closed a block
let l:ind -= s:sw() let l:ind -= shiftwidth()
endif endif
" Colons are tricky. " Colons are tricky.
@@ -69,7 +57,7 @@ function! GoIndent(lnum)
" We ignore trying to deal with jump labels because (a) they're rare, and " We ignore trying to deal with jump labels because (a) they're rare, and
" (b) they're hard to disambiguate from a composite literal key. " (b) they're hard to disambiguate from a composite literal key.
if l:thisl =~# '^\s*\(case .*\|default\):$' if l:thisl =~# '^\s*\(case .*\|default\):$'
let l:ind -= s:sw() let l:ind -= shiftwidth()
endif endif
return l:ind return l:ind

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Haml " Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -37,7 +37,7 @@ function! GetHamlIndent()
let line = substitute(line,'^\s\+','','') let line = substitute(line,'^\s\+','','')
let indent = indent(lnum) let indent = indent(lnum)
let cindent = indent(v:lnum) let cindent = indent(v:lnum)
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = shiftwidth()
if cline =~# '\v^-\s*%(elsif|else|when)>' if cline =~# '\v^-\s*%(elsif|else|when)>'
let indent = cindent < indent ? cindent : indent - sw let indent = cindent < indent ? cindent : indent - sw
endif endif

View File

@@ -27,13 +27,13 @@ function HamGetIndent(lnum)
" Add a shiftwidth to statements following if, else, elseif, " Add a shiftwidth to statements following if, else, elseif,
" case, select, default, do, until, while, for, start " case, select, default, do, until, while, for, start
if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>' if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Subtract a shiftwidth from else, elseif, end(if|while|for), until " Subtract a shiftwidth from else, elseif, end(if|while|for), until
let line = getline(v:lnum) let line = getline(v:lnum)
if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>' if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -47,7 +47,7 @@ function GetHogIndent()
" Continuation of a line that wasn't indented " Continuation of a line that wasn't indented
let prevline = getline(prevlnum) let prevline = getline(prevlnum)
if prevline =~ '^\k\+.*\\\s*$' if prevline =~ '^\k\+.*\\\s*$'
return &sw return shiftwidth()
endif endif
" Continuation of a line that was indented " Continuation of a line that was indented
@@ -58,13 +58,13 @@ function GetHogIndent()
" Indent the next line if previous line contained a start of a block " Indent the next line if previous line contained a start of a block
" definition ('{' or '('). " definition ('{' or '(').
if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$' if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$'
return &sw return shiftwidth()
endif endif
" Match inside of a block " Match inside of a block
if s:IsInBlock(v:lnum) if s:IsInBlock(v:lnum)
if prevline =~ "^\k\+.*$" if prevline =~ "^\k\+.*$"
return &sw return shiftwidth()
else else
return indent(prevlnum) return indent(prevlnum)
endif endif

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 Jan 17 " Last Change: 2017 Jun 13
" 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.
@@ -51,15 +51,6 @@ if exists("*HtmlIndent") && !exists('g:force_reload_html')
finish finish
endif endif
" shiftwidth() exists since patch 7.3.694
if exists('*shiftwidth')
let s:ShiftWidth = function('shiftwidth')
else
func! s:ShiftWidth()
return &shiftwidth
endfunc
endif
" Allow for line continuation below. " Allow for line continuation below.
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo-=C set cpo-=C
@@ -123,7 +114,7 @@ func! HtmlIndent_CheckUserSettings()
let indone = {"zero": 0 let indone = {"zero": 0
\,"auto": "indent(prevnonblank(v:lnum-1))" \,"auto": "indent(prevnonblank(v:lnum-1))"
\,"inc": "b:hi_indent.blocktagind + s:ShiftWidth()"} \,"inc": "b:hi_indent.blocktagind + shiftwidth()"}
let script1 = '' let script1 = ''
if exists("b:html_indent_script1") if exists("b:html_indent_script1")
@@ -358,7 +349,7 @@ func! s:CheckBlockTag(blocktag, ind)
endif endif
let b:hi_newstate.blocklnr = v:lnum let b:hi_newstate.blocklnr = v:lnum
" save allover indent for the endtag " save allover indent for the endtag
let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth() let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * shiftwidth()
if a:ind == 3 if a:ind == 3
return "SCRIPT" " all except this must be lowercase return "SCRIPT" " all except this must be lowercase
" line is to be checked again for the type attribute " line is to be checked again for the type attribute
@@ -480,7 +471,7 @@ func! s:FreshState(lnum)
let state.blocklnr = stopline let state.blocklnr = stopline
" check preceding tags in the line: " check preceding tags in the line:
call s:CountITags(tagline[: stopcol-2]) call s:CountITags(tagline[: stopcol-2])
let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth() let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * shiftwidth()
return state return state
elseif stopline == state.lnum elseif stopline == state.lnum
" handle special case: previous line (= state.lnum) contains a " handle special case: previous line (= state.lnum) contains a
@@ -490,7 +481,7 @@ func! s:FreshState(lnum)
if !swendtag if !swendtag
let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW") let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW")
call s:CountITags(tolower(getline(bline)[: bcol-2])) call s:CountITags(tolower(getline(bline)[: bcol-2]))
let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth() let state.baseindent = indent(bline) + (s:curind + s:nextrel) * shiftwidth()
return state return state
endif endif
endif endif
@@ -511,7 +502,7 @@ func! s:FreshState(lnum)
if found == 2 if found == 2
let state.baseindent = b:hi_indent.baseindent let state.baseindent = b:hi_indent.baseindent
endif endif
let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth() let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
return state return state
endif endif
@@ -530,7 +521,7 @@ func! s:FreshState(lnum)
let text = tolower(getline(comlnum)[: comcol-2]) let text = tolower(getline(comlnum)[: comcol-2])
endif endif
call s:CountITags(text) call s:CountITags(text)
let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth() let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
" TODO check tags that follow "-->" " TODO check tags that follow "-->"
return state return state
endif endif
@@ -550,9 +541,9 @@ func! s:FreshState(lnum)
let text = getline(start_lnum) let text = getline(start_lnum)
let swendtag = match(text, '^\s*</') >= 0 let swendtag = match(text, '^\s*</') >= 0
call s:CountITags(text[: col('.') - 2]) call s:CountITags(text[: col('.') - 2])
let state.baseindent += s:nextrel * s:ShiftWidth() let state.baseindent += s:nextrel * shiftwidth()
if !swendtag if !swendtag
let state.baseindent += s:curind * s:ShiftWidth() let state.baseindent += s:curind * shiftwidth()
endif endif
endif endif
return state return state
@@ -565,9 +556,9 @@ func! s:FreshState(lnum)
let text = getline(state.lnum) let text = getline(state.lnum)
let swendtag = match(text, '^\s*</') >= 0 let swendtag = match(text, '^\s*</') >= 0
call s:CountITags(tolower(text)) call s:CountITags(tolower(text))
let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth() let state.baseindent = indent(state.lnum) + s:nextrel * shiftwidth()
if !swendtag if !swendtag
let state.baseindent += s:curind * s:ShiftWidth() let state.baseindent += s:curind * shiftwidth()
endif endif
return state return state
endfunc "}}} endfunc "}}}
@@ -646,7 +637,7 @@ func! s:CSSIndent()
" add indent after { " add indent after {
let brace_counts = HtmlIndent_CountBraces(prev_lnum) let brace_counts = HtmlIndent_CountBraces(prev_lnum)
let extra = brace_counts.c_open * s:ShiftWidth() let extra = brace_counts.c_open * shiftwidth()
let prev_text = getline(prev_lnum) let prev_text = getline(prev_lnum)
let below_end_brace = prev_text =~ '}\s*$' let below_end_brace = prev_text =~ '}\s*$'
@@ -663,7 +654,7 @@ func! s:CSSIndent()
" if the current line is not a comment or starts with @ (used by template " if the current line is not a comment or starts with @ (used by template
" systems) reduce indent if previous line is a continuation line " systems) reduce indent if previous line is a continuation line
if !prev_hasfield && !prev_special if !prev_hasfield && !prev_special
let extra = -s:ShiftWidth() let extra = -shiftwidth()
endif endif
else else
let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:' let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
@@ -671,14 +662,14 @@ func! s:CSSIndent()
if !cur_hasfield && (prev_hasfield || prev_unfinished) if !cur_hasfield && (prev_hasfield || prev_unfinished)
" Continuation line has extra indent if the previous line was not a " Continuation line has extra indent if the previous line was not a
" continuation line. " continuation line.
let extra = s:ShiftWidth() let extra = shiftwidth()
" Align with @if " Align with @if
if prev_text =~ '^\s*@if ' if prev_text =~ '^\s*@if '
let extra = 4 let extra = 4
endif endif
elseif cur_hasfield && !prev_hasfield && !prev_special elseif cur_hasfield && !prev_hasfield && !prev_special
" less indent below a continuation line " less indent below a continuation line
let extra = -s:ShiftWidth() let extra = -shiftwidth()
endif endif
endif endif
endif endif
@@ -699,10 +690,10 @@ func! s:CSSIndent()
if special if special
" do not reduce indent below @{ ... } " do not reduce indent below @{ ... }
if extra < 0 if extra < 0
let extra += s:ShiftWidth() let extra += shiftwidth()
endif endif
else else
let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * s:ShiftWidth() let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * shiftwidth()
endif endif
endif endif
@@ -710,10 +701,10 @@ func! s:CSSIndent()
if extra == 0 if extra == 0
if brace_counts.p_open > brace_counts.p_close if brace_counts.p_open > brace_counts.p_close
" previous line has more ( than ): add a shiftwidth " previous line has more ( than ): add a shiftwidth
let extra = s:ShiftWidth() let extra = shiftwidth()
elseif brace_counts.p_open < brace_counts.p_close elseif brace_counts.p_open < brace_counts.p_close
" previous line has more ) than (: subtract a shiftwidth " previous line has more ) than (: subtract a shiftwidth
let extra = -s:ShiftWidth() let extra = -shiftwidth()
endif endif
endif endif
@@ -816,7 +807,7 @@ func! s:Alien5()
let idx = match(prevtext, '^\s*\zs<!--') let idx = match(prevtext, '^\s*\zs<!--')
if idx >= 0 if idx >= 0
" just below comment start, add a shiftwidth " just below comment start, add a shiftwidth
return idx + s:ShiftWidth() return idx + shiftwidth()
endif endif
" Some files add 4 spaces just below a TODO line. It's difficult to detect " Some files add 4 spaces just below a TODO line. It's difficult to detect
@@ -837,7 +828,7 @@ func! s:Alien6()
return indent(lnum) return indent(lnum)
endif endif
endif endif
return b:hi_indent.baseindent + s:ShiftWidth() return b:hi_indent.baseindent + shiftwidth()
endfunc "}}} endfunc "}}}
" When the "lnum" line ends in ">" find the line containing the matching "<". " When the "lnum" line ends in ">" find the line containing the matching "<".
@@ -947,7 +938,7 @@ func! HtmlIndent()
endif endif
let curtext = tolower(getline(v:lnum)) let curtext = tolower(getline(v:lnum))
let indentunit = s:ShiftWidth() let indentunit = shiftwidth()
let b:hi_newstate = {} let b:hi_newstate = {}
let b:hi_newstate.lnum = v:lnum let b:hi_newstate.lnum = v:lnum
@@ -1030,9 +1021,9 @@ func! HtmlIndent()
if col('.') > 2 if col('.') > 2
let swendtag = match(text, '^\s*</') >= 0 let swendtag = match(text, '^\s*</') >= 0
call s:CountITags(text[: col('.') - 2]) call s:CountITags(text[: col('.') - 2])
let indent += s:nextrel * s:ShiftWidth() let indent += s:nextrel * shiftwidth()
if !swendtag if !swendtag
let indent += s:curind * s:ShiftWidth() let indent += s:curind * shiftwidth()
endif endif
endif endif
else else

View File

@@ -1,6 +1,6 @@
" IDL (Interactive Data Language) indent file. " IDL (Interactive Data Language) indent file.
" Language: IDL (ft=idlang) " Language: IDL (ft=idlang)
" Last change: 2012 May 18 " Last change: 2017 Jun 13
" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com> " Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
@@ -34,25 +34,25 @@ function GetIdlangIndent(lnum)
" Indenting of continued lines. " Indenting of continued lines.
if getline(pnum) =~ '\$\s*\(;.*\)\=$' if getline(pnum) =~ '\$\s*\(;.*\)\=$'
if getline(pnum2) !~ '\$\s*\(;.*\)\=$' if getline(pnum2) !~ '\$\s*\(;.*\)\=$'
let curind = curind+&sw let curind = curind+shiftwidth()
endif endif
else else
if getline(pnum2) =~ '\$\s*\(;.*\)\=$' if getline(pnum2) =~ '\$\s*\(;.*\)\=$'
let curind = curind-&sw let curind = curind-shiftwidth()
endif endif
endif endif
" Indenting blocks of statements. " Indenting blocks of statements.
if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>' if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>'
if getline(pnum) =~? 'begin\>' if getline(pnum) =~? 'begin\>'
elseif indent(v:lnum) > curind-&sw elseif indent(v:lnum) > curind-shiftwidth()
let curind = curind-&sw let curind = curind-shiftwidth()
else else
return -1 return -1
endif endif
elseif getline(pnum) =~? 'begin\>' elseif getline(pnum) =~? 'begin\>'
if indent(v:lnum) < curind+&sw if indent(v:lnum) < curind+shiftwidth()
let curind = curind+&sw let curind = curind+shiftwidth()
else else
return -1 return -1
endif endif

View File

@@ -50,17 +50,17 @@ fun! GetIshdIndent(lnum)
" Add " Add
if previous_line =~ '^\s*\<\(function\|begin\|switch\|case\|default\|if.\{-}then\|else\|elseif\|while\|repeat\)\>' if previous_line =~ '^\s*\<\(function\|begin\|switch\|case\|default\|if.\{-}then\|else\|elseif\|while\|repeat\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Subtract " Subtract
if this_line =~ '^\s*\<endswitch\>' if this_line =~ '^\s*\<endswitch\>'
let ind = ind - 2 * &sw let ind = ind - 2 * shiftwidth()
elseif this_line =~ '^\s*\<\(begin\|end\|endif\|endwhile\|else\|elseif\|until\)\>' elseif this_line =~ '^\s*\<\(begin\|end\|endif\|endwhile\|else\|elseif\|until\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
elseif this_line =~ '^\s*\<\(case\|default\)\>' elseif this_line =~ '^\s*\<\(case\|default\)\>'
if previous_line !~ '^\s*\<switch\>' if previous_line !~ '^\s*\<switch\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif

View File

@@ -236,9 +236,10 @@ function s:OneScope(lnum)
\ s:save_pos('s:previous_token') != '.' \ s:save_pos('s:previous_token') != '.'
endfunction endfunction
" returns braceless levels started by 'i' and above lines * &sw. 'num' is the " returns braceless levels started by 'i' and above lines * shiftwidth().
" lineNr which encloses the entire context, 'cont' if whether line 'i' + 1 is " 'num' is the lineNr which encloses the entire context, 'cont' if whether
" a continued expression, which could have started in a braceless context " line 'i' + 1 is a continued expression, which could have started in a
" braceless context
function s:iscontOne(i,num,cont) function s:iscontOne(i,num,cont)
let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0] let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]
let pind = a:num ? indent(l:num) + s:W : 0 let pind = a:num ? indent(l:num) + s:W : 0

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: JSON " Language: JSON
" Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json " Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
" Last Change: 2014 Aug 29 " Last Change: 2017 Jun 13
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c " https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json " Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe " Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
@@ -141,7 +141,7 @@ function GetJSONIndent()
" If the previous line ended with a block opening, add a level of indent. " If the previous line ended with a block opening, add a level of indent.
" if s:Match(lnum, s:block_regex) " if s:Match(lnum, s:block_regex)
" return indent(lnum) + &sw " return indent(lnum) + shiftwidth()
" endif " endif
" If the previous line contained an opening bracket, and we are still in it, " If the previous line contained an opening bracket, and we are still in it,
@@ -149,7 +149,7 @@ function GetJSONIndent()
if line =~ '[[({]' if line =~ '[[({]'
let counts = s:LineHasOpeningBrackets(lnum) let counts = s:LineHasOpeningBrackets(lnum)
if counts[0] == '1' || counts[1] == '1' || counts[2] == '1' if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
return ind + &sw return ind + shiftwidth()
else else
call cursor(v:lnum, vcol) call cursor(v:lnum, vcol)
end end

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Liquid " Language: Liquid
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2017 Jun 13
if exists('b:did_indent') if exists('b:did_indent')
finish finish
@@ -54,7 +54,7 @@ function! GetLiquidIndent(...)
let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','') let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+') let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','') let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = shiftwidth()
let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>') let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>') let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>') let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')

View File

@@ -38,24 +38,24 @@ function! GetLogtalkIndent()
endif endif
" Check for entity opening directive on previous line " Check for entity opening directive on previous line
if pline =~ '^\s*:-\s\(object\|protocol\|category\)\ze(.*,$' if pline =~ '^\s*:-\s\(object\|protocol\|category\)\ze(.*,$'
let ind = ind + &sw let ind = ind + shiftwidth()
" Check for clause head on previous line " Check for clause head on previous line
elseif pline =~ ':-\s*\(%.*\)\?$' elseif pline =~ ':-\s*\(%.*\)\?$'
let ind = ind + &sw let ind = ind + shiftwidth()
" Check for entity closing directive on previous line " Check for entity closing directive on previous line
elseif pline =~ '^\s*:-\send_\(object\|protocol\|category\)\.\(%.*\)\?$' elseif pline =~ '^\s*:-\send_\(object\|protocol\|category\)\.\(%.*\)\?$'
let ind = ind - &sw let ind = ind - shiftwidth()
" Check for end of clause on previous line " Check for end of clause on previous line
elseif pline =~ '\.\s*\(%.*\)\?$' elseif pline =~ '\.\s*\(%.*\)\?$'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
" Check for opening conditional on previous line " Check for opening conditional on previous line
if pline =~ '^\s*\([(;]\|->\)' && pline !~ '\.\s*\(%.*\)\?$' && pline !~ '^.*\([)][,]\s*\(%.*\)\?$\)' if pline =~ '^\s*\([(;]\|->\)' && pline !~ '\.\s*\(%.*\)\?$' && pline !~ '^.*\([)][,]\s*\(%.*\)\?$\)'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Check for closing an unclosed paren, or middle ; or -> " Check for closing an unclosed paren, or middle ; or ->
if line =~ '^\s*\([);]\|->\)' if line =~ '^\s*\([);]\|->\)'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind
endfunction endfunction

View File

@@ -2,7 +2,7 @@
" Language: Lua script " Language: Lua script
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br> " Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
" First Author: Max Ischenko <mfi 'at' ukr.net> " First Author: Max Ischenko <mfi 'at' ukr.net>
" Last Change: 2016 Jan 10 " Last Change: 2017 Jun 13
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
if exists("b:did_indent") if exists("b:did_indent")
@@ -48,7 +48,7 @@ function! GetLuaIndent()
" Add 'shiftwidth' if what we found previously is not in a comment and " Add 'shiftwidth' if what we found previously is not in a comment and
" an "end" or "until" is not present on the same line. " an "end" or "until" is not present on the same line.
if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>' if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>'
let ind = ind + &shiftwidth let ind = ind + shiftwidth()
endif endif
endif endif
@@ -56,7 +56,7 @@ function! GetLuaIndent()
" This is the part that requires 'indentkeys'. " This is the part that requires 'indentkeys'.
let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)') let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment" if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
let ind = ind - &shiftwidth let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -44,9 +44,9 @@ function GetMatlabIndent(lnum)
" See if this line does not follow the line right after an openblock " See if this line does not follow the line right after an openblock
if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>' if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
" See if the user has already dedented " See if the user has already dedented
elseif indent(v:lnum) > curind - &sw elseif indent(v:lnum) > curind - shiftwidth()
" If not, recommend one dedent " If not, recommend one dedent
let curind = curind - &sw let curind = curind - shiftwidth()
else else
" Otherwise, trust the user " Otherwise, trust the user
return -1 return -1
@@ -56,9 +56,9 @@ function GetMatlabIndent(lnum)
" If the previous line opened a block " If the previous line opened a block
elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>' elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
" See if the user has already indented " See if the user has already indented
if indent(v:lnum) < curind + &sw if indent(v:lnum) < curind + shiftwidth()
"If not, recommend indent "If not, recommend indent
let curind = curind + &sw let curind = curind + shiftwidth()
else else
" Otherwise, trust the user " Otherwise, trust the user
return -1 return -1

View File

@@ -49,7 +49,7 @@ function GetMmaIndent()
" also, indent only if this line if this line isn't starting a new " also, indent only if this line if this line isn't starting a new
" block... TODO - fix this with indentkeys? " block... TODO - fix this with indentkeys?
if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]' if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]'
let ind = ind+&sw let ind = ind+shiftwidth()
endif endif
" if this line had unmatched closing block, " if this line had unmatched closing block,

View File

@@ -4,7 +4,7 @@
" Mike Leary <leary@nwlink.com> " Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com> " Markus Mottl <markus.mottl@gmail.com>
" URL: http://www.ocaml.info/vim/indent/ocaml.vim " URL: http://www.ocaml.info/vim/indent/ocaml.vim
" Last Change: 2013 Jun 29 " Last Change: 2017 Jun 13
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working " 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM) " 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
" 2013 June - commented textwidth (Marc Weber) " 2013 June - commented textwidth (Marc Weber)
@@ -101,7 +101,7 @@ function! GetOCamlIndent()
" Return double 'shiftwidth' after lines matching: " Return double 'shiftwidth' after lines matching:
if lline =~ '^\s*|.*->\s*$' if lline =~ '^\s*|.*->\s*$'
return ind + &sw + &sw return ind + 2 * shiftwidth()
endif endif
let line = getline(v:lnum) let line = getline(v:lnum)
@@ -172,7 +172,7 @@ function! GetOCamlIndent()
" Indent if current line begins with 'and': " Indent if current line begins with 'and':
elseif line =~ '^\s*and\>' elseif line =~ '^\s*and\>'
if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$' if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
return ind - &sw return ind - shiftwidth()
endif endif
" Indent if current line begins with 'with': " Indent if current line begins with 'with':
@@ -199,14 +199,14 @@ function! GetOCamlIndent()
" or 'method': " or 'method':
elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>' elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
if lline !~ s:obj if lline !~ s:obj
return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + shiftwidth()
endif endif
endif endif
" Add a 'shiftwidth' after lines ending with: " Add a 'shiftwidth' after lines ending with:
if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$' if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
let ind = ind + &sw let ind = ind + shiftwidth()
" Back to normal indent after lines ending with ';;': " Back to normal indent after lines ending with ';;':
elseif lline =~ ';;\s*$' && lline !~ '^\s*;;' elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
@@ -263,7 +263,7 @@ function! GetOCamlIndent()
" Subtract a 'shiftwidth' after lines matching 'match ... with parser': " Subtract a 'shiftwidth' after lines matching 'match ... with parser':
if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$' if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -131,7 +131,7 @@ function GetOccamIndent()
if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd) if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd)
\ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent \ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent
\ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd))) \ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd)))
let curindent = curindent + &shiftwidth let curindent = curindent + shiftwidth()
" Restore magic " Restore magic
if !save_magic|setlocal nomagic|endif if !save_magic|setlocal nomagic|endif
@@ -153,7 +153,7 @@ function GetOccamIndent()
while !found while !found
if indent(prevlinenum) == curindent - &shiftwidth if indent(prevlinenum) == curindent - shiftwidth()
let found = 1 let found = 1
endif endif
@@ -171,7 +171,7 @@ function GetOccamIndent()
if prevlinenum > 0 if prevlinenum > 0
if getline(prevlinenum) =~ s:SecondLevelIndent if getline(prevlinenum) =~ s:SecondLevelIndent
let curindent = curindent + &shiftwidth let curindent = curindent + shiftwidth()
endif endif
endif endif

View File

@@ -2,7 +2,7 @@
" Language: Pascal " Language: Pascal
" Maintainer: Neil Carter <n.carter@swansea.ac.uk> " Maintainer: Neil Carter <n.carter@swansea.ac.uk>
" Created: 2004 Jul 13 " Created: 2004 Jul 13
" Last Change: 2011 Apr 01 " Last Change: 2017 Jun 13
" "
" This is version 2.0, a complete rewrite. " This is version 2.0, a complete rewrite.
" "
@@ -102,12 +102,12 @@ function! GetPascalIndent( line_num )
" If the PREVIOUS LINE ended in these items, always indent " If the PREVIOUS LINE ended in these items, always indent
if prev_codeline =~ '\<\(type\|const\|var\)$' if prev_codeline =~ '\<\(type\|const\|var\)$'
return indnt + &shiftwidth return indnt + shiftwidth()
endif endif
if prev_codeline =~ '\<repeat$' if prev_codeline =~ '\<repeat$'
if this_codeline !~ '^\s*until\>' if this_codeline !~ '^\s*until\>'
return indnt + &shiftwidth return indnt + shiftwidth()
else else
return indnt return indnt
endif endif
@@ -115,7 +115,7 @@ function! GetPascalIndent( line_num )
if prev_codeline =~ '\<\(begin\|record\)$' if prev_codeline =~ '\<\(begin\|record\)$'
if this_codeline !~ '^\s*end\>' if this_codeline !~ '^\s*end\>'
return indnt + &shiftwidth return indnt + shiftwidth()
else else
return indnt return indnt
endif endif
@@ -125,10 +125,10 @@ function! GetPascalIndent( line_num )
" followed by "begin" " followed by "begin"
if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$' if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
if this_codeline !~ '^\s*begin\>' if this_codeline !~ '^\s*begin\>'
return indnt + &shiftwidth return indnt + shiftwidth()
else else
" If it does start with "begin" then keep the same indent " If it does start with "begin" then keep the same indent
"return indnt + &shiftwidth "return indnt + shiftwidth()
return indnt return indnt
endif endif
endif endif
@@ -137,7 +137,7 @@ function! GetPascalIndent( line_num )
" only the line before the current one. TODO: Get it working for " only the line before the current one. TODO: Get it working for
" parameter lists longer than two lines. " parameter lists longer than two lines.
if prev_codeline =~ '([^)]\+$' if prev_codeline =~ '([^)]\+$'
return indnt + &shiftwidth return indnt + shiftwidth()
endif endif
@@ -146,7 +146,7 @@ function! GetPascalIndent( line_num )
" Lines starting with "else", but not following line ending with " Lines starting with "else", but not following line ending with
" "end". " "end".
if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$' if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
return indnt - &shiftwidth return indnt - shiftwidth()
endif endif
" Lines after a single-statement branch/loop. " Lines after a single-statement branch/loop.
@@ -160,16 +160,16 @@ function! GetPascalIndent( line_num )
" additional unindentation. " additional unindentation.
if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$' if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
" Note that we don't return from here. " Note that we don't return from here.
return indnt - &shiftwidth - &shiftwidth return indnt - 2 * shiftwidth()
endif endif
return indnt - &shiftwidth return indnt - shiftwidth()
endif endif
" Lines starting with "until" or "end". This rule must be overridden " Lines starting with "until" or "end". This rule must be overridden
" by the one for "end" after a single-statement branch/loop. In " by the one for "end" after a single-statement branch/loop. In
" other words that rule should come before this one. " other words that rule should come before this one.
if this_codeline =~ '^\s*\(end\|until\)\>' if this_codeline =~ '^\s*\(end\|until\)\>'
return indnt - &shiftwidth return indnt - shiftwidth()
endif endif
@@ -201,7 +201,7 @@ function! GetPascalIndent( line_num )
" If the PREVIOUS LINE ended in these items, always indent. " If the PREVIOUS LINE ended in these items, always indent.
if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$' if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
return indnt + &shiftwidth return indnt + shiftwidth()
endif endif
" ???? Indent "procedure" and "functions" if they appear within an " ???? Indent "procedure" and "functions" if they appear within an
@@ -212,11 +212,11 @@ function! GetPascalIndent( line_num )
" UNINDENT ONCE " UNINDENT ONCE
if this_codeline =~ '^\s*\(except\|finally\)$' if this_codeline =~ '^\s*\(except\|finally\)$'
return indnt - &shiftwidth return indnt - shiftwidth()
endif endif
if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$' if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
return indnt - &shiftwidth return indnt - shiftwidth()
endif endif

View File

@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-24 " Last Change: 2017 Jun 13
" Suggestions and improvements by : " Suggestions and improvements by :
" Aaron J. Sherman (use syntax for hints) " Aaron J. Sherman (use syntax for hints)
@@ -138,9 +138,9 @@ function! GetPerlIndent()
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold' \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let brace = strpart(line, bracepos, 1) let brace = strpart(line, bracepos, 1)
if brace == '(' || brace == '{' || brace == '[' if brace == '(' || brace == '{' || brace == '['
let ind = ind + &sw let ind = ind + shiftwidth()
else else
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif
let bracepos = match(line, braceclass, bracepos + 1) let bracepos = match(line, braceclass, bracepos + 1)
@@ -152,25 +152,25 @@ function! GetPerlIndent()
\ || synid == "perlMatchStartEnd" \ || synid == "perlMatchStartEnd"
\ || synid == "perlBraces" \ || synid == "perlBraces"
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold' \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif
else else
if line =~ '[{[(]\s*\(#[^])}]*\)\=$' if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
if cline =~ '^\s*[])}]' if cline =~ '^\s*[])}]'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif
" Indent lines that begin with 'or' or 'and' " Indent lines that begin with 'or' or 'and'
if cline =~ '^\s*\(or\|and\)\>' if cline =~ '^\s*\(or\|and\)\>'
if line !~ '^\s*\(or\|and\)\>' if line !~ '^\s*\(or\|and\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
elseif line =~ '^\s*\(or\|and\)\>' elseif line =~ '^\s*\(or\|and\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-21 " Last Change: 2017 Jun 13
" Contributors: Andy Lester <andy@petdance.com> " Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> " Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" "
@@ -107,19 +107,19 @@ function! GetPerl6Indent()
endif endif
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$' if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
if cline =~ '^\s*[)}\]»>]' if cline =~ '^\s*[)}\]»>]'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
" Indent lines that begin with 'or' or 'and' " Indent lines that begin with 'or' or 'and'
if cline =~ '^\s*\(or\|and\)\>' if cline =~ '^\s*\(or\|and\)\>'
if line !~ '^\s*\(or\|and\)\>' if line !~ '^\s*\(or\|and\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
elseif line =~ '^\s*\(or\|and\)\>' elseif line =~ '^\s*\(or\|and\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -3,7 +3,7 @@
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr> " Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
" URL: http://www.2072productions.com/vim/indent/php.vim " URL: http://www.2072productions.com/vim/indent/php.vim
" Home: https://github.com/2072/PHP-Indenting-for-VIm " Home: https://github.com/2072/PHP-Indenting-for-VIm
" Last Change: 2017 March 12th " Last Change: 2017 Jun 13
" Version: 1.62 " Version: 1.62
" "
" "
@@ -50,25 +50,15 @@ let b:did_indent = 1
let g:php_sync_method = 0 let g:php_sync_method = 0
if exists('*shiftwidth')
function! s:sw()
return shiftwidth()
endfunction
else
function! s:sw()
return &shiftwidth
endfunction
endif
if exists("PHP_default_indenting") if exists("PHP_default_indenting")
let b:PHP_default_indenting = PHP_default_indenting * s:sw() let b:PHP_default_indenting = PHP_default_indenting * shiftwidth()
else else
let b:PHP_default_indenting = 0 let b:PHP_default_indenting = 0
endif endif
if exists("PHP_outdentSLComments") if exists("PHP_outdentSLComments")
let b:PHP_outdentSLComments = PHP_outdentSLComments * s:sw() let b:PHP_outdentSLComments = PHP_outdentSLComments * shiftwidth()
else else
let b:PHP_outdentSLComments = 0 let b:PHP_outdentSLComments = 0
endif endif
@@ -357,7 +347,7 @@ function! FindTheSwitchIndent (lnum) " {{{
let test = GetLastRealCodeLNum(a:lnum - 1) let test = GetLastRealCodeLNum(a:lnum - 1)
if test <= 1 if test <= 1
return indent(1) - s:sw() * b:PHP_vintage_case_default_indent return indent(1) - shiftwidth() * b:PHP_vintage_case_default_indent
end end
while getline(test) =~ '^\s*}' && test > 1 while getline(test) =~ '^\s*}' && test > 1
@@ -371,7 +361,7 @@ function! FindTheSwitchIndent (lnum) " {{{
if getline(test) =~# '^\s*switch\>' if getline(test) =~# '^\s*switch\>'
return indent(test) return indent(test)
elseif getline(test) =~# s:defaultORcase elseif getline(test) =~# s:defaultORcase
return indent(test) - s:sw() * b:PHP_vintage_case_default_indent return indent(test) - shiftwidth() * b:PHP_vintage_case_default_indent
else else
return FindTheSwitchIndent(test) return FindTheSwitchIndent(test)
endif endif
@@ -444,7 +434,7 @@ function! GetPhpIndent()
endif endif
if b:PHP_default_indenting if b:PHP_default_indenting
let b:PHP_default_indenting = g:PHP_default_indenting * s:sw() let b:PHP_default_indenting = g:PHP_default_indenting * shiftwidth()
endif endif
let cline = getline(v:lnum) let cline = getline(v:lnum)
@@ -701,7 +691,7 @@ function! GetPhpIndent()
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
return indent(FindTheIfOfAnElse(v:lnum, 1)) return indent(FindTheIfOfAnElse(v:lnum, 1))
elseif cline =~# s:defaultORcase elseif cline =~# s:defaultORcase
return FindTheSwitchIndent(v:lnum) + s:sw() * b:PHP_vintage_case_default_indent return FindTheSwitchIndent(v:lnum) + shiftwidth() * b:PHP_vintage_case_default_indent
elseif cline =~ '^\s*)\=\s*{' elseif cline =~ '^\s*)\=\s*{'
let previous_line = last_line let previous_line = last_line
let last_line_num = lnum let last_line_num = lnum
@@ -713,7 +703,7 @@ function! GetPhpIndent()
let ind = indent(last_line_num) let ind = indent(last_line_num)
if b:PHP_BracesAtCodeLevel if b:PHP_BracesAtCodeLevel
let ind = ind + s:sw() let ind = ind + shiftwidth()
endif endif
return ind return ind
@@ -724,7 +714,7 @@ function! GetPhpIndent()
endwhile endwhile
elseif last_line =~# unstated && cline !~ '^\s*);\='.endline elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
let ind = ind + s:sw() " we indent one level further when the preceding line is not stated let ind = ind + shiftwidth() " we indent one level further when the preceding line is not stated
return ind + addSpecial return ind + addSpecial
elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated
@@ -823,7 +813,7 @@ function! GetPhpIndent()
endif endif
if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{') if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{')
let ind = ind + s:sw() let ind = ind + shiftwidth()
endif endif
if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1 if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
@@ -841,17 +831,17 @@ function! GetPhpIndent()
endif endif
elseif last_line =~ '^\s*'.s:blockstart elseif last_line =~ '^\s*'.s:blockstart
let ind = ind + s:sw() let ind = ind + shiftwidth()
elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
let ind = ind + s:sw() let ind = ind + shiftwidth()
endif endif
endif endif
if cline =~ '^\s*[)\]];\=' if cline =~ '^\s*[)\]];\='
let ind = ind - s:sw() let ind = ind - shiftwidth()
endif endif
let b:PHP_CurrentIndentLevel = ind let b:PHP_CurrentIndentLevel = ind

View File

@@ -41,16 +41,16 @@ function! PostscrIndentGet(lnum)
" Indent for dicts, arrays, and saves with possible trailing comment " Indent for dicts, arrays, and saves with possible trailing comment
if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$' if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Remove indent for popped dicts, and restores. " Remove indent for popped dicts, and restores.
if pline =~ '\(end\|g\=restore\)\s*$' if pline =~ '\(end\|g\=restore\)\s*$'
let ind = ind - &sw let ind = ind - shiftwidth()
" Else handle immediate dedents of dicts, restores, and arrays. " Else handle immediate dedents of dicts, restores, and arrays.
elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)' elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)'
let ind = ind - &sw let ind = ind - shiftwidth()
" Else handle DSC comments - always start of line. " Else handle DSC comments - always start of line.
elseif getline(a:lnum) =~ '^\s*%%' elseif getline(a:lnum) =~ '^\s*%%'

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: PoV-Ray Scene Description Language " Language: PoV-Ray Scene Description Language
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> " Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
" Last Change: 2002-10-20 " Last Change: 2017 Jun 13
" URI: http://trific.ath.cx/Ftp/vim/indent/pov.vim " URI: http://trific.ath.cx/Ftp/vim/indent/pov.vim
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
@@ -75,9 +75,9 @@ function GetPoVRayIndent()
" opening line. " opening line.
let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)') let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)')
if cur > 0 if cur > 0
let final = plind + (chg - cur) * &sw let final = plind + (chg - cur) * shiftwidth()
else else
let final = plind + chg * &sw let final = plind + chg * shiftwidth()
endif endif
return final < 0 ? 0 : final return final < 0 ? 0 : final

View File

@@ -41,18 +41,18 @@ function! GetPrologIndent()
endif endif
" Check for clause head on previous line " Check for clause head on previous line
if pline =~ ':-\s*\(%.*\)\?$' if pline =~ ':-\s*\(%.*\)\?$'
let ind = ind + &sw let ind = ind + shiftwidth()
" Check for end of clause on previous line " Check for end of clause on previous line
elseif pline =~ '\.\s*\(%.*\)\?$' elseif pline =~ '\.\s*\(%.*\)\?$'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
" Check for opening conditional on previous line " Check for opening conditional on previous line
if pline =~ '^\s*\([(;]\|->\)' if pline =~ '^\s*\([(;]\|->\)'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Check for closing an unclosed paren, or middle ; or -> " Check for closing an unclosed paren, or middle ; or ->
if line =~ '^\s*\([);]\|->\)' if line =~ '^\s*\([);]\|->\)'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind
endfunction endfunction

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: RPL/2 " Language: RPL/2
" Version: 0.2 " Version: 0.2
" Last Change: 2005 Mar 28 " Last Change: 2017 Jun 13
" Maintainer: BERTRAND Jo<4A>l <rpl2@free.fr> " Maintainer: BERTRAND Jo<4A>l <rpl2@free.fr>
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
@@ -32,16 +32,16 @@ function RplGetIndent(lnum)
if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\<end\>' if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\<end\>'
elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)' elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)'
elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Subtract a shiftwidth from then, else, elseif, end, until, repeat, next, " Subtract a shiftwidth from then, else, elseif, end, until, repeat, next,
" step " step
let line = getline(v:lnum) let line = getline(v:lnum)
if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>' if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
elseif line =~? '^\s*>>\($\|\s\+\)' elseif line =~? '^\s*>>\($\|\s\+\)'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
return ind return ind

View File

@@ -404,11 +404,7 @@ function GetRubyIndent(...)
" ---------- " ----------
" The value of a single shift-width " The value of a single shift-width
if exists('*shiftwidth') let sw = shiftwidth()
let sw = shiftwidth()
else
let sw = &sw
endif
" For the current line, use the first argument if given, else v:lnum " For the current line, use the first argument if given, else v:lnum
let clnum = a:0 ? a:1 : v:lnum let clnum = a:0 ? a:1 : v:lnum

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Rust " Language: Rust
" Author: Chris Morgan <me@chrismorgan.info> " Author: Chris Morgan <me@chrismorgan.info>
" Last Change: 2017 Mar 21 " Last Change: 2017 Jun 13
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim " For bugs, patches and license go to https://github.com/rust-lang/rust.vim
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
@@ -199,7 +199,7 @@ function GetRustIndent(lnum)
" It's the closing line, dedent it " It's the closing line, dedent it
return 0 return 0
else else
return &shiftwidth return shiftwidth()
endif endif
endif endif
endif endif

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Sass " Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -29,7 +29,7 @@ function! GetSassIndent()
let indent = indent(lnum) let indent = indent(lnum)
let cindent = indent(v:lnum) let cindent = indent(v:lnum)
if line !~ s:property && line !~ s:extend && cline =~ s:property if line !~ s:property && line !~ s:extend && cline =~ s:property
return indent + (exists('*shiftwidth') ? shiftwidth() : &sw) return indent + shiftwidth()
else else
return -1 return -1
endif endif

View File

@@ -46,17 +46,17 @@ function! GetSDLIndent()
if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)' if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)'
\ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)') \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)')
\ && getline(lnum) !~? 'end[[:alpha:]]\+;$' \ && getline(lnum) !~? 'end[[:alpha:]]\+;$'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Subtract a 'shiftwidth' after states " Subtract a 'shiftwidth' after states
if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)' if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
" Subtract a 'shiftwidth' on on end (uncompleted line) " Subtract a 'shiftwidth' on on end (uncompleted line)
if getline(v:lnum) =~? '^\s*end\>' if getline(v:lnum) =~? '^\s*end\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
" Put each alternatives where the corresponding decision was " Put each alternatives where the corresponding decision was

View File

@@ -3,10 +3,12 @@
" Maintainer: Christian Brabandt <cb@256bit.org> " Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org> " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Original Author: Nikolai Weibull <now@bitwi.se> " Original Author: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2016-06-27 " Latest Revision: 2017-05-02
" 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:
" 20170502: - get rid of buffer-shiftwidth function
" 20160912: - preserve indentation of here-doc blocks
" 20160627: - detect heredocs correctly " 20160627: - detect heredocs correctly
" 20160213: - detect function definition correctly " 20160213: - detect function definition correctly
" 20160202: - use shiftwidth() function " 20160202: - use shiftwidth() function
@@ -33,15 +35,11 @@ endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo&vim set cpo&vim
function s:buffer_shiftwidth()
return shiftwidth()
endfunction
let s:sh_indent_defaults = { let s:sh_indent_defaults = {
\ 'default': function('s:buffer_shiftwidth'), \ 'default': function('shiftwidth'),
\ 'continuation-line': function('s:buffer_shiftwidth'), \ 'continuation-line': function('shiftwidth'),
\ 'case-labels': function('s:buffer_shiftwidth'), \ 'case-labels': function('shiftwidth'),
\ 'case-statements': function('s:buffer_shiftwidth'), \ 'case-statements': function('shiftwidth'),
\ 'case-breaks': 0 } \ 'case-breaks': 0 }
function! s:indent_value(option) function! s:indent_value(option)
@@ -110,6 +108,9 @@ function! GetShIndent()
let ind -= s:indent_value('case-breaks') let ind -= s:indent_value('case-breaks')
elseif s:is_here_doc(line) elseif s:is_here_doc(line)
let ind = 0 let ind = 0
" statements, executed within a here document. Keep the current indent
elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1
return indent(v:lnum)
endif endif
return ind return ind

View File

@@ -115,9 +115,9 @@ function! GetSMLIndent()
" Return double 'shiftwidth' after lines matching: " Return double 'shiftwidth' after lines matching:
if lline =~ '^\s*|.*=>\s*$' if lline =~ '^\s*|.*=>\s*$'
return ind + &sw + &sw return ind + 2 *shiftwidth()
elseif lline =~ '^\s*val\>.*=\s*$' elseif lline =~ '^\s*val\>.*=\s*$'
return ind + &sw return ind + shiftwidth()
endif endif
let line = getline(v:lnum) let line = getline(v:lnum)
@@ -157,7 +157,7 @@ function! GetSMLIndent()
if lastModule == -1 if lastModule == -1
return 0 return 0
else else
return lastModule + &sw return lastModule + shiftwidth()
endif endif
" Indent lines starting with '|' from matching 'case', 'handle' " Indent lines starting with '|' from matching 'case', 'handle'
@@ -172,7 +172,7 @@ function! GetSMLIndent()
if switchLine =~ '\<case\>' if switchLine =~ '\<case\>'
return col(".") + 2 return col(".") + 2
elseif switchLine =~ '\<handle\>' elseif switchLine =~ '\<handle\>'
return switchLineIndent + &sw return switchLineIndent + shiftwidth()
elseif switchLine =~ '\<datatype\>' elseif switchLine =~ '\<datatype\>'
call search('=') call search('=')
return col(".") - 1 return col(".") - 1
@@ -184,7 +184,7 @@ function! GetSMLIndent()
" Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else', " Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
" 'in' " 'in'
elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$' elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
let ind = ind + &sw let ind = ind + shiftwidth()
" Indent if last line ends with 'of', align from 'case' " Indent if last line ends with 'of', align from 'case'
elseif lline =~ '\<\(of\)\s*$' elseif lline =~ '\<\(of\)\s*$'
@@ -199,14 +199,14 @@ function! GetSMLIndent()
" Indent if last line starts with 'fun', 'case', 'fn' " Indent if last line starts with 'fun', 'case', 'fn'
elseif lline =~ '^\s*\(fun\|fn\|case\)\>' elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Don't indent 'let' if last line started with 'fun', 'fn' " Don't indent 'let' if last line started with 'fun', 'fn'
if line =~ '^\s*let\>' if line =~ '^\s*let\>'
if lline =~ '^\s*\(fun\|fn\)' if lline =~ '^\s*\(fun\|fn\)'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: SQL " Language: SQL
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Last Change: 2012 Dec 06 " Last Change: 2017 Jun 13
" Version: 3.0 " Version: 3.0
" Download: http://vim.sourceforge.net/script.php?script_id=495 " Download: http://vim.sourceforge.net/script.php?script_id=495
@@ -147,7 +147,7 @@ function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
endwhile endwhile
" Fallback - just move back one " Fallback - just move back one
" return a:prev_indent - &sw " return a:prev_indent - shiftwidth()
return ignore_paran return ignore_paran
endfunction endfunction
@@ -166,7 +166,7 @@ function! s:GetStmtStarterIndent( keyword, curr_lnum )
let lnum = a:curr_lnum let lnum = a:curr_lnum
" Default - reduce indent by 1 " Default - reduce indent by 1
let ind = indent(a:curr_lnum) - &sw let ind = indent(a:curr_lnum) - shiftwidth()
if a:keyword =~? 'end' if a:keyword =~? 'end'
exec 'normal! ^' exec 'normal! ^'
@@ -230,7 +230,7 @@ function! s:ModuloIndent(ind)
let ind = a:ind let ind = a:ind
if ind > 0 if ind > 0
let modulo = ind % &shiftwidth let modulo = ind % shiftwidth()
if modulo > 0 if modulo > 0
let ind = ind - modulo let ind = ind - modulo
@@ -291,7 +291,7 @@ function! GetSQLIndent()
" where END IF, END, should decrease the indent. " where END IF, END, should decrease the indent.
if prevline =~? s:SQLBlockStart if prevline =~? s:SQLBlockStart
" Move indent in " Move indent in
let ind = ind + &sw let ind = ind + shiftwidth()
" echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline " echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline
elseif prevline =~ '[()]' elseif prevline =~ '[()]'
if prevline =~ '(' if prevline =~ '('
@@ -308,7 +308,7 @@ function! GetSQLIndent()
if num_unmatched_left > 0 if num_unmatched_left > 0
" There is a open left paranethesis " There is a open left paranethesis
" increase indent " increase indent
let ind = ind + ( &sw * num_unmatched_left ) let ind = ind + ( shiftwidth() * num_unmatched_left )
elseif num_unmatched_right > 0 elseif num_unmatched_right > 0
" if it is an unbalanced paranethesis only unindent if " if it is an unbalanced paranethesis only unindent if
" it was part of a command (ie create table(..) ) " it was part of a command (ie create table(..) )
@@ -323,7 +323,7 @@ function! GetSQLIndent()
endif endif
if (num_unmatched_right - ignore) > 0 if (num_unmatched_right - ignore) > 0
let ind = ind - ( &sw * (num_unmatched_right - ignore) ) let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
endif endif
endif endif
@@ -339,12 +339,12 @@ function! GetSQLIndent()
if line =~? '^\s*els' if line =~? '^\s*els'
" Any line when you type else will automatically back up one " Any line when you type else will automatically back up one
" ident level (ie else, elseif, elsif) " ident level (ie else, elseif, elsif)
let ind = ind - &sw let ind = ind - shiftwidth()
" echom 'curr - else - indent ' . ind " echom 'curr - else - indent ' . ind
elseif line =~? '^\s*end\>' elseif line =~? '^\s*end\>'
let ind = s:GetStmtStarterIndent('end', v:lnum) let ind = s:GetStmtStarterIndent('end', v:lnum)
" General case for end " General case for end
" let ind = ind - &sw " let ind = ind - shiftwidth()
" echom 'curr - end - indent ' . ind " echom 'curr - end - indent ' . ind
elseif line =~? '^\s*when\>' elseif line =~? '^\s*when\>'
let ind = s:GetStmtStarterIndent('when', v:lnum) let ind = s:GetStmtStarterIndent('when', v:lnum)
@@ -352,7 +352,7 @@ function! GetSQLIndent()
" clause, do not change the indent level, since these " clause, do not change the indent level, since these
" statements do not have a corresponding END statement. " statements do not have a corresponding END statement.
" if stmt_starter =~? 'case' " if stmt_starter =~? 'case'
" let ind = ind - &sw " let ind = ind - shiftwidth()
" endif " endif
" elseif line =~ '^\s*)\s*;\?\s*$' " elseif line =~ '^\s*)\s*;\?\s*$'
" elseif line =~ '^\s*)' " elseif line =~ '^\s*)'
@@ -371,14 +371,14 @@ function! GetSQLIndent()
" let num_unmatched_right = s:CountUnbalancedParan( line, ')' ) " let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
" if num_unmatched_right > 0 " if num_unmatched_right > 0
" elseif strpart( line, strlen(line)-1, 1 ) =~ ')' " elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
" let ind = ind - &sw " let ind = ind - shiftwidth()
if line =~ '^\s*)' if line =~ '^\s*)'
" let ignore = ignore + 1 " let ignore = ignore + 1
" echom 'curr - begins ) unbalanced ignore: ' . ignore " echom 'curr - begins ) unbalanced ignore: ' . ignore
endif endif
if (num_unmatched_right - ignore) > 0 if (num_unmatched_right - ignore) > 0
let ind = ind - ( &sw * (num_unmatched_right - ignore) ) let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
endif endif
" endif " endif
endif endif

View File

@@ -29,7 +29,7 @@ function SystemVerilogIndent()
if exists('b:systemverilog_indent_width') if exists('b:systemverilog_indent_width')
let offset = b:systemverilog_indent_width let offset = b:systemverilog_indent_width
else else
let offset = &sw let offset = shiftwidth()
endif endif
if exists('b:systemverilog_indent_modules') if exists('b:systemverilog_indent_modules')
let indent_modules = offset let indent_modules = offset

View File

@@ -3,7 +3,7 @@
" Based on Tera Term Version 4.92 " Based on Tera Term Version 4.92
" Maintainer: Ken Takata " Maintainer: Ken Takata
" URL: https://github.com/k-takata/vim-teraterm " URL: https://github.com/k-takata/vim-teraterm
" Last Change: 2016 Aug 17 " Last Change: 2017 Jun 13
" Filenames: *.ttl " Filenames: *.ttl
" License: VIM License " License: VIM License
@@ -22,16 +22,6 @@ if exists("*GetTeraTermIndent")
finish finish
endif endif
" The shiftwidth() function is relatively new.
" Don't require it to exist.
if exists('*shiftwidth')
let s:sw = function('shiftwidth')
else
function s:sw() abort
return &shiftwidth
endfunction
endif
function! GetTeraTermIndent(lnum) function! GetTeraTermIndent(lnum)
let l:prevlnum = prevnonblank(a:lnum-1) let l:prevlnum = prevnonblank(a:lnum-1)
if l:prevlnum == 0 if l:prevlnum == 0
@@ -48,15 +38,15 @@ function! GetTeraTermIndent(lnum)
if l:prevl =~ '^\s*if\>.*\<then\>' if l:prevl =~ '^\s*if\>.*\<then\>'
" previous line opened a block " previous line opened a block
let l:ind += s:sw() let l:ind += shiftwidth()
endif endif
if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>' if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>'
" previous line opened a block " previous line opened a block
let l:ind += s:sw() let l:ind += shiftwidth()
endif endif
if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>' if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>'
" this line closed a block " this line closed a block
let l:ind -= s:sw() let l:ind -= shiftwidth()
endif endif
return l:ind return l:ind

View File

@@ -1,8 +1,8 @@
" Vim indent file " Vim indent file
" 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.2 " Version: 0.9.4
" 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.
@@ -15,49 +15,53 @@
" 2005/06/15, Moshe Kaminsky <kaminsky AT math.huji.ac.il> " 2005/06/15, Moshe Kaminsky <kaminsky AT math.huji.ac.il>
" (*) New variables: " (*) New variables:
" g:tex_items, g:tex_itemize_env, g:tex_noindent_env " g:tex_items, g:tex_itemize_env, g:tex_noindent_env
" 2011/3/6, by Zhou YiChao <broken.zhou AT gmail.com> " 2011/3/6, by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Don't change indentation of lines starting with '%' " (*) Don't change indentation of lines starting with '%'
" I don't see any code with '%' and it doesn't work properly " I don't see any code with '%' and it doesn't work properly
" so I add some code. " so I add some code.
" (*) New features: Add smartindent-like indent for "{}" and "[]". " (*) New features: Add smartindent-like indent for "{}" and "[]".
" (*) New variables: g:tex_indent_brace " (*) New variables: g:tex_indent_brace
" 2011/9/25, by Zhou Yichao <broken.zhou AT gmail.com> " 2011/9/25, by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Bug fix: smartindent-like indent for "[]" " (*) Bug fix: smartindent-like indent for "[]"
" (*) New features: Align with "&". " (*) New features: Align with "&".
" (*) New variable: g:tex_indent_and. " (*) New variable: g:tex_indent_and.
" 2011/10/23 by Zhou Yichao <broken.zhou AT gmail.com> " 2011/10/23 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Bug fix: improve the smartindent-like indent for "{}" and " (*) Bug fix: improve the smartindent-like indent for "{}" and
" "[]". " "[]".
" 2012/02/27 by Zhou Yichao <broken.zhou AT gmail.com> " 2012/02/27 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Bug fix: support default folding marker. " (*) Bug fix: support default folding marker.
" (*) Indent with "&" is not very handy. Make it not enable by " (*) Indent with "&" is not very handy. Make it not enable by
" default. " default.
" 2012/03/06 by Zhou Yichao <broken.zhou AT gmail.com> " 2012/03/06 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Modify "&" behavior and make it default again. Now "&" " (*) Modify "&" behavior and make it default again. Now "&"
" won't align when there are more then one "&" in the previous " won't align when there are more then one "&" in the previous
" line. " line.
" (*) Add indent "\left(" and "\right)" " (*) Add indent "\left(" and "\right)"
" (*) Trust user when in "verbatim" and "lstlisting" " (*) Trust user when in "verbatim" and "lstlisting"
" 2012/03/11 by Zhou Yichao <broken.zhou AT gmail.com> " 2012/03/11 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Modify "&" so that only indent when current line start with " (*) Modify "&" so that only indent when current line start with
" "&". " "&".
" 2012/03/12 by Zhou Yichao <broken.zhou AT gmail.com> " 2012/03/12 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Modify indentkeys. " (*) Modify indentkeys.
" 2012/03/18 by Zhou Yichao <broken.zhou AT gmail.com> " 2012/03/18 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Add &cpo " (*) Add &cpo
" 2013/05/02 by Zhou Yichao <broken.zhou AT gmail.com> " 2013/05/02 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk " (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
" for reporting this. " for reporting this.
" 2014/06/23 by Zhou Yichao <broken.zhou AT gmail.com> " 2014/06/23 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Remove the feature g:tex_indent_and because it is buggy. " (*) Remove the feature g:tex_indent_and because it is buggy.
" (*) If there is not any obvious indentation hints, we do not " (*) If there is not any obvious indentation hints, we do not
" alert our user's current indentation. " alert our user's current indentation.
" (*) g:tex_indent_brace now only works if the open brace is the " (*) g:tex_indent_brace now only works if the open brace is the
" last character of that line. " last character of that line.
" 2014/08/03 by Zhou Yichao <broken.zhou AT gmail.com> " 2014/08/03 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Indent current line if last line has larger indentation " (*) Indent current line if last line has larger indentation
" 2014/08/09 by Zhou Yichao <broken.zhou AT gmail.com> " 2016/11/08 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Add missing return value for s:GetEndIndentation(...) " (*) Fix problems for \[ and \]. Thanks Bruno for reporting.
" 2017/04/30 by Yichao Zhou <broken.zhou AT gmail.com>
" (*) Fix a bug between g:tex_noindent_env and g:tex_indent_items
" Now g:tex_noindent_env='document\|verbatim\|itemize' (Emacs
" style) is supported. Thanks Miles Wheeler for reporting.
" "
" }}} " }}}
@@ -81,44 +85,44 @@
" % Example 2 " % Example 2
" \tikzexternalize[ " \tikzexternalize[
" prefix=tikz] " prefix=tikz]
" "
" * g:tex_indent_items " * g:tex_indent_items
" "
" 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 " NOTE: I've already set the variable below; delete the corresponding line
" if you don't like this behaviour. " if you don't like this behaviour.
" "
" Per default, it is unset. " Per default, it is unset.
" "
" set unset " set unset
" ---------------------------------------------------------------- " ----------------------------------------------------------------
" \begin{itemize} \begin{itemize} " \begin{itemize} \begin{itemize}
" \item blablabla \item blablabla " \item blablabla \item blablabla
" bla bla bla bla bla bla " bla bla bla bla bla bla
" \item blablabla \item blablabla " \item blablabla \item blablabla
" bla bla bla bla bla bla " bla bla bla bla bla bla
" \end{itemize} \end{itemize} " \end{itemize} \end{itemize}
" "
" "
" * g:tex_items " * g:tex_items
" "
" A list of tokens to be considered as commands for the beginning of an item " A list of tokens to be considered as commands for the beginning of an item
" command. The tokens should be separated with '\|'. The initial '\' should " command. The tokens should be separated with '\|'. The initial '\' should
" be escaped. The default is '\\bibitem\|\\item'. " be escaped. The default is '\\bibitem\|\\item'.
" "
" * g:tex_itemize_env " * g:tex_itemize_env
" "
" A list of environment names, separated with '\|', where the items (item " A list of environment names, separated with '\|', where the items (item
" commands matching g:tex_items) may appear. The default is " commands matching g:tex_items) may appear. The default is
" 'itemize\|description\|enumerate\|thebibliography'. " 'itemize\|description\|enumerate\|thebibliography'.
" "
" * g:tex_noindent_env " * g:tex_noindent_env
" "
" A list of environment names. separated with '\|', where no indentation is " A list of environment names. separated with '\|', where no indentation is
" required. The default is 'document\|verbatim'. " required. The default is 'document\|verbatim'.
" }}} " }}}
" Only define the function once " Only define the function once
if exists("b:did_indent") if exists("b:did_indent")
@@ -146,7 +150,7 @@ if g:tex_indent_items
let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography' let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography'
endif endif
if !exists('g:tex_items') if !exists('g:tex_items')
let g:tex_items = '\\bibitem\|\\item' let g:tex_items = '\\bibitem\|\\item'
endif endif
else else
let g:tex_items = '' let g:tex_items = ''
@@ -177,7 +181,7 @@ function! GetTeXIndent() " {{{
" At the start of the file use zero indent. " At the start of the file use zero indent.
if lnum == 0 if lnum == 0
return 0 return 0
endif endif
let line = substitute(getline(lnum), '\s*%.*', '','g') " last line let line = substitute(getline(lnum), '\s*%.*', '','g') " last line
@@ -191,9 +195,9 @@ function! GetTeXIndent() " {{{
return indent(v:lnum) return indent(v:lnum)
end end
endif endif
if lnum == 0 if lnum == 0
return 0 return 0
endif endif
let ind = indent(lnum) let ind = indent(lnum)
@@ -206,17 +210,19 @@ function! GetTeXIndent() " {{{
" Add a 'shiftwidth' after beginning of environments. " Add a 'shiftwidth' after beginning of environments.
" Don't add it for \begin{document} and \begin{verbatim} " Don't add it for \begin{document} and \begin{verbatim}
""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim' " if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim'
" LH modification : \begin does not always start a line " LH modification : \begin does not always start a line
" ZYC modification : \end after \begin won't cause wrong indent anymore " ZYC modification : \end after \begin won't cause wrong indent anymore
if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env if line =~ '\\begin{.*}'
let ind = ind + &sw if line !~ g:tex_noindent_env
let stay = 0 let ind = ind + shiftwidth()
let stay = 0
endif
if g:tex_indent_items if g:tex_indent_items
" Add another sw for item-environments " Add another sw for item-environments
if line =~ g:tex_itemize_env if line =~ g:tex_itemize_env
let ind = ind + &sw let ind = ind + shiftwidth()
let stay = 0 let stay = 0
endif endif
endif endif
@@ -235,39 +241,37 @@ function! GetTeXIndent() " {{{
if g:tex_indent_items if g:tex_indent_items
" Remove another sw for item-environments " Remove another sw for item-environments
if cline =~ g:tex_itemize_env if cline =~ g:tex_itemize_env
let ind = ind - &sw let ind = ind - shiftwidth()
let stay = 0 let stay = 0
endif endif
endif endif
let ind = ind - &sw let ind = ind - shiftwidth()
let stay = 0 let stay = 0
endif endif
if g:tex_indent_brace if g:tex_indent_brace
let char = line[strlen(line)-1] if line =~ '[[{]$'
if char == '[' || char == '{' let ind += shiftwidth()
let ind += &sw
let stay = 0 let stay = 0
endif endif
let cind = indent(v:lnum) if cline =~ '^\s*\\\?[\]}]' && s:CheckPairedIsLastCharacter(v:lnum, indent(v:lnum))
let char = cline[cind] let ind -= shiftwidth()
if (char == ']' || char == '}') &&
\ s:CheckPairedIsLastCharacter(v:lnum, cind)
let ind -= &sw
let stay = 0 let stay = 0
endif endif
for i in range(indent(lnum)+1, strlen(line)-1) if line !~ '^\s*\\\?[\]}]'
let char = line[i] for i in range(indent(lnum)+1, strlen(line)-1)
if char == ']' || char == '}' let char = line[i]
if s:CheckPairedIsLastCharacter(lnum, i) if char == ']' || char == '}'
let ind -= &sw if s:CheckPairedIsLastCharacter(lnum, i)
let stay = 0 let ind -= shiftwidth()
let stay = 0
endif
endif endif
endif endfor
endfor endif
endif endif
" Special treatment for 'item' " Special treatment for 'item'
@@ -276,12 +280,12 @@ function! GetTeXIndent() " {{{
if g:tex_indent_items if g:tex_indent_items
" '\item' or '\bibitem' itself: " '\item' or '\bibitem' itself:
if cline =~ g:tex_items if cline =~ g:tex_items
let ind = ind - &sw let ind = ind - shiftwidth()
let stay = 0 let stay = 0
endif endif
" lines following to '\item' are intented once again: " lines following to '\item' are intented once again:
if line =~ g:tex_items if line =~ g:tex_items
let ind = ind + &sw let ind = ind + shiftwidth()
let stay = 0 let stay = 0
endif endif
endif endif
@@ -309,13 +313,13 @@ function! s:GetLastBeginIndentation(lnum) " {{{
let matchend -= 1 let matchend -= 1
endif endif
if matchend == 0 if matchend == 0
if line =~ g:tex_itemize_env
return indent(lnum) + 2 * &sw
endif
if line =~ g:tex_noindent_env if line =~ g:tex_noindent_env
return indent(lnum) return indent(lnum)
endif endif
return indent(lnum) + &sw if line =~ g:tex_itemize_env
return indent(lnum) + 2 * shiftwidth()
endif
return indent(lnum) + shiftwidth()
endif endif
endfor endfor
return -1 return -1
@@ -343,17 +347,20 @@ function! s:GetEndIndentation(lnum) " {{{
let min_indent = min([min_indent, indent(lnum)]) let min_indent = min([min_indent, indent(lnum)])
endif endif
endfor endfor
return min_indent - &sw return min_indent - shiftwidth()
endfunction endfunction
" Most of the code is from matchparen.vim " Most of the code is from matchparen.vim
function! s:CheckPairedIsLastCharacter(lnum, col) "{{{ function! s:CheckPairedIsLastCharacter(lnum, col) "{{{
" Get the character under the cursor and check if it's in 'matchpairs'.
let c_lnum = a:lnum let c_lnum = a:lnum
let c_col = a:col+1 let c_col = a:col+1
let line = getline(c_lnum)
if line[c_col-1] == '\'
let c_col = c_col + 1
endif
let c = line[c_col-1]
let c = getline(c_lnum)[c_col-1]
let plist = split(&matchpairs, '.\zs[:,]') let plist = split(&matchpairs, '.\zs[:,]')
let i = index(plist, c) let i = index(plist, c)
if i < 0 if i < 0

View File

@@ -25,11 +25,11 @@ function GetTildeIndent(lnum)
endif endif
if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>' if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>'
return indent(v:lnum) - &sw return indent(v:lnum) - shiftwidth()
endif endif
if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>' if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>'
return indent(plnum) + &sw return indent(plnum) + shiftwidth()
else else
return -1 return -1
endif endif

View File

@@ -49,26 +49,26 @@ fun! VbGetIndent(lnum)
" Add " Add
if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>' if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
let ind = ind + &sw let ind = ind + shiftwidth()
endif endif
" Subtract " Subtract
if this_line =~? '^\s*\<end\>\s\+\<select\>' if this_line =~? '^\s*\<end\>\s\+\<select\>'
if previous_line !~? '^\s*\<select\>' if previous_line !~? '^\s*\<select\>'
let ind = ind - 2 * &sw let ind = ind - 2 * shiftwidth()
else else
" this case is for an empty 'select' -- 'end select' " this case is for an empty 'select' -- 'end select'
" (w/o any case statements) like: " (w/o any case statements) like:
" "
" select case readwrite " select case readwrite
" end select " end select
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>' elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
let ind = ind - &sw let ind = ind - shiftwidth()
elseif this_line =~? '^\s*\<\(case\|default\)\>' elseif this_line =~? '^\s*\<\(case\|default\)\>'
if previous_line !~? '^\s*\<select\>' if previous_line !~? '^\s*\<select\>'
let ind = ind - &sw let ind = ind - shiftwidth()
endif endif
endif endif

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