runtime/syntax/cucumber.vim @tpope
runtime/syntax/datascript.vim @dpelle
runtime/syntax/dcl.vim @cecamp
+runtime/syntax/desktop.vim @e-kwsm
runtime/syntax/doxygen.vim @frogonwheels
runtime/syntax/dtd.vim @chrisbra
runtime/syntax/elmfilt.vim @cecamp
runtime/syntax/gitconfig.vim @tpope
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/gprof.vim @dpelle
+runtime/syntax/groff.vim @jmarshall
runtime/syntax/haml.vim @tpope
runtime/syntax/haskell.vim @coot
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/lynx.vim @dkearns
runtime/syntax/mailcap.vim @dkearns
runtime/syntax/make.vim @rohieb
-runtime/syntax/make.vim @rohieb
runtime/syntax/maple.vim @cecamp
runtime/syntax/markdown.vim @tpope
runtime/syntax/netrw.vim @cecamp
+runtime/syntax/nroff.vim @jmarshall
runtime/syntax/nsis.vim @k-takata
runtime/syntax/pdf.vim @tpope
runtime/syntax/php.vim @TysonAndre
runtime/syntax/sm.vim @cecamp
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/sqloracle.vim @chrisbra
+runtime/syntax/sshconfig.vim @Jakuje
runtime/syntax/sshdconfig.vim @Jakuje
+runtime/syntax/sudoers.vim @e-kwsm
runtime/syntax/tags.vim @cecamp
runtime/syntax/teraterm.vim @k-takata
runtime/syntax/tex.vim @cecamp
-*autocmd.txt* For Vim version 8.2. Last change: 2021 Jan 28
+*autocmd.txt* For Vim version 8.2. Last change: 2021 Mar 13
VIM REFERENCE MANUAL by Bram Moolenaar
*:doautoa* *:doautoall*
:doautoa[ll] [<nomodeline>] [group] {event} [fname]
Like ":doautocmd", but apply the autocommands to each
- loaded buffer. Note that [fname] is used to select
- the autocommands, not the buffers to which they are
- applied.
+ loaded buffer. The current buffer is done last.
+
+ Note that [fname] is used to select the autocommands,
+ not the buffers to which they are applied.
+
Careful: Don't use this for autocommands that delete a
buffer, change to another buffer or change the
contents of a buffer; the result is unpredictable.
-*eval.txt* For Vim version 8.2. Last change: 2021 Mar 10
+*eval.txt* For Vim version 8.2. Last change: 2021 Mar 28
VIM REFERENCE MANUAL by Bram Moolenaar
listed TRUE if the buffer is listed.
lnum Line number used for the buffer when
opened in the current window.
+ Only valid if the buffer has been
+ displayed in the window in the past.
+ If you want the line number of the
+ last known cursor position in a given
+ window, use |line()|: >
+ :echo line('.', {winid})
+<
linecount Number of lines in the buffer (only
valid when loaded)
loaded TRUE if the buffer is loaded.
width window width
winbar 1 if the window has a toolbar, 0
otherwise
- wincol leftmost screen column of the window,
- col from |win_screenpos()|
+ wincol leftmost screen column of the window;
+ "col" from |win_screenpos()|
winid |window-ID|
winnr window number
- winrow topmost screen column of the window,
- row from |win_screenpos()|
+ winrow topmost screen line of the window;
+ "row" from |win_screenpos()|
Can also be used as a |method|: >
GetWinnr()->getwininfo()
it can no longer be changed (until it is unlocked).
A locked variable can be deleted: >
:lockvar v
- :let v = 'asdf' " fails!
- :unlet v
+ :let v = 'asdf' " fails!
+ :unlet v " works
< *E741* *E940*
If you try to change a locked variable you get an
error message: "E741: Value is locked: {name}".
-*index.txt* For Vim version 8.2. Last change: 2021 Feb 14
+*index.txt* For Vim version 8.2. Last change: 2021 Mar 22
VIM REFERENCE MANUAL by Bram Moolenaar
|:edit| :e[dit] edit a file
|:earlier| :ea[rlier] go to older change, undo
|:echo| :ec[ho] echoes the result of expressions
+|:echoconsole| :echoc[onsole] like :echomsg but write to stdout
|:echoerr| :echoe[rr] like :echo, show like an error and use history
|:echohl| :echoh[l] set highlighting for echo commands
|:echomsg| :echom[sg] same as :echo, put message in history
-*map.txt* For Vim version 8.2. Last change: 2020 Dec 10
+*map.txt* For Vim version 8.2. Last change: 2021 Mar 17
VIM REFERENCE MANUAL by Bram Moolenaar
endfunc
nnoremap <expr> x StoreColumn()
nmap ! f!x
-You will notice that g:column has the value from before executing "fx",
-because "z" is evaluated before "fx" is executed.
+You will notice that g:column has the value from before executing "f!",
+because "x" is evaluated before "f!" is executed.
This can be solved by inserting <Ignore> before the character that is
expression-mapped: >
nmap ! f!<Ignore>x
-*motion.txt* For Vim version 8.2. Last change: 2020 Oct 18
+*motion.txt* For Vim version 8.2. Last change: 2021 Mar 28
VIM REFERENCE MANUAL by Bram Moolenaar
line.
*]`*
-]` [count] times to lowercase mark after the cursor. {not
- in Vi}
+]` [count] times to lowercase mark after the cursor.
*['*
[' [count] times to previous line with a lowercase mark
(not a motion command).
{not available without the |+jumplist| feature}
+ NOTE: In the GUI and in a terminal supporting
+ |modifyOtherKeys|, CTRL-I can be mapped separately
+ from <Tab>, on the condition that CTRL-I is
+ mapped before <Tab>, otherwise the mapping applies to
+ both.
+
*:ju* *:jumps*
:ju[mps] Print the jump list (not a motion command).
{not available without the |+jumplist| feature}
For example, after three jump commands you have this jump list:
- jump line col file/text ~
- 3 1 0 some text ~
- 2 70 0 another line ~
- 1 1154 23 end. ~
- > ~
+ jump line col file/text ~
+ 3 1 0 some text ~
+ 2 70 0 another line ~
+ 1 1154 23 end. ~
+ > ~
The "file/text" column shows the file name, or the text at the jump if it is
in the current file (an indent is removed and a long line is truncated to fit
You are currently in line 1167. If you then use the CTRL-O command, the
cursor is put in line 1154. This results in:
- jump line col file/text ~
- 2 1 0 some text ~
- 1 70 0 another line ~
- > 0 1154 23 end. ~
- 1 1167 0 foo bar ~
+ jump line col file/text ~
+ 2 1 0 some text ~
+ 1 70 0 another line ~
+ > 0 1154 23 end. ~
+ 1 1167 0 foo bar ~
The pointer will be set at the last used jump position. The next CTRL-O
command will use the entry above it, the next CTRL-I command will use the
After the CTRL-O command that got you into line 1154 you could give another
jump command (e.g., "G"). The jump list would then become:
- jump line col file/text ~
- 4 1 0 some text ~
- 3 70 0 another line ~
- 2 1167 0 foo bar ~
- 1 1154 23 end. ~
- > ~
+ jump line col file/text ~
+ 4 1 0 some text ~
+ 3 70 0 another line ~
+ 2 1167 0 foo bar ~
+ 1 1154 23 end. ~
+ > ~
The line numbers will be adjusted for deleted and inserted lines. This fails
if you stop editing a file without writing, like with ":n!".
a bit different from the position of the change. Especially when lines have
been deleted.
-When the |:keepjumps| command modifier is used the position of a change is not
+When the `:keepjumps` command modifier is used the position of a change is not
remembered.
*:changes*
#if, #ifdef, #else, #elif, #endif
C preprocessor conditionals (when the
cursor is on the # or no ([{
- following)
+ is following)
For other items the matchit plugin can be used, see
|matchit-install|. This plugin also helps to skip
matches in comments.
#if/#else/#endif makes the movement linewise.
*[(*
-[( go to [count] previous unmatched '('.
+[( Go to [count] previous unmatched '('.
|exclusive| motion.
-
*[{*
-[{ go to [count] previous unmatched '{'.
+[{ Go to [count] previous unmatched '{'.
|exclusive| motion.
-
*])*
-]) go to [count] next unmatched ')'.
+]) Go to [count] next unmatched ')'.
|exclusive| motion.
-
*]}*
-]} go to [count] next unmatched '}'.
+]} Go to [count] next unmatched '}'.
|exclusive| motion.
The above four commands can be used to go to the start or end of the current
class. When no '}' is found before the cursor this is
an error. |exclusive| motion.
-The above two commands assume that the file contains a class with methods.
+The above four commands assume that the file contains a class with methods.
The class definition is surrounded in '{' and '}'. Each method in the class
is also surrounded with '{' and '}'. This applies to the Java language. The
file looks like this: >
body_two();
}
}
+
+[To try this out copy the text and put it in a new buffer, the help text above
+confuses the jump commands]
+
Starting with the cursor on "body_two()", using "[m" will jump to the '{' at
the start of "method_two()" (obviously this is much more useful when the
method is long!). Using "2[m" will jump to the start of "method_one()".
Using "3[m" will jump to the start of the class.
*[#*
-[# go to [count] previous unmatched "#if" or "#else".
+[# Go to [count] previous unmatched "#if" or "#else".
|exclusive| motion.
*]#*
-]# go to [count] next unmatched "#else" or "#endif".
+]# Go to [count] next unmatched "#else" or "#endif".
|exclusive| motion.
These two commands work in C programs that contain #if/#else/#endif
the current line is included. You can then use "%" to go to the matching line.
*[star* *[/*
-[* or [/ go to [count] previous start of a C comment "/*".
+[* or [/ Go to [count] previous start of a C comment "/*".
|exclusive| motion.
*]star* *]/*
-]* or ]/ go to [count] next end of a C comment "*/".
+]* or ]/ Go to [count] next end of a C comment "*/".
|exclusive| motion.
-*options.txt* For Vim version 8.2. Last change: 2021 Feb 13
+*options.txt* For Vim version 8.2. Last change: 2021 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
*'go-v'*
'v' Use a vertical button layout for dialogs. When not included,
a horizontal layout is preferred, but when it doesn't fit a
- vertical layout is used anyway.
+ vertical layout is used anyway. Not supported in GTK 3.
*'go-p'*
'p' Use Pointer callbacks for X11 GUI. This is required for some
window managers. If the cursor is not blinking or hollow at
*'window'* *'wi'*
'window' 'wi' number (default screen height - 1)
global
- Window height. Do not confuse this with the height of the Vim window,
- use 'lines' for that.
- Used for |CTRL-F| and |CTRL-B| when there is only one window and the
- value is smaller than 'lines' minus one. The screen will scroll
- 'window' minus two lines, with a minimum of one.
+ Window height used for |CTRL-F| and |CTRL-B| when there is only one
+ window and the value is smaller than 'lines' minus one. The screen
+ will scroll 'window' minus two lines, with a minimum of one.
When 'window' is equal to 'lines' minus one CTRL-F and CTRL-B scroll
in a much smarter way, taking care of wrapping lines.
When resizing the Vim window, the value is smaller than 1 or more than
or equal to 'lines' it will be set to 'lines' minus 1.
+ Note: Do not confuse this with the height of the Vim window, use
+ 'lines' for that.
*'winheight'* *'wh'* *E591*
'winheight' 'wh' number (default 1)
-*quickref.txt* For Vim version 8.2. Last change: 2020 Aug 15
+*quickref.txt* For Vim version 8.2. Last change: 2021 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
For example, Linux and BSD distributions use groff as their default text
processing package. In order to activate the extra syntax highlighting
-features for groff, add the following option to your start-up files: >
+features for groff, arrange for files to be recognized as groff (see
+|ft-groff-syntax|) or add the following option to your start-up files: >
- :let b:nroff_is_groff = 1
+ :let nroff_is_groff = 1
Groff is different from the old AT&T n/troff that you may still find in
Solaris. Groff macro and request names can be longer than 2 characters and
'ari' options.txt /*'ari'*
'arshape' options.txt /*'arshape'*
'as' todo.txt /*'as'*
+'asd' options.txt /*'asd'*
'autochdir' options.txt /*'autochdir'*
'autoindent' options.txt /*'autoindent'*
'autoprint' vi_diff.txt /*'autoprint'*
'autoread' options.txt /*'autoread'*
'autosave' todo.txt /*'autosave'*
+'autoshelldir' options.txt /*'autoshelldir'*
'autowrite' options.txt /*'autowrite'*
'autowriteall' options.txt /*'autowriteall'*
'aw' options.txt /*'aw'*
'noari' options.txt /*'noari'*
'noarshape' options.txt /*'noarshape'*
'noas' todo.txt /*'noas'*
+'noasd' options.txt /*'noasd'*
'noautochdir' options.txt /*'noautochdir'*
'noautoindent' options.txt /*'noautoindent'*
'noautoread' options.txt /*'noautoread'*
'noautosave' todo.txt /*'noautosave'*
+'noautoshelldir' options.txt /*'noautoshelldir'*
'noautowrite' options.txt /*'noautowrite'*
'noautowriteall' options.txt /*'noautowriteall'*
'noaw' options.txt /*'noaw'*
:ec eval.txt /*:ec*
:echo eval.txt /*:echo*
:echo-redraw eval.txt /*:echo-redraw*
+:echoc eval.txt /*:echoc*
+:echoconsole eval.txt /*:echoconsole*
:echoe eval.txt /*:echoe*
:echoerr eval.txt /*:echoerr*
:echoh eval.txt /*:echoh*
str2list() eval.txt /*str2list()*
str2nr() eval.txt /*str2nr()*
strcasestr() eval.txt /*strcasestr()*
+strcharlen() eval.txt /*strcharlen()*
strcharpart() eval.txt /*strcharpart()*
strchars() eval.txt /*strchars()*
strchr() eval.txt /*strchr()*
-*textprop.txt* For Vim version 8.2. Last change: 2020 Oct 14
+*textprop.txt* For Vim version 8.2. Last change: 2021 Mar 22
VIM REFERENCE MANUAL by Bram Moolenaar
properties the one with the highest priority
will be used; negative values can be used, the
default priority is zero
- combine when TRUE combine the highlight with any
- syntax highlight; when omitted or FALSE syntax
+ combine when omitted or TRUE combine the highlight
+ with any syntax highlight; when FALSE syntax
highlight will not be used
start_incl when TRUE inserts at the start position will
be included in the text property
-*todo.txt* For Vim version 8.2. Last change: 2021 Mar 11
+*todo.txt* For Vim version 8.2. Last change: 2021 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
-------------------- Known bugs and current work -----------------------
Vim9 - Make everything work:
-- Does this work now: Implement using imported items at script level from
- "import * as X" in
-- import of item that isn't exported: error should mention missing "export"?
-- no error for using :import in legacy script?
-- Disallow :open ?
-- Check: what if 'cpo' is intentionally changed in Vim9 script, does it get
- restored at the end?
-- ISN_CHECKTYPE could use check_argtype()
-- Using a script variable inside a :def function doesn't work if the variable
- is inside a block, see Test_nested_function(). Should it work?
-- give error for variable name:
- var p = function('NoSuchFunc')
-- When indexing a string, should we include composing characters? #6563
- string[0] - first character including its composing characters.
- string[0 : 0] - same
- If you don't want that use strcharpart().
- Also, add optional arg to strcharpart() to include composing chars, to
- make it consistent with strchars().
- Add strcharlen(), like strchars() but like skipcc is always set
-- Make closures work better:
- - Create closure in a loop. Need to make a list of them.
-- If a :def function is called with a function reference, compile it to get
- the function type.
- def Filter(x: string, Cond: func(string): bool)
- Filter(x, (v) => v =~ '^b')
-- Make inline function work, to be used as a funcref:
- var Ref = (arg: type): type => {
- statement
- return expr
- }
- var Ref = (arg: type) => {
- statement
- statement
- }
- For builtin functions using tv_get_string*() use check_for_string() to be
- more strict about the argument type.
-- Implement :lockvar and :unlockvar. How about local variables? Perhaps only
- allow this for global variables. Use :final or :const otherwise.
-- Allow function names that will be script-local to start with lower case
- letter? Or also require names with s: prefix to use upper case?
- Also apply this function references "var ref = SomeFunc"
-- Support passing v:none to use the default argument value. (#6504)
+ more strict about the argument type (not a bool).
+ done: balloon_()
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- Check many more builtin function arguments at compile time.
- make 0 == 'string' fail on the script level, like inside :def.
Include patch #6290: recognize shell directory change.
Valgrind reports memory leaks in test_options.
+Valgrind reports overlapping memcpy in
+ test_conceal.3
+ test_edit.1
+ test_functions.4
+ test_ins_complete.3
+ test_method
+ test_normal
+ test_popupwin.35 et al.
+ test_search_stat
+Using uninitialized value in test_crypt (can't explain why).
+Memory leak in test_debugger
+Memory leak in test_paste, using XtOpenDisplay several times
+OLD:
+TODO: be able to run all parts of test_alot with valgrind separately
+Memory leak in test_alot with pyeval() (allocating partial)
+Memory leak in test_alot with expand()
+Memory leaks in test_channel? (or is it because of fork())
test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
Remove SPACE_IN_FILENAME ? It is only used for completion.
+Add optional argument to virtcol() that specifies "start", "cursor" or "end"
+to tell which value from getvvcol() should be used. (#7964)
+Value returned by virtcol() changes depending on how lines wrap. This is
+inconsistent with the documentation.
+
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
Give a few examples. (#4288)
Opening a file with --remote-tab-silent that matches 'wildignore' does not
-work, results in (E479: No match". (#4610)
+work, results in "E479: No match". (#4610)
7 Add an option to add one pixel column to the character width? Lucida
Console italic is wider than the normal font ("d" overlaps with next char).
Add buffer argument to undotree(). (#4001)
-Memory leak in test_debugger
-Using uninitialized value in test_crypt (can't explain why).
-Memory leak in test_terminal_fail
-TODO: be able to run all parts of test_alot with valgrind separately
-Memory leak in test_alot with pyeval() (allocating partial)
-Memory leak in test_alot with expand()
-Memory leaks in test_channel? (or is it because of fork())
-
matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul
19.
Patch to add :mapgroup, put mappings in a group like augroup.
(Yasuhiro Matsumoto, 2016 Feb 19)
-Value returned by virtcol() changes depending on how lines wrap. This is
-inconsistent with the documentation.
-
Can we cache the syntax attributes, so that updates for 'relativenumber' and
'cursorline'/'cursorcolumn' are a lot faster? Thus store the attributes
before combining them.
When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
-Using an insert mode expression mapping, cursor is not in the expected
-position. (ZyX, 2010 Aug 29)
-
After using <Tab> for command line completion after ":ta blah" and getting E33
(no tags file), further editing the command to e.g., ":echo 'blah'", the
command is not executed. Fix by Ian Kelling?
-*usr_41.txt* For Vim version 8.2. Last change: 2021 Feb 01
+*usr_41.txt* For Vim version 8.2. Last change: 2021 Mar 14
VIM USER MANUAL - by Bram Moolenaar
-*various.txt* For Vim version 8.2. Last change: 2021 Mar 02
+*various.txt* For Vim version 8.2. Last change: 2021 Mar 23
VIM REFERENCE MANUAL by Bram Moolenaar
feature}
*:sl!* *:sleep!*
-:[N]sl[eep]! [N] [m] Same as above, but hide the cursor
+:[N]sl[eep]! [N] [m] Same as above, but hide the cursor.
*:xrestore* *:xr*
:xr[estore] [display] Reinitializes the connection to the X11 server. Useful
Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
After upgrading it becomes invalid. Now use $VIMRUNTIME instead.
-The command line was cleared to often when 'showmode' was set and ":silent
+The command line was cleared too often when 'showmode' was set and ":silent
normal vy" was used. Don't clear the command line unless the mode was
actually displayed. Added the "mode_displayed" variable.
Patch 7.4.219
Problem: When 'relativenumber' or 'cursorline' are set the window is
- redrawn much to often. (Patrick Hemmer, Dominique Pelle)
+ redrawn much too often. (Patrick Hemmer, Dominique Pelle)
Solution: Check the VALID_CROW flag instead of VALID_WROW.
Files: src/move.c
-*vim9.txt* For Vim version 8.2. Last change: 2021 Mar 03
+*vim9.txt* For Vim version 8.2. Last change: 2021 Mar 30
VIM REFERENCE MANUAL by Bram Moolenaar
for clarity.
Since a script-local function reference can be used without "s:" the name must
-start with an upper case letter even when using the ":s" prefix. In legacy
+start with an upper case letter even when using the "s:" prefix. In legacy
script "s:funcref" could be used, because it could not be referred to with
"funcref". In Vim9 script it can, therefore "s:Funcref" must be used to avoid
that the name interferes with builtin functions.
g/pattern/s/^/`=newText`/
enddef
+Closures defined in a loop will share the same context. For example: >
+ var flist: list<func>
+ for i in range(10)
+ var inloop = i
+ flist[i] = () => inloop
+ endfor
+
+The "inloop" variable will exist only once, all closures put in the list refer
+to the same instance, which in the end will have the value 9. This is
+efficient. If you do want a separate context for each closure call a function
+to define it: >
+ def GetFunc(i: number): func
+ var inloop = i
+ return () => inloop
+ enddef
+
+ var flist: list<func>
+ for i in range(10)
+ flist[i] = GetFunc(i)
+ endfor
+
==============================================================================
4. Types *vim9-types*
:var mine: MyInterface<string>
{not implemented yet}
-You may also find this wiki useful. It was written by an early adoptor of
-Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md
Variable types and type casting ~
*variable-types*
Same for |extend()|, use |extendnew()| instead, and for |flatten()|, use
|flattennew()| instead.
-Closures defined in a loop will share the same context. For example: >
- var flist: list<func>
- for i in range(10)
- var inloop = i
- flist[i] = () => inloop
- endfor
-
-The "inloop" variable will exist only once, all closures put in the list refer
-to the same instance, which in the end will have the value 9. This is
-efficient. If you do want a separate context for each closure call a function
-to define it: >
- def GetFunc(i: number): func
- var inloop = i
- return () => inloop
- enddef
-
- var flist: list<func>
- for i in range(10)
- flist[i] = GetFunc(i)
- endfor
-
==============================================================================
5. Namespace, Import and Export
-*windows.txt* For Vim version 8.2. Last change: 2021 Feb 06
+*windows.txt* For Vim version 8.2. Last change: 2021 Mar 21
VIM REFERENCE MANUAL by Bram Moolenaar
Examples: >
- :windo set nolist nofoldcolumn | normal zn
+ :windo set nolist foldcolumn=0 | normal! zn
This resets the 'list' option and disables folding in all windows. >
This resets the 'fileencoding' in each buffer and writes it if this changed
the buffer. The result is that all buffers will use the 'encoding' encoding
-(if conversion works properly).
+(if conversion succeeds).
==============================================================================
9. Tag or file name under the cursor *window-tag*
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Mar 12
+" Last Change: 2021 Mar 19
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
" URL: http://sites.google.com/site/khorser/opensource/vim
" Original author: Dorai Sitaram <ds26@gte.com>
" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change: Oct 23, 2013
+" Last Change: Mar 10, 2021
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
" PREVIOUS LINE
let ind = indent(lnum)
let line = getline(lnum)
- let f = -1 " wether a '=' is a conditional or a asignment, -1 means we don't know yet
- " one 'closing' element at the beginning of the line has already reduced the
- " indent, but 'else', 'elseif' & 'then' increment it for the next line
- " '=' at the beginning has already de right indent (increased for asignments)
+
+ " Whether a '=' is a conditional or an assignment. -1 means we don't know
+ " yet.
+ " One 'closing' element at the beginning of the line has already reduced the
+ " indent, but 'else', 'elseif' & 'then' increment it for the next line.
+ " '=' at the beginning already has the right indent (increased for
+ " asignments).
+ let f = -1
let inicio = matchend(line, '^\c\s*\(else\a*\|then\|endif\|/[*/]\|[);={]\)')
if inicio > 0
let c = line[inicio-1]
-" Vim syntax file
" Language: Dot
" Filenames: *.dot
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: http://www.ocaml.info/vim/syntax/dot.vim
-" Last Change: 2011 May 17 - improved identifier matching + two new keywords
+" Last Change: 2021 Mar 24 - better attr + escape string matching, new keywords (Farbod Salamat-Zadeh)
+" 2011 May 17 - improved identifier matching + two new keywords
" 2001 May 04 - initial version
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
finish
endif
+let s:keepcpo = &cpo
+set cpo&vim
+
" Errors
syn match dotParErr ")"
syn match dotBrackErr "]"
" Strings
syn region dotString start=+"+ skip=+\\\\\|\\"+ end=+"+
-" General keywords
-syn keyword dotKeyword digraph node edge subgraph
-
-" Graph attributes
-syn keyword dotType center layers margin mclimit name nodesep nslimit
-syn keyword dotType ordering page pagedir rank rankdir ranksep ratio
-syn keyword dotType rotate size
-
-" Node attributes
-syn keyword dotType distortion fillcolor fontcolor fontname fontsize
-syn keyword dotType height layer orientation peripheries regular
-syn keyword dotType shape shapefile sides skew width
+" Escape strings
+syn match dotEscString /\v\\(N|G|E|T|H|L)/ containedin=dotString
+syn match dotEscString /\v\\(n|l|r)/ containedin=dotString
-" Edge attributes
-syn keyword dotType arrowhead arrowsize arrowtail constraint decorateP
-syn keyword dotType dir headclip headlabel headport labelangle labeldistance
-syn keyword dotType labelfontcolor labelfontname labelfontsize
-syn keyword dotType minlen port_label_distance samehead sametail
-syn keyword dotType tailclip taillabel tailport weight
-
-" Shared attributes (graphs, nodes, edges)
-syn keyword dotType color
-
-" Shared attributes (graphs and edges)
-syn keyword dotType bgcolor label URL
-
-" Shared attributes (nodes and edges)
-syn keyword dotType fontcolor fontname fontsize layer style
+" General keywords
+syn keyword dotKeyword graph digraph subgraph node edge strict
+
+" Node, edge and graph attributes
+syn keyword dotType _background area arrowhead arrowsize arrowtail bb bgcolor
+ \ center charset class clusterrank color colorscheme comment compound
+ \ concentrate constraint Damping decorate defaultdist dim dimen dir
+ \ diredgeconstraints distortion dpi edgehref edgetarget edgetooltip
+ \ edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames
+ \ fontpath fontsize forcelabels gradientangle group head_lp headclip
+ \ headhref headlabel headport headtarget headtooltip headURL height href
+ \ id image imagepath imagepos imagescale inputscale K label label_scheme
+ \ labelangle labeldistance labelfloat labelfontcolor labelfontname
+ \ labelfontsize labelhref labeljust labelloc labeltarget labeltooltip
+ \ labelURL landscape layer layerlistsep layers layerselect layersep
+ \ layout len levels levelsgap lhead lheight lp ltail lwidth margin
+ \ maxiter mclimit mindist minlen mode model mosek newrank nodesep
+ \ nojustify normalize notranslate nslimit nslimit1 ordering orientation
+ \ outputorder overlap overlap_scaling overlap_shrink pack packmode pad
+ \ page pagedir pencolor penwidth peripheries pin pos quadtree quantum
+ \ rank rankdir ranksep ratio rects regular remincross repulsiveforce
+ \ resolution root rotate rotation samehead sametail samplepoints scale
+ \ searchsize sep shape shapefile showboxes sides size skew smoothing
+ \ sortv splines start style stylesheet tail_lp tailclip tailhref
+ \ taillabel tailport tailtarget tailtooltip tailURL target tooltip
+ \ truecolor URL vertices viewport voro_margin weight width xdotversion
+ \ xlabel xlp z
" Special chars
syn match dotKeyChar "="
syn match dotKeyChar ";"
syn match dotKeyChar "->"
+syn match dotKeyChar "--"
" Identifier
syn match dotIdentifier /\<\w\+\(:\w\+\)\?\>/
syn sync maxlines=500
" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
-
-hi def link dotParErr Error
-hi def link dotBraceErr Error
-hi def link dotBrackErr Error
-
-hi def link dotComment Comment
-hi def link dotTodo Todo
-
-hi def link dotParEncl Keyword
-hi def link dotBrackEncl Keyword
-hi def link dotBraceEncl Keyword
-
-hi def link dotKeyword Keyword
-hi def link dotType Type
-hi def link dotKeyChar Keyword
-
-hi def link dotString String
-hi def link dotIdentifier Identifier
-
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_dot_syntax_inits")
+ if version < 508
+ let did_dot_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink dotParErr Error
+ HiLink dotBraceErr Error
+ HiLink dotBrackErr Error
+
+ HiLink dotComment Comment
+ HiLink dotTodo Todo
+
+ HiLink dotParEncl Keyword
+ HiLink dotBrackEncl Keyword
+ HiLink dotBraceEncl Keyword
+
+ HiLink dotKeyword Keyword
+ HiLink dotType Type
+ HiLink dotKeyChar Keyword
+
+ HiLink dotString String
+ HiLink dotEscString Keyword
+ HiLink dotIdentifier Identifier
+
+ delcommand HiLink
+endif
let b:current_syntax = "dot"
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
" vim: ts=8
" VIM syntax file
" Language: groff
-" Maintainer: Alejandro López-Valencia <dradul@yahoo.com>
-" URL: http://dradul.tripod.com/vim
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
" Last Change: 2003-05-08-12:41:13 GMT-5.
" This uses the nroff.vim syntax file.
" (ss) repaired several quoting and grouping glitches
" (ss) fixed regex parsing issue with multiple qualifiers [gi]
" (ss) additional factoring of keywords, globals, and members
-" Last Change: 2020 May 14
+" Last Change: 2021 Mar 30
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
syn match javaScriptSpecialCharacter "'\\.'"
syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match javaScriptNumber "-\=\<\d\+\%(_\d\+\)*\>"
syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
syn keyword javaScriptConditional if else switch
" VIM syntax file
" Language: nroff/groff
-" Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
-" URL: http://vorbote.wordpress.com/
-" Last Change: 2012 Feb 2
-"
-" {{{1 Acknowledgements
-"
-" ACKNOWLEDGEMENTS:
-"
-" My thanks to Jérôme Plût <Jerome.Plut@ens.fr>, who was the
-" creator and maintainer of this syntax file for several years.
-" May I be as good at it as he has been.
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
+" Previous Maintainer: Jérôme Plût <Jerome.Plut@ens.fr>
+" Last Change: 2021 Mar 28
"
" {{{1 Todo
"
let s:cpo_save = &cpo
set cpo&vim
+if exists("nroff_is_groff")
+ let b:nroff_is_groff = 1
+endif
+
+syn spell toplevel
+syn case match
+
"
" {{{1 plugin settings...
"
"
setlocal paragraphs+=XP
"
-" {{{2 Activate navigation to preporcessor sections.
+" {{{2 Activate navigation to preprocessor sections.
"
if exists("b:preprocs_as_sections")
setlocal sections=EQTSPS[\ G1GS
" <jp />
syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
-syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/
+syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ contains=@Spell
syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
-syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/
+syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ contains=@Spell
syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
" ------------------------------------------------------------
syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
-syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo
-syn match nroffComment /^'''.*/ contains=nroffTodo
+syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo,@Spell
+syn match nroffComment /^'''.*/ contains=nroffTodo,@Spell
if exists("b:nroff_is_groff")
- syn match nroffComment "\\#.*$" contains=nroffTodo
+ syn match nroffComment "\\#.*$" contains=nroffTodo,@Spell
endif
syn keyword nroffTodo TODO XXX FIXME contained
"
hi def link nroffEscChar nroffSpecialChar
-hi def link nroffEscCharAr nroffSpecialChar
+hi def link nroffEscCharArg nroffSpecialChar
hi def link nroffSpecialChar SpecialChar
hi def link nroffSpace Delimiter
hi def link nroffEscRegPar nroffEscape
hi def link nroffEscArg nroffEscape
hi def link nroffSize nroffEscape
-hi def link nroffEscape Preproc
+hi def link nroffEscape PreProc
hi def link nroffIgnore Comment
hi def link nroffComment Comment
" Vim syntax file
" Language: OpenSSH client configuration file (ssh_config)
" Author: David Necas (Yeti)
-" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
+" Maintainer: Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Contributor: Karsten Hopp <karsten@redhat.com>
" Contributor: Dean, Adam Kenneth <adam.ken.dean@hpe.com>
-" Last Change: 2020 Feb 12
+" Last Change: 2021 Mar 29
" Added RemoteCommand from pull request #4809
" Included additional keywords from Martin.
-" SSH Version: 7.4p1
+" SSH Version: 8.5p1
"
" Setup
syn keyword sshconfigKeyword HostKeyAlias
syn keyword sshconfigKeyword HostName
syn keyword sshconfigKeyword HostbasedAuthentication
+syn keyword sshconfigKeyword HostbasedAcceptedAlgorithms
syn keyword sshconfigKeyword HostbasedKeyTypes
syn keyword sshconfigKeyword IPQoS
syn keyword sshconfigKeyword IdentitiesOnly
syn keyword sshconfigKeyword KbdInteractiveAuthentication
syn keyword sshconfigKeyword KbdInteractiveDevices
syn keyword sshconfigKeyword KexAlgorithms
+syn keyword sshconfigKeyword KnownHostsCommand
syn keyword sshconfigKeyword LocalCommand
syn keyword sshconfigKeyword LocalForward
syn keyword sshconfigKeyword LogLevel
+syn keyword sshconfigKeyword LogVerbose
syn keyword sshconfigKeyword MACs
syn keyword sshconfigKeyword Match
syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
syn keyword sshconfigKeyword PKCS11Provider
syn keyword sshconfigKeyword PasswordAuthentication
syn keyword sshconfigKeyword PermitLocalCommand
+syn keyword sshconfigKeyword PermitRemoteOpen
syn keyword sshconfigKeyword Port
syn keyword sshconfigKeyword PreferredAuthentications
syn keyword sshconfigKeyword ProxyCommand
syn keyword sshconfigKeyword ProxyJump
syn keyword sshconfigKeyword ProxyUseFDPass
+syn keyword sshconfigKeyword PubkeyAcceptedAlgorithms
syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes
syn keyword sshconfigKeyword PubkeyAuthentication
syn keyword sshconfigKeyword RekeyLimit
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Contributor: Karsten Hopp <karsten@redhat.com>
" Originally: 2009-07-09
-" Last Change: 2020-10-20
-" SSH Version: 8.4p1
+" Last Change: 2021-03-29
+" SSH Version: 8.5p1
"
" Setup
syn keyword sshdconfigKeyword HostKey
syn keyword sshdconfigKeyword HostKeyAgent
syn keyword sshdconfigKeyword HostKeyAlgorithms
+syn keyword sshdconfigKeyword HostbasedAcceptedAlgorithms
syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes
syn keyword sshdconfigKeyword HostbasedAuthentication
syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly
syn keyword sshdconfigKeyword KeyRegenerationInterval
syn keyword sshdconfigKeyword ListenAddress
syn keyword sshdconfigKeyword LogLevel
+syn keyword sshdconfigKeyword LogVerbose
syn keyword sshdconfigKeyword LoginGraceTime
syn keyword sshdconfigKeyword MACs
syn keyword sshdconfigKeyword Match
syn keyword sshdconfigKeyword MaxSessions
syn keyword sshdconfigKeyword MaxStartups
syn keyword sshdconfigKeyword PasswordAuthentication
+syn keyword sshdconfigKeyword PerSourceMaxStartups
+syn keyword sshdconfigKeyword PerSourceNetBlockSize
syn keyword sshdconfigKeyword PermitBlacklistedKeys
syn keyword sshdconfigKeyword PermitEmptyPasswords
syn keyword sshdconfigKeyword PermitListen
syn keyword sshdconfigKeyword PrintLastLog
syn keyword sshdconfigKeyword PrintMotd
syn keyword sshdconfigKeyword Protocol
+syn keyword sshdconfigKeyword PubkeyAcceptedAlgorithms
syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes
syn keyword sshdconfigKeyword PubkeyAuthentication
syn keyword sshdconfigKeyword PubkeyAuthOptions
" Vim syntax file
" Language: sudoers(5) configuration files
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2018-08-18
+" Latest Revision: 2021 Mar 15
" Recent Changes: Support for #include and #includedir.
" Added many new options (Samuel D. Leslie)
syn keyword sudoersTodo contained TODO FIXME XXX NOTE
syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo
-syn region sudoersInclude display oneline start='#\(include\|includedir\)' end='$'
+syn region sudoersInclude display oneline start='[#@]\%(include\|includedir\)\>' end='$'
syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
\ shell_noargs
\ stay_setuid
\ sudoedit_checkdir
- \ sudoedit_fellow
+ \ sudoedit_follow
\ syslog_pid
\ targetpw
\ tty_tickets