mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #4648 from jamessan/packages
packages (vim-patch:7.4.{1384,1388,1396,1478,1479,1480,1486,1492,1499,1528,1550,1551,1552,1553,1554,1596,1649,1712,1840,1973,1986})
This commit is contained in:
commit
adaacdd71a
@ -2,6 +2,7 @@ set(SYN_VIM_GENERATOR ${PROJECT_SOURCE_DIR}/scripts/genvimvim.lua)
|
||||
set(GENERATED_RUNTIME_DIR ${PROJECT_BINARY_DIR}/runtime)
|
||||
set(GENERATED_SYN_VIM ${GENERATED_RUNTIME_DIR}/syntax/vim/generated.vim)
|
||||
set(GENERATED_HELP_TAGS ${GENERATED_RUNTIME_DIR}/doc/tags)
|
||||
set(GENERATED_PACKAGE_DIR ${GENERATED_RUNTIME_DIR}/pack/dist/opt)
|
||||
|
||||
file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR})
|
||||
file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax)
|
||||
@ -18,6 +19,47 @@ add_custom_command(OUTPUT ${GENERATED_SYN_VIM}
|
||||
${PROJECT_SOURCE_DIR}/src/nvim/eval.c
|
||||
)
|
||||
|
||||
if(POLICY CMP0054)
|
||||
cmake_policy(SET CMP0054 OLD)
|
||||
endif()
|
||||
|
||||
file(GLOB PACKAGES ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*)
|
||||
|
||||
set(GENERATED_PACKAGE_TAGS)
|
||||
foreach(PACKAGE ${PACKAGES})
|
||||
get_filename_component(PACKNAME ${PACKAGE} NAME)
|
||||
file(GLOB "${PACKNAME}_DOC_FILES" ${PACKAGE}/doc/*.txt)
|
||||
if("${PACKNAME}_DOC_FILES")
|
||||
file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME})
|
||||
add_custom_target("${PACKNAME}-tags"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME}
|
||||
COMMAND "${PROJECT_BINARY_DIR}/bin/nvim"
|
||||
-u NONE -i NONE -e --headless -c "helptags doc" -c quit
|
||||
DEPENDS
|
||||
nvim
|
||||
WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}"
|
||||
)
|
||||
|
||||
add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags"
|
||||
DEPENDS
|
||||
"${PACKNAME}-tags"
|
||||
)
|
||||
|
||||
set("${PACKNAME}_DOC_NAMES")
|
||||
foreach(DF "${${PACKNAME}_DOC_FILES}")
|
||||
get_filename_component(F ${DF} NAME)
|
||||
list(APPEND "${PACKNAME}_DOC_NAMES" ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/${F})
|
||||
endforeach()
|
||||
|
||||
install_helper(
|
||||
FILES ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags "${${PACKNAME}_DOC_NAMES}"
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/pack/dist/opt/${PACKNAME}/doc)
|
||||
|
||||
list(APPEND GENERATED_PACKAGE_TAGS "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(GLOB DOCFILES ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
|
||||
|
||||
set(BUILDDOCFILES)
|
||||
@ -53,6 +95,7 @@ add_custom_target(
|
||||
DEPENDS
|
||||
${GENERATED_SYN_VIM}
|
||||
${GENERATED_HELP_TAGS}
|
||||
${GENERATED_PACKAGE_TAGS}
|
||||
)
|
||||
|
||||
# CMake is painful here. It will create the destination using the user's
|
||||
|
@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 7.4. Last change: 2015 Dec 05
|
||||
*autocmd.txt* For Vim version 7.4. Last change: 2016 Mar 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 7.4. Last change: 2016 Feb 10
|
||||
*change.txt* For Vim version 7.4. Last change: 2016 Mar 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -108,7 +108,9 @@ is an error when 'cpoptions' includes the 'E' flag.
|
||||
*J*
|
||||
J Join [count] lines, with a minimum of two lines.
|
||||
Remove the indent and insert up to two spaces (see
|
||||
below).
|
||||
below). Fails when on the last line of the buffer.
|
||||
If [count] is too big it is reduce to the number of
|
||||
lines available.
|
||||
|
||||
*v_J*
|
||||
{Visual}J Join the highlighted lines, with a minimum of two
|
||||
|
@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Feb 16
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -358,7 +358,7 @@ These are the common ones:
|
||||
To avoid the special meaning of the wildcards prepend a backslash. However,
|
||||
on MS-Windows the backslash is a path separator and "path\[abc]" is still seen
|
||||
as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this
|
||||
is to use "path\[[]abc]". Then the file "path[abc]" literally.
|
||||
is to use "path\[[]abc]", this matches the file "path\[abc]".
|
||||
|
||||
*starstar-wildcard*
|
||||
Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems.
|
||||
|
@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Feb 19
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -413,7 +413,8 @@ only appear once. Examples: >
|
||||
A key is always a String. You can use a Number, it will be converted to a
|
||||
String automatically. Thus the String '4' and the number 4 will find the same
|
||||
entry. Note that the String '04' and the Number 04 are different, since the
|
||||
Number will be converted to the String '4'.
|
||||
Number will be converted to the String '4'. The empty string can be used as a
|
||||
key.
|
||||
|
||||
A value can be any expression. Using a Dictionary for a value creates a
|
||||
nested Dictionary: >
|
||||
@ -861,11 +862,12 @@ These three can be repeated and mixed. Examples:
|
||||
expr8 *expr8*
|
||||
-----
|
||||
expr8[expr1] item of String or |List| *expr-[]* *E111*
|
||||
*subscript*
|
||||
|
||||
If expr8 is a Number or String this results in a String that contains the
|
||||
expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
|
||||
Number. This doesn't recognize multi-byte encodings, see |byteidx()| for
|
||||
an alternative.
|
||||
an alternative, or use `split()` to turn the string into a list of characters.
|
||||
|
||||
Index zero gives the first byte. This is like it works in C. Careful:
|
||||
text column numbers start with one! Example, to get the byte under the
|
||||
@ -2155,6 +2157,7 @@ writefile({list}, {fname} [, {flags}])
|
||||
Number write list of lines to file {fname}
|
||||
xor({expr}, {expr}) Number bitwise XOR
|
||||
|
||||
|
||||
abs({expr}) *abs()*
|
||||
Return the absolute value of {expr}. When {expr} evaluates to
|
||||
a |Float| abs() returns a |Float|. When {expr} can be
|
||||
@ -2779,6 +2782,7 @@ cursor({list})
|
||||
|
||||
When there is one argument {list} this is used as a |List|
|
||||
with two, three or four item:
|
||||
[{lnum}, {col}]
|
||||
[{lnum}, {col}, {off}]
|
||||
[{lnum}, {col}, {off}, {curswant}]
|
||||
This is like the return value of |getpos()| or |getcurpos()|,
|
||||
@ -3207,7 +3211,10 @@ feedkeys({string} [, {mode}]) *feedkeys()*
|
||||
similar to using ":normal!". You can call feedkeys()
|
||||
several times without 'x' and then one time with 'x'
|
||||
(possibly with an empty {string}) to execute all the
|
||||
typeahead.
|
||||
typeahead. Note that when Vim ends in Insert mode it
|
||||
will behave as if <Esc> is typed, to avoid getting
|
||||
stuck, waiting for a character to be typed before the
|
||||
script continues.
|
||||
Return value is always 0.
|
||||
|
||||
filereadable({file}) *filereadable()*
|
||||
@ -7408,6 +7415,7 @@ unix Unix version of Vim.
|
||||
user_commands User-defined commands.
|
||||
vertsplit Compiled with vertically split windows |:vsplit|.
|
||||
vim_starting True while initial source'ing takes place. |startup|
|
||||
*vim_starting*
|
||||
virtualedit Compiled with 'virtualedit' option.
|
||||
visual Compiled with Visual mode.
|
||||
visualextra Compiled with extra Visual mode commands.
|
||||
|
@ -1,4 +1,4 @@
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Mar 31
|
||||
|
||||
VIM - main help file
|
||||
k
|
||||
|
@ -1,4 +1,4 @@
|
||||
*helphelp.txt* For Vim version 7.4. Last change: 2014 Sep 19
|
||||
*helphelp.txt* For Vim version 7.4. Last change: 2016 Apr 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -188,6 +188,9 @@ command: >
|
||||
*E154* *E150* *E151* *E152* *E153* *E670*
|
||||
:helpt[ags] [++t] {dir}
|
||||
Generate the help tags file(s) for directory {dir}.
|
||||
When {dir} is ALL then all "doc" directories in
|
||||
'runtimepath' will be used.
|
||||
|
||||
All "*.txt" and "*.??x" files in the directory and
|
||||
sub-directories are scanned for a help tag definition
|
||||
in between stars. The "*.??x" files are for
|
||||
@ -196,9 +199,11 @@ command: >
|
||||
sorted.
|
||||
When there are duplicates an error message is given.
|
||||
An existing tags file is silently overwritten.
|
||||
|
||||
The optional "++t" argument forces adding the
|
||||
"help-tags" tag. This is also done when the {dir} is
|
||||
equal to $VIMRUNTIME/doc.
|
||||
|
||||
To rebuild the help tags in the runtime directory
|
||||
(requires write permission there): >
|
||||
:helptags $VIMRUNTIME/doc
|
||||
@ -249,7 +254,9 @@ The second one finds the English user manual, even when 'helplang' is set to
|
||||
|
||||
When using command-line completion for the ":help" command, the "@en"
|
||||
extension is only shown when a tag exists for multiple languages. When the
|
||||
tag only exists for English "@en" is omitted.
|
||||
tag only exists for English "@en" is omitted. When the first candidate has an
|
||||
"@ab" extension and it matches the first language in 'helplang' "@ab" is also
|
||||
omitted.
|
||||
|
||||
When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
|
||||
find the tag in the same language. If not found then 'helplang' will be used
|
||||
@ -306,6 +313,10 @@ aligned on a line.
|
||||
When referring to an existing help tag and to create a hot-link, place the
|
||||
name between two bars (|) eg. |help-writing|.
|
||||
|
||||
When referring to a Vim command and to create a hot-link, place the
|
||||
name between two backticks, eg. inside `:filetype`. You will see this is
|
||||
highlighted as a command, like a code block (see below).
|
||||
|
||||
When referring to a Vim option in the help file, place the option name between
|
||||
two single quotes, eg. 'statusline'
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Jan 19
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Mar 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -1378,6 +1378,8 @@ tag command action ~
|
||||
|:ounmap| :ou[nmap] like ":unmap" but for Operator-pending mode
|
||||
|:ounmenu| :ounme[nu] remove menu for Operator-pending mode
|
||||
|:ownsyntax| :ow[nsyntax] set new local syntax highlight for this window
|
||||
|:packadd| :pa[ckadd] add a plugin from 'packpath'
|
||||
|:packloadall| :packl[oadall] load all packages under 'packpath'
|
||||
|:pclose| :pc[lose] close preview window
|
||||
|:pedit| :ped[it] edit file in the preview window
|
||||
|:print| :p[rint] print lines
|
||||
|
@ -1,4 +1,4 @@
|
||||
*message.txt* For Vim version 7.4. Last change: 2013 Feb 23
|
||||
*message.txt* For Vim version 7.4. Last change: 2016 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.4. Last change: 2016 Feb 20
|
||||
*options.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -2458,8 +2458,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
file only, the option is not changed.
|
||||
When 'binary' is set, the value of 'fileformats' is not used.
|
||||
|
||||
Note that when Vim starts up with an empty buffer this option is not
|
||||
used. Set 'fileformat' in your vimrc instead.
|
||||
When Vim starts up with an empty buffer the first item is used. You
|
||||
can overrule this by setting 'fileformat' in your .vimrc.
|
||||
|
||||
For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
|
||||
are ":source"ed and for vimrc files, automatic <EOL> detection may be
|
||||
@ -4238,6 +4238,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
written. A ":set nomodified" command also resets the original
|
||||
values to the current values and the 'modified' option will be
|
||||
reset.
|
||||
Similarly for 'eol' and 'bomb'.
|
||||
This option is not set when a change is made to the buffer as the
|
||||
result of a BufNewFile, BufRead/BufReadPost, BufWritePost,
|
||||
FileAppendPost or VimLeave autocommand event. See |gzip-example| for
|
||||
@ -4499,6 +4500,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
*'packpath'* *'pp'*
|
||||
'packpath' 'pp' string (default: see 'runtimepath')
|
||||
{not in Vi}
|
||||
Directories used to find packages. See |packages|.
|
||||
|
||||
|
||||
*'paragraphs'* *'para'*
|
||||
'paragraphs' 'para' string (default "IPLPPPQPP TPHPLIPpLpItpplpipbp")
|
||||
global
|
||||
|
@ -1,4 +1,4 @@
|
||||
*os_win32.txt* For Vim version 7.4. Last change: 2014 Sep 25
|
||||
*os_win32.txt* For Vim version 7.4. Last change: 2016 Mar 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by George Reilly
|
||||
@ -75,6 +75,31 @@ The directory of the Vim executable is appended to $PATH. This is mostly to
|
||||
make "!xxd" work, as it is in the Tools menu. And it also means that when
|
||||
executable() returns 1 the executable can actually be executed.
|
||||
|
||||
Quotes in file names *win32-quotes*
|
||||
|
||||
Quotes inside a file name (or any other command line argument) can be escaped
|
||||
with a backslash. E.g. >
|
||||
vim -c "echo 'foo\"bar'"
|
||||
|
||||
Alternatively use three quotes to get one: >
|
||||
vim -c "echo 'foo"""bar'"
|
||||
|
||||
The quotation rules are:
|
||||
|
||||
1. A `"` starts quotation.
|
||||
2. Another `"` or `""` ends quotation. If the quotation ends with `""`, a `"`
|
||||
is produced at the end of the quoted string.
|
||||
|
||||
Examples, with [] around an argument:
|
||||
"foo" -> [foo]
|
||||
"foo"" -> [foo"]
|
||||
"foo"bar -> [foobar]
|
||||
"foo" bar -> [foo], [bar]
|
||||
"foo""bar -> [foo"bar]
|
||||
"foo"" bar -> [foo"], [bar]
|
||||
"foo"""bar" -> [foo"bar]
|
||||
|
||||
|
||||
==============================================================================
|
||||
3. Using the mouse *win32-mouse*
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*pattern.txt* For Vim version 7.4. Last change: 2016 Apr 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -1096,8 +1096,8 @@ x A single character, with no special meaning, matches itself
|
||||
'/', alphabetic, numeric, '_' or '~'.
|
||||
These items only work for 8-bit characters, except [:lower:] and
|
||||
[:upper:] also work for multi-byte characters when using the new
|
||||
regexp engine. In the future these items may work for multi-byte
|
||||
characters.
|
||||
regexp engine. See |two-engines|. In the future these items may
|
||||
work for multi-byte characters.
|
||||
*/[[=* *[==]*
|
||||
- An equivalence class. This means that characters are matched that
|
||||
have almost the same meaning, e.g., when ignoring accents. This
|
||||
|
@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 7.4. Last change: 2016 Jan 21
|
||||
*quickfix.txt* For Vim version 7.4. Last change: 2016 Mar 19
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -49,6 +49,10 @@ The following quickfix commands can be used. The location list commands are
|
||||
similar to the quickfix commands, replacing the 'c' prefix in the quickfix
|
||||
command with 'l'.
|
||||
|
||||
*E924*
|
||||
If the current window was closed by an |autocommand| while processing a
|
||||
location list command, it will be aborted.
|
||||
|
||||
*:cc*
|
||||
:cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
|
||||
error is displayed again. Without [!] this doesn't
|
||||
|
@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2015 Nov 10
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2016 Mar 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -794,6 +794,7 @@ Short explanation of each option: *option-list*
|
||||
'omnifunc' 'ofu' function for filetype-specific completion
|
||||
'opendevice' 'odev' allow reading/writing devices on MS-Windows
|
||||
'operatorfunc' 'opfunc' function to be called for |g@| operator
|
||||
'packpath' 'pp' list of directories used for packages
|
||||
'paragraphs' 'para' nroff macros that separate paragraphs
|
||||
'paste' allow pasting text
|
||||
'pastetoggle' 'pt' key code that causes 'paste' to toggle
|
||||
|
@ -1,4 +1,4 @@
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2016 Feb 12
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2016 Apr 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -8,12 +8,14 @@ Repeating commands, Vim scripts and debugging *repeating*
|
||||
|
||||
Chapter 26 of the user manual introduces repeating |usr_26.txt|.
|
||||
|
||||
1. Single repeats |single-repeat|
|
||||
2. Multiple repeats |multi-repeat|
|
||||
3. Complex repeats |complex-repeat|
|
||||
4. Using Vim scripts |using-scripts|
|
||||
5. Debugging scripts |debug-scripts|
|
||||
6. Profiling |profiling|
|
||||
1. Single repeats |single-repeat|
|
||||
2. Multiple repeats |multi-repeat|
|
||||
3. Complex repeats |complex-repeat|
|
||||
4. Using Vim scripts |using-scripts|
|
||||
5. Using Vim packages |packages|
|
||||
6. Creating Vim packages |package-create|
|
||||
7. Debugging scripts |debug-scripts|
|
||||
8. Profiling |profiling|
|
||||
|
||||
==============================================================================
|
||||
1. Single repeats *single-repeat*
|
||||
@ -68,8 +70,8 @@ examples.
|
||||
The global commands work by first scanning through the [range] lines and
|
||||
marking each line where a match occurs (for a multi-line pattern, only the
|
||||
start of the match matters).
|
||||
In a second scan the [cmd] is executed for each marked line with its line
|
||||
number prepended. For ":v" and ":g!" the command is executed for each not
|
||||
In a second scan the [cmd] is executed for each marked line, as if the cursor
|
||||
was in that line. For ":v" and ":g!" the command is executed for each not
|
||||
marked line. If a line is deleted its mark disappears.
|
||||
The default for [range] is the whole buffer (1,$). Use "CTRL-C" to interrupt
|
||||
the command. If an error message is given for a line, the command for that
|
||||
@ -173,10 +175,12 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
commands.
|
||||
|
||||
*:ru* *:runtime*
|
||||
:ru[ntime][!] {file} ..
|
||||
:ru[ntime][!] [where] {file} ..
|
||||
Read Ex commands from {file} in each directory given
|
||||
by 'runtimepath'. There is no error for non-existing
|
||||
files. Example: >
|
||||
by 'runtimepath' and/or 'packpath'. There is no error
|
||||
for non-existing files.
|
||||
|
||||
Example: >
|
||||
:runtime syntax/c.vim
|
||||
|
||||
< There can be multiple {file} arguments, separated by
|
||||
@ -190,6 +194,15 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
When it is not included only the first found file is
|
||||
sourced.
|
||||
|
||||
When [where] is omitted only 'runtimepath' is used.
|
||||
Other values:
|
||||
START search under "start" in 'packpath'
|
||||
OPT search under "opt" in 'packpath'
|
||||
PACK search under "start" and "opt" in
|
||||
'packpath'
|
||||
ALL first use 'runtimepath', then search
|
||||
under "start" and "opt" in 'packpath'
|
||||
|
||||
When {file} contains wildcards it is expanded to all
|
||||
matching files. Example: >
|
||||
:runtime! plugin/*.vim
|
||||
@ -203,6 +216,57 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
When 'verbose' is two or higher, there is a message
|
||||
about each searched file.
|
||||
|
||||
*:pa* *:packadd* *E919*
|
||||
:pa[ckadd][!] {name} Search for an optional plugin directory in 'packpath'
|
||||
and source any plugin files found. The directory must
|
||||
match:
|
||||
pack/*/opt/{name} ~
|
||||
The directory is added to 'runtimepath' if it wasn't
|
||||
there yet.
|
||||
|
||||
Note that {name} is the directory name, not the name
|
||||
of the .vim file. All the files matching the pattern
|
||||
pack/*/opt/{name}/plugin/**/*.vim ~
|
||||
will be sourced. This allows for using subdirectories
|
||||
below "plugin", just like with plugins in
|
||||
'runtimepath'.
|
||||
|
||||
If the filetype detection was not enabled yet (this
|
||||
is usually done with a "syntax enable" or "filetype
|
||||
on" command in your .vimrc file), this will also look
|
||||
for "{name}/ftdetect/*.vim" files.
|
||||
|
||||
When the optional ! is added no plugin files or
|
||||
ftdetect scripts are loaded, only the matching
|
||||
directories are added to 'runtimepath'. This is
|
||||
useful in your .vimrc. The plugins will then be
|
||||
loaded during initialization, see |load-plugins|.
|
||||
|
||||
Also see |pack-add|.
|
||||
|
||||
*:packl* *:packloadall*
|
||||
:packl[oadall][!] Load all packages in the "start" directory under each
|
||||
entry in 'packpath'.
|
||||
|
||||
First all the directories found are added to
|
||||
'runtimepath', then the plugins found in the
|
||||
directories are sourced. This allows for a plugin to
|
||||
depend on something of another plugin, e.g. an
|
||||
"autoload" directory. See |packload-two-steps| for
|
||||
how this can be useful.
|
||||
|
||||
This is normally done automatically during startup,
|
||||
after loading your .vimrc file. With this command it
|
||||
can be done earlier.
|
||||
|
||||
Packages will be loaded only once. After this command
|
||||
it won't happen again. When the optional ! is added
|
||||
this command will load packages even when done before.
|
||||
|
||||
An error only causes sourcing the script where it
|
||||
happens to be aborted, further plugins will be loaded.
|
||||
See |packages|.
|
||||
|
||||
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
|
||||
Specify the character encoding used in the script.
|
||||
The following lines will be converted from [encoding]
|
||||
@ -373,7 +437,186 @@ Rationale:
|
||||
< Therefore the unusual leading backslash is used.
|
||||
|
||||
==============================================================================
|
||||
5. Debugging scripts *debug-scripts*
|
||||
5. Using Vim packages *packages*
|
||||
|
||||
A Vim package is a directory that contains one or more plugins. The
|
||||
advantages over normal plugins:
|
||||
- A package can be downloaded as an archive and unpacked in its own directory.
|
||||
Thus the files are not mixed with files of other plugins. That makes it
|
||||
easy to update and remove.
|
||||
- A package can be a git, mercurial, etc. repository. That makes it really
|
||||
easy to update.
|
||||
- A package can contain multiple plugins that depend on each other.
|
||||
- A package can contain plugins that are automatically loaded on startup and
|
||||
ones that are only loaded when needed with `:packadd`.
|
||||
|
||||
|
||||
Using a package and loading automatically ~
|
||||
|
||||
Let's assume your Vim files are in the "~/.local/share/nvim/site" directory
|
||||
and you want to add a package from a zip archive "/tmp/foopack.zip":
|
||||
% mkdir -p ~/.local/share/nvim/site/pack/foo
|
||||
% cd ~/.local/share/nvim/site/pack/foo
|
||||
% unzip /tmp/foopack.zip
|
||||
|
||||
The directory name "foo" is arbitrary, you can pick anything you like.
|
||||
|
||||
You would now have these files under ~/.local/share/nvim/site:
|
||||
pack/foo/README.txt
|
||||
pack/foo/start/foobar/plugin/foo.vim
|
||||
pack/foo/start/foobar/syntax/some.vim
|
||||
pack/foo/opt/foodebug/plugin/debugger.vim
|
||||
|
||||
When Vim starts up, after processing your .vimrc, it scans all directories in
|
||||
'packpath' for plugins under the "pack/*/start" directory. First all those
|
||||
directories are added to 'runtimepath'. Then all the plugins are loaded.
|
||||
See |packload-two-steps| for how these two steps can be useful.
|
||||
|
||||
In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
|
||||
"~/.local/share/nvim/site/pack/foo/start/foobar" to 'runtimepath'.
|
||||
|
||||
If the "foobar" plugin kicks in and sets the 'filetype' to "some", Vim will
|
||||
find the syntax/some.vim file, because its directory is in 'runtimepath'.
|
||||
|
||||
Vim will also load ftdetect files, if there are any.
|
||||
|
||||
Note that the files under "pack/foo/opt" are not loaded automatically, only the
|
||||
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
|
||||
is used.
|
||||
|
||||
Loading packages automatically will not happen if loading plugins is disabled,
|
||||
see |load-plugins|.
|
||||
|
||||
To load packages earlier, so that 'runtimepath' gets updated: >
|
||||
:packloadall
|
||||
This also works when loading plugins is disabled. The automatic loading will
|
||||
only happen once.
|
||||
|
||||
|
||||
Using a single plugin and loading it automatically ~
|
||||
|
||||
If you don't have a package but a single plugin, you need to create the extra
|
||||
directory level:
|
||||
% mkdir -p ~/.local/share/nvim/site/pack/foo/start/foobar
|
||||
% cd ~/.local/share/nvim/site/pack/foo/start/foobar
|
||||
% unzip /tmp/someplugin.zip
|
||||
|
||||
You would now have these files:
|
||||
pack/foo/start/foobar/plugin/foo.vim
|
||||
pack/foo/start/foobar/syntax/some.vim
|
||||
|
||||
From here it works like above.
|
||||
|
||||
|
||||
Optional plugins ~
|
||||
*pack-add*
|
||||
To load an optional plugin from a pack use the `:packadd` command: >
|
||||
:packadd foodebug
|
||||
This searches for "pack/*/opt/foodebug" in 'packpath' and will find
|
||||
~/.local/share/nvim/site/pack/foo/opt/foodebug/plugin/debugger.vim and source
|
||||
it.
|
||||
|
||||
This could be done if some conditions are met. For example, depending on
|
||||
whether Vim supports a feature or a dependency is missing.
|
||||
|
||||
You can also load an optional plugin at startup, by putting this command in
|
||||
your |.vimrc|: >
|
||||
:packadd! foodebug
|
||||
The extra "!" is so that the plugin isn't loaded with Vim was started with
|
||||
|--noplugin|.
|
||||
|
||||
It is perfectly normal for a package to only have files in the "opt"
|
||||
directory. You then need to load each plugin when you want to use it.
|
||||
|
||||
|
||||
Where to put what ~
|
||||
|
||||
Since color schemes, loaded with `:colorscheme`, are found below
|
||||
"pack/*/start" and "pack/*/opt", you could put them anywhere. We recommend
|
||||
you put them below "pack/*/opt", for example
|
||||
".vim/pack/mycolors/opt/dark/colors/very_dark.vim".
|
||||
|
||||
Filetype plugins should go under "pack/*/start", so that they are always
|
||||
found. Unless you have more than one plugin for a file type and want to
|
||||
select which one to load with `:packadd`. E.g. depending on the compiler
|
||||
version: >
|
||||
if foo_compiler_version > 34
|
||||
packadd foo_new
|
||||
else
|
||||
packadd foo_old
|
||||
endif
|
||||
|
||||
The "after" directory is most likely not useful in a package. It's not
|
||||
disallowed though.
|
||||
|
||||
==============================================================================
|
||||
6. Creating Vim packages *package-create*
|
||||
|
||||
This assumes you write one or more plugins that you distribute as a package.
|
||||
|
||||
If you have two unrelated plugins you would use two packages, so that Vim
|
||||
users can chose what they include or not. Or you can decide to use one
|
||||
package with optional plugins, and tell the user to add the ones he wants with
|
||||
`:packadd`.
|
||||
|
||||
Decide how you want to distribute the package. You can create an archive or
|
||||
you could use a repository. An archive can be used by more users, but is a
|
||||
bit harder to update to a new version. A repository can usually be kept
|
||||
up-to-date easily, but it requires a program like "git" to be available.
|
||||
You can do both, github can automatically create an archive for a release.
|
||||
|
||||
Your directory layout would be like this:
|
||||
start/foobar/plugin/foo.vim " always loaded, defines commands
|
||||
start/foobar/plugin/bar.vim " always loaded, defines commands
|
||||
start/foobar/autoload/foo.vim " loaded when foo command used
|
||||
start/foobar/doc/foo.txt " help for foo.vim
|
||||
start/foobar/doc/tags " help tags
|
||||
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
|
||||
opt/fooextra/autoload/extra.vim " loaded when extra command used
|
||||
opt/fooextra/doc/extra.txt " help for extra.vim
|
||||
opt/fooextra/doc/tags " help tags
|
||||
|
||||
This allows for the user to do: >
|
||||
mkdir ~/.local/share/nvim/site/pack/myfoobar
|
||||
cd ~/.local/share/nvim/site/pack/myfoobar
|
||||
git clone https://github.com/you/foobar.git
|
||||
|
||||
Here "myfoobar" is a name that the user can choose, the only condition is that
|
||||
it differs from other packages.
|
||||
|
||||
In your documentation you explain what the plugins do, and tell the user how
|
||||
to load the optional plugin: >
|
||||
:packadd! fooextra
|
||||
|
||||
You could add this packadd command in one of your plugins, to be executed when
|
||||
the optional plugin is needed.
|
||||
|
||||
Run the `:helptags` command to generate the doc/tags file. Including this
|
||||
generated file in the package means that the user can drop the package in his
|
||||
pack directory and the help command works right away. Don't forget to re-run
|
||||
the command after changing the plugin help: >
|
||||
:helptags path/start/foobar/doc
|
||||
:helptags path/opt/fooextra/doc
|
||||
|
||||
|
||||
Dependencies between plugins ~
|
||||
*packload-two-steps*
|
||||
Suppose you have a two plugins that depend on the same functionality. You can
|
||||
put the common functionality in an autoload directory, so that it will be
|
||||
found automatically. Your package would have these files:
|
||||
|
||||
pack/foo/start/one/plugin/one.vim >
|
||||
call foolib#getit()
|
||||
< pack/foo/start/two/plugin/two.vim >
|
||||
call foolib#getit()
|
||||
< pack/foo/start/lib/autoload/foolib.vim >
|
||||
func foolib#getit()
|
||||
|
||||
This works, because loading packages will first add all found directories to
|
||||
'runtimepath' before sourcing the plugins.
|
||||
|
||||
==============================================================================
|
||||
7. Debugging scripts *debug-scripts*
|
||||
|
||||
Besides the obvious messages that you can add to your scripts to find out what
|
||||
they are doing, Vim offers a debug mode. This allows you to step through a
|
||||
@ -484,7 +727,7 @@ Additionally, these commands can be used:
|
||||
About the additional commands in debug mode:
|
||||
- There is no command-line completion for them, you get the completion for the
|
||||
normal Ex commands only.
|
||||
- You can shorten them, up to a single character, unless more then one command
|
||||
- You can shorten them, up to a single character, unless more than one command
|
||||
starts with the same letter. "f" stands for "finish", use "fr" for "frame".
|
||||
- Hitting <CR> will repeat the previous one. When doing another command, this
|
||||
is reset (because it's not clear what you want to repeat).
|
||||
@ -597,7 +840,7 @@ OBSCURE
|
||||
user, don't use typeahead for debug commands.
|
||||
|
||||
==============================================================================
|
||||
6. Profiling *profile* *profiling*
|
||||
8. Profiling *profile* *profiling*
|
||||
|
||||
Profiling means that Vim measures the time that is spent on executing
|
||||
functions and/or scripts. The |+profile| feature is required for this.
|
||||
|
@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 7.4. Last change: 2016 Feb 18
|
||||
*starting.txt* For Vim version 7.4. Last change: 2016 Apr 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -41,6 +41,7 @@ filename One or more file names. The first one will be the current
|
||||
nvim -- -filename
|
||||
< All arguments after the "--" will be interpreted as file names,
|
||||
no other options or "+command" argument can follow.
|
||||
For behavior of quotes on MS-Windows, see |win32-quotes|.
|
||||
|
||||
*--*
|
||||
- This argument can mean two things, depending on whether Ex
|
||||
@ -463,6 +464,11 @@ accordingly. Vim proceeds in this order:
|
||||
commands from the command line have not been executed yet. You can
|
||||
use "--cmd 'set noloadplugins'" |--cmd|.
|
||||
|
||||
Packages are loaded. These are plugins, as above, but found in the
|
||||
"start" directory of each entry in 'packpath'. Every plugin directory
|
||||
found is added in 'runtimepath' and then the plugins are sourced. See
|
||||
|packages|.
|
||||
|
||||
7. Set 'shellpipe' and 'shellredir'
|
||||
The 'shellpipe' and 'shellredir' options are set according to the
|
||||
value of the 'shell' option, unless they have been set before.
|
||||
@ -498,8 +504,9 @@ accordingly. Vim proceeds in this order:
|
||||
14. Execute startup commands
|
||||
If a "-t" flag was given to Vim, the tag is jumped to.
|
||||
The commands given with the |-c| and |+cmd| arguments are executed.
|
||||
The starting flag is reset, has("vim_starting") will now return zero.
|
||||
If the 'insertmode' option is set, Insert mode is entered.
|
||||
The starting flag is reset, has("vim_starting") will now return zero.
|
||||
The |v:vim_did_enter| variable is set to 1.
|
||||
The |VimEnter| autocommands are executed.
|
||||
|
||||
Some hints on using initializations:
|
||||
@ -710,7 +717,7 @@ There are several ways to exit Vim:
|
||||
- Use `:cquit`. Also when there are changes.
|
||||
|
||||
When using `:cquit` or when there was an error message Vim exits with exit
|
||||
code 1. Errors can be avoide by using `:silent!`.
|
||||
code 1. Errors can be avoided by using `:silent!`.
|
||||
|
||||
==============================================================================
|
||||
6. Saving settings *save-settings*
|
||||
|
@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 7.4. Last change: 2016 Jan 28
|
||||
*syntax.txt* For Vim version 7.4. Last change: 2016 Apr 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -936,26 +936,27 @@ To disable them use ":unlet". Example: >
|
||||
:unlet c_comment_strings
|
||||
|
||||
Variable Highlight ~
|
||||
c_gnu GNU gcc specific items
|
||||
c_comment_strings strings and numbers inside a comment
|
||||
c_space_errors trailing white space and spaces before a <Tab>
|
||||
c_no_trail_space_error ... but no trailing spaces
|
||||
c_no_tab_space_error ... but no spaces before a <Tab>
|
||||
c_no_bracket_error don't highlight {}; inside [] as errors
|
||||
c_no_curly_error don't highlight {}; inside [] and () as errors;
|
||||
*c_gnu* GNU gcc specific items
|
||||
*c_comment_strings* strings and numbers inside a comment
|
||||
*c_space_errors* trailing white space and spaces before a <Tab>
|
||||
*c_no_trail_space_error* ... but no trailing spaces
|
||||
*c_no_tab_space_error* ... but no spaces before a <Tab>
|
||||
*c_no_bracket_error* don't highlight {}; inside [] as errors
|
||||
*c_no_curly_error* don't highlight {}; inside [] and () as errors;
|
||||
except { and } in first column
|
||||
c_curly_error highlight a missing }; this forces syncing from the
|
||||
*c_curly_error* highlight a missing }; this forces syncing from the
|
||||
start of the file, can be slow
|
||||
c_no_ansi don't do standard ANSI types and constants
|
||||
c_ansi_typedefs ... but do standard ANSI types
|
||||
c_ansi_constants ... but do standard ANSI constants
|
||||
c_no_utf don't highlight \u and \U in strings
|
||||
c_syntax_for_h for *.h files use C syntax instead of C++ and use objc
|
||||
*c_no_ansi* don't do standard ANSI types and constants
|
||||
*c_ansi_typedefs* ... but do standard ANSI types
|
||||
*c_ansi_constants* ... but do standard ANSI constants
|
||||
*c_no_utf* don't highlight \u and \U in strings
|
||||
*c_syntax_for_h* for *.h files use C syntax instead of C++ and use objc
|
||||
syntax instead of objcpp
|
||||
c_no_if0 don't highlight "#if 0" blocks as comments
|
||||
c_no_cformat don't highlight %-formats in strings
|
||||
c_no_c99 don't highlight C99 standard items
|
||||
c_no_c11 don't highlight C11 standard items
|
||||
*c_no_if0* don't highlight "#if 0" blocks as comments
|
||||
*c_no_cformat* don't highlight %-formats in strings
|
||||
*c_no_c99* don't highlight C99 standard items
|
||||
*c_no_c11* don't highlight C11 standard items
|
||||
*c_no_bsd* don't highlight BSD specific types
|
||||
|
||||
When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will
|
||||
become a fold. If you don't want comments to become a fold use: >
|
||||
@ -2886,7 +2887,7 @@ You may wish to embed languages into sh. I'll give an example courtesy of
|
||||
Lorance Stinson on how to do this with awk as an example. Put the following
|
||||
file into $HOME/.config/nvim/after/syntax/sh/awkembed.vim: >
|
||||
|
||||
" AWK Embedding: {{{1
|
||||
" AWK Embedding:
|
||||
" ==============
|
||||
" Shamelessly ripped from aspperl.vim by Aaron Hope.
|
||||
if exists("b:current_syntax")
|
||||
@ -3345,6 +3346,13 @@ Note that schemas are not actually limited to plain scalars, but this is the
|
||||
only difference between schemas defined in YAML specification and the only
|
||||
difference defined in the syntax file.
|
||||
|
||||
|
||||
ZSH *zsh.vim* *ft-zsh-syntax*
|
||||
|
||||
The syntax script for zsh allows for syntax-based folding: >
|
||||
|
||||
:let g:zsh_fold_enable = 1
|
||||
|
||||
==============================================================================
|
||||
5. Defining a syntax *:syn-define* *E410*
|
||||
|
||||
@ -4511,9 +4519,9 @@ in their own color.
|
||||
:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
|
||||
for the file "colors/{name}.vim". The first one that
|
||||
is found is loaded.
|
||||
To see the name of the currently active color scheme: >
|
||||
:colo
|
||||
< The name is also stored in the g:colors_name variable.
|
||||
Also searches all plugins in 'packpath', first below
|
||||
"start" and then under "opt".
|
||||
|
||||
Doesn't work recursively, thus you can't use
|
||||
":colorscheme" in a color scheme script.
|
||||
After the color scheme has been loaded the
|
||||
@ -5019,6 +5027,9 @@ defaults back: >
|
||||
|
||||
:syntax reset
|
||||
|
||||
It is a bit of a wrong name, since it does not reset any syntax items, it only
|
||||
affects the highlighting.
|
||||
|
||||
This doesn't change the colors for the 'highlight' option.
|
||||
|
||||
Note that the syntax colors that you set in your vimrc file will also be reset
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_05.txt* For Vim version 7.4. Last change: 2012 Nov 20
|
||||
*usr_05.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -12,10 +12,11 @@ Vim's capabilities. Or define your own macros.
|
||||
|05.1| The vimrc file
|
||||
|05.2| The example vimrc file explained
|
||||
|05.3| Simple mappings
|
||||
|05.4| Adding a plugin
|
||||
|05.5| Adding a help file
|
||||
|05.6| The option window
|
||||
|05.7| Often used options
|
||||
|05.4| Adding a package
|
||||
|05.5| Adding a plugin
|
||||
|05.6| Adding a help file
|
||||
|05.7| The option window
|
||||
|05.8| Often used options
|
||||
|
||||
Next chapter: |usr_06.txt| Using syntax highlighting
|
||||
Previous chapter: |usr_04.txt| Making small changes
|
||||
@ -245,7 +246,47 @@ The ":map" command (with no arguments) lists your current mappings. At
|
||||
least the ones for Normal mode. More about mappings in section |40.1|.
|
||||
|
||||
==============================================================================
|
||||
*05.4* Adding a plugin *add-plugin* *plugin*
|
||||
*05.4* Adding a package *add-package* *vimball-install*
|
||||
|
||||
A package is a set of files that you can add to Vim. There are two kinds of
|
||||
packages: optional and automatically loaded on startup.
|
||||
|
||||
The Vim distribution comes with a few packages that you can optionally use.
|
||||
For example, the vimball plugin. This plugin supports creating and using
|
||||
vimballs (self-installing Vim plugin archives).
|
||||
|
||||
To start using the vimball plugin, add one line to your vimrc file: >
|
||||
packadd vimball
|
||||
|
||||
That's all! You can also type the command to try it out. Now you can find
|
||||
help about this plugin: >
|
||||
:help vimball
|
||||
|
||||
This works, because when `:packadd` loaded the plugin it also added the
|
||||
package directory in 'runtimepath', so that the help file can be found. The
|
||||
tags for vimball's help are already created. If you need to generate the help
|
||||
tags for a package, see the `:helptags` command.
|
||||
|
||||
You can find packages on the Internet in various places. It usually comes as
|
||||
an archive or as a repository. For an archive you can follow these steps:
|
||||
1. create the package directory: >
|
||||
mkdir -p ~/.local/share/nvim/site/pack/fancy
|
||||
< "fancy" can be any name of your liking. Use one that describes the
|
||||
package.
|
||||
2. unpack the archive in that directory. This assumes the top
|
||||
directory in the archive is "start": >
|
||||
cd ~/.local/share/nvim/site/pack/fancy
|
||||
unzip /tmp/fancy.zip
|
||||
< If the archive layout is different make sure that you end up with a
|
||||
path like this:
|
||||
~/.local/share/nvim/site/pack/fancy/start/fancytext/plugin/fancy.vim ~
|
||||
Here "fancytext" is the name of the package, it can be anything
|
||||
else.
|
||||
|
||||
More information about packages can be found here: |packages|.
|
||||
|
||||
==============================================================================
|
||||
*05.5* Adding a plugin *add-plugin* *plugin*
|
||||
|
||||
Vim's functionality can be extended by adding plugins. A plugin is nothing
|
||||
more than a Vim script file that is loaded automatically when Vim starts. You
|
||||
@ -299,10 +340,9 @@ Then copy the file to your plugin directory:
|
||||
Example for Unix (assuming you didn't have a plugin directory yet): >
|
||||
|
||||
mkdir -p ~/.local/share/nvim/site/plugin
|
||||
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.local/share/nvim/site/plugin
|
||||
cp /tmp/yourplugin.vim ~/.local/share/nvim/site/plugin
|
||||
|
||||
That's all! Now you can use the commands defined in this plugin to justify
|
||||
text.
|
||||
That's all! Now you can use the commands defined in this plugin.
|
||||
|
||||
Instead of putting plugins directly into the plugin/ directory, you may
|
||||
better organize them by putting them into subdirectories under plugin/.
|
||||
@ -384,7 +424,7 @@ Further reading:
|
||||
|new-filetype| How to detect a new file type.
|
||||
|
||||
==============================================================================
|
||||
*05.5* Adding a help file *add-local-help*
|
||||
*05.6* Adding a help file *add-local-help*
|
||||
|
||||
If you are lucky, the plugin you installed also comes with a help file. We
|
||||
will explain how to install the help file, so that you can easily find help
|
||||
@ -417,7 +457,7 @@ them through the tag.
|
||||
For writing a local help file, see |write-local-help|.
|
||||
|
||||
==============================================================================
|
||||
*05.6* The option window
|
||||
*05.7* The option window
|
||||
|
||||
If you are looking for an option that does what you want, you can search in
|
||||
the help files here: |options|. Another way is by using this command: >
|
||||
@ -456,7 +496,7 @@ border. This is what the 'scrolloff' option does, it specifies an offset
|
||||
from the window border where scrolling starts.
|
||||
|
||||
==============================================================================
|
||||
*05.7* Often used options
|
||||
*05.8* Often used options
|
||||
|
||||
There are an awful lot of options. Most of them you will hardly ever use.
|
||||
Some of the more useful ones will be mentioned here. Don't forget you can
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2014 Oct 29
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -196,12 +196,16 @@ Vim has no built-in way of justifying text. However, there is a neat macro
|
||||
package that does the job. To use this package, execute the following
|
||||
command: >
|
||||
|
||||
:runtime macros/justify.vim
|
||||
:packadd justify
|
||||
|
||||
Or put this line in your |vimrc|: >
|
||||
|
||||
packadd! justify
|
||||
|
||||
This Vim script file defines a new visual command "_j". To justify a block of
|
||||
text, highlight the text in Visual mode and then execute "_j".
|
||||
Look in the file for more explanations. To go there, do "gf" on this name:
|
||||
$VIMRUNTIME/macros/justify.vim.
|
||||
$VIMRUNTIME/pack/dist/opt/justify/plugin/justify.vim.
|
||||
|
||||
An alternative is to filter the text through an external program. Example: >
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_29.txt* For Vim version 7.4. Last change: 2008 Jun 28
|
||||
*usr_29.txt* For Vim version 7.4. Last change: 2016 Feb 27
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 7.4. Last change: 2016 Feb 14
|
||||
*usr_41.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -768,6 +768,7 @@ Date and Time: *date-functions* *time-functions*
|
||||
strftime() convert time to a string
|
||||
reltime() get the current or elapsed time accurately
|
||||
reltimestr() convert reltime() result to a string
|
||||
reltimefloat() convert reltime() result to a Float
|
||||
|
||||
*buffer-functions* *window-functions* *arg-functions*
|
||||
Buffers, windows and the argument list:
|
||||
@ -889,9 +890,14 @@ Mappings: *mapping-functions*
|
||||
wildmenumode() check if the wildmode is active
|
||||
|
||||
Testing: *test-functions*
|
||||
assert_equal() assert that two expressions values are equal
|
||||
assert_equal() assert that two expressions values are equal
|
||||
assert_notequal() assert that two expressions values are not equal
|
||||
assert_match() assert that a pattern matches the value
|
||||
assert_notmatch() assert that a pattern does not match the value
|
||||
assert_false() assert that an expression is false
|
||||
assert_true() assert that an expression is true
|
||||
assert_exception() assert that a command throws an exception
|
||||
assert_fails() assert that a function call fails
|
||||
|
||||
Various: *various-functions*
|
||||
mode() get current editing mode
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_toc.txt* For Vim version 7.4. Last change: 2010 Jul 20
|
||||
*usr_toc.txt* For Vim version 7.4. Last change: 2016 Mar 25
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -101,10 +101,11 @@ Read this from start to end to learn the essential commands.
|
||||
|05.1| The vimrc file
|
||||
|05.2| The example vimrc file explained
|
||||
|05.3| Simple mappings
|
||||
|05.4| Adding a plugin
|
||||
|05.5| Adding a help file
|
||||
|05.6| The option window
|
||||
|05.7| Often used options
|
||||
|05.4| Adding a package
|
||||
|05.5| Adding a plugin
|
||||
|05.6| Adding a help file
|
||||
|05.7| The option window
|
||||
|05.8| Often used options
|
||||
|
||||
|usr_06.txt| Using syntax highlighting
|
||||
|06.1| Switching it on
|
||||
|
@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.4. Last change: 2016 Feb 18
|
||||
*various.txt* For Vim version 7.4. Last change: 2016 Mar 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -375,6 +375,7 @@ B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
||||
N *+termresponse* support for |t_RV| and |v:termresponse|
|
||||
N *+textobjects* |text-objects| selection
|
||||
*+tgetent* non-Unix only: able to use external termcap
|
||||
N *+timers* the |timer_start()| function
|
||||
N *+title* Setting the window 'title' and 'icon'
|
||||
N *+toolbar* |gui-toolbar|
|
||||
N *+user_commands* User-defined commands. |user-commands|
|
||||
|
96
runtime/ftplugin/eiffel.vim
Normal file
96
runtime/ftplugin/eiffel.vim
Normal file
@ -0,0 +1,96 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Eiffel
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2010 Aug 29
|
||||
|
||||
if (exists("b:did_ftplugin"))
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=:--
|
||||
setlocal commentstring=--\ %s
|
||||
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Eiffel Source Files (*.e)\t*.e\n" .
|
||||
\ "Eiffel Control Files (*.ecf, *.ace, *.xace)\t*.ecf;*.ace;*.xace\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_ignorecase = 0
|
||||
" Silly \%^ trick to match note at head of pair and in middle prevents
|
||||
" 'g%' wrapping from 'note' to 'end'
|
||||
let b:match_words = '\%^:' .
|
||||
\ '\<\%(^note\|indexing\|class\|^obsolete\|inherit\|insert\|^create\|convert\|feature\|^invariant\)\>:' .
|
||||
\ '^end\>,' .
|
||||
\ '\<\%(do\|deferred\|external\|once\%(\s\+"\)\@!\|check\|debug\|if\|inspect\|from\|across\)\>:' .
|
||||
\ '\%(\%(^\s\+\)\@<=\%(then\|until\|loop\)\|\%(then\|until\|loop\)\s\+[^ -]\|' .
|
||||
\ '\<\%(ensure\%(\s\+then\)\=\|rescue\|_then\|elseif\|else\|when\|\s\@<=invariant\|_until\|_loop\|variant\|_as\|alias\)\>\):' .
|
||||
\ '\s\@<=end\>'
|
||||
let b:match_skip = 's:\<eiffel\%(Comment\|String\|Operator\)\>'
|
||||
noremap [% <Nop>
|
||||
noremap ]% <Nop>
|
||||
vnoremap a% <Nop>
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl fo< com< cms<" .
|
||||
\ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
|
||||
|
||||
if !exists("g:no_plugin_maps") && !exists("g:no_eiffel_maps")
|
||||
function! s:DoMotion(pattern, count, flags) abort
|
||||
normal! m'
|
||||
for i in range(a:count)
|
||||
call search(a:pattern, a:flags)
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
let sections = '^\%(note\|indexing\|' .
|
||||
\ '\%(\%(deferred\|expanded\|external\|frozen\)\s\+\)*class\|' .
|
||||
\ 'obsolete\|inherit\|insert\|create\|convert\|feature\|' .
|
||||
\ 'invariant\|end\)\>'
|
||||
|
||||
nnoremap <silent> <buffer> ]] :<C-U>call <SID>DoMotion(sections, v:count1, 'W')<CR>
|
||||
xnoremap <silent> <buffer> ]] :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'W')<CR>
|
||||
nnoremap <silent> <buffer> [[ :<C-U>call <SID>DoMotion(sections, v:count1, 'Wb')<CR>
|
||||
xnoremap <silent> <buffer> [[ :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'Wb')<CR>
|
||||
|
||||
function! s:DoFeatureMotion(count, flags)
|
||||
let view = winsaveview()
|
||||
call cursor(1, 1)
|
||||
let [features_start, _] = searchpos('^feature\>')
|
||||
call search('^\s\+\a') " find the first feature
|
||||
let spaces = indent(line('.'))
|
||||
let [features_end, _] = searchpos('^\%(invariant\|note\|end\)\>')
|
||||
call winrestview(view)
|
||||
call s:DoMotion('\%>' . features_start . 'l\%<' . features_end . 'l^\s*\%' . (spaces + 1) . 'v\zs\a', a:count, a:flags)
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <buffer> ]m :<C-U>call <SID>DoFeatureMotion(v:count1, 'W')<CR>
|
||||
xnoremap <silent> <buffer> ]m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'W')<CR>
|
||||
nnoremap <silent> <buffer> [m :<C-U>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR>
|
||||
xnoremap <silent> <buffer> [m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR>
|
||||
|
||||
let comment_block_start = '^\%(\s\+--.*\n\)\@<!\s\+--'
|
||||
let comment_block_end = '^\s\+--.*\n\%(\s\+--\)\@!'
|
||||
|
||||
nnoremap <silent> <buffer> ]- :<C-U>call <SID>DoMotion(comment_block_start, 1, 'W')<CR>
|
||||
xnoremap <silent> <buffer> ]- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_start, 1, 'W')<CR>
|
||||
nnoremap <silent> <buffer> [- :<C-U>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR>
|
||||
xnoremap <silent> <buffer> [- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR>
|
||||
|
||||
let b:undo_ftplugin = b:undo_ftplugin .
|
||||
\ "| silent! execute 'unmap <buffer> [[' | silent! execute 'unmap <buffer> ]]'" .
|
||||
\ "| silent! execute 'unmap <buffer> [m' | silent! execute 'unmap <buffer> ]m'" .
|
||||
\ "| silent! execute 'unmap <buffer> [-' | silent! execute 'unmap <buffer> ]-'"
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8
|
@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: R
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Sun Feb 23, 2014 04:07PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: R help file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Wed Jul 09, 2014 06:23PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:37PM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: R help file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Wed Jul 09, 2014 06:23PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:37PM
|
||||
" Original work by Alex Zvoleff (adjusted for rmd by Michel Kuhlmann)
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Rnoweb
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Wed Jul 09, 2014 06:23PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:37PM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: reStructuredText documentation format with R code
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Wed Jul 09, 2014 06:23PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
" Original work by Alex Zvoleff
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: R
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Thu Mar 26, 2015 05:36PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Thu Feb 18, 2016 06:32AM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@ -32,7 +33,7 @@ if ! exists("g:r_indent_ess_compatible")
|
||||
let g:r_indent_ess_compatible = 0
|
||||
endif
|
||||
if ! exists("g:r_indent_op_pattern")
|
||||
let g:r_indent_op_pattern = '\(+\|-\|\*\|/\|=\|\~\|%\)$'
|
||||
let g:r_indent_op_pattern = '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$'
|
||||
endif
|
||||
|
||||
function s:RDelete_quotes(line)
|
||||
@ -265,7 +266,7 @@ function GetRIndent()
|
||||
return 0
|
||||
endif
|
||||
|
||||
if cline =~ '^\s*{'
|
||||
if cline =~ '^\s*{' && s:Get_paren_balance(cline, '{', '}') > 0
|
||||
if g:r_indent_ess_compatible && line =~ ')$'
|
||||
let nlnum = lnum
|
||||
let nline = line
|
||||
@ -283,7 +284,7 @@ function GetRIndent()
|
||||
endif
|
||||
|
||||
" line is an incomplete command:
|
||||
if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\<else$' || line =~ '<-$'
|
||||
if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\<else$' || line =~ '<-$' || line =~ '->$'
|
||||
return indent(lnum) + &sw
|
||||
endif
|
||||
|
||||
@ -344,7 +345,7 @@ function GetRIndent()
|
||||
endif
|
||||
|
||||
let post_block = 0
|
||||
if line =~ '}$'
|
||||
if line =~ '}$' && s:Get_paren_balance(line, '{', '}') < 0
|
||||
let lnum = s:Get_matching_brace(lnum, '{', '}', 0)
|
||||
let line = SanitizeRLine(getline(lnum))
|
||||
if lnum > 0 && line =~ '^\s*{'
|
||||
@ -359,14 +360,14 @@ function GetRIndent()
|
||||
let olnum = s:Get_prev_line(lnum)
|
||||
let oline = getline(olnum)
|
||||
if olnum > 0
|
||||
if line =~ g:r_indent_op_pattern
|
||||
if oline =~ g:r_indent_op_pattern
|
||||
if line =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum)
|
||||
else
|
||||
return indent(lnum) + &sw
|
||||
endif
|
||||
else
|
||||
if oline =~ g:r_indent_op_pattern
|
||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum) - &sw
|
||||
endif
|
||||
endif
|
||||
@ -471,7 +472,6 @@ function GetRIndent()
|
||||
endif
|
||||
|
||||
let ind = indent(lnum)
|
||||
let pind = indent(plnum)
|
||||
|
||||
if g:r_indent_align_args == 0 && pb != 0
|
||||
let ind += pb * &sw
|
||||
@ -483,6 +483,12 @@ function GetRIndent()
|
||||
return ind
|
||||
endif
|
||||
|
||||
if plnum > 0
|
||||
let pind = indent(plnum)
|
||||
else
|
||||
let pind = 0
|
||||
endif
|
||||
|
||||
if ind == pind || (ind == (pind + &sw) && pline =~ '{$' && ppost_else == 0)
|
||||
return ind
|
||||
endif
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: R Documentation (Help), *.Rd
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Thu Oct 16, 2014 07:07AM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: Rmd
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Thu Jul 10, 2014 07:11PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: Rnoweb
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Sun Mar 22, 2015 09:28AM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
|
@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: Rrst
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Last Change: Wed Jul 09, 2014 07:33PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
|
@ -3,7 +3,7 @@
|
||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
|
||||
" Original Author: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2016-01-15
|
||||
" Latest Revision: 2016-02-15
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/chrisbra/vim-sh-indent
|
||||
|
||||
@ -12,14 +12,14 @@ if exists("b:did_indent")
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
|
||||
|
||||
setlocal indentexpr=GetShIndent()
|
||||
setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,0=end,),0=;;,0=;&
|
||||
setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix
|
||||
setlocal indentkeys-=:,0#
|
||||
setlocal nosmartindent
|
||||
|
||||
let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
|
||||
|
||||
if exists("*GetShIndent")
|
||||
finish
|
||||
endif
|
||||
@ -67,7 +67,7 @@ function! GetShIndent()
|
||||
if !s:is_case_ended(line)
|
||||
let ind += s:indent_value('case-statements')
|
||||
endif
|
||||
elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{'
|
||||
elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{' || line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{'
|
||||
if line !~ '}\s*\%(#.*\)\=$'
|
||||
let ind += s:indent_value('default')
|
||||
endif
|
||||
|
@ -2,10 +2,9 @@
|
||||
" Language: LaTeX
|
||||
" Maintainer: YiChao Zhou <broken.zhou AT gmail.com>
|
||||
" Created: Sat, 16 Feb 2002 16:50:19 +0100
|
||||
" Last Change: 2012 Mar 18 19:19:50
|
||||
" Version: 0.7
|
||||
" Please email me if you found something we can do. Bug report and
|
||||
" feature request is welcome.
|
||||
" Version: 0.9.2
|
||||
" Please email me if you found something I can do. Comments, bug report and
|
||||
" feature request are welcome.
|
||||
|
||||
" Last Update: {{{
|
||||
" 25th Sep 2002, by LH :
|
||||
@ -41,7 +40,7 @@
|
||||
" (*) Trust user when in "verbatim" and "lstlisting"
|
||||
" 2012/03/11 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Modify "&" so that only indent when current line start with
|
||||
" "&".
|
||||
" "&".
|
||||
" 2012/03/12 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Modify indentkeys.
|
||||
" 2012/03/18 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
@ -49,6 +48,17 @@
|
||||
" 2013/05/02 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
|
||||
" for reporting this.
|
||||
" 2014/06/23 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Remove the feature g:tex_indent_and because it is buggy.
|
||||
" (*) If there is not any obvious indentation hints, we do not
|
||||
" alert our user's current indentation.
|
||||
" (*) g:tex_indent_brace now only works if the open brace is the
|
||||
" last character of that line.
|
||||
" 2014/08/03 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Indent current line if last line has larger indentation
|
||||
" 2014/08/09 by Zhou Yichao <broken.zhou AT gmail.com>
|
||||
" (*) Add missing return value for s:GetEndIndentation(...)
|
||||
"
|
||||
" }}}
|
||||
|
||||
" Document: {{{
|
||||
@ -60,7 +70,17 @@
|
||||
" * g:tex_indent_brace
|
||||
"
|
||||
" If this variable is unset or non-zero, it will use smartindent-like style
|
||||
" for "{}" and "[]"
|
||||
" for "{}" and "[]". Now this only works if the open brace is the last
|
||||
" character of that line.
|
||||
"
|
||||
" % Example 1
|
||||
" \usetikzlibrary{
|
||||
" external
|
||||
" }
|
||||
"
|
||||
" % Example 2
|
||||
" \tikzexternalize[
|
||||
" prefix=tikz]
|
||||
"
|
||||
" * g:tex_indent_items
|
||||
"
|
||||
@ -98,14 +118,6 @@
|
||||
"
|
||||
" A list of environment names. separated with '\|', where no indentation is
|
||||
" required. The default is 'document\|verbatim'.
|
||||
"
|
||||
" * g:tex_indent_and
|
||||
"
|
||||
" If this variable is unset or zero, vim will try to align the line with first
|
||||
" "&". This is pretty useful when you use environment like table or align.
|
||||
" Note that this feature need to search back some line, so vim may become
|
||||
" a little slow.
|
||||
"
|
||||
" }}}
|
||||
|
||||
" Only define the function once
|
||||
@ -126,8 +138,8 @@ endif
|
||||
if !exists("g:tex_indent_brace")
|
||||
let g:tex_indent_brace = 1
|
||||
endif
|
||||
if !exists("g:tex_indent_and")
|
||||
let g:tex_indent_and = 1
|
||||
if !exists("g:tex_max_scan_line")
|
||||
let g:tex_max_scan_line = 60
|
||||
endif
|
||||
if g:tex_indent_items
|
||||
if !exists("g:tex_itemize_env")
|
||||
@ -140,10 +152,6 @@ else
|
||||
let g:tex_items = ''
|
||||
endif
|
||||
|
||||
if !exists("g:tex_indent_paretheses")
|
||||
let g:tex_indent_paretheses = 1
|
||||
endif
|
||||
|
||||
if !exists("g:tex_noindent_env")
|
||||
let g:tex_noindent_env = 'document\|verbatim\|lstlisting'
|
||||
endif "}}}
|
||||
@ -160,6 +168,7 @@ let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '')
|
||||
function! GetTeXIndent() " {{{
|
||||
" Find a non-blank line above the current line.
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
let cnum = v:lnum
|
||||
|
||||
" Comment line is not what we need.
|
||||
while lnum != 0 && getline(lnum) =~ '^\s*%'
|
||||
@ -171,8 +180,8 @@ function! GetTeXIndent() " {{{
|
||||
return 0
|
||||
endif
|
||||
|
||||
let line = substitute(getline(lnum), '%.*', ' ','g') " last line
|
||||
let cline = substitute(getline(v:lnum), '%.*', ' ', 'g') " current line
|
||||
let line = substitute(getline(lnum), '\s*%.*', '','g') " last line
|
||||
let cline = substitute(getline(v:lnum), '\s*%.*', '', 'g') " current line
|
||||
|
||||
" We are in verbatim, so do what our user what.
|
||||
if synIDattr(synID(v:lnum, indent(v:lnum), 1), "name") == "texZone"
|
||||
@ -183,26 +192,12 @@ function! GetTeXIndent() " {{{
|
||||
end
|
||||
endif
|
||||
|
||||
" You want to align with "&"
|
||||
if g:tex_indent_and
|
||||
" Align only when current line start with "&"
|
||||
if line =~ '&.*\\\\' && cline =~ '^\s*&'
|
||||
return indent(v:lnum) + stridx(line, "&") - stridx(cline, "&")
|
||||
endif
|
||||
|
||||
" set line & lnum to the line which doesn't contain "&"
|
||||
while lnum != 0 && (stridx(line, "&") != -1 || line =~ '^\s*%')
|
||||
let lnum = prevnonblank(lnum - 1)
|
||||
let line = getline(lnum)
|
||||
endwhile
|
||||
endif
|
||||
|
||||
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
let ind = indent(lnum)
|
||||
let stay = 1
|
||||
|
||||
" New code for comment: retain the indent of current line
|
||||
if cline =~ '^\s*%'
|
||||
@ -216,77 +211,197 @@ function! GetTeXIndent() " {{{
|
||||
" ZYC modification : \end after \begin won't cause wrong indent anymore
|
||||
if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env
|
||||
let ind = ind + &sw
|
||||
let stay = 0
|
||||
|
||||
if g:tex_indent_items
|
||||
" Add another sw for item-environments
|
||||
if line =~ g:tex_itemize_env
|
||||
let ind = ind + &sw
|
||||
let stay = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if cline =~ '\\end{.*}'
|
||||
let retn = s:GetEndIndentation(v:lnum)
|
||||
if retn != -1
|
||||
return retn
|
||||
endif
|
||||
end
|
||||
" Subtract a 'shiftwidth' when an environment ends
|
||||
if cline =~ '\\end{.*}' && cline !~ g:tex_noindent_env
|
||||
|
||||
if cline =~ '\\end{.*}'
|
||||
\ && cline !~ g:tex_noindent_env
|
||||
\ && cline !~ '\\begin{.*}.*\\end{.*}'
|
||||
if g:tex_indent_items
|
||||
" Remove another sw for item-environments
|
||||
if cline =~ g:tex_itemize_env
|
||||
let ind = ind - &sw
|
||||
let stay = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
let ind = ind - &sw
|
||||
let stay = 0
|
||||
endif
|
||||
|
||||
if g:tex_indent_brace
|
||||
let sum1 = 0
|
||||
for i in range(0, strlen(line)-1)
|
||||
if line[i] == "}" || line[i] == "]" ||
|
||||
\ strpart(line, i, 7) == '\right)'
|
||||
let sum1 = max([0, sum1-1])
|
||||
endif
|
||||
if line[i] == "{" || line[i] == "[" ||
|
||||
\ strpart(line, i, 6) == '\left('
|
||||
let sum1 += 1
|
||||
let char = line[strlen(line)-1]
|
||||
if char == '[' || char == '{'
|
||||
let ind += &sw
|
||||
let stay = 0
|
||||
endif
|
||||
|
||||
let cind = indent(v:lnum)
|
||||
let char = cline[cind]
|
||||
if (char == ']' || char == '}') &&
|
||||
\ s:CheckPairedIsLastCharacter(v:lnum, cind)
|
||||
let ind -= &sw
|
||||
let stay = 0
|
||||
endif
|
||||
|
||||
for i in range(indent(lnum)+1, strlen(line)-1)
|
||||
let char = line[i]
|
||||
if char == ']' || char == '}'
|
||||
if s:CheckPairedIsLastCharacter(lnum, i)
|
||||
let ind -= &sw
|
||||
let stay = 0
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
let sum2 = 0
|
||||
for i in reverse(range(0, strlen(cline)-1))
|
||||
if cline[i] == "{" || cline[i] == "[" ||
|
||||
\ strpart(cline, i, 6) == '\left('
|
||||
let sum2 = max([0, sum2-1])
|
||||
endif
|
||||
if cline[i] == "}" || cline[i] == "]" ||
|
||||
\ strpart(cline, i, 7) == '\right)'
|
||||
let sum2 += 1
|
||||
endif
|
||||
endfor
|
||||
|
||||
let ind += (sum1 - sum2) * &sw
|
||||
endif
|
||||
|
||||
if g:tex_indent_paretheses
|
||||
endif
|
||||
|
||||
" Special treatment for 'item'
|
||||
" ----------------------------
|
||||
|
||||
if g:tex_indent_items
|
||||
|
||||
" '\item' or '\bibitem' itself:
|
||||
if cline =~ g:tex_items
|
||||
let ind = ind - &sw
|
||||
let stay = 0
|
||||
endif
|
||||
|
||||
" lines following to '\item' are intented once again:
|
||||
if line =~ g:tex_items
|
||||
let ind = ind + &sw
|
||||
let stay = 0
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
return ind
|
||||
if stay
|
||||
" If there is no obvious indentation hint, we trust our user.
|
||||
if empty(cline)
|
||||
return ind
|
||||
else
|
||||
return max([indent(v:lnum), s:GetLastBeginIndentation(v:lnum)])
|
||||
endif
|
||||
else
|
||||
return ind
|
||||
endif
|
||||
endfunction "}}}
|
||||
|
||||
function! s:GetLastBeginIndentation(lnum) " {{{
|
||||
let matchend = 1
|
||||
for lnum in range(a:lnum-1, max([a:lnum - g:tex_max_scan_line, 1]), -1)
|
||||
let line = getline(lnum)
|
||||
if line =~ '\\end{.*}'
|
||||
let matchend += 1
|
||||
endif
|
||||
if line =~ '\\begin{.*}'
|
||||
let matchend -= 1
|
||||
endif
|
||||
if matchend == 0
|
||||
if line =~ g:tex_itemize_env
|
||||
return indent(lnum) + 2 * &sw
|
||||
endif
|
||||
if line =~ g:tex_noindent_env
|
||||
return indent(lnum)
|
||||
endif
|
||||
return indent(lnum) + &sw
|
||||
endif
|
||||
endfor
|
||||
return -1
|
||||
endfunction
|
||||
|
||||
function! s:GetEndIndentation(lnum) " {{{
|
||||
if getline(a:lnum) =~ '\\begin{.*}.*\\end{.*}'
|
||||
return -1
|
||||
endif
|
||||
|
||||
let min_indent = 100
|
||||
let matchend = 1
|
||||
for lnum in range(a:lnum-1, max([a:lnum-g:tex_max_scan_line, 1]), -1)
|
||||
let line = getline(lnum)
|
||||
if line =~ '\\end{.*}'
|
||||
let matchend += 1
|
||||
endif
|
||||
if line =~ '\\begin{.*}'
|
||||
let matchend -= 1
|
||||
endif
|
||||
if matchend == 0
|
||||
return indent(lnum)
|
||||
endif
|
||||
if !empty(line)
|
||||
let min_indent = min([min_indent, indent(lnum)])
|
||||
endif
|
||||
endfor
|
||||
return min_indent - &sw
|
||||
endfunction
|
||||
|
||||
" Most of the code is from matchparen.vim
|
||||
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_col = a:col+1
|
||||
|
||||
|
||||
let c = getline(c_lnum)[c_col-1]
|
||||
let plist = split(&matchpairs, '.\zs[:,]')
|
||||
let i = index(plist, c)
|
||||
if i < 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
" Figure out the arguments for searchpairpos().
|
||||
if i % 2 == 0
|
||||
let s_flags = 'nW'
|
||||
let c2 = plist[i + 1]
|
||||
else
|
||||
let s_flags = 'nbW'
|
||||
let c2 = c
|
||||
let c = plist[i - 1]
|
||||
endif
|
||||
if c == '['
|
||||
let c = '\['
|
||||
let c2 = '\]'
|
||||
endif
|
||||
|
||||
" Find the match. When it was just before the cursor move it there for a
|
||||
" moment.
|
||||
let save_cursor = winsaveview()
|
||||
call cursor(c_lnum, c_col)
|
||||
|
||||
" When not in a string or comment ignore matches inside them.
|
||||
" We match "escape" for special items, such as lispEscapeSpecial.
|
||||
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
|
||||
\ '=~? "string\\|character\\|singlequote\\|escape\\|comment"'
|
||||
execute 'if' s_skip '| let s_skip = 0 | endif'
|
||||
|
||||
let stopline = max([0, c_lnum - g:tex_max_scan_line])
|
||||
|
||||
" Limit the search time to 300 msec to avoid a hang on very long lines.
|
||||
" This fails when a timeout is not supported.
|
||||
try
|
||||
let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, 100)
|
||||
catch /E118/
|
||||
endtry
|
||||
|
||||
call winrestview(save_cursor)
|
||||
|
||||
if m_lnum > 0
|
||||
let line = getline(m_lnum)
|
||||
return strlen(line) == m_col
|
||||
endif
|
||||
|
||||
return 0
|
||||
endfunction "}}}
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2015 Jul 22
|
||||
" Last Change: 2016 Mar 19
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
if bufwinnr("option-window") > 0
|
||||
@ -228,6 +228,8 @@ else
|
||||
endif
|
||||
call append("$", "runtimepath\tlist of directories used for runtime files and plugins")
|
||||
call <SID>OptionG("rtp", &rtp)
|
||||
call append("$", "packpath\tlist of directories used for plugin packages")
|
||||
call <SID>OptionG("pp", &pp)
|
||||
call append("$", "helpfile\tname of the main help file")
|
||||
call <SID>OptionG("hf", &hf)
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
" vimball.vim : construct a file containing both paths and files
|
||||
" Author: Charles E. Campbell, Jr.
|
||||
" Date: Jan 17, 2012
|
||||
" Version: 35
|
||||
" Author: Charles E. Campbell
|
||||
" Date: Apr 11, 2016
|
||||
" Version: 37
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
" No warranty, express or implied.
|
||||
@ -14,7 +14,7 @@
|
||||
if &cp || exists("g:loaded_vimball")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimball = "v35"
|
||||
let g:loaded_vimball = "v37"
|
||||
if v:version < 702
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of vimball needs vim 7.2"
|
||||
@ -142,7 +142,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
|
||||
let lastline= line("$") + 1
|
||||
if lastline == 2 && getline("$") == ""
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell')
|
||||
call setline(2,'UseVimball')
|
||||
call setline(3,'finish')
|
||||
let lastline= line("$") + 1
|
||||
@ -179,7 +179,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
" remove the evidence
|
||||
setlocal nomod bh=wipe
|
||||
exe "tabn ".curtabnr
|
||||
exe "tabc ".vbtabnr
|
||||
exe "tabc! ".vbtabnr
|
||||
|
||||
" restore options
|
||||
call vimball#RestoreSettings()
|
||||
@ -280,7 +280,7 @@ fun! vimball#Vimball(really,...)
|
||||
" when AsNeeded/filename is filereadable or was present in VimballRecord
|
||||
if fname =~ '\<plugin/'
|
||||
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~ anfname)
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
|
||||
" call Decho("using anfname<".anfname."> instead of <".fname.">")
|
||||
let fname= anfname
|
||||
endif
|
||||
@ -379,10 +379,10 @@ fun! vimball#Vimball(really,...)
|
||||
call s:RecordInFile(home)
|
||||
|
||||
" restore events, delete tab and buffer
|
||||
exe "tabn ".vbtabnr
|
||||
exe "sil! tabn ".vbtabnr
|
||||
setlocal nomod bh=wipe
|
||||
exe "tabn ".curtabnr
|
||||
exe "tabc ".vbtabnr
|
||||
exe "sil! tabn ".curtabnr
|
||||
exe "sil! tabc! ".vbtabnr
|
||||
call vimball#RestoreSettings()
|
||||
call s:ChgDir(curdir)
|
||||
|
||||
@ -555,7 +555,7 @@ fun! vimball#ShowMesg(level,msg)
|
||||
set noruler noshowcmd
|
||||
redraw!
|
||||
|
||||
if &fo =~ '[ta]'
|
||||
if &fo =~# '[ta]'
|
||||
echomsg "***vimball*** ".a:msg
|
||||
else
|
||||
if a:level == s:WARNING || a:level == s:USAGE
|
||||
@ -715,7 +715,7 @@ fun! vimball#SaveSettings()
|
||||
" call Dfunc("SaveSettings()")
|
||||
let s:makeep = getpos("'a")
|
||||
let s:regakeep= @a
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
let s:acdkeep = &acd
|
||||
endif
|
||||
let s:eikeep = &ei
|
||||
@ -728,7 +728,7 @@ fun! vimball#SaveSettings()
|
||||
let s:vekeep = &ve
|
||||
let s:ffkeep = &l:ff
|
||||
let s:swfkeep = &l:swf
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
|
||||
else
|
||||
setlocal ei=all ve=all nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
|
||||
@ -743,7 +743,7 @@ endfun
|
||||
fun! vimball#RestoreSettings()
|
||||
" call Dfunc("RestoreSettings()")
|
||||
let @a = s:regakeep
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
let &acd = s:acdkeep
|
||||
endif
|
||||
let &l:fen = s:fenkeep
|
||||
@ -760,7 +760,7 @@ fun! vimball#RestoreSettings()
|
||||
" call Decho("restore mark-a: makeep=".string(makeep))
|
||||
call setpos("'a",s:makeep)
|
||||
endif
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
unlet s:acdkeep
|
||||
endif
|
||||
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
|
@ -1,4 +1,4 @@
|
||||
*pi_vimball.txt* For Vim version 7.4. Last change: 2012 Jan 17
|
||||
*vimball.txt* For Vim version 7.4. Last change: 2012 Jan 17
|
||||
|
||||
----------------
|
||||
Vimball Archiver
|
43
runtime/pack/dist/opt/vimball/plugin/vimballPlugin.vim
vendored
Normal file
43
runtime/pack/dist/opt/vimball/plugin/vimballPlugin.vim
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
" vimballPlugin : construct a file containing both paths and files
|
||||
" Author: Charles E. Campbell
|
||||
" Copyright: (c) 2004-2014 by Charles E. Campbell
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
" No warranty, express or implied.
|
||||
" *** *** Use At-Your-Own-Risk! *** ***
|
||||
"
|
||||
" (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who
|
||||
" judge. For in that which you judge another, you condemn yourself. For
|
||||
" you who judge practice the same things.
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Load Once: {{{1
|
||||
if &cp || exists("g:loaded_vimballPlugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimballPlugin = "v37"
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
" Public Interface: {{{1
|
||||
com! -range -complete=file -nargs=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
|
||||
com! -nargs=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>)
|
||||
com! -nargs=0 VimballList call vimball#Vimball(0)
|
||||
com! -nargs=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
|
||||
augroup Vimball
|
||||
au!
|
||||
au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
|
||||
au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
|
||||
au SourceCmd *.vba if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
|
||||
au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
|
||||
au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
|
||||
au SourceCmd *.vmb if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
|
||||
augroup END
|
||||
|
||||
" =====================================================================
|
||||
" Restoration And Modelines: {{{1
|
||||
" vim: fdm=marker
|
||||
let &cpo= s:keepcpo
|
||||
unlet s:keepcpo
|
@ -1,40 +0,0 @@
|
||||
" vimballPlugin : construct a file containing both paths and files
|
||||
" Author: Charles E. Campbell, Jr.
|
||||
" Copyright: (c) 2004-2010 by Charles E. Campbell, Jr.
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
" No warranty, express or implied.
|
||||
" *** *** Use At-Your-Own-Risk! *** ***
|
||||
"
|
||||
" (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who
|
||||
" judge. For in that which you judge another, you condemn yourself. For
|
||||
" you who judge practice the same things.
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Load Once: {{{1
|
||||
if &cp || exists("g:loaded_vimballPlugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimballPlugin = "v35"
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
" Public Interface: {{{1
|
||||
com! -ra -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
|
||||
com! -na=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>)
|
||||
com! -na=0 VimballList call vimball#Vimball(0)
|
||||
com! -na=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
|
||||
au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
|
||||
au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if expand("%")!=expand("<afile>")|close|endif
|
||||
au SourceCmd *.vba if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
|
||||
au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
|
||||
au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if expand("%")!=expand("<afile>")|close|endif
|
||||
au SourceCmd *.vmb if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
|
||||
|
||||
" =====================================================================
|
||||
" Restoration And Modelines: {{{1
|
||||
" vim: fdm=marker
|
||||
let &cpo= s:keepcpo
|
||||
unlet s:keepcpo
|
@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2016 Feb 08
|
||||
" Last Change: 2016 Apr 10
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@ -248,6 +248,10 @@ if !exists("c_no_c99") " ISO C99
|
||||
syn keyword cType _Bool bool _Complex complex _Imaginary imaginary
|
||||
syn keyword cType int8_t int16_t int32_t int64_t
|
||||
syn keyword cType uint8_t uint16_t uint32_t uint64_t
|
||||
if !exists("c_no_bsd")
|
||||
" These are BSD specific.
|
||||
syn keyword cType u_int8_t u_int16_t u_int32_t u_int64_t
|
||||
endif
|
||||
syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
|
||||
syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
|
||||
syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
|
||||
|
@ -1,15 +1,16 @@
|
||||
" Vim syntax file
|
||||
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
|
||||
" Version: 0.96
|
||||
" Last Change: 2015 Nov. 30
|
||||
" Version: 0.97
|
||||
" Last Change: 2016 Feb. 26
|
||||
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
|
||||
" Usage: For instructions, do :help fortran-syntax from Vim
|
||||
" Credits:
|
||||
" Version 0.1 was based on the fortran 77 syntax file by Mario Eusebio and
|
||||
" Preben Guldberg. Useful suggestions and contributions were made by: Andrej Panjkov,
|
||||
" Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
|
||||
" Version 0.1 (April 2000) was based on the fortran 77 syntax file by Mario Eusebio and
|
||||
" Preben Guldberg. Since then, useful suggestions and contributions have been made,
|
||||
" in chronological order, by:
|
||||
" Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
|
||||
" Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman,
|
||||
" Andrew Griffiths, Joe Krahn, Hendrik Merx, and Matt Thompson.
|
||||
" Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, and Jan Hermann.
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@ -407,7 +408,7 @@ if exists("fortran_fold")
|
||||
else
|
||||
syn region fortran77Loop transparent fold keepend start="\<do\s\+\z(\d\+\)" end="^\s*\z1\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
|
||||
syn region fortran90Loop transparent fold keepend extend start="\(\<end\s\+\)\@<!\<do\(\s\+\a\|\s*$\)" skip="^\s*[!#].*$" excludenl end="\<end\s*do\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
|
||||
syn region fortranIfBlock transparent fold keepend extend start="\(\<e\(nd\|lse\)\s\+\)\@<!\<if\s*(.\+)\s*then\>" skip="^\s*[!#].*$" end="\<end\s*if\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
|
||||
syn region fortranIfBlock transparent fold keepend extend start="\(\<e\(nd\|lse\)\s\+\)\@<!\<if\s*(\(.\|&\s*\n\)\+)\(\s\|&\s*\n\)*then\>" skip="^\s*[!#].*$" end="\<end\s*if\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
|
||||
syn region fortranCase transparent fold keepend extend start="\<select\s*case\>" skip="^\s*[!#].*$" end="\<end\s*select\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
|
||||
endif
|
||||
endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: mysql
|
||||
" Maintainer: Kenneth J. Pronovici <pronovic@ieee.org>
|
||||
" Last Change: $LastChangedDate: 2010-04-22 09:48:02 -0500 (Thu, 22 Apr 2010) $
|
||||
" Last Change: $LastChangedDate: 2016-04-11 10:31:04 -0500 (Mon, 11 Apr 2016) $
|
||||
" Filenames: *.mysql
|
||||
" URL: ftp://cedar-solutions.com/software/mysql.vim
|
||||
" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
|
||||
@ -18,7 +18,7 @@ endif
|
||||
syn case ignore
|
||||
|
||||
" General keywords which don't fall into other categories
|
||||
syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg avg_row_length
|
||||
syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg_row_length
|
||||
syn keyword mysqlKeyword both by
|
||||
syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross
|
||||
syn keyword mysqlKeyword current_date current_time current_timestamp
|
||||
@ -30,7 +30,7 @@ syn keyword mysqlKeyword global grant grants group
|
||||
syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second
|
||||
syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam
|
||||
syn keyword mysqlKeyword join
|
||||
syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long
|
||||
syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long
|
||||
syn keyword mysqlKeyword low_priority
|
||||
syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam
|
||||
syn keyword mysqlKeyword natural no
|
||||
@ -64,6 +64,9 @@ syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>"
|
||||
" User variables
|
||||
syn match mysqlVariable "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*"
|
||||
|
||||
" Escaped column names
|
||||
syn match mysqlEscaped "`[^`]*`"
|
||||
|
||||
" Comments (c-style, mysql-style and modified sql-style)
|
||||
syn region mysqlComment start="/\*" end="\*/"
|
||||
syn match mysqlComment "#.*"
|
||||
@ -84,14 +87,14 @@ syn sync ccomment mysqlComment
|
||||
" The second problem is that some of these keywords are included in
|
||||
" function names. For instance, year() is part of the name of the
|
||||
" dayofyear() function, and the dec keyword (no parenthesis) is part of
|
||||
" the name of the decode() function.
|
||||
" the name of the decode() function.
|
||||
|
||||
syn keyword mysqlType tinyint smallint mediumint int integer bigint
|
||||
syn keyword mysqlType date datetime time bit bool
|
||||
syn keyword mysqlType tinyint smallint mediumint int integer bigint
|
||||
syn keyword mysqlType date datetime time bit bool
|
||||
syn keyword mysqlType tinytext mediumtext longtext text
|
||||
syn keyword mysqlType tinyblob mediumblob longblob blob
|
||||
syn region mysqlType start="float\W" end="."me=s-1
|
||||
syn region mysqlType start="float$" end="."me=s-1
|
||||
syn region mysqlType start="float\W" end="."me=s-1
|
||||
syn region mysqlType start="float$" end="."me=s-1
|
||||
syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable
|
||||
syn region mysqlType start="double\W" end="."me=s-1
|
||||
syn region mysqlType start="double$" end="."me=s-1
|
||||
@ -139,12 +142,12 @@ syn region mysqlFlow start="if(" end=")" contains=ALL
|
||||
"
|
||||
" I'm leery of just defining keywords for functions, since according to the MySQL manual:
|
||||
"
|
||||
" Function names do not clash with table or column names. For example, ABS is a
|
||||
" valid column name. The only restriction is that for a function call, no spaces
|
||||
" are allowed between the function name and the `(' that follows it.
|
||||
" Function names do not clash with table or column names. For example, ABS is a
|
||||
" valid column name. The only restriction is that for a function call, no spaces
|
||||
" are allowed between the function name and the `(' that follows it.
|
||||
"
|
||||
" This means that if I want to highlight function names properly, I have to use a
|
||||
" region to define them, not just a keyword. This will probably cause the syntax file
|
||||
" This means that if I want to highlight function names properly, I have to use a
|
||||
" region to define them, not just a keyword. This will probably cause the syntax file
|
||||
" to load more slowly, but at least it will be 'correct'.
|
||||
|
||||
syn region mysqlFunction start="abs(" end=")" contains=ALL
|
||||
@ -154,6 +157,7 @@ syn region mysqlFunction start="ascii(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="asin(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="atan(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="atan2(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="avg(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="benchmark(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="bin(" end=")" contains=ALL
|
||||
syn region mysqlFunction start="bit_and(" end=")" contains=ALL
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Python
|
||||
" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
|
||||
" Last Change: 2015 Sep 15
|
||||
" Last Change: 2016 Feb 20
|
||||
" Credits: Neil Schemenauer <nas@python.ca>
|
||||
" Dmitry Vasiliev
|
||||
"
|
||||
@ -199,6 +199,8 @@ if !exists("python_no_builtin_highlight")
|
||||
syn keyword pythonBuiltin ascii bytes exec
|
||||
" non-essential built-in functions; Python 2 only
|
||||
syn keyword pythonBuiltin apply buffer coerce intern
|
||||
" avoid highlighting attributes as builtins
|
||||
syn match pythonAttribute /\.\h\w*/hs=s+1 contains=ALLBUT,pythonBuiltin transparent
|
||||
endif
|
||||
|
||||
" From the 'Python Library Reference' class hierarchy at the bottom.
|
||||
|
@ -5,17 +5,21 @@
|
||||
" Tom Payne <tom@tompayne.org>
|
||||
" Contributor: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Wed Oct 21, 2015 06:33AM
|
||||
" Last Change: Thu Mar 10, 2016 12:26PM
|
||||
" Filenames: *.R *.r *.Rhistory *.Rt
|
||||
"
|
||||
" NOTE: The highlighting of R functions is defined in
|
||||
" runtime files created by a filetype plugin, if installed.
|
||||
"
|
||||
" CONFIGURATION:
|
||||
" syntax folding can be turned on by
|
||||
" Syntax folding can be turned on by
|
||||
"
|
||||
" let r_syntax_folding = 1
|
||||
"
|
||||
" ROxygen highlighting can be turned off by
|
||||
"
|
||||
" let r_hl_roxygen = 0
|
||||
"
|
||||
" Some lines of code were borrowed from Zhuojun Chen.
|
||||
|
||||
if exists("b:current_syntax")
|
||||
@ -24,9 +28,12 @@ endif
|
||||
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
|
||||
if exists("g:r_syntax_folding")
|
||||
if exists("g:r_syntax_folding") && g:r_syntax_folding
|
||||
setlocal foldmethod=syntax
|
||||
endif
|
||||
if !exists("g:r_hl_roxygen")
|
||||
let g:r_hl_roxygen = 1
|
||||
endif
|
||||
|
||||
syn case match
|
||||
|
||||
@ -35,18 +42,20 @@ syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):"
|
||||
syn match rComment contains=@Spell,rCommentTodo,rOBlock "#.*"
|
||||
|
||||
" Roxygen
|
||||
syn region rOBlock start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\)\@!" contains=rOTitle,rOKeyword,rOExamples,@Spell keepend
|
||||
syn region rOTitle start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\s*$\)\@=" contained contains=rOCommentKey
|
||||
syn match rOCommentKey "#\{1,2}'" containedin=rOTitle contained
|
||||
if g:r_hl_roxygen
|
||||
syn region rOBlock start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\)\@!" contains=rOTitle,rOKeyword,rOExamples,@Spell keepend
|
||||
syn region rOTitle start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\s*$\)\@=" contained contains=rOCommentKey
|
||||
syn match rOCommentKey "#\{1,2}'" containedin=rOTitle contained
|
||||
|
||||
syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOKeyword
|
||||
syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOKeyword
|
||||
|
||||
syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|example\|include\|docType\)"
|
||||
syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)"
|
||||
syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)"
|
||||
syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\|useDynLib\)"
|
||||
syn match rOKeyword contained "@\(method\|noRd\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)"
|
||||
syn match rOKeyword contained "@\(family\|template\|templateVar\|description\|details\|inheritParams\|field\)"
|
||||
syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|example\|include\|docType\)"
|
||||
syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)"
|
||||
syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)"
|
||||
syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\|useDynLib\)"
|
||||
syn match rOKeyword contained "@\(method\|noRd\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)"
|
||||
syn match rOKeyword contained "@\(family\|template\|templateVar\|description\|details\|inheritParams\|field\)"
|
||||
endif
|
||||
|
||||
|
||||
if &filetype == "rhelp"
|
||||
@ -159,12 +168,13 @@ syn match rBraceError "[)}]" contained
|
||||
syn match rCurlyError "[)\]]" contained
|
||||
syn match rParenError "[\]}]" contained
|
||||
|
||||
" Source list of R functions produced by a filetype plugin (if installed)
|
||||
if has("nvim")
|
||||
" Nvim-R
|
||||
if !exists("g:R_hi_fun")
|
||||
let g:R_hi_fun = 1
|
||||
endif
|
||||
if g:R_hi_fun
|
||||
" Nvim-R:
|
||||
runtime R/functions.vim
|
||||
else
|
||||
" Vim-R-plugin
|
||||
" Vim-R-plugin:
|
||||
runtime r-plugin/functions.vim
|
||||
endif
|
||||
|
||||
@ -235,11 +245,13 @@ hi def link rStatement Statement
|
||||
hi def link rString String
|
||||
hi def link rStrError Error
|
||||
hi def link rType Type
|
||||
hi def link rOKeyword Title
|
||||
hi def link rOBlock Comment
|
||||
hi def link rOTitle Title
|
||||
hi def link rOCommentKey Comment
|
||||
hi def link rOExamples SpecialComment
|
||||
if g:r_hl_roxygen
|
||||
hi def link rOKeyword Title
|
||||
hi def link rOBlock Comment
|
||||
hi def link rOTitle Title
|
||||
hi def link rOCommentKey Comment
|
||||
hi def link rOExamples SpecialComment
|
||||
endif
|
||||
|
||||
|
||||
let b:current_syntax="r"
|
||||
|
@ -2,25 +2,21 @@
|
||||
" Language: R Help File
|
||||
" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
|
||||
" Former Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Last Change: Wed Jul 09, 2014 10:28PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Feb 06, 2016 11:34AM
|
||||
" Remarks: - Includes R syntax highlighting in the appropriate
|
||||
" sections if an r.vim file is in the same directory or in the
|
||||
" default debian location.
|
||||
" - There is no Latex markup in equations
|
||||
" - Thanks to Will Gray for finding and fixing a bug
|
||||
" - No support for \if, \ifelse and \out as I don't understand
|
||||
" them and have no examples at hand (help welcome).
|
||||
" - No support for \var tag within quoted string (dito)
|
||||
" - No support for \var tag within quoted string
|
||||
|
||||
" Version Clears: {{{1
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x and 7.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
scriptencoding utf-8
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
|
||||
syn case match
|
||||
@ -29,9 +25,11 @@ syn case match
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" contains=rhelpLink
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\CRANpkg{" end="}" contains=rhelpLink
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}"
|
||||
|
||||
|
||||
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||
syn include @R syntax/r.vim
|
||||
|
||||
@ -69,76 +67,115 @@ syn match rhelpDelimiter "\\cr"
|
||||
syn match rhelpDelimiter "\\tab "
|
||||
|
||||
" Keywords {{{1
|
||||
syn match rhelpKeyword "\\R"
|
||||
syn match rhelpKeyword "\\ldots"
|
||||
syn match rhelpKeyword "\\R\>"
|
||||
syn match rhelpKeyword "\\ldots\>"
|
||||
syn match rhelpKeyword "\\sspace\>"
|
||||
syn match rhelpKeyword "--"
|
||||
syn match rhelpKeyword "---"
|
||||
syn match rhelpKeyword "<"
|
||||
syn match rhelpKeyword ">"
|
||||
syn match rhelpKeyword "\\ge"
|
||||
syn match rhelpKeyword "\\le"
|
||||
syn match rhelpKeyword "\\alpha"
|
||||
syn match rhelpKeyword "\\beta"
|
||||
syn match rhelpKeyword "\\gamma"
|
||||
syn match rhelpKeyword "\\delta"
|
||||
syn match rhelpKeyword "\\epsilon"
|
||||
syn match rhelpKeyword "\\zeta"
|
||||
syn match rhelpKeyword "\\eta"
|
||||
syn match rhelpKeyword "\\theta"
|
||||
syn match rhelpKeyword "\\iota"
|
||||
syn match rhelpKeyword "\\kappa"
|
||||
syn match rhelpKeyword "\\lambda"
|
||||
syn match rhelpKeyword "\\mu"
|
||||
syn match rhelpKeyword "\\nu"
|
||||
syn match rhelpKeyword "\\xi"
|
||||
syn match rhelpKeyword "\\omicron"
|
||||
syn match rhelpKeyword "\\pi"
|
||||
syn match rhelpKeyword "\\rho"
|
||||
syn match rhelpKeyword "\\sigma"
|
||||
syn match rhelpKeyword "\\tau"
|
||||
syn match rhelpKeyword "\\upsilon"
|
||||
syn match rhelpKeyword "\\phi"
|
||||
syn match rhelpKeyword "\\chi"
|
||||
syn match rhelpKeyword "\\psi"
|
||||
syn match rhelpKeyword "\\omega"
|
||||
syn match rhelpKeyword "\\Alpha"
|
||||
syn match rhelpKeyword "\\Beta"
|
||||
syn match rhelpKeyword "\\Gamma"
|
||||
syn match rhelpKeyword "\\Delta"
|
||||
syn match rhelpKeyword "\\Epsilon"
|
||||
syn match rhelpKeyword "\\Zeta"
|
||||
syn match rhelpKeyword "\\Eta"
|
||||
syn match rhelpKeyword "\\Theta"
|
||||
syn match rhelpKeyword "\\Iota"
|
||||
syn match rhelpKeyword "\\Kappa"
|
||||
syn match rhelpKeyword "\\Lambda"
|
||||
syn match rhelpKeyword "\\Mu"
|
||||
syn match rhelpKeyword "\\Nu"
|
||||
syn match rhelpKeyword "\\Xi"
|
||||
syn match rhelpKeyword "\\Omicron"
|
||||
syn match rhelpKeyword "\\Pi"
|
||||
syn match rhelpKeyword "\\Rho"
|
||||
syn match rhelpKeyword "\\Sigma"
|
||||
syn match rhelpKeyword "\\Tau"
|
||||
syn match rhelpKeyword "\\Upsilon"
|
||||
syn match rhelpKeyword "\\Phi"
|
||||
syn match rhelpKeyword "\\Chi"
|
||||
syn match rhelpKeyword "\\Psi"
|
||||
syn match rhelpKeyword "\\Omega"
|
||||
|
||||
" Condition Keywords {{{2
|
||||
syn match rhelpKeyword "\\if\>"
|
||||
syn match rhelpKeyword "\\ifelse\>"
|
||||
syn match rhelpKeyword "\\out\>"
|
||||
" Examples of usage:
|
||||
" \ifelse{latex}{\eqn{p = 5 + 6 - 7 \times 8}}{\eqn{p = 5 + 6 - 7 * 8}}
|
||||
" \ifelse{latex}{\out{$\alpha$}}{\ifelse{html}{\out{α}}{alpha}}
|
||||
|
||||
" Keywords and operators valid only if in math mode {{{2
|
||||
syn match rhelpMathOp "<" contained
|
||||
syn match rhelpMathOp ">" contained
|
||||
syn match rhelpMathOp "+" contained
|
||||
syn match rhelpMathOp "-" contained
|
||||
syn match rhelpMathOp "=" contained
|
||||
|
||||
" Conceal function based on syntax/tex.vim {{{2
|
||||
if exists("g:tex_conceal")
|
||||
let s:tex_conceal = g:tex_conceal
|
||||
else
|
||||
let s:tex_conceal = 'gm'
|
||||
endif
|
||||
function s:HideSymbol(pat, cchar, hide)
|
||||
if a:hide
|
||||
exe "syn match rhelpMathSymb '" . a:pat . "' contained conceal cchar=" . a:cchar
|
||||
else
|
||||
exe "syn match rhelpMathSymb '" . a:pat . "' contained"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Math symbols {{{2
|
||||
if s:tex_conceal =~ 'm'
|
||||
let s:hd = 1
|
||||
else
|
||||
let s:hd = 0
|
||||
endif
|
||||
call s:HideSymbol('\\infty\>', '∞', s:hd)
|
||||
call s:HideSymbol('\\ge\>', '≥', s:hd)
|
||||
call s:HideSymbol('\\le\>', '≤', s:hd)
|
||||
call s:HideSymbol('\\prod\>', '∏', s:hd)
|
||||
call s:HideSymbol('\\sum\>', '∑', s:hd)
|
||||
syn match rhelpMathSymb "\\sqrt\>" contained
|
||||
|
||||
" Greek letters {{{2
|
||||
if s:tex_conceal =~ 'g'
|
||||
let s:hd = 1
|
||||
else
|
||||
let s:hd = 0
|
||||
endif
|
||||
call s:HideSymbol('\\alpha\>', 'α', s:hd)
|
||||
call s:HideSymbol('\\beta\>', 'β', s:hd)
|
||||
call s:HideSymbol('\\gamma\>', 'γ', s:hd)
|
||||
call s:HideSymbol('\\delta\>', 'δ', s:hd)
|
||||
call s:HideSymbol('\\epsilon\>', 'ϵ', s:hd)
|
||||
call s:HideSymbol('\\zeta\>', 'ζ', s:hd)
|
||||
call s:HideSymbol('\\eta\>', 'η', s:hd)
|
||||
call s:HideSymbol('\\theta\>', 'θ', s:hd)
|
||||
call s:HideSymbol('\\iota\>', 'ι', s:hd)
|
||||
call s:HideSymbol('\\kappa\>', 'κ', s:hd)
|
||||
call s:HideSymbol('\\lambda\>', 'λ', s:hd)
|
||||
call s:HideSymbol('\\mu\>', 'μ', s:hd)
|
||||
call s:HideSymbol('\\nu\>', 'ν', s:hd)
|
||||
call s:HideSymbol('\\xi\>', 'ξ', s:hd)
|
||||
call s:HideSymbol('\\pi\>', 'π', s:hd)
|
||||
call s:HideSymbol('\\rho\>', 'ρ', s:hd)
|
||||
call s:HideSymbol('\\sigma\>', 'σ', s:hd)
|
||||
call s:HideSymbol('\\tau\>', 'τ', s:hd)
|
||||
call s:HideSymbol('\\upsilon\>', 'υ', s:hd)
|
||||
call s:HideSymbol('\\phi\>', 'ϕ', s:hd)
|
||||
call s:HideSymbol('\\chi\>', 'χ', s:hd)
|
||||
call s:HideSymbol('\\psi\>', 'ψ', s:hd)
|
||||
call s:HideSymbol('\\omega\>', 'ω', s:hd)
|
||||
call s:HideSymbol('\\Gamma\>', 'Γ', s:hd)
|
||||
call s:HideSymbol('\\Delta\>', 'Δ', s:hd)
|
||||
call s:HideSymbol('\\Theta\>', 'Θ', s:hd)
|
||||
call s:HideSymbol('\\Lambda\>', 'Λ', s:hd)
|
||||
call s:HideSymbol('\\Xi\>', 'Ξ', s:hd)
|
||||
call s:HideSymbol('\\Pi\>', 'Π', s:hd)
|
||||
call s:HideSymbol('\\Sigma\>', 'Σ', s:hd)
|
||||
call s:HideSymbol('\\Upsilon\>', 'Υ', s:hd)
|
||||
call s:HideSymbol('\\Phi\>', 'Φ', s:hd)
|
||||
call s:HideSymbol('\\Psi\>', 'Ψ', s:hd)
|
||||
call s:HideSymbol('\\Omega\>', 'Ω', s:hd)
|
||||
delfunction s:HideSymbol
|
||||
" Note: The letters 'omicron', 'Alpha', 'Beta', 'Epsilon', 'Zeta', 'Eta',
|
||||
" 'Iota', 'Kappa', 'Mu', 'Nu', 'Omicron', 'Rho', 'Tau' and 'Chi' are listed
|
||||
" at src/library/tools/R/Rd2txt.R because they are valid in HTML, although
|
||||
" they do not make valid LaTeX code (e.g. Α versus \Alpha).
|
||||
|
||||
" Links {{{1
|
||||
syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\link{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\link\[.\{-}\]{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\linkS4class{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\url{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\href{" end="}" contained keepend extend
|
||||
syn region rhelpLink matchgroup=rhelpType start="\\figure{" end="}" contained keepend extend
|
||||
|
||||
" Verbatim like {{{1
|
||||
if v:version > 703
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\verb{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
else
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@<!{.\{-}\\\@<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\verb{" skip='\\\@<!{.\{-}\\\@<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
endif
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
syn region rhelpVerbatim matchgroup=rhelpType start="\\verb{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
|
||||
|
||||
" Equation {{{1
|
||||
syn region rhelpEquation matchgroup=rhelpType start="\\eqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
|
||||
syn region rhelpEquation matchgroup=rhelpType start="\\deqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
|
||||
|
||||
" Type Styles {{{1
|
||||
syn match rhelpType "\\emph\>"
|
||||
@ -148,12 +185,9 @@ syn match rhelpType "\\sQuote\>"
|
||||
syn match rhelpType "\\dQuote\>"
|
||||
syn match rhelpType "\\preformatted\>"
|
||||
syn match rhelpType "\\kbd\>"
|
||||
syn match rhelpType "\\eqn\>"
|
||||
syn match rhelpType "\\deqn\>"
|
||||
syn match rhelpType "\\file\>"
|
||||
syn match rhelpType "\\email\>"
|
||||
syn match rhelpType "\\url\>"
|
||||
syn match rhelpType "\\href\>"
|
||||
syn match rhelpType "\\enc\>"
|
||||
syn match rhelpType "\\var\>"
|
||||
syn match rhelpType "\\env\>"
|
||||
syn match rhelpType "\\option\>"
|
||||
@ -163,6 +197,7 @@ syn match rhelpType "\\renewcommand\>"
|
||||
syn match rhelpType "\\dfn\>"
|
||||
syn match rhelpType "\\cite\>"
|
||||
syn match rhelpType "\\acronym\>"
|
||||
syn match rhelpType "\\doi\>"
|
||||
|
||||
" rhelp sections {{{1
|
||||
syn match rhelpSection "\\encoding\>"
|
||||
@ -202,9 +237,9 @@ syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}"
|
||||
syn match rhelpComment /%.*$/
|
||||
|
||||
" Error {{{1
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
|
||||
syn match rhelpError /[)\]}]/
|
||||
syn match rhelpBraceError /[)}]/ contained
|
||||
syn match rhelpCurlyError /[)\]]/ contained
|
||||
@ -213,36 +248,27 @@ syn match rhelpParenError /[\]}]/ contained
|
||||
syntax sync match rhelpSyncRcode grouphere rhelpRcode "\\examples{"
|
||||
|
||||
" Define the default highlighting {{{1
|
||||
" 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_rhelp_syntax_inits")
|
||||
if version < 508
|
||||
let did_rhelp_syntax_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
HiLink rhelpVerbatim String
|
||||
HiLink rhelpDelimiter Delimiter
|
||||
HiLink rhelpIdentifier Identifier
|
||||
HiLink rhelpString String
|
||||
HiLink rhelpCodeSpecial Special
|
||||
HiLink rhelpKeyword Keyword
|
||||
HiLink rhelpDots Keyword
|
||||
HiLink rhelpLink Underlined
|
||||
HiLink rhelpType Type
|
||||
HiLink rhelpSection PreCondit
|
||||
HiLink rhelpError Error
|
||||
HiLink rhelpBraceError Error
|
||||
HiLink rhelpCurlyError Error
|
||||
HiLink rhelpParenError Error
|
||||
HiLink rhelpPreProc PreProc
|
||||
HiLink rhelpDelimiter Delimiter
|
||||
HiLink rhelpComment Comment
|
||||
HiLink rhelpRComment Comment
|
||||
HiLink rhelpSpecialChar SpecialChar
|
||||
delcommand HiLink
|
||||
endif
|
||||
hi def link rhelpVerbatim String
|
||||
hi def link rhelpDelimiter Delimiter
|
||||
hi def link rhelpIdentifier Identifier
|
||||
hi def link rhelpString String
|
||||
hi def link rhelpCodeSpecial Special
|
||||
hi def link rhelpKeyword Keyword
|
||||
hi def link rhelpDots Keyword
|
||||
hi def link rhelpLink Underlined
|
||||
hi def link rhelpType Type
|
||||
hi def link rhelpSection PreCondit
|
||||
hi def link rhelpError Error
|
||||
hi def link rhelpBraceError Error
|
||||
hi def link rhelpCurlyError Error
|
||||
hi def link rhelpParenError Error
|
||||
hi def link rhelpPreProc PreProc
|
||||
hi def link rhelpDelimiter Delimiter
|
||||
hi def link rhelpComment Comment
|
||||
hi def link rhelpRComment Comment
|
||||
hi def link rhelpSpecialChar SpecialChar
|
||||
hi def link rhelpMathSymb Special
|
||||
hi def link rhelpMathOp Operator
|
||||
|
||||
let b:current_syntax = "rhelp"
|
||||
|
||||
|
@ -1,15 +1,13 @@
|
||||
" markdown Text with R statements
|
||||
" Language: markdown with R code chunks
|
||||
" Last Change: Wed Jul 09, 2014 10:29PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Feb 06, 2016 06:45AM
|
||||
"
|
||||
" CONFIGURATION:
|
||||
" To highlight chunk headers as R code, put in your vimrc:
|
||||
" let rmd_syn_hl_chunk = 1
|
||||
|
||||
" for portability
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
@ -58,6 +56,8 @@ if rmdIsPandoc == 0
|
||||
if exists("b:current_syntax")
|
||||
unlet b:current_syntax
|
||||
endif
|
||||
" Extend cluster
|
||||
syn cluster texMathZoneGroup add=rmdrInline
|
||||
" Inline
|
||||
syntax match rmdLaTeXInlDelim "\$"
|
||||
syntax match rmdLaTeXInlDelim "\\\$"
|
||||
|
@ -1,20 +1,14 @@
|
||||
" Vim syntax file
|
||||
" Language: R noweb Files
|
||||
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Last Change: 2009 May 05
|
||||
" Version: 0.9
|
||||
" SVN: $Id: rnoweb.vim 84 2009-05-03 19:52:47Z ranke $
|
||||
" Last Change: Sat Feb 06, 2016 06:47AM
|
||||
" Version: 0.9.1
|
||||
" Remarks: - This file is inspired by the proposal of
|
||||
" Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
|
||||
" http://www.ime.usp.br/~feferraz/en/sweavevim.html
|
||||
" Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
|
||||
" http://www.ime.usp.br/~feferraz/en/sweavevim.html
|
||||
"
|
||||
|
||||
" Version Clears: {{{1
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x and 7.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
@ -26,21 +20,22 @@ unlet b:current_syntax
|
||||
|
||||
syn cluster texMatchGroup add=@rnoweb
|
||||
syn cluster texMathMatchGroup add=rnowebSexpr
|
||||
syn cluster texMathZoneGroup add=rnowebSexpr
|
||||
syn cluster texEnvGroup add=@rnoweb
|
||||
syn cluster texFoldGroup add=@rnoweb
|
||||
syn cluster texDocGroup add=@rnoweb
|
||||
syn cluster texPartGroup add=@rnoweb
|
||||
syn cluster texChapterGroup add=@rnoweb
|
||||
syn cluster texSectionGroup add=@rnoweb
|
||||
syn cluster texSubSectionGroup add=@rnoweb
|
||||
syn cluster texSubSubSectionGroup add=@rnoweb
|
||||
syn cluster texParaGroup add=@rnoweb
|
||||
syn cluster texDocGroup add=@rnoweb
|
||||
syn cluster texPartGroup add=@rnoweb
|
||||
syn cluster texChapterGroup add=@rnoweb
|
||||
syn cluster texSectionGroup add=@rnoweb
|
||||
syn cluster texSubSectionGroup add=@rnoweb
|
||||
syn cluster texSubSubSectionGroup add=@rnoweb
|
||||
syn cluster texParaGroup add=@rnoweb
|
||||
|
||||
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||
syn include @rnowebR syntax/r.vim
|
||||
syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
|
||||
syn match rnowebChunkReference "^<<.*>>$" contained
|
||||
syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR
|
||||
syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained
|
||||
|
||||
" Sweave options command {{{1
|
||||
syn region rnowebSweaveopts matchgroup=Delimiter start="\\SweaveOpts{" matchgroup=Delimiter end="}"
|
||||
|
@ -1,16 +1,14 @@
|
||||
" reStructured Text with R statements
|
||||
" Language: reST with R code chunks
|
||||
" Maintainer: Alex Zvoleff, azvoleff@mail.sdsu.edu
|
||||
" Last Change: Wed Jul 09, 2014 10:29PM
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Feb 06, 2016 06:45AM
|
||||
"
|
||||
" CONFIGURATION:
|
||||
" To highlight chunk headers as R code, put in your vimrc:
|
||||
" let rrst_syn_hl_chunk = 1
|
||||
|
||||
" for portability
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
" Language: shell (sh) Korn shell (ksh) bash (sh)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
|
||||
" Last Change: Feb 16, 2016
|
||||
" Version: 144
|
||||
" Last Change: Apr 11, 2016
|
||||
" Version: 147
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
|
||||
" For options and settings, please use: :help ft-sh-syntax
|
||||
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
|
||||
@ -185,7 +185,7 @@ endif
|
||||
|
||||
" Options: {{{1
|
||||
" ====================
|
||||
syn match shOption "\s\zs[-+][-_a-zA-Z0-9#]\+"
|
||||
syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+"
|
||||
syn match shOption "\s\zs--[^ \t$`'"|);]\+"
|
||||
|
||||
" File Redirection Highlighted As Operators: {{{1
|
||||
@ -317,7 +317,8 @@ syn match shColon '^\s*\zs:'
|
||||
|
||||
" String And Character Constants: {{{1
|
||||
"================================
|
||||
syn match shNumber "-\=\<\d\+\>#\="
|
||||
syn match shNumber "\<\d\+\>#\="
|
||||
syn match shNumber "-\=\.\=\d\+\>#\="
|
||||
syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained
|
||||
if exists("b:is_bash")
|
||||
syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
|
||||
@ -538,13 +539,20 @@ endif
|
||||
|
||||
" Synchronization: {{{1
|
||||
" ================
|
||||
if !exists("sh_minlines")
|
||||
let sh_minlines = 200
|
||||
if !exists("g:sh_minlines")
|
||||
let s:sh_minlines = 200
|
||||
else
|
||||
let s:sh_minlines= g:sh_minlines
|
||||
endif
|
||||
if !exists("sh_maxlines")
|
||||
let sh_maxlines = 2 * sh_minlines
|
||||
if !exists("g:sh_maxlines")
|
||||
let s:sh_maxlines = 2*s:sh_minlines
|
||||
if s:sh_maxlines < 25
|
||||
let s:sh_maxlines= 25
|
||||
endif
|
||||
else
|
||||
let s:sh_maxlines= g:sh_maxlines
|
||||
endif
|
||||
exec "syn sync minlines=" . sh_minlines . " maxlines=" . sh_maxlines
|
||||
exec "syn sync minlines=" . s:sh_minlines . " maxlines=" . s:sh_maxlines
|
||||
syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>"
|
||||
syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>"
|
||||
syn sync match shDoSync grouphere shDo "\<do\>"
|
||||
|
@ -4,8 +4,8 @@
|
||||
" 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>
|
||||
" Last Change: 2016 Jan 15
|
||||
" SSH Version: 7.1
|
||||
" Last Change: 2016 Mar 1
|
||||
" SSH Version: 7.2
|
||||
"
|
||||
|
||||
" Setup
|
||||
@ -40,26 +40,57 @@ syn keyword sshconfigYesNo yes no ask
|
||||
syn keyword sshconfigYesNo any auto
|
||||
syn keyword sshconfigYesNo force autoask none
|
||||
|
||||
syn keyword sshconfigCipher 3des blowfish
|
||||
syn keyword sshconfigCiphers aes128-cbc 3des-cbc blowfish blowfish-cbc cast128-cbc
|
||||
syn keyword sshconfigCiphers aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr
|
||||
syn keyword sshconfigCiphers arcfour arcfour128 arcfour256 cast128-cbc
|
||||
syn keyword sshconfigCipher 3des blowfish
|
||||
|
||||
syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
|
||||
syn keyword sshconfigMAC hmac-md5-96
|
||||
syn keyword sshconfigMAC hmac-sha2-256 hmac-sha2-256-96 hmac-sha2-512
|
||||
syn keyword sshconfigMAC hmac-sha2-512-96
|
||||
syn keyword sshconfigCiphers 3des-cbc
|
||||
syn keyword sshconfigCiphers blowfish-cbc
|
||||
syn keyword sshconfigCiphers cast128-cbc
|
||||
syn keyword sshconfigCiphers arcfour
|
||||
syn keyword sshconfigCiphers arcfour128
|
||||
syn keyword sshconfigCiphers arcfour256
|
||||
syn keyword sshconfigCiphers aes128-cbc
|
||||
syn keyword sshconfigCiphers aes192-cbc
|
||||
syn keyword sshconfigCiphers aes256-cbc
|
||||
syn match sshconfigCiphers "\<rijndael-cbc@lysator\.liu.se\>"
|
||||
syn keyword sshconfigCiphers aes128-ctr
|
||||
syn keyword sshconfigCiphers aes192-ctr
|
||||
syn keyword sshconfigCiphers aes256-ctr
|
||||
syn match sshconfigCiphers "\<aes128-gcm@openssh\.com\>"
|
||||
syn match sshconfigCiphers "\<aes256-gcm@openssh\.com\>"
|
||||
syn match sshconfigCiphers "\<chacha20-poly1305@openssh\.com\>"
|
||||
|
||||
syn keyword sshconfigMAC hmac-sha1
|
||||
syn keyword sshconfigMAC mac-sha1-96
|
||||
syn keyword sshconfigMAC mac-sha2-256
|
||||
syn keyword sshconfigMAC mac-sha2-512
|
||||
syn keyword sshconfigMAC mac-md5
|
||||
syn keyword sshconfigMAC mac-md5-96
|
||||
syn keyword sshconfigMAC mac-ripemd160
|
||||
syn match sshconfigMAC "\<hmac-ripemd160@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<umac-64@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<umac-128@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-sha1-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-sha1-96-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-sha2-256-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-sha2-512-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-md5-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-md5-96-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<hmac-ripemd160-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<umac-64-etm@openssh\.com\>"
|
||||
syn match sshconfigMAC "\<umac-128-etm@openssh\.com\>"
|
||||
|
||||
syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
|
||||
syn match sshconfigHostKeyAlg "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ssh-rsa-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ssh-dss-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ssh-rsa-cert-v00@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlg "\<ssh-dss-cert-v00@openssh\.com\>"
|
||||
syn keyword sshconfigHostKeyAlg ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521
|
||||
syn keyword sshconfigHostKeyAlgo ssh-ed25519
|
||||
syn match sshconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
|
||||
syn keyword sshconfigHostKeyAlgo ssh-rsa
|
||||
syn keyword sshconfigHostKeyAlgo ssh-dss
|
||||
syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp256
|
||||
syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp384
|
||||
syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp521
|
||||
syn match sshconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
|
||||
syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
|
||||
|
||||
syn keyword sshconfigPreferredAuth hostbased publickey password gssapi-with-mic
|
||||
syn keyword sshconfigPreferredAuth keyboard-interactive
|
||||
@ -78,11 +109,14 @@ syn match sshconfigIPQoS "cs[0-7]"
|
||||
syn keyword sshconfigIPQoS ef lowdelay throughput reliability
|
||||
syn keyword sshconfigKbdInteractive bsdauth pam skey
|
||||
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1
|
||||
syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp256
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp384
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp521
|
||||
syn match sshconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
|
||||
|
||||
syn keyword sshconfigTunnel point-to-point ethernet
|
||||
|
||||
@ -111,6 +145,7 @@ syn keyword sshconfigKeyword CanonicalDomains
|
||||
syn keyword sshconfigKeyword CanonicalizeFallbackLocal
|
||||
syn keyword sshconfigKeyword CanonicalizeHostname
|
||||
syn keyword sshconfigKeyword CanonicalizeMaxDots
|
||||
syn keyword sshconfigKeyword CertificateFile
|
||||
syn keyword sshconfigKeyword ChallengeResponseAuthentication
|
||||
syn keyword sshconfigKeyword CheckHostIP
|
||||
syn keyword sshconfigKeyword Cipher
|
||||
@ -212,7 +247,7 @@ if version >= 508 || !exists("did_sshconfig_syntax_inits")
|
||||
HiLink sshconfigCipher sshconfigEnum
|
||||
HiLink sshconfigCiphers sshconfigEnum
|
||||
HiLink sshconfigMAC sshconfigEnum
|
||||
HiLink sshconfigHostKeyAlg sshconfigEnum
|
||||
HiLink sshconfigHostKeyAlgo sshconfigEnum
|
||||
HiLink sshconfigLogLevel sshconfigEnum
|
||||
HiLink sshconfigSysLogFacility sshconfigEnum
|
||||
HiLink sshconfigAddressFamily sshconfigEnum
|
||||
|
@ -6,8 +6,8 @@
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Originally: 2009-07-09
|
||||
" Last Change: 2016 Jan 12
|
||||
" SSH Version: 7.1
|
||||
" Last Change: 2016 Mar 1
|
||||
" SSH Version: 7.2
|
||||
"
|
||||
|
||||
" Setup
|
||||
@ -47,15 +47,55 @@ syn keyword sshdconfigTcpForwarding local remote
|
||||
|
||||
syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
|
||||
|
||||
syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
|
||||
syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr
|
||||
syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
|
||||
syn keyword sshdconfigCiphers 3des-cbc
|
||||
syn keyword sshdconfigCiphers blowfish-cbc
|
||||
syn keyword sshdconfigCiphers cast128-cbc
|
||||
syn keyword sshdconfigCiphers arcfour
|
||||
syn keyword sshdconfigCiphers arcfour128
|
||||
syn keyword sshdconfigCiphers arcfour256
|
||||
syn keyword sshdconfigCiphers aes128-cbc
|
||||
syn keyword sshdconfigCiphers aes192-cbc
|
||||
syn keyword sshdconfigCiphers aes256-cbc
|
||||
syn match sshdconfigCiphers "\<rijndael-cbc@lysator\.liu.se\>"
|
||||
syn keyword sshdconfigCiphers aes128-ctr
|
||||
syn keyword sshdconfigCiphers aes192-ctr
|
||||
syn keyword sshdconfigCiphers aes256-ctr
|
||||
syn match sshdconfigCiphers "\<aes128-gcm@openssh\.com\>"
|
||||
syn match sshdconfigCiphers "\<aes256-gcm@openssh\.com\>"
|
||||
syn match sshdconfigCiphers "\<chacha20-poly1305@openssh\.com\>"
|
||||
|
||||
syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
|
||||
syn keyword sshdconfigMAC hmac-md5-96
|
||||
syn keyword sshdconfigMAC hmac-sha2-256 hmac-sha256-96 hmac-sha2-512
|
||||
syn keyword sshdconfigMAC hmac-sha2-512-96
|
||||
syn keyword sshdconfigMAC hmac-sha1
|
||||
syn keyword sshdconfigMAC mac-sha1-96
|
||||
syn keyword sshdconfigMAC mac-sha2-256
|
||||
syn keyword sshdconfigMAC mac-sha2-512
|
||||
syn keyword sshdconfigMAC mac-md5
|
||||
syn keyword sshdconfigMAC mac-md5-96
|
||||
syn keyword sshdconfigMAC mac-ripemd160
|
||||
syn match sshdconfigMAC "\<hmac-ripemd160@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<umac-64@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<umac-128@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-sha1-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-sha1-96-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-sha2-256-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-sha2-512-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-md5-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-md5-96-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<hmac-ripemd160-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<umac-64-etm@openssh\.com\>"
|
||||
syn match sshdconfigMAC "\<umac-128-etm@openssh\.com\>"
|
||||
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-ed25519
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-rsa
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-dss
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
|
||||
|
||||
syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
|
||||
|
||||
@ -73,11 +113,14 @@ syn match sshdconfigIPQoS "af4[123]"
|
||||
syn match sshdconfigIPQoS "cs[0-7]"
|
||||
syn keyword sshdconfigIPQoS ef lowdelay throughput reliability
|
||||
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521
|
||||
syn match sshdconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
|
||||
|
||||
syn keyword sshdconfigTunnel point-to-point ethernet
|
||||
|
||||
@ -215,8 +258,9 @@ if version >= 508 || !exists("did_sshdconfig_syntax_inits")
|
||||
HiLink sshdconfigPrivilegeSeparation sshdconfigEnum
|
||||
HiLink sshdconfigTcpForwarding sshdconfigEnum
|
||||
HiLink sshdconfigRootLogin sshdconfigEnum
|
||||
HiLink sshdconfigCipher sshdconfigEnum
|
||||
HiLink sshdconfigCiphers sshdconfigEnum
|
||||
HiLink sshdconfigMAC sshdconfigEnum
|
||||
HiLink sshdconfigHostKeyAlgo sshdconfigEnum
|
||||
HiLink sshdconfigRootLogin sshdconfigEnum
|
||||
HiLink sshdconfigLogLevel sshdconfigEnum
|
||||
HiLink sshdconfigSysLogFacility sshdconfigEnum
|
||||
|
@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: TeX
|
||||
" Maintainer: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
|
||||
" Last Change: Jan 20, 2016
|
||||
" Version: 91
|
||||
" Last Change: Apr 11, 2016
|
||||
" Version: 94
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
|
||||
"
|
||||
" Notes: {{{1
|
||||
@ -83,10 +83,14 @@ else
|
||||
let s:tex_conceal= g:tex_conceal
|
||||
endif
|
||||
if !exists("g:tex_superscripts")
|
||||
let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]"
|
||||
let s:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]"
|
||||
else
|
||||
let s:tex_superscripts= g:tex_superscripts
|
||||
endif
|
||||
if !exists("g:tex_subscripts")
|
||||
let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]"
|
||||
let s:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]"
|
||||
else
|
||||
let s:tex_subscripts= g:tex_subscripts
|
||||
endif
|
||||
|
||||
" Determine whether or not to use "*.sty" mode {{{1
|
||||
@ -200,7 +204,7 @@ if !exists("g:tex_no_math")
|
||||
endif
|
||||
|
||||
" Try to flag {} and () mismatches: {{{1
|
||||
if s:tex_fast =~ 'm'
|
||||
if s:tex_fast =~# 'm'
|
||||
if !s:tex_no_error
|
||||
syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
|
||||
syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
|
||||
@ -217,7 +221,7 @@ endif
|
||||
if !s:tex_no_error
|
||||
syn match texError "[}\])]"
|
||||
endif
|
||||
if s:tex_fast =~ 'M'
|
||||
if s:tex_fast =~# 'M'
|
||||
if !exists("g:tex_no_math")
|
||||
if !s:tex_no_error
|
||||
syn match texMathError "}" contained
|
||||
@ -260,14 +264,14 @@ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
|
||||
|
||||
" \begin{}/\end{} section markers: {{{1
|
||||
syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
|
||||
if s:tex_fast =~ 'm'
|
||||
if s:tex_fast =~# 'm'
|
||||
syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
|
||||
syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@NoSpell
|
||||
endif
|
||||
|
||||
" \documentclass, \documentstyle, \usepackage: {{{1
|
||||
syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
|
||||
if s:tex_fast =~ 'm'
|
||||
if s:tex_fast =~# 'm'
|
||||
syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
|
||||
endif
|
||||
|
||||
@ -281,7 +285,7 @@ syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatemen
|
||||
syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
||||
syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
||||
syn match texInputCurlies "[{}]" contained
|
||||
if s:tex_fast =~ 'm'
|
||||
if s:tex_fast =~# 'm'
|
||||
syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment
|
||||
endif
|
||||
|
||||
@ -296,7 +300,7 @@ syn match texTypeStyle "\\sc\>"
|
||||
syn match texTypeStyle "\\tt\>"
|
||||
|
||||
" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
|
||||
if s:tex_conceal !~ 'b'
|
||||
if s:tex_conceal !~# 'b'
|
||||
syn match texTypeStyle "\\textbf\>"
|
||||
syn match texTypeStyle "\\textit\>"
|
||||
endif
|
||||
@ -349,7 +353,7 @@ syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=
|
||||
syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
|
||||
|
||||
" Sections, subsections, etc: {{{1
|
||||
if s:tex_fast =~ 'p'
|
||||
if s:tex_fast =~# 'p'
|
||||
if !s:tex_nospell
|
||||
TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
|
||||
TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
|
||||
@ -376,8 +380,8 @@ if s:tex_fast =~ 'p'
|
||||
endif
|
||||
|
||||
" particular support for bold and italic {{{1
|
||||
if s:tex_fast =~ 'b'
|
||||
if s:tex_conceal =~ 'b'
|
||||
if s:tex_fast =~# 'b'
|
||||
if s:tex_conceal =~# 'b'
|
||||
if !exists("g:tex_nospell") || !g:tex_nospell
|
||||
syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
|
||||
syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
|
||||
@ -414,7 +418,7 @@ if !exists("g:tex_no_math")
|
||||
let foldcmd= ""
|
||||
endif
|
||||
exe "syn cluster texMathZones add=".grpname
|
||||
if s:tex_fast =~ 'M'
|
||||
if s:tex_fast =~# 'M'
|
||||
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
|
||||
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
|
||||
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
|
||||
@ -424,7 +428,7 @@ if !exists("g:tex_no_math")
|
||||
let grpname = "texMathZone".a:sfx.'S'
|
||||
let syncname = "texSyncMathZone".a:sfx.'S'
|
||||
exe "syn cluster texMathZones add=".grpname
|
||||
if s:tex_fast =~ 'M'
|
||||
if s:tex_fast =~# 'M'
|
||||
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
|
||||
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
|
||||
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
|
||||
@ -448,8 +452,8 @@ if !exists("g:tex_no_math")
|
||||
call TexNewMathZone("L","xxalignat",0)
|
||||
|
||||
" Inline Math Zones: {{{2
|
||||
if s:tex_fast =~ 'M'
|
||||
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd'
|
||||
if s:tex_fast =~# 'M'
|
||||
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
|
||||
syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
|
||||
syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
|
||||
syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
|
||||
@ -466,7 +470,7 @@ if !exists("g:tex_no_math")
|
||||
syn match texMathOper "[_^=]" contained
|
||||
|
||||
" Text Inside Math Zones: {{{2
|
||||
if s:tex_fast =~ 'M'
|
||||
if s:tex_fast =~# 'M'
|
||||
if !exists("g:tex_nospell") || !g:tex_nospell
|
||||
syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
|
||||
else
|
||||
@ -476,7 +480,7 @@ if !exists("g:tex_no_math")
|
||||
|
||||
" \left..something.. and \right..something.. support: {{{2
|
||||
syn match texMathDelimBad contained "\S"
|
||||
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm'
|
||||
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
|
||||
syn match texMathDelim contained "\\left\\{\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
|
||||
syn match texMathDelim contained "\\right\\}\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
|
||||
let s:texMathDelimList=[
|
||||
@ -541,7 +545,7 @@ if !exists("g:tex_no_math")
|
||||
syn match texOnlyMath "[_^]"
|
||||
endif
|
||||
syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
|
||||
if s:tex_conceal !~ 'S'
|
||||
if s:tex_conceal !~# 'S'
|
||||
syn match texSpecialChar '\\glq\>' contained conceal cchar=‚
|
||||
syn match texSpecialChar '\\grq\>' contained conceal cchar=‘
|
||||
syn match texSpecialChar '\\glqq\>' contained conceal cchar=„
|
||||
@ -568,13 +572,13 @@ else
|
||||
" allows syntax-folding of 2 or more contiguous comment lines
|
||||
" single-line comments are not folded
|
||||
syn match texComment "%.*$" contains=@texCommentGroup
|
||||
if s:tex_fast =~ 'c'
|
||||
if s:tex_fast =~# 'c'
|
||||
TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
|
||||
TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
|
||||
endif
|
||||
else
|
||||
syn match texComment "%.*$" contains=@texCommentGroup
|
||||
if s:tex_fast =~ 'c'
|
||||
if s:tex_fast =~# 'c'
|
||||
syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
|
||||
endif
|
||||
endif
|
||||
@ -583,7 +587,7 @@ endif
|
||||
" Separate lines used for verb` and verb# so that the end conditions {{{1
|
||||
" will appropriately terminate.
|
||||
" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
|
||||
if s:tex_fast =~ 'v'
|
||||
if s:tex_fast =~# 'v'
|
||||
if exists("g:tex_verbspell") && g:tex_verbspell
|
||||
syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
|
||||
" listings package:
|
||||
@ -614,7 +618,7 @@ if s:tex_fast =~ 'v'
|
||||
endif
|
||||
|
||||
" Tex Reference Zones: {{{1
|
||||
if s:tex_fast =~ 'r'
|
||||
if s:tex_fast =~# 'r'
|
||||
syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
@ -628,13 +632,13 @@ syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
|
||||
|
||||
" Handle newcommand, newenvironment : {{{1
|
||||
syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
|
||||
if s:tex_fast =~ 'V'
|
||||
if s:tex_fast =~# 'V'
|
||||
syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
|
||||
syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
|
||||
syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup
|
||||
endif
|
||||
syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl
|
||||
if s:tex_fast =~ 'V'
|
||||
if s:tex_fast =~# 'V'
|
||||
syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
|
||||
syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
|
||||
syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
|
||||
@ -660,11 +664,11 @@ syn match texString "\(``\|''\|,,\)"
|
||||
|
||||
" makeatletter -- makeatother sections
|
||||
if !s:tex_no_error
|
||||
if s:tex_fast =~ 'S'
|
||||
if s:tex_fast =~# 'S'
|
||||
syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
|
||||
endif
|
||||
syn match texStyleStatement "\\[a-zA-Z@]\+" contained
|
||||
if s:tex_fast =~ 'S'
|
||||
if s:tex_fast =~# 'S'
|
||||
syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
|
||||
syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained
|
||||
endif
|
||||
@ -675,7 +679,7 @@ if has("conceal") && &enc == 'utf-8'
|
||||
|
||||
" Math Symbols {{{2
|
||||
" (many of these symbols were contributed by Björn Winckler)
|
||||
if s:tex_conceal =~ 'm'
|
||||
if s:tex_conceal =~# 'm'
|
||||
let s:texMathList=[
|
||||
\ ['|' , '‖'],
|
||||
\ ['aleph' , 'ℵ'],
|
||||
@ -956,7 +960,7 @@ if has("conceal") && &enc == 'utf-8'
|
||||
" \ ['uminus' , 'X']
|
||||
" \ ['uplus' , 'X']
|
||||
for texmath in s:texMathList
|
||||
if texmath[0] =~ '\w$'
|
||||
if texmath[0] =~# '\w$'
|
||||
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
|
||||
else
|
||||
exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
|
||||
@ -995,7 +999,7 @@ if has("conceal") && &enc == 'utf-8'
|
||||
endif
|
||||
|
||||
" Greek {{{2
|
||||
if s:tex_conceal =~ 'g'
|
||||
if s:tex_conceal =~# 'g'
|
||||
fun! s:Greek(group,pat,cchar)
|
||||
exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
|
||||
endfun
|
||||
@ -1042,14 +1046,14 @@ if has("conceal") && &enc == 'utf-8'
|
||||
endif
|
||||
|
||||
" Superscripts/Subscripts {{{2
|
||||
if s:tex_conceal =~ 's'
|
||||
if s:tex_fast =~ 's'
|
||||
if s:tex_conceal =~# 's'
|
||||
if s:tex_fast =~# 's'
|
||||
syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
|
||||
syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
|
||||
endif
|
||||
" s:SuperSub:
|
||||
fun! s:SuperSub(group,leader,pat,cchar)
|
||||
if a:pat =~ '^\\' || (a:leader == '\^' && a:pat =~ g:tex_superscripts) || (a:leader == '_' && a:pat =~ g:tex_subscripts)
|
||||
if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
|
||||
" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
|
||||
exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
|
||||
exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
|
||||
@ -1154,7 +1158,7 @@ if has("conceal") && &enc == 'utf-8'
|
||||
endif
|
||||
|
||||
" Accented characters: {{{2
|
||||
if s:tex_conceal =~ 'a'
|
||||
if s:tex_conceal =~# 'a'
|
||||
if b:tex_stylish
|
||||
syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
|
||||
syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
|
||||
@ -1169,7 +1173,7 @@ if has("conceal") && &enc == 'utf-8'
|
||||
let i= i + 1
|
||||
continue
|
||||
endif
|
||||
if accent =~ '\a'
|
||||
if accent =~# '\a'
|
||||
exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
|
||||
else
|
||||
exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
|
||||
|
@ -1,14 +1,10 @@
|
||||
" Vim syntax file
|
||||
" Language: VHDL
|
||||
" Maintainer: Daniel Kho <daniel.kho@tauhop.com>
|
||||
" Language: VHDL [VHSIC (Very High Speed Integrated Circuit) Hardware Description Language]
|
||||
" Maintainer: Daniel Kho <daniel.kho@tauhop.com>
|
||||
" Previous Maintainer: Czo <Olivier.Sirol@lip6.fr>
|
||||
" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
|
||||
" Last Changed: 2015 Dec 4 by Daniel Kho
|
||||
" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
|
||||
" Last Changed: 2016 Mar 05 by Daniel Kho
|
||||
|
||||
" VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
|
||||
|
||||
" 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")
|
||||
@ -56,17 +52,40 @@ syn keyword vhdlStatement note warning error failure
|
||||
syn match vhdlStatement "\<\(if\|else\)\>"
|
||||
syn match vhdlError "\<else\s\+if\>"
|
||||
|
||||
" Predefined VHDL types
|
||||
syn keyword vhdlType bit bit_vector
|
||||
syn keyword vhdlType character boolean integer real time
|
||||
syn keyword vhdlType boolean_vector integer_vector real_vector time_vector
|
||||
syn keyword vhdlType string severity_level
|
||||
" Predefined standard ieee VHDL types
|
||||
syn keyword vhdlType positive natural signed unsigned
|
||||
syn keyword vhdlType unresolved_signed unresolved_unsigned u_signed u_unsigned
|
||||
syn keyword vhdlType line text
|
||||
syn keyword vhdlType std_logic std_logic_vector
|
||||
syn keyword vhdlType std_ulogic std_ulogic_vector
|
||||
" Types and type qualifiers
|
||||
" Predefined standard VHDL types
|
||||
syn match vhdlType "\<bit\>\'\="
|
||||
syn match vhdlType "\<boolean\>\'\="
|
||||
syn match vhdlType "\<natural\>\'\="
|
||||
syn match vhdlType "\<positive\>\'\="
|
||||
syn match vhdlType "\<integer\>\'\="
|
||||
syn match vhdlType "\<real\>\'\="
|
||||
syn match vhdlType "\<time\>\'\="
|
||||
|
||||
syn match vhdlType "\<bit_vector\>\'\="
|
||||
syn match vhdlType "\<boolean_vector\>\'\="
|
||||
syn match vhdlType "\<integer_vector\>\'\="
|
||||
syn match vhdlType "\<real_vector\>\'\="
|
||||
syn match vhdlType "\<time_vector\>\'\="
|
||||
|
||||
syn match vhdlType "\<character\>\'\="
|
||||
syn match vhdlType "\<string\>\'\="
|
||||
"syn keyword vhdlType severity_level
|
||||
syn keyword vhdlType line
|
||||
syn keyword vhdlType text
|
||||
|
||||
" Predefined standard IEEE VHDL types
|
||||
syn match vhdlType "\<std_ulogic\>\'\="
|
||||
syn match vhdlType "\<std_logic\>\'\="
|
||||
syn match vhdlType "\<std_ulogic_vector\>\'\="
|
||||
syn match vhdlType "\<std_logic_vector\>\'\="
|
||||
syn match vhdlType "\<unresolved_signed\>\'\="
|
||||
syn match vhdlType "\<unresolved_unsigned\>\'\="
|
||||
syn match vhdlType "\<u_signed\>\'\="
|
||||
syn match vhdlType "\<u_unsigned\>\'\="
|
||||
syn match vhdlType "\<signed\>\'\="
|
||||
syn match vhdlType "\<unsigned\>\'\="
|
||||
|
||||
|
||||
" array attributes
|
||||
syn match vhdlAttribute "\'high"
|
||||
@ -191,15 +210,23 @@ syn case ignore
|
||||
syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,vhdlFixme,@Spell
|
||||
syn match vhdlComment "\(^\|\s\)--.*" contains=vhdlTodo,vhdlFixme,@Spell
|
||||
|
||||
" Standard IEEE P1076.6 preprocessor directives (metacomments).
|
||||
syn match vhdlPreProc "/\*\s*rtl_synthesis\s\+\(on\|off\)\s*\*/"
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*rtl_synthesis\s\+\(on\|off\)\s*"
|
||||
syn match vhdlPreProc "/\*\s*rtl_syn\s\+\(on\|off\)\s*\*/"
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*rtl_syn\s\+\(on\|off\)\s*"
|
||||
|
||||
" Industry-standard directives. These are not standard VHDL, but are commonly
|
||||
" used in the industry.
|
||||
syn match vhdlPreProc "/\*\s*synthesis\s\+translate_\(on\|off\)\s*\*/"
|
||||
"syn match vhdlPreProc "/\*\s*simulation\s\+translate_\(on\|off\)\s*\*/"
|
||||
syn match vhdlPreProc "/\*\s*pragma\s\+translate_\(on\|off\)\s*\*/"
|
||||
syn match vhdlPreProc "/\*\s*pragma\s\+synthesis_\(on\|off\)\s*\*/"
|
||||
syn match vhdlPreProc "/\*\s*synopsys\s\+translate_\(on\|off\)\s*\*/"
|
||||
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*synthesis\s\+translate_\(on\|off\)\s*"
|
||||
"syn match vhdlPreProc "\(^\|\s\)--\s*simulation\s\+translate_\(on\|off\)\s*"
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+translate_\(on\|off\)\s*"
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+synthesis_\(on\|off\)\s*"
|
||||
syn match vhdlPreProc "\(^\|\s\)--\s*synopsys\s\+translate_\(on\|off\)\s*"
|
||||
|
||||
@ -216,24 +243,24 @@ if version >= 508 || !exists("did_vhdl_syntax_inits")
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink vhdlSpecial Special
|
||||
HiLink vhdlStatement Statement
|
||||
HiLink vhdlCharacter Character
|
||||
HiLink vhdlString String
|
||||
HiLink vhdlVector Number
|
||||
HiLink vhdlBoolean Number
|
||||
HiLink vhdlTodo Todo
|
||||
HiLink vhdlFixme Fixme
|
||||
HiLink vhdlComment Comment
|
||||
HiLink vhdlNumber Number
|
||||
HiLink vhdlTime Number
|
||||
HiLink vhdlType Type
|
||||
HiLink vhdlOperator Operator
|
||||
HiLink vhdlError Error
|
||||
HiLink vhdlAttribute Special
|
||||
HiLink vhdlPreProc PreProc
|
||||
|
||||
|
||||
HiLink vhdlSpecial Special
|
||||
HiLink vhdlStatement Statement
|
||||
HiLink vhdlCharacter Character
|
||||
HiLink vhdlString String
|
||||
HiLink vhdlVector Number
|
||||
HiLink vhdlBoolean Number
|
||||
HiLink vhdlTodo Todo
|
||||
HiLink vhdlFixme Fixme
|
||||
HiLink vhdlComment Comment
|
||||
HiLink vhdlNumber Number
|
||||
HiLink vhdlTime Number
|
||||
HiLink vhdlType Type
|
||||
HiLink vhdlOperator Operator
|
||||
HiLink vhdlError Error
|
||||
HiLink vhdlAttribute Special
|
||||
HiLink vhdlPreProc PreProc
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
" Language: Zsh shell script
|
||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2016-01-25
|
||||
" Latest Revision: 2016-02-15
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/chrisbra/vim-zsh
|
||||
|
||||
@ -13,20 +13,29 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal iskeyword+=-
|
||||
setlocal foldmethod=syntax
|
||||
if v:version > 704 || (v:version == 704 && has("patch1142"))
|
||||
syn iskeyword @,48-57,_,192-255,#,-
|
||||
else
|
||||
setlocal iskeyword+=-
|
||||
endif
|
||||
if get(g:, 'zsh_fold_enable', 0)
|
||||
setlocal foldmethod=syntax
|
||||
endif
|
||||
|
||||
syn keyword zshTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn region zshComment oneline start='\%(^\|\s*\)#' end='$'
|
||||
\ contains=zshTodo,@Spell
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn region zshComment start='^\s*#' end='^\%(\s*#\)\@!'
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'
|
||||
|
||||
syn match zshQuoted '\\.'
|
||||
syn region zshString matchgroup=zshStringDelimiter start=+"+ end=+"+
|
||||
\ contains=zshQuoted,@zshDerefs,@zshSubst
|
||||
syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+
|
||||
\ contains=zshQuoted,@zshDerefs,@zshSubst fold
|
||||
syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
|
||||
" XXX: This should probably be more precise, but Zsh seems a bit confused about it itself
|
||||
syn region zshPOSIXString matchgroup=zshStringDelimiter start=+\$'+
|
||||
\ end=+'+ contains=zshQuoted
|
||||
@ -46,7 +55,7 @@ syn keyword zshException always
|
||||
|
||||
syn keyword zshKeyword function nextgroup=zshKSHFunction skipwhite
|
||||
|
||||
syn match zshKSHFunction contained '\k\+'
|
||||
syn match zshKSHFunction contained '\w\S\+'
|
||||
syn match zshFunction '^\s*\k\+\ze\s*()'
|
||||
|
||||
syn match zshOperator '||\|&&\|;\|&!\='
|
||||
@ -317,6 +326,8 @@ syn region zshMathSubst matchgroup=zshSubstDelim transparent
|
||||
\ @zshDerefs,zshString keepend fold
|
||||
syn region zshBrackets contained transparent start='{' skip='\\}'
|
||||
\ end='}' fold
|
||||
syn region zshBrackets transparent start='{' skip='\\}'
|
||||
\ end='}' contains=TOP fold
|
||||
syn region zshSubst matchgroup=zshSubstDelim start='\${' skip='\\}'
|
||||
\ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString fold
|
||||
syn region zshOldSubst matchgroup=zshSubstDelim start=+`+ skip=+\\`+
|
||||
|
@ -1757,12 +1757,12 @@ char_u* keymap_init(void)
|
||||
vim_snprintf(buf, buflen, "keymap/%s_%s.vim",
|
||||
curbuf->b_p_keymap, p_enc);
|
||||
|
||||
if (source_runtime((char_u *)buf, FALSE) == FAIL) {
|
||||
if (source_runtime((char_u *)buf, 0) == FAIL) {
|
||||
// try finding "keymap/'keymap'.vim" in 'runtimepath'
|
||||
vim_snprintf(buf, buflen, "keymap/%s.vim",
|
||||
curbuf->b_p_keymap);
|
||||
|
||||
if (source_runtime((char_u *)buf, FALSE) == FAIL) {
|
||||
if (source_runtime((char_u *)buf, 0) == FAIL) {
|
||||
xfree(buf);
|
||||
return (char_u *)N_("E544: Keymap file not found");
|
||||
}
|
||||
|
@ -10782,6 +10782,7 @@ static void f_has(typval_T *argvars, typval_T *rettv)
|
||||
"mouse",
|
||||
"multi_byte",
|
||||
"multi_lang",
|
||||
"packages",
|
||||
"path_extra",
|
||||
"persistent_undo",
|
||||
"postscript",
|
||||
@ -20497,9 +20498,10 @@ script_autoload (
|
||||
tofree = NULL;
|
||||
}
|
||||
|
||||
/* Try loading the package from $VIMRUNTIME/autoload/<name>.vim */
|
||||
if (source_runtime(scriptname, FALSE) == OK)
|
||||
ret = TRUE;
|
||||
// Try loading the package from $VIMRUNTIME/autoload/<name>.vim
|
||||
if (source_runtime(scriptname, 0) == OK) {
|
||||
ret = true;
|
||||
}
|
||||
}
|
||||
|
||||
xfree(tofree);
|
||||
|
@ -4796,122 +4796,15 @@ void ex_viusage(exarg_T *eap)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ":helptags"
|
||||
*/
|
||||
void ex_helptags(exarg_T *eap)
|
||||
{
|
||||
garray_T ga;
|
||||
int len;
|
||||
char_u lang[2];
|
||||
expand_T xpc;
|
||||
char_u *dirname;
|
||||
char_u ext[5];
|
||||
char_u fname[8];
|
||||
int filecount;
|
||||
char_u **files;
|
||||
int add_help_tags = FALSE;
|
||||
|
||||
/* Check for ":helptags ++t {dir}". */
|
||||
if (STRNCMP(eap->arg, "++t", 3) == 0 && ascii_iswhite(eap->arg[3])) {
|
||||
add_help_tags = TRUE;
|
||||
eap->arg = skipwhite(eap->arg + 3);
|
||||
}
|
||||
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_DIRECTORIES;
|
||||
dirname = ExpandOne(&xpc, eap->arg, NULL,
|
||||
WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE);
|
||||
if (dirname == NULL || !os_isdir(dirname)) {
|
||||
EMSG2(_("E150: Not a directory: %s"), eap->arg);
|
||||
xfree(dirname);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get a list of all files in the help directory and in subdirectories. */
|
||||
STRCPY(NameBuff, dirname);
|
||||
add_pathsep((char *)NameBuff);
|
||||
STRCAT(NameBuff, "**");
|
||||
|
||||
// Note: We cannot just do `&NameBuff` because it is a statically sized array
|
||||
// so `NameBuff == &NameBuff` according to C semantics.
|
||||
char_u *buff_list[1] = {NameBuff};
|
||||
if (gen_expand_wildcards(1, buff_list, &filecount, &files,
|
||||
EW_FILE|EW_SILENT) == FAIL
|
||||
|| filecount == 0) {
|
||||
EMSG2("E151: No match: %s", NameBuff);
|
||||
xfree(dirname);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Go over all files in the directory to find out what languages are
|
||||
* present. */
|
||||
ga_init(&ga, 1, 10);
|
||||
for (int i = 0; i < filecount; ++i) {
|
||||
len = (int)STRLEN(files[i]);
|
||||
if (len <= 4) {
|
||||
continue;
|
||||
}
|
||||
if (STRICMP(files[i] + len - 4, ".txt") == 0) {
|
||||
/* ".txt" -> language "en" */
|
||||
lang[0] = 'e';
|
||||
lang[1] = 'n';
|
||||
} else if (files[i][len - 4] == '.'
|
||||
&& ASCII_ISALPHA(files[i][len - 3])
|
||||
&& ASCII_ISALPHA(files[i][len - 2])
|
||||
&& TOLOWER_ASC(files[i][len - 1]) == 'x') {
|
||||
/* ".abx" -> language "ab" */
|
||||
lang[0] = TOLOWER_ASC(files[i][len - 3]);
|
||||
lang[1] = TOLOWER_ASC(files[i][len - 2]);
|
||||
} else
|
||||
continue;
|
||||
|
||||
int j;
|
||||
/* Did we find this language already? */
|
||||
for (j = 0; j < ga.ga_len; j += 2)
|
||||
if (STRNCMP(lang, ((char_u *)ga.ga_data) + j, 2) == 0)
|
||||
break;
|
||||
if (j == ga.ga_len) {
|
||||
/* New language, add it. */
|
||||
ga_grow(&ga, 2);
|
||||
((char_u *)ga.ga_data)[ga.ga_len++] = lang[0];
|
||||
((char_u *)ga.ga_data)[ga.ga_len++] = lang[1];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop over the found languages to generate a tags file for each one.
|
||||
*/
|
||||
for (int j = 0; j < ga.ga_len; j += 2) {
|
||||
STRCPY(fname, "tags-xx");
|
||||
fname[5] = ((char_u *)ga.ga_data)[j];
|
||||
fname[6] = ((char_u *)ga.ga_data)[j + 1];
|
||||
if (fname[5] == 'e' && fname[6] == 'n') {
|
||||
/* English is an exception: use ".txt" and "tags". */
|
||||
fname[4] = NUL;
|
||||
STRCPY(ext, ".txt");
|
||||
} else {
|
||||
/* Language "ab" uses ".abx" and "tags-ab". */
|
||||
STRCPY(ext, ".xxx");
|
||||
ext[1] = fname[5];
|
||||
ext[2] = fname[6];
|
||||
}
|
||||
helptags_one(dirname, ext, fname, add_help_tags);
|
||||
}
|
||||
|
||||
ga_clear(&ga);
|
||||
FreeWild(filecount, files);
|
||||
|
||||
xfree(dirname);
|
||||
}
|
||||
|
||||
static void
|
||||
helptags_one (
|
||||
char_u *dir, /* doc directory */
|
||||
char_u *ext, /* suffix, ".txt", ".itx", ".frx", etc. */
|
||||
char_u *tagfname, /* "tags" for English, "tags-fr" for French. */
|
||||
int add_help_tags /* add "help-tags" tag */
|
||||
)
|
||||
/// Generate tags in one help directory
|
||||
///
|
||||
/// @param dir Path to the doc directory
|
||||
/// @param ext Suffix of the help files (".txt", ".itx", ".frx", etc.)
|
||||
/// @param tagname Name of the tags file ("tags" for English, "tags-fr" for
|
||||
/// French)
|
||||
/// @param add_help_tags Whether to add the "help-tags" tag
|
||||
static void helptags_one(char_u *dir, char_u *ext, char_u *tagfname,
|
||||
bool add_help_tags)
|
||||
{
|
||||
FILE *fd_tags;
|
||||
FILE *fd;
|
||||
@ -5111,6 +5004,132 @@ helptags_one (
|
||||
fclose(fd_tags); /* there is no check for an error... */
|
||||
}
|
||||
|
||||
/// Generate tags in one help directory, taking care of translations.
|
||||
static void do_helptags(char_u *dirname, bool add_help_tags)
|
||||
{
|
||||
int len;
|
||||
garray_T ga;
|
||||
char_u lang[2];
|
||||
char_u ext[5];
|
||||
char_u fname[8];
|
||||
int filecount;
|
||||
char_u **files;
|
||||
|
||||
// Get a list of all files in the help directory and in subdirectories.
|
||||
STRCPY(NameBuff, dirname);
|
||||
add_pathsep((char *)NameBuff);
|
||||
STRCAT(NameBuff, "**");
|
||||
|
||||
// Note: We cannot just do `&NameBuff` because it is a statically sized array
|
||||
// so `NameBuff == &NameBuff` according to C semantics.
|
||||
char_u *buff_list[1] = {NameBuff};
|
||||
if (gen_expand_wildcards(1, buff_list, &filecount, &files,
|
||||
EW_FILE|EW_SILENT) == FAIL
|
||||
|| filecount == 0) {
|
||||
EMSG2("E151: No match: %s", NameBuff);
|
||||
xfree(dirname);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Go over all files in the directory to find out what languages are
|
||||
* present. */
|
||||
int j;
|
||||
ga_init(&ga, 1, 10);
|
||||
for (int i = 0; i < filecount; i++) {
|
||||
len = (int)STRLEN(files[i]);
|
||||
if (len <= 4) {
|
||||
continue;
|
||||
}
|
||||
if (STRICMP(files[i] + len - 4, ".txt") == 0) {
|
||||
/* ".txt" -> language "en" */
|
||||
lang[0] = 'e';
|
||||
lang[1] = 'n';
|
||||
} else if (files[i][len - 4] == '.'
|
||||
&& ASCII_ISALPHA(files[i][len - 3])
|
||||
&& ASCII_ISALPHA(files[i][len - 2])
|
||||
&& TOLOWER_ASC(files[i][len - 1]) == 'x') {
|
||||
/* ".abx" -> language "ab" */
|
||||
lang[0] = TOLOWER_ASC(files[i][len - 3]);
|
||||
lang[1] = TOLOWER_ASC(files[i][len - 2]);
|
||||
} else
|
||||
continue;
|
||||
|
||||
// Did we find this language already?
|
||||
for (j = 0; j < ga.ga_len; j += 2) {
|
||||
if (STRNCMP(lang, ((char_u *)ga.ga_data) + j, 2) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j == ga.ga_len) {
|
||||
// New language, add it.
|
||||
ga_grow(&ga, 2);
|
||||
((char_u *)ga.ga_data)[ga.ga_len++] = lang[0];
|
||||
((char_u *)ga.ga_data)[ga.ga_len++] = lang[1];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop over the found languages to generate a tags file for each one.
|
||||
*/
|
||||
for (j = 0; j < ga.ga_len; j += 2) {
|
||||
STRCPY(fname, "tags-xx");
|
||||
fname[5] = ((char_u *)ga.ga_data)[j];
|
||||
fname[6] = ((char_u *)ga.ga_data)[j + 1];
|
||||
if (fname[5] == 'e' && fname[6] == 'n') {
|
||||
/* English is an exception: use ".txt" and "tags". */
|
||||
fname[4] = NUL;
|
||||
STRCPY(ext, ".txt");
|
||||
} else {
|
||||
/* Language "ab" uses ".abx" and "tags-ab". */
|
||||
STRCPY(ext, ".xxx");
|
||||
ext[1] = fname[5];
|
||||
ext[2] = fname[6];
|
||||
}
|
||||
helptags_one(dirname, ext, fname, add_help_tags);
|
||||
}
|
||||
|
||||
ga_clear(&ga);
|
||||
FreeWild(filecount, files);
|
||||
}
|
||||
|
||||
static void
|
||||
helptags_cb(char_u *fname, void *cookie)
|
||||
{
|
||||
do_helptags(fname, *(bool *)cookie);
|
||||
}
|
||||
|
||||
/*
|
||||
* ":helptags"
|
||||
*/
|
||||
void ex_helptags(exarg_T *eap)
|
||||
{
|
||||
expand_T xpc;
|
||||
char_u *dirname;
|
||||
bool add_help_tags = false;
|
||||
|
||||
/* Check for ":helptags ++t {dir}". */
|
||||
if (STRNCMP(eap->arg, "++t", 3) == 0 && ascii_iswhite(eap->arg[3])) {
|
||||
add_help_tags = true;
|
||||
eap->arg = skipwhite(eap->arg + 3);
|
||||
}
|
||||
|
||||
if (STRCMP(eap->arg, "ALL") == 0) {
|
||||
do_in_path(p_rtp, (char_u *)"doc", DIP_ALL + DIP_DIR,
|
||||
helptags_cb, &add_help_tags);
|
||||
} else {
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_DIRECTORIES;
|
||||
dirname = ExpandOne(&xpc, eap->arg, NULL,
|
||||
WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE);
|
||||
if (dirname == NULL || !os_isdir(dirname)) {
|
||||
EMSG2(_("E150: Not a directory: %s"), eap->arg);
|
||||
} else {
|
||||
do_helptags(dirname, add_help_tags);
|
||||
}
|
||||
xfree(dirname);
|
||||
}
|
||||
}
|
||||
|
||||
struct sign
|
||||
{
|
||||
sign_T *sn_next; /* next sign in list */
|
||||
|
@ -1848,6 +1848,18 @@ return {
|
||||
addr_type=ADDR_LINES,
|
||||
func='ex_print',
|
||||
},
|
||||
{
|
||||
command='packadd',
|
||||
flags=bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN),
|
||||
addr_type=ADDR_LINES,
|
||||
func='ex_packadd',
|
||||
},
|
||||
{
|
||||
command='packloadall',
|
||||
flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN),
|
||||
addr_type=ADDR_LINES,
|
||||
func='ex_packloadall',
|
||||
},
|
||||
{
|
||||
command='pclose',
|
||||
flags=bit.bor(BANG, TRLBAR),
|
||||
|
@ -2237,7 +2237,7 @@ void ex_compiler(exarg_T *eap)
|
||||
do_unlet((char_u *)"b:current_compiler", true);
|
||||
|
||||
snprintf((char *)buf, bufsize, "compiler/%s.vim", eap->arg);
|
||||
if (source_runtime(buf, true) == FAIL) {
|
||||
if (source_runtime(buf, DIP_ALL) == FAIL) {
|
||||
EMSG2(_("E666: compiler not supported: %s"), eap->arg);
|
||||
}
|
||||
xfree(buf);
|
||||
@ -2263,10 +2263,29 @@ void ex_compiler(exarg_T *eap)
|
||||
}
|
||||
}
|
||||
|
||||
/// ":runtime {name}"
|
||||
/// ":runtime [what] {name}"
|
||||
void ex_runtime(exarg_T *eap)
|
||||
{
|
||||
source_runtime(eap->arg, eap->forceit);
|
||||
char_u *arg = eap->arg;
|
||||
char_u *p = skiptowhite(arg);
|
||||
ptrdiff_t len = p - arg;
|
||||
int flags = eap->forceit ? DIP_ALL : 0;
|
||||
|
||||
if (STRNCMP(arg, "START", len) == 0) {
|
||||
flags += DIP_START + DIP_NORTP;
|
||||
arg = skipwhite(arg + len);
|
||||
} else if (STRNCMP(arg, "OPT", len) == 0) {
|
||||
flags += DIP_OPT + DIP_NORTP;
|
||||
arg = skipwhite(arg + len);
|
||||
} else if (STRNCMP(arg, "PACK", len) == 0) {
|
||||
flags += DIP_START + DIP_OPT + DIP_NORTP;
|
||||
arg = skipwhite(arg + len);
|
||||
} else if (STRNCMP(arg, "ALL", len) == 0) {
|
||||
flags += DIP_START + DIP_OPT;
|
||||
arg = skipwhite(arg + len);
|
||||
}
|
||||
|
||||
source_runtime(arg, flags);
|
||||
}
|
||||
|
||||
|
||||
@ -2277,28 +2296,25 @@ static void source_callback(char_u *fname, void *cookie)
|
||||
|
||||
/// Source the file "name" from all directories in 'runtimepath'.
|
||||
/// "name" can contain wildcards.
|
||||
/// When "all" is true, source all files, otherwise only the first one.
|
||||
/// When "flags" has DIP_ALL: source all files, otherwise only the first one.
|
||||
///
|
||||
/// return FAIL when no file could be sourced, OK otherwise.
|
||||
int source_runtime(char_u *name, int all)
|
||||
int source_runtime(char_u *name, int flags)
|
||||
{
|
||||
return do_in_runtimepath(name, all, source_callback, NULL);
|
||||
return do_in_runtimepath(name, flags, source_callback, NULL);
|
||||
}
|
||||
|
||||
/// Find "name" in 'runtimepath'. When found, invoke the callback function for
|
||||
/// it: callback(fname, "cookie")
|
||||
/// When "all" is true repeat for all matches, otherwise only the first one is
|
||||
/// used.
|
||||
/// Returns OK when at least one match found, FAIL otherwise.
|
||||
/// If "name" is NULL calls callback for each entry in runtimepath. Cookie is
|
||||
/// passed by reference in this case, setting it to NULL indicates that callback
|
||||
/// has done its job.
|
||||
int do_in_runtimepath(char_u *name, int all, DoInRuntimepathCB callback,
|
||||
void *cookie)
|
||||
/// Find the file "name" in all directories in "path" and invoke
|
||||
/// "callback(fname, cookie)".
|
||||
/// "name" can contain wildcards.
|
||||
/// When "flags" has DIP_ALL: source all files, otherwise only the first one.
|
||||
/// When "flags" has DIP_DIR: find directories instead of files.
|
||||
/// When "flags" has DIP_ERR: give an error message if there is no match.
|
||||
///
|
||||
/// return FAIL when no file could be sourced, OK otherwise.
|
||||
int do_in_path(char_u *path, char_u *name, int flags,
|
||||
DoInRuntimepathCB callback, void *cookie)
|
||||
{
|
||||
char_u *rtp;
|
||||
char_u *np;
|
||||
char_u *buf;
|
||||
char_u *rtp_copy;
|
||||
char_u *tail;
|
||||
int num_files;
|
||||
char_u **files;
|
||||
@ -2307,19 +2323,19 @@ int do_in_runtimepath(char_u *name, int all, DoInRuntimepathCB callback,
|
||||
|
||||
// Make a copy of 'runtimepath'. Invoking the callback may change the
|
||||
// value.
|
||||
rtp_copy = vim_strsave(p_rtp);
|
||||
buf = xmallocz(MAXPATHL);
|
||||
char_u *rtp_copy = vim_strsave(path);
|
||||
char_u *buf = xmallocz(MAXPATHL);
|
||||
{
|
||||
if (p_verbose > 1 && name != NULL) {
|
||||
verbose_enter();
|
||||
smsg(_("Searching for \"%s\" in \"%s\""),
|
||||
(char *)name, (char *)p_rtp);
|
||||
(char *)name, (char *)path);
|
||||
verbose_leave();
|
||||
}
|
||||
|
||||
// Loop over all entries in 'runtimepath'.
|
||||
rtp = rtp_copy;
|
||||
while (*rtp != NUL && (all || !did_one)) {
|
||||
char_u *rtp = rtp_copy;
|
||||
while (*rtp != NUL && ((flags & DIP_ALL) || !did_one)) {
|
||||
// Copy the path from 'runtimepath' to buf[].
|
||||
copy_option_part(&rtp, buf, MAXPATHL, ",");
|
||||
if (name == NULL) {
|
||||
@ -2332,8 +2348,8 @@ int do_in_runtimepath(char_u *name, int all, DoInRuntimepathCB callback,
|
||||
tail = buf + STRLEN(buf);
|
||||
|
||||
// Loop over all patterns in "name"
|
||||
np = name;
|
||||
while (*np != NUL && (all || !did_one)) {
|
||||
char_u *np = name;
|
||||
while (*np != NUL && ((flags & DIP_ALL) || !did_one)) {
|
||||
// Append the pattern from "name" to buf[].
|
||||
assert(MAXPATHL >= (tail - buf));
|
||||
copy_option_part(&np, tail, (size_t)(MAXPATHL - (tail - buf)),
|
||||
@ -2347,11 +2363,12 @@ int do_in_runtimepath(char_u *name, int all, DoInRuntimepathCB callback,
|
||||
|
||||
// Expand wildcards, invoke the callback for each match.
|
||||
if (gen_expand_wildcards(1, &buf, &num_files, &files,
|
||||
EW_FILE) == OK) {
|
||||
(flags & DIP_DIR) ? EW_DIR
|
||||
: EW_FILE) == OK) {
|
||||
for (i = 0; i < num_files; i++) {
|
||||
(*callback)(files[i], cookie);
|
||||
did_one = true;
|
||||
if (!all) {
|
||||
if (!(flags & DIP_ALL)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2363,16 +2380,228 @@ int do_in_runtimepath(char_u *name, int all, DoInRuntimepathCB callback,
|
||||
}
|
||||
xfree(buf);
|
||||
xfree(rtp_copy);
|
||||
if (p_verbose > 0 && !did_one && name != NULL) {
|
||||
verbose_enter();
|
||||
smsg(_("not found in 'runtimepath': \"%s\""), name);
|
||||
verbose_leave();
|
||||
if (!did_one && name != NULL) {
|
||||
char *basepath = path == p_rtp ? "runtimepath" : "packpath";
|
||||
|
||||
if (flags & DIP_ERR) {
|
||||
EMSG3(_(e_dirnotf), basepath, name);
|
||||
} else if (p_verbose > 0) {
|
||||
verbose_enter();
|
||||
smsg(_("not found in '%s': \"%s\""), basepath, name);
|
||||
verbose_leave();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return did_one ? OK : FAIL;
|
||||
}
|
||||
|
||||
/// Find "name" in 'runtimepath'. When found, invoke the callback function for
|
||||
/// it: callback(fname, "cookie")
|
||||
/// When "flags" has DIP_ALL repeat for all matches, otherwise only the first
|
||||
/// one is used.
|
||||
/// Returns OK when at least one match found, FAIL otherwise.
|
||||
/// If "name" is NULL calls callback for each entry in runtimepath. Cookie is
|
||||
/// passed by reference in this case, setting it to NULL indicates that callback
|
||||
/// has done its job.
|
||||
int do_in_runtimepath(char_u *name, int flags, DoInRuntimepathCB callback,
|
||||
void *cookie)
|
||||
{
|
||||
int done = FAIL;
|
||||
|
||||
if ((flags & DIP_NORTP) == 0) {
|
||||
done = do_in_path(p_rtp, name, flags, callback, cookie);
|
||||
}
|
||||
|
||||
if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_START)) {
|
||||
char *start_dir = "pack/*/start/*/%s"; // NOLINT
|
||||
size_t len = STRLEN(start_dir) + STRLEN(name);
|
||||
char_u *s = xmallocz(len);
|
||||
|
||||
vim_snprintf((char *)s, len, start_dir, name);
|
||||
done = do_in_path(p_pp, s, flags, callback, cookie);
|
||||
|
||||
xfree(s);
|
||||
}
|
||||
|
||||
if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_OPT)) {
|
||||
char *opt_dir = "pack/*/opt/*/%s"; // NOLINT
|
||||
size_t len = STRLEN(opt_dir) + STRLEN(name);
|
||||
char_u *s = xmallocz(len);
|
||||
|
||||
vim_snprintf((char *)s, len, opt_dir, name);
|
||||
done = do_in_path(p_pp, s, flags, callback, cookie);
|
||||
|
||||
xfree(s);
|
||||
}
|
||||
|
||||
return done;
|
||||
}
|
||||
|
||||
// Expand wildcards in "pat" and invoke do_source() for each match.
|
||||
static void source_all_matches(char_u *pat)
|
||||
{
|
||||
int num_files;
|
||||
char_u **files;
|
||||
|
||||
if (gen_expand_wildcards(1, &pat, &num_files, &files, EW_FILE) == OK) {
|
||||
for (int i = 0; i < num_files; i++) {
|
||||
(void)do_source(files[i], false, DOSO_NONE);
|
||||
}
|
||||
FreeWild(num_files, files);
|
||||
}
|
||||
}
|
||||
|
||||
// used for "cookie" of add_pack_plugin()
|
||||
static int APP_ADD_DIR;
|
||||
static int APP_LOAD;
|
||||
static int APP_BOTH;
|
||||
|
||||
static void add_pack_plugin(char_u *fname, void *cookie)
|
||||
{
|
||||
char_u *p4, *p3, *p2, *p1, *p;
|
||||
char_u *new_rtp;
|
||||
char_u *ffname = (char_u *)fix_fname((char *)fname);
|
||||
|
||||
if (ffname == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (cookie != &APP_LOAD && strstr((char *)p_rtp, (char *)ffname) == NULL) {
|
||||
// directory is not yet in 'runtimepath', add it
|
||||
p4 = p3 = p2 = p1 = get_past_head(ffname);
|
||||
for (p = p1; *p; mb_ptr_adv(p)) {
|
||||
if (vim_ispathsep_nocolon(*p)) {
|
||||
p4 = p3; p3 = p2; p2 = p1; p1 = p;
|
||||
}
|
||||
}
|
||||
|
||||
// now we have:
|
||||
// rtp/pack/name/start/name
|
||||
// p4 p3 p2 p1
|
||||
//
|
||||
// find the part up to "pack" in 'runtimepath'
|
||||
char_u c = *p4;
|
||||
*p4 = NUL;
|
||||
|
||||
// Find "ffname" in "p_rtp", ignoring '/' vs '\' differences
|
||||
size_t fname_len = STRLEN(ffname);
|
||||
char_u *insp = p_rtp;
|
||||
for (;;) {
|
||||
if (vim_fnamencmp(insp, ffname, fname_len) == 0) {
|
||||
break;
|
||||
}
|
||||
insp = vim_strchr(insp, ',');
|
||||
if (insp == NULL) {
|
||||
break;
|
||||
}
|
||||
insp++;
|
||||
}
|
||||
|
||||
if (insp == NULL) {
|
||||
// not found, append at the end
|
||||
insp = p_rtp + STRLEN(p_rtp);
|
||||
} else {
|
||||
// append after the matching directory.
|
||||
insp += STRLEN(ffname);
|
||||
while (*insp != NUL && *insp != ',') {
|
||||
insp++;
|
||||
}
|
||||
}
|
||||
*p4 = c;
|
||||
|
||||
// check if rtp/pack/name/start/name/after exists
|
||||
char *afterdir = concat_fnames((char *)ffname, "after", true);
|
||||
size_t afterlen = 0;
|
||||
if (os_isdir((char_u *)afterdir)) {
|
||||
afterlen = STRLEN(afterdir) + 1; // add one for comma
|
||||
}
|
||||
|
||||
size_t oldlen = STRLEN(p_rtp);
|
||||
size_t addlen = STRLEN(ffname) + 1; // add one for comma
|
||||
new_rtp = try_malloc(oldlen + addlen + afterlen + 1); // add one for NUL
|
||||
if (new_rtp == NULL) {
|
||||
goto theend;
|
||||
}
|
||||
uintptr_t keep = (uintptr_t)(insp - p_rtp);
|
||||
memmove(new_rtp, p_rtp, keep);
|
||||
new_rtp[keep] = ',';
|
||||
memmove(new_rtp + keep + 1, ffname, addlen);
|
||||
if (p_rtp[keep] != NUL) {
|
||||
memmove(new_rtp + keep + addlen, p_rtp + keep,
|
||||
oldlen - keep + 1);
|
||||
}
|
||||
if (afterlen > 0) {
|
||||
STRCAT(new_rtp, ",");
|
||||
STRCAT(new_rtp, afterdir);
|
||||
}
|
||||
set_option_value((char_u *)"rtp", 0L, new_rtp, 0);
|
||||
xfree(new_rtp);
|
||||
xfree(afterdir);
|
||||
}
|
||||
|
||||
if (cookie != &APP_ADD_DIR) {
|
||||
static const char *plugpat = "%s/plugin/*.vim"; // NOLINT
|
||||
static const char *ftpat = "%s/ftdetect/*.vim"; // NOLINT
|
||||
|
||||
size_t len = STRLEN(ffname) + STRLEN(ftpat);
|
||||
char_u *pat = try_malloc(len + 1);
|
||||
if (pat == NULL) {
|
||||
goto theend;
|
||||
}
|
||||
vim_snprintf((char *)pat, len, plugpat, ffname);
|
||||
source_all_matches(pat);
|
||||
|
||||
char_u *cmd = vim_strsave((char_u *)"g:did_load_filetypes");
|
||||
|
||||
// If runtime/filetype.vim wasn't loaded yet, the scripts will be
|
||||
// found when it loads.
|
||||
if (eval_to_number(cmd) > 0) {
|
||||
do_cmdline_cmd("augroup filetypedetect");
|
||||
vim_snprintf((char *)pat, len, ftpat, ffname);
|
||||
source_all_matches(pat);
|
||||
do_cmdline_cmd("augroup END");
|
||||
}
|
||||
xfree(cmd);
|
||||
xfree(pat);
|
||||
}
|
||||
|
||||
theend:
|
||||
xfree(ffname);
|
||||
}
|
||||
|
||||
static bool did_source_packages = false;
|
||||
|
||||
// ":packloadall"
|
||||
// Find plugins in the package directories and source them.
|
||||
void ex_packloadall(exarg_T *eap)
|
||||
{
|
||||
if (!did_source_packages || (eap != NULL && eap->forceit)) {
|
||||
did_source_packages = true;
|
||||
|
||||
// First do a round to add all directories to 'runtimepath', then load
|
||||
// the plugins. This allows for plugins to use an autoload directory
|
||||
// of another plugin.
|
||||
do_in_path(p_pp, (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR, // NOLINT
|
||||
add_pack_plugin, &APP_ADD_DIR);
|
||||
do_in_path(p_pp, (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR, // NOLINT
|
||||
add_pack_plugin, &APP_LOAD);
|
||||
}
|
||||
}
|
||||
|
||||
/// ":packadd[!] {name}"
|
||||
void ex_packadd(exarg_T *eap)
|
||||
{
|
||||
static const char *plugpat = "pack/*/opt/%s"; // NOLINT
|
||||
|
||||
size_t len = STRLEN(plugpat) + STRLEN(eap->arg);
|
||||
char *pat = (char *)xmallocz(len);
|
||||
vim_snprintf(pat, len, plugpat, eap->arg);
|
||||
do_in_path(p_pp, (char_u *)pat, DIP_ALL + DIP_DIR + DIP_ERR, add_pack_plugin,
|
||||
eap->forceit ? &APP_ADD_DIR : &APP_BOTH);
|
||||
xfree(pat);
|
||||
}
|
||||
|
||||
/// ":options"
|
||||
void ex_options(exarg_T *eap)
|
||||
{
|
||||
|
@ -3316,6 +3316,11 @@ set_one_cmd_context (
|
||||
xp->xp_pattern = arg;
|
||||
break;
|
||||
|
||||
case CMD_packadd:
|
||||
xp->xp_context = EXPAND_PACKADD;
|
||||
xp->xp_pattern = arg;
|
||||
break;
|
||||
|
||||
#ifdef HAVE_WORKING_LIBINTL
|
||||
case CMD_language:
|
||||
p = skiptowhite(arg);
|
||||
@ -4660,41 +4665,42 @@ static struct {
|
||||
char *name;
|
||||
} command_complete[] =
|
||||
{
|
||||
{EXPAND_AUGROUP, "augroup"},
|
||||
{EXPAND_BEHAVE, "behave"},
|
||||
{EXPAND_BUFFERS, "buffer"},
|
||||
{EXPAND_COLORS, "color"},
|
||||
{EXPAND_COMMANDS, "command"},
|
||||
{EXPAND_COMPILER, "compiler"},
|
||||
{EXPAND_CSCOPE, "cscope"},
|
||||
{EXPAND_USER_DEFINED, "custom"},
|
||||
{EXPAND_USER_LIST, "customlist"},
|
||||
{EXPAND_DIRECTORIES, "dir"},
|
||||
{EXPAND_ENV_VARS, "environment"},
|
||||
{EXPAND_EVENTS, "event"},
|
||||
{EXPAND_EXPRESSION, "expression"},
|
||||
{EXPAND_FILES, "file"},
|
||||
{EXPAND_FILES_IN_PATH, "file_in_path"},
|
||||
{EXPAND_FILETYPE, "filetype"},
|
||||
{EXPAND_FUNCTIONS, "function"},
|
||||
{EXPAND_HELP, "help"},
|
||||
{EXPAND_HIGHLIGHT, "highlight"},
|
||||
{EXPAND_HISTORY, "history"},
|
||||
{ EXPAND_AUGROUP, "augroup" },
|
||||
{ EXPAND_BEHAVE, "behave" },
|
||||
{ EXPAND_BUFFERS, "buffer" },
|
||||
{ EXPAND_COLORS, "color" },
|
||||
{ EXPAND_COMMANDS, "command" },
|
||||
{ EXPAND_COMPILER, "compiler" },
|
||||
{ EXPAND_CSCOPE, "cscope" },
|
||||
{ EXPAND_USER_DEFINED, "custom" },
|
||||
{ EXPAND_USER_LIST, "customlist" },
|
||||
{ EXPAND_DIRECTORIES, "dir" },
|
||||
{ EXPAND_ENV_VARS, "environment" },
|
||||
{ EXPAND_EVENTS, "event" },
|
||||
{ EXPAND_EXPRESSION, "expression" },
|
||||
{ EXPAND_FILES, "file" },
|
||||
{ EXPAND_FILES_IN_PATH, "file_in_path" },
|
||||
{ EXPAND_FILETYPE, "filetype" },
|
||||
{ EXPAND_FUNCTIONS, "function" },
|
||||
{ EXPAND_HELP, "help" },
|
||||
{ EXPAND_HIGHLIGHT, "highlight" },
|
||||
{ EXPAND_HISTORY, "history" },
|
||||
#ifdef HAVE_WORKING_LIBINTL
|
||||
{EXPAND_LOCALES, "locale"},
|
||||
{ EXPAND_LOCALES, "locale" },
|
||||
#endif
|
||||
{EXPAND_MAPPINGS, "mapping"},
|
||||
{EXPAND_MENUS, "menu"},
|
||||
{EXPAND_OWNSYNTAX, "syntax"},
|
||||
{EXPAND_SYNTIME, "syntime"},
|
||||
{EXPAND_SETTINGS, "option"},
|
||||
{EXPAND_SHELLCMD, "shellcmd"},
|
||||
{EXPAND_SIGN, "sign"},
|
||||
{EXPAND_TAGS, "tag"},
|
||||
{EXPAND_TAGS_LISTFILES, "tag_listfiles"},
|
||||
{EXPAND_USER, "user"},
|
||||
{EXPAND_USER_VARS, "var"},
|
||||
{0, NULL}
|
||||
{ EXPAND_MAPPINGS, "mapping" },
|
||||
{ EXPAND_MENUS, "menu" },
|
||||
{ EXPAND_OWNSYNTAX, "syntax" },
|
||||
{ EXPAND_SYNTIME, "syntime" },
|
||||
{ EXPAND_SETTINGS, "option" },
|
||||
{ EXPAND_PACKADD, "packadd" },
|
||||
{ EXPAND_SHELLCMD, "shellcmd" },
|
||||
{ EXPAND_SIGN, "sign" },
|
||||
{ EXPAND_TAGS, "tag" },
|
||||
{ EXPAND_TAGS_LISTFILES, "tag_listfiles" },
|
||||
{ EXPAND_USER, "user" },
|
||||
{ EXPAND_USER_VARS, "var" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static void uc_list(char_u *name, size_t name_len)
|
||||
@ -9330,14 +9336,14 @@ static void ex_filetype(exarg_T *eap)
|
||||
}
|
||||
if (STRCMP(arg, "on") == 0 || STRCMP(arg, "detect") == 0) {
|
||||
if (*arg == 'o' || !filetype_detect) {
|
||||
source_runtime((char_u *)FILETYPE_FILE, true);
|
||||
source_runtime((char_u *)FILETYPE_FILE, DIP_ALL);
|
||||
filetype_detect = kTrue;
|
||||
if (plugin) {
|
||||
source_runtime((char_u *)FTPLUGIN_FILE, true);
|
||||
source_runtime((char_u *)FTPLUGIN_FILE, DIP_ALL);
|
||||
filetype_plugin = kTrue;
|
||||
}
|
||||
if (indent) {
|
||||
source_runtime((char_u *)INDENT_FILE, true);
|
||||
source_runtime((char_u *)INDENT_FILE, DIP_ALL);
|
||||
filetype_indent = kTrue;
|
||||
}
|
||||
}
|
||||
@ -9348,15 +9354,15 @@ static void ex_filetype(exarg_T *eap)
|
||||
} else if (STRCMP(arg, "off") == 0) {
|
||||
if (plugin || indent) {
|
||||
if (plugin) {
|
||||
source_runtime((char_u *)FTPLUGOF_FILE, true);
|
||||
source_runtime((char_u *)FTPLUGOF_FILE, DIP_ALL);
|
||||
filetype_plugin = kFalse;
|
||||
}
|
||||
if (indent) {
|
||||
source_runtime((char_u *)INDOFF_FILE, true);
|
||||
source_runtime((char_u *)INDOFF_FILE, DIP_ALL);
|
||||
filetype_indent = kFalse;
|
||||
}
|
||||
} else {
|
||||
source_runtime((char_u *)FTOFF_FILE, true);
|
||||
source_runtime((char_u *)FTOFF_FILE, DIP_ALL);
|
||||
filetype_detect = kFalse;
|
||||
}
|
||||
} else
|
||||
|
@ -3440,6 +3440,7 @@ addstar (
|
||||
|| context == EXPAND_COMPILER
|
||||
|| context == EXPAND_OWNSYNTAX
|
||||
|| context == EXPAND_FILETYPE
|
||||
|| context == EXPAND_PACKADD
|
||||
|| (context == EXPAND_TAGS && fname[0] == '/'))
|
||||
retval = vim_strnsave(fname, len);
|
||||
else {
|
||||
@ -3794,23 +3795,27 @@ ExpandFromContext (
|
||||
|| xp->xp_context == EXPAND_TAGS_LISTFILES)
|
||||
return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
|
||||
if (xp->xp_context == EXPAND_COLORS) {
|
||||
char *directories[] = {"colors", NULL};
|
||||
return ExpandRTDir(pat, num_file, file, directories);
|
||||
char *directories[] = { "colors", NULL };
|
||||
return ExpandRTDir(pat, DIP_START + DIP_OPT, num_file, file, directories);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_COMPILER) {
|
||||
char *directories[] = {"compiler", NULL};
|
||||
return ExpandRTDir(pat, num_file, file, directories);
|
||||
char *directories[] = { "compiler", NULL };
|
||||
return ExpandRTDir(pat, 0, num_file, file, directories);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_OWNSYNTAX) {
|
||||
char *directories[] = {"syntax", NULL};
|
||||
return ExpandRTDir(pat, num_file, file, directories);
|
||||
char *directories[] = { "syntax", NULL };
|
||||
return ExpandRTDir(pat, 0, num_file, file, directories);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_FILETYPE) {
|
||||
char *directories[] = {"syntax", "indent", "ftplugin", NULL};
|
||||
return ExpandRTDir(pat, num_file, file, directories);
|
||||
char *directories[] = { "syntax", "indent", "ftplugin", NULL };
|
||||
return ExpandRTDir(pat, 0, num_file, file, directories);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_USER_LIST)
|
||||
if (xp->xp_context == EXPAND_USER_LIST) {
|
||||
return ExpandUserList(xp, num_file, file);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_PACKADD) {
|
||||
return ExpandPackAddDir(pat, num_file, file);
|
||||
}
|
||||
|
||||
regmatch.regprog = vim_regcomp(pat, p_magic ? RE_MAGIC : 0);
|
||||
if (regmatch.regprog == NULL)
|
||||
@ -4190,12 +4195,16 @@ static int ExpandUserList(expand_T *xp, int *num_file, char_u ***file)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Expand color scheme, compiler or filetype names:
|
||||
* 'runtimepath'/{dirnames}/{pat}.vim
|
||||
* "dirnames" is an array with one or more directory names.
|
||||
*/
|
||||
static int ExpandRTDir(char_u *pat, int *num_file, char_u ***file, char *dirnames[])
|
||||
/// Expand color scheme, compiler or filetype names.
|
||||
/// Search from 'runtimepath':
|
||||
/// 'runtimepath'/{dirnames}/{pat}.vim
|
||||
/// When "flags" has DIP_START: search also from 'start' of 'packpath':
|
||||
/// 'packpath'/pack/ * /start/ * /{dirnames}/{pat}.vim
|
||||
/// When "flags" has DIP_OPT: search also from 'opt' of 'packpath':
|
||||
/// 'packpath'/pack/ * /opt/ * /{dirnames}/{pat}.vim
|
||||
/// "dirnames" is an array with one or more directory names.
|
||||
static int ExpandRTDir(char_u *pat, int flags, int *num_file, char_u ***file,
|
||||
char *dirnames[])
|
||||
{
|
||||
*num_file = 0;
|
||||
*file = NULL;
|
||||
@ -4212,6 +4221,26 @@ static int ExpandRTDir(char_u *pat, int *num_file, char_u ***file, char *dirname
|
||||
xfree(s);
|
||||
}
|
||||
|
||||
if (flags & DIP_START) {
|
||||
for (int i = 0; dirnames[i] != NULL; i++) {
|
||||
size_t size = STRLEN(dirnames[i]) + pat_len + 22;
|
||||
char_u *s = xmalloc(size);
|
||||
snprintf((char *)s, size, "pack/*/start/*/%s/%s*.vim", dirnames[i], pat); // NOLINT
|
||||
globpath(p_pp, s, &ga, 0);
|
||||
xfree(s);
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & DIP_OPT) {
|
||||
for (int i = 0; dirnames[i] != NULL; i++) {
|
||||
size_t size = STRLEN(dirnames[i]) + pat_len + 20;
|
||||
char_u *s = xmalloc(size);
|
||||
snprintf((char *)s, size, "pack/*/opt/*/%s/%s*.vim", dirnames[i], pat); // NOLINT
|
||||
globpath(p_pp, s, &ga, 0);
|
||||
xfree(s);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < ga.ga_len; i++) {
|
||||
char_u *match = ((char_u **)ga.ga_data)[i];
|
||||
char_u *s = match;
|
||||
@ -4241,6 +4270,43 @@ static int ExpandRTDir(char_u *pat, int *num_file, char_u ***file, char *dirname
|
||||
return OK;
|
||||
}
|
||||
|
||||
/// Expand loadplugin names:
|
||||
/// 'packpath'/pack/ * /opt/{pat}
|
||||
static int ExpandPackAddDir(char_u *pat, int *num_file, char_u ***file)
|
||||
{
|
||||
garray_T ga;
|
||||
|
||||
*num_file = 0;
|
||||
*file = NULL;
|
||||
size_t pat_len = STRLEN(pat);
|
||||
ga_init(&ga, (int)sizeof(char *), 10);
|
||||
|
||||
size_t buflen = pat_len + 26;
|
||||
char_u *s = xmalloc(buflen);
|
||||
snprintf((char *)s, buflen, "pack/*/opt/%s*", pat); // NOLINT
|
||||
globpath(p_pp, s, &ga, 0);
|
||||
xfree(s);
|
||||
|
||||
for (int i = 0; i < ga.ga_len; i++) {
|
||||
char_u *match = ((char_u **)ga.ga_data)[i];
|
||||
s = path_tail(match);
|
||||
char_u *e = s + STRLEN(s);
|
||||
memmove(match, s, e - s + 1);
|
||||
}
|
||||
|
||||
if (GA_EMPTY(&ga)) {
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
// Sort and remove duplicates which can happen when specifying multiple
|
||||
// directories in dirnames.
|
||||
ga_remove_duplicate_strings(&ga);
|
||||
|
||||
*file = ga.ga_data;
|
||||
*num_file = ga.ga_len;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
/// Expand `file` for all comma-separated directories in `path`.
|
||||
/// Adds matches to `ga`.
|
||||
|
@ -1223,6 +1223,8 @@ EXTERN char_u e_invalpat[] INIT(= N_(
|
||||
EXTERN char_u e_bufloaded[] INIT(= N_("E139: File is loaded in another buffer"));
|
||||
EXTERN char_u e_notset[] INIT(= N_("E764: Option '%s' is not set"));
|
||||
EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name"));
|
||||
EXTERN char_u e_dirnotf[] INIT(= N_(
|
||||
"E919: Directory not found in '%s': \"%s\""));
|
||||
EXTERN char_u e_unsupportedoption[] INIT(= N_("E519: Option not supported"));
|
||||
|
||||
|
||||
|
@ -1526,8 +1526,7 @@ static int prt_find_resource(char *name, struct prt_ps_resource_S *resource)
|
||||
vim_strcat(buffer, (char_u *)name, MAXPATHL);
|
||||
vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
|
||||
resource->filename[0] = NUL;
|
||||
retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name,
|
||||
resource->filename)
|
||||
retval = (do_in_runtimepath(buffer, 0, prt_resource_name, resource->filename)
|
||||
&& resource->filename[0] != NUL);
|
||||
xfree(buffer);
|
||||
return retval;
|
||||
|
@ -1241,8 +1241,11 @@ static void set_window_layout(mparm_T *paramp)
|
||||
static void load_plugins(void)
|
||||
{
|
||||
if (p_lpl) {
|
||||
source_runtime((char_u *)"plugin/**/*.vim", TRUE);
|
||||
source_runtime((char_u *)"plugin/**/*.vim", DIP_ALL); // NOLINT
|
||||
TIME_MSG("loading plugins");
|
||||
|
||||
ex_packloadall(NULL);
|
||||
TIME_MSG("loading packages");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3187,8 +3187,9 @@ did_set_string_option (
|
||||
for (p = q; *p != NUL; ++p)
|
||||
if (vim_strchr((char_u *)"_.,", *p) != NULL)
|
||||
break;
|
||||
vim_snprintf((char *)fname, 200, "spell/%.*s.vim", (int)(p - q), q);
|
||||
source_runtime(fname, TRUE);
|
||||
vim_snprintf((char *)fname, sizeof(fname), "spell/%.*s.vim",
|
||||
(int)(p - q), q);
|
||||
source_runtime(fname, DIP_ALL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5839,6 +5840,7 @@ set_context_in_set_cmd (
|
||||
if (p == (char_u *)&p_bdir
|
||||
|| p == (char_u *)&p_dir
|
||||
|| p == (char_u *)&p_path
|
||||
|| p == (char_u *)&p_pp
|
||||
|| p == (char_u *)&p_rtp
|
||||
|| p == (char_u *)&p_cdpath
|
||||
|| p == (char_u *)&p_vdir
|
||||
|
@ -456,80 +456,81 @@ EXTERN int p_hid; // 'hidden'
|
||||
// Use P_HID to check if a buffer is to be hidden when it is no longer
|
||||
// visible in a window.
|
||||
# define P_HID(buf) (buf_hide(buf))
|
||||
EXTERN char_u *p_hl; /* 'highlight' */
|
||||
EXTERN int p_hls; /* 'hlsearch' */
|
||||
EXTERN long p_hi; /* 'history' */
|
||||
EXTERN int p_hkmap; /* 'hkmap' */
|
||||
EXTERN int p_hkmapp; /* 'hkmapp' */
|
||||
EXTERN int p_fkmap; /* 'fkmap' */
|
||||
EXTERN int p_altkeymap; /* 'altkeymap' */
|
||||
EXTERN int p_arshape; /* 'arabicshape' */
|
||||
EXTERN int p_icon; /* 'icon' */
|
||||
EXTERN char_u *p_iconstring; /* 'iconstring' */
|
||||
EXTERN int p_ic; /* 'ignorecase' */
|
||||
EXTERN int p_is; /* 'incsearch' */
|
||||
EXTERN int p_im; /* 'insertmode' */
|
||||
EXTERN char_u *p_isf; /* 'isfname' */
|
||||
EXTERN char_u *p_isi; /* 'isident' */
|
||||
EXTERN char_u *p_isp; /* 'isprint' */
|
||||
EXTERN int p_js; /* 'joinspaces' */
|
||||
EXTERN char_u *p_kp; /* 'keywordprg' */
|
||||
EXTERN char_u *p_km; /* 'keymodel' */
|
||||
EXTERN char_u *p_langmap; /* 'langmap'*/
|
||||
EXTERN int p_lnr; /* 'langnoremap'*/
|
||||
EXTERN char_u *p_lm; /* 'langmenu' */
|
||||
EXTERN char_u *p_lispwords; /* 'lispwords' */
|
||||
EXTERN long p_ls; /* 'laststatus' */
|
||||
EXTERN long p_stal; /* 'showtabline' */
|
||||
EXTERN char_u *p_lcs; /* 'listchars' */
|
||||
EXTERN char_u *p_hl; // 'highlight'
|
||||
EXTERN int p_hls; // 'hlsearch'
|
||||
EXTERN long p_hi; // 'history'
|
||||
EXTERN int p_hkmap; // 'hkmap'
|
||||
EXTERN int p_hkmapp; // 'hkmapp'
|
||||
EXTERN int p_fkmap; // 'fkmap'
|
||||
EXTERN int p_altkeymap; // 'altkeymap'
|
||||
EXTERN int p_arshape; // 'arabicshape'
|
||||
EXTERN int p_icon; // 'icon'
|
||||
EXTERN char_u *p_iconstring; // 'iconstring'
|
||||
EXTERN int p_ic; // 'ignorecase'
|
||||
EXTERN int p_is; // 'incsearch'
|
||||
EXTERN int p_im; // 'insertmode'
|
||||
EXTERN char_u *p_isf; // 'isfname'
|
||||
EXTERN char_u *p_isi; // 'isident'
|
||||
EXTERN char_u *p_isp; // 'isprint'
|
||||
EXTERN int p_js; // 'joinspaces'
|
||||
EXTERN char_u *p_kp; // 'keywordprg'
|
||||
EXTERN char_u *p_km; // 'keymodel'
|
||||
EXTERN char_u *p_langmap; // 'langmap'*/
|
||||
EXTERN int p_lnr; // 'langnoremap'*/
|
||||
EXTERN char_u *p_lm; // 'langmenu'
|
||||
EXTERN char_u *p_lispwords; // 'lispwords'
|
||||
EXTERN long p_ls; // 'laststatus'
|
||||
EXTERN long p_stal; // 'showtabline'
|
||||
EXTERN char_u *p_lcs; // 'listchars'
|
||||
|
||||
EXTERN int p_lz; /* 'lazyredraw' */
|
||||
EXTERN int p_lpl; /* 'loadplugins' */
|
||||
EXTERN int p_magic; /* 'magic' */
|
||||
EXTERN char_u *p_mef; /* 'makeef' */
|
||||
EXTERN char_u *p_mp; /* 'makeprg' */
|
||||
EXTERN char_u *p_cc; /* 'colorcolumn' */
|
||||
EXTERN int p_cc_cols[256]; /* array for 'colorcolumn' columns */
|
||||
EXTERN long p_mat; /* 'matchtime' */
|
||||
EXTERN long p_mco; /* 'maxcombine' */
|
||||
EXTERN long p_mfd; /* 'maxfuncdepth' */
|
||||
EXTERN long p_mmd; /* 'maxmapdepth' */
|
||||
EXTERN long p_mm; /* 'maxmem' */
|
||||
EXTERN long p_mmp; /* 'maxmempattern' */
|
||||
EXTERN long p_mmt; /* 'maxmemtot' */
|
||||
EXTERN long p_mis; /* 'menuitems' */
|
||||
EXTERN char_u *p_msm; /* 'mkspellmem' */
|
||||
EXTERN long p_mls; /* 'modelines' */
|
||||
EXTERN char_u *p_mouse; /* 'mouse' */
|
||||
EXTERN char_u *p_mousem; /* 'mousemodel' */
|
||||
EXTERN long p_mouset; /* 'mousetime' */
|
||||
EXTERN int p_more; /* 'more' */
|
||||
EXTERN char_u *p_opfunc; /* 'operatorfunc' */
|
||||
EXTERN char_u *p_para; /* 'paragraphs' */
|
||||
EXTERN int p_paste; /* 'paste' */
|
||||
EXTERN char_u *p_pt; /* 'pastetoggle' */
|
||||
EXTERN char_u *p_pex; /* 'patchexpr' */
|
||||
EXTERN char_u *p_pm; /* 'patchmode' */
|
||||
EXTERN char_u *p_path; /* 'path' */
|
||||
EXTERN char_u *p_cdpath; /* 'cdpath' */
|
||||
EXTERN long p_rdt; /* 'redrawtime' */
|
||||
EXTERN int p_remap; /* 'remap' */
|
||||
EXTERN long p_re; /* 'regexpengine' */
|
||||
EXTERN long p_report; /* 'report' */
|
||||
EXTERN long p_pvh; /* 'previewheight' */
|
||||
EXTERN int p_ari; /* 'allowrevins' */
|
||||
EXTERN int p_ri; /* 'revins' */
|
||||
EXTERN int p_ru; /* 'ruler' */
|
||||
EXTERN char_u *p_ruf; /* 'rulerformat' */
|
||||
EXTERN char_u *p_rtp; /* 'runtimepath' */
|
||||
EXTERN long p_sj; /* 'scrolljump' */
|
||||
EXTERN long p_so; /* 'scrolloff' */
|
||||
EXTERN char_u *p_sbo; /* 'scrollopt' */
|
||||
EXTERN char_u *p_sections; /* 'sections' */
|
||||
EXTERN int p_secure; /* 'secure' */
|
||||
EXTERN char_u *p_sel; /* 'selection' */
|
||||
EXTERN char_u *p_slm; /* 'selectmode' */
|
||||
EXTERN char_u *p_ssop; /* 'sessionoptions' */
|
||||
EXTERN int p_lz; // 'lazyredraw'
|
||||
EXTERN int p_lpl; // 'loadplugins'
|
||||
EXTERN int p_magic; // 'magic'
|
||||
EXTERN char_u *p_mef; // 'makeef'
|
||||
EXTERN char_u *p_mp; // 'makeprg'
|
||||
EXTERN char_u *p_cc; // 'colorcolumn'
|
||||
EXTERN int p_cc_cols[256]; // array for 'colorcolumn' columns
|
||||
EXTERN long p_mat; // 'matchtime'
|
||||
EXTERN long p_mco; // 'maxcombine'
|
||||
EXTERN long p_mfd; // 'maxfuncdepth'
|
||||
EXTERN long p_mmd; // 'maxmapdepth'
|
||||
EXTERN long p_mm; // 'maxmem'
|
||||
EXTERN long p_mmp; // 'maxmempattern'
|
||||
EXTERN long p_mmt; // 'maxmemtot'
|
||||
EXTERN long p_mis; // 'menuitems'
|
||||
EXTERN char_u *p_msm; // 'mkspellmem'
|
||||
EXTERN long p_mls; // 'modelines'
|
||||
EXTERN char_u *p_mouse; // 'mouse'
|
||||
EXTERN char_u *p_mousem; // 'mousemodel'
|
||||
EXTERN long p_mouset; // 'mousetime'
|
||||
EXTERN int p_more; // 'more'
|
||||
EXTERN char_u *p_opfunc; // 'operatorfunc'
|
||||
EXTERN char_u *p_para; // 'paragraphs'
|
||||
EXTERN int p_paste; // 'paste'
|
||||
EXTERN char_u *p_pt; // 'pastetoggle'
|
||||
EXTERN char_u *p_pex; // 'patchexpr'
|
||||
EXTERN char_u *p_pm; // 'patchmode'
|
||||
EXTERN char_u *p_path; // 'path'
|
||||
EXTERN char_u *p_cdpath; // 'cdpath'
|
||||
EXTERN long p_rdt; // 'redrawtime'
|
||||
EXTERN int p_remap; // 'remap'
|
||||
EXTERN long p_re; // 'regexpengine'
|
||||
EXTERN long p_report; // 'report'
|
||||
EXTERN long p_pvh; // 'previewheight'
|
||||
EXTERN int p_ari; // 'allowrevins'
|
||||
EXTERN int p_ri; // 'revins'
|
||||
EXTERN int p_ru; // 'ruler'
|
||||
EXTERN char_u *p_ruf; // 'rulerformat'
|
||||
EXTERN char_u *p_pp; // 'packpath'
|
||||
EXTERN char_u *p_rtp; // 'runtimepath'
|
||||
EXTERN long p_sj; // 'scrolljump'
|
||||
EXTERN long p_so; // 'scrolloff'
|
||||
EXTERN char_u *p_sbo; // 'scrollopt'
|
||||
EXTERN char_u *p_sections; // 'sections'
|
||||
EXTERN int p_secure; // 'secure'
|
||||
EXTERN char_u *p_sel; // 'selection'
|
||||
EXTERN char_u *p_slm; // 'selectmode'
|
||||
EXTERN char_u *p_ssop; // 'sessionoptions'
|
||||
EXTERN unsigned ssop_flags;
|
||||
# ifdef IN_OPTION_C
|
||||
/* Also used for 'viewoptions'! */
|
||||
|
@ -1639,6 +1639,16 @@ return {
|
||||
varname='p_opfunc',
|
||||
defaults={if_true={vi=""}}
|
||||
},
|
||||
{
|
||||
full_name='packpath', abbreviation='pp',
|
||||
type='string', list='onecomma', scope={'global'},
|
||||
deny_duplicates=true,
|
||||
secure=true,
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_pp',
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='paragraphs', abbreviation='para',
|
||||
type='string', scope={'global'},
|
||||
|
@ -2317,16 +2317,14 @@ static void spell_load_lang(char_u *lang)
|
||||
for (round = 1; round <= 2; ++round) {
|
||||
// Find the first spell file for "lang" in 'runtimepath' and load it.
|
||||
vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
|
||||
"spell/%s.%s.spl",
|
||||
lang, spell_enc());
|
||||
r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
|
||||
"spell/%s.%s.spl", lang, spell_enc());
|
||||
r = do_in_runtimepath(fname_enc, 0, spell_load_cb, &sl);
|
||||
|
||||
if (r == FAIL && *sl.sl_lang != NUL) {
|
||||
// Try loading the ASCII version.
|
||||
vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
|
||||
"spell/%s.ascii.spl",
|
||||
lang);
|
||||
r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
|
||||
"spell/%s.ascii.spl", lang);
|
||||
r = do_in_runtimepath(fname_enc, 0, spell_load_cb, &sl);
|
||||
|
||||
if (r == FAIL && *sl.sl_lang != NUL && round == 1
|
||||
&& apply_autocmds(EVENT_SPELLFILEMISSING, lang,
|
||||
@ -2354,7 +2352,7 @@ static void spell_load_lang(char_u *lang)
|
||||
} else if (sl.sl_slang != NULL) {
|
||||
// At least one file was loaded, now load ALL the additions.
|
||||
STRCPY(fname_enc + STRLEN(fname_enc) - 3, "add.spl");
|
||||
do_in_runtimepath(fname_enc, TRUE, spell_load_cb, &sl);
|
||||
do_in_runtimepath(fname_enc, DIP_ALL, spell_load_cb, &sl);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4207,9 +4207,10 @@ static void syn_cmd_include(exarg_T *eap, int syncing)
|
||||
current_syn_inc_tag = ++running_syn_inc_tag;
|
||||
prev_toplvl_grp = curwin->w_s->b_syn_topgrp;
|
||||
curwin->w_s->b_syn_topgrp = sgl_id;
|
||||
if (source ? do_source(eap->arg, FALSE, DOSO_NONE) == FAIL
|
||||
: source_runtime(eap->arg, TRUE) == FAIL)
|
||||
if (source ? do_source(eap->arg, false, DOSO_NONE) == FAIL
|
||||
: source_runtime(eap->arg, DIP_ALL) == FAIL) {
|
||||
EMSG2(_(e_notopen), eap->arg);
|
||||
}
|
||||
curwin->w_s->b_syn_topgrp = prev_toplvl_grp;
|
||||
current_syn_inc_tag = prev_syn_inc_tag;
|
||||
}
|
||||
@ -6023,12 +6024,12 @@ init_highlight (
|
||||
if (get_var_value((char_u *)"g:syntax_on") != NULL) {
|
||||
static int recursive = 0;
|
||||
|
||||
if (recursive >= 5)
|
||||
if (recursive >= 5) {
|
||||
EMSG(_("E679: recursive loop loading syncolor.vim"));
|
||||
else {
|
||||
++recursive;
|
||||
(void)source_runtime((char_u *)"syntax/syncolor.vim", TRUE);
|
||||
--recursive;
|
||||
} else {
|
||||
recursive++;
|
||||
(void)source_runtime((char_u *)"syntax/syncolor.vim", DIP_ALL);
|
||||
recursive--;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6041,22 +6042,24 @@ int load_colors(char_u *name)
|
||||
{
|
||||
char_u *buf;
|
||||
int retval = FAIL;
|
||||
static int recursive = FALSE;
|
||||
static int recursive = false;
|
||||
|
||||
/* When being called recursively, this is probably because setting
|
||||
* 'background' caused the highlighting to be reloaded. This means it is
|
||||
* working, thus we should return OK. */
|
||||
if (recursive)
|
||||
// When being called recursively, this is probably because setting
|
||||
// 'background' caused the highlighting to be reloaded. This means it is
|
||||
// working, thus we should return OK.
|
||||
if (recursive) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
recursive = TRUE;
|
||||
buf = xmalloc(STRLEN(name) + 12);
|
||||
sprintf((char *)buf, "colors/%s.vim", name);
|
||||
retval = source_runtime(buf, FALSE);
|
||||
recursive = true;
|
||||
size_t buflen = STRLEN(name) + 12;
|
||||
buf = xmalloc(buflen);
|
||||
snprintf((char *)buf, buflen, "colors/%s.vim", name);
|
||||
retval = source_runtime(buf, DIP_START + DIP_OPT);
|
||||
xfree(buf);
|
||||
apply_autocmds(EVENT_COLORSCHEME, name, curbuf->b_fname, FALSE, curbuf);
|
||||
|
||||
recursive = FALSE;
|
||||
recursive = false;
|
||||
ui_refresh();
|
||||
|
||||
return retval;
|
||||
|
@ -2023,9 +2023,8 @@ get_tagfname (
|
||||
if (first) {
|
||||
ga_clear_strings(&tag_fnames);
|
||||
ga_init(&tag_fnames, (int)sizeof(char_u *), 10);
|
||||
do_in_runtimepath((char_u *)
|
||||
"doc/tags doc/tags-??"
|
||||
, TRUE, found_tagfile_cb, NULL);
|
||||
do_in_runtimepath((char_u *)"doc/tags doc/tags-??", DIP_ALL,
|
||||
found_tagfile_cb, NULL);
|
||||
}
|
||||
|
||||
if (tnp->tn_hf_idx >= tag_fnames.ga_len) {
|
||||
|
@ -75,7 +75,9 @@ static char *features[] = {
|
||||
|
||||
// clang-format off
|
||||
static int included_patches[] = {
|
||||
1973,
|
||||
1960,
|
||||
1840,
|
||||
1832,
|
||||
1831,
|
||||
1809,
|
||||
@ -87,9 +89,11 @@ static int included_patches[] = {
|
||||
1753,
|
||||
1728,
|
||||
1716,
|
||||
1712,
|
||||
1695,
|
||||
1654,
|
||||
1652,
|
||||
1649,
|
||||
1643,
|
||||
1641,
|
||||
// 1624 NA
|
||||
@ -98,7 +102,7 @@ static int included_patches[] = {
|
||||
// 1599 NA
|
||||
// 1598 NA
|
||||
// 1597 NA
|
||||
// 1596,
|
||||
1596,
|
||||
// 1595 NA
|
||||
// 1594 NA
|
||||
// 1593 NA
|
||||
@ -141,11 +145,11 @@ static int included_patches[] = {
|
||||
// 1557,
|
||||
// 1556 NA
|
||||
// 1555 NA
|
||||
// 1554,
|
||||
// 1553,
|
||||
// 1552,
|
||||
// 1551,
|
||||
// 1550,
|
||||
1554,
|
||||
1553,
|
||||
1552,
|
||||
1551,
|
||||
1550,
|
||||
// 1549,
|
||||
// 1548,
|
||||
// 1547,
|
||||
@ -167,7 +171,7 @@ static int included_patches[] = {
|
||||
// 1531 NA
|
||||
// 1530 NA
|
||||
// 1529 NA
|
||||
// 1528,
|
||||
1528,
|
||||
// 1527 NA
|
||||
// 1526 NA
|
||||
// 1525 NA
|
||||
@ -196,28 +200,28 @@ static int included_patches[] = {
|
||||
// 1502 NA
|
||||
// 1501 NA
|
||||
1500,
|
||||
// 1499,
|
||||
1499,
|
||||
// 1498 NA
|
||||
// 1497 NA
|
||||
// 1496 NA
|
||||
// 1495 NA
|
||||
// 1494,
|
||||
// 1493 NA
|
||||
// 1492,
|
||||
1492,
|
||||
// 1491,
|
||||
// 1490 NA
|
||||
// 1489 NA
|
||||
// 1488 NA
|
||||
// 1487 NA
|
||||
// 1486,
|
||||
1486,
|
||||
// 1485 NA
|
||||
// 1484 NA
|
||||
// 1483 NA
|
||||
// 1482 NA
|
||||
// 1481 NA
|
||||
// 1480,
|
||||
// 1479,
|
||||
// 1478,
|
||||
1480,
|
||||
1479,
|
||||
1478,
|
||||
// 1477,
|
||||
// 1476 NA
|
||||
// 1475 NA
|
||||
@ -299,7 +303,7 @@ static int included_patches[] = {
|
||||
// 1399 NA
|
||||
// 1398 NA
|
||||
1397,
|
||||
// 1396,
|
||||
1396,
|
||||
// 1395 NA
|
||||
1394,
|
||||
// 1393 NA
|
||||
@ -307,11 +311,11 @@ static int included_patches[] = {
|
||||
// 1391 NA
|
||||
// 1390 NA
|
||||
// 1389 NA
|
||||
// 1388,
|
||||
1388,
|
||||
// 1387 NA
|
||||
// 1386 NA
|
||||
// 1385 NA
|
||||
// 1384,
|
||||
1384,
|
||||
// 1383 NA
|
||||
// 1382 NA
|
||||
// 1381 NA
|
||||
|
@ -174,6 +174,7 @@ enum {
|
||||
EXPAND_USER,
|
||||
EXPAND_SYNTIME,
|
||||
EXPAND_USER_ADDR_TYPE,
|
||||
EXPAND_PACKADD,
|
||||
};
|
||||
|
||||
|
||||
@ -307,4 +308,12 @@ enum {
|
||||
# define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr( \
|
||||
VV_HLSEARCH, !no_hlsearch && p_hls)
|
||||
|
||||
// Used for flags in do_in_path()
|
||||
#define DIP_ALL 0x01 // all matches, not just the first one
|
||||
#define DIP_DIR 0x02 // find directories instead of files
|
||||
#define DIP_ERR 0x04 // give an error message when none found
|
||||
#define DIP_START 0x08 // also use "start" directory in 'packpath'
|
||||
#define DIP_OPT 0x10 // also use "opt" directory in 'packpath'
|
||||
#define DIP_NORTP 0x20 // do not use 'runtimepath'
|
||||
|
||||
#endif /* NVIM_VIM_H */
|
||||
|
350
test/functional/legacy/packadd_spec.lua
Normal file
350
test/functional/legacy/packadd_spec.lua
Normal file
@ -0,0 +1,350 @@
|
||||
-- Tests for 'packpath' and :packadd
|
||||
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local clear, source, execute = helpers.clear, helpers.source, helpers.execute
|
||||
local call, eq, nvim = helpers.call, helpers.eq, helpers.meths
|
||||
local feed = helpers.feed
|
||||
|
||||
local function expected_empty()
|
||||
eq({}, nvim.get_vvar('errors'))
|
||||
end
|
||||
|
||||
describe('packadd', function()
|
||||
before_each(function()
|
||||
clear()
|
||||
|
||||
source([=[
|
||||
func SetUp()
|
||||
let s:topdir = expand('%:p:h') . '/Xdir'
|
||||
exe 'set packpath=' . s:topdir
|
||||
let s:plugdir = s:topdir . '/pack/mine/opt/mytest'
|
||||
endfunc
|
||||
|
||||
func TearDown()
|
||||
call delete(s:topdir, 'rf')
|
||||
endfunc
|
||||
|
||||
func Test_packadd()
|
||||
call mkdir(s:plugdir . '/plugin', 'p')
|
||||
call mkdir(s:plugdir . '/ftdetect', 'p')
|
||||
call mkdir(s:plugdir . '/after', 'p')
|
||||
set rtp&
|
||||
let rtp = &rtp
|
||||
filetype on
|
||||
|
||||
exe 'split ' . s:plugdir . '/plugin/test.vim'
|
||||
call setline(1, 'let g:plugin_works = 42')
|
||||
wq
|
||||
|
||||
exe 'split ' . s:plugdir . '/ftdetect/test.vim'
|
||||
call setline(1, 'let g:ftdetect_works = 17')
|
||||
wq
|
||||
|
||||
packadd mytest
|
||||
|
||||
call assert_true(42, g:plugin_works)
|
||||
call assert_true(17, g:ftdetect_works)
|
||||
call assert_true(len(&rtp) > len(rtp))
|
||||
call assert_true(&rtp =~ (s:plugdir . '\($\|,\)'))
|
||||
call assert_true(&rtp =~ (s:plugdir . '/after$'))
|
||||
|
||||
" Check exception
|
||||
call assert_fails("packadd directorynotfound", 'E919:')
|
||||
call assert_fails("packadd", 'E471:')
|
||||
endfunc
|
||||
|
||||
func Test_packadd_noload()
|
||||
call mkdir(s:plugdir . '/plugin', 'p')
|
||||
call mkdir(s:plugdir . '/syntax', 'p')
|
||||
set rtp&
|
||||
let rtp = &rtp
|
||||
|
||||
exe 'split ' . s:plugdir . '/plugin/test.vim'
|
||||
call setline(1, 'let g:plugin_works = 42')
|
||||
wq
|
||||
let g:plugin_works = 0
|
||||
|
||||
packadd! mytest
|
||||
|
||||
call assert_true(len(&rtp) > len(rtp))
|
||||
call assert_true(&rtp =~ (s:plugdir . '\($\|,\)'))
|
||||
call assert_equal(0, g:plugin_works)
|
||||
|
||||
" check the path is not added twice
|
||||
let new_rtp = &rtp
|
||||
packadd! mytest
|
||||
call assert_equal(new_rtp, &rtp)
|
||||
endfunc
|
||||
|
||||
func Test_packloadall()
|
||||
" plugin foo with an autoload directory
|
||||
let fooplugindir = &packpath . '/pack/mine/start/foo/plugin'
|
||||
call mkdir(fooplugindir, 'p')
|
||||
call writefile(['let g:plugin_foo_number = 1234',
|
||||
\ 'let g:plugin_foo_auto = bbb#value',
|
||||
\ 'let g:plugin_extra_auto = extra#value'], fooplugindir . '/bar.vim')
|
||||
let fooautodir = &packpath . '/pack/mine/start/foo/autoload'
|
||||
call mkdir(fooautodir, 'p')
|
||||
call writefile(['let bar#value = 77'], fooautodir . '/bar.vim')
|
||||
|
||||
" plugin aaa with an autoload directory
|
||||
let aaaplugindir = &packpath . '/pack/mine/start/aaa/plugin'
|
||||
call mkdir(aaaplugindir, 'p')
|
||||
call writefile(['let g:plugin_aaa_number = 333',
|
||||
\ 'let g:plugin_aaa_auto = bar#value'], aaaplugindir . '/bbb.vim')
|
||||
let aaaautodir = &packpath . '/pack/mine/start/aaa/autoload'
|
||||
call mkdir(aaaautodir, 'p')
|
||||
call writefile(['let bbb#value = 55'], aaaautodir . '/bbb.vim')
|
||||
|
||||
" plugin extra with only an autoload directory
|
||||
let extraautodir = &packpath . '/pack/mine/start/extra/autoload'
|
||||
call mkdir(extraautodir, 'p')
|
||||
call writefile(['let extra#value = 99'], extraautodir . '/extra.vim')
|
||||
|
||||
packloadall
|
||||
call assert_equal(1234, g:plugin_foo_number)
|
||||
call assert_equal(55, g:plugin_foo_auto)
|
||||
call assert_equal(99, g:plugin_extra_auto)
|
||||
call assert_equal(333, g:plugin_aaa_number)
|
||||
call assert_equal(77, g:plugin_aaa_auto)
|
||||
|
||||
" only works once
|
||||
call writefile(['let g:plugin_bar_number = 4321'],
|
||||
\ fooplugindir . '/bar2.vim')
|
||||
packloadall
|
||||
call assert_false(exists('g:plugin_bar_number'))
|
||||
|
||||
" works when ! used
|
||||
packloadall!
|
||||
call assert_equal(4321, g:plugin_bar_number)
|
||||
endfunc
|
||||
|
||||
func Test_helptags()
|
||||
let docdir1 = &packpath . '/pack/mine/start/foo/doc'
|
||||
let docdir2 = &packpath . '/pack/mine/start/bar/doc'
|
||||
call mkdir(docdir1, 'p')
|
||||
call mkdir(docdir2, 'p')
|
||||
call writefile(['look here: *look-here*'], docdir1 . '/bar.txt')
|
||||
call writefile(['look away: *look-away*'], docdir2 . '/foo.txt')
|
||||
exe 'set rtp=' . &packpath . '/pack/mine/start/foo,' . &packpath . '/pack/mine/start/bar'
|
||||
|
||||
helptags ALL
|
||||
|
||||
let tags1 = readfile(docdir1 . '/tags')
|
||||
call assert_true(tags1[0] =~ 'look-here')
|
||||
let tags2 = readfile(docdir2 . '/tags')
|
||||
call assert_true(tags2[0] =~ 'look-away')
|
||||
endfunc
|
||||
|
||||
func Test_colorscheme()
|
||||
let colordirrun = &packpath . '/runtime/colors'
|
||||
let colordirstart = &packpath . '/pack/mine/start/foo/colors'
|
||||
let colordiropt = &packpath . '/pack/mine/opt/bar/colors'
|
||||
call mkdir(colordirrun, 'p')
|
||||
call mkdir(colordirstart, 'p')
|
||||
call mkdir(colordiropt, 'p')
|
||||
call writefile(['let g:found_one = 1'], colordirrun . '/one.vim')
|
||||
call writefile(['let g:found_two = 1'], colordirstart . '/two.vim')
|
||||
call writefile(['let g:found_three = 1'], colordiropt . '/three.vim')
|
||||
exe 'set rtp=' . &packpath . '/runtime'
|
||||
|
||||
colorscheme one
|
||||
call assert_equal(1, g:found_one)
|
||||
colorscheme two
|
||||
call assert_equal(1, g:found_two)
|
||||
colorscheme three
|
||||
call assert_equal(1, g:found_three)
|
||||
endfunc
|
||||
|
||||
func Test_runtime()
|
||||
let rundir = &packpath . '/runtime/extra'
|
||||
let startdir = &packpath . '/pack/mine/start/foo/extra'
|
||||
let optdir = &packpath . '/pack/mine/opt/bar/extra'
|
||||
call mkdir(rundir, 'p')
|
||||
call mkdir(startdir, 'p')
|
||||
call mkdir(optdir, 'p')
|
||||
call writefile(['let g:sequence .= "run"'], rundir . '/bar.vim')
|
||||
call writefile(['let g:sequence .= "start"'], startdir . '/bar.vim')
|
||||
call writefile(['let g:sequence .= "foostart"'], startdir . '/foo.vim')
|
||||
call writefile(['let g:sequence .= "opt"'], optdir . '/bar.vim')
|
||||
call writefile(['let g:sequence .= "xxxopt"'], optdir . '/xxx.vim')
|
||||
exe 'set rtp=' . &packpath . '/runtime'
|
||||
|
||||
let g:sequence = ''
|
||||
runtime extra/bar.vim
|
||||
call assert_equal('run', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime START extra/bar.vim
|
||||
call assert_equal('start', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime OPT extra/bar.vim
|
||||
call assert_equal('opt', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime PACK extra/bar.vim
|
||||
call assert_equal('start', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime! PACK extra/bar.vim
|
||||
call assert_equal('startopt', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime PACK extra/xxx.vim
|
||||
call assert_equal('xxxopt', g:sequence)
|
||||
|
||||
let g:sequence = ''
|
||||
runtime ALL extra/bar.vim
|
||||
call assert_equal('run', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime ALL extra/foo.vim
|
||||
call assert_equal('foostart', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime! ALL extra/xxx.vim
|
||||
call assert_equal('xxxopt', g:sequence)
|
||||
let g:sequence = ''
|
||||
runtime! ALL extra/bar.vim
|
||||
call assert_equal('runstartopt', g:sequence)
|
||||
endfunc
|
||||
]=])
|
||||
call('SetUp')
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
call('TearDown')
|
||||
end)
|
||||
|
||||
it('is working', function()
|
||||
call('Test_packadd')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with packadd!', function()
|
||||
call('Test_packadd_noload')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with :packloadall', function()
|
||||
call('Test_packloadall')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with helptags', function()
|
||||
call('Test_helptags')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with colorschemes', function()
|
||||
call('Test_colorscheme')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with :runtime [what]', function()
|
||||
call('Test_runtime')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
describe('command line completion', function()
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local screen
|
||||
|
||||
before_each(function()
|
||||
screen = Screen.new(30, 5)
|
||||
screen:attach()
|
||||
screen:set_default_attr_ids({
|
||||
[1] = {
|
||||
foreground = Screen.colors.Black,
|
||||
background = Screen.colors.Yellow,
|
||||
},
|
||||
[2] = {bold = true, reverse = true}
|
||||
})
|
||||
local NonText = Screen.colors.Blue
|
||||
screen:set_default_attr_ignore({{}, {bold=true, foreground=NonText}})
|
||||
|
||||
execute([[let optdir1 = &packpath . '/pack/mine/opt']])
|
||||
execute([[let optdir2 = &packpath . '/pack/candidate/opt']])
|
||||
execute([[call mkdir(optdir1 . '/pluginA', 'p')]])
|
||||
execute([[call mkdir(optdir1 . '/pluginC', 'p')]])
|
||||
execute([[call mkdir(optdir2 . '/pluginB', 'p')]])
|
||||
execute([[call mkdir(optdir2 . '/pluginC', 'p')]])
|
||||
end)
|
||||
|
||||
it('works', function()
|
||||
feed(':packadd <Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{1:pluginA}{2: pluginB pluginC }|
|
||||
:packadd pluginA^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:pluginA }{1:pluginB}{2: pluginC }|
|
||||
:packadd pluginB^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:pluginA pluginB }{1:pluginC}{2: }|
|
||||
:packadd pluginC^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:pluginA pluginB pluginC }|
|
||||
:packadd ^ |
|
||||
]=])
|
||||
end)
|
||||
|
||||
it('works for colorschemes', function()
|
||||
source([[
|
||||
let colordirrun = &packpath . '/runtime/colors'
|
||||
let colordirstart = &packpath . '/pack/mine/start/foo/colors'
|
||||
let colordiropt = &packpath . '/pack/mine/opt/bar/colors'
|
||||
call mkdir(colordirrun, 'p')
|
||||
call mkdir(colordirstart, 'p')
|
||||
call mkdir(colordiropt, 'p')
|
||||
call writefile(['let g:found_one = 1'], colordirrun . '/one.vim')
|
||||
call writefile(['let g:found_two = 1'], colordirstart . '/two.vim')
|
||||
call writefile(['let g:found_three = 1'], colordiropt . '/three.vim')
|
||||
exe 'set rtp=' . &packpath . '/runtime']])
|
||||
|
||||
feed(':colorscheme <Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{1:one}{2: three two }|
|
||||
:colorscheme one^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:one }{1:three}{2: two }|
|
||||
:colorscheme three^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:one three }{1:two}{2: }|
|
||||
:colorscheme two^ |
|
||||
]=])
|
||||
feed('<Tab>')
|
||||
screen:expect([=[
|
||||
|
|
||||
~ |
|
||||
~ |
|
||||
{2:one three two }|
|
||||
:colorscheme ^ |
|
||||
]=])
|
||||
end)
|
||||
end)
|
||||
end)
|
Loading…
Reference in New Issue
Block a user