Compare commits
120 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b283a8a680 | ||
|
|
0f18b6d17b | ||
|
|
43c60eda2a | ||
|
|
ea3db914c0 | ||
|
|
d98c0b63ab | ||
|
|
3180fe6c6d | ||
|
|
3c01c4a028 | ||
|
|
284d1c24e2 | ||
|
|
91cd59a0a2 | ||
|
|
219c7d0638 | ||
|
|
ab067a21b9 | ||
|
|
7cc96923c4 | ||
|
|
7f829cab35 | ||
|
|
0b76ad53b3 | ||
|
|
705724e430 | ||
|
|
a259d8d30b | ||
|
|
92be6e3f46 | ||
|
|
5feabe00c4 | ||
|
|
9f2d020d39 | ||
|
|
21109272f5 | ||
|
|
0c3064b39b | ||
|
|
b09920203a | ||
|
|
df54382eac | ||
|
|
70b3e706b4 | ||
|
|
e258368b4f | ||
|
|
db661fb95d | ||
|
|
5d98dc2a48 | ||
|
|
0ff6aad393 | ||
|
|
4549ece47c | ||
|
|
9a5e5a3e33 | ||
|
|
a6d536829a | ||
|
|
8cbd6dfc0c | ||
|
|
97a2af39cd | ||
|
|
58ceca5cae | ||
|
|
07da94b0f0 | ||
|
|
5b18c248d3 | ||
|
|
842931cd7a | ||
|
|
272ca95fc3 | ||
|
|
7d8ea0b241 | ||
|
|
f8ddb25789 | ||
|
|
89bfc8218c | ||
|
|
50985eb1f0 | ||
|
|
3f169ce17e | ||
|
|
318e7a9c03 | ||
|
|
4b96df5a01 | ||
|
|
a5d5953d59 | ||
|
|
21b9e9773d | ||
|
|
b3de5114ac | ||
|
|
da812e282a | ||
|
|
978d170bdc | ||
|
|
673660ab00 | ||
|
|
8a7d6542b3 | ||
|
|
1d9215b9aa | ||
|
|
7f51bbe0d1 | ||
|
|
03c3bd9fd0 | ||
|
|
dfede9a70b | ||
|
|
2c02d3843a | ||
|
|
c2a60ae10e | ||
|
|
81c3ea7496 | ||
|
|
8bf716cdba | ||
|
|
0d76683e09 | ||
|
|
ade0d39468 | ||
|
|
2387773d93 | ||
|
|
f0764e8bb6 | ||
|
|
538feb56e8 | ||
|
|
a44b3eeafa | ||
|
|
ed5adff1e6 | ||
|
|
fe4bbac116 | ||
|
|
8ba6bb7c94 | ||
|
|
98a336dd49 | ||
|
|
ca33eb256e | ||
|
|
479950f6c9 | ||
|
|
904edabb64 | ||
|
|
1a928c2099 | ||
|
|
6b915c0c0e | ||
|
|
3029bcc094 | ||
|
|
94b6fb78c5 | ||
|
|
3c71aec696 | ||
|
|
109ef128bd | ||
|
|
17e04781f2 | ||
|
|
f2a44e5c48 | ||
|
|
49c57ce500 | ||
|
|
b3d33d8570 | ||
|
|
1470dc35c4 | ||
|
|
ca7c078b79 | ||
|
|
8024f93636 | ||
|
|
ee93b737aa | ||
|
|
c10b521628 | ||
|
|
9df53b62de | ||
|
|
7ebcba61b2 | ||
|
|
9b24dfcb9f | ||
|
|
02ad46394e | ||
|
|
9b4a15d5db | ||
|
|
e05a89ac63 | ||
|
|
2963456ff2 | ||
|
|
ac15fd8c67 | ||
|
|
bf0acff012 | ||
|
|
4ba6441818 | ||
|
|
b16ad96849 | ||
|
|
c838626fea | ||
|
|
b662591e50 | ||
|
|
e2a8f0773e | ||
|
|
da292b07af | ||
|
|
9db2afe46d | ||
|
|
41a4141ecb | ||
|
|
8b7aa2f9b2 | ||
|
|
e31ee86859 | ||
|
|
ce6db0273f | ||
|
|
fbcdf671f0 | ||
|
|
1860bde9d3 | ||
|
|
e73b38f8e1 | ||
|
|
7b94e77132 | ||
|
|
a1353b5352 | ||
|
|
4d7a248b64 | ||
|
|
b376ace1ae | ||
|
|
f0f8055102 | ||
|
|
830c1afc9d | ||
|
|
61d7c0d52c | ||
|
|
ab782c5b6f | ||
|
|
3d8a513b46 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -8,6 +8,7 @@ src/auto/gui_gtk_gresources.h
|
||||
src/objects/.dirstamp
|
||||
src/objects
|
||||
src/tags
|
||||
src/types.vim
|
||||
|
||||
# We do need src/auto/configure.
|
||||
src/auto/config.cache
|
||||
@@ -86,6 +87,7 @@ src/kword_test
|
||||
|
||||
# Generated by "make install"
|
||||
runtime/doc/tags
|
||||
runtime/doc/doctags
|
||||
|
||||
# Generated by "make shadow". The directory names could be anything but we
|
||||
# restrict them to shadow (the default) or shadow-*
|
||||
|
||||
@@ -10,6 +10,7 @@ src/auto/gui_gtk_gresources.h
|
||||
src/objects/.dirstamp
|
||||
src/objects
|
||||
src/tags
|
||||
src/types.vim
|
||||
|
||||
# We do need src/auto/configure.
|
||||
src/auto/config.cache
|
||||
@@ -86,6 +87,7 @@ src/kword_test
|
||||
|
||||
# Generated by "make install"
|
||||
runtime/doc/tags
|
||||
runtime/doc/doctags
|
||||
|
||||
# Generated by "make shadow". The directory names could be anything but we
|
||||
# restrict them to shadow (the default) or shadow-*
|
||||
|
||||
30
.travis.yml
30
.travis.yml
@@ -9,7 +9,7 @@ anchors:
|
||||
- &small
|
||||
BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &normal
|
||||
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &linux-huge
|
||||
BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
|
||||
@@ -21,6 +21,8 @@ anchors:
|
||||
- &asan # ASAN build
|
||||
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
|
||||
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
|
||||
- &shadowopt
|
||||
SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow
|
||||
|
||||
linux: &linux
|
||||
os: linux
|
||||
@@ -133,19 +135,15 @@ script:
|
||||
fi
|
||||
- echo -en "travis_fold:end:build\\r\\033[0K"
|
||||
- set +o errexit
|
||||
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
|
||||
# Show Vim version and also if_xx versions.
|
||||
- |
|
||||
if [[ "${BUILD}" = "yes" ]]; then
|
||||
"${SRCDIR}"/vim --version
|
||||
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null
|
||||
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
|
||||
cat if_ver.txt
|
||||
"${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
"${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
fi
|
||||
- >
|
||||
do_test make ${SHADOWOPT} ${TEST} &&
|
||||
make -C runtime/doc vimtags VIMEXE=../../"${SRCDIR}"/vim &&
|
||||
FOLD_MARKER=travis_fold
|
||||
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
|
||||
- do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
|
||||
- echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
|
||||
|
||||
|
||||
@@ -194,11 +192,15 @@ matrix:
|
||||
- <<: *linux
|
||||
name: normal/clang
|
||||
compiler: clang
|
||||
env: *normal
|
||||
env:
|
||||
- *normal
|
||||
- *shadowopt
|
||||
- <<: *linux
|
||||
name: normal/gcc
|
||||
compiler: gcc
|
||||
env: *normal
|
||||
env:
|
||||
- *normal
|
||||
- *shadowopt
|
||||
- <<: *linux
|
||||
name: huge+coverage/clang
|
||||
compiler: clang
|
||||
@@ -228,5 +230,11 @@ matrix:
|
||||
- *linux-huge
|
||||
- TEST="-C src testgui"
|
||||
after_success: *coverage
|
||||
- <<: *linux
|
||||
name: vimtags/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *normal
|
||||
- TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
||||
|
||||
# vim:set sts=2 sw=2 tw=0 et:
|
||||
|
||||
11
Filelist
11
Filelist
@@ -11,8 +11,10 @@ SRC_ALL = \
|
||||
.cirrus.yml \
|
||||
appveyor.yml \
|
||||
ci/appveyor.bat \
|
||||
ci/if_ver*.vim \
|
||||
src/Make_all.mak \
|
||||
src/README.md \
|
||||
src/README_VIM9.md \
|
||||
src/alloc.h \
|
||||
src/arabic.c \
|
||||
src/arglist.c \
|
||||
@@ -132,6 +134,10 @@ SRC_ALL = \
|
||||
src/version.c \
|
||||
src/version.h \
|
||||
src/vim.h \
|
||||
src/vim9.h \
|
||||
src/vim9compile.c \
|
||||
src/vim9execute.c \
|
||||
src/vim9script.c \
|
||||
src/viminfo.c \
|
||||
src/winclip.c \
|
||||
src/window.c \
|
||||
@@ -177,7 +183,6 @@ SRC_ALL = \
|
||||
src/testdir/dumps/*.dump \
|
||||
src/testdir/samples/*.txt \
|
||||
src/testdir/samples/test000 \
|
||||
src/testdir/if_ver*.vim \
|
||||
src/testdir/color_ramp.vim \
|
||||
src/testdir/silent.wav \
|
||||
src/testdir/popupbounce.vim \
|
||||
@@ -275,6 +280,9 @@ SRC_ALL = \
|
||||
src/proto/usercmd.pro \
|
||||
src/proto/userfunc.pro \
|
||||
src/proto/version.pro \
|
||||
src/proto/vim9compile.pro \
|
||||
src/proto/vim9execute.pro \
|
||||
src/proto/vim9script.pro \
|
||||
src/proto/viminfo.pro \
|
||||
src/proto/winclip.pro \
|
||||
src/proto/window.pro \
|
||||
@@ -652,6 +660,7 @@ SRC_EXTRA = \
|
||||
RT_ALL = \
|
||||
README.txt \
|
||||
README.md \
|
||||
LICENSE \
|
||||
CONTRIBUTING.md \
|
||||
runtime/bugreport.vim \
|
||||
runtime/doc/*.awk \
|
||||
|
||||
78
LICENSE
Normal file
78
LICENSE
Normal file
@@ -0,0 +1,78 @@
|
||||
VIM LICENSE
|
||||
|
||||
I) There are no restrictions on distributing unmodified copies of Vim except
|
||||
that they must include this license text. You can also distribute
|
||||
unmodified parts of Vim, likewise unrestricted except that they must
|
||||
include this license text. You are also allowed to include executables
|
||||
that you made from the unmodified Vim sources, plus your own usage
|
||||
examples and Vim scripts.
|
||||
|
||||
II) It is allowed to distribute a modified (or extended) version of Vim,
|
||||
including executables and/or source code, when the following four
|
||||
conditions are met:
|
||||
1) This license text must be included unmodified.
|
||||
2) The modified Vim must be distributed in one of the following five ways:
|
||||
a) If you make changes to Vim yourself, you must clearly describe in
|
||||
the distribution how to contact you. When the maintainer asks you
|
||||
(in any way) for a copy of the modified Vim you distributed, you
|
||||
must make your changes, including source code, available to the
|
||||
maintainer without fee. The maintainer reserves the right to
|
||||
include your changes in the official version of Vim. What the
|
||||
maintainer will do with your changes and under what license they
|
||||
will be distributed is negotiable. If there has been no negotiation
|
||||
then this license, or a later version, also applies to your changes.
|
||||
The current maintainer is Bram Moolenaar <Bram@vim.org>. If this
|
||||
changes it will be announced in appropriate places (most likely
|
||||
vim.sf.net, www.vim.org and/or comp.editors). When it is completely
|
||||
impossible to contact the maintainer, the obligation to send him
|
||||
your changes ceases. Once the maintainer has confirmed that he has
|
||||
received your changes they will not have to be sent again.
|
||||
b) If you have received a modified Vim that was distributed as
|
||||
mentioned under a) you are allowed to further distribute it
|
||||
unmodified, as mentioned at I). If you make additional changes the
|
||||
text under a) applies to those changes.
|
||||
c) Provide all the changes, including source code, with every copy of
|
||||
the modified Vim you distribute. This may be done in the form of a
|
||||
context diff. You can choose what license to use for new code you
|
||||
add. The changes and their license must not restrict others from
|
||||
making their own changes to the official version of Vim.
|
||||
d) When you have a modified Vim which includes changes as mentioned
|
||||
under c), you can distribute it without the source code for the
|
||||
changes if the following three conditions are met:
|
||||
- The license that applies to the changes permits you to distribute
|
||||
the changes to the Vim maintainer without fee or restriction, and
|
||||
permits the Vim maintainer to include the changes in the official
|
||||
version of Vim without fee or restriction.
|
||||
- You keep the changes for at least three years after last
|
||||
distributing the corresponding modified Vim. When the maintainer
|
||||
or someone who you distributed the modified Vim to asks you (in
|
||||
any way) for the changes within this period, you must make them
|
||||
available to him.
|
||||
- You clearly describe in the distribution how to contact you. This
|
||||
contact information must remain valid for at least three years
|
||||
after last distributing the corresponding modified Vim, or as long
|
||||
as possible.
|
||||
e) When the GNU General Public License (GPL) applies to the changes,
|
||||
you can distribute the modified Vim under the GNU GPL version 2 or
|
||||
any later version.
|
||||
3) A message must be added, at least in the output of the ":version"
|
||||
command and in the intro screen, such that the user of the modified Vim
|
||||
is able to see that it was modified. When distributing as mentioned
|
||||
under 2)e) adding the message is only required for as far as this does
|
||||
not conflict with the license used for the changes.
|
||||
4) The contact information as required under 2)a) and 2)d) must not be
|
||||
removed or changed, except that the person himself can make
|
||||
corrections.
|
||||
|
||||
III) If you distribute a modified version of Vim, you are encouraged to use
|
||||
the Vim license for your changes and make them available to the
|
||||
maintainer, including the source code. The preferred way to do this is
|
||||
by e-mail or by uploading the files to a server and e-mailing the URL.
|
||||
If the number of changes is small (e.g., a modified Makefile) e-mailing a
|
||||
context diff will do. The e-mail address to be used is
|
||||
<maintainer@vim.org>
|
||||
|
||||
IV) It is not allowed to remove this license from the distribution of the Vim
|
||||
sources, parts of it or from a modified version. You may use this
|
||||
license for previous Vim releases instead of the license that they came
|
||||
with, at your option.
|
||||
2
Makefile
2
Makefile
@@ -153,7 +153,7 @@ MINOR = 2
|
||||
# > msvc2015.bat
|
||||
# - Build the console binary:
|
||||
# > nmake -f Make_mvc.mak
|
||||
# - Run the tests and check the ouput:
|
||||
# - Run the tests and check the output:
|
||||
# > nmake -f Make_mvc.mak testclean
|
||||
# > nmake -f Make_mvc.mak test
|
||||
# - Rename (using ../tools/rename.bat):
|
||||
|
||||
10
README.md
10
README.md
@@ -26,10 +26,12 @@ All commands are given with normal keyboard characters, so those who can type
|
||||
with ten fingers can work very fast. Additionally, function keys can be
|
||||
mapped to commands by the user, and the mouse can be used.
|
||||
|
||||
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
|
||||
almost all flavours of UNIX. Porting to other systems should not be very
|
||||
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
|
||||
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
|
||||
flavours of UNIX. Porting to other systems should not be very difficult.
|
||||
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
|
||||
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
|
||||
For Vim9 script see [README_VIM9](README_VIM9.md).
|
||||
|
||||
## Distribution ##
|
||||
|
||||
|
||||
@@ -16,10 +16,10 @@ All commands are given with normal keyboard characters, so those who can type
|
||||
with ten fingers can work very fast. Additionally, function keys can be
|
||||
mapped to commands by the user, and the mouse can be used.
|
||||
|
||||
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
|
||||
almost all flavours of UNIX. Porting to other systems should not be very
|
||||
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
|
||||
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
|
||||
flavours of UNIX. Porting to other systems should not be very difficult.
|
||||
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
|
||||
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
|
||||
|
||||
DISTRIBUTION
|
||||
|
||||
344
README_VIM9.md
Normal file
344
README_VIM9.md
Normal file
@@ -0,0 +1,344 @@
|
||||

|
||||
|
||||
# What is Vim9?
|
||||
|
||||
This is an experimental side of [Vim](https://github.com/vim/vim).
|
||||
It explores ways of making Vim script faster and better.
|
||||
|
||||
WARNING: The Vim9 script features are in the early stages of development,
|
||||
anything can break!
|
||||
|
||||
# Why Vim9?
|
||||
|
||||
## 1. FASTER VIM SCRIPT
|
||||
|
||||
The third item on the poll results of 2018, after popup windows and text
|
||||
properties, is faster Vim script. So how do we do that?
|
||||
|
||||
I have been throwing some ideas around, and soon came to the conclusion
|
||||
that the current way functions are called and executed, with
|
||||
dictionaries for the arguments and local variables, is never going to be
|
||||
very fast. We're lucky if we can make it twice as fast. The overhead
|
||||
of a function call and executing every line is just too high.
|
||||
|
||||
So what then? We can only make something fast by having a new way of
|
||||
defining a function, with similar but different properties of the old
|
||||
way:
|
||||
* Arguments are only available by name, not through the a: dictionary or
|
||||
the a:000 list.
|
||||
* Local variables are not available in an l: dictionary.
|
||||
* A few more things that slow us down, such as exception handling details.
|
||||
|
||||
I Implemented a "proof of concept" and measured the time to run a simple
|
||||
for loop with an addition (Justin used this example in his presentation,
|
||||
full code is below):
|
||||
|
||||
``` vim
|
||||
let sum = 0
|
||||
for i in range(1, 2999999)
|
||||
let sum += i
|
||||
endfor
|
||||
```
|
||||
|
||||
| how | time in sec |
|
||||
| --------| -------- |
|
||||
| Vim old | 5.018541 |
|
||||
| Python | 0.369598 |
|
||||
| Lua | 0.078817 |
|
||||
| Vim new | 0.073595 |
|
||||
|
||||
That looks very promising! It's just one example, but it shows how much
|
||||
we can gain, and also that Vim script can be faster than builtin
|
||||
interfaces.
|
||||
|
||||
In practice the script would not do something useless as counting but change
|
||||
the text. For example, re-indent all the lines:
|
||||
|
||||
``` vim
|
||||
let totallen = 0
|
||||
for i in range(1, 100000)
|
||||
call setline(i, ' ' .. getline(i))
|
||||
let totallen += len(getline(i))
|
||||
endfor
|
||||
```
|
||||
|
||||
| how | time in sec |
|
||||
| --------| -------- |
|
||||
| Vim old | 0.853752 |
|
||||
| Python | 0.304584 |
|
||||
| Lua | 0.286573 |
|
||||
| Vim new | 0.190276 |
|
||||
|
||||
The differences are smaller, but Vim 9 script is clearly the fastest.
|
||||
|
||||
How does Vim9 script work? The function is first compiled into a sequence of
|
||||
instructions. Each instruction has one or two parameters and a stack is
|
||||
used to store intermediate results. Local variables are also on the
|
||||
stack, space is reserved during compilation. This is a fairly normal
|
||||
way of compilation into an intermediate format, specialized for Vim,
|
||||
e.g. each stack item is a typeval_T. And one of the instructions is
|
||||
"execute Ex command", for commands that are not compiled.
|
||||
|
||||
|
||||
## 2. PHASING OUT INTERFACES
|
||||
|
||||
Attempts have been made to implement functionality with built-in script
|
||||
languages such as Python, Perl, Lua, Tcl and Ruby. This never gained much
|
||||
foothold, for various reasons.
|
||||
|
||||
Instead of using script language support in Vim:
|
||||
* Encourage implementing external tools in any language and communicate
|
||||
with them. The job and channel support already makes this possible.
|
||||
Really any language can be used, also Java and Go, which are not
|
||||
available built-in.
|
||||
* Phase out the built-in language interfaces, make maintenance a bit easier
|
||||
and executables easier to build. They will be kept for backwards
|
||||
compatibility, no new features.
|
||||
* Improve the Vim script language, it is used to communicate with the external
|
||||
tool and implements the Vim side of the interface. Also, it can be used when
|
||||
an external tool is undesired.
|
||||
|
||||
All together this creates a clear situation: Vim with the +eval feature
|
||||
will be sufficient for most plugins, while some plugins require
|
||||
installing a tool that can be written in any language. No confusion
|
||||
about having Vim but the plugin not working because some specific
|
||||
language is missing. This is a good long term goal.
|
||||
|
||||
Rationale: Why is it better to run a tool separately from Vim than using a
|
||||
built-in interface and interpreter? Take for example something that is
|
||||
written in Python:
|
||||
* The built-in interface uses the embedded python interpreter. This is less
|
||||
well maintained than the python command. Building Vim with it requires
|
||||
installing developer packages. If loaded dynamically there can be a version
|
||||
mismatch.
|
||||
* When running the tool externally the standard python command can be used,
|
||||
which is quite often available by default or can be easily installed.
|
||||
* The built-in interface has an API that is unique for Vim with Python. This is
|
||||
an extra API to learn.
|
||||
* A .py file can be compiled into a .pyc file and execute much faster.
|
||||
* Inside Vim multi-threading can cause problems, since the Vim core is single
|
||||
threaded. In an external tool there are no such problems.
|
||||
* The Vim part is written in .vim files, the Python part is in .py files, this
|
||||
is nicely separated.
|
||||
* Disadvantage: An interface needs to be made between Vim and Python.
|
||||
JSON is available for this, and it's fairly easy to use. But it still
|
||||
requires implementing asynchronous communication.
|
||||
|
||||
|
||||
## 3. BETTER VIM SCRIPT
|
||||
|
||||
To make Vim faster a new way of defining a function needs to be added.
|
||||
While we are doing that, since the lines in this function won't be fully
|
||||
backwards compatible anyway, we can also make Vim script easier to use.
|
||||
In other words: "less weird". Making it work more like modern
|
||||
programming languages will help. No surprises.
|
||||
|
||||
A good example is how in a function the arguments are prefixed with
|
||||
"a:". No other language I know does that, so let's drop it.
|
||||
|
||||
Taking this one step further is also dropping "s:" for script-local variables;
|
||||
everything at the script level is script-local by default. Since this is not
|
||||
backwards compatible it requires a new script style: Vim9 script!
|
||||
|
||||
It should be possible to convert code from other languages to Vim
|
||||
script. We can add functionality to make this easier. This still needs
|
||||
to be discussed, but we can consider adding type checking and a simple
|
||||
form of classes. If you look at JavaScript for example, it has gone
|
||||
through these stages over time, adding real class support and now
|
||||
TypeScript adds type checking. But we'll have to see how much of that
|
||||
we actually want to include in Vim script. Ideally a conversion tool
|
||||
can take Python, JavaScript or TypeScript code and convert it to Vim
|
||||
script, with only some things that cannot be converted.
|
||||
|
||||
Vim script won't work the same as any specific language, but we can use
|
||||
mechanisms that are commonly known, ideally with the same syntax. One
|
||||
thing I have been thinking of is assignments without ":let". I often
|
||||
make that mistake (after writing JavaScript especially). I think it is
|
||||
possible, if we make local variables shadow commands. That should be OK,
|
||||
if you shadow a command you want to use, just rename the variable.
|
||||
Using "let" and "const" to declare a variable, like in JavaScript and
|
||||
TypeScript, can work:
|
||||
|
||||
|
||||
``` vim
|
||||
def MyFunction(arg: number): number
|
||||
let local = 1
|
||||
let todo = arg
|
||||
const ADD = 88
|
||||
while todo > 0
|
||||
local += ADD
|
||||
--todo
|
||||
endwhile
|
||||
return local
|
||||
enddef
|
||||
```
|
||||
|
||||
The similarity with JavaScript/TypeScript can also be used for dependencies
|
||||
between files. Vim currently uses the `:source` command, which has several
|
||||
disadvantages:
|
||||
* In the sourced script, is not clear what it provides. By default all
|
||||
functions are global and can be used elsewhere.
|
||||
* In a script that sources other scripts, it is not clear what function comes
|
||||
from what sourced script. Finding the implementation is a hassle.
|
||||
* Prevention of loading the whole script twice must be manually implemented.
|
||||
|
||||
We can use the `:import` and `:export` commands from the JavaScript standard to
|
||||
make this much better. For example, in script "myfunction.vim" define a
|
||||
function and export it:
|
||||
|
||||
``` vim
|
||||
vim9script " Vim9 script syntax used here
|
||||
|
||||
let local = 'local variable is not exported, script-local'
|
||||
|
||||
export def MyFunction() " exported function
|
||||
...
|
||||
|
||||
def LocalFunction() " not exported, script-local
|
||||
...
|
||||
```
|
||||
|
||||
And in another script import the function:
|
||||
|
||||
``` vim
|
||||
vim9script " Vim9 script syntax used here
|
||||
|
||||
import MyFunction from 'myfunction.vim'
|
||||
```
|
||||
|
||||
This looks like JavaScript/TypeScript, thus many users will understand the
|
||||
syntax.
|
||||
|
||||
These are ideas, this will take time to design, discuss and implement.
|
||||
Eventually this will lead to Vim 9!
|
||||
|
||||
|
||||
## Code for sum time measurements
|
||||
|
||||
Vim was build with -O2.
|
||||
|
||||
``` vim
|
||||
func VimOld()
|
||||
let sum = 0
|
||||
for i in range(1, 2999999)
|
||||
let sum += i
|
||||
endfor
|
||||
return sum
|
||||
endfunc
|
||||
|
||||
func Python()
|
||||
py3 << END
|
||||
sum = 0
|
||||
for i in range(1, 3000000):
|
||||
sum += i
|
||||
END
|
||||
return py3eval('sum')
|
||||
endfunc
|
||||
|
||||
func Lua()
|
||||
lua << END
|
||||
sum = 0
|
||||
for i = 1, 2999999 do
|
||||
sum = sum + i
|
||||
end
|
||||
END
|
||||
return luaeval('sum')
|
||||
endfunc
|
||||
|
||||
def VimNew()
|
||||
let sum = 0
|
||||
for i in range(1, 2999999)
|
||||
let sum += i
|
||||
endfor
|
||||
return sum
|
||||
enddef
|
||||
|
||||
let start = reltime()
|
||||
echo VimOld()
|
||||
echo 'Vim old: ' .. reltimestr(reltime(start))
|
||||
|
||||
let start = reltime()
|
||||
echo Python()
|
||||
echo 'Python: ' .. reltimestr(reltime(start))
|
||||
|
||||
let start = reltime()
|
||||
echo Lua()
|
||||
echo 'Lua: ' .. reltimestr(reltime(start))
|
||||
|
||||
let start = reltime()
|
||||
echo VimNew()
|
||||
echo 'Vim new: ' .. reltimestr(reltime(start))
|
||||
```
|
||||
|
||||
## Code for indent time measurements
|
||||
|
||||
``` vim
|
||||
def VimNew(): number
|
||||
let totallen = 0
|
||||
for i in range(1, 100000)
|
||||
setline(i, ' ' .. getline(i))
|
||||
totallen += len(getline(i))
|
||||
endfor
|
||||
return totallen
|
||||
enddef
|
||||
|
||||
func VimOld()
|
||||
let totallen = 0
|
||||
for i in range(1, 100000)
|
||||
call setline(i, ' ' .. getline(i))
|
||||
let totallen += len(getline(i))
|
||||
endfor
|
||||
return totallen
|
||||
endfunc
|
||||
|
||||
func Lua()
|
||||
lua << END
|
||||
b = vim.buffer()
|
||||
totallen = 0
|
||||
for i = 1, 100000 do
|
||||
b[i] = " " .. b[i]
|
||||
totallen = totallen + string.len(b[i])
|
||||
end
|
||||
END
|
||||
return luaeval('totallen')
|
||||
endfunc
|
||||
|
||||
func Python()
|
||||
py3 << END
|
||||
cb = vim.current.buffer
|
||||
totallen = 0
|
||||
for i in range(0, 100000):
|
||||
cb[i] = ' ' + cb[i]
|
||||
totallen += len(cb[i])
|
||||
END
|
||||
return py3eval('totallen')
|
||||
endfunc
|
||||
|
||||
new
|
||||
call setline(1, range(100000))
|
||||
let start = reltime()
|
||||
echo VimOld()
|
||||
echo 'Vim old: ' .. reltimestr(reltime(start))
|
||||
bwipe!
|
||||
|
||||
new
|
||||
call setline(1, range(100000))
|
||||
let start = reltime()
|
||||
echo Python()
|
||||
echo 'Python: ' .. reltimestr(reltime(start))
|
||||
bwipe!
|
||||
|
||||
new
|
||||
call setline(1, range(100000))
|
||||
let start = reltime()
|
||||
echo Lua()
|
||||
echo 'Lua: ' .. reltimestr(reltime(start))
|
||||
bwipe!
|
||||
|
||||
new
|
||||
call setline(1, range(100000))
|
||||
let start = reltime()
|
||||
echo VimNew()
|
||||
echo 'Vim new: ' .. reltimestr(reltime(start))
|
||||
bwipe!
|
||||
```
|
||||
@@ -1,6 +1,6 @@
|
||||
README_dos.txt for version 8.2 of Vim: Vi IMproved.
|
||||
|
||||
This file explains the installation of Vim on MS-DOS and MS-Windows systems.
|
||||
This file explains the installation of Vim on MS-Windows systems.
|
||||
See "README.txt" for general information about Vim.
|
||||
|
||||
There are two ways to install Vim:
|
||||
@@ -64,10 +64,6 @@ These are the normal steps to install Vim from the .zip archives:
|
||||
to another location. That is where they will stay, the install program
|
||||
won't move or copy the runtime files.
|
||||
|
||||
Only for the 32 bit DOS version on MS-DOS without DPMI support (trying to
|
||||
run install.exe will produce an error message): Unpack the CSDPMI4B.ZIP
|
||||
archive and follow the instructions in the documentation.
|
||||
|
||||
3. Change to the new directory:
|
||||
cd vim\vim82
|
||||
Run the "install.exe" program. It will ask you a number of questions about
|
||||
@@ -121,7 +117,7 @@ Remarks:
|
||||
set VIM=d:\editors\vim
|
||||
|
||||
- If you have told the "install.exe" program to add the "Edit with Vim" menu
|
||||
entry, you can remove it by running the "uninstal.exe". See
|
||||
entry, you can remove it by running the "uninstall.exe". See
|
||||
":help win32-popup-menu".
|
||||
|
||||
- In Windows 95/98/NT you can create a shortcut to Vim. This works for all
|
||||
@@ -150,5 +146,4 @@ Remarks:
|
||||
|
||||
For further information, type one of these inside Vim:
|
||||
:help dos
|
||||
:help msdos
|
||||
:help win32
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
README_srcdos.txt for version 8.2 of Vim: Vi IMproved.
|
||||
|
||||
See "README.txt" for general information about Vim.
|
||||
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
|
||||
See "README_dos.txt" for installation instructions for MS-Windows.
|
||||
These files are in the runtime archive (vim82rt.zip).
|
||||
|
||||
|
||||
The DOS source archive contains the files needed to compile Vim on MS-DOS or
|
||||
MS-Windows. It is packed for DOS systems, with CR-LF. It also includes the
|
||||
VisVim sources.
|
||||
The DOS source archive contains the files needed to compile Vim on MS-Windows.
|
||||
It is packed for MS-Windows systems, with CR-LF. It also includes the VisVim
|
||||
sources.
|
||||
|
||||
See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
README_w32s.txt for version 8.2 of Vim: Vi IMproved.
|
||||
|
||||
This archive contains the gvim.exe that was specifically compiled for use in
|
||||
the Win32s subsystem in MS-Windows 3.1 and 3.11.
|
||||
|
||||
Also see the README_bindos.txt, README_dos.txt and README.txt files.
|
||||
|
||||
Be careful not to overwrite the Win32s gvim.exe with the another gvim.exe when
|
||||
unpacking another binary archive! Check the output of ":version":
|
||||
Win32s - "MS-Windows 16/32 bit GUI version"
|
||||
Win32 - "MS-Windows 32 bit GUI version"
|
||||
Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
|
||||
|
||||
For further information, type this inside Vim:
|
||||
:help win32s
|
||||
This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
|
||||
systems. However, support for MS-Windows 3.1 and 3.11 has been removed in
|
||||
patch 7.4.1364.
|
||||
See "README.txt" for general information about Vim.
|
||||
|
||||
25
ci/if_ver-1.vim
Normal file
25
ci/if_ver-1.vim
Normal file
@@ -0,0 +1,25 @@
|
||||
" Print all interface versions for Ubuntu. Part 1.
|
||||
|
||||
if 1
|
||||
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
|
||||
|
||||
echo "*** Interface versions ***\n"
|
||||
|
||||
echo 'Lua:'
|
||||
PrintVer lua print(_VERSION)
|
||||
|
||||
echo 'MzScheme:'
|
||||
PrintVer mzscheme (display (version))
|
||||
|
||||
echo 'Perl:'
|
||||
PrintVer perl print $^V
|
||||
|
||||
echo 'Ruby:'
|
||||
PrintVer ruby print RUBY_VERSION
|
||||
|
||||
echo 'Tcl:'
|
||||
PrintVer tcl puts [info patchlevel]
|
||||
|
||||
echo 'Python 2:'
|
||||
PrintVer python print sys.version
|
||||
endif
|
||||
8
ci/if_ver-2.vim
Normal file
8
ci/if_ver-2.vim
Normal file
@@ -0,0 +1,8 @@
|
||||
" Print py3 interface versions for Ubuntu. Part 2.
|
||||
|
||||
if 1
|
||||
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
|
||||
|
||||
echo 'Python 3:'
|
||||
PrintVer python3 print(sys.version)
|
||||
endif
|
||||
12
ci/if_ver-cmd.vim
Normal file
12
ci/if_ver-cmd.vim
Normal file
@@ -0,0 +1,12 @@
|
||||
" Provide 'PrintVer' command to print the interface versions.
|
||||
|
||||
func s:print_ver(lang, ...)
|
||||
if has(a:lang)
|
||||
exec a:lang join(a:000)
|
||||
else
|
||||
echo 'N/A'
|
||||
endif
|
||||
echo ''
|
||||
endfunc
|
||||
|
||||
command -nargs=+ PrintVer call <SID>print_ver(<f-args>)
|
||||
@@ -32,12 +32,12 @@ To build the installable .exe:
|
||||
|
||||
5. Get a "diff.exe" program. If you skip this the built-in diff will always
|
||||
be used (which is fine for most users). If you do have your own
|
||||
"diff.exe" put it in the "../.." directory (above the "vim81" directory,
|
||||
"diff.exe" put it in the "../.." directory (above the "vim82" directory,
|
||||
it's the same for all Vim versions).
|
||||
You can find one in previous Vim versions or in this archive:
|
||||
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz
|
||||
|
||||
6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim81"
|
||||
6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82"
|
||||
directory). This is required for the terminal window.
|
||||
|
||||
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have
|
||||
|
||||
@@ -176,6 +176,7 @@ Page custom SetCustom ValidateCustom
|
||||
!include "lang\japanese.nsi"
|
||||
!include "lang\simpchinese.nsi"
|
||||
!include "lang\tradchinese.nsi"
|
||||
!include "lang\turkish.nsi"
|
||||
!endif
|
||||
|
||||
##########################################################
|
||||
|
||||
@@ -66,12 +66,12 @@ LangString str_desc_start_menu ${LANG_TURKISH} \
|
||||
LangString str_section_edit_with ${LANG_TURKISH} \
|
||||
"Vim ile Aç"
|
||||
LangString str_desc_edit_with ${LANG_TURKISH} \
|
||||
"Vim'i $\"Birlikte aç$\" sağ tıklama menüsüne ekler."
|
||||
"Vim'i $\"Birlikte aç$\" sağ tık menüsüne ekler."
|
||||
|
||||
LangString str_section_vim_rc ${LANG_TURKISH} \
|
||||
"Bir konfigürasyon dosyası oluştur"
|
||||
"Bir yapılandırma dosyası oluştur"
|
||||
LangString str_desc_vim_rc ${LANG_TURKISH} \
|
||||
"Eğer yoksa bir konfigürasyon dosyası (_vimrc) oluşturur."
|
||||
"Eğer yoksa bir yapılandırma dosyası (_vimrc) oluşturur."
|
||||
|
||||
LangString str_group_plugin ${LANG_TURKISH} \
|
||||
"Eklenti dizinleri oluştur"
|
||||
@@ -108,7 +108,7 @@ LangString str_desc_unregister ${LANG_TURKISH} \
|
||||
LangString str_unsection_exe ${LANG_TURKISH} \
|
||||
"Vim programını ve çalıştırma dosyalarını kaldır"
|
||||
LangString str_desc_rm_exe ${LANG_TURKISH} \
|
||||
"Tüm Vim çalıştırılabilir dosyalarını ve diğer dosyaları kaldırır."
|
||||
"Vim çalıştırılabilir dosyalarını ve diğer dosyaları kaldırır."
|
||||
|
||||
LangString str_ungroup_plugin ${LANG_TURKISH} \
|
||||
"Eklenti dizinlerini kaldır"
|
||||
@@ -128,7 +128,7 @@ LangString str_desc_rm_plugin_vim ${LANG_TURKISH} \
|
||||
LangString str_unsection_rootdir ${LANG_TURKISH} \
|
||||
"Vim kök dizinini kaldır"
|
||||
LangString str_desc_rm_rootdir ${LANG_TURKISH} \
|
||||
"Vim kök dizinini kaldırır. Bu dizin Vim konfigürasyon dosyalarını içerir!"
|
||||
"Vim kök dizinini kaldırır. Bu dizin Vim yapılandırma dosyalarını içerir!"
|
||||
|
||||
LangString str_msg_install_fail ${LANG_TURKISH} \
|
||||
"Yükleme başarısız oldu. Yeniden deneyin."
|
||||
|
||||
@@ -22,7 +22,7 @@ if &cp
|
||||
endif
|
||||
if v:version < 702
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of getscript needs vim 7.2"
|
||||
echo "***warning*** this version of GetLatestVimScripts needs vim 7.2"
|
||||
echohl Normal
|
||||
finish
|
||||
endif
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" netrw.vim: Handles file transfer and remote directory listing across
|
||||
" AUTOLOAD SECTION
|
||||
" Date: Nov 29, 2019
|
||||
" Version: 167
|
||||
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
|
||||
" Date: Jan 07, 2020
|
||||
" Version: 168
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
|
||||
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -43,7 +43,7 @@ if exists("s:needspatches")
|
||||
endfor
|
||||
endif
|
||||
|
||||
let g:loaded_netrw = "v167"
|
||||
let g:loaded_netrw = "v168"
|
||||
if !exists("s:NOTE")
|
||||
let s:NOTE = 0
|
||||
let s:WARNING = 1
|
||||
@@ -68,7 +68,7 @@ setl cpo&vim
|
||||
" Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number)
|
||||
" netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number)
|
||||
" (this function can optionally take a list of messages)
|
||||
" Mar 21, 2017 : max errnum currently is 105
|
||||
" Dec 2, 2019 : max errnum currently is 106
|
||||
fun! netrw#ErrorMsg(level,msg,errnum)
|
||||
" call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
|
||||
|
||||
@@ -447,23 +447,9 @@ if !exists("g:netrw_localmovecmd")
|
||||
let g:netrw_localmovecmd= ""
|
||||
endif
|
||||
endif
|
||||
if v:version < 704 || (v:version == 704 && !has("patch1107"))
|
||||
" 1109 provides for delete(tmpdir,"d") which is what will be used
|
||||
if exists("g:netrw_local_rmdir")
|
||||
let g:netrw_localrmdir= g:netrw_local_rmdir
|
||||
call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86)
|
||||
endif
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
if g:netrw_cygwin
|
||||
call s:NetrwInit("g:netrw_localrmdir","rmdir")
|
||||
else
|
||||
let g:netrw_localrmdir = expand("$COMSPEC")
|
||||
let g:netrw_localrmdiropt= " /c rmdir"
|
||||
endif
|
||||
else
|
||||
call s:NetrwInit("g:netrw_localrmdir","rmdir")
|
||||
endif
|
||||
endif
|
||||
" following serves as an example for how to insert a version&patch specific test
|
||||
"if v:version < 704 || (v:version == 704 && !has("patch1107"))
|
||||
"endif
|
||||
call s:NetrwInit("g:netrw_liststyle" , s:THINLIST)
|
||||
" sanity checks
|
||||
if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
|
||||
@@ -5217,8 +5203,8 @@ fun! netrw#BrowseX(fname,remote)
|
||||
if a:remote == 0 && isdirectory(a:fname)
|
||||
" if its really just a local directory, then do a "gf" instead
|
||||
" call Decho("remote≡0 and a:fname<".a:fname."> ".(isdirectory(a:fname)? "is a directory" : "is not a directory"),'~'.expand("<slnum>"))
|
||||
" call Decho("..appears to be a local directory; using gf instead",'~'.expand("<slnum>"))
|
||||
norm! gf
|
||||
" call Decho("..appears to be a local directory; using e ".a:fname." instead",'~'.expand("<slnum>"))
|
||||
exe "e ".a:fname
|
||||
" call Dret("netrw#BrowseX")
|
||||
return
|
||||
elseif a:remote == 1 && a:fname !~ '^https\=:' && a:fname =~ '/$'
|
||||
@@ -7158,17 +7144,8 @@ fun! s:NetrwMarkFileCopy(islocal,...)
|
||||
" call Dret("s:NetrwMarkFileCopy : lcd failure")
|
||||
return
|
||||
endif
|
||||
if v:version < 704 || (v:version == 704 && !has("patch1107"))
|
||||
call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1))
|
||||
if v:shell_error != 0
|
||||
call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80)
|
||||
" " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) )
|
||||
return
|
||||
endif
|
||||
else
|
||||
if delete(tmpdir,"d")
|
||||
call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
|
||||
endif
|
||||
if delete(tmpdir,"d")
|
||||
call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
|
||||
endif
|
||||
else
|
||||
if s:NetrwLcd(curdir)
|
||||
@@ -9587,6 +9564,7 @@ fun! s:NetrwWideListing()
|
||||
" call Decho("setl ma noro",'~'.expand("<slnum>"))
|
||||
let b:netrw_cpf= 0
|
||||
if line("$") >= w:netrw_bannercnt
|
||||
" determine the maximum filename size; use that to set cpf
|
||||
exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
|
||||
NetrwKeepj call histdel("/",-1)
|
||||
else
|
||||
@@ -9594,6 +9572,7 @@ fun! s:NetrwWideListing()
|
||||
" call Dret("NetrwWideListing")
|
||||
return
|
||||
endif
|
||||
" allow for two spaces to separate columns
|
||||
let b:netrw_cpf= b:netrw_cpf + 2
|
||||
" call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf,'~'.expand("<slnum>"))
|
||||
|
||||
@@ -9621,10 +9600,11 @@ fun! s:NetrwWideListing()
|
||||
if newcolend > line("$") | let newcolend= line("$") | endif
|
||||
let newcolqty= newcolend - newcolstart
|
||||
exe newcolstart
|
||||
" COMBAK: both of the visual-mode using lines below are problematic vis-a-vis @*
|
||||
if newcolqty == 0
|
||||
exe "sil! NetrwKeepj norm! 0\<c-v>$h\"ax".w:netrw_bannercnt."G$\"ap"
|
||||
else
|
||||
exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$h\"ax'.w:netrw_bannercnt.'G$\"ap'
|
||||
exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$h"ax'.w:netrw_bannercnt.'G$"ap'
|
||||
endif
|
||||
exe "sil! NetrwKeepj ".newcolstart.','.newcolend.'d _'
|
||||
exe 'sil! NetrwKeepj '.w:netrw_bannercnt
|
||||
@@ -11048,9 +11028,10 @@ fun! s:NetrwLocalRename(path) range
|
||||
" call Dfunc("NetrwLocalRename(path<".a:path.">)")
|
||||
|
||||
" preparation for removing multiple files/directories
|
||||
let ykeep = @@
|
||||
let ctr = a:firstline
|
||||
let svpos = winsaveview()
|
||||
let ykeep = @@
|
||||
let ctr = a:firstline
|
||||
let svpos = winsaveview()
|
||||
let all = 0
|
||||
" call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
|
||||
|
||||
" rename files given by the markfilelist
|
||||
@@ -11078,6 +11059,23 @@ fun! s:NetrwLocalRename(path) range
|
||||
let newname = substitute(oldname,subfrom,subto,'')
|
||||
endif
|
||||
endif
|
||||
if !all && filereadable(newname)
|
||||
call inputsave()
|
||||
let response= input("File<".newname."> already exists; do you want to overwrite it? (y/all/n) ")
|
||||
call inputrestore()
|
||||
if response == "all"
|
||||
let all= 1
|
||||
elseif response != "y" && response != "yes"
|
||||
" refresh the directory
|
||||
" call Decho("refresh the directory listing",'~'.expand("<slnum>"))
|
||||
NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
|
||||
" call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
|
||||
NetrwKeepj call winrestview(svpos)
|
||||
let @@= ykeep
|
||||
" call Dret("NetrwLocalRename")
|
||||
return
|
||||
endif
|
||||
endif
|
||||
call rename(oldname,newname)
|
||||
endfor
|
||||
call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
|
||||
@@ -11101,14 +11099,14 @@ fun! s:NetrwLocalRename(path) range
|
||||
|
||||
NetrwKeepj norm! 0
|
||||
let oldname= s:ComposePath(a:path,curword)
|
||||
" call Decho("oldname<".oldname.">",'~'.expand("<slnum>"))
|
||||
" call Decho("oldname<".oldname.">",'~'.expand("<slnum>"))
|
||||
|
||||
call inputsave()
|
||||
let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
|
||||
call inputrestore()
|
||||
|
||||
call rename(oldname,newname)
|
||||
" call Decho("renaming <".oldname."> to <".newname.">",'~'.expand("<slnum>"))
|
||||
" call Decho("renaming <".oldname."> to <".newname.">",'~'.expand("<slnum>"))
|
||||
|
||||
let ctr= ctr + 1
|
||||
endwhile
|
||||
@@ -11896,6 +11894,9 @@ fun! s:NetrwExe(cmd)
|
||||
" call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
|
||||
exe a:cmd
|
||||
endif
|
||||
if v:shell_error
|
||||
call netrw#ErrorMsg(s:WARNING,"shell signalled an error",106)
|
||||
endif
|
||||
" call Dret("s:NetrwExe : v:shell_error=".v:shell_error)
|
||||
endfun
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" netrwSettings.vim: makes netrw settings simpler
|
||||
" Date: Nov 09, 2016
|
||||
" Maintainer: Charles E Campbell <drchipNOSPAM at campbellfamily dot biz>
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Version: 16
|
||||
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
" tar.vim: Handles browsing tarfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Apr 17, 2013
|
||||
" Version: 29
|
||||
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Date: Jan 07, 2020
|
||||
" Version: 32
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" License: Vim License (see vim's :help license)
|
||||
"
|
||||
" Contains many ideas from Michael Toren's <tar.vim>
|
||||
"
|
||||
" Copyright: Copyright (C) 2005-2011 Charles E. Campbell {{{1
|
||||
" Copyright: Copyright (C) 2005-2017 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
@@ -22,7 +22,7 @@
|
||||
if &cp || exists("g:loaded_tar")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_tar= "v29"
|
||||
let g:loaded_tar= "v32"
|
||||
if v:version < 702
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of tar needs vim 7.2"
|
||||
@@ -48,6 +48,9 @@ endif
|
||||
if !exists("g:tar_writeoptions")
|
||||
let g:tar_writeoptions= "uf"
|
||||
endif
|
||||
if !exists("g:tar_delfile")
|
||||
let g:tar_delfile="--delete -f"
|
||||
endif
|
||||
if !exists("g:netrw_cygwin")
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
|
||||
@@ -109,6 +112,7 @@ fun! tar#Browse(tarfile)
|
||||
" sanity checks
|
||||
if !executable(g:tar_cmd)
|
||||
redraw!
|
||||
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
|
||||
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse")
|
||||
@@ -119,6 +123,7 @@ fun! tar#Browse(tarfile)
|
||||
if a:tarfile !~# '^\a\+://'
|
||||
" if it's an url, don't complain, let url-handlers such as vim do its thing
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">")
|
||||
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
|
||||
endif
|
||||
let &report= repkeep
|
||||
@@ -152,12 +157,27 @@ fun! tar#Browse(tarfile)
|
||||
" assuming cygwin
|
||||
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
|
||||
endif
|
||||
|
||||
let curlast= line("$")
|
||||
if tarfile =~# '\.\(gz\|tgz\)$'
|
||||
let gzip_command = s:get_gzip_command(tarfile)
|
||||
|
||||
if tarfile =~# '\.\(gz\)$'
|
||||
" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
|
||||
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$'
|
||||
if has("unix") && executable("file")
|
||||
let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
|
||||
else
|
||||
let filekind= ""
|
||||
endif
|
||||
|
||||
if filekind =~ "bzip2"
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif filekind =~ "XZ"
|
||||
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
else
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
endif
|
||||
|
||||
elseif tarfile =~# '\.lrp'
|
||||
" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
@@ -184,7 +204,7 @@ fun! tar#Browse(tarfile)
|
||||
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
|
||||
return
|
||||
endif
|
||||
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
|
||||
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~# '\c\%(warning\|error\|inappropriate\|unrecognized\)')
|
||||
redraw!
|
||||
echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
|
||||
keepj sil! %d
|
||||
@@ -197,8 +217,13 @@ fun! tar#Browse(tarfile)
|
||||
return
|
||||
endif
|
||||
|
||||
" set up maps supported for tar
|
||||
setlocal noma nomod ro
|
||||
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
|
||||
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
|
||||
noremap <silent> <buffer> x :call tar#Extract()<cr>
|
||||
if &mouse != ""
|
||||
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>TarBrowseSelect()<cr>
|
||||
endif
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse : b:tarfile<".b:tarfile.">")
|
||||
@@ -235,7 +260,8 @@ fun! s:TarBrowseSelect()
|
||||
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
|
||||
endif
|
||||
|
||||
new
|
||||
" open a new window (tar#Read will read a file into it)
|
||||
noswapfile new
|
||||
if !exists("g:tar_nomax") || g:tar_nomax == 0
|
||||
wincmd _
|
||||
endif
|
||||
@@ -267,7 +293,7 @@ fun! tar#Read(fname,mode)
|
||||
if fname =~ '\.bz2$' && executable("bzcat")
|
||||
let decmp= "|bzcat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.gz$' && executable("zcat")
|
||||
elseif fname =~ '\.t\=gz$' && executable("zcat")
|
||||
let decmp= "|zcat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.lzma$' && executable("lzcat")
|
||||
@@ -291,20 +317,29 @@ fun! tar#Read(fname,mode)
|
||||
endif
|
||||
|
||||
if tarfile =~# '\.bz2$'
|
||||
" call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
elseif tarfile =~# '\.\(gz\|tgz\)$'
|
||||
let gzip_command = s:get_gzip_command(tarfile)
|
||||
" call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1))
|
||||
exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
elseif tarfile =~# '\.\(gz\)$'
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
|
||||
elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)'
|
||||
if has("unix") && executable("file")
|
||||
let filekind= system("file ".shellescape(tarfile,1))
|
||||
else
|
||||
let filekind= ""
|
||||
endif
|
||||
if filekind =~ "bzip2"
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
elseif filekind =~ "XZ"
|
||||
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
else
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
endif
|
||||
|
||||
elseif tarfile =~# '\.lrp$'
|
||||
" call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
|
||||
exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
elseif tarfile =~# '\.lzma$'
|
||||
" call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
|
||||
exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
elseif tarfile =~# '\.\(xz\|txz\)$'
|
||||
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
|
||||
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
else
|
||||
if tarfile =~ '^\s*-'
|
||||
@@ -348,13 +383,14 @@ fun! tar#Write(fname)
|
||||
" sanity checks
|
||||
if !executable(g:tar_cmd)
|
||||
redraw!
|
||||
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
|
||||
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
return
|
||||
endif
|
||||
if !exists("*mkdir")
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, mkdir() doesn't work on your system")
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
@@ -375,6 +411,7 @@ fun! tar#Write(fname)
|
||||
exe "cd ".fnameescape(tmpdir)
|
||||
catch /^Vim\%((\a\+)\)\=:E344/
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) cannot cd to temporary directory")
|
||||
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
@@ -393,8 +430,6 @@ fun! tar#Write(fname)
|
||||
let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','')
|
||||
let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
|
||||
|
||||
let gzip_command = s:get_gzip_command(tarfile)
|
||||
|
||||
" handle compressed archives
|
||||
if tarfile =~# '\.bz2'
|
||||
call system("bzip2 -d -- ".shellescape(tarfile,0))
|
||||
@@ -402,12 +437,12 @@ fun! tar#Write(fname)
|
||||
let compress= "bzip2 -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.gz'
|
||||
call system(gzip_command . " -d -- ".shellescape(tarfile,0))
|
||||
call system("gzip -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.gz','','e')
|
||||
let compress= "gzip -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.tgz'
|
||||
call system(gzip_command . " -d -- ".shellescape(tarfile,0))
|
||||
call system("gzip -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.tgz','.tar','e')
|
||||
let compress= "gzip -- ".shellescape(tarfile,0)
|
||||
let tgz = 1
|
||||
@@ -427,6 +462,7 @@ fun! tar#Write(fname)
|
||||
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname)
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
|
||||
else
|
||||
|
||||
@@ -459,10 +495,11 @@ fun! tar#Write(fname)
|
||||
endif
|
||||
|
||||
" delete old file from tarfile
|
||||
" call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
|
||||
call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
" call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
|
||||
call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
|
||||
else
|
||||
|
||||
@@ -471,6 +508,7 @@ fun! tar#Write(fname)
|
||||
call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
|
||||
elseif exists("compress")
|
||||
" call Decho("call system(".compress.")")
|
||||
@@ -486,11 +524,11 @@ fun! tar#Write(fname)
|
||||
if s:tblfile_{winnr()} =~ '^\a\+://'
|
||||
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
|
||||
let tblfile= s:tblfile_{winnr()}
|
||||
1split|enew
|
||||
1split|noswapfile enew
|
||||
let binkeep= &l:binary
|
||||
let eikeep = &ei
|
||||
set binary ei=all
|
||||
exe "e! ".fnameescape(tarfile)
|
||||
exe "noswapfile e! ".fnameescape(tarfile)
|
||||
call netrw#NetWrite(tblfile)
|
||||
let &ei = eikeep
|
||||
let &l:binary = binkeep
|
||||
@@ -524,7 +562,7 @@ fun! tar#Diff(userfname,fname)
|
||||
" sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes)
|
||||
diffthis
|
||||
wincmd v
|
||||
exe "e ".fnameescape(fname)
|
||||
exe "noswapfile e ".fnameescape(fname)
|
||||
diffthis
|
||||
else
|
||||
redraw!
|
||||
@@ -533,6 +571,119 @@ fun! tar#Diff(userfname,fname)
|
||||
" call Dret("tar#Diff")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Extract: extract a file from a (possibly compressed) tar archive {{{2
|
||||
fun! tar#Extract()
|
||||
" call Dfunc("tar#Extract()")
|
||||
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let fname= getline(".")
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
|
||||
redraw!
|
||||
echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
|
||||
" call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
|
||||
return
|
||||
endif
|
||||
|
||||
" sanity check
|
||||
if fname =~ '^"'
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect")
|
||||
return
|
||||
endif
|
||||
|
||||
let tarball = expand("%")
|
||||
" call Decho("tarball<".tarball.">")
|
||||
let tarbase = substitute(tarball,'\..*$','','')
|
||||
" call Decho("tarbase<".tarbase.">")
|
||||
|
||||
let extractcmd= netrw#WinPath(g:tar_extractcmd)
|
||||
if filereadable(tarbase.".tar")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tgz")
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tgz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."t ".tarbase.".tgz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.gz")
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tbz")
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.bz2")
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".txz")
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.xz")
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
endif
|
||||
|
||||
" restore option
|
||||
let &report= repkeep
|
||||
|
||||
" call Dret("tar#Extract")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" s:Rmdir: {{{2
|
||||
fun! s:Rmdir(fname)
|
||||
@@ -587,10 +738,7 @@ fun! tar#Vimuntar(...)
|
||||
|
||||
" if necessary, decompress the tarball; then, extract it
|
||||
if tartail =~ '\.tgz'
|
||||
let gzip_command = s:get_gzip_command(tarfile)
|
||||
if executable(gzip_command)
|
||||
silent exe "!" . gzip_command . " -d ".shellescape(tartail)
|
||||
elseif executable("gunzip")
|
||||
if executable("gunzip")
|
||||
silent exe "!gunzip ".shellescape(tartail)
|
||||
elseif executable("gzip")
|
||||
silent exe "!gzip -d ".shellescape(tartail)
|
||||
@@ -628,28 +776,6 @@ fun! tar#Vimuntar(...)
|
||||
" call Dret("tar#Vimuntar")
|
||||
endfun
|
||||
|
||||
func s:get_gzip_command(file)
|
||||
" Try using the "file" command to get the actual compression type, since
|
||||
" there is no standard way for the naming: ".tgz", ".tbz", ".txz", etc.
|
||||
" If the "file" command doesn't work fall back to just using the file name.
|
||||
if a:file =~# 'z$'
|
||||
let filetype = system('file ' . a:file)
|
||||
if filetype =~ 'bzip2 compressed' && executable('bzip2')
|
||||
return 'bzip2'
|
||||
endif
|
||||
if filetype =~ 'XZ compressed' && executable('xz')
|
||||
return 'xz'
|
||||
endif
|
||||
endif
|
||||
if a:file =~# 'bz2$'
|
||||
return 'bzip2'
|
||||
endif
|
||||
if a:file =~# 'xz$'
|
||||
return 'xz'
|
||||
endif
|
||||
return 'gzip'
|
||||
endfunc
|
||||
|
||||
" =====================================================================
|
||||
" Modelines And Restoration: {{{1
|
||||
let &cpo= s:keepcpo
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
" zip.vim: Handles browsing zipfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Sep 13, 2016
|
||||
" Version: 28
|
||||
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
|
||||
" Date: Jan 07, 2020
|
||||
" Version: 30
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005-2013 Charles E. Campbell {{{1
|
||||
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
@@ -20,7 +20,7 @@
|
||||
if &cp || exists("g:loaded_zip")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_zip= "v28"
|
||||
let g:loaded_zip= "v30"
|
||||
if v:version < 702
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of zip needs vim 7.2 or later"
|
||||
@@ -68,7 +68,7 @@ fun! zip#Browse(zipfile)
|
||||
" sanity check: ensure that the zipfile has "PK" as its first two letters
|
||||
" (zipped files have a leading PK as a "magic cookie")
|
||||
if !filereadable(a:zipfile) || readfile(a:zipfile, "", 1)[0] !~ '^PK'
|
||||
exe "noautocmd e ".fnameescape(a:zipfile)
|
||||
exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)
|
||||
" call Dret("zip#Browse : not a zipfile<".a:zipfile.">")
|
||||
return
|
||||
" else " Decho
|
||||
@@ -141,8 +141,11 @@ fun! zip#Browse(zipfile)
|
||||
|
||||
" Maps associated with zip plugin
|
||||
setlocal noma nomod ro
|
||||
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
|
||||
noremap <silent> <buffer> x :call zip#Extract()<cr>
|
||||
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
|
||||
noremap <silent> <buffer> x :call zip#Extract()<cr>
|
||||
if &mouse != ""
|
||||
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>ZipBrowseSelect()<cr>
|
||||
endif
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Browse")
|
||||
@@ -175,17 +178,17 @@ fun! s:ZipBrowseSelect()
|
||||
|
||||
" get zipfile to the new-window
|
||||
let zipfile = b:zipfile
|
||||
let curfile= expand("%")
|
||||
let curfile = expand("%")
|
||||
" call Decho("zipfile<".zipfile.">")
|
||||
" call Decho("curfile<".curfile.">")
|
||||
|
||||
new
|
||||
noswapfile new
|
||||
if !exists("g:zip_nomax") || g:zip_nomax == 0
|
||||
wincmd _
|
||||
endif
|
||||
let s:zipfile_{winnr()}= curfile
|
||||
" call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname))
|
||||
exe "e ".fnameescape("zipfile:".zipfile.'::'.fname)
|
||||
exe "noswapfile e ".fnameescape("zipfile:".zipfile.'::'.fname)
|
||||
filetype detect
|
||||
|
||||
let &report= repkeep
|
||||
@@ -339,7 +342,7 @@ fun! zip#Write(fname)
|
||||
let binkeep= &binary
|
||||
let eikeep = &ei
|
||||
set binary ei=all
|
||||
exe "e! ".fnameescape(zipfile)
|
||||
exe "noswapfile e! ".fnameescape(zipfile)
|
||||
call netrw#NetWrite(netzipfile)
|
||||
let &ei = eikeep
|
||||
let &binary = binkeep
|
||||
|
||||
@@ -149,6 +149,7 @@ DOCS = \
|
||||
version7.txt \
|
||||
version8.txt \
|
||||
vi_diff.txt \
|
||||
vim9.txt \
|
||||
visual.txt \
|
||||
windows.txt \
|
||||
workshop.txt
|
||||
@@ -289,6 +290,7 @@ HTMLS = \
|
||||
version8.html \
|
||||
vi_diff.html \
|
||||
vimindex.html \
|
||||
vim9.html \
|
||||
visual.html \
|
||||
windows.html \
|
||||
workshop.html
|
||||
@@ -323,10 +325,7 @@ all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)
|
||||
# Use Vim to generate the tags file. Can only be used when Vim has been
|
||||
# compiled and installed. Supports multiple languages.
|
||||
vimtags: $(DOCS)
|
||||
@if command -v $(VIMEXE); then \
|
||||
$(VIMEXE) --clean -eX -u doctags.vim >/dev/null && \
|
||||
echo "help tags updated"; \
|
||||
else echo "vim executable $(VIMEXE) not found; help tags not updated"; fi
|
||||
@$(VIMEXE) --clean -esX -V1 -u doctags.vim
|
||||
|
||||
# Use "doctags" to generate the tags file. Only works for English!
|
||||
tags: doctags $(DOCS)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2019 Dec 17
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jan 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -374,7 +374,10 @@ Name triggered by ~
|
||||
|
||||
|MenuPopup| just before showing the popup menu
|
||||
|CompleteChanged| after Insert mode completion menu changed
|
||||
|CompleteDone| after Insert mode completion is done
|
||||
|CompleteDonePre| after Insert mode completion is done, before clearing
|
||||
info
|
||||
|CompleteDone| after Insert mode completion is done, after clearing
|
||||
info
|
||||
|
||||
|User| to be used in combination with ":doautocmd"
|
||||
|
||||
@@ -589,8 +592,8 @@ ColorSchemePre Before loading a color scheme. |:colorscheme|
|
||||
CompleteChanged *CompleteChanged*
|
||||
After each time the Insert mode completion
|
||||
menu changed. Not fired on popup menu hide,
|
||||
use |CompleteDone| for that. Never triggered
|
||||
recursively.
|
||||
use |CompleteDonePre| or |CompleteDone| for
|
||||
that. Never triggered recursively.
|
||||
|
||||
Sets these |v:event| keys:
|
||||
completed_item See |complete-items|.
|
||||
@@ -606,10 +609,22 @@ CompleteChanged *CompleteChanged*
|
||||
The size and position of the popup are also
|
||||
available by calling |pum_getpos()|.
|
||||
|
||||
*CompleteDonePre*
|
||||
CompleteDonePre After Insert mode completion is done. Either
|
||||
when something was completed or abandoning
|
||||
completion. |ins-completion|
|
||||
|complete_info()| can be used, the info is
|
||||
cleared after triggering CompleteDonePre.
|
||||
The |v:completed_item| variable contains
|
||||
information about the completed item.
|
||||
|
||||
*CompleteDone*
|
||||
CompleteDone After Insert mode completion is done. Either
|
||||
when something was completed or abandoning
|
||||
completion. |ins-completion|
|
||||
|complete_info()| cannot be used, the info is
|
||||
cleared before triggering CompleteDone. Use
|
||||
CompleteDonePre if you need it.
|
||||
The |v:completed_item| variable contains
|
||||
information about the completed item.
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ other settings apply.
|
||||
|
||||
The debugger features were added for use with Sun's Visual WorkShop Integrated
|
||||
Programming Environment (ipe). However, they were done in as generic a manner
|
||||
as possible so that integration with other debuggers could also these
|
||||
as possible so that integration with other debuggers could also use these
|
||||
features.
|
||||
|
||||
The following compile time preprocessor variables control the features:
|
||||
|
||||
@@ -2,5 +2,12 @@
|
||||
"
|
||||
" Usage: vim -eX -u doctags.vim
|
||||
|
||||
helptags ++t .
|
||||
try
|
||||
helptags ++t .
|
||||
echo 'help tags updated'
|
||||
catch
|
||||
echo v:exception
|
||||
echo 'help tags failed update'
|
||||
endtry
|
||||
echo ''
|
||||
qa!
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Jan 02
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Jan 19
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -12,6 +12,10 @@ Note: Expression evaluation can be disabled at compile time. If this has been
|
||||
done, the features in this document are not available. See |+eval| and
|
||||
|no-eval-feature|.
|
||||
|
||||
This file is about the backwards compatible Vim script. For Vim9 script,
|
||||
which executes much faster, supports type checking and much more, see
|
||||
|vim9.txt|.
|
||||
|
||||
1. Variables |variables|
|
||||
1.1 Variable types
|
||||
1.2 Function references |Funcref|
|
||||
@@ -2512,8 +2516,8 @@ haslocaldir([{winnr} [, {tabnr}]])
|
||||
or |:tcd|
|
||||
hasmapto({what} [, {mode} [, {abbr}]])
|
||||
Number |TRUE| if mapping to {what} exists
|
||||
histadd({history}, {item}) String add an item to a history
|
||||
histdel({history} [, {item}]) String remove an item from a history
|
||||
histadd({history}, {item}) Number add an item to a history
|
||||
histdel({history} [, {item}]) Number remove an item from a history
|
||||
histget({history} [, {index}]) String get the item {index} from a history
|
||||
histnr({history}) Number highest index of a history
|
||||
hlexists({name}) Number |TRUE| if highlight group {name} exists
|
||||
@@ -3047,10 +3051,6 @@ argv([{nr} [, {winid}])
|
||||
The {winid} argument specifies the window ID, see |argc()|.
|
||||
For the Vim command line arguments see |v:argv|.
|
||||
|
||||
|
||||
assert_ functions are documented here: |assert-functions-details|
|
||||
|
||||
|
||||
asin({expr}) *asin()*
|
||||
Return the arc sine of {expr} measured in radians, as a |Float|
|
||||
in the range of [-pi/2, pi/2].
|
||||
@@ -3068,6 +3068,10 @@ asin({expr}) *asin()*
|
||||
{only available when compiled with the |+float| feature}
|
||||
|
||||
|
||||
assert_ functions are documented here: |assert-functions-details|
|
||||
|
||||
|
||||
|
||||
atan({expr}) *atan()*
|
||||
Return the principal value of the arc tangent of {expr}, in
|
||||
the range [-pi/2, +pi/2] radians, as a |Float|.
|
||||
@@ -3935,13 +3939,6 @@ diff_hlID({lnum}, {col}) *diff_hlID()*
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->diff_hlID(col)
|
||||
environ() *environ()*
|
||||
Return all of environment variables as dictionary. You can
|
||||
check if an environment variable exists like this: >
|
||||
:echo has_key(environ(), 'HOME')
|
||||
< Note that the variable name may be CamelCase; to ignore case
|
||||
use this: >
|
||||
:echo index(keys(environ()), 'HOME', 0, 1) != -1
|
||||
|
||||
empty({expr}) *empty()*
|
||||
Return the Number 1 if {expr} is empty, zero otherwise.
|
||||
@@ -3960,6 +3957,14 @@ empty({expr}) *empty()*
|
||||
Can also be used as a |method|: >
|
||||
mylist->empty()
|
||||
|
||||
environ() *environ()*
|
||||
Return all of environment variables as dictionary. You can
|
||||
check if an environment variable exists like this: >
|
||||
:echo has_key(environ(), 'HOME')
|
||||
< Note that the variable name may be CamelCase; to ignore case
|
||||
use this: >
|
||||
:echo index(keys(environ()), 'HOME', 0, 1) != -1
|
||||
|
||||
escape({string}, {chars}) *escape()*
|
||||
Escape the characters in {chars} that occur in {string} with a
|
||||
backslash. Example: >
|
||||
@@ -7084,9 +7089,9 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
|
||||
<
|
||||
*max()*
|
||||
max({expr}) Return the maximum value of all items in {expr}.
|
||||
{expr} can be a list or a dictionary. For a dictionary,
|
||||
it returns the maximum of all values in the dictionary.
|
||||
If {expr} is neither a list nor a dictionary, or one of the
|
||||
{expr} can be a List or a Dictionary. For a Dictionary,
|
||||
it returns the maximum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
an error. An empty |List| or |Dictionary| results in zero.
|
||||
|
||||
@@ -7095,9 +7100,9 @@ max({expr}) Return the maximum value of all items in {expr}.
|
||||
|
||||
< *min()*
|
||||
min({expr}) Return the minimum value of all items in {expr}.
|
||||
{expr} can be a list or a dictionary. For a dictionary,
|
||||
it returns the minimum of all values in the dictionary.
|
||||
If {expr} is neither a list nor a dictionary, or one of the
|
||||
{expr} can be a List or a Dictionary. For a Dictionary,
|
||||
it returns the minimum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
an error. An empty |List| or |Dictionary| results in zero.
|
||||
|
||||
@@ -10360,6 +10365,7 @@ win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
|
||||
then closing {nr}.
|
||||
|
||||
Both {nr} and {target} can be window numbers or |window-ID|s.
|
||||
Both must be in the current tab page.
|
||||
|
||||
Returns zero for success, non-zero for failure.
|
||||
|
||||
@@ -10628,7 +10634,7 @@ xor({expr}, {expr}) *xor()*
|
||||
<
|
||||
|
||||
*feature-list*
|
||||
There are four types of features:
|
||||
There are three types of features:
|
||||
1. Features that are only supported when they have been enabled when Vim
|
||||
was compiled |+feature-list|. Example: >
|
||||
:if has("cindent")
|
||||
@@ -10892,6 +10898,9 @@ New functions can be defined. These can be called just like builtin
|
||||
functions. The function executes a sequence of Ex commands. Normal mode
|
||||
commands can be executed with the |:normal| command.
|
||||
|
||||
This section is about the legacy functions. For the Vim9 functions, which
|
||||
execute much faster, support type checking and more, see |vim9.txt|.
|
||||
|
||||
The function name must start with an uppercase letter, to avoid confusion with
|
||||
builtin functions. To prevent from using the same name in different scripts
|
||||
avoid obvious, short names. A good habit is to start the function name with
|
||||
|
||||
0
runtime/doc/evim-it.1
Executable file → Normal file
0
runtime/doc/evim-it.1
Executable file → Normal file
@@ -307,13 +307,13 @@ all loaded. For example, if this command: >
|
||||
|
||||
produces this output:
|
||||
|
||||
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
|
||||
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim82 ~
|
||||
|
||||
then Vim will load all plugins in these directories and below:
|
||||
|
||||
/etc/vim/plugin/ ~
|
||||
~/.vim/plugin/ ~
|
||||
/usr/local/share/vim/vim60/plugin/ ~
|
||||
/usr/local/share/vim/vim82/plugin/ ~
|
||||
|
||||
Note that the last one is the value of $VIMRUNTIME which has been expanded.
|
||||
|
||||
|
||||
@@ -106,16 +106,15 @@ when you have got a new version):
|
||||
You can also install Vim in the "Send To" menu:
|
||||
1. Start a Windows Explorer
|
||||
2. Navigate to your sendto directory:
|
||||
Windows NT: %windir%\profiles\%user%\sendto (e.g.
|
||||
"c:\winnt\profiles\mattha\sendto")
|
||||
Windows XP: C:\Documents and Settings\%user%\SendTo
|
||||
Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
|
||||
3. Right-click in the file pane and select New->Shortcut
|
||||
4. Follow the shortcut wizard, using the full path to VIM/GVIM.
|
||||
|
||||
When you 'send a file to Vim', Vim changes to that file's directory. Note,
|
||||
however, that any long directory names will appear in their short (MS-Windows)
|
||||
form. This is a limitation of the Windows "Send To" mechanism.
|
||||
however, that any long directory names will appear in their short (MS-DOS)
|
||||
form on some Windows versions. This is a limitation of the Windows "Send To"
|
||||
mechanism.
|
||||
|
||||
*notepad*
|
||||
You could replace notepad.exe with gvim.exe, but that has a few side effects.
|
||||
@@ -169,8 +168,8 @@ you can.
|
||||
Vim Shell Extension
|
||||
HKEY_LOCAL_MACHINE\Software\Vim\Gvim
|
||||
path {path}\gvim.exe
|
||||
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6
|
||||
DisplayName Vim 5.6: Edit with Vim popup menu entry
|
||||
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 8.2
|
||||
DisplayName Vim 8.2: Edit with Vim popup menu entry
|
||||
UninstallString {path}\uninstall.exe
|
||||
|
||||
Replace {path} with the path that leads to the executable.
|
||||
@@ -214,7 +213,7 @@ REGEDIT4
|
||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
|
||||
|
||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
|
||||
@="c:\\vim\\vim62\\gvim.exe \"%1\""
|
||||
@="c:\\vim\\vim82\\gvim.exe \"%1\""
|
||||
|
||||
[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
|
||||
|
||||
@@ -222,7 +221,7 @@ REGEDIT4
|
||||
|
||||
----------------------------------------------------------
|
||||
|
||||
Change the "c:\\vim\\vim62" bit to where gvim.exe is actually located.
|
||||
Change the "c:\\vim\\vim82" bit to where gvim.exe is actually located.
|
||||
|
||||
To uninstall this run the Vim uninstall program or manually delete the
|
||||
registry entries with "regedit".
|
||||
|
||||
@@ -197,7 +197,7 @@ Remarks about specific systems ~
|
||||
|os_390.txt| OS/390 Unix
|
||||
|os_amiga.txt| Amiga
|
||||
|os_beos.txt| BeOS and BeBox
|
||||
|os_dos.txt| MS-DOS and MS-Windows NT/95 common items
|
||||
|os_dos.txt| MS-DOS and MS-Windows common items
|
||||
|os_mac.txt| Macintosh
|
||||
|os_mint.txt| Atari MiNT
|
||||
|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows)
|
||||
@@ -206,7 +206,7 @@ Remarks about specific systems ~
|
||||
|os_risc.txt| RISC-OS
|
||||
|os_unix.txt| Unix
|
||||
|os_vms.txt| VMS
|
||||
|os_win32.txt| MS-Windows 95/98/NT
|
||||
|os_win32.txt| MS-Windows
|
||||
*standard-plugin-list*
|
||||
Standard plugins ~
|
||||
|pi_getscript.txt| Downloading latest version of Vim scripts
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 8.2. Last change: 2019 Sep 27
|
||||
*index.txt* For Vim version 8.2. Last change: 2020 Jan 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -73,6 +73,8 @@ tag char action in Insert mode ~
|
||||
the cursor
|
||||
|i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal
|
||||
control flow
|
||||
|i_CTRL-SHIFT-Q| CTRL-SHIFT-Q {char}
|
||||
like CTRL-Q unless |modifyOtherKeys| is active
|
||||
|i_CTRL-R| CTRL-R {register}
|
||||
insert the contents of a register
|
||||
|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {register}
|
||||
@@ -89,6 +91,8 @@ tag char action in Insert mode ~
|
||||
|i_CTRL-U| CTRL-U delete all entered characters in the current
|
||||
line
|
||||
|i_CTRL-V| CTRL-V {char} insert next non-digit literally
|
||||
|i_CTRL-SHIFT-V| CTRL-SHIFT-V {char}
|
||||
like CTRL-V unless |modifyOtherKeys| is active
|
||||
|i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single
|
||||
byte.
|
||||
|i_CTRL-W| CTRL-W delete word before the cursor
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 8.2. Last change: 2019 Nov 26
|
||||
*insert.txt* For Vim version 8.2. Last change: 2020 Jan 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -200,15 +200,15 @@ CTRL-V Insert next non-digit literally. For special keys, the
|
||||
is converted back to what it was without |modifyOtherKeys|,
|
||||
unless the Shift key is also pressed.
|
||||
|
||||
*i_CTRL-SHIFT-V*
|
||||
CTRL-SHIFT-V Works just like CTRL-V, unless |modifyOtherKeys| is active,
|
||||
then it inserts the Escape sequence for a key with modifiers.
|
||||
|
||||
*i_CTRL-Q*
|
||||
CTRL-Q Same as CTRL-V.
|
||||
Note: Some terminal connections may eat CTRL-Q, it doesn't
|
||||
work then. It does work in the GUI.
|
||||
|
||||
CTRL-SHIFT-V *i_CTRL-SHIFT-V* *i_CTRL-SHIFT-Q*
|
||||
CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active,
|
||||
then it inserts the Escape sequence for a key with modifiers.
|
||||
|
||||
CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
|
||||
be given to complete words or scroll the window. See
|
||||
|i_CTRL-X| and |ins-completion|.
|
||||
@@ -2009,11 +2009,11 @@ If the 'fileformats' option is not empty Vim tries to recognize the type of
|
||||
changed, the detected format is only used while reading the file.
|
||||
A similar thing happens with 'fileencodings'.
|
||||
|
||||
The message "[dos format]" is shown if a file is read in DOS format, to remind
|
||||
you that something unusual is done.
|
||||
On non-Win32 systems the message "[dos format]" is shown if a file is read in
|
||||
DOS format, to remind you that something unusual is done.
|
||||
On Macintosh and Win32 the message "[unix format]" is shown if a file is read
|
||||
in Unix format.
|
||||
On non-Macintosh systems, the message "[Mac format]" is shown if a file is
|
||||
On non-Macintosh systems, the message "[mac format]" is shown if a file is
|
||||
read in Mac format.
|
||||
|
||||
An example on how to use ":r !": >
|
||||
|
||||
@@ -845,8 +845,9 @@ Without modifyOtherKeys <C-[> and <C-S-{> are indistinguishable from Esc.
|
||||
|
||||
A known side effect effect is that in Insert mode the raw escape sequence is
|
||||
inserted after the CTRL-V key. This can be used to check whether
|
||||
modifyOtherKeys is enabled: In Insert mode type CTRL-V CTRL-V, if you get
|
||||
one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
|
||||
modifyOtherKeys is enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you
|
||||
get one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is
|
||||
on.
|
||||
|
||||
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
|
||||
Insert mode to avoid every key with a modifier causing Insert mode to end.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 8.2. Last change: 2020 Jan 01
|
||||
*options.txt* For Vim version 8.2. Last change: 2020 Jan 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -22,9 +22,13 @@ achieve special effects. These options come in three forms:
|
||||
1. Setting options *set-option* *E764*
|
||||
|
||||
*:se* *:set*
|
||||
:se[t] Show all options that differ from their default value.
|
||||
:se[t][!] Show all options that differ from their default value.
|
||||
When [!] is present every option is on a separate
|
||||
line.
|
||||
|
||||
:se[t] all Show all but terminal options.
|
||||
:se[t][!] all Show all but terminal options.
|
||||
When [!] is present every option is on a separate
|
||||
line.
|
||||
|
||||
:se[t] termcap Show all terminal options. Note that in the GUI the
|
||||
key codes are not shown, because they are generated
|
||||
@@ -287,7 +291,7 @@ happens when the buffer is not loaded, but they are lost when the buffer is
|
||||
wiped out |:bwipe|.
|
||||
|
||||
*:setl* *:setlocal*
|
||||
:setl[ocal] ... Like ":set" but set only the value local to the
|
||||
:setl[ocal][!] ... Like ":set" but set only the value local to the
|
||||
current buffer or window. Not all options have a
|
||||
local value. If the option does not have a local
|
||||
value the global value is set.
|
||||
@@ -309,7 +313,7 @@ wiped out |:bwipe|.
|
||||
{option}, so that the global value will be used.
|
||||
|
||||
*:setg* *:setglobal*
|
||||
:setg[lobal] ... Like ":set" but set only the global value for a local
|
||||
:setg[lobal][!] ... Like ":set" but set only the global value for a local
|
||||
option without changing the local value.
|
||||
When displaying an option, the global value is shown.
|
||||
With the "all" argument: display global values for all
|
||||
@@ -513,10 +517,11 @@ Examples:
|
||||
|
||||
The second form (this is compatible with some versions of Vi):
|
||||
|
||||
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
|
||||
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
|
||||
|
||||
[text] any text or empty
|
||||
{white} at least one blank character (<Space> or <Tab>)
|
||||
[text{white}] empty or any text followed by at least one blank
|
||||
character (<Space> or <Tab>); "ex:" always requires at
|
||||
least one blank character
|
||||
{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:"
|
||||
[white] optional white space
|
||||
se[t] the string "set " or "se " (note the space); When
|
||||
@@ -709,9 +714,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
|
||||
this option should be set to "double" to match the width perceived
|
||||
by Vim with the width of glyphs in the font. Perhaps it also has
|
||||
to be set to "double" under CJK MS-Windows 2k/XP
|
||||
when the system locale is set to one of CJK locales. See Unicode
|
||||
Standard Annex #11 (http://www.unicode.org/reports/tr11).
|
||||
to be set to "double" under CJK MS-Windows when the system locale is
|
||||
set to one of CJK locales. See Unicode Standard Annex #11
|
||||
(http://www.unicode.org/reports/tr11).
|
||||
|
||||
Vim may set this option automatically at startup time when Vim is
|
||||
compiled with the |+termresponse| feature and if |t_u7| is set to the
|
||||
@@ -1018,9 +1023,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
impossible!). Writing may fail because of this.
|
||||
- A directory "." means to put the backup file in the same directory
|
||||
as the edited file.
|
||||
- A directory starting with "./" (or ".\" for MS-Windows et al.) means
|
||||
to put the backup file relative to where the edited file is. The
|
||||
leading "." is replaced with the path name of the edited file.
|
||||
- A directory starting with "./" (or ".\" for MS-Windows) means to put
|
||||
the backup file relative to where the edited file is. The leading
|
||||
"." is replaced with the path name of the edited file.
|
||||
("." inside a directory name has no special meaning).
|
||||
- Spaces after the comma are ignored, other spaces are considered part
|
||||
of the directory name. To have a space at the start of a directory
|
||||
@@ -2712,9 +2717,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
the edited file. On Unix, a dot is prepended to the file name, so
|
||||
it doesn't show in a directory listing. On MS-Windows the "hidden"
|
||||
attribute is set and a dot prepended if possible.
|
||||
- A directory starting with "./" (or ".\" for MS-Windows et al.) means
|
||||
to put the swap file relative to where the edited file is. The
|
||||
leading "." is replaced with the path name of the edited file.
|
||||
- A directory starting with "./" (or ".\" for MS-Windows) means to put
|
||||
the swap file relative to where the edited file is. The leading "."
|
||||
is replaced with the path name of the edited file.
|
||||
- For Unix and Win32, if a directory ends in two path separators "//",
|
||||
the swap file name will be built from the complete path to the file
|
||||
with all path separators substituted to percent '%' signs. This will
|
||||
@@ -3593,7 +3598,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{only available when compiled with GUI enabled, and
|
||||
for Win32 console}
|
||||
This option tells Vim what the cursor should look like in different
|
||||
modes. It fully works in the GUI. In an Win32 console, only the
|
||||
modes. It fully works in the GUI. In a Win32 console, only the
|
||||
height of the cursor can be changed. This can be done by specifying a
|
||||
block cursor, or a percentage for a vertical or horizontal cursor.
|
||||
For a console the 't_SI', 't_SR', and 't_EI' escape sequences are
|
||||
@@ -5248,7 +5253,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
default because it makes using the pull down menus a little goofy, as
|
||||
a pointer transit may activate a window unintentionally.
|
||||
MS-Windows: Also see 'scrollfocus' for what window is scrolled when
|
||||
using the mouse scroll whel.
|
||||
using the mouse scroll wheel.
|
||||
|
||||
*'mousehide'* *'mh'* *'nomousehide'* *'nomh'*
|
||||
'mousehide' 'mh' boolean (default on)
|
||||
@@ -6075,7 +6080,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
|
||||
'restorescreen' 'rs' boolean (default on)
|
||||
global
|
||||
{only in Windows 95/NT console version}
|
||||
{only in MS-Windows console version}
|
||||
When set, the screen contents is restored when exiting Vim. This also
|
||||
happens when executing external commands.
|
||||
|
||||
@@ -6216,6 +6221,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
compiler/ compiler files |:compiler|
|
||||
doc/ documentation |write-local-help|
|
||||
ftplugin/ filetype plugins |write-filetype-plugin|
|
||||
import/ files that are found by `:import`
|
||||
indent/ indent scripts |indent-expression|
|
||||
keymap/ key mapping files |mbyte-keymap|
|
||||
lang/ menu translations |:menutrans|
|
||||
@@ -6497,9 +6503,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
somewhere: "/c")
|
||||
global
|
||||
Flag passed to the shell to execute "!" and ":!" commands; e.g.,
|
||||
"bash.exe -c ls" or "command.com /c dir". For the MS-Windows-like
|
||||
systems, the default is set according to the value of 'shell', to
|
||||
reduce the need to set this option by the user.
|
||||
"bash.exe -c ls" or "cmd.exe /c dir". For MS-Windows, the default is
|
||||
set according to the value of 'shell', to reduce the need to set this
|
||||
option by the user.
|
||||
On Unix it can have more than one flag. Each white space separated
|
||||
part is passed as an argument to the shell command.
|
||||
See |option-backslash| about including spaces and backslashes.
|
||||
@@ -6508,7 +6514,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
security reasons.
|
||||
|
||||
*'shellpipe'* *'sp'*
|
||||
'shellpipe' 'sp' string (default ">", "| tee", "|& tee" or "2>&1| tee")
|
||||
'shellpipe' 'sp' string (default ">", ">%s 2>&1", "| tee", "|& tee" or
|
||||
"2>&1| tee")
|
||||
global
|
||||
{not available when compiled without the |+quickfix|
|
||||
feature}
|
||||
@@ -6518,8 +6525,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The name of the temporary file can be represented by "%s" if necessary
|
||||
(the file name is appended automatically if no %s appears in the value
|
||||
of this option).
|
||||
For the Amiga the default is ">". The output is directly saved in a
|
||||
file and not echoed to the screen.
|
||||
For the Amiga the default is ">". For MS-Windows the default is
|
||||
">%s 2>&1". The output is directly saved in a file and not echoed to
|
||||
the screen.
|
||||
For Unix the default it "| tee". The stdout of the compiler is saved
|
||||
in a file and echoed to the screen. If the 'shell' option is "csh" or
|
||||
"tcsh" after initializations, the default becomes "|& tee". If the
|
||||
@@ -6587,9 +6595,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
{only for MS-Windows}
|
||||
When set, a forward slash is used when expanding file names. This is
|
||||
useful when a Unix-like shell is used instead of command.com or
|
||||
cmd.exe. Backward slashes can still be typed, but they are changed to
|
||||
forward slashes by Vim.
|
||||
useful when a Unix-like shell is used instead of cmd.exe. Backward
|
||||
slashes can still be typed, but they are changed to forward slashes by
|
||||
Vim.
|
||||
Note that setting or resetting this option has no effect for some
|
||||
existing file names, thus this option needs to be set before opening
|
||||
any file for best results. This might change in the future.
|
||||
@@ -6746,8 +6754,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
option is on, dots in file names are replaced with underscores when
|
||||
adding an extension (".~" or ".swp"). This option is useful
|
||||
when editing files on an MS-DOS compatible filesystem, e.g., messydos
|
||||
or crossdos. When running the Win32 GUI version under Win32s, this
|
||||
option is always on by default.
|
||||
or crossdos.
|
||||
|
||||
*'showbreak'* *'sbr'* *E595*
|
||||
'showbreak' 'sbr' string (default "")
|
||||
@@ -7282,8 +7289,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< Beware that an expression is evaluated each and every time the status
|
||||
line is displayed.
|
||||
*stl-%{* *g:actual_curbuf* *g:actual_curwin*
|
||||
While evaluationg %{} the current buffer and current window will be
|
||||
set temporarily to that of the window (and buffer) whose statusline is
|
||||
While evaluating %{} the current buffer and current window will be set
|
||||
temporarily to that of the window (and buffer) whose statusline is
|
||||
currently being drawn. The expression will evaluate in this context.
|
||||
The variable "g:actual_curbuf" is set to the `bufnr()` number of the
|
||||
real current buffer and "g:actual_curwin" to the |window-ID| of the
|
||||
@@ -8205,7 +8212,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
NOTE: This option is reset when 'compatible' is set.
|
||||
|
||||
*'undolevels'* *'ul'*
|
||||
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, Win32)
|
||||
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS and Win32)
|
||||
global or local to buffer |global-local|
|
||||
Maximum number of changes that can be undone. Since undo information
|
||||
is kept in memory, higher numbers will cause more memory to be used.
|
||||
|
||||
@@ -39,7 +39,7 @@ If you move the executable to another location, you also need to set the $VIM
|
||||
environment variable. The runtime files will be found in "$VIM/vim{version}".
|
||||
Example: >
|
||||
set VIM=E:\vim
|
||||
Will find the version 5.4 runtime files in "e:\vim\vim54".
|
||||
Will find the version 8.2 runtime files in "e:\vim\vim82".
|
||||
Note: This is _not_ recommended. The preferred way is to keep the executable
|
||||
in the runtime directory.
|
||||
|
||||
@@ -47,17 +47,23 @@ If you move your executable AND want to put your "_vimrc" and "_gvimrc" files
|
||||
somewhere else, you must set $VIM to where you vimrc files are, and set
|
||||
$VIMRUNTIME to the runtime files. Example: >
|
||||
set VIM=C:\usr\piet
|
||||
set VIMRUNTIME=E:\vim\vim54
|
||||
Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54".
|
||||
set VIMRUNTIME=E:\vim\vim82
|
||||
Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim82".
|
||||
|
||||
See |$VIM| and |$VIMRUNTIME| for more information.
|
||||
|
||||
Under Windows 95, you can set $VIM in your C:\autoexec.bat file. For
|
||||
example: >
|
||||
set VIM=D:\vim
|
||||
Under Windows NT, you can set environment variables for each user separately
|
||||
under "Start/Settings/Control Panel->System", or through the properties in the
|
||||
menu of "My Computer", under the Environment Tab.
|
||||
You can set environment variables for each user separately through the
|
||||
System Properties dialog box. The steps to do that:
|
||||
1. Type Windows Key + R to open the "Run" dialog box.
|
||||
2. Enter "sysdm.cpl" and press the "OK" button. The "System Properties"
|
||||
dialog box will open.
|
||||
3. Select the "Advanced" tab and press the "Environment Variables..." button.
|
||||
The "Environment Variables" dialog box will open.
|
||||
4. Select an existing variable in the "User variables" list and press the
|
||||
"Edit..." button to edit it. Or press the "New..." button to add a new
|
||||
variable.
|
||||
5. After you finished editing variables, press the "OK" button to save the
|
||||
changes.
|
||||
|
||||
==============================================================================
|
||||
2. Using backslashes *dos-backslash*
|
||||
|
||||
@@ -171,7 +171,7 @@ you will need to get a version older than that.
|
||||
|
||||
*win32s* *windows-3.1* *gui-w32s* *win16*
|
||||
There was a special version of gvim that runs under Windows 3.1 and 3.11.
|
||||
Support was removed in patch 7.4.1363.
|
||||
Support was removed in patch 7.4.1364.
|
||||
|
||||
==============================================================================
|
||||
7. Win32 mini FAQ *win32-faq*
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
>
|
||||
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
|
||||
<
|
||||
Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz>
|
||||
(remove NOSPAM from the email address)
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
(remove NOSPAM from the email address)
|
||||
*GetLatestVimScripts-copyright*
|
||||
Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright*
|
||||
The VIM LICENSE (see |copyright|) applies to the files in this
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
*pi_logipat.txt* Logical Patterns Jun 22, 2015
|
||||
*pi_logipat.txt* Logical Patterns May 01, 2019
|
||||
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
Copyright: (c) 2004-2016 by Charles E. Campbell *logiPat-copyright*
|
||||
The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
|
||||
(see |copyright|) except use "LogiPat" instead of "Vim"
|
||||
No warranty, express or implied. Use At-Your-Own-Risk.
|
||||
@@ -28,12 +28,14 @@ Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
|
||||
grouping ( ... )
|
||||
patterns "pattern"
|
||||
|
||||
*logiPat-cmd*
|
||||
:LogiPat {boolean-logic pattern} *:LogiPat*
|
||||
:LogiPat is a command which takes a boolean-logic
|
||||
argument (|logiPat-arg|).
|
||||
|
||||
:LP {boolean-logic pattern} *:LP*
|
||||
:LP is a shorthand command version of :LogiPat
|
||||
(|logiPat-cmd|).
|
||||
|
||||
:LPE {boolean-logic pattern} *:LPE*
|
||||
No search is done, but the conversion from the
|
||||
@@ -69,7 +71,7 @@ Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
|
||||
< will search for lines containing the string :abc:
|
||||
>
|
||||
:LogiPat "ab""cd"
|
||||
< will search for lines containing the string :ab"c:
|
||||
< will search for lines containing the string :ab"cd:
|
||||
>
|
||||
:LogiPat !"abc"
|
||||
< will search for lines which don't contain the string :abc:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
*pi_netrw.txt* For Vim version 8.2. Last change: 2019 Dec 10
|
||||
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Jan 14
|
||||
|
||||
------------------------------------------------
|
||||
NETRW REFERENCE MANUAL by Charles E. Campbell
|
||||
------------------------------------------------
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
|
||||
Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
|
||||
@@ -1565,8 +1565,8 @@ So, for example: >
|
||||
file.rcs,v -> NFH_rcsCOMMAv()
|
||||
<
|
||||
If more such translations are necessary, please send me email: >
|
||||
NdrOchip at ScampbellPfamily.AbizM - NOSPAM
|
||||
with a request.
|
||||
NcampObell@SdrPchip.AorgM-NOSPAM
|
||||
with a request. (remove the embedded NOSPAM first)
|
||||
|
||||
Associated setting variable: |g:netrw_browsex_viewer|
|
||||
|
||||
@@ -3229,7 +3229,8 @@ If there are marked files: (see |netrw-mf|)
|
||||
R [query: reply with s/^\(.*\)\.c$/\1.cpp/]
|
||||
<
|
||||
This example will mark all *.c files and then rename them to *.cpp
|
||||
files.
|
||||
files. Netrw will protect you from overwriting local files without
|
||||
confirmation, but not remote ones.
|
||||
|
||||
The ctrl-X character has special meaning for renaming files: >
|
||||
|
||||
@@ -3512,7 +3513,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
|
||||
- Click "Add..."
|
||||
- Set External Editor (adjust path as needed, include
|
||||
the quotes and !.! at the end):
|
||||
"c:\Program Files\Vim\vim81\gvim.exe" !.!
|
||||
"c:\Program Files\Vim\vim82\gvim.exe" !.!
|
||||
- Check that the filetype in the box below is
|
||||
{asterisk}.{asterisk} (all files), or whatever types
|
||||
you want (cec: change {asterisk} to * ; I had to
|
||||
@@ -3836,12 +3837,18 @@ netrw:
|
||||
|
||||
Please send that information to <netrw.vim>'s maintainer along
|
||||
with the o/s you're using and the vim version that you're using
|
||||
(see |:version|) >
|
||||
NdrOchip at ScampbellPfamily.AbizM - NOSPAM
|
||||
(see |:version|) (remove the embedded NOSPAM first) >
|
||||
NcampObell@SdrPchip.AorgM-NOSPAM
|
||||
<
|
||||
==============================================================================
|
||||
12. History *netrw-history* {{{1
|
||||
|
||||
v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
|
||||
(|netrw-x|) would throw an error when
|
||||
attempting to open a local directory.
|
||||
v168: Dec 12, 2019 * scp timeout error message not reported,
|
||||
hopefully now fixed (Shane Xb Qian)
|
||||
|
||||
v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
|
||||
That causes problems with the clipboard.
|
||||
Now restores occurs only if @* or @+ have
|
||||
@@ -4279,7 +4286,7 @@ netrw:
|
||||
Vim editor by Bram Moolenaar (Thanks, Bram!)
|
||||
dav support by C Campbell
|
||||
fetch support by Bram Moolenaar and C Campbell
|
||||
ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
ftp support by C Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
http support by Bram Moolenaar <bram@moolenaar.net>
|
||||
rcp
|
||||
rsync support by C Campbell (suggested by Erik Warendorph)
|
||||
@@ -4299,4 +4306,4 @@ netrw:
|
||||
|
||||
==============================================================================
|
||||
Modelines: {{{1
|
||||
vim:tw=78:ts=8:ft=help:norl:fdm=marker
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:fdm=marker
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
*pi_tar.txt* For Vim version 8.2. Last change: 2013 Apr 17
|
||||
*pi_tar.txt* For Vim version 8.2. Last change: 2020 Jan 07
|
||||
|
||||
+====================+
|
||||
| Tar File Interface |
|
||||
+====================+
|
||||
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright 2005-2012: *tar-copyright*
|
||||
Copyright 2005-2017: *tar-copyright*
|
||||
The VIM LICENSE (see |copyright|) applies to the files in this
|
||||
package, including tarPlugin.vim, tar.vim, and pi_tar.txt. Like
|
||||
anything else that's except use "tar.vim" instead of "VIM". Like
|
||||
@@ -104,48 +104,67 @@ Copyright 2005-2012: *tar-copyright*
|
||||
==============================================================================
|
||||
4. History *tar-history*
|
||||
|
||||
|
||||
v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz)
|
||||
v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling
|
||||
* inserted additional |:keepj| modifiers
|
||||
* changed silent to sil! (|:silent|)
|
||||
v26 Aug 09, 2010 * uses buffer-local instead of window variables to hold
|
||||
tarfile name
|
||||
* inserted keepj before 0d to protect jump list
|
||||
v25 Jun 19, 2010 * (Jan Steffens) added support for xz compression
|
||||
v24 Apr 07, 2009 * :Untarvim command implemented
|
||||
Sep 28, 2009 * Added lzma support
|
||||
v22 Aug 08, 2008 * security fixes
|
||||
v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files
|
||||
inside tarballs. Fixes a problem with tarballs called
|
||||
things like c:\abc.tar. (tnx to Bill McCarthy)
|
||||
v14 May 09, 2008 * arno caught a security bug
|
||||
May 28, 2008 * various security improvements. Now requires patch 299
|
||||
which provides the fnameescape() function
|
||||
May 30, 2008 * allows one to view *.gz and *.bz2 files that are in
|
||||
*.tar files.
|
||||
v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq
|
||||
v10 May 02, 2006 * now using "redraw then echo" to show messages, instead
|
||||
of "echo and prompt user"
|
||||
v9 May 02, 2006 * improved detection of masquerading as tar file
|
||||
v8 May 02, 2006 * allows editing of files that merely masquerade as tar
|
||||
files
|
||||
v7 Mar 22, 2006 * work on making tar plugin work across network
|
||||
Mar 27, 2006 * g:tar_cmd now available for users to change the name
|
||||
of the tar program to be used. By default, of course,
|
||||
it's "tar".
|
||||
v6 Dec 21, 2005 * writing to files not in directories caused problems -
|
||||
fixed (pointed out by Christian Robinson)
|
||||
v5 Nov 22, 2005 * report option workaround installed
|
||||
v3 Sep 16, 2005 * handles writing files in an archive back to the
|
||||
archive
|
||||
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
|
||||
Oct 18, 2005 * handles writing to compressed archives
|
||||
Nov 03, 2005 * handles writing tarfiles across a network using
|
||||
netrw#NetWrite()
|
||||
v2 * converted to use Vim7's new autoload feature by
|
||||
Bram Moolenaar
|
||||
v1 (original) * Michael Toren (see http://michael.toren.net/code/)
|
||||
v31 Apr 02, 2017 * (klartext) reported that browsing encrypted
|
||||
files in a zip archive created unencrypted
|
||||
swap files. I am applying a similar fix
|
||||
used on zip.vim to tar.vim: new buffers
|
||||
are opened with |:noswapfile|.
|
||||
May 16, 2017 * When the mouse option isn't empty, the
|
||||
leftmouse can be used to select a file
|
||||
in the tar-file listing.
|
||||
v30 Apr 22, 2014 * .tgz files are ambiguous: they may have been
|
||||
compressed with either gzip or bzip2. Tar.vim
|
||||
disambiguates by using unix's "file" command.
|
||||
Feb 18, 2016 * Changed =~ to =~# where appropriate
|
||||
Feb 18, 2017 * Now also permits xz decompression
|
||||
v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz)
|
||||
v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd
|
||||
handling
|
||||
* inserted additional |:keepj| modifiers
|
||||
* changed silent to sil! (|:silent|)
|
||||
v26 Aug 09, 2010 * uses buffer-local instead of window variables
|
||||
to hold tarfile name
|
||||
* inserted keepj before 0d to protect jump list
|
||||
v25 Jun 19, 2010 * (Jan Steffens) added support for xz
|
||||
compression
|
||||
v24 Apr 07, 2009 * :Untarvim command implemented
|
||||
Sep 28, 2009 * Added lzma support
|
||||
v22 Aug 08, 2008 * security fixes
|
||||
v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when
|
||||
editing files inside tarballs. Fixes a
|
||||
problem with tarballs called things like
|
||||
c:\abc.tar. (tnx to Bill McCarthy)
|
||||
v14 May 09, 2008 * arno caught a security bug
|
||||
May 28, 2008 * various security improvements. Now requires
|
||||
patch 299 which provides the fnameescape()
|
||||
function
|
||||
May 30, 2008 * allows one to view *.gz and *.bz2 files that
|
||||
are in *.tar files.
|
||||
v12 Sep 07, 2007 * &shq now used if not the empty string for
|
||||
g:tar_shq
|
||||
v10 May 02, 2006 * now using "redraw then echo" to show messages,
|
||||
instead of "echo and prompt user"
|
||||
v9 May 02, 2006 * improved detection of masquerading as tar file
|
||||
v8 May 02, 2006 * allows editing of files that merely masquerade
|
||||
as tar files
|
||||
v7 Mar 22, 2006 * work on making tar plugin work across network
|
||||
Mar 27, 2006 * g:tar_cmd now available for users to change
|
||||
the name of the tar program to be used. By
|
||||
default, of course, it's "tar".
|
||||
v6 Dec 21, 2005 * writing to files not in directories caused
|
||||
problems - fixed (pointed out by
|
||||
Christian Robinson)
|
||||
v5 Nov 22, 2005 * report option workaround installed
|
||||
v3 Sep 16, 2005 * handles writing files in an archive back to
|
||||
the archive
|
||||
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
|
||||
Oct 18, 2005 * handles writing to compressed archives
|
||||
Nov 03, 2005 * handles writing tarfiles across a network
|
||||
using netrw#NetWrite()
|
||||
v2 * converted to use Vim7's new autoload feature
|
||||
by Bram Moolenaar
|
||||
v1 (original) * Michael Toren
|
||||
(see http://michael.toren.net/code/)
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:noet:ft=help
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Vimball Archiver
|
||||
----------------
|
||||
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright*
|
||||
The VIM LICENSE (see |copyright|) applies to the files in this
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
*pi_zip.txt* For Vim version 8.2. Last change: 2016 Sep 13
|
||||
*pi_zip.txt* For Vim version 8.2. Last change: 2020 Jan 07
|
||||
|
||||
+====================+
|
||||
| Zip File Interface |
|
||||
+====================+
|
||||
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
The VIM LICENSE (see |copyright|) applies to the files in this
|
||||
@@ -33,10 +33,11 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
also write to the file. Currently, one may not make a new file in
|
||||
zip archives via the plugin.
|
||||
|
||||
COMMANDS~
|
||||
*zip-x*
|
||||
x : may extract a listed file when the cursor is atop it
|
||||
x : extract a listed file when the cursor is atop it
|
||||
|
||||
OPTIONS
|
||||
OPTIONS~
|
||||
|
||||
*g:zip_nomax*
|
||||
|
||||
@@ -101,6 +102,10 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
|
||||
==============================================================================
|
||||
4. History *zip-history* {{{1
|
||||
v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
|
||||
opened but the swapfile held unencrypted contents.
|
||||
The solution is to edit the contents of a zip file
|
||||
using the |:noswapfile| modifier.
|
||||
v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
|
||||
the command actually to be attempted in zip#Read()
|
||||
and zip#Write()
|
||||
|
||||
@@ -627,16 +627,9 @@ MS-Windows
|
||||
|
||||
http://www.cs.wisc.edu/~ghost/gsview/
|
||||
|
||||
DOS
|
||||
|
||||
- ps_view. Obtainable from:
|
||||
|
||||
ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/
|
||||
ftp://ftp.dante.de/tex-archive/support/ps_view/
|
||||
|
||||
Linux
|
||||
|
||||
- GSview. Linux version of the popular MS-Windows.
|
||||
- GSview. Linux version of the popular MS-Windows previewer.
|
||||
Obtainable from:
|
||||
|
||||
http://www.cs.wisc.edu/~ghost/gsview/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2020 Jan 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -229,8 +229,16 @@ processing a quickfix or location list command, it will be aborted.
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cq* *:cquit*
|
||||
:cq[uit][!] Quit Vim with an error code, so that the compiler
|
||||
will not compile the same file again.
|
||||
:cq[uit][!]
|
||||
:{N}cq[uit][!]
|
||||
:cq[uit][!] {N} Quit Vim with error code {N}. {N} defaults to one.
|
||||
Useful when Vim is called from another program:
|
||||
e.g., a compiler will not compile the same file again,
|
||||
`git commit` will abort the committing process, `fc`
|
||||
(built-in for shells like bash and zsh) will not
|
||||
execute the command, etc.
|
||||
{N} can also be zero, in which case Vim exits
|
||||
normally.
|
||||
WARNING: All changes in files are lost! Also when the
|
||||
[!] is not used. It works like ":qall!" |:qall|,
|
||||
except that Vim returns a non-zero exit code.
|
||||
@@ -935,11 +943,11 @@ or simpler >
|
||||
"$*" can be given multiple times, for example: >
|
||||
:set makeprg=gcc\ -o\ $*\ $*
|
||||
|
||||
The 'shellpipe' option defaults to ">" for the Amiga and Win32. This means
|
||||
that the output of the compiler is saved in a file and not shown on the screen
|
||||
directly. For Unix "| tee" is used. The compiler output is shown on the
|
||||
screen and saved in a file the same time. Depending on the shell used "|&
|
||||
tee" or "2>&1| tee" is the default, so stderr output will be included.
|
||||
The 'shellpipe' option defaults to ">" for the Amiga and ">%s 2>&1" for Win32.
|
||||
This means that the output of the compiler is saved in a file and not shown on
|
||||
the screen directly. For Unix "| tee" is used. The compiler output is shown
|
||||
on the screen and saved in a file the same time. Depending on the shell used
|
||||
"|& tee" or "2>&1| tee" is the default, so stderr output will be included.
|
||||
|
||||
If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful
|
||||
for compilers that write to an errorfile themselves (e.g., Manx's Amiga C).
|
||||
@@ -1099,7 +1107,7 @@ id-utils) in a similar way to its compiler integration (see |:make| above).
|
||||
allowed with |:bufdo|.
|
||||
An example that uses the argument list and avoids
|
||||
errors for files without matches: >
|
||||
:silent argdo try
|
||||
:silent argdo try
|
||||
\ | grepadd! something %
|
||||
\ | catch /E480:/
|
||||
\ | endtry"
|
||||
@@ -1302,7 +1310,7 @@ You can force the compiler to ignore makefiles by defining
|
||||
b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
|
||||
existence only).
|
||||
|
||||
If the compiler chose not to use make, it need to choose a right program for
|
||||
If the compiler chose not to use make, it needs to choose a right program for
|
||||
processing your input. If b:tex_flavor or g:tex_flavor (in this precedence)
|
||||
variable exists, it defines TeX flavor for :make (actually, this is the name
|
||||
of executed command), and if both variables do not exist, it defaults to
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*quickref.txt* For Vim version 8.2. Last change: 2020 Jan 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1057,8 +1057,7 @@ Short explanation of each option: *option-list*
|
||||
search
|
||||
|<Del>| <Del> while entering a count: delete last character
|
||||
|:version| :ve[rsion] show version information
|
||||
|:mode| :mode N MS-Windows: set screen mode to N (number, C80,
|
||||
C4350, etc.)
|
||||
|:mode| :mode N set screen mode to N (obsolete)
|
||||
|:normal| :norm[al][!] {commands}
|
||||
execute Normal mode commands
|
||||
|Q| Q switch to "Ex" mode
|
||||
|
||||
@@ -326,25 +326,25 @@ Exceptions:
|
||||
spell file is used.
|
||||
|
||||
For example, with these values:
|
||||
'runtimepath' is "~/.vim,/usr/share/vim81,~/.vim/after"
|
||||
'runtimepath' is "~/.vim,/usr/share/vim82,~/.vim/after"
|
||||
'encoding' is "iso-8859-2"
|
||||
'spelllang' is "pl"
|
||||
|
||||
Vim will look for:
|
||||
1. ~/.vim/spell/pl.iso-8859-2.spl
|
||||
2. /usr/share/vim81/spell/pl.iso-8859-2.spl
|
||||
2. /usr/share/vim82/spell/pl.iso-8859-2.spl
|
||||
3. ~/.vim/spell/pl.iso-8859-2.add.spl
|
||||
4. /usr/share/vim81/spell/pl.iso-8859-2.add.spl
|
||||
4. /usr/share/vim82/spell/pl.iso-8859-2.add.spl
|
||||
5. ~/.vim/after/spell/pl.iso-8859-2.add.spl
|
||||
|
||||
This assumes 1. is not found and 2. is found.
|
||||
|
||||
If 'encoding' is "latin1" Vim will look for:
|
||||
1. ~/.vim/spell/pl.latin1.spl
|
||||
2. /usr/share/vim81/spell/pl.latin1.spl
|
||||
2. /usr/share/vim82/spell/pl.latin1.spl
|
||||
3. ~/.vim/after/spell/pl.latin1.spl
|
||||
4. ~/.vim/spell/pl.ascii.spl
|
||||
5. /usr/share/vim81/spell/pl.ascii.spl
|
||||
5. /usr/share/vim82/spell/pl.ascii.spl
|
||||
6. ~/.vim/after/spell/pl.ascii.spl
|
||||
|
||||
This assumes none of them are found (Polish doesn't make sense when leaving
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 8.2. Last change: 2019 Dec 11
|
||||
*starting.txt* For Vim version 8.2. Last change: 2020 Jan 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -108,7 +108,7 @@ vimdiff vim -d Start in diff mode |diff-mode|
|
||||
gvimdiff vim -gd Start in diff mode |diff-mode|
|
||||
|
||||
Additional characters may follow, they are ignored. For example, you can have
|
||||
"gvim-5" to start the GUI. You must have an executable by that name then, of
|
||||
"gvim-8" to start the GUI. You must have an executable by that name then, of
|
||||
course.
|
||||
|
||||
On Unix, you would normally have one executable called Vim, and links from the
|
||||
@@ -1140,12 +1140,12 @@ will try to get the value for $VIM in this order:
|
||||
variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg
|
||||
problem). The file name ("help.txt" or any other) is removed. Then
|
||||
trailing directory names are removed, in this order: "doc", "runtime" and
|
||||
"vim{version}" (e.g., "vim54").
|
||||
"vim{version}" (e.g., "vim82").
|
||||
3. For Win32 Vim tries to use the directory name of the executable. If it
|
||||
ends in "/src", this is removed. This is useful if you unpacked the .zip
|
||||
file in some directory, and adjusted the search path to find the vim
|
||||
executable. Trailing directory names are removed, in this order: "runtime"
|
||||
and "vim{version}" (e.g., "vim54").
|
||||
and "vim{version}" (e.g., "vim82").
|
||||
4. For Unix the compile-time defined installation directory is used (see the
|
||||
output of ":version").
|
||||
|
||||
@@ -1163,7 +1163,7 @@ is the order used to find the value of $VIMRUNTIME:
|
||||
1. If the environment variable $VIMRUNTIME is set, it is used. You can use
|
||||
this when the runtime files are in an unusual location.
|
||||
2. If "$VIM/vim{version}" exists, it is used. {version} is the version
|
||||
number of Vim, without any '-' or '.'. For example: "$VIM/vim54". This is
|
||||
number of Vim, without any '-' or '.'. For example: "$VIM/vim82". This is
|
||||
the normal value for $VIMRUNTIME.
|
||||
3. If "$VIM/runtime" exists, it is used.
|
||||
4. The value of $VIM is used. This is for backwards compatibility with older
|
||||
@@ -1175,11 +1175,11 @@ For Unix, when there is a compiled-in default for $VIMRUNTIME (check the
|
||||
output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in
|
||||
default is used after step 5. This means that the compiled-in default
|
||||
overrules the value of $VIM. This is useful if $VIM is "/etc" and the runtime
|
||||
files are in "/usr/share/vim/vim54".
|
||||
files are in "/usr/share/vim/vim82".
|
||||
|
||||
Once Vim has done this once, it will set the $VIMRUNTIME environment variable.
|
||||
To change it later, use a ":let" command like this: >
|
||||
:let $VIMRUNTIME = "/home/piet/vim/vim54"
|
||||
:let $VIMRUNTIME = "/home/piet/vim/vim82"
|
||||
|
||||
In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that
|
||||
greps in the help files) you might be able to use this: >
|
||||
@@ -1208,8 +1208,8 @@ CTRL-Z Suspend Vim, like ":stop".
|
||||
buffers are not written, don't forget to bring Vim
|
||||
back to the foreground later!
|
||||
|
||||
In the GUI, suspending is implemented as iconising gvim. In Windows 95/NT,
|
||||
gvim is minimized.
|
||||
In the GUI, suspending is implemented as iconising gvim. In MS-Windows, gvim
|
||||
is minimized.
|
||||
|
||||
On many Unix systems, it is possible to suspend Vim with CTRL-Z. This is only
|
||||
possible in Normal and Visual mode (see next chapter, |vim-modes|). Vim will
|
||||
@@ -1570,8 +1570,8 @@ remembered.
|
||||
VIMINFO FILE NAME *viminfo-file-name*
|
||||
|
||||
- The default name of the viminfo file is "$HOME/.viminfo" for Unix,
|
||||
"s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For the last two, when
|
||||
$HOME is not set, "$VIM\_viminfo" is used. When $VIM is also not set,
|
||||
"s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For Win32, when $HOME
|
||||
is not set, "$VIM\_viminfo" is used. When $VIM is also not set,
|
||||
"c:\_viminfo" is used.
|
||||
- The 'n' flag in the 'viminfo' option can be used to specify another viminfo
|
||||
file name |'viminfo'|.
|
||||
|
||||
@@ -60,8 +60,8 @@ If the VIM environment variable is not set, Vim will try to find
|
||||
the path in another way (see |$VIMRUNTIME|). Usually this works just
|
||||
fine. If it doesn't, try setting the VIM environment variable to the
|
||||
directory where the Vim stuff is located. For example, if your syntax files
|
||||
are in the "/usr/vim/vim81/syntax" directory, set $VIMRUNTIME to
|
||||
"/usr/vim/vim81". You must do this in the shell, before starting Vim.
|
||||
are in the "/usr/vim/vim82/syntax" directory, set $VIMRUNTIME to
|
||||
"/usr/vim/vim82". You must do this in the shell, before starting Vim.
|
||||
This command also sources the |menu.vim| script when the GUI is running or
|
||||
will start soon. See |'go-M'| about avoiding that.
|
||||
|
||||
@@ -2315,7 +2315,7 @@ contain very long structures that Vim does not synchronize anymore.
|
||||
|
||||
PAPP *papp.vim* *ft-papp-syntax*
|
||||
|
||||
The PApp syntax file handles .papp files and, to a lesser extend, .pxml
|
||||
The PApp syntax file handles .papp files and, to a lesser extent, .pxml
|
||||
and .pxsl files which are all a mixture of perl/xml/html/other using xml
|
||||
as the top-level file format. By default everything inside phtml or pxml
|
||||
sections is treated as a string with embedded preprocessor commands. If
|
||||
@@ -2687,12 +2687,12 @@ Note: only existence of these options matter, not their value. You can replace
|
||||
|
||||
QUAKE *quake.vim* *ft-quake-syntax*
|
||||
|
||||
The Quake syntax definition should work for most any FPS (First Person
|
||||
Shooter) based on one of the Quake engines. However, the command names vary
|
||||
a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the
|
||||
syntax definition checks for the existence of three global variables to allow
|
||||
users to specify what commands are legal in their files. The three variables
|
||||
can be set for the following effects:
|
||||
The Quake syntax definition should work for most FPS (First Person Shooter)
|
||||
based on one of the Quake engines. However, the command names vary a bit
|
||||
between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax
|
||||
definition checks for the existence of three global variables to allow users
|
||||
to specify what commands are legal in their files. The three variables can
|
||||
be set for the following effects:
|
||||
|
||||
set to highlight commands only available in Quake: >
|
||||
:let quake_is_quake1 = 1
|
||||
@@ -3028,7 +3028,7 @@ variables in your <.vimrc>:
|
||||
|
||||
ksh: >
|
||||
let g:is_kornshell = 1
|
||||
< posix: (using this is the nearly the same as setting g:is_kornshell to 1) >
|
||||
< posix: (using this is nearly the same as setting g:is_kornshell to 1) >
|
||||
let g:is_posix = 1
|
||||
< bash: >
|
||||
let g:is_bash = 1
|
||||
|
||||
@@ -7261,6 +7261,7 @@ i_CTRL-R_= insert.txt /*i_CTRL-R_=*
|
||||
i_CTRL-R_CTRL-O insert.txt /*i_CTRL-R_CTRL-O*
|
||||
i_CTRL-R_CTRL-P insert.txt /*i_CTRL-R_CTRL-P*
|
||||
i_CTRL-R_CTRL-R insert.txt /*i_CTRL-R_CTRL-R*
|
||||
i_CTRL-SHIFT-Q insert.txt /*i_CTRL-SHIFT-Q*
|
||||
i_CTRL-SHIFT-V insert.txt /*i_CTRL-SHIFT-V*
|
||||
i_CTRL-T insert.txt /*i_CTRL-T*
|
||||
i_CTRL-U insert.txt /*i_CTRL-U*
|
||||
@@ -7557,6 +7558,7 @@ log10() eval.txt /*log10()*
|
||||
logiPat pi_logipat.txt /*logiPat*
|
||||
logiPat-arg pi_logipat.txt /*logiPat-arg*
|
||||
logiPat-caveat pi_logipat.txt /*logiPat-caveat*
|
||||
logiPat-cmd pi_logipat.txt /*logiPat-cmd*
|
||||
logiPat-contents pi_logipat.txt /*logiPat-contents*
|
||||
logiPat-copyright pi_logipat.txt /*logiPat-copyright*
|
||||
logiPat-examples pi_logipat.txt /*logiPat-examples*
|
||||
|
||||
@@ -344,11 +344,11 @@ the same as above, with a "p" prepended.
|
||||
A static tag is a tag that is defined for a specific file. In a C program
|
||||
this could be a static function.
|
||||
|
||||
In Vi jumping to a tag sets the current search pattern. This means that
|
||||
the "n" command after jumping to a tag does not search for the same pattern
|
||||
that it did before jumping to the tag. Vim does not do this as we consider it
|
||||
to be a bug. You can still find the tag search pattern in the search history.
|
||||
If you really want the old Vi behavior, set the 't' flag in 'cpoptions'.
|
||||
In Vi jumping to a tag sets the current search pattern. This means that the
|
||||
"n" command after jumping to a tag does not search for the same pattern that
|
||||
it did before jumping to the tag. Vim does not do this as we consider it to
|
||||
be a bug. If you really want the old Vi behavior, set the 't' flag in
|
||||
'cpoptions'.
|
||||
|
||||
*tag-binary-search*
|
||||
Vim uses binary searching in the tags file to find the desired tag quickly
|
||||
@@ -426,8 +426,7 @@ would otherwise go unnoticed. Example: >
|
||||
|
||||
In Vi the ":tag" command sets the last search pattern when the tag is searched
|
||||
for. In Vim this is not done, the previous search pattern is still remembered,
|
||||
unless the 't' flag is present in 'cpoptions'. The search pattern is always
|
||||
put in the search history, so you can modify it if searching fails.
|
||||
unless the 't' flag is present in 'cpoptions'.
|
||||
|
||||
*emacs-tags* *emacs_tags* *E430*
|
||||
Emacs style tag files are only supported if Vim was compiled with the
|
||||
|
||||
@@ -579,7 +579,7 @@ remove highlighting from a line. This is required for "hpterm". Setting the
|
||||
versa.
|
||||
|
||||
*scroll-region*
|
||||
Some termcaps do not include an entry for 'cs' (scroll region), although the
|
||||
Some termcaps do not include an entry for "cs" (scroll region), although the
|
||||
terminal does support it. For example: xterm on a Sun. You can use the
|
||||
builtin_xterm or define t_cs yourself. For example: >
|
||||
:set t_cs=^V^[[%i%d;%dr
|
||||
@@ -596,11 +596,9 @@ cleared when scrolling).
|
||||
Unfortunately it is not possible to deduce from the termcap how cursor
|
||||
positioning should be done when using a scrolling region: Relative to the
|
||||
beginning of the screen or relative to the beginning of the scrolling region.
|
||||
Most terminals use the first method. A known exception is the MS-Windows
|
||||
console (pcterm). The 't_CS' option should be set to any string when cursor
|
||||
positioning is relative to the start of the scrolling region. It should be
|
||||
set to an empty string otherwise. It defaults to "yes" when 'term' is
|
||||
"pcterm".
|
||||
Most terminals use the first method. The 't_CS' option should be set to any
|
||||
string when cursor positioning is relative to the start of the scrolling
|
||||
region. It should be set to an empty string otherwise.
|
||||
|
||||
Note for xterm users: The shifted cursor keys normally don't work. You can
|
||||
make them work with the xmodmap command and some mappings in Vim.
|
||||
@@ -652,15 +650,7 @@ One command can be used to set the screen size:
|
||||
:mod[e] [mode]
|
||||
|
||||
Without argument this only detects the screen size and redraws the screen.
|
||||
With MS-Windows it is possible to switch screen mode. [mode] can be one of
|
||||
these values:
|
||||
"bw40" 40 columns black&white
|
||||
"c40" 40 columns color
|
||||
"bw80" 80 columns black&white
|
||||
"c80" 80 columns color (most people use this)
|
||||
"mono" 80 columns monochrome
|
||||
"c4350" 43 or 50 lines EGA/VGA mode
|
||||
number mode number to use, depends on your video card
|
||||
[mode] was used on MS-DOS, but it doesn't work anymore.
|
||||
|
||||
==============================================================================
|
||||
4. Slow and fast terminals *slow-fast-terminal*
|
||||
@@ -911,8 +901,8 @@ A double click on a word selects that word. 'iskeyword' is used to specify
|
||||
which characters are included in a word. A double click on a character
|
||||
that has a match selects until that match (like using "v%"). If the match is
|
||||
an #if/#else/#endif block, the selection becomes linewise.
|
||||
For xterm the time for double clicking can be set with the 'mousetime' option.
|
||||
For the other systems this time is defined outside of Vim.
|
||||
For MS-Windows and xterm the time for double clicking can be set with the
|
||||
'mousetime' option. For the other systems this time is defined outside of Vim.
|
||||
An example, for using a double click to jump to the tag under the cursor: >
|
||||
:map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2020 Jan 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -641,8 +641,8 @@ term_getsize({buf}) *term_getsize()*
|
||||
|
||||
|
||||
term_getstatus({buf}) *term_getstatus()*
|
||||
Get the status of terminal {buf}. This returns a comma
|
||||
separated list of these items:
|
||||
Get the status of terminal {buf}. This returns a String with
|
||||
a comma separated list of these items:
|
||||
running job is running
|
||||
finished job has finished
|
||||
normal in Terminal-Normal mode
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*textprop.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*textprop.txt* For Vim version 8.2. Last change: 2020 Jan 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -154,8 +154,6 @@ prop_add({lnum}, {col}, {props})
|
||||
added to. When not found, the global property types are used.
|
||||
If not found an error is given.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_add(col, props)
|
||||
|
||||
@@ -168,14 +166,11 @@ prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()*
|
||||
When {props} contains a "bufnr" item use this buffer,
|
||||
otherwise use the current buffer.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_clear()
|
||||
<
|
||||
*prop_find()*
|
||||
prop_find({props} [, {direction}])
|
||||
{not implemented yet}
|
||||
Search for a text property as specified with {props}:
|
||||
id property with this ID
|
||||
type property with this type name
|
||||
@@ -198,8 +193,6 @@ prop_find({props} [, {direction}])
|
||||
as with prop_list(), and additionally an "lnum" entry.
|
||||
If no match is found then an empty Dict is returned.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
|
||||
prop_list({lnum} [, {props}]) *prop_list()*
|
||||
Return a List with all text properties in line {lnum}.
|
||||
@@ -223,8 +216,6 @@ prop_list({lnum} [, {props}]) *prop_list()*
|
||||
When "end" is zero the property continues in the next line.
|
||||
The line break after this line is included.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_list()
|
||||
<
|
||||
@@ -248,8 +239,6 @@ prop_remove({props} [, {lnum} [, {lnum-end}]])
|
||||
|
||||
Returns the number of properties that were removed.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetProps()->prop_remove()
|
||||
|
||||
@@ -275,8 +264,6 @@ prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970*
|
||||
end_incl when TRUE inserts at the end position will be
|
||||
included in the text property
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_add(props)
|
||||
|
||||
@@ -285,8 +272,6 @@ prop_type_change({name}, {props}) *prop_type_change()*
|
||||
property with this name does not exist an error is given.
|
||||
The {props} argument is just like |prop_type_add()|.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_change(props)
|
||||
|
||||
@@ -301,8 +286,6 @@ prop_type_delete({name} [, {props}]) *prop_type_delete()*
|
||||
|
||||
When text property type {name} is not found there is no error.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_delete()
|
||||
|
||||
@@ -316,8 +299,6 @@ prop_type_get([{name} [, {props}]) *prop_type_get()*
|
||||
{props} can contain a "bufnr" item. When it is given, use
|
||||
this buffer instead of the global property types.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_get()
|
||||
|
||||
@@ -327,8 +308,6 @@ prop_type_list([{props}]) *prop_type_list()*
|
||||
{props} can contain a "bufnr" item. When it is given, use
|
||||
this buffer instead of the global property types.
|
||||
|
||||
See |text-properties| for information about text properties.
|
||||
|
||||
|
||||
==============================================================================
|
||||
3. When text changes *text-prop-changes*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 Jan 02
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 Jan 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -38,15 +38,8 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
- Implement prop_find() issue #4970 Done by Ryan Hackett, #5421
|
||||
|
||||
Include ipv6 syntax changes? (DJ Lucas, #5360)
|
||||
|
||||
Still have /* */ comments:
|
||||
misc1.c
|
||||
misc2.c
|
||||
others?
|
||||
|
||||
Popup windows:
|
||||
- Make it possible to put a terminal window in a popup. Would always grab key
|
||||
input? Sort-of possible by creating a hidden terminal and opening a popup
|
||||
@@ -128,7 +121,7 @@ Terminal emulator window:
|
||||
conversions.
|
||||
|
||||
Error numbers available:
|
||||
E362, E366, E450, E451, E452,
|
||||
E450, E451, E452,
|
||||
E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
|
||||
E654, E856, E857, E860, E861, E863, E889, E900
|
||||
|
||||
@@ -149,6 +142,9 @@ Needs better docs. Is there a better name?
|
||||
|
||||
undo result wrong: Masato Nishihata, #4798
|
||||
|
||||
Patch to add function to return the text used in the quickfix window.
|
||||
(Yegappan, #5465)
|
||||
|
||||
Undo puts cursor in wrong line after "cG<Esc>" undo.
|
||||
|
||||
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
|
||||
@@ -163,18 +159,24 @@ remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
|
||||
Also #4994: window-local options not always restored, related to using :badd.
|
||||
Also #5326: netrw buffers are not restored.
|
||||
|
||||
Patch to support cindent option to handle pragmas differently.
|
||||
(Max Rumpf, #5468)
|
||||
|
||||
Patch to make ":verbose pwd" show the scope of the directory. (Takuya
|
||||
Fujiwara, #5469)
|
||||
|
||||
Completion mixes results from the current buffer with tags and other files.
|
||||
Happens when typing CTRL-N while still searching for results. E.g., type "b_"
|
||||
in terminal.c and then CTRL-N twice.
|
||||
Should do current file first and not split it up when more results are found.
|
||||
(Also #1890)
|
||||
|
||||
Undo history wrong when ":next file" re-uses a buffer. (#5426)
|
||||
ex_next() should pass flag to do_argfile(), then to do_ecmd().
|
||||
|
||||
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
|
||||
(#4087)
|
||||
|
||||
Instead of using a syntax error, use #error to fail early when something is
|
||||
wrong. E.g. in vim.h "Error:", and blowfish.c "error!". (#5299)
|
||||
|
||||
":helptags ALL" should skip directories where "tags" cannot be written.
|
||||
(Matěj Cepl, #5026)
|
||||
|
||||
@@ -182,11 +184,18 @@ wrong. E.g. in vim.h "Error:", and blowfish.c "error!". (#5299)
|
||||
goes to any buffer, and then :bnext skips help buffers, since they are
|
||||
unlisted. (#4478)
|
||||
|
||||
Patch to include reduce() function. (#5481)
|
||||
|
||||
Patch to provide search stats in a variable, so that it can be used in the
|
||||
statusline. (Fujiwara Takuya, #4446)
|
||||
|
||||
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
|
||||
|
||||
Universal solution to detect if t_RS is working, using cursor position.
|
||||
Koichi Iwamoto, #2126
|
||||
|
||||
Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
|
||||
|
||||
The :syntax cchar value can only be a single character. It would be useful to
|
||||
support combining characters. (Charles Campbell) Also #4687
|
||||
|
||||
@@ -199,6 +208,8 @@ Add "t" action to settagstack(): truncate and add new entries. (#5405)
|
||||
|
||||
Result of synID() sometimes wrong in help files. (#5252)
|
||||
|
||||
Status line is nut updated when splitting windows. (Marcin Szamotulski, #5496)
|
||||
|
||||
Problem showing a line if the number column width changes when using "o".
|
||||
(Mateusz Morusiewicz, #4245)
|
||||
|
||||
@@ -209,6 +220,7 @@ When using :packadd files under "later" are not used, which is inconsistent
|
||||
with packages under "start". (xtal8, #1994)
|
||||
|
||||
Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320)
|
||||
Or make "v" prefix work?
|
||||
|
||||
Modeless selection doesn't work in gvim. (#4783)
|
||||
Caused by patch 8.1.1534.
|
||||
@@ -245,6 +257,9 @@ Saito, 2013 Apr 24) Update 2016 Aug 12.
|
||||
Also see issue #609.
|
||||
We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.
|
||||
|
||||
:buffer completion does not escape "+" properly and results in a regexp error.
|
||||
(#5467)
|
||||
|
||||
Check_external_diff() is used too often. (Daniel Hahler, #4800)
|
||||
|
||||
Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
|
||||
@@ -286,6 +301,10 @@ Patch to have text objects defined by arbitrary single characters. (Daniel
|
||||
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
|
||||
Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
|
||||
|
||||
":2resize +10" uses size of the current window, adds 10 and applies it to
|
||||
window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg,
|
||||
#5443)
|
||||
|
||||
Patch for multi-byte characters in langmap and applying a mapping on them.
|
||||
(Christian Brabandt, 2015 Jun 12, update July 25)
|
||||
Is this the right solution? Need to cleanup langmap behavior:
|
||||
@@ -407,9 +426,6 @@ similar to check_due_timer(). Also see #3809.
|
||||
C syntax: {} inside () causes following {} to be highlighted as error.
|
||||
(Michalis Giannakidis, 2006 Jun 1)
|
||||
|
||||
Support setting the character displayed below the last line? Neovim uses
|
||||
"eob:X" in 'fillchars'.
|
||||
|
||||
Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this
|
||||
added?
|
||||
|
||||
@@ -546,6 +562,8 @@ Add something like 'fillchars' local to window, but allow for specifying a
|
||||
highlight name. Esp. for the statusline.
|
||||
And "extends" and "precedes" are also useful without 'list' set. Also in
|
||||
'fillchars' or another option?
|
||||
Related: #3820 - Support setting the character displayed below the last line?
|
||||
Neovim uses "eob:X" in 'fillchars'.
|
||||
|
||||
Sourceforge Vim pages still have content, redirect from empty page.
|
||||
Check for PHP errors. (Wayne Davison, 2018 Oct 26)
|
||||
@@ -922,8 +940,6 @@ Patch from Christian Brabandt to preserve upper case marks when wiping out a
|
||||
buffer. (2013 Dec 9)
|
||||
Also fixes #2166?
|
||||
|
||||
Patch to add argument to :cquit. (Thinca, 2014 Oct 12)
|
||||
|
||||
Python: After "import vim" error messages only show the first line of the
|
||||
stack trace. (Yggdroot, 2017 Jul 28, #1887)
|
||||
|
||||
@@ -1111,6 +1127,7 @@ Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
|
||||
|
||||
When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017
|
||||
Apr 23, #1653)
|
||||
Can 'completeopt' be made buffer-local? (#5487)
|
||||
|
||||
Window resizing with 'winfixheight': With a vertical split the height changes
|
||||
anyway. (Tommy allen, 2017 Feb 21, #1502)
|
||||
@@ -1280,10 +1297,6 @@ names, shell commands and the like. (Kikuchan, 2010 Oct 14)
|
||||
Assume the system converts between the actual encoding of the filesystem to
|
||||
the system encoding (usually utf-8).
|
||||
|
||||
Using ":tab drop file" does not trigger BufEnter or TabEnter events.
|
||||
(Andy Stewart, 2017 Apr 27, #1660)
|
||||
Autocommands blocked in do_arg_all(). Supposed to happen later?
|
||||
|
||||
'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
|
||||
|
||||
MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*uganda.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*uganda.txt* For Vim version 8.2. Last change: 2020 Jan 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
@@ -509,14 +509,14 @@ Summary: *help-summary* >
|
||||
|
||||
1) Use Ctrl-D after typing a topic and let Vim show all available topics.
|
||||
Or press Tab to complete: >
|
||||
:help some<Tab>
|
||||
:help some<Tab>
|
||||
< More information on how to use the help: >
|
||||
:help helphelp
|
||||
|
||||
2) Follow the links in bars to related help. You can go from the detailed
|
||||
help to the user documentation, which describes certain commands more from
|
||||
a user perspective and less detailed. E.g. after: >
|
||||
:help pattern.txt
|
||||
:help pattern.txt
|
||||
< You can see the user guide topics |03.9| and |usr_27.txt| in the
|
||||
introduction.
|
||||
|
||||
@@ -528,27 +528,27 @@ Summary: *help-summary* >
|
||||
< to open the help page which describes all option handling and then search
|
||||
using regular expressions, e.g. textwidth.
|
||||
Certain options have their own namespace, e.g.: >
|
||||
:help cpo-<letter>
|
||||
:help cpo-<letter>
|
||||
< for the corresponding flag of the 'cpoptions' settings, substitute <letter>
|
||||
by a specific flag, e.g.: >
|
||||
:help cpo-;
|
||||
:help cpo-;
|
||||
< And for the guioption flags: >
|
||||
:help go-<letter>
|
||||
:help go-<letter>
|
||||
|
||||
4) Normal mode commands do not have a prefix. To go to the help page for the
|
||||
"gt" command: >
|
||||
:help gt
|
||||
:help gt
|
||||
|
||||
5) Insert mode commands start with i_. Help for deleting a word: >
|
||||
:help i_CTRL-W
|
||||
:help i_CTRL-W
|
||||
|
||||
6) Visual mode commands start with v_. Help for jumping to the other side of
|
||||
the Visual area: >
|
||||
:help v_o
|
||||
:help v_o
|
||||
|
||||
7) Command line editing and arguments start with c_. Help for using the
|
||||
command argument %: >
|
||||
:help c_%
|
||||
:help c_%
|
||||
|
||||
8) Ex-commands always start with ":", so to go to the ":s" command help: >
|
||||
:help :s
|
||||
@@ -559,56 +559,56 @@ Summary: *help-summary* >
|
||||
|
||||
10) Key combinations. They usually start with a single letter indicating
|
||||
the mode for which they can be used. E.g.: >
|
||||
:help i_CTRL-X
|
||||
:help i_CTRL-X
|
||||
< takes you to the family of CTRL-X commands for insert mode which can be
|
||||
used to auto-complete different things. Note, that certain keys will
|
||||
always be written the same, e.g. Control will always be CTRL.
|
||||
For normal mode commands there is no prefix and the topic is available at
|
||||
:h CTRL-<Letter>. E.g. >
|
||||
:help CTRL-W
|
||||
:help CTRL-W
|
||||
< In contrast >
|
||||
:help c_CTRL-R
|
||||
< will describe what the CTRL-R does when entering commands in the Command
|
||||
line and >
|
||||
:help v_CTRL-A
|
||||
:help v_CTRL-A
|
||||
< talks about incrementing numbers in visual mode and >
|
||||
:help g_CTRL-A
|
||||
< talks about the "g<C-A>" command (e.g. you have to press "g" then
|
||||
<CTRL-A>). Here the "g" stand for the normal command "g" which always
|
||||
<CTRL-A>). Here the "g" stands for the normal command "g" which always
|
||||
expects a second key before doing something similar to the commands
|
||||
starting with "z"
|
||||
starting with "z".
|
||||
|
||||
11) Regexp items always start with /. So to get help for the "\+" quantifier
|
||||
in Vim regexes: >
|
||||
:help /\+
|
||||
:help /\+
|
||||
< If you need to know everything about regular expressions, start reading
|
||||
at: >
|
||||
:help pattern.txt
|
||||
:help pattern.txt
|
||||
|
||||
12) Registers always start with "quote". To find out about the special ":"
|
||||
register: >
|
||||
:help quote:
|
||||
:help quote:
|
||||
|
||||
13) Vim script is available at >
|
||||
:help eval.txt
|
||||
< Certain aspects of the language are available at :h expr-X where "X" is a
|
||||
single letter. E.g. >
|
||||
:help expr-!
|
||||
< will take you to the topic describing the "!" (Not) operator for
|
||||
VimScript.
|
||||
Also important is >
|
||||
:help function-list
|
||||
< to find a short description of all functions available. Help topics for
|
||||
Vim script functions always include the "()", so: >
|
||||
:help append()
|
||||
< talks about the append Vim script function rather than how to append text
|
||||
in the current buffer.
|
||||
< Certain aspects of the language are available at :h expr-X where "X" is a
|
||||
single letter. E.g. >
|
||||
:help expr-!
|
||||
< will take you to the topic describing the "!" (Not) operator for Vim
|
||||
script.
|
||||
Also important is >
|
||||
:help function-list
|
||||
< to find a short description of all functions available. Help topics for
|
||||
Vim script functions always include the "()", so: >
|
||||
:help append()
|
||||
< talks about the append Vim script function rather than how to append text
|
||||
in the current buffer.
|
||||
|
||||
14) Mappings are talked about in the help page :h |map.txt|. Use >
|
||||
:help mapmode-i
|
||||
:help mapmode-i
|
||||
< to find out about the |:imap| command. Also use :map-topic
|
||||
to find out about certain subtopics particular for mappings. e.g: >
|
||||
:help :map-local
|
||||
:help :map-local
|
||||
< for buffer-local mappings or >
|
||||
:help map-bar
|
||||
< for how the '|' is handled in mappings.
|
||||
@@ -619,7 +619,7 @@ Summary: *help-summary* >
|
||||
|
||||
16) Window management commands always start with CTRL-W, so you find the
|
||||
corresponding help at :h CTRL-W_letter. E.g. >
|
||||
:help CTRL-W_p
|
||||
:help CTRL-W_p
|
||||
< for moving the previous accessed window. You can also access >
|
||||
:help windows.txt
|
||||
< and read your way through if you are looking for window handling
|
||||
@@ -628,30 +628,30 @@ Summary: *help-summary* >
|
||||
17) Use |:helpgrep| to search in all help pages (and also of any installed
|
||||
plugins). See |:helpgrep| for how to use it.
|
||||
To search for a topic: >
|
||||
:helpgrep topic
|
||||
:helpgrep topic
|
||||
< This takes you to the first match. To go to the next one: >
|
||||
:cnext
|
||||
< All matches are available in the quickfix window which can be opened
|
||||
with: >
|
||||
:copen
|
||||
:copen
|
||||
< Move around to the match you like and press Enter to jump to that help.
|
||||
|
||||
18) The user manual. This describes help topics for beginners in a rather
|
||||
friendly way. Start at |usr_toc.txt| to find the table of content (as you
|
||||
might have guessed): >
|
||||
:help usr_toc.txt
|
||||
:help usr_toc.txt
|
||||
< Skim over the contents to find interesting topics. The "Digraphs" and
|
||||
"Entering special characters" items are in chapter 24, so to go to that
|
||||
particular help page: >
|
||||
:help usr_24.txt
|
||||
:help usr_24.txt
|
||||
< Also if you want to access a certain chapter in the help, the chapter
|
||||
number can be accessed directly like this: >
|
||||
:help 10.1
|
||||
:help 10.1
|
||||
< which goes to chapter 10.1 in |usr_10.txt| and talks about recording
|
||||
macros.
|
||||
|
||||
19) Highlighting groups. Always start with hl-groupname. E.g. >
|
||||
:help hl-WarningMsg
|
||||
:help hl-WarningMsg
|
||||
< talks about the WarningMsg highlighting group.
|
||||
|
||||
20) Syntax highlighting is namespaced to :syn-topic. E.g. >
|
||||
@@ -662,24 +662,24 @@ Summary: *help-summary* >
|
||||
usually start with :l
|
||||
|
||||
22) Autocommand events can be found by their name: >
|
||||
:help BufWinLeave
|
||||
:help BufWinLeave
|
||||
< To see all possible events: >
|
||||
:help autocommand-events
|
||||
|
||||
23) Command-line switches always start with "-". So for the help of the -f
|
||||
command switch of Vim use: >
|
||||
:help -f
|
||||
:help -f
|
||||
|
||||
24) Optional features always start with "+". To find out about the
|
||||
conceal feature use: >
|
||||
:help +conceal
|
||||
:help +conceal
|
||||
|
||||
25) Documentation for included filetype specific functionality is usually
|
||||
available in the form ft-<filetype>-<functionality>. So >
|
||||
:help ft-c-syntax
|
||||
available in the form ft-<filetype>-<functionality>. So >
|
||||
:help ft-c-syntax
|
||||
< talks about the C syntax file and the option it provides. Sometimes,
|
||||
additional sections for omni completion >
|
||||
:help ft-php-omni
|
||||
:help ft-php-omni
|
||||
< or filetype plugins >
|
||||
:help ft-tex-plugin
|
||||
< are available.
|
||||
@@ -691,7 +691,7 @@ Summary: *help-summary* >
|
||||
< talks about the warning "Changing a readonly file".
|
||||
Sometimes, however, those error codes are not described, but rather are
|
||||
listed at the Vim command that usually causes this. So: >
|
||||
:help E128
|
||||
:help E128
|
||||
< takes you to the |:function| command
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_11.txt* For Vim version 8.2. Last change: 2019 Apr 28
|
||||
*usr_11.txt* For Vim version 8.2. Last change: 2020 Jan 17
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -211,8 +211,11 @@ will automatically delete it:
|
||||
- The flag that the file was modified is not set.
|
||||
- The process is not running.
|
||||
|
||||
You can programatically deal with this situation with the |FileChangedShell|
|
||||
autocommand event.
|
||||
|
||||
UNREADABLE SWAP FILE
|
||||
|
||||
UNREADABLE SWAP FILE ~
|
||||
|
||||
Sometimes the line
|
||||
|
||||
|
||||
@@ -673,21 +673,10 @@ syntax file, earlier in 'runtimepath' was already loaded: >
|
||||
finish
|
||||
endif
|
||||
|
||||
To be compatible with Vim 5.8 use: >
|
||||
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
Set "b:current_syntax" to the name of the syntax at the end. Don't forget
|
||||
that included files do this too, you might have to reset "b:current_syntax" if
|
||||
you include two files.
|
||||
|
||||
If you want your syntax file to work with Vim 5.x, add a check for v:version.
|
||||
Find an syntax file in the Vim 7.2 distribution for an example.
|
||||
|
||||
Do not include anything that is a user preference. Don't set 'tabstop',
|
||||
'expandtab', etc. These belong in a filetype plugin.
|
||||
|
||||
|
||||
@@ -64,20 +64,11 @@ provide the fastest download:
|
||||
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
|
||||
"unix" directory and you'll find a list of files there. The version number is
|
||||
embedded in the file name. You will want to get the most recent version.
|
||||
You can get the files for Unix in two ways: One big archive that contains
|
||||
everything, or four smaller ones that each fit on a floppy disk. For version
|
||||
6.1 the single big one is called:
|
||||
You can get the files for Unix in one big archive that contains everything:
|
||||
|
||||
vim-6.1.tar.bz2 ~
|
||||
vim-8.2.tar.bz2 ~
|
||||
|
||||
You need the bzip2 program to uncompress it. If you don't have it, get the
|
||||
four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are
|
||||
called:
|
||||
|
||||
vim-6.1-src1.tar.gz ~
|
||||
vim-6.1-src2.tar.gz ~
|
||||
vim-6.1-rt1.tar.gz ~
|
||||
vim-6.1-rt2.tar.gz ~
|
||||
You need the bzip2 program to uncompress it.
|
||||
|
||||
|
||||
COMPILING
|
||||
@@ -87,22 +78,19 @@ First create a top directory to work in, for example: >
|
||||
mkdir ~/vim
|
||||
cd ~/vim
|
||||
|
||||
Then unpack the archives there. If you have the one big archive, you unpack
|
||||
it like this: >
|
||||
Then unpack the archives there. You can unpack it like this: >
|
||||
|
||||
bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf -
|
||||
tar xf path/vim-8.2.tar.bz2
|
||||
|
||||
Change "path" to where you have downloaded the file. >
|
||||
If your tar command doesn't support bz2 directly: >
|
||||
|
||||
gzip -d -c path/vim-6.1-src1.tar.gz | tar xf -
|
||||
gzip -d -c path/vim-6.1-src2.tar.gz | tar xf -
|
||||
gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf -
|
||||
gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf -
|
||||
bzip2 -d -c path/vim-8.2.tar.bz2 | tar xf -
|
||||
|
||||
Change "path" to where you have downloaded the file.
|
||||
If you are satisfied with getting the default features, and your environment
|
||||
is setup properly, you should be able to compile Vim with just this: >
|
||||
|
||||
cd vim61/src
|
||||
cd vim82/src
|
||||
make
|
||||
|
||||
The make program will run configure and compile everything. Further on we
|
||||
@@ -231,9 +219,9 @@ provide the fastest download:
|
||||
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
|
||||
"pc" directory and you'll find a list of files there. The version number is
|
||||
embedded in the file name. You will want to get the most recent version.
|
||||
We will use "61" here, which is version 6.1.
|
||||
We will use "82" here, which is version 8.2.
|
||||
|
||||
gvim61.exe The self-installing archive.
|
||||
gvim82.exe The self-installing archive.
|
||||
|
||||
This is all you need for the second method. Just launch the executable, and
|
||||
follow the prompts.
|
||||
@@ -241,30 +229,28 @@ follow the prompts.
|
||||
For the first method you must chose one of the binary archives. These are
|
||||
available:
|
||||
|
||||
gvim61.zip The normal MS-Windows GUI version.
|
||||
gvim61ole.zip The MS-Windows GUI version with OLE support.
|
||||
gvim82.zip The normal MS-Windows GUI version.
|
||||
gvim82ole.zip The MS-Windows GUI version with OLE support.
|
||||
Uses more memory, supports interfacing with
|
||||
other OLE applications.
|
||||
vim61w32.zip 32 bit MS-Windows console version. For use in
|
||||
a Win NT/2000/XP console. Does not work well
|
||||
on Win 95/98.
|
||||
vim82w32.zip 32 bit MS-Windows console version.
|
||||
|
||||
You only need one of them. Although you could install both a GUI and a
|
||||
console version. You always need to get the archive with runtime files.
|
||||
|
||||
vim61rt.zip The runtime files.
|
||||
vim82rt.zip The runtime files.
|
||||
|
||||
Use your un-zip program to unpack the files. For example, using the "unzip"
|
||||
program: >
|
||||
|
||||
cd c:\
|
||||
unzip path\gvim61.zip
|
||||
unzip path\vim61rt.zip
|
||||
unzip path\gvim82.zip
|
||||
unzip path\vim82rt.zip
|
||||
|
||||
This will unpack the files in the directory "c:\vim\vim61". If you already
|
||||
This will unpack the files in the directory "c:\vim\vim82". If you already
|
||||
have a "vim" directory somewhere, you will want to move to the directory just
|
||||
above it.
|
||||
Now change to the "vim\vim61" directory and run the install program: >
|
||||
Now change to the "vim\vim82" directory and run the install program: >
|
||||
|
||||
install
|
||||
|
||||
@@ -277,8 +263,8 @@ unpacked them.
|
||||
In case you are not satisfied with the features included in the supplied
|
||||
binaries, you could try compiling Vim yourself. Get the source archive from
|
||||
the same location as where the binaries are. You need a compiler for which a
|
||||
makefile exists. Microsoft Visual C works, but is expensive. The free MinGW
|
||||
and Cygwin compilers can be used. Check the file src/INSTALLpc.txt for hints.
|
||||
makefile exists. Microsoft Visual C, MinGW and Cygwin compilers can be used.
|
||||
Check the file src/INSTALLpc.txt for hints.
|
||||
|
||||
==============================================================================
|
||||
*90.3* Upgrading
|
||||
@@ -298,7 +284,7 @@ about keeping the old version, running "make install" will work fine. You can
|
||||
delete the old runtime files manually. Just delete the directory with the
|
||||
version number in it and all files below it. Example: >
|
||||
|
||||
rm -rf /usr/local/share/vim/vim58
|
||||
rm -rf /usr/local/share/vim/vim74
|
||||
|
||||
There are normally no changed files below this directory. If you did change
|
||||
the "filetype.vim" file, for example, you better merge the changes into the
|
||||
@@ -308,21 +294,21 @@ If you are careful and want to try out the new version for a while before
|
||||
switching to it, install the new version under another name. You need to
|
||||
specify a configure argument. For example: >
|
||||
|
||||
./configure --with-vim-name=vim6
|
||||
./configure --with-vim-name=vim8
|
||||
|
||||
Before running "make install", you could use "make -n install" to check that
|
||||
no valuable existing files are overwritten.
|
||||
When you finally decide to switch to the new version, all you need to do is
|
||||
to rename the binary to "vim". For example: >
|
||||
|
||||
mv /usr/local/bin/vim6 /usr/local/bin/vim
|
||||
mv /usr/local/bin/vim8 /usr/local/bin/vim
|
||||
|
||||
|
||||
MS-WINDOWS
|
||||
|
||||
Upgrading is mostly equal to installing a new version. Just unpack the files
|
||||
in the same place as the previous version. A new directory will be created,
|
||||
e.g., "vim61", for the files of the new version. Your runtime files, vimrc
|
||||
e.g., "vim82", for the files of the new version. Your runtime files, vimrc
|
||||
file, viminfo, etc. will be left alone.
|
||||
If you want to run the new version next to the old one, you will have to do
|
||||
some handwork. Don't run the install program, it will overwrite a few files
|
||||
@@ -428,7 +414,7 @@ However, if you have deleted the original files or you used an archive that
|
||||
someone supplied, you can't do this. Do delete the files manually, here is an
|
||||
example for when "/usr/local" was used as the root: >
|
||||
|
||||
rm -rf /usr/local/share/vim/vim61
|
||||
rm -rf /usr/local/share/vim/vim82
|
||||
rm /usr/local/bin/eview
|
||||
rm /usr/local/bin/evim
|
||||
rm /usr/local/bin/ex
|
||||
@@ -467,7 +453,7 @@ MS-WINDOWS
|
||||
|
||||
If you installed Vim with the self-installing archive you can run
|
||||
the "uninstall-gui" program located in the same directory as the other Vim
|
||||
programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if
|
||||
programs, e.g. "c:\vim\vim82". You can also launch it from the Start menu if
|
||||
installed the Vim entries there. This will remove most of the files, menu
|
||||
entries and desktop shortcuts. Some files may remain however, as they need a
|
||||
Windows restart before being deleted.
|
||||
@@ -477,10 +463,10 @@ be careful.
|
||||
|
||||
Else, if you installed Vim with the zip archives, the preferred way is to use
|
||||
the "uninstall" program. You can find it in the same directory as the
|
||||
"install" program, e.g., "c:\vim\vim61". This should also work from the usual
|
||||
"install" program, e.g., "c:\vim\vim82". This should also work from the usual
|
||||
"install/remove software" page.
|
||||
However, this only removes the registry entries for Vim. You have to
|
||||
delete the files yourself. Simply select the directory "vim\vim61" and delete
|
||||
delete the files yourself. Simply select the directory "vim\vim82" and delete
|
||||
it recursively. There should be no files there that you changed, but you
|
||||
might want to check that first.
|
||||
The "vim" directory probably contains your vimrc file and other runtime
|
||||
|
||||
@@ -133,14 +133,10 @@ Support for different systems.
|
||||
- All Unix systems (it works on all systems it was tested on, although
|
||||
the GUI and Perl interface may not work everywhere).
|
||||
- Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
|
||||
- MS-DOS in real-mode (no additional drivers required).
|
||||
- In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
|
||||
- Windows 95 and Windows NT, with support for long file names.
|
||||
- OS/2 (needs emx.dll)
|
||||
- MS-Windows
|
||||
- VMS
|
||||
- BeOS
|
||||
- Macintosh
|
||||
- Risc OS
|
||||
- IBM OS/390
|
||||
Note that on some systems features need to be disabled to reduce
|
||||
resource usage. For some outdated systems you need to use an older
|
||||
|
||||
0
runtime/doc/vim-it.1
Executable file → Normal file
0
runtime/doc/vim-it.1
Executable file → Normal file
561
runtime/doc/vim9.txt
Normal file
561
runtime/doc/vim9.txt
Normal file
@@ -0,0 +1,561 @@
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2019 Dec 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
Vim9 script commands and expressions.
|
||||
|
||||
Most expression help is in |eval.txt|. This file is about the new syntax and
|
||||
features in Vim9 script.
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
|
||||
1 What is Vim9 script? |vim9-script|
|
||||
2. Differences |vim9-differences|
|
||||
3. New style functions |fast-functions|
|
||||
4. Types |vim9-types|
|
||||
5. Namespace, Import and Export |vim9script|
|
||||
|
||||
9. Rationale |vim9-rationale|
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. What is Vim9 script? *vim9-script*
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
Vim script has been growing over time, while keeping backwards compatibility.
|
||||
That means bad choices from the past often can't be changed. Execution is
|
||||
quite slow, every line is parsed every time it is executed.
|
||||
|
||||
The main goal of Vim9 script is to drastically improve performance. An
|
||||
increase in execution speed of 10 to 100 times can be expected. A secondary
|
||||
goal is to avoid Vim-specific constructs and get closer to commonly used
|
||||
programming languages, such as JavaScript, TypeScript and Java.
|
||||
|
||||
The performance improvements can only be achieved by not being 100% backwards
|
||||
compatible. For example, in a function the arguments are not available in the
|
||||
"a:" dictionary, as creating that dictionary adds quite a lot of overhead.
|
||||
Other differences are more subtle, such as how errors are handled.
|
||||
|
||||
The Vim9 script syntax and semantics are used in:
|
||||
- a function defined with the `:def` command
|
||||
- a script file where the first command is `vim9script`
|
||||
|
||||
When using `:function` in a Vim9 script file the legacy syntax is used.
|
||||
However, this is discouraged.
|
||||
|
||||
Vim9 script and legacy Vim script can be mixed. There is no need to rewrite
|
||||
old scripts, they keep working as before.
|
||||
|
||||
==============================================================================
|
||||
|
||||
2. Differences from legacy Vim script *vim9-differences*
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
Vim9 functions ~
|
||||
|
||||
`:def` has no extra arguments like `:function` does: "range", "abort", "dict"
|
||||
or "closure". A `:def` function always aborts on an error, does not get a
|
||||
range passed and cannot be a "dict" function.
|
||||
|
||||
In the function body:
|
||||
- Arguments are accessed by name, without "a:".
|
||||
- There is no "a:" dictionary or "a:000" list. Variable arguments are defined
|
||||
with a name and have a list type: >
|
||||
def MyFunc(...itemlist: list<type>)
|
||||
for item in itemlist
|
||||
...
|
||||
|
||||
|
||||
Variable declarations with :let and :const ~
|
||||
|
||||
Local variables need to be declared with `:let`. Local constants need to be
|
||||
declared with `:const`. We refer to both as "variables".
|
||||
|
||||
Variables can be local to a script, function or code block: >
|
||||
vim9script
|
||||
let script_var = 123
|
||||
def SomeFunc()
|
||||
let func_var = script_var
|
||||
if cond
|
||||
let block_var = func_var
|
||||
...
|
||||
|
||||
The variables are only visible in the block where they are defined and nested
|
||||
blocks. Once the block ends the variable is no longer accessible: >
|
||||
if cond
|
||||
let inner = 5
|
||||
else
|
||||
let inner = 0
|
||||
endif
|
||||
echo inner " Error!
|
||||
|
||||
The declaration must be done earlier: >
|
||||
let inner: number
|
||||
if cond
|
||||
inner = 5
|
||||
else
|
||||
inner = 0
|
||||
endif
|
||||
echo inner
|
||||
|
||||
To intentionally use a variable that won't be available later, a block can be
|
||||
used: >
|
||||
{
|
||||
let temp = 'temp'
|
||||
...
|
||||
}
|
||||
echo temp " Error!
|
||||
|
||||
An existing variable cannot be assigend to with `:let`, since that implies a
|
||||
declaration. An exception is global variables: these can be both used with
|
||||
and without `:let`, because there is no rule about where they are declared.
|
||||
|
||||
Variables cannot shadow previously defined variables.
|
||||
Variables may shadow Ex commands, rename the variable if needed.
|
||||
|
||||
Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
|
||||
used to repeat a `:substitute` command.
|
||||
|
||||
|
||||
Omitting :call and :eval ~
|
||||
|
||||
Functions can be called without `:call`: >
|
||||
writefile(lines, 'file')
|
||||
Using `:call` is still posible, but this is discouraged.
|
||||
|
||||
A method call without `eval` is possible, so long as the start is an
|
||||
identifier or can't be an Ex command. It does not work for string constants: >
|
||||
myList->add(123) " works
|
||||
g:myList->add(123) " works
|
||||
[1, 2, 3]->Process() " works
|
||||
#{a: 1, b: 2}->Process() " works
|
||||
{'a': 1, 'b': 2}->Process() " works
|
||||
"foobar"->Process() " does NOT work
|
||||
eval "foobar"->Process() " works
|
||||
|
||||
|
||||
No curly braces expansion ~
|
||||
|
||||
|curly-braces-names| cannot be used.
|
||||
|
||||
|
||||
Comperators ~
|
||||
|
||||
The 'ignorecase' option is not used for comperators that use strings.
|
||||
|
||||
|
||||
White space ~
|
||||
|
||||
Vim9 script enforces proper use of white space. This is no longer allowed: >
|
||||
let var=234 " Error!
|
||||
let var= 234 " Error!
|
||||
let var =234 " Error!
|
||||
There must be white space before and after the "=": >
|
||||
let var = 234 " OK
|
||||
|
||||
White space is required around most operators.
|
||||
|
||||
White space is not allowed:
|
||||
- Between a function name and the "(": >
|
||||
call Func (arg) " Error!
|
||||
call Func
|
||||
\ (arg) " Error!
|
||||
call Func(arg) " OK
|
||||
call Func(
|
||||
\ arg) " OK
|
||||
|
||||
|
||||
Conditions and expressions ~
|
||||
|
||||
Conditions and expression are mostly working like they do in JavaScript. A
|
||||
difference is made where JavaScript does not work like most people expect.
|
||||
Specifically, an empty list is falsey.
|
||||
|
||||
Any type of variable can be used as a condition, there is no error, not even
|
||||
for using a list or job. This is very much like JavaScript, but there are a
|
||||
few exceptions.
|
||||
|
||||
type TRUE when ~
|
||||
bool v:true
|
||||
number non-zero
|
||||
float non-zero
|
||||
string non-empty
|
||||
blob non-empty
|
||||
list non-empty (different from JavaScript)
|
||||
dictionary non-empty (different from JavaScript)
|
||||
funcref when not NULL
|
||||
partial when not NULL
|
||||
special v:true
|
||||
job when not NULL
|
||||
channel when not NULL
|
||||
class when not NULL
|
||||
object when not NULL (TODO: when isTrue() returns v:true)
|
||||
|
||||
The boolean operators "||" and "&&" do not change the value: >
|
||||
8 || 2 == 8
|
||||
0 || 2 == 2
|
||||
0 || '' == ''
|
||||
8 && 2 == 2
|
||||
0 && 2 == 0
|
||||
[] && 2 == []
|
||||
|
||||
When using `..` for string concatenation the arguments are always converted to
|
||||
string. >
|
||||
'hello ' .. 123 == 'hello 123'
|
||||
'hello ' .. v:true == 'hello true'
|
||||
|
||||
In Vim9 script one can use "true" for v:true and "false" for v:false.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
3. New style functions *fast-functions*
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
*:def*
|
||||
:def[!] {name}([arguments])[: {return-type}
|
||||
Define a new function by the name {name}. The body of
|
||||
the function follows in the next lines, until the
|
||||
matching `:enddef`.
|
||||
|
||||
When {return-type} is omitted the return type will be
|
||||
decided upon by the first encountered `return`
|
||||
statement in the function. E.g., for: >
|
||||
return 'message'
|
||||
< The return type will be "string".
|
||||
|
||||
{arguments} is a sequence of zero or more argument
|
||||
declarations. There are three forms:
|
||||
{name}: {type}
|
||||
{name} = {value}
|
||||
{name}: {type} = {value}
|
||||
The first form is a mandatory argument, the caller
|
||||
must always provide them.
|
||||
The second and third form are optional arguments.
|
||||
When the caller omits an argument the {value} is used.
|
||||
|
||||
[!] is used as with `:function`.
|
||||
|
||||
*:enddef*
|
||||
:enddef End of a function defined with `:def`.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Types *vim9-types*
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
The following builtin types are supported:
|
||||
bool
|
||||
number
|
||||
float
|
||||
string
|
||||
blob
|
||||
list<type>
|
||||
dict<type>
|
||||
(a: type, b: type): type
|
||||
job
|
||||
channel
|
||||
|
||||
Not supported yet:
|
||||
tuple<a: type, b: type, ...>
|
||||
|
||||
These types can be used in declarations, but no variable will have this type:
|
||||
type|type
|
||||
void
|
||||
any
|
||||
|
||||
There is no array type, use list<type> instead. For a list constant an
|
||||
efficient implementation is used that avoids allocating lot of small pieces of
|
||||
memory.
|
||||
|
||||
A function defined with `:def` must declare the return type. If there is no
|
||||
type then the function doesn't return anything. "void" is used in type
|
||||
declarations.
|
||||
|
||||
Custom types can be defined with `:type`: >
|
||||
:type MyList list<string>
|
||||
{not implemented yet}
|
||||
|
||||
And classes and interfaces can be used as types: >
|
||||
:class MyClass
|
||||
:let mine: MyClass
|
||||
|
||||
:interface MyInterface
|
||||
:let mine: MyInterface
|
||||
|
||||
:class MyTemplate<Targ>
|
||||
:let mine: MyTemplate<number>
|
||||
:let mine: MyTemplate<string>
|
||||
|
||||
:class MyInterface<Targ>
|
||||
:let mine: MyInterface<number>
|
||||
:let mine: MyInterface<string>
|
||||
{not implemented yet}
|
||||
|
||||
|
||||
Type inference *type-inference*
|
||||
|
||||
In general: Whenever the type is clear it can be omitted. For example, when
|
||||
declaring a variable and giving it a value: >
|
||||
let var = 0 " infers number type
|
||||
let var = 'hello' " infers string type
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
5. Namespace, Import and Export
|
||||
*vim9script* *vim9-export* *vim9-import*
|
||||
|
||||
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
A Vim9 script can be written to be imported. This means that everything in
|
||||
the script is local, unless exported. Those exported items, and only those
|
||||
items, can then be imported in another script.
|
||||
|
||||
|
||||
Namespace ~
|
||||
*:vim9script* *:vim9*
|
||||
To recognize an file that can be imported the `vim9script` statement must
|
||||
appear as the first statement in the file. It tells Vim to interpret the
|
||||
script in its own namespace, instead of the global namespace. If a file
|
||||
starts with: >
|
||||
vim9script
|
||||
let myvar = 'yes'
|
||||
Then "myvar" will only exist in this file. While without `vim9script` it would
|
||||
be available as `g:myvar` from any other script and function.
|
||||
|
||||
The variables at the file level are very much like the script-local "s:"
|
||||
variables in legacy Vim script, but the "s:" is omitted.
|
||||
|
||||
In Vim9 script the global "g:" namespace can still be used as before.
|
||||
|
||||
A side effect of `:vim9script` is that the 'cpoptions' option is set to the
|
||||
Vim default value, like with: >
|
||||
:set cpo&vim
|
||||
One of the effects is that |line-continuation| is always enabled.
|
||||
The original value of 'cpoptions' is restored at the end of the script.
|
||||
|
||||
|
||||
Export ~
|
||||
*:export* *:exp*
|
||||
Exporting one item can be written as: >
|
||||
export const EXPORTED_CONST = 1234
|
||||
export let someValue = ...
|
||||
export def MyFunc() ...
|
||||
export class MyClass ...
|
||||
|
||||
As this suggests, only constants, variables, `:def` functions and classes can
|
||||
be exported.
|
||||
|
||||
Alternatively, an export statement can be used to export several already
|
||||
defined (otherwise script-local) items: >
|
||||
export {EXPORTED_CONST, someValue, MyFunc, MyClass}
|
||||
|
||||
|
||||
Import ~
|
||||
*:import* *:imp*
|
||||
The exported items can be imported individually in another Vim9 script: >
|
||||
import EXPORTED_CONST from "thatscript.vim"
|
||||
import MyClass from "myclass.vim"
|
||||
|
||||
To import multiple items at the same time: >
|
||||
import {someValue, MyClass} from "thatscript.vim"
|
||||
|
||||
In case the name is ambigiuous, another name can be specified: >
|
||||
import MyClass as ThatClass from "myclass.vim"
|
||||
import {someValue, MyClass as ThatClass} from "myclass.vim"
|
||||
|
||||
To import all exported items under a specific identifier: >
|
||||
import * as That from 'thatscript.vim'
|
||||
|
||||
Then you can use "That.EXPORTED_CONST", "That.someValue", etc. You are free
|
||||
to choose the name "That", but it is highly recommended to use the name of the
|
||||
script file to avoid confusion.
|
||||
|
||||
The script name after `import` can be:
|
||||
- A relative path, starting "." or "..". This finds a file relative to the
|
||||
location of the script file itself. This is useful to split up a large
|
||||
plugin into several files.
|
||||
- An absolute path, starting with "/" on Unix or "D:/" on MS-Windows. This
|
||||
will be rarely used.
|
||||
- A path not being relative or absolute. This will be found in the
|
||||
"import" subdirectories of 'runtimepath' entries. The name will usually be
|
||||
longer and unique, to avoid loading the wrong file.
|
||||
|
||||
Once a vim9 script file has been imported, the result is cached and used the
|
||||
next time the same script is imported. It will not be read again.
|
||||
*:import-cycle*
|
||||
The `import` commands are executed when encountered. If that script (directly
|
||||
or indirectly) imports the current script, then items defined after the
|
||||
`import` won't be processed yet. Therefore cyclic imports can exist, but may
|
||||
result in undefined items.
|
||||
|
||||
|
||||
Import in an autoload script ~
|
||||
|
||||
For optimal startup speed, loading scripts should be postponed until they are
|
||||
actually needed. A recommended mechamism:
|
||||
|
||||
1. In the plugin define user commands, functions and/or mappings that refer to
|
||||
an autoload script. >
|
||||
command -nargs=1 SearchForStuff call searchfor#Stuff(<f-args>)
|
||||
|
||||
< This goes in .../plugin/anyname.vim. "anyname.vim" can be freely chosen.
|
||||
|
||||
2. In the autocommand script do the actual work. You can import items from
|
||||
other files to split up functionality in appropriate pieces. >
|
||||
vim9script
|
||||
import FilterFunc from "../import/someother.vim"
|
||||
def searchfor#Stuff(arg: string)
|
||||
let filtered = FilterFunc(arg)
|
||||
...
|
||||
< This goes in .../autoload/searchfor.vim. "searchfor" in the file name
|
||||
must be exactly the same as the prefix for the function name, that is how
|
||||
Vim finds the file.
|
||||
|
||||
3. Other functionality, possibly shared between plugins, contains the exported
|
||||
items and any private items. >
|
||||
vim9script
|
||||
let localVar = 'local'
|
||||
export def FilterFunc(arg: string): string
|
||||
...
|
||||
< This goes in .../import/someother.vim.
|
||||
|
||||
|
||||
Import in legacy Vim script ~
|
||||
|
||||
If an `import` statement is used in legacy Vim script, for identifier the
|
||||
script-local "s:" namespace will be used, even when "s:" is not specified.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
9. Rationale *vim9-rationale*
|
||||
|
||||
The :def command ~
|
||||
|
||||
Plugin writers have asked for a much faster Vim script. Investigation have
|
||||
shown that keeping the existing semantics of funtion calls make this close to
|
||||
impossible, because of the overhead involved with calling a function, setting
|
||||
up the local function scope and executing lines. There are many details that
|
||||
need to be handled, such as error messages and exceptions. The need to create
|
||||
a dictionary for a: and l: scopes, the a:000 list and several others add too
|
||||
much overhead that cannot be avoided.
|
||||
|
||||
Therefore the `:def` method to define a new-style function had to be added,
|
||||
which allows for a function with different semantics. Most things still work
|
||||
as before, but some parts do not. A new way to define a function was
|
||||
considered the best way to separate the old-style code from Vim9 script code.
|
||||
|
||||
Using "def" to define a function comes from Python. Other languages use
|
||||
"function" which clashes with legacy Vim script.
|
||||
|
||||
|
||||
Type checking ~
|
||||
|
||||
When compiling lines of Vim commands into instructions as much as possible
|
||||
should be done at compile time. Postponing it to runtime makes the execution
|
||||
slower and means mistakes are found only later. For example, when
|
||||
encountering the "+" character and compiling this into a generic add
|
||||
instruction, at execution time the instruction would have to inspect the type
|
||||
of the arguments and decide what kind of addition to do. And when the
|
||||
type is dictionary throw an error. If the types are known to be numbers then
|
||||
an "add number" instruction can be used, which is faster. The error can be
|
||||
given at compile time, no error handling is needed at runtime.
|
||||
|
||||
The syntax for types is similar to Java, since it is easy to understand and
|
||||
widely used. The type names are what was used in Vim before, with some
|
||||
additions such as "void" and "bool".
|
||||
|
||||
|
||||
JavaScript/TypeScript syntax and semantics ~
|
||||
|
||||
Script writers have complained that the Vim script syntax is unexpectedly
|
||||
different from what they are used to. To reduce this complaint popular
|
||||
languages will be used as an example. At the same time, we do not want to
|
||||
abondon the well-known parts of legacy Vim script.
|
||||
|
||||
Since Vim already uses `:let` and `:const` and optional type checking is
|
||||
desirable, the JavaScript/TypeScript syntax fits best for variable
|
||||
declarations. >
|
||||
const greeting = 'hello' " string type is inferred
|
||||
let name: string
|
||||
...
|
||||
name = 'John'
|
||||
|
||||
Expression evaluation was already close to what JavaScript and other languages
|
||||
are doing. Some details are unexpected and can be fixed. For example how the
|
||||
|| and && operators work. Legacy Vim script: >
|
||||
let result = 44
|
||||
...
|
||||
return result || 0 " returns 1
|
||||
|
||||
Vim9 script works like JavaScript, keep the value: >
|
||||
let result = 44
|
||||
...
|
||||
return result || 0 " returns 44
|
||||
|
||||
On the other hand, overloading "+" to use both for addition and string
|
||||
concatenation goes against legacy Vim script and often leads to mistakes.
|
||||
For that reason we will keep using ".." for string concatenation. Lua also
|
||||
uses ".." this way.
|
||||
|
||||
|
||||
Import and Export ~
|
||||
|
||||
A problem of legacy Vim script is that by default all functions and variables
|
||||
are global. It is possible to make them script-local, but then they are not
|
||||
available in other scripts.
|
||||
|
||||
In Vim9 script a mechanism very similar to the Javascript import and export
|
||||
mechanism is supported. It is a variant to the existing `:source` command
|
||||
that works like one would expect:
|
||||
- Instead of making everything global by default, everything is script-local,
|
||||
unless exported.
|
||||
- When importing a script the symbols that are imported are listed, avoiding
|
||||
name conflicts and failures if later functionality is added.
|
||||
- The mechanism allows for writing a big, long script with a very clear API:
|
||||
the exported function(s) and class(es).
|
||||
- By using relative paths loading can be much faster for an import inside of a
|
||||
package, no need to search many directories.
|
||||
- Once an import has been used, it can be cached and loading it again can be
|
||||
avoided.
|
||||
- The Vim-specific use of "s:" to make things script-local can be dropped.
|
||||
|
||||
|
||||
Classes ~
|
||||
|
||||
Vim supports interfaces to Perl, Python, Lua, Tcl and a few others. But
|
||||
these have never become widespread. When Vim 9 was designed a decision was
|
||||
made to phase out these interfaces and concentrate on Vim script, while
|
||||
encouraging plugin authors to write code in any language and run it as an
|
||||
external tool, using jobs and channels.
|
||||
|
||||
Still, using an external tool has disadvantages. An alternative is to convert
|
||||
the tool into Vim script. For that to be possible without too much
|
||||
translation, and keeping the code fast at the same time, the constructs of the
|
||||
tool need to be supported. Since most languages support classes the lack of
|
||||
class support in Vim is then a problem.
|
||||
|
||||
Previously Vim supported a kind-of object oriented programming by adding
|
||||
methods to a dictionary. With some care this could be made to work, but it
|
||||
does not look like real classes. On top of that, it's very slow, because of
|
||||
the use of dictionaries.
|
||||
|
||||
The support of classes in Vim9 script is a "minimal common functionality" of
|
||||
class support in most languages. It works mostly like Java, which is the most
|
||||
popular programming language.
|
||||
|
||||
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
0
runtime/doc/vimdiff-it.1
Executable file → Normal file
0
runtime/doc/vimdiff-it.1
Executable file → Normal file
0
runtime/doc/vimtutor-it.1
Executable file → Normal file
0
runtime/doc/vimtutor-it.1
Executable file → Normal file
0
runtime/doc/xxd-it.1
Executable file → Normal file
0
runtime/doc/xxd-it.1
Executable file → Normal file
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2019 Nov 26
|
||||
" Last Change: 2020 Jan 22
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -384,7 +384,7 @@ au BufNewFile,BufRead configure.in,configure.ac setf config
|
||||
" CUDA Cumpute Unified Device Architecture
|
||||
au BufNewFile,BufRead *.cu,*.cuh setf cuda
|
||||
|
||||
" Dockerfilb; Podman uses the same syntax with name Containerfile
|
||||
" Dockerfile; Podman uses the same syntax with name Containerfile
|
||||
au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile setf dockerfile
|
||||
|
||||
" WildPackets EtherPeek Decoder
|
||||
@@ -491,7 +491,7 @@ au BufNewFile,BufRead *.rul
|
||||
au BufNewFile,BufRead *.com call dist#ft#BindzoneCheck('dcl')
|
||||
|
||||
" DOT
|
||||
au BufNewFile,BufRead *.dot setf dot
|
||||
au BufNewFile,BufRead *.dot,*.gv setf dot
|
||||
|
||||
" Dylan - lid files
|
||||
au BufNewFile,BufRead *.lid setf dylanlid
|
||||
@@ -833,6 +833,9 @@ au BufNewFile,BufRead *.k setf kwt
|
||||
" Kivy
|
||||
au BufNewFile,BufRead *.kv setf kivy
|
||||
|
||||
" Kotlin
|
||||
au BufNewFile,BufRead *.kt,*.ktm,*.kts setf kotlin
|
||||
|
||||
" KDE script
|
||||
au BufNewFile,BufRead *.ks setf kscript
|
||||
|
||||
@@ -1627,6 +1630,13 @@ au BufNewFile,BufRead *.sml setf sml
|
||||
" Sratus VOS command macro
|
||||
au BufNewFile,BufRead *.cm setf voscm
|
||||
|
||||
" Swift
|
||||
au BufNewFile,BufRead *.swift setf swift
|
||||
au BufNewFile,BufRead *.swift.gyb setf swiftgyb
|
||||
|
||||
" Swift Intermediate Language
|
||||
au BufNewFile,BufRead *.sil setf sil
|
||||
|
||||
" Sysctl
|
||||
au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl
|
||||
|
||||
|
||||
15
runtime/ftplugin/swift.vim
Normal file
15
runtime/ftplugin/swift.vim
Normal file
@@ -0,0 +1,15 @@
|
||||
" This source file is part of the Swift.org open source project
|
||||
"
|
||||
" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
" Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
"
|
||||
" See https://swift.org/LICENSE.txt for license information
|
||||
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
"
|
||||
" Vim maintainer: Emir SARI <bitigchi@me.com>
|
||||
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,:///,://
|
||||
setlocal expandtab
|
||||
setlocal ts=2
|
||||
setlocal sw=2
|
||||
setlocal smartindent
|
||||
11
runtime/ftplugin/swiftgyb.vim
Normal file
11
runtime/ftplugin/swiftgyb.vim
Normal file
@@ -0,0 +1,11 @@
|
||||
" This source file is part of the Swift.org open source project
|
||||
"
|
||||
" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
" Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
"
|
||||
" See https://swift.org/LICENSE.txt for license information
|
||||
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
"
|
||||
" Vim maintainer: Emir SARI <bitigchi@me.com>
|
||||
|
||||
runtime! ftplugin/swift.vim
|
||||
@@ -84,8 +84,10 @@ if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 0
|
||||
let b:match_words =
|
||||
\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
|
||||
\ '\<def\>:\<retu\%[rn]\>:\<enddef\>,' .
|
||||
\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
|
||||
\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
|
||||
\ '{:},' .
|
||||
\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
|
||||
\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,'
|
||||
" Ignore syntax region commands and settings, any 'en*' would clobber
|
||||
|
||||
0
runtime/indent/lifelines.vim
Executable file → Normal file
0
runtime/indent/lifelines.vim
Executable file → Normal file
@@ -10,7 +10,7 @@ endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetVimIndent()
|
||||
setlocal indentkeys+==end,=else,=cat,=fina,=END,0\\,0=\"\\\
|
||||
setlocal indentkeys+==end,=},=else,=cat,=fina,=END,0\\,0=\"\\\
|
||||
|
||||
let b:undo_indent = "setl indentkeys< indentexpr<"
|
||||
|
||||
@@ -92,7 +92,7 @@ function GetVimIndentIntern()
|
||||
else
|
||||
" A line starting with :au does not increment/decrement indent.
|
||||
if prev_text !~ '^\s*au\%[tocmd]'
|
||||
let i = match(prev_text, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>')
|
||||
let i = match(prev_text, '\(^\||\)\s*\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|def\|el\%[seif]\)\>\)')
|
||||
if i >= 0
|
||||
let ind += shiftwidth()
|
||||
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
|
||||
@@ -115,8 +115,8 @@ function GetVimIndentIntern()
|
||||
|
||||
|
||||
" Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry,
|
||||
" :endfun, :else and :augroup END.
|
||||
if cur_text =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
|
||||
" :endfun, :enddef, :else and :augroup END.
|
||||
if cur_text =~ '^\s*\(ene\@!\|}\|cat\|fina\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ set cpo&vim
|
||||
" Public Interface: {{{1
|
||||
com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
|
||||
com! -nargs=0 GetScripts call getscript#GetLatestVimScripts()
|
||||
silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts()
|
||||
sil! com -nargs=0 GLVS call getscript#GetLatestVimScripts()
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Restore Options: {{{1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" netrwPlugin.vim: Handles file transfer and remote directory listing across a network
|
||||
" PLUGIN SECTION
|
||||
" Date: Feb 08, 2016
|
||||
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
|
||||
" Date: Feb 08, 2016 - Jan 07, 2020
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
|
||||
" Copyright: Copyright (C) 1999-2013 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -20,7 +20,7 @@
|
||||
if &cp || exists("g:loaded_netrwPlugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_netrwPlugin = "v167"
|
||||
let g:loaded_netrwPlugin = "v168"
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
"DechoRemOn
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
if &cp || exists("g:loaded_tarPlugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_tarPlugin = "v29"
|
||||
let g:loaded_tarPlugin = "v32"
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
@@ -39,8 +39,8 @@ augroup tar
|
||||
au BufReadCmd *.lrp call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tar.bz2 call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tar.Z call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tgz call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tbz call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tgz call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tar.lzma call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tar.xz call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.txz call tar#Browse(expand("<amatch>"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" zipPlugin.vim: Handles browsing zipfiles
|
||||
" PLUGIN PORTION
|
||||
" Date: Sep 13, 2016
|
||||
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
|
||||
" Date: Jan 07, 2020
|
||||
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005-2016 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -20,14 +20,14 @@
|
||||
if &cp || exists("g:loaded_zipPlugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_zipPlugin = "v28"
|
||||
let g:loaded_zipPlugin = "v30"
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Options: {{{1
|
||||
if !exists("g:zipPlugin_ext")
|
||||
let g:zipPlugin_ext='*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
|
||||
let g:zipPlugin_ext='*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.odb,*.odc,*.odf,*.odg,*.odi,*.odm,*.odp,*.ods,*.odt,*.otc,*.otf,*.otg,*.oth,*.oti,*.otp,*.ots,*.ott,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
|
||||
endif
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim syntax support file
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2019 Nov 13
|
||||
" Last Change: 2020 Jan 05
|
||||
"
|
||||
" Additional contributors:
|
||||
"
|
||||
@@ -932,7 +932,7 @@ if s:settings.dynamic_folds
|
||||
\ "{",
|
||||
\ " var fold;",
|
||||
\ " fold = document.getElementById(objID);",
|
||||
\ " if(fold.className == 'closed-fold')",
|
||||
\ " if (fold.className == 'closed-fold')",
|
||||
\ " {",
|
||||
\ " fold.className = 'open-fold';",
|
||||
\ " }",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: AmigaDos
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 9
|
||||
" Version: 10
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_AMIGA
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: C-shell (csh)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 13
|
||||
" Version: 14
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: DCL (Digital Command Language - vms)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Mar 26, 2019
|
||||
" Version: 12
|
||||
" Version: 13
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Elm Filter rules
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 8
|
||||
" Version: 9
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_ELMFILT
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: exports
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 7
|
||||
" Version: 8
|
||||
" Notes: This file includes both SysV and BSD 'isms
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_EXPORTS
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Lex
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 16
|
||||
" Version: 17
|
||||
" URL: http://mysite.verizon.net/astronaut/vim/index.html#SYNTAX_LEX
|
||||
"
|
||||
" Option:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Lisp
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Jul 11, 2019
|
||||
" Version: 29
|
||||
" Version: 30
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
|
||||
"
|
||||
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: Makefile
|
||||
" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>
|
||||
" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
|
||||
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
||||
" URL: https://github.com/vim/vim/syntax/make.vim
|
||||
" Last Change: 2019 Dec 04
|
||||
" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
|
||||
" Last Change: 2020 Jan 15
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -42,6 +42,7 @@ syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement
|
||||
syn match makeIdent "\$\$\w*"
|
||||
syn match makeIdent "\$[^({]"
|
||||
syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
|
||||
syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3
|
||||
syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1
|
||||
syn match makeIdent "%"
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Maple V (based on release 4)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Mar 26, 2019
|
||||
" Version: 16
|
||||
" Version: 17
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_MAPLE
|
||||
"
|
||||
" Package Function Selection: {{{1
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Markdown
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Filenames: *.markdown
|
||||
" Last Change: 2019 Dec 05
|
||||
" Last Change: 2020 Jan 14
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -88,11 +88,11 @@ let s:concealends = ''
|
||||
if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1
|
||||
let s:concealends = ' concealends'
|
||||
endif
|
||||
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
|
||||
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
|
||||
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
|
||||
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" skip="\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
|
||||
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" skip="\\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
|
||||
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
|
||||
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
|
||||
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
|
||||
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
|
||||
|
||||
syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: rpcgen
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 12
|
||||
" Version: 13
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_RPCGEN
|
||||
|
||||
if exists("b:current_syntax")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: shell (sh) Korn shell (ksh) bash (sh)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
|
||||
" Last Change: Jun 16, 2019
|
||||
" Version: 188
|
||||
" Last Change: Oct 16, 2019
|
||||
" Version: 189
|
||||
" 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)
|
||||
@@ -124,13 +124,14 @@ syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsa
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster ErrorList add=shDTestError
|
||||
endif
|
||||
syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
|
||||
syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo
|
||||
syn cluster shArithList contains=@shArithParenList,shParenError
|
||||
syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
|
||||
syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shForPP,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
|
||||
syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
|
||||
syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
|
||||
syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ
|
||||
" COMBAK: removing shEscape fromshDblQuoteList fails ksh04:43
|
||||
syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ
|
||||
syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS
|
||||
syn cluster shDerefVarList contains=shDerefOff,shDerefOp,shDerefVarArray,shDerefOpError
|
||||
syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
|
||||
@@ -147,6 +148,7 @@ syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
|
||||
syn cluster shIdList contains=shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
|
||||
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
|
||||
syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch
|
||||
syn cluster shPPSLeftList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
|
||||
syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm
|
||||
syn cluster shSubShList contains=@shCommandSubList,shCommandSubBQ,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
|
||||
syn cluster shTestList contains=shArithmetic,shCharClass,shCommandSub,shCommandSubBQ,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shSpecialDQ,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
|
||||
@@ -156,8 +158,8 @@ syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shComman
|
||||
" Echo: {{{1
|
||||
" ====
|
||||
" This one is needed INSIDE a CommandSub, so that `echo bla` be correct
|
||||
syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
|
||||
syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
|
||||
syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
|
||||
syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
|
||||
syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]'
|
||||
|
||||
" This must be after the strings, so that ... \" will be correct
|
||||
@@ -196,7 +198,7 @@ endif
|
||||
" Options: {{{1
|
||||
" ====================
|
||||
syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+"
|
||||
syn match shOption "\s\zs--[^ \t$`'"|);]\+"
|
||||
syn match shOption "\s\zs--[^ \t$=`'"|);]\+"
|
||||
|
||||
" File Redirection Highlighted As Operators: {{{1
|
||||
"===========================================
|
||||
@@ -292,9 +294,12 @@ endif
|
||||
"======
|
||||
syn match shWrapLineOperator "\\$"
|
||||
syn region shCommandSubBQ start="`" skip="\\\\\|\\." end="`" contains=shBQComment,@shCommandSubList
|
||||
"see ksh13
|
||||
"COMBAK: see ksh13:50
|
||||
"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shSingleQuote,shDoubleQuote,shComment
|
||||
"COMBAK: see sh11:27
|
||||
syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment
|
||||
"COMBAK: see ksh13:53
|
||||
"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.'
|
||||
|
||||
" $() and $(()): {{{1
|
||||
" $(..) is not supported by sh (Bourne shell). However, apparently
|
||||
@@ -356,6 +361,7 @@ syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip
|
||||
syn region shDoubleQuote matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contained contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
|
||||
syn match shStringSpecial "[^[:print:] \t]" contained
|
||||
syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shComment
|
||||
syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
|
||||
syn match shSpecialSQ "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,@shNoZSList
|
||||
syn match shSpecialDQ "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshDblQuote,@shNoZSList
|
||||
syn match shSpecialStart "\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList
|
||||
@@ -527,7 +533,7 @@ if exists("b:is_bash")
|
||||
" bash : ${parameter//pattern/string}
|
||||
" bash : ${parameter//pattern}
|
||||
syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft
|
||||
syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList
|
||||
syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shPPSLeftList
|
||||
syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shPPSRightList
|
||||
|
||||
" bash : ${parameter/#substring/replacement}
|
||||
|
||||
178
runtime/syntax/sil.vim
Normal file
178
runtime/syntax/sil.vim
Normal file
@@ -0,0 +1,178 @@
|
||||
" This source file is part of the Swift.org open source project
|
||||
"
|
||||
" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
" Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
"
|
||||
" See https://swift.org/LICENSE.txt for license information
|
||||
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
"
|
||||
" Vim syntax file
|
||||
" Language: sil
|
||||
"
|
||||
" Vim maintainer: Emir SARI <bitigchi@me.com>
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn keyword silStage skipwhite nextgroup=silStages
|
||||
\ sil_stage
|
||||
syn keyword silStages
|
||||
\ canonical
|
||||
\ raw
|
||||
|
||||
syn match silIdentifier skipwhite
|
||||
\ /@\<[A-Za-z_0-9]\+\>/
|
||||
|
||||
syn match silConvention skipwhite
|
||||
\ /$\?@convention/
|
||||
syn region silConvention contained contains=silConventions
|
||||
\ start="@convention(" end=")"
|
||||
syn keyword silConventions
|
||||
\ block
|
||||
\ c
|
||||
\ method
|
||||
\ objc_method
|
||||
\ thick
|
||||
\ thin
|
||||
\ witness_method
|
||||
|
||||
syn match silFunctionType skipwhite
|
||||
\ /@\(\<autoreleased\>\|\<callee_guaranteed\>\|\<callee_owned\>\|\<error\>\|\<guaranteed\>\|\<in\>\|\<in_constant\>\|\<in_guaranteed\>\|\<inout\>\|\<inout_aliasable\>\|\<noescape\>\|\<out\>\|\<owned\>\)/
|
||||
syn match silMetatypeType skipwhite
|
||||
\ /@\(\<thick\>\|\<thin\>\|\<objc\>\)/
|
||||
|
||||
" TODO: handle [tail_elems sil-type * sil-operand]
|
||||
syn region silAttribute contains=silAttributes
|
||||
\ start="\[" end="\]"
|
||||
syn keyword silAttributes contained containedin=silAttribute
|
||||
\ abort
|
||||
\ deinit
|
||||
\ delegatingself
|
||||
\ derivedself
|
||||
\ derivedselfonly
|
||||
\ dynamic
|
||||
\ exact
|
||||
\ init
|
||||
\ modify
|
||||
\ mutating
|
||||
\ objc
|
||||
\ open
|
||||
\ read
|
||||
\ rootself
|
||||
\ stack
|
||||
\ static
|
||||
\ strict
|
||||
\ unknown
|
||||
\ unsafe
|
||||
\ var
|
||||
|
||||
syn keyword swiftImport import skipwhite nextgroup=swiftImportModule
|
||||
syn match swiftImportModule /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
|
||||
syn match swiftImportComponent /\.\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
|
||||
|
||||
syn region swiftComment start="/\*" end="\*/" contains=swiftComment,swiftTodo
|
||||
syn region swiftLineComment start="//" end="$" contains=swiftTodo
|
||||
|
||||
syn match swiftLineComment /^#!.*/
|
||||
syn match swiftTypeName /\<[A-Z][a-zA-Z_0-9]*\>/
|
||||
syn match swiftDecimal /\<[-]\?[0-9]\+\>/
|
||||
syn match swiftDecimal /\<[-+]\?[0-9]\+\>/
|
||||
|
||||
syn match swiftTypeName /\$\*\<\?[A-Z][a-zA-Z0-9_]*\>/
|
||||
syn match swiftVarName /%\<[A-z[a-z_0-9]\+\(#[0-9]\+\)\?\>/
|
||||
|
||||
syn keyword swiftKeyword break case continue default do else for if in static switch repeat return where while skipwhite
|
||||
|
||||
syn keyword swiftKeyword sil internal thunk skipwhite
|
||||
syn keyword swiftKeyword public hidden private shared public_external hidden_external skipwhite
|
||||
syn keyword swiftKeyword getter setter allocator initializer enumelt destroyer globalaccessor objc skipwhite
|
||||
syn keyword swiftKeyword alloc_global alloc_stack alloc_ref alloc_ref_dynamic alloc_box alloc_existential_box alloc_value_buffer dealloc_stack dealloc_box dealloc_existential_box dealloc_ref dealloc_partial_ref dealloc_value_buffer skipwhite
|
||||
syn keyword swiftKeyword debug_value debug_value_addr skipwhite
|
||||
syn keyword swiftKeyword load load_unowned store assign mark_uninitialized mark_function_escape copy_addr destroy_addr index_addr index_raw_pointer bind_memory to skipwhite
|
||||
syn keyword swiftKeyword strong_retain strong_release strong_retain_unowned ref_to_unowned unowned_to_ref unowned_retain unowned_release load_weak store_unowned store_weak fix_lifetime autorelease_value set_deallocating is_unique is_escaping_closure skipwhite
|
||||
syn keyword swiftKeyword function_ref integer_literal float_literal string_literal global_addr skipwhite
|
||||
syn keyword swiftKeyword class_method super_method witness_method objc_method objc_super_method skipwhite
|
||||
syn keyword swiftKeyword partial_apply builtin skipwhite
|
||||
syn keyword swiftApplyKeyword apply try_apply skipwhite
|
||||
syn keyword swiftKeyword metatype value_metatype existential_metatype skipwhite
|
||||
syn keyword swiftKeyword retain_value release_value retain_value_addr release_value_addr tuple tuple_extract tuple_element_addr struct struct_extract struct_element_addr ref_element_addr skipwhite
|
||||
syn keyword swiftKeyword init_enum_data_addr unchecked_enum_data unchecked_take_enum_data_addr inject_enum_addr skipwhite
|
||||
syn keyword swiftKeyword init_existential_addr init_existential_value init_existential_metatype deinit_existential_addr deinit_existential_value open_existential_addr open_existential_box open_existential_box_value open_existential_metatype init_existential_ref open_existential_ref open_existential_value skipwhite
|
||||
syn keyword swiftKeyword upcast address_to_pointer pointer_to_address pointer_to_thin_function unchecked_addr_cast unchecked_ref_cast unchecked_ref_cast_addr ref_to_raw_pointer ref_to_bridge_object ref_to_unmanaged unmanaged_to_ref raw_pointer_to_ref skipwhite
|
||||
syn keyword swiftKeyword convert_function thick_to_objc_metatype thin_function_to_pointer objc_to_thick_metatype thin_to_thick_function unchecked_ref_bit_cast unchecked_trivial_bit_cast bridge_object_to_ref bridge_object_to_word unchecked_bitwise_cast skipwhite
|
||||
syn keyword swiftKeyword objc_existential_metatype_to_object objc_metatype_to_object objc_protocol skipwhite
|
||||
syn keyword swiftKeyword unconditional_checked_cast unconditional_checked_cast_addr unconditional_checked_cast_value skipwhite
|
||||
syn keyword swiftKeyword cond_fail skipwhite
|
||||
syn keyword swiftKeyword unreachable return throw br cond_br switch_value select_enum select_enum_addr select_value switch_enum switch_enum_addr dynamic_method_br checked_cast_br checked_cast_value_br checked_cast_addr_br skipwhite
|
||||
syn keyword swiftKeyword project_box project_existential_box project_value_buffer project_block_storage init_block_storage_header copy_block mark_dependence skipwhite
|
||||
|
||||
syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName
|
||||
syn region swiftTypeAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftTypeName
|
||||
syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters
|
||||
|
||||
syn region swiftTypeParameters start="<" end=">" skipwhite contained
|
||||
|
||||
syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncAttributes,swiftFuncName,swiftOperator
|
||||
syn region swiftFuncAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftFuncName,swiftOperator
|
||||
syn match swiftFuncName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained nextgroup=swiftTypeParameters
|
||||
syn keyword swiftFuncKeyword subscript init destructor nextgroup=swiftTypeParameters
|
||||
|
||||
syn keyword swiftVarDefinition var skipwhite nextgroup=swiftVarName
|
||||
syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName
|
||||
syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained
|
||||
|
||||
syn keyword swiftDefinitionModifier static
|
||||
|
||||
syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/
|
||||
|
||||
hi def link swiftImport Include
|
||||
hi def link swiftImportModule Title
|
||||
hi def link swiftImportComponent Identifier
|
||||
hi def link swiftApplyKeyword Statement
|
||||
hi def link swiftKeyword Statement
|
||||
hi def link swiftTypeDefinition Define
|
||||
hi def link swiftTypeName Type
|
||||
hi def link swiftTypeParameters Special
|
||||
hi def link swiftTypeAttributes PreProc
|
||||
hi def link swiftFuncDefinition Define
|
||||
hi def link swiftDefinitionModifier Define
|
||||
hi def link swiftFuncName Function
|
||||
hi def link swiftFuncAttributes PreProc
|
||||
hi def link swiftFuncKeyword Function
|
||||
hi def link swiftVarDefinition Define
|
||||
hi def link swiftVarName Identifier
|
||||
hi def link swiftImplicitVarName Identifier
|
||||
hi def link swiftIdentifierKeyword Identifier
|
||||
hi def link swiftTypeDeclaration Delimiter
|
||||
hi def link swiftBoolean Boolean
|
||||
hi def link swiftString String
|
||||
hi def link swiftInterpolation Special
|
||||
hi def link swiftComment Comment
|
||||
hi def link swiftLineComment Comment
|
||||
hi def link swiftDecimal Number
|
||||
hi def link swiftHex Number
|
||||
hi def link swiftOct Number
|
||||
hi def link swiftBin Number
|
||||
hi def link swiftOperator Function
|
||||
hi def link swiftChar Character
|
||||
hi def link swiftLabel Label
|
||||
hi def link swiftNew Operator
|
||||
|
||||
hi def link silStage Special
|
||||
hi def link silStages Type
|
||||
hi def link silConvention Special
|
||||
hi def link silConventionParameter Special
|
||||
hi def link silConventions Type
|
||||
hi def link silIdentifier Identifier
|
||||
hi def link silFunctionType Special
|
||||
hi def link silMetatypeType Special
|
||||
hi def link silAttribute PreProc
|
||||
|
||||
let b:current_syntax = "sil"
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: sendmail
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Oct 25, 2016
|
||||
" Version: 8
|
||||
" Version: 9
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
|
||||
277
runtime/syntax/swift.vim
Normal file
277
runtime/syntax/swift.vim
Normal file
@@ -0,0 +1,277 @@
|
||||
" This source file is part of the Swift.org open source project
|
||||
"
|
||||
" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
" Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
"
|
||||
" See https://swift.org/LICENSE.txt for license information
|
||||
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
"
|
||||
" Vim syntax file
|
||||
" Language: swift
|
||||
" Maintainer: Joe Groff <jgroff@apple.com>
|
||||
" Last Change: 2018 Jan 21
|
||||
"
|
||||
" Vim maintainer: Emir SARI <bitigchi@me.com>
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn keyword swiftKeyword
|
||||
\ associatedtype
|
||||
\ break
|
||||
\ catch
|
||||
\ continue
|
||||
\ defer
|
||||
\ do
|
||||
\ else
|
||||
\ fallthrough
|
||||
\ for
|
||||
\ guard
|
||||
\ if
|
||||
\ in
|
||||
\ repeat
|
||||
\ return
|
||||
\ switch
|
||||
\ throw
|
||||
\ try
|
||||
\ where
|
||||
\ while
|
||||
syn match swiftMultiwordKeyword
|
||||
\ "indirect case"
|
||||
|
||||
syn keyword swiftImport skipwhite skipempty nextgroup=swiftImportModule
|
||||
\ import
|
||||
|
||||
syn keyword swiftDefinitionModifier
|
||||
\ convenience
|
||||
\ dynamic
|
||||
\ fileprivate
|
||||
\ final
|
||||
\ internal
|
||||
\ lazy
|
||||
\ nonmutating
|
||||
\ open
|
||||
\ override
|
||||
\ prefix
|
||||
\ private
|
||||
\ public
|
||||
\ required
|
||||
\ rethrows
|
||||
\ static
|
||||
\ throws
|
||||
\ weak
|
||||
|
||||
syn keyword swiftInOutKeyword skipwhite skipempty nextgroup=swiftTypeName
|
||||
\ inout
|
||||
|
||||
syn keyword swiftIdentifierKeyword
|
||||
\ Self
|
||||
\ metatype
|
||||
\ self
|
||||
\ super
|
||||
|
||||
syn keyword swiftFuncKeywordGeneral skipwhite skipempty nextgroup=swiftTypeParameters
|
||||
\ init
|
||||
|
||||
syn keyword swiftFuncKeyword
|
||||
\ deinit
|
||||
\ subscript
|
||||
|
||||
syn keyword swiftScope
|
||||
\ autoreleasepool
|
||||
|
||||
syn keyword swiftMutating skipwhite skipempty nextgroup=swiftFuncDefinition
|
||||
\ mutating
|
||||
syn keyword swiftFuncDefinition skipwhite skipempty nextgroup=swiftTypeName,swiftOperator
|
||||
\ func
|
||||
|
||||
syn keyword swiftTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
|
||||
\ class
|
||||
\ enum
|
||||
\ extension
|
||||
\ protocol
|
||||
\ struct
|
||||
|
||||
syn keyword swiftTypeAliasDefinition skipwhite skipempty nextgroup=swiftTypeAliasName
|
||||
\ typealias
|
||||
|
||||
syn match swiftMultiwordTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
|
||||
\ "indirect enum"
|
||||
|
||||
syn keyword swiftVarDefinition skipwhite skipempty nextgroup=swiftVarName
|
||||
\ let
|
||||
\ var
|
||||
|
||||
syn keyword swiftLabel
|
||||
\ get
|
||||
\ set
|
||||
\ didSet
|
||||
\ willSet
|
||||
|
||||
syn keyword swiftBoolean
|
||||
\ false
|
||||
\ true
|
||||
|
||||
syn keyword swiftNil
|
||||
\ nil
|
||||
|
||||
syn match swiftImportModule contained nextgroup=swiftImportComponent
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
||||
syn match swiftImportComponent contained nextgroup=swiftImportComponent
|
||||
\ /\.\<[A-Za-z_][A-Za-z_0-9]*\>/
|
||||
|
||||
syn match swiftTypeAliasName contained skipwhite skipempty nextgroup=swiftTypeAliasValue
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
||||
syn match swiftTypeName contained skipwhite skipempty nextgroup=swiftTypeParameters
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>/
|
||||
syn match swiftVarName contained skipwhite skipempty nextgroup=swiftTypeDeclaration
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9]*\>/
|
||||
syn match swiftImplicitVarName
|
||||
\ /\$\<[A-Za-z_0-9]\+\>/
|
||||
|
||||
" TypeName[Optionality]?
|
||||
syn match swiftType contained skipwhite skipempty nextgroup=swiftTypeParameters
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
|
||||
" [Type:Type] (dictionary) or [Type] (array)
|
||||
syn region swiftType contained contains=swiftTypePair,swiftType
|
||||
\ matchgroup=Delimiter start=/\[/ end=/\]/
|
||||
syn match swiftTypePair contained skipwhite skipempty nextgroup=swiftTypeParameters,swiftTypeDeclaration
|
||||
\ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
|
||||
" (Type[, Type]) (tuple)
|
||||
" FIXME: we should be able to use skip="," and drop swiftParamDelim
|
||||
syn region swiftType contained contains=swiftType,swiftParamDelim
|
||||
\ matchgroup=Delimiter start="[^@]\?(" end=")" matchgroup=NONE skip=","
|
||||
syn match swiftParamDelim contained
|
||||
\ /,/
|
||||
" <Generic Clause> (generics)
|
||||
syn region swiftTypeParameters contained contains=swiftVarName,swiftConstraint
|
||||
\ matchgroup=Delimiter start="<" end=">" matchgroup=NONE skip=","
|
||||
syn keyword swiftConstraint contained
|
||||
\ where
|
||||
|
||||
syn match swiftTypeAliasValue skipwhite skipempty nextgroup=swiftType
|
||||
\ /=/
|
||||
syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType,swiftInOutKeyword
|
||||
\ /:/
|
||||
syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType
|
||||
\ /->/
|
||||
|
||||
syn match swiftKeyword
|
||||
\ /\<case\>/
|
||||
syn region swiftCaseLabelRegion
|
||||
\ matchgroup=swiftKeyword start=/\<case\>/ matchgroup=Delimiter end=/:/ oneline contains=TOP
|
||||
syn region swiftDefaultLabelRegion
|
||||
\ matchgroup=swiftKeyword start=/\<default\>/ matchgroup=Delimiter end=/:/ oneline
|
||||
|
||||
syn region swiftParenthesisRegion contains=TOP
|
||||
\ matchgroup=NONE start=/(/ end=/)/
|
||||
|
||||
syn region swiftString contains=swiftInterpolationRegion
|
||||
\ start=/"/ skip=/\\\\\|\\"/ end=/"/
|
||||
syn region swiftInterpolationRegion contained contains=TOP
|
||||
\ matchgroup=swiftInterpolation start=/\\(/ end=/)/
|
||||
syn region swiftComment contains=swiftComment,swiftLineComment,swiftTodo
|
||||
\ start="/\*" end="\*/"
|
||||
syn region swiftLineComment contains=swiftComment,swiftTodo
|
||||
\ start="//" end="$"
|
||||
|
||||
syn match swiftDecimal
|
||||
\ /[+\-]\?\<\([0-9][0-9_]*\)\([.][0-9_]*\)\?\([eE][+\-]\?[0-9][0-9_]*\)\?\>/
|
||||
syn match swiftHex
|
||||
\ /[+\-]\?\<0x[0-9A-Fa-f][0-9A-Fa-f_]*\(\([.][0-9A-Fa-f_]*\)\?[pP][+\-]\?[0-9][0-9_]*\)\?\>/
|
||||
syn match swiftOct
|
||||
\ /[+\-]\?\<0o[0-7][0-7_]*\>/
|
||||
syn match swiftBin
|
||||
\ /[+\-]\?\<0b[01][01_]*\>/
|
||||
|
||||
syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
|
||||
\ "\.\@<!\.\.\.\@!\|[/=\-+*%<>!&|^~]\@<!\(/[/*]\@![/=\-+*%<>!&|^~]*\|*/\@![/=\-+*%<>!&|^~]*\|->\@![/=\-+*%<>!&|^~]*\|[=+%<>!&|^~][/=\-+*%<>!&|^~]*\)"
|
||||
syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
|
||||
\ "\.\.[<.]"
|
||||
|
||||
syn match swiftChar
|
||||
\ /'\([^'\\]\|\\\(["'tnr0\\]\|x[0-9a-fA-F]\{2}\|u[0-9a-fA-F]\{4}\|U[0-9a-fA-F]\{8}\)\)'/
|
||||
|
||||
syn match swiftTupleIndexNumber contains=swiftDecimal
|
||||
\ /\.[0-9]\+/
|
||||
syn match swiftDecimal contained
|
||||
\ /[0-9]\+/
|
||||
|
||||
syn match swiftPreproc
|
||||
\ /#\(\<file\>\|\<line\>\|\<function\>\)/
|
||||
syn match swiftPreproc
|
||||
\ /^\s*#\(\<if\>\|\<else\>\|\<elseif\>\|\<endif\>\|\<error\>\|\<warning\>\)/
|
||||
syn region swiftPreprocFalse
|
||||
\ start="^\s*#\<if\>\s\+\<false\>" end="^\s*#\(\<else\>\|\<elseif\>\|\<endif\>\)"
|
||||
|
||||
syn match swiftAttribute
|
||||
\ /@\<\w\+\>/ skipwhite skipempty nextgroup=swiftType,swiftTypeDefinition
|
||||
|
||||
syn keyword swiftTodo MARK TODO FIXME contained
|
||||
|
||||
syn match swiftCastOp skipwhite skipempty nextgroup=swiftType
|
||||
\ "\<is\>"
|
||||
syn match swiftCastOp skipwhite skipempty nextgroup=swiftType
|
||||
\ "\<as\>[!?]\?"
|
||||
|
||||
syn match swiftNilOps
|
||||
\ "??"
|
||||
|
||||
syn region swiftReservedIdentifier oneline
|
||||
\ start=/`/ end=/`/
|
||||
|
||||
hi def link swiftImport Include
|
||||
hi def link swiftImportModule Title
|
||||
hi def link swiftImportComponent Identifier
|
||||
hi def link swiftKeyword Statement
|
||||
hi def link swiftMultiwordKeyword Statement
|
||||
hi def link swiftTypeDefinition Define
|
||||
hi def link swiftMultiwordTypeDefinition Define
|
||||
hi def link swiftType Type
|
||||
hi def link swiftTypePair Type
|
||||
hi def link swiftTypeAliasName Identifier
|
||||
hi def link swiftTypeName Function
|
||||
hi def link swiftConstraint Special
|
||||
hi def link swiftFuncDefinition Define
|
||||
hi def link swiftDefinitionModifier Operator
|
||||
hi def link swiftInOutKeyword Define
|
||||
hi def link swiftFuncKeyword Function
|
||||
hi def link swiftFuncKeywordGeneral Function
|
||||
hi def link swiftTypeAliasDefinition Define
|
||||
hi def link swiftVarDefinition Define
|
||||
hi def link swiftVarName Identifier
|
||||
hi def link swiftImplicitVarName Identifier
|
||||
hi def link swiftIdentifierKeyword Identifier
|
||||
hi def link swiftTypeAliasValue Delimiter
|
||||
hi def link swiftTypeDeclaration Delimiter
|
||||
hi def link swiftTypeParameters Delimiter
|
||||
hi def link swiftBoolean Boolean
|
||||
hi def link swiftString String
|
||||
hi def link swiftInterpolation Special
|
||||
hi def link swiftComment Comment
|
||||
hi def link swiftLineComment Comment
|
||||
hi def link swiftDecimal Number
|
||||
hi def link swiftHex Number
|
||||
hi def link swiftOct Number
|
||||
hi def link swiftBin Number
|
||||
hi def link swiftOperator Function
|
||||
hi def link swiftChar Character
|
||||
hi def link swiftLabel Operator
|
||||
hi def link swiftMutating Statement
|
||||
hi def link swiftPreproc PreCondit
|
||||
hi def link swiftPreprocFalse Comment
|
||||
hi def link swiftAttribute Type
|
||||
hi def link swiftTodo Todo
|
||||
hi def link swiftNil Constant
|
||||
hi def link swiftCastOp Operator
|
||||
hi def link swiftNilOps Operator
|
||||
hi def link swiftScope PreProc
|
||||
|
||||
let b:current_syntax = "swift"
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
24
runtime/syntax/swiftgyb.vim
Normal file
24
runtime/syntax/swiftgyb.vim
Normal file
@@ -0,0 +1,24 @@
|
||||
" This source file is part of the Swift.org open source project
|
||||
"
|
||||
" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
" Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
"
|
||||
" See https://swift.org/LICENSE.txt for license information
|
||||
" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
"
|
||||
" Vim syntax file
|
||||
" Language: gyb on swift
|
||||
"
|
||||
" Vim maintainer: Emir SARI <bitigchi@me.com>
|
||||
|
||||
runtime! syntax/swift.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
syn include @Python syntax/python.vim
|
||||
syn region pythonCode matchgroup=gybPythonCode start=+^ *%+ end=+$+ contains=@Python keepend
|
||||
syn region pythonCode matchgroup=gybPythonCode start=+%{+ end=+}%+ contains=@Python keepend
|
||||
syn match gybPythonCode /\${[^}]*}/
|
||||
hi def link gybPythonCode CursorLineNr
|
||||
|
||||
let b:current_syntax = "swiftgyb"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Language: tags
|
||||
" Maintainer: Charles E. Campbell <NdrOchip@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Oct 26, 2016
|
||||
" Version: 7
|
||||
" Version: 8
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TAGS
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: TeX
|
||||
" Maintainer: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
|
||||
" Last Change: May 14, 2019
|
||||
" Version: 114
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Jan 24, 2020
|
||||
" Version: 116
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
|
||||
"
|
||||
" Notes: {{{1
|
||||
@@ -147,6 +147,11 @@ if exists("g:tex_nospell") && g:tex_nospell
|
||||
else
|
||||
let s:tex_nospell = 0
|
||||
endif
|
||||
if exists("g:tex_excludematcher")
|
||||
let s:tex_excludematcher= g:tex_excludematcher
|
||||
else
|
||||
let s:tex_excludematcher= 0
|
||||
endif
|
||||
|
||||
" Clusters: {{{1
|
||||
" --------
|
||||
@@ -156,8 +161,12 @@ if !s:tex_no_error
|
||||
endif
|
||||
syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
|
||||
syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texEmphStyle,texNoSpell
|
||||
syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
|
||||
syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texEmphStyle,texItalBoldStyle,texNoSpell
|
||||
syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
|
||||
syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texEmphStyle,texItalBoldStyle,texNoSpell
|
||||
if !s:tex_excludematcher
|
||||
syn cluster texBoldGroup add=texMatcher
|
||||
syn cluster texItalGroup add=texMatcher
|
||||
endif
|
||||
if !s:tex_nospell
|
||||
syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
|
||||
syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
|
||||
@@ -305,11 +314,6 @@ if s:tex_conceal !~# 'b'
|
||||
endif
|
||||
syn match texTypeStyle "\\textmd\>"
|
||||
syn match texTypeStyle "\\textrm\>"
|
||||
syn match texTypeStyle "\\textsc\>"
|
||||
syn match texTypeStyle "\\textsf\>"
|
||||
syn match texTypeStyle "\\textsl\>"
|
||||
syn match texTypeStyle "\\texttt\>"
|
||||
syn match texTypeStyle "\\textup\>"
|
||||
|
||||
syn match texTypeStyle "\\mathbb\>"
|
||||
syn match texTypeStyle "\\mathbf\>"
|
||||
@@ -386,12 +390,18 @@ if s:tex_fast =~# 'b'
|
||||
syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
|
||||
syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
|
||||
else
|
||||
syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
|
||||
syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
|
||||
syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
|
||||
syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
|
||||
syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@@ -624,7 +634,7 @@ if s:tex_fast =~# 'r'
|
||||
syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
|
||||
syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
|
||||
endif
|
||||
syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
|
||||
syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
|
||||
|
||||
" Handle newcommand, newenvironment : {{{1
|
||||
syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Vim 8.0 script
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: November 29, 2019
|
||||
" Version: 8.0-28
|
||||
" Version: 8.0-29
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
|
||||
" Automatically generated keyword lists: {{{1
|
||||
|
||||
@@ -26,6 +26,7 @@ syn keyword vimCommand contained abo[veleft] argdo au bel[owright] bp[revious] b
|
||||
syn keyword vimCommand contained addd arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cn[ext] colo[rscheme] cons[t] cs d[elete] deletel delm[arks] diffo[ff] dir doaut ea el[se] endt[ry] exu[sage] fin[d] foldc[lose] g h[elp] hi if intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcd ter[minal] tlm tlunmenu tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xmapc[lear] xprop y[ank]
|
||||
syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] com cope[n] cscope debug deletep delp diffp[atch] dj[ump] dp earlier elsei[f] endw[hile] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong]
|
||||
syn match vimCommand contained "\<z[-+^.=]\=\>"
|
||||
syn keyword vimCommand contained def endd[ef] disa[ssemble] vim9[script] imp[ort] exp[ort]
|
||||
syn keyword vimStdPlugin contained Arguments Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns
|
||||
|
||||
" vimOptions are caught only when contained in a vimSet {{{2
|
||||
@@ -237,16 +238,17 @@ endif
|
||||
" =========
|
||||
syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
|
||||
syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
|
||||
syn match vimFunction "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
|
||||
syn match vimFunction "\<\(fu\%[nction]\|def\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
|
||||
|
||||
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
|
||||
syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
|
||||
syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
|
||||
else
|
||||
syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
|
||||
syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
|
||||
endif
|
||||
syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)"
|
||||
syn match vimFuncSID contained "\c<sid>\|\<s:"
|
||||
syn keyword vimFuncKey contained fu[nction]
|
||||
syn keyword vimFuncKey contained def
|
||||
syn match vimFuncBlank contained "\s\+"
|
||||
|
||||
syn keyword vimPattern contained start skip end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: xmath (a simulation tool)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 9
|
||||
" Version: 10
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XMATH
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
" Vim syntax file
|
||||
" Language: XSLT
|
||||
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||
" Last Change: Sun, 28 Oct 2001 21:22:24 +0100
|
||||
" Maintainer: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
|
||||
" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||
" Last Change: Fri, 17 Jan 2020 07:15:37 +0200
|
||||
" Filenames: *.xsl
|
||||
" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $
|
||||
|
||||
" REFERENCES:
|
||||
" [1] http://www.w3.org/TR/xslt
|
||||
"
|
||||
" [2] http://www.w3.org/TR/xslt20
|
||||
|
||||
" Quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -19,11 +20,13 @@ runtime syntax/xml.vim
|
||||
syn cluster xmlTagHook add=xslElement
|
||||
syn case match
|
||||
|
||||
syn match xslElement '\%(xsl:\)\@<=analyze-string'
|
||||
syn match xslElement '\%(xsl:\)\@<=apply-imports'
|
||||
syn match xslElement '\%(xsl:\)\@<=apply-templates'
|
||||
syn match xslElement '\%(xsl:\)\@<=attribute'
|
||||
syn match xslElement '\%(xsl:\)\@<=attribute-set'
|
||||
syn match xslElement '\%(xsl:\)\@<=call-template'
|
||||
syn match xslElement '\%(xsl:\)\@<=character-map'
|
||||
syn match xslElement '\%(xsl:\)\@<=choose'
|
||||
syn match xslElement '\%(xsl:\)\@<=comment'
|
||||
syn match xslElement '\%(xsl:\)\@<=copy'
|
||||
@@ -33,19 +36,25 @@ syn match xslElement '\%(xsl:\)\@<=document'
|
||||
syn match xslElement '\%(xsl:\)\@<=element'
|
||||
syn match xslElement '\%(xsl:\)\@<=fallback'
|
||||
syn match xslElement '\%(xsl:\)\@<=for-each'
|
||||
syn match xslElement '\%(xsl:\)\@<=for-each-group'
|
||||
syn match xslElement '\%(xsl:\)\@<=function'
|
||||
syn match xslElement '\%(xsl:\)\@<=if'
|
||||
syn match xslElement '\%(xsl:\)\@<=include'
|
||||
syn match xslElement '\%(xsl:\)\@<=import'
|
||||
syn match xslElement '\%(xsl:\)\@<=import-schema'
|
||||
syn match xslElement '\%(xsl:\)\@<=key'
|
||||
syn match xslElement '\%(xsl:\)\@<=message'
|
||||
syn match xslElement '\%(xsl:\)\@<=namespace'
|
||||
syn match xslElement '\%(xsl:\)\@<=namespace-alias'
|
||||
syn match xslElement '\%(xsl:\)\@<=number'
|
||||
syn match xslElement '\%(xsl:\)\@<=otherwise'
|
||||
syn match xslElement '\%(xsl:\)\@<=output'
|
||||
syn match xslElement '\%(xsl:\)\@<=param'
|
||||
syn match xslElement '\%(xsl:\)\@<=perform-sort'
|
||||
syn match xslElement '\%(xsl:\)\@<=processing-instruction'
|
||||
syn match xslElement '\%(xsl:\)\@<=preserve-space'
|
||||
syn match xslElement '\%(xsl:\)\@<=script'
|
||||
syn match xslElement '\%(xsl:\)\@<=sequence'
|
||||
syn match xslElement '\%(xsl:\)\@<=sort'
|
||||
syn match xslElement '\%(xsl:\)\@<=strip-space'
|
||||
syn match xslElement '\%(xsl:\)\@<=stylesheet'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: bin using xxd
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 10
|
||||
" Version: 11
|
||||
" Notes: use :help xxd to see how to invoke it
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XXD
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user