Compare commits
254 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd45ed03bf | ||
|
|
07761a3b96 | ||
|
|
5b3d1bb0f5 | ||
|
|
c882e4d169 | ||
|
|
1cfb9bb5c0 | ||
|
|
9a963377b4 | ||
|
|
60f63100b9 | ||
|
|
f4e2099e39 | ||
|
|
a3d10a508c | ||
|
|
6f17a3f023 | ||
|
|
4f5e397756 | ||
|
|
2e2f52a4a0 | ||
|
|
ef2dff52de | ||
|
|
6a78f32844 | ||
|
|
9aff970204 | ||
|
|
8c9d98a8af | ||
|
|
52c124d330 | ||
|
|
5082471f91 | ||
|
|
61e07b2394 | ||
|
|
f112f30a82 | ||
|
|
090728ad4d | ||
|
|
d24602f43c | ||
|
|
d88dc4d4e9 | ||
|
|
d0a1dee3f1 | ||
|
|
8f22f5c3aa | ||
|
|
17f700ac8b | ||
|
|
13656f02e4 | ||
|
|
03290b8444 | ||
|
|
1f33e0a7c4 | ||
|
|
8e7d6223f6 | ||
|
|
3beaf9cd8e | ||
|
|
6e562fcc07 | ||
|
|
9aed729fe9 | ||
|
|
b5b77378bc | ||
|
|
18f69229c5 | ||
|
|
0353f56ddb | ||
|
|
b125b535bb | ||
|
|
8dd46e72cf | ||
|
|
a79a8944da | ||
|
|
8ea05de6aa | ||
|
|
4c5bdb99ad | ||
|
|
1c0aa97827 | ||
|
|
530bed993e | ||
|
|
9987fb0b4b | ||
|
|
399ea8108c | ||
|
|
025cb1ca86 | ||
|
|
ec792290eb | ||
|
|
fffdf4754f | ||
|
|
8143a53c53 | ||
|
|
2a3cd3af45 | ||
|
|
acbae18df5 | ||
|
|
b5b9480ee9 | ||
|
|
e498429087 | ||
|
|
c530852315 | ||
|
|
93f82cbee5 | ||
|
|
57f799e6a4 | ||
|
|
2a9d5d386b | ||
|
|
3ae50c775c | ||
|
|
709664cca0 | ||
|
|
cc2335896b | ||
|
|
0ea7421ae6 | ||
|
|
100118c73a | ||
|
|
1b884a0053 | ||
|
|
70249ee831 | ||
|
|
0e12140550 | ||
|
|
8f1bf2ef78 | ||
|
|
08597875b2 | ||
|
|
d356fc65d2 | ||
|
|
9ec7026f24 | ||
|
|
a7a691cc14 | ||
|
|
730677a0da | ||
|
|
7988a6f0e9 | ||
|
|
f46bf5204c | ||
|
|
7bb4e74c38 | ||
|
|
2c78a772fd | ||
|
|
7257af477b | ||
|
|
61265b4000 | ||
|
|
1b3e0727ce | ||
|
|
ac665c24c9 | ||
|
|
023fd5d213 | ||
|
|
8e1cbb55c3 | ||
|
|
8a3da6a368 | ||
|
|
083966f671 | ||
|
|
8ff16e0183 | ||
|
|
b237ae7b83 | ||
|
|
7b130b9738 | ||
|
|
d5a986f460 | ||
|
|
41d6196e30 | ||
|
|
5402175815 | ||
|
|
8bb0f5472c | ||
|
|
67322bf74a | ||
|
|
918a424917 | ||
|
|
08cf0c0d82 | ||
|
|
56602ba153 | ||
|
|
f665e97ffa | ||
|
|
4029cabbe7 | ||
|
|
d0fe620cbb | ||
|
|
c0913d023b | ||
|
|
2d870f8d9e | ||
|
|
29d2f45c88 | ||
|
|
c5e6a7179d | ||
|
|
6cd42db9dc | ||
|
|
f6c177ab3a | ||
|
|
21e51221f2 | ||
|
|
476268c387 | ||
|
|
c0d670ce16 | ||
|
|
0684e36a7e | ||
|
|
af0df47a76 | ||
|
|
e0de171ecd | ||
|
|
7f76494aac | ||
|
|
ea87069d78 | ||
|
|
38bd8de551 | ||
|
|
1cbfc9914d | ||
|
|
a452b808b4 | ||
|
|
c478ee3d83 | ||
|
|
57cf4973a2 | ||
|
|
4324d87a44 | ||
|
|
4b8a065145 | ||
|
|
004d9b00ba | ||
|
|
da7c20c953 | ||
|
|
f0068c5154 | ||
|
|
23515b4ef7 | ||
|
|
287153c5d4 | ||
|
|
b46f57e87b | ||
|
|
f5452691ba | ||
|
|
ce2c5444e2 | ||
|
|
f8ca03bf91 | ||
|
|
ebec3e29b8 | ||
|
|
dc234caff2 | ||
|
|
4a44120e3d | ||
|
|
4d05af0a64 | ||
|
|
aeb313f355 | ||
|
|
6ee874d378 | ||
|
|
3482be6a33 | ||
|
|
fccbf068f8 | ||
|
|
ce7be3a0e6 | ||
|
|
2472a74be4 | ||
|
|
d49a35a1c3 | ||
|
|
c2ca935d26 | ||
|
|
47a2abf0bc | ||
|
|
34c54eb6cb | ||
|
|
6bed0dbc85 | ||
|
|
d653293c80 | ||
|
|
3a3b691042 | ||
|
|
36fe7b287e | ||
|
|
5dc4e2f883 | ||
|
|
448465e687 | ||
|
|
5ee0981fb5 | ||
|
|
ff94bd9e47 | ||
|
|
813196784a | ||
|
|
a09bee322e | ||
|
|
c9f8b849b6 | ||
|
|
8e6be34338 | ||
|
|
142f23544c | ||
|
|
60bc8e7244 | ||
|
|
9e40c4b15e | ||
|
|
f637bceb61 | ||
|
|
792f786aad | ||
|
|
6abdcf8285 | ||
|
|
dcbab75db3 | ||
|
|
18dc355395 | ||
|
|
4b2ce1297e | ||
|
|
5546688fb6 | ||
|
|
896ad2c33e | ||
|
|
9681f71392 | ||
|
|
e79cdb69a4 | ||
|
|
4466ad6baa | ||
|
|
2d718267f4 | ||
|
|
d91467f830 | ||
|
|
c71ee829ef | ||
|
|
95388e3179 | ||
|
|
eeece9e488 | ||
|
|
bebaa0d5c0 | ||
|
|
80d868ec25 | ||
|
|
2ea95b61f4 | ||
|
|
67d1c68f09 | ||
|
|
c6ca9f3a29 | ||
|
|
2bede173a1 | ||
|
|
ee8b787bcd | ||
|
|
79cdf80bed | ||
|
|
d92cc130fb | ||
|
|
9950280d37 | ||
|
|
8e02faf4e9 | ||
|
|
382319211a | ||
|
|
032f40afb8 | ||
|
|
17ab28daa0 | ||
|
|
88774a30c0 | ||
|
|
c77534c303 | ||
|
|
b3a01946b3 | ||
|
|
1efefda623 | ||
|
|
52bf81c2d5 | ||
|
|
0ba48e8c27 | ||
|
|
fc74d03e76 | ||
|
|
e6329e4c55 | ||
|
|
27f4f6baee | ||
|
|
8adc8d9b73 | ||
|
|
193f6201b4 | ||
|
|
714cbe5b21 | ||
|
|
c4390fe6c0 | ||
|
|
50dc3ecc64 | ||
|
|
4792a679f9 | ||
|
|
ca359cbedd | ||
|
|
6a07644db3 | ||
|
|
2dfae04f37 | ||
|
|
e41decc892 | ||
|
|
6453cc8078 | ||
|
|
a065a14115 | ||
|
|
02764713a7 | ||
|
|
33aecb1f2c | ||
|
|
f4d61bc559 | ||
|
|
2ce7790348 | ||
|
|
8496c9eadb | ||
|
|
659bb2275e | ||
|
|
47c5ea44b9 | ||
|
|
957cf67d50 | ||
|
|
ea2d407f9c | ||
|
|
6f6244855f | ||
|
|
bbf9f344af | ||
|
|
29b281ba8d | ||
|
|
232f4612e2 | ||
|
|
5e1f22ff61 | ||
|
|
c56936e2ba | ||
|
|
f883508e36 | ||
|
|
ea696852e7 | ||
|
|
8cebd43e97 | ||
|
|
59d8e56e04 | ||
|
|
cbcd9cbd77 | ||
|
|
46f479c756 | ||
|
|
faebda8cc1 | ||
|
|
927495b1fe | ||
|
|
32e5ec0b01 | ||
|
|
85d9b03f84 | ||
|
|
22286895fc | ||
|
|
0fd797eacd | ||
|
|
3132cddd20 | ||
|
|
00806bceb6 | ||
|
|
b885b435d1 | ||
|
|
fabc3ca896 | ||
|
|
b4d16cb11d | ||
|
|
66669fc664 | ||
|
|
f65b35b446 | ||
|
|
631e8f9345 | ||
|
|
c7f7f6db3e | ||
|
|
64ffa9b5fb | ||
|
|
9c13f76275 | ||
|
|
348be7ed07 | ||
|
|
4778b4d0e1 | ||
|
|
c136a3528b | ||
|
|
35efa22ff2 | ||
|
|
0d90e728fe | ||
|
|
6fd3a4ba23 | ||
|
|
36113e46b4 | ||
|
|
dbfa795d8b | ||
|
|
399db046ed |
@@ -3,6 +3,8 @@ env:
|
||||
FEATURES: huge
|
||||
|
||||
freebsd_12_task:
|
||||
only_if: $CIRRUS_TAG == ''
|
||||
timeout_in: 20m
|
||||
freebsd_instance:
|
||||
image: freebsd-12-1-release-amd64
|
||||
install_script:
|
||||
|
||||
1
.coveralls.yml
Normal file
1
.coveralls.yml
Normal file
@@ -0,0 +1 @@
|
||||
service_name: github-actions
|
||||
28
.github/CODEOWNERS
vendored
28
.github/CODEOWNERS
vendored
@@ -20,6 +20,7 @@ runtime/autoload/rubycomplete.vim @segfault @dkearns
|
||||
runtime/autoload/tar.vim @cecamp
|
||||
runtime/autoload/vimball.vim @cecamp
|
||||
runtime/autoload/zip.vim @cecamp
|
||||
runtime/autoload/xmlformat.vim @chrisbra
|
||||
runtime/compiler/checkstyle.vim @dkearns
|
||||
runtime/compiler/cucumber.vim @tpope
|
||||
runtime/compiler/dart.vim @dkearns
|
||||
@@ -57,13 +58,16 @@ runtime/compiler/tsc.vim @dkearns
|
||||
runtime/compiler/typedoc.vim @dkearns
|
||||
runtime/compiler/xmllint.vim @dkearns
|
||||
runtime/compiler/xo.vim @dkearns
|
||||
runtime/compiler/zsh.vim @dkearns
|
||||
runtime/doc/pi_getscript.txt @cecamp
|
||||
runtime/doc/pi_logipat.txt @cecamp
|
||||
runtime/doc/pi_netrw.txt @cecamp
|
||||
runtime/doc/pi_tar.txt @cecamp
|
||||
runtime/doc/pi_vimball.txt @cecamp
|
||||
runtime/doc/pi_zip.txt @cecamp
|
||||
runtime/ftplugin/awk.vim @dkearns
|
||||
runtime/ftplugin/bst.vim @tpope
|
||||
runtime/ftplugin/cfg.vim @chrisbra
|
||||
runtime/ftplugin/css.vim @dkearns
|
||||
runtime/ftplugin/cucumber.vim @tpope
|
||||
runtime/ftplugin/eiffel.vim @dkearns
|
||||
@@ -77,9 +81,11 @@ runtime/ftplugin/haml.vim @tpope
|
||||
runtime/ftplugin/hgcommit.vim @k-takata
|
||||
runtime/ftplugin/javascript.vim @dkearns
|
||||
runtime/ftplugin/javascriptreact.vim @dkearns
|
||||
runtime/ftplugin/kconfig.vim @chrisbra
|
||||
runtime/ftplugin/liquid.vim @tpope
|
||||
runtime/ftplugin/markdown.vim @tpope
|
||||
runtime/ftplugin/matlab.vim @cecamp
|
||||
runtime/ftplugin/nroff.vim @a-vrma
|
||||
runtime/ftplugin/nsis.vim @k-takata
|
||||
runtime/ftplugin/pdf.vim @tpope
|
||||
runtime/ftplugin/ruby.vim @tpope @dkearns
|
||||
@@ -88,7 +94,10 @@ runtime/ftplugin/scss.vim @tpope
|
||||
runtime/ftplugin/tmux.vim @ericpruitt
|
||||
runtime/ftplugin/typescript.vim @dkearns
|
||||
runtime/ftplugin/typescriptreact.vim @dkearns
|
||||
runtime/ftplugin/xml.vim @chrisbra
|
||||
runtime/ftplugin/zsh.vim @chrisbra
|
||||
runtime/indent/bst.vim @tpope
|
||||
runtime/syntax/cs.vim @nickspoons
|
||||
runtime/indent/cucumber.vim @tpope
|
||||
runtime/indent/dosbatch.vim @k-takata
|
||||
runtime/indent/eruby.vim @tpope @dkearns
|
||||
@@ -99,7 +108,11 @@ runtime/indent/nsis.vim @k-takata
|
||||
runtime/indent/ruby.vim @AndrewRadev @dkearns
|
||||
runtime/indent/sass.vim @tpope
|
||||
runtime/indent/scss.vim @tpope
|
||||
runtime/indent/sh.vim @chrisbra
|
||||
runtime/indent/xml.vim @chrisbra
|
||||
runtime/indent/zsh.vim @chrisbra
|
||||
runtime/indent/teraterm.vim @k-takata
|
||||
runtime/pack/dist/opt/matchit/ @chrisbra
|
||||
runtime/plugin/getscriptPlugin.vim @cecamp
|
||||
runtime/plugin/logiPat.vim @cecamp
|
||||
runtime/plugin/netrwPlugin.vim @cecamp
|
||||
@@ -107,10 +120,17 @@ runtime/plugin/tarPlugin.vim @cecamp
|
||||
runtime/plugin/vimballPlugin.vim @cecamp
|
||||
runtime/plugin/zipPlugin.vim @cecamp
|
||||
runtime/syntax/amiga.vim @cecamp
|
||||
runtime/syntax/asm.vim @dkearns
|
||||
runtime/syntax/asmh8300.vim @dkearns
|
||||
runtime/syntax/awk.vim @dkearns
|
||||
runtime/syntax/bst.vim @tpope
|
||||
runtime/syntax/cabalconfig.vim @coot
|
||||
runtime/syntax/cabalproject.vim @coot
|
||||
runtime/syntax/cs.vim @nickspoons
|
||||
runtime/syntax/csh.vim @cecamp
|
||||
runtime/syntax/cucumber.vim @tpope
|
||||
runtime/syntax/dcl.vim @cecamp
|
||||
runtime/syntax/dtd.vim @chrisbra
|
||||
runtime/syntax/elmfilt.vim @cecamp
|
||||
runtime/syntax/eruby.vim @tpope @dkearns
|
||||
runtime/syntax/exports.vim @cecamp
|
||||
@@ -119,7 +139,9 @@ runtime/syntax/gitcommit.vim @tpope
|
||||
runtime/syntax/gitconfig.vim @tpope
|
||||
runtime/syntax/gitrebase.vim @tpope
|
||||
runtime/syntax/haml.vim @tpope
|
||||
runtime/syntax/haskell.vim @coot
|
||||
runtime/syntax/hgcommit.vim @k-takata
|
||||
runtime/syntax/kconfig.vim @chrisbra
|
||||
runtime/syntax/lex.vim @cecamp
|
||||
runtime/syntax/liquid.vim @tpope
|
||||
runtime/syntax/lisp.vim @cecamp
|
||||
@@ -134,12 +156,15 @@ runtime/syntax/nsis.vim @k-takata
|
||||
runtime/syntax/pdf.vim @tpope
|
||||
runtime/syntax/php.vim @TysonAndre
|
||||
runtime/syntax/privoxy.vim @dkearns
|
||||
runtime/syntax/rc.vim @chrisbra
|
||||
runtime/syntax/rpcgen.vim @cecamp
|
||||
runtime/syntax/ruby.vim @dkearns
|
||||
runtime/syntax/sass.vim @tpope
|
||||
runtime/syntax/scss.vim @tpope
|
||||
runtime/syntax/sh.vim @cecamp
|
||||
runtime/syntax/sm.vim @cecamp
|
||||
runtime/syntax/sqloracle.vim @chrisbra
|
||||
runtime/syntax/sshdconfig.vim @Jakuje
|
||||
runtime/syntax/tags.vim @cecamp
|
||||
runtime/syntax/teraterm.vim @k-takata
|
||||
runtime/syntax/tex.vim @cecamp
|
||||
@@ -150,5 +175,8 @@ runtime/syntax/wget.vim @dkearns
|
||||
runtime/syntax/xbl.vim @dkearns
|
||||
runtime/syntax/xmath.vim @cecamp
|
||||
runtime/syntax/xslt.vim @Boobies
|
||||
runtime/syntax/xml.vim @chrisbra
|
||||
runtime/syntax/xxd.vim @cecamp
|
||||
runtime/syntax/yacc.vim @cecamp
|
||||
runtime/syntax/zsh.vim @chrisbra
|
||||
src/po/de.po @chrisbra
|
||||
|
||||
229
.github/workflows/ci-windows.yaml
vendored
229
.github/workflows/ci-windows.yaml
vendored
@@ -1,229 +0,0 @@
|
||||
name: GitHub CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
|
||||
|
||||
# Interfaces
|
||||
# Lua
|
||||
LUA_VER: 54
|
||||
LUA_VER_DOT: '5.4'
|
||||
LUA_RELEASE: 5.4.0
|
||||
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
|
||||
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
|
||||
LUA_DIR: D:\Lua
|
||||
# Python 2
|
||||
PYTHON_VER: 27
|
||||
PYTHON_VER_DOT: '2.7'
|
||||
# Python 3
|
||||
PYTHON3_VER: 38
|
||||
PYTHON3_VER_DOT: '3.8'
|
||||
|
||||
# Other dependencies
|
||||
# winpty
|
||||
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
|
||||
|
||||
# Escape sequences
|
||||
COL_RED: "\x1b[31m"
|
||||
COL_GREEN: "\x1b[32m"
|
||||
COL_YELLOW: "\x1b[33m"
|
||||
COL_RESET: "\x1b[m"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
toolchain: [msvc, mingw]
|
||||
arch: [x64, x86]
|
||||
features: [HUGE, NORMAL]
|
||||
include:
|
||||
- arch: x64
|
||||
vcarch: amd64
|
||||
warch: x64
|
||||
bits: 64
|
||||
msystem: MINGW64
|
||||
cygreg: registry
|
||||
pyreg: ""
|
||||
- arch: x86
|
||||
vcarch: x86
|
||||
warch: ia32
|
||||
bits: 32
|
||||
msystem: MINGW32
|
||||
cygreg: registry32
|
||||
pyreg: "-32"
|
||||
exclude:
|
||||
- toolchain: msvc
|
||||
arch: x64
|
||||
features: NORMAL
|
||||
- toolchain: mingw
|
||||
arch: x86
|
||||
features: NORMAL
|
||||
|
||||
steps:
|
||||
- name: Initalize
|
||||
id: init
|
||||
shell: bash
|
||||
run: |
|
||||
git config --global core.autocrlf input
|
||||
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@")
|
||||
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
|
||||
echo "PYTHON_DIR=$python_dir" >> $GITHUB_ENV
|
||||
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
|
||||
|
||||
- uses: msys2/setup-msys2@v2
|
||||
if: matrix.toolchain == 'mingw'
|
||||
with:
|
||||
msystem: ${{ matrix.msystem }}
|
||||
release: false
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Create a list of download URLs
|
||||
shell: cmd
|
||||
run: |
|
||||
type NUL > urls.txt
|
||||
echo %LUA_RELEASE%>> urls.txt
|
||||
echo %WINPTY_URL%>> urls.txt
|
||||
|
||||
- name: Cache downloaded files
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: downloads
|
||||
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }}
|
||||
|
||||
- name: Download dependencies
|
||||
shell: cmd
|
||||
run: |
|
||||
path C:\Program Files\7-Zip;%path%
|
||||
if not exist downloads mkdir downloads
|
||||
|
||||
echo %COL_GREEN%Download Lua%COL_RESET%
|
||||
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip
|
||||
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
|
||||
|
||||
echo %COL_GREEN%Download winpty%COL_RESET%
|
||||
call :downloadfile %WINPTY_URL% downloads\winpty.zip
|
||||
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
|
||||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll
|
||||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\
|
||||
|
||||
goto :eof
|
||||
|
||||
:downloadfile
|
||||
:: call :downloadfile <URL> <localfile>
|
||||
if not exist %2 (
|
||||
curl -f -L %1 -o %2
|
||||
)
|
||||
if ERRORLEVEL 1 (
|
||||
rem Retry once.
|
||||
curl -f -L %1 -o %2 || exit 1
|
||||
)
|
||||
goto :eof
|
||||
|
||||
- name: Copy src directory to src2
|
||||
shell: cmd
|
||||
run: |
|
||||
xcopy src src2\ /E > nul
|
||||
|
||||
- name: Build (MSVC)
|
||||
if: matrix.toolchain == 'msvc'
|
||||
shell: cmd
|
||||
run: |
|
||||
call "%VCVARSALL%" ${{ matrix.vcarch }}
|
||||
cd src
|
||||
:: Filter out the progress bar from the build log
|
||||
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
|
||||
if "${{ matrix.features }}"=="HUGE" (
|
||||
nmake -nologo -f Make_mvc2.mak ^
|
||||
FEATURES=${{ matrix.features }} ^
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^
|
||||
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
|
||||
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
|
||||
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR%
|
||||
) else (
|
||||
nmake -nologo -f Make_mvc2.mak ^
|
||||
FEATURES=${{ matrix.features }} ^
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes
|
||||
)
|
||||
if not exist vim${{ matrix.bits }}.dll (
|
||||
echo %COL_RED%Build failure.%COL_RESET%
|
||||
exit 1
|
||||
)
|
||||
|
||||
- name: Build (MinGW)
|
||||
if: matrix.toolchain == 'mingw'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
cd src
|
||||
if [ "${{ matrix.features }}" = "HUGE" ]; then
|
||||
mingw32-make -f Make_ming.mak -j2 \
|
||||
FEATURES=${{ matrix.features }} \
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
|
||||
DYNAMIC_LUA=yes LUA=${LUA_DIR} \
|
||||
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
|
||||
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
|
||||
STATIC_STDCPLUS=yes
|
||||
else
|
||||
mingw32-make -f Make_ming.mak -j2 \
|
||||
FEATURES=${{ matrix.features }} \
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
|
||||
STATIC_STDCPLUS=yes
|
||||
fi
|
||||
|
||||
# - name: Prepare Artifact
|
||||
# shell: cmd
|
||||
# run: |
|
||||
# mkdir artifacts
|
||||
# copy src\*vim.exe artifacts
|
||||
# copy src\vim*.dll artifacts
|
||||
#
|
||||
# - name: Upload Artifact
|
||||
# uses: actions/upload-artifact@v1
|
||||
# with:
|
||||
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
|
||||
# path: ./artifacts
|
||||
|
||||
- name: Test
|
||||
shell: cmd
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
|
||||
call "%VCVARSALL%" ${{ matrix.vcarch }}
|
||||
cd src
|
||||
echo.
|
||||
echo %COL_GREEN%vim version:%COL_RESET%
|
||||
.\vim --version || exit 1
|
||||
|
||||
echo %COL_GREEN%Start testing vim in background.%COL_RESET%
|
||||
start cmd /c "cd ..\src2\testdir & nmake -nologo -f Make_dos.mak VIMPROG=..\..\src\vim > nul & echo done>done.txt"
|
||||
|
||||
echo %COL_GREEN%Test gvim:%COL_RESET%
|
||||
cd testdir
|
||||
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1
|
||||
cd ..
|
||||
|
||||
echo %COL_GREEN%Wait for vim tests to finish.%COL_RESET%
|
||||
cd ..\src2\testdir
|
||||
:: Wait about 10 minutes.
|
||||
for /L %%i in (1,1,60) do (
|
||||
if exist done.txt goto exitloop
|
||||
timeout 10
|
||||
)
|
||||
set timeout=1
|
||||
:exitloop
|
||||
|
||||
echo %COL_GREEN%Test results of vim:%COL_RESET%
|
||||
if exist messages type messages
|
||||
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
|
||||
if "%timeout%"=="1" (
|
||||
echo %COL_RED%Timed out.%COL_RESET%
|
||||
exit 1
|
||||
)
|
||||
528
.github/workflows/ci.yml
vendored
Normal file
528
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,528 @@
|
||||
name: GitHub CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['**']
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
CC: ${{ matrix.compiler }}
|
||||
TEST: test
|
||||
SRCDIR: ./src
|
||||
LEAK_CFLAGS: -DEXITFREE
|
||||
LOG_DIR: ${{ github.workspace }}/logs
|
||||
TERM: xterm
|
||||
DISPLAY: ':99'
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
features: [tiny, small, normal, huge]
|
||||
compiler: [clang, gcc]
|
||||
extra: [none]
|
||||
include:
|
||||
- features: tiny
|
||||
compiler: clang
|
||||
extra: nogui
|
||||
- features: tiny
|
||||
compiler: gcc
|
||||
extra: nogui
|
||||
- features: normal
|
||||
shadow: ./src/shadow
|
||||
- features: huge
|
||||
coverage: true
|
||||
- features: huge
|
||||
compiler: gcc
|
||||
coverage: true
|
||||
extra: testgui
|
||||
- features: huge
|
||||
compiler: clang
|
||||
extra: asan
|
||||
- features: huge
|
||||
compiler: gcc
|
||||
coverage: true
|
||||
extra: unittests
|
||||
- features: normal
|
||||
compiler: gcc
|
||||
extra: vimtags
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
sudo apt-get install -y \
|
||||
autoconf \
|
||||
lcov \
|
||||
gettext \
|
||||
libcanberra-dev \
|
||||
libperl-dev \
|
||||
python-dev \
|
||||
python3-dev \
|
||||
liblua5.3-dev \
|
||||
lua5.3 \
|
||||
ruby-dev \
|
||||
tcl-dev \
|
||||
cscope \
|
||||
libgtk2.0-dev \
|
||||
desktop-file-utils \
|
||||
libtool-bin
|
||||
|
||||
- name: Install clang-11
|
||||
if: matrix.compiler == 'clang'
|
||||
run: |
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
. /etc/lsb-release
|
||||
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-11 main"
|
||||
sudo apt-get install -y clang-11
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-11 100
|
||||
sudo update-alternatives --set clang /usr/bin/clang-11
|
||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-11 100
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
mkdir -p "${LOG_DIR}"
|
||||
mkdir -p "${HOME}/bin"
|
||||
echo "${HOME}/bin" >> $GITHUB_PATH
|
||||
(
|
||||
echo "LINUX_VERSION=$(uname -r)"
|
||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
||||
echo "SND_DUMMY_DIR=${HOME}/snd-dummy"
|
||||
echo "TMPDIR=${{ runner.temp }}"
|
||||
|
||||
case "${{ matrix.features }}" in
|
||||
tiny|small)
|
||||
echo "TEST=testtiny"
|
||||
if ${{ contains(matrix.extra, 'nogui') }}; then
|
||||
echo "CONFOPT=--disable-gui"
|
||||
fi
|
||||
;;
|
||||
normal)
|
||||
;;
|
||||
huge)
|
||||
echo "TEST=scripttests test_libvterm"
|
||||
echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
||||
;;
|
||||
esac
|
||||
|
||||
if ${{ matrix.coverage == true }}; then
|
||||
echo "CFLAGS=--coverage -DUSE_GCOV_FLUSH"
|
||||
echo "LDFLAGS=--coverage"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'testgui') }}; then
|
||||
echo "TEST=-C src testgui"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'unittests') }}; then
|
||||
echo "TEST=unittests"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'asan') }}; then
|
||||
echo "SANITIZER_CFLAGS=-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
echo "ASAN_OPTIONS=print_stacktrace=1 log_path=${LOG_DIR}/asan"
|
||||
echo "UBSAN_OPTIONS=print_stacktrace=1 log_path=${LOG_DIR}/ubsan"
|
||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'vimtags') }}; then
|
||||
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
||||
fi
|
||||
) >> $GITHUB_ENV
|
||||
|
||||
- name: Set up system
|
||||
run: |
|
||||
if [[ ${CC} = clang ]]; then
|
||||
# Use llvm-cov instead of gcov when compiler is clang.
|
||||
ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
|
||||
fi
|
||||
# Setup lua5.3 manually since its package doesn't provide alternative.
|
||||
# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
|
||||
if [[ ${CONFOPT} =~ luainterp ]]; then
|
||||
sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3 10
|
||||
fi
|
||||
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
|
||||
sudo usermod -a -G audio "${USER}"
|
||||
sudo bash ci/setup-xvfb.sh
|
||||
|
||||
- name: Cache snd-dummy
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ env.SND_DUMMY_DIR }}
|
||||
key: linux-${{ env.LINUX_VERSION }}-snd-dummy
|
||||
|
||||
- name: Set up snd-dummy
|
||||
run: |
|
||||
if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
|
||||
bash ci/build-snd-dummy.sh
|
||||
fi
|
||||
cd "${SND_DUMMY_DIR}"
|
||||
sudo insmod soundcore.ko
|
||||
sudo insmod snd.ko
|
||||
sudo insmod snd-pcm.ko
|
||||
sudo insmod snd-dummy.ko
|
||||
|
||||
- name: Check autoconf
|
||||
if: contains(matrix.extra, 'unittests')
|
||||
run: |
|
||||
make -C src autoconf
|
||||
|
||||
- name: Set up shadow dir
|
||||
if: matrix.shadow
|
||||
run: |
|
||||
make -C src shadow
|
||||
echo "SRCDIR=${{ matrix.shadow }}" >> $GITHUB_ENV
|
||||
echo "SHADOWOPT=-C ${{ matrix.shadow }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
|
||||
# Append various warning flags to CFLAGS.
|
||||
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
||||
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
|
||||
|
||||
- name: Build
|
||||
if: (!contains(matrix.extra, 'unittests'))
|
||||
run: |
|
||||
make ${SHADOWOPT} -j${NPROC}
|
||||
|
||||
- name: Check version
|
||||
if: (!contains(matrix.extra, 'unittests'))
|
||||
run: |
|
||||
"${SRCDIR}"/vim --version
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
|
||||
- name: Test
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
do_test() { sg audio "sg $(id -gn) '$*'"; }
|
||||
do_test make ${SHADOWOPT} ${TEST}
|
||||
|
||||
- name: Coveralls
|
||||
if: matrix.coverage && success() && github.event_name != 'pull_request'
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||
COVERALLS_PARALLEL: true
|
||||
TRAVIS_JOB_ID: ${{ github.run_id }}
|
||||
run: |
|
||||
sudo apt-get install -y python3-setuptools python3-wheel
|
||||
# needed for https support for coveralls building cffi only works with gcc, not with clang
|
||||
CC=gcc pip3 install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1
|
||||
~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8
|
||||
|
||||
- name: Codecov
|
||||
if: matrix.coverage && success()
|
||||
uses: codecov/codecov-action@v1
|
||||
with:
|
||||
flags: ${{ matrix.features }}-${{ matrix.compiler }}-${{ matrix.extra }}
|
||||
fail_ci_if_error: true
|
||||
working-directory: ${{ env.SRCDIR }}
|
||||
|
||||
- name: ASan logs
|
||||
if: contains(matrix.extra, 'asan') && !cancelled()
|
||||
run: |
|
||||
for f in $(grep -lR '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "${LOG_DIR}"); do
|
||||
asan_symbolize-11 -l "$f"
|
||||
false # in order to fail a job
|
||||
done
|
||||
|
||||
coveralls:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: linux
|
||||
if: always() && github.event_name != 'pull_request'
|
||||
|
||||
steps:
|
||||
- name: Parallel finished
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||
run: |
|
||||
curl -k "https://coveralls.io/webhook?repo_token=${COVERALLS_REPO_TOKEN}" -d "payload[build_num]=${GITHUB_RUN_ID}&payload[status]=done"
|
||||
|
||||
macos:
|
||||
runs-on: macos-latest
|
||||
|
||||
env:
|
||||
CC: ${{ matrix.compiler }}
|
||||
TEST: test
|
||||
SRCDIR: ./src
|
||||
LEAK_CFLAGS: -DEXITFREE
|
||||
TERM: xterm
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
features: [tiny, huge]
|
||||
compiler: [clang, gcc]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install packages
|
||||
env:
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
run: |
|
||||
brew install lua
|
||||
echo "LUA_PREFIX=/usr/local" >> $GITHUB_ENV
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
(
|
||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
||||
case "${{ matrix.features }}" in
|
||||
tiny)
|
||||
echo "TEST=testtiny"
|
||||
echo "CONFOPT=--disable-gui"
|
||||
;;
|
||||
huge)
|
||||
echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
||||
;;
|
||||
esac
|
||||
) >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
|
||||
# Append various warning flags to CFLAGS.
|
||||
# BSD sed needs backup extension specified.
|
||||
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
||||
# On macOS, the entity of gcc is clang.
|
||||
sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
LANG: C
|
||||
run: |
|
||||
make -j${NPROC}
|
||||
|
||||
- name: Check version
|
||||
run: |
|
||||
"${SRCDIR}"/vim --version
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
|
||||
- name: Test
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
make ${TEST}
|
||||
|
||||
windows:
|
||||
runs-on: windows-latest
|
||||
|
||||
env:
|
||||
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
|
||||
# Interfaces
|
||||
# Lua
|
||||
LUA_VER: 54
|
||||
LUA_VER_DOT: '5.4'
|
||||
LUA_RELEASE: 5.4.0
|
||||
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
|
||||
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
|
||||
LUA_DIR: D:\Lua
|
||||
# Python 2
|
||||
PYTHON_VER: 27
|
||||
PYTHON_VER_DOT: '2.7'
|
||||
# Python 3
|
||||
PYTHON3_VER: 38
|
||||
PYTHON3_VER_DOT: '3.8'
|
||||
# Other dependencies
|
||||
# winpty
|
||||
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
|
||||
# Escape sequences
|
||||
COL_RED: "\x1b[31m"
|
||||
COL_GREEN: "\x1b[32m"
|
||||
COL_YELLOW: "\x1b[33m"
|
||||
COL_RESET: "\x1b[m"
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
toolchain: [msvc, mingw]
|
||||
arch: [x64, x86]
|
||||
features: [HUGE, NORMAL]
|
||||
include:
|
||||
- arch: x64
|
||||
vcarch: amd64
|
||||
warch: x64
|
||||
bits: 64
|
||||
msystem: MINGW64
|
||||
cygreg: registry
|
||||
pyreg: ""
|
||||
- arch: x86
|
||||
vcarch: x86
|
||||
warch: ia32
|
||||
bits: 32
|
||||
msystem: MINGW32
|
||||
cygreg: registry32
|
||||
pyreg: "-32"
|
||||
exclude:
|
||||
- toolchain: msvc
|
||||
arch: x64
|
||||
features: NORMAL
|
||||
- toolchain: mingw
|
||||
arch: x86
|
||||
features: NORMAL
|
||||
|
||||
steps:
|
||||
- name: Initalize
|
||||
id: init
|
||||
shell: bash
|
||||
run: |
|
||||
git config --global core.autocrlf input
|
||||
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@")
|
||||
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
|
||||
echo "PYTHON_DIR=$python_dir" >> $GITHUB_ENV
|
||||
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
|
||||
|
||||
- uses: msys2/setup-msys2@v2
|
||||
if: matrix.toolchain == 'mingw'
|
||||
with:
|
||||
msystem: ${{ matrix.msystem }}
|
||||
release: false
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Create a list of download URLs
|
||||
shell: cmd
|
||||
run: |
|
||||
type NUL > urls.txt
|
||||
echo %LUA_RELEASE%>> urls.txt
|
||||
echo %WINPTY_URL%>> urls.txt
|
||||
|
||||
- name: Cache downloaded files
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: downloads
|
||||
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }}
|
||||
|
||||
- name: Download dependencies
|
||||
shell: cmd
|
||||
run: |
|
||||
path C:\Program Files\7-Zip;%path%
|
||||
if not exist downloads mkdir downloads
|
||||
|
||||
echo %COL_GREEN%Download Lua%COL_RESET%
|
||||
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip
|
||||
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
|
||||
|
||||
echo %COL_GREEN%Download winpty%COL_RESET%
|
||||
call :downloadfile %WINPTY_URL% downloads\winpty.zip
|
||||
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
|
||||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll
|
||||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\
|
||||
|
||||
goto :eof
|
||||
|
||||
:downloadfile
|
||||
:: call :downloadfile <URL> <localfile>
|
||||
if not exist %2 (
|
||||
curl -f -L %1 -o %2
|
||||
)
|
||||
if ERRORLEVEL 1 (
|
||||
rem Retry once.
|
||||
curl -f -L %1 -o %2 || exit 1
|
||||
)
|
||||
goto :eof
|
||||
|
||||
- name: Copy src directory to src2
|
||||
shell: cmd
|
||||
run: |
|
||||
xcopy src src2\ /E > nul
|
||||
|
||||
- name: Build (MSVC)
|
||||
if: matrix.toolchain == 'msvc'
|
||||
shell: cmd
|
||||
run: |
|
||||
call "%VCVARSALL%" ${{ matrix.vcarch }}
|
||||
cd src
|
||||
:: Filter out the progress bar from the build log
|
||||
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
|
||||
if "${{ matrix.features }}"=="HUGE" (
|
||||
nmake -nologo -f Make_mvc2.mak ^
|
||||
FEATURES=${{ matrix.features }} ^
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^
|
||||
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
|
||||
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
|
||||
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR%
|
||||
) else (
|
||||
nmake -nologo -f Make_mvc2.mak ^
|
||||
FEATURES=${{ matrix.features }} ^
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes
|
||||
)
|
||||
if not exist vim${{ matrix.bits }}.dll (
|
||||
echo %COL_RED%Build failure.%COL_RESET%
|
||||
exit 1
|
||||
)
|
||||
|
||||
- name: Build (MinGW)
|
||||
if: matrix.toolchain == 'mingw'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
cd src
|
||||
if [ "${{ matrix.features }}" = "HUGE" ]; then
|
||||
mingw32-make -f Make_ming.mak -j2 \
|
||||
FEATURES=${{ matrix.features }} \
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
|
||||
DYNAMIC_LUA=yes LUA=${LUA_DIR} \
|
||||
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
|
||||
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
|
||||
STATIC_STDCPLUS=yes
|
||||
else
|
||||
mingw32-make -f Make_ming.mak -j2 \
|
||||
FEATURES=${{ matrix.features }} \
|
||||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
|
||||
STATIC_STDCPLUS=yes
|
||||
fi
|
||||
|
||||
#- name: Prepare Artifact
|
||||
# shell: cmd
|
||||
# run: |
|
||||
# mkdir artifacts
|
||||
# copy src\*vim.exe artifacts
|
||||
# copy src\vim*.dll artifacts
|
||||
#
|
||||
#- name: Upload Artifact
|
||||
# uses: actions/upload-artifact@v1
|
||||
# with:
|
||||
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
|
||||
# path: ./artifacts
|
||||
|
||||
- name: Test
|
||||
shell: cmd
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
|
||||
call "%VCVARSALL%" ${{ matrix.vcarch }}
|
||||
cd src
|
||||
echo.
|
||||
echo %COL_GREEN%vim version:%COL_RESET%
|
||||
.\vim --version || exit 1
|
||||
|
||||
echo %COL_GREEN%Start testing vim in background.%COL_RESET%
|
||||
start cmd /c "cd ..\src2\testdir & nmake -nologo -f Make_dos.mak VIMPROG=..\..\src\vim > nul & echo done>done.txt"
|
||||
|
||||
echo %COL_GREEN%Test gvim:%COL_RESET%
|
||||
cd testdir
|
||||
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1
|
||||
cd ..
|
||||
|
||||
echo %COL_GREEN%Wait for vim tests to finish.%COL_RESET%
|
||||
cd ..\src2\testdir
|
||||
:: Wait about 10 minutes.
|
||||
for /L %%i in (1,1,60) do (
|
||||
if exist done.txt goto exitloop
|
||||
timeout 10 > NUL 2>&1
|
||||
if ERRORLEVEL 1 ping -n 11 localhost > NUL
|
||||
)
|
||||
set timeout=1
|
||||
:exitloop
|
||||
|
||||
echo %COL_GREEN%Test results of vim:%COL_RESET%
|
||||
if exist messages type messages
|
||||
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
|
||||
if "%timeout%"=="1" (
|
||||
echo %COL_RED%Timed out.%COL_RESET%
|
||||
exit 1
|
||||
)
|
||||
9
.github/workflows/codeql-analysis.yml
vendored
9
.github/workflows/codeql-analysis.yml
vendored
@@ -31,15 +31,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
|
||||
202
.travis.yml
202
.travis.yml
@@ -172,56 +172,56 @@ script:
|
||||
# Linux: 2 compilers on some of the environments + gcc on os390
|
||||
jobs:
|
||||
include:
|
||||
- <<: *osx
|
||||
name: tiny-nogui/clang
|
||||
compiler: clang
|
||||
env: *tiny-nogui
|
||||
- <<: *osx
|
||||
name: tiny-nogui/gcc
|
||||
compiler: gcc
|
||||
env: *tiny-nogui
|
||||
- <<: *osx
|
||||
<<: *osx-homebrew
|
||||
name: huge/clang
|
||||
compiler: clang
|
||||
env: *osx-huge
|
||||
- <<: *osx
|
||||
<<: *osx-homebrew
|
||||
name: huge/gcc
|
||||
compiler: gcc
|
||||
env: *osx-huge
|
||||
- <<: *linux
|
||||
name: tiny-nogui/clang
|
||||
compiler: clang
|
||||
env: *tiny-nogui
|
||||
- <<: *linux
|
||||
name: tiny-nogui/gcc
|
||||
compiler: gcc
|
||||
env: *tiny-nogui
|
||||
- <<: *linux
|
||||
name: tiny/clang
|
||||
compiler: clang
|
||||
env: *tiny
|
||||
- <<: *linux
|
||||
name: tiny/gcc
|
||||
compiler: gcc
|
||||
env: *tiny
|
||||
- <<: *linux
|
||||
name: small/gcc
|
||||
compiler: gcc
|
||||
env: *small
|
||||
- <<: *linux
|
||||
name: normal+shadow/clang
|
||||
compiler: clang
|
||||
env:
|
||||
- *normal
|
||||
- *shadowopt
|
||||
- <<: *linux
|
||||
name: normal+shadow/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *normal
|
||||
- *shadowopt
|
||||
#- <<: *osx
|
||||
# name: tiny-nogui/clang
|
||||
# compiler: clang
|
||||
# env: *tiny-nogui
|
||||
#- <<: *osx
|
||||
# name: tiny-nogui/gcc
|
||||
# compiler: gcc
|
||||
# env: *tiny-nogui
|
||||
#- <<: *osx
|
||||
# <<: *osx-homebrew
|
||||
# name: huge/clang
|
||||
# compiler: clang
|
||||
# env: *osx-huge
|
||||
#- <<: *osx
|
||||
# <<: *osx-homebrew
|
||||
# name: huge/gcc
|
||||
# compiler: gcc
|
||||
# env: *osx-huge
|
||||
#- <<: *linux
|
||||
# name: tiny-nogui/clang
|
||||
# compiler: clang
|
||||
# env: *tiny-nogui
|
||||
#- <<: *linux
|
||||
# name: tiny-nogui/gcc
|
||||
# compiler: gcc
|
||||
# env: *tiny-nogui
|
||||
#- <<: *linux
|
||||
# name: tiny/clang
|
||||
# compiler: clang
|
||||
# env: *tiny
|
||||
#- <<: *linux
|
||||
# name: tiny/gcc
|
||||
# compiler: gcc
|
||||
# env: *tiny
|
||||
#- <<: *linux
|
||||
# name: small/gcc
|
||||
# compiler: gcc
|
||||
# env: *small
|
||||
#- <<: *linux
|
||||
# name: normal+shadow/clang
|
||||
# compiler: clang
|
||||
# env:
|
||||
# - *normal
|
||||
# - *shadowopt
|
||||
#- <<: *linux
|
||||
# name: normal+shadow/gcc
|
||||
# compiler: gcc
|
||||
# env:
|
||||
# - *normal
|
||||
# - *shadowopt
|
||||
- <<: *linux
|
||||
arch: s390x
|
||||
name: huge/gcc-s390x
|
||||
@@ -234,57 +234,55 @@ jobs:
|
||||
compiler: gcc
|
||||
env: *linux-huge
|
||||
services: []
|
||||
- <<: *linux
|
||||
name: huge+coverage/clang
|
||||
compiler: clang
|
||||
env:
|
||||
- *linux-huge
|
||||
- *coverage
|
||||
# Clang cannot compile test_libvterm with "--coverage" flag.
|
||||
- TEST=scripttests
|
||||
after_success: *eval-coverage
|
||||
- <<: *linux
|
||||
name: huge+coverage/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *linux-huge
|
||||
- *coverage
|
||||
after_success: *eval-coverage
|
||||
- <<: *linux # ASAN
|
||||
name: huge+asan/clang
|
||||
compiler: clang-11
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main'
|
||||
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
||||
packages:
|
||||
- *apt-packages
|
||||
- clang-11
|
||||
env:
|
||||
- *linux-huge
|
||||
- *asan
|
||||
after_failure: *asan_symbolize
|
||||
- <<: *linux
|
||||
name: huge-testgui+coverage/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *linux-huge
|
||||
- *coverage
|
||||
- TEST="-C src testgui"
|
||||
after_success: *eval-coverage
|
||||
- <<: *linux
|
||||
name: unittests+coverage/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *unittests
|
||||
- *coverage
|
||||
after_success: *eval-coverage
|
||||
- <<: *linux
|
||||
name: vimtags/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *normal
|
||||
- TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
||||
#- <<: *linux
|
||||
# name: huge+coverage/clang
|
||||
# compiler: clang
|
||||
# env:
|
||||
# - *linux-huge
|
||||
# - *coverage
|
||||
# after_success: *eval-coverage
|
||||
#- <<: *linux
|
||||
# name: huge+coverage/gcc
|
||||
# compiler: gcc
|
||||
# env:
|
||||
# - *linux-huge
|
||||
# - *coverage
|
||||
# after_success: *eval-coverage
|
||||
#- <<: *linux # ASAN
|
||||
# name: huge+asan/clang
|
||||
# compiler: clang-11
|
||||
# addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main'
|
||||
# key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
||||
# packages:
|
||||
# - *apt-packages
|
||||
# - clang-11
|
||||
# env:
|
||||
# - *linux-huge
|
||||
# - *asan
|
||||
# after_failure: *asan_symbolize
|
||||
#- <<: *linux
|
||||
# name: huge-testgui+coverage/gcc
|
||||
# compiler: gcc
|
||||
# env:
|
||||
# - *linux-huge
|
||||
# - *coverage
|
||||
# - TEST="-C src testgui"
|
||||
# after_success: *eval-coverage
|
||||
#- <<: *linux
|
||||
# name: unittests+coverage/gcc
|
||||
# compiler: gcc
|
||||
# env:
|
||||
# - *unittests
|
||||
# - *coverage
|
||||
# after_success: *eval-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:
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||

|
||||
|
||||
[](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
|
||||
[](https://travis-ci.org/vim/vim)
|
||||
[](https://ci.appveyor.com/project/chrisbra/vim)
|
||||
[](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
|
||||
[](https://cirrus-ci.com/github/vim/vim)
|
||||
[](https://codecov.io/gh/vim/vim?branch=master)
|
||||
[](https://scan.coverity.com/projects/vim)
|
||||
[](https://lgtm.com/projects/g/vim/vim/context:cpp)
|
||||
[](https://buildd.debian.org/vim)
|
||||
[](https://repology.org/metapackage/vim)
|
||||
|
||||
For translations of this README see the end.
|
||||
|
||||
|
||||
|
||||
@@ -159,18 +159,18 @@ 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
|
||||
Using "var" 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
|
||||
var local = 1
|
||||
var todo = arg
|
||||
const ADD = 88
|
||||
while todo > 0
|
||||
local += ADD
|
||||
--todo
|
||||
todo -= 1
|
||||
endwhile
|
||||
return local
|
||||
enddef
|
||||
@@ -192,7 +192,7 @@ function and export it:
|
||||
``` vim
|
||||
vim9script " Vim9 script syntax used here
|
||||
|
||||
let local = 'local variable is not exported, script-local'
|
||||
var local = 'local variable is not exported, script-local'
|
||||
|
||||
export def MyFunction() " exported function
|
||||
...
|
||||
@@ -248,10 +248,10 @@ END
|
||||
return luaeval('sum')
|
||||
endfunc
|
||||
|
||||
def VimNew()
|
||||
let sum = 0
|
||||
def VimNew(): number
|
||||
var sum = 0
|
||||
for i in range(1, 2999999)
|
||||
let sum += i
|
||||
sum += i
|
||||
endfor
|
||||
return sum
|
||||
enddef
|
||||
@@ -277,7 +277,7 @@ echo 'Vim new: ' .. reltimestr(reltime(start))
|
||||
|
||||
``` vim
|
||||
def VimNew(): number
|
||||
let totallen = 0
|
||||
var totallen = 0
|
||||
for i in range(1, 100000)
|
||||
setline(i, ' ' .. getline(i))
|
||||
totallen += len(getline(i))
|
||||
|
||||
19
ci/build-snd-dummy.sh
Normal file
19
ci/build-snd-dummy.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
LINUX_VERSION=$(uname -r | cut -d. -f1-2)
|
||||
LINUX_ARCHIVE_FILE=v${LINUX_VERSION}.tar.gz
|
||||
LINUX_SOURCE_DIR=linux-${LINUX_VERSION}
|
||||
|
||||
mkdir -p "${TMPDIR}"
|
||||
cd "${TMPDIR}"
|
||||
|
||||
wget -q "https://github.com/torvalds/linux/archive/${LINUX_ARCHIVE_FILE}"
|
||||
|
||||
tar -xf "${LINUX_ARCHIVE_FILE}" "${LINUX_SOURCE_DIR}/sound"
|
||||
cd "${LINUX_SOURCE_DIR}/sound"
|
||||
|
||||
CC=gcc make -C "/lib/modules/$(uname -r)/build" M="${PWD}" CONFIG_SOUND=m CONFIG_SND=m CONFIG_SND_PCM=m CONFIG_SND_DUMMY=m modules
|
||||
|
||||
mkdir -p "${SND_DUMMY_DIR}"
|
||||
cp soundcore.ko core/snd.ko core/snd-pcm.ko drivers/snd-dummy.ko "${SND_DUMMY_DIR}"
|
||||
17
ci/setup-xvfb.sh
Normal file
17
ci/setup-xvfb.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
apt-get install -y xvfb
|
||||
|
||||
cat <<EOT >/etc/systemd/system/xvfb.service
|
||||
[Unit]
|
||||
Description=X Virtual Frame Buffer Service
|
||||
After=network.target
|
||||
[Service]
|
||||
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOT
|
||||
|
||||
systemctl enable xvfb.service
|
||||
systemctl start xvfb.service
|
||||
@@ -1,13 +1,13 @@
|
||||
" Vim completion script
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2020 Apr 08
|
||||
" Last Change: 2020 Nov 14
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" This function is used for the 'omnifunc' option.
|
||||
function! ccomplete#Complete(findstart, base)
|
||||
func ccomplete#Complete(findstart, base)
|
||||
if a:findstart
|
||||
" Locate the start of the item, including ".", "->" and "[...]".
|
||||
let line = getline('.')
|
||||
@@ -244,7 +244,7 @@ function! ccomplete#Complete(findstart, base)
|
||||
return map(res, 's:Tagline2item(v:val, brackets)')
|
||||
endfunc
|
||||
|
||||
function! s:GetAddition(line, match, memarg, bracket)
|
||||
func s:GetAddition(line, match, memarg, bracket)
|
||||
" Guess if the item is an array.
|
||||
if a:bracket && match(a:line, a:match . '\s*\[') > 0
|
||||
return '['
|
||||
@@ -260,13 +260,13 @@ function! s:GetAddition(line, match, memarg, bracket)
|
||||
endif
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" Turn the tag info "val" into an item for completion.
|
||||
" "val" is is an item in the list returned by taglist().
|
||||
" If it is a variable we may add "." or "->". Don't do it for other types,
|
||||
" such as a typedef, by not including the info that s:GetAddition() uses.
|
||||
function! s:Tag2item(val)
|
||||
func s:Tag2item(val)
|
||||
let res = {'match': a:val['name']}
|
||||
|
||||
let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
|
||||
@@ -289,10 +289,10 @@ function! s:Tag2item(val)
|
||||
endif
|
||||
|
||||
return res
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" Use all the items in dictionary for the "info" entry.
|
||||
function! s:Dict2info(dict)
|
||||
func s:Dict2info(dict)
|
||||
let info = ''
|
||||
for k in sort(keys(a:dict))
|
||||
let info .= k . repeat(' ', 10 - len(k))
|
||||
@@ -307,7 +307,7 @@ function! s:Dict2info(dict)
|
||||
endfunc
|
||||
|
||||
" Parse a tag line and return a dictionary with items like taglist()
|
||||
function! s:ParseTagline(line)
|
||||
func s:ParseTagline(line)
|
||||
let l = split(a:line, "\t")
|
||||
let d = {}
|
||||
if len(l) >= 3
|
||||
@@ -334,12 +334,12 @@ function! s:ParseTagline(line)
|
||||
endif
|
||||
|
||||
return d
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" Turn a match item "val" into an item for completion.
|
||||
" "val['match']" is the matching item.
|
||||
" "val['tagline']" is the tagline in which the last part was found.
|
||||
function! s:Tagline2item(val, brackets)
|
||||
func s:Tagline2item(val, brackets)
|
||||
let line = a:val['tagline']
|
||||
let add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
|
||||
let res = {'word': a:val['match'] . a:brackets . add }
|
||||
@@ -377,10 +377,10 @@ function! s:Tagline2item(val, brackets)
|
||||
let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))
|
||||
endif
|
||||
return res
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" Turn a command from a tag line to something that is useful in the menu
|
||||
function! s:Tagcmd2extra(cmd, name, fname)
|
||||
func s:Tagcmd2extra(cmd, name, fname)
|
||||
if a:cmd =~ '^/^'
|
||||
" The command is a search command, useful to see what it is.
|
||||
let x = matchstr(a:cmd, '^/^\s*\zs.*\ze$/')
|
||||
@@ -395,13 +395,13 @@ function! s:Tagcmd2extra(cmd, name, fname)
|
||||
let x = a:cmd . ' - ' . a:fname
|
||||
endif
|
||||
return x
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" Find composing type in "lead" and match items[0] with it.
|
||||
" Repeat this recursively for items[1], if it's there.
|
||||
" When resolving typedefs "depth" is used to avoid infinite recursion.
|
||||
" Return the list of matches.
|
||||
function! s:Nextitem(lead, items, depth, all)
|
||||
func s:Nextitem(lead, items, depth, all)
|
||||
|
||||
" Use the text up to the variable name and split it in tokens.
|
||||
let tokens = split(a:lead, '\s\+\|\<')
|
||||
@@ -485,7 +485,7 @@ function! s:Nextitem(lead, items, depth, all)
|
||||
endfor
|
||||
|
||||
return res
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
|
||||
" Search for members of structure "typename" in tags files.
|
||||
@@ -493,7 +493,7 @@ endfunction
|
||||
" Each match is a dictionary with "match" and "tagline" entries.
|
||||
" When "all" is non-zero find all, otherwise just return 1 if there is any
|
||||
" member.
|
||||
function! s:StructMembers(typename, items, all)
|
||||
func s:StructMembers(typename, items, all)
|
||||
" Todo: What about local structures?
|
||||
let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
|
||||
if fnames == ''
|
||||
@@ -586,12 +586,12 @@ function! s:StructMembers(typename, items, all)
|
||||
|
||||
" Failed to find anything.
|
||||
return []
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
" For matching members, find matches for following items.
|
||||
" When "all" is non-zero find all, otherwise just return 1 if there is any
|
||||
" member.
|
||||
function! s:SearchMembers(matches, items, all)
|
||||
func s:SearchMembers(matches, items, all)
|
||||
let res = []
|
||||
for i in range(len(a:matches))
|
||||
let typename = ''
|
||||
|
||||
@@ -163,7 +163,7 @@ fun! tar#Browse(tarfile)
|
||||
" call Decho("1: exe silent r! gzip -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\)$'
|
||||
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$'
|
||||
if has("unix") && executable("file")
|
||||
let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
|
||||
else
|
||||
@@ -174,6 +174,8 @@ fun! tar#Browse(tarfile)
|
||||
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." - "
|
||||
elseif filekind =~ "Zstandard"
|
||||
exe "sil! r! zstd --decompress --stdout -- ".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
|
||||
@@ -190,6 +192,8 @@ fun! tar#Browse(tarfile)
|
||||
elseif tarfile =~# '\.\(xz\|txz\)$'
|
||||
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(zst\|tzs\)$'
|
||||
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
else
|
||||
if tarfile =~ '^\s*-'
|
||||
" A file name starting with a dash is taken as an option. Prepend ./ to avoid that.
|
||||
@@ -302,6 +306,9 @@ fun! tar#Read(fname,mode)
|
||||
elseif fname =~ '\.xz$' && executable("xzcat")
|
||||
let decmp= "|xzcat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.zst$' && executable("zstdcat")
|
||||
let decmp= "|zstdcat"
|
||||
let doro = 1
|
||||
else
|
||||
let decmp=""
|
||||
let doro = 0
|
||||
@@ -331,6 +338,8 @@ fun! tar#Read(fname,mode)
|
||||
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
|
||||
elseif filekind =~ "Zstandard"
|
||||
exe "sil! r! zstd --decompress --stdout -- ".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
|
||||
@@ -452,6 +461,10 @@ fun! tar#Write(fname)
|
||||
let tarfile = substitute(tarfile,'\.xz','','e')
|
||||
let compress= "xz -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.zst'
|
||||
call system("zstd --decompress -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.zst','','e')
|
||||
let compress= "zstd -- ".shellescape(tarfile,0)
|
||||
elseif tarfile =~# '\.lzma'
|
||||
call system("lzma -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.lzma','','e')
|
||||
@@ -676,6 +689,28 @@ fun! tar#Extract()
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tzs")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.zst")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
endif
|
||||
|
||||
" restore option
|
||||
|
||||
23
runtime/compiler/zsh.vim
Normal file
23
runtime/compiler/zsh.vim
Normal file
@@ -0,0 +1,23 @@
|
||||
" Vim compiler file
|
||||
" Compiler: Zsh
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2020 Sep 6
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "zsh"
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
CompilerSet makeprg=zsh\ -n\ --\ %:S
|
||||
CompilerSet errorformat=%f:\ line\ %l:\ %m,
|
||||
\%-G%.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2020 Oct 26
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2020 Dec 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -70,6 +70,11 @@ effects. Be careful not to destroy your text.
|
||||
The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand.
|
||||
See |autocmd-buflocal|.
|
||||
|
||||
If the `:autocmd` is in Vim9 script (a script that starts with `:vim9script`
|
||||
and in a `:def` function) then {cmd} will be executed as in Vim9
|
||||
script. Thus this depends on where the autocmd is defined, not where it is
|
||||
triggered.
|
||||
|
||||
Note: The ":autocmd" command can only be followed by another command when the
|
||||
'|' appears before {cmd}. This works: >
|
||||
:augroup mine | au! BufRead | augroup END
|
||||
@@ -301,6 +306,9 @@ Name triggered by ~
|
||||
|VimLeavePre| before exiting Vim, before writing the viminfo file
|
||||
|VimLeave| before exiting Vim, after writing the viminfo file
|
||||
|
||||
|VimSuspend| when suspending Vim
|
||||
|VimResume| when Vim is resumed after being suspended
|
||||
|
||||
Terminal
|
||||
|TerminalOpen| after a terminal buffer was created
|
||||
|TerminalWinOpen| after a terminal buffer was created in a new window
|
||||
@@ -551,12 +559,15 @@ CmdlineChanged After a change was made to the text in the
|
||||
*CmdlineEnter*
|
||||
CmdlineEnter After moving the cursor to the command line,
|
||||
where the user can type a command or search
|
||||
string.
|
||||
string; including non-interactive use of ":"
|
||||
in a mapping, but not when using |<Cmd>|.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdlineLeave*
|
||||
CmdlineLeave Before leaving the command line.
|
||||
CmdlineLeave Before leaving the command line; including
|
||||
non-interactive use of ":" in a mapping, but
|
||||
not when using |<Cmd>|.
|
||||
Also when abandoning the command line, after
|
||||
typing CTRL-C or <Esc>.
|
||||
When the commands result in an error the
|
||||
@@ -1207,6 +1218,7 @@ VimLeave Before exiting Vim, just after writing the
|
||||
To detect an abnormal exit use |v:dying|.
|
||||
When v:dying is 2 or more this event is not
|
||||
triggered.
|
||||
To get the exit code use |v:exiting|.
|
||||
*VimLeavePre*
|
||||
VimLeavePre Before exiting Vim, just before writing the
|
||||
.viminfo file. This is executed only once,
|
||||
@@ -1217,10 +1229,22 @@ VimLeavePre Before exiting Vim, just before writing the
|
||||
< To detect an abnormal exit use |v:dying|.
|
||||
When v:dying is 2 or more this event is not
|
||||
triggered.
|
||||
To get the exit code use |v:exiting|.
|
||||
*VimResized*
|
||||
VimResized After the Vim window was resized, thus 'lines'
|
||||
and/or 'columns' changed. Not when starting
|
||||
up though.
|
||||
*VimResume*
|
||||
VimResume When the Vim instance is resumed after being
|
||||
suspended and |VimSuspend| was triggered.
|
||||
Useful for triggering |:checktime| and ensure
|
||||
the buffers content did not change while Vim
|
||||
was suspended: >
|
||||
:autocmd VimResume * checktime
|
||||
< *VimSuspend*
|
||||
VimSuspend When the Vim instance is suspended. Only when
|
||||
CTRL-Z was typed inside Vim, not when the
|
||||
SIGSTOP or SIGTSTP signal was sent to Vim.
|
||||
*WinEnter*
|
||||
WinEnter After entering another window. Not done for
|
||||
the first window, when Vim has just started.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 8.2. Last change: 2020 Aug 15
|
||||
*change.txt* For Vim version 8.2. Last change: 2020 Nov 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1809,13 +1809,15 @@ found here: |sort()|, |uniq()|.
|
||||
|
||||
With [i] case is ignored.
|
||||
|
||||
With [l] sort uses the current locale. See
|
||||
`language collate` to check or set the locale used
|
||||
for ordering. For example, with "en_US.UTF8",
|
||||
Ö will be ordered after O and before P,
|
||||
whereas with the Swedish locale "sv_SE.UTF8",
|
||||
it will be after Z.
|
||||
Case is typically ignored by the locale.
|
||||
With [l] sort uses the current collation locale.
|
||||
Implementation details: strcoll() is used to compare
|
||||
strings. See |:language| to check or set the collation
|
||||
locale. Example: >
|
||||
:language collate en_US.UTF-8
|
||||
:%sort l
|
||||
< |v:collate| can also used to check the current locale.
|
||||
Sorting using the locale typically ignores case.
|
||||
This does not work properly on Mac.
|
||||
|
||||
Options [n][f][x][o][b] are mutually exclusive.
|
||||
|
||||
@@ -1850,6 +1852,8 @@ found here: |sort()|, |uniq()|.
|
||||
When /{pattern}/ is specified and there is no [r] flag
|
||||
the text matched with {pattern} is skipped, so that
|
||||
you sort on what comes after the match.
|
||||
'ignorecase' applies to the pattern, but 'smartcase'
|
||||
is not used.
|
||||
Instead of the slash any non-letter can be used.
|
||||
For example, to sort on the second comma-separated
|
||||
field: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Oct 23
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Dec 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1850,6 +1850,13 @@ v:dying Normally zero. When a deadly signal is caught it's set to
|
||||
< Note: if another deadly signal is caught when v:dying is one,
|
||||
VimLeave autocommands will not be executed.
|
||||
|
||||
*v:exiting* *exiting-variable*
|
||||
v:exiting Vim exit code. Normally zero, non-zero when something went
|
||||
wrong. The value is v:null before invoking the |VimLeavePre|
|
||||
and |VimLeave| autocmds. See |:q|, |:x| and |:cquit|.
|
||||
Example: >
|
||||
:au VimLeave * echo "Exit value is " .. v:exiting
|
||||
<
|
||||
*v:echospace* *echospace-variable*
|
||||
v:echospace Number of screen cells that can be used for an `:echo` message
|
||||
in the last screen line before causing the |hit-enter-prompt|.
|
||||
@@ -2669,8 +2676,9 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]])
|
||||
rhs of mapping {name} in mode {mode}
|
||||
mapcheck({name} [, {mode} [, {abbr}]])
|
||||
String check for mappings matching {name}
|
||||
mapset({mode}, {abbr}, {dict})
|
||||
none restore mapping from |maparg()| result
|
||||
mapnew({expr1}, {expr2}) List/Dict like |map()| but creates a new List
|
||||
or Dictionary
|
||||
mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result
|
||||
match({expr}, {pat} [, {start} [, {count}]])
|
||||
Number position where {pat} matches in {expr}
|
||||
matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
|
||||
@@ -3472,8 +3480,8 @@ byteidx({expr}, {nr}) *byteidx()*
|
||||
Return byte index of the {nr}'th character in the string
|
||||
{expr}. Use zero for the first character, it then returns
|
||||
zero.
|
||||
This function is only useful when there are multibyte
|
||||
characters, otherwise the returned value is equal to {nr}.
|
||||
If there are no multibyte characters the returned value is
|
||||
equal to {nr}.
|
||||
Composing characters are not counted separately, their byte
|
||||
length is added to the preceding base character. See
|
||||
|byteidxcomp()| below for counting composing characters
|
||||
@@ -3798,7 +3806,7 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
|
||||
not need to be the first letter: >
|
||||
confirm("file has been modified", "&Save\nSave &All")
|
||||
< For the console, the first letter of each choice is used as
|
||||
the default shortcut key.
|
||||
the default shortcut key. Case is ignored.
|
||||
|
||||
The optional {default} argument is the number of the choice
|
||||
that is made if the user hits <CR>. Use 1 to make the first
|
||||
@@ -4427,10 +4435,10 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
|
||||
|Dictionaries|.
|
||||
|
||||
If they are |Lists|: Append {expr2} to {expr1}.
|
||||
If {expr3} is given insert the items of {expr2} before item
|
||||
{expr3} in {expr1}. When {expr3} is zero insert before the
|
||||
first item. When {expr3} is equal to len({expr1}) then
|
||||
{expr2} is appended.
|
||||
If {expr3} is given insert the items of {expr2} before the
|
||||
item with index {expr3} in {expr1}. When {expr3} is zero
|
||||
insert before the first item. When {expr3} is equal to
|
||||
len({expr1}) then {expr2} is appended.
|
||||
Examples: >
|
||||
:echo sort(extend(mylist, [7, 5]))
|
||||
:call extend(mylist, [2, 3], 1)
|
||||
@@ -5051,9 +5059,9 @@ getbufvar({expr}, {varname} [, {def}]) *getbufvar()*
|
||||
The result is the value of option or local buffer variable
|
||||
{varname} in buffer {expr}. Note that the name without "b:"
|
||||
must be used.
|
||||
When {varname} is empty returns a dictionary with all the
|
||||
When {varname} is empty returns a |Dictionary| with all the
|
||||
buffer-local variables.
|
||||
When {varname} is equal to "&" returns a dictionary with all
|
||||
When {varname} is equal to "&" returns a |Dictionary| with all
|
||||
the buffer-local options.
|
||||
Otherwise, when {varname} starts with "&" returns the value of
|
||||
a buffer-local option.
|
||||
@@ -5525,8 +5533,8 @@ getloclist({nr} [, {what}]) *getloclist()*
|
||||
|location-list-file-window| for more
|
||||
details.
|
||||
|
||||
Returns a Dictionary with default values if there is no location
|
||||
list for the window {nr}.
|
||||
Returns a |Dictionary| with default values if there is no
|
||||
location list for the window {nr}.
|
||||
Returns an empty Dictionary if window {nr} does not exist.
|
||||
|
||||
Examples (See also |getqflist-examples|): >
|
||||
@@ -5639,7 +5647,7 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr}
|
||||
|
||||
|
||||
getqflist([{what}]) *getqflist()*
|
||||
Returns a list with all the current quickfix errors. Each
|
||||
Returns a |List| with all the current quickfix errors. Each
|
||||
list item is a dictionary with these entries:
|
||||
bufnr number of buffer that has the file name, use
|
||||
bufname() to get the name
|
||||
@@ -6987,9 +6995,14 @@ luaeval({expr} [, {expr}]) *luaeval()*
|
||||
< {only available when compiled with the |+lua| feature}
|
||||
|
||||
map({expr1}, {expr2}) *map()*
|
||||
{expr1} must be a |List| or a |Dictionary|.
|
||||
{expr1} must be a |List|, |Blob| or |Dictionary|.
|
||||
Replace each item in {expr1} with the result of evaluating
|
||||
{expr2}. {expr2} must be a |string| or |Funcref|.
|
||||
{expr2}. For a |Blob| each byte is replaced.
|
||||
If the item type changes you may want to use |mapnew()| to
|
||||
create a new List or Dictionary. This is required when using
|
||||
Vim9 script.
|
||||
|
||||
{expr2} must be a |string| or |Funcref|.
|
||||
|
||||
If {expr2} is a |string|, inside {expr2} |v:val| has the value
|
||||
of the current item. For a |Dictionary| |v:key| has the key
|
||||
@@ -7024,11 +7037,11 @@ map({expr1}, {expr2}) *map()*
|
||||
|Dictionary| to remain unmodified make a copy first: >
|
||||
:let tlist = map(copy(mylist), ' v:val . "\t"')
|
||||
|
||||
< Returns {expr1}, the |List| or |Dictionary| that was filtered.
|
||||
When an error is encountered while evaluating {expr2} no
|
||||
further items in {expr1} are processed. When {expr2} is a
|
||||
Funcref errors inside a function are ignored, unless it was
|
||||
defined with the "abort" flag.
|
||||
< Returns {expr1}, the |List|, |Blob| or |Dictionary| that was
|
||||
filtered. When an error is encountered while evaluating
|
||||
{expr2} no further items in {expr1} are processed. When
|
||||
{expr2} is a Funcref errors inside a function are ignored,
|
||||
unless it was defined with the "abort" flag.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mylist->map(expr2)
|
||||
@@ -7137,7 +7150,14 @@ mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
|
||||
GetKey()->mapcheck('n')
|
||||
|
||||
|
||||
mapset({mode}, {abbr}, {dict}) *mapset()*
|
||||
mapnew({expr1}, {expr2}) *mapnew()*
|
||||
Like |map()| but instead of replacing items in {expr1} a new
|
||||
List or Dictionary is created and returned. {expr1} remains
|
||||
unchanged. Items can still be changed by {expr2}, if you
|
||||
don't want that use |deepcopy()| first.
|
||||
|
||||
|
||||
mapset({mode}, {abbr}, {dict}) *mapset()*
|
||||
Restore a mapping from a dictionary returned by |maparg()|.
|
||||
{mode} and {abbr} should be the same as for the call to
|
||||
|maparg()|. *E460*
|
||||
@@ -7363,7 +7383,7 @@ matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
|
||||
|
||||
|
||||
matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
|
||||
If {list} is a list of strings, then returns a list with all
|
||||
If {list} is a list of strings, then returns a |List| with all
|
||||
the strings in {list} that fuzzy match {str}. The strings in
|
||||
the returned list are sorted based on the matching score.
|
||||
|
||||
@@ -7421,7 +7441,9 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
|
||||
matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
|
||||
Same as |matchfuzzy()|, but returns the list of matched
|
||||
strings and the list of character positions where characters
|
||||
in {str} matches.
|
||||
in {str} matches. You can use |byteidx()|to convert a
|
||||
character position to a byte position.
|
||||
|
||||
|
||||
If {str} matches multiple times in a string, then only the
|
||||
positions for the best match is returned.
|
||||
@@ -8319,15 +8341,18 @@ reg_recording() *reg_recording()*
|
||||
Returns an empty string when not recording. See |q|.
|
||||
|
||||
reltime([{start} [, {end}]]) *reltime()*
|
||||
Return an item that represents a time value. The format of
|
||||
the item depends on the system. It can be passed to
|
||||
|reltimestr()| to convert it to a string or |reltimefloat()|
|
||||
to convert to a Float.
|
||||
Without an argument it returns the current time.
|
||||
Return an item that represents a time value. The item is a
|
||||
list with items that depend on the system. In Vim 9 script
|
||||
list<any> can be used.
|
||||
The item can be passed to |reltimestr()| to convert it to a
|
||||
string or |reltimefloat()| to convert to a Float.
|
||||
|
||||
Without an argument reltime() returns the current time.
|
||||
With one argument is returns the time passed since the time
|
||||
specified in the argument.
|
||||
With two arguments it returns the time passed between {start}
|
||||
and {end}.
|
||||
|
||||
The {start} and {end} arguments must be values returned by
|
||||
reltime().
|
||||
|
||||
@@ -8645,6 +8670,7 @@ screencol() *screencol()*
|
||||
the following mappings: >
|
||||
nnoremap <expr> GG ":echom ".screencol()."\n"
|
||||
nnoremap <silent> GG :echom screencol()<CR>
|
||||
nnoremap GG <Cmd>echom screencol()<CR>
|
||||
<
|
||||
screenpos({winid}, {lnum}, {col}) *screenpos()*
|
||||
The result is a Dict with the screen position of the text
|
||||
@@ -8712,11 +8738,16 @@ search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
|
||||
|
||||
'ignorecase', 'smartcase' and 'magic' are used.
|
||||
|
||||
When the 'z' flag is not given, searching always starts in
|
||||
column zero and then matches before the cursor are skipped.
|
||||
When the 'c' flag is present in 'cpo' the next search starts
|
||||
after the match. Without the 'c' flag the next search starts
|
||||
one column further.
|
||||
When the 'z' flag is not given, forward searching always
|
||||
starts in column zero and then matches before the cursor are
|
||||
skipped. When the 'c' flag is present in 'cpo' the next
|
||||
search starts after the match. Without the 'c' flag the next
|
||||
search starts one column further. This matters for
|
||||
overlapping matches.
|
||||
When searching backwards and the 'z' flag is given then the
|
||||
search starts in column zero, thus no match in the current
|
||||
line will be found (unless wrapping around the end of the
|
||||
file).
|
||||
|
||||
When the {stopline} argument is given then the search stops
|
||||
after searching this line. This is useful to restrict the
|
||||
@@ -9700,15 +9731,25 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702*
|
||||
When {func} is given and it is '1' or 'i' then case is
|
||||
ignored.
|
||||
|
||||
When {func} is given and it is 'l' then the current locale
|
||||
is used for ordering. See `language collate` to check or set
|
||||
the locale used for ordering. For example, with "en_US.UTF8",
|
||||
Ö will be ordered after O and before P, whereas with the
|
||||
Swedish locale "sv_SE.UTF8", it will be after Z.
|
||||
Case is typically ignored by the locale.
|
||||
When {func} is given and it is 'l' then the current collation
|
||||
locale is used for ordering. Implementation details: strcoll()
|
||||
is used to compare strings. See |:language| check or set the
|
||||
collation locale. |v:collate| can also be used to check the
|
||||
current locale. Sorting using the locale typically ignores
|
||||
case. Example: >
|
||||
" ö is sorted similarly to o with English locale.
|
||||
:language collate en_US.UTF8
|
||||
:echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
|
||||
< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
|
||||
>
|
||||
" ö is sorted after z with Swedish locale.
|
||||
:language collate sv_SE.UTF8
|
||||
:echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
|
||||
< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
|
||||
This does not work properly on Mac.
|
||||
|
||||
When {func} is given and it is 'n' then all items will be
|
||||
sorted numerical (Implementation detail: This uses the
|
||||
sorted numerical (Implementation detail: this uses the
|
||||
strtod() function to parse numbers, Strings, Lists, Dicts and
|
||||
Funcrefs will be considered as being 0).
|
||||
|
||||
@@ -10620,7 +10661,7 @@ tagfiles() Returns a |List| with the file names used to search for tags
|
||||
|
||||
|
||||
taglist({expr} [, {filename}]) *taglist()*
|
||||
Returns a list of tags matching the regular expression {expr}.
|
||||
Returns a |List| of tags matching the regular expression {expr}.
|
||||
|
||||
If {filename} is passed it is used to prioritize the results
|
||||
in the same way that |:tselect| does. See |tag-priority|.
|
||||
@@ -10712,7 +10753,7 @@ term_ functions are documented here: |terminal-function-details|
|
||||
|
||||
|
||||
terminalprops() *terminalprops()*
|
||||
Returns a dictionary with properties of the terminal that Vim
|
||||
Returns a |Dictionary| with properties of the terminal that Vim
|
||||
detected from the response to |t_RV| request. See
|
||||
|v:termresponse| for the response itself. If |v:termresponse|
|
||||
is empty most values here will be 'u' for unknown.
|
||||
@@ -11119,7 +11160,7 @@ win_execute({id}, {command} [, {silent}]) *win_execute()*
|
||||
GetCommand()->win_execute(winid)
|
||||
|
||||
win_findbuf({bufnr}) *win_findbuf()*
|
||||
Returns a list with |window-ID|s for windows that contain
|
||||
Returns a |List| with |window-ID|s for windows that contain
|
||||
buffer {bufnr}. When there is none the list is empty.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
@@ -11593,7 +11634,7 @@ menu Compiled with support for |:menu|.
|
||||
mksession Compiled with support for |:mksession|.
|
||||
modify_fname Compiled with file name modifiers. |filename-modifiers|
|
||||
(always true)
|
||||
mouse Compiled with support mouse.
|
||||
mouse Compiled with support for mouse.
|
||||
mouse_dec Compiled with support for Dec terminal mouse.
|
||||
mouse_gpm Compiled with support for gpm (Linux console mouse)
|
||||
mouse_gpm_enabled GPM mouse is working
|
||||
|
||||
@@ -563,16 +563,15 @@ Local mappings:
|
||||
|
||||
MAN *ft-man-plugin* *:Man* *man.vim*
|
||||
|
||||
Displays a manual page in a nice way. Also see the user manual
|
||||
|find-manpage|.
|
||||
|
||||
To start using the ":Man" command before any manual page was loaded, source
|
||||
this script from your startup vimrc file: >
|
||||
This plugin displays a manual page in a nice way. See |find-manpage| in the
|
||||
user manual for more information.
|
||||
|
||||
To start using the |:Man| command before any manual page has been loaded,
|
||||
source this script from your startup |vimrc| file: >
|
||||
runtime ftplugin/man.vim
|
||||
|
||||
Options:
|
||||
'iskeyword' the '.' character is added to be able to use CTRL-] on the
|
||||
'iskeyword' The '.' character is added to support the use of CTRL-] on the
|
||||
manual page name.
|
||||
|
||||
Commands:
|
||||
@@ -582,24 +581,25 @@ Man {number} {name}
|
||||
|
||||
Global mapping:
|
||||
<Leader>K Displays the manual page for the word under the cursor.
|
||||
<Plug>ManPreGetPage idem, allows for using a mapping: >
|
||||
nmap <F1> <Plug>ManPreGetPage<CR>
|
||||
<Plug>ManPreGetPage
|
||||
idem, allows for using a mapping: >
|
||||
nmap <F1> <Plug>ManPreGetPage
|
||||
|
||||
Local mappings:
|
||||
CTRL-] Jump to the manual page for the word under the cursor.
|
||||
CTRL-T Jump back to the previous manual page.
|
||||
q Same as ":quit"
|
||||
q Same as the |:quit| command.
|
||||
|
||||
To use a vertical split instead of horizontal: >
|
||||
let g:ft_man_open_mode = 'vert'
|
||||
To use a new tab: >
|
||||
let g:ft_man_open_mode = 'tab'
|
||||
|
||||
To enable folding use this: >
|
||||
let g:ft_man_folding_enable = 1
|
||||
If you do not like the default folding, use an autocommand to add your desired
|
||||
To enable |folding|, use this: >
|
||||
let g:ft_man_folding_enable = 1
|
||||
If you do not like the default folding, use an |autocommand| to add your desired
|
||||
folding style instead. For example: >
|
||||
autocmd FileType man setlocal foldmethod=indent foldenable
|
||||
autocmd FileType man setlocal foldmethod=indent foldenable
|
||||
|
||||
If you would like :Man {number} {name} to behave like man {number} {name} by
|
||||
not running man {name} if no page is found, then use this: >
|
||||
@@ -612,7 +612,7 @@ page in a Vim window: >
|
||||
|
||||
MANPAGER *manpager.vim*
|
||||
|
||||
The :Man command allows you to turn Vim into a manpager (that syntax highlights
|
||||
The |:Man| command allows you to turn Vim into a manpager (that syntax highlights
|
||||
manpages and follows linked manpages on hitting CTRL-]).
|
||||
|
||||
For bash,zsh,ksh or dash, add to the config file (.bashrc,.zshrc, ...)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*helphelp.txt* For Vim version 8.2. Last change: 2020 Jul 27
|
||||
*helphelp.txt* For Vim version 8.2. Last change: 2020 Dec 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -161,6 +161,25 @@ files in the directories specified in the 'runtimepath' option.
|
||||
The initial height of the help window can be set with the 'helpheight' option
|
||||
(default 20).
|
||||
|
||||
When the help buffer is created, several local options are set to make sure
|
||||
the help text is displayed as it was intended:
|
||||
'iskeyword' nearly all ASCII chars except ' ', '*', '"' and '|'
|
||||
'foldmethod' "manual"
|
||||
'tabstop' 8
|
||||
'arabic' off
|
||||
'binary' off
|
||||
'buflisted' off
|
||||
'cursorbind' off
|
||||
'diff' off
|
||||
'foldenable' off
|
||||
'list' off
|
||||
'modifiable' off
|
||||
'number' off
|
||||
'relativenumber' off
|
||||
'rightleft' off
|
||||
'scrollbind' off
|
||||
'spell' off
|
||||
|
||||
Jump to specific subjects by using tags. This can be done in two ways:
|
||||
- Use the "CTRL-]" command while standing on the name of a command or option.
|
||||
This only works when the tag is a keyword. "<C-Leftmouse>" and
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 8.2. Last change: 2020 Oct 07
|
||||
*map.txt* For Vim version 8.2. Last change: 2020 Dec 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -271,7 +271,7 @@ For this reason the following is blocked:
|
||||
- The |:normal| command.
|
||||
- Moving the cursor is allowed, but it is restored afterwards.
|
||||
If you want the mapping to do any of these let the returned characters do
|
||||
that.
|
||||
that, or use a |<Cmd>| mapping instead.
|
||||
|
||||
You can use getchar(), it consumes typeahead if there is any. E.g., if you
|
||||
have these mappings: >
|
||||
@@ -303,6 +303,43 @@ empty string, so that nothing is inserted.
|
||||
Note that using 0x80 as a single byte before other text does not work, it will
|
||||
be seen as a special key.
|
||||
|
||||
*<Cmd>* *:map-cmd*
|
||||
The special text <Cmd> begins a "command mapping", it executes the command
|
||||
directly without changing modes. Where you might use ":...<CR>" in the
|
||||
{rhs} of a mapping, you can instead use "<Cmd>...<CR>".
|
||||
Example: >
|
||||
noremap x <Cmd>echo mode(1)<CR>
|
||||
<
|
||||
This is more flexible than `:<C-U>` in Visual and Operator-pending mode, or
|
||||
`<C-O>:` in Insert mode, because the commands are executed directly in the
|
||||
current mode, instead of always going to Normal mode. Visual mode is
|
||||
preserved, so tricks with |gv| are not needed. Commands can be invoked
|
||||
directly in Command-line mode (which would otherwise require timer hacks).
|
||||
Example of using <Cmd> halfway Insert mode: >
|
||||
nnoremap <F3> aText <Cmd>echo mode(1)<CR> Added<Esc>
|
||||
|
||||
Unlike <expr> mappings, there are no special restrictions on the <Cmd>
|
||||
command: it is executed as if an (unrestricted) |autocommand| was invoked.
|
||||
|
||||
Note:
|
||||
- Because <Cmd> avoids mode-changes it does not trigger |CmdlineEnter| and
|
||||
|CmdlineLeave| events, because no user interaction is expected.
|
||||
- For the same reason, |keycodes| like <C-R><C-W> are interpreted as plain,
|
||||
unmapped keys.
|
||||
- The command is not echo'ed, no need for <silent>.
|
||||
- In Visual mode you can use `line('v')` and `col('v')` to get one end of the
|
||||
Visual area, the cursor is at the other end.
|
||||
- In Select mode, |:map| and |:vmap| command mappings are executed in
|
||||
Visual mode. Use |:smap| to handle Select mode differently.
|
||||
|
||||
*E1135* *E1136*
|
||||
<Cmd> commands must terminate, that is, they must be followed by <CR> in the
|
||||
{rhs} of the mapping definition. |Command-line| mode is never entered.
|
||||
|
||||
*E1137*
|
||||
<Cmd> commands can have only normal characters and cannot contain special
|
||||
characters like function keys.
|
||||
|
||||
|
||||
1.3 MAPPING AND MODES *:map-modes*
|
||||
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
|
||||
@@ -872,7 +909,7 @@ Insert mode to avoid every key with a modifier causing Insert mode to end.
|
||||
1.12 MAPPING AN OPERATOR *:map-operator*
|
||||
|
||||
An operator is used before a {motion} command. To define your own operator
|
||||
you must create mapping that first sets the 'operatorfunc' option and then
|
||||
you must create a mapping that first sets the 'operatorfunc' option and then
|
||||
invoke the |g@| operator. After the user types the {motion} command the
|
||||
specified function will be called.
|
||||
|
||||
@@ -1204,9 +1241,9 @@ Otherwise, using "<SID>" outside of a script context is an error.
|
||||
|
||||
If you need to get the script number to use in a complicated script, you can
|
||||
use this function: >
|
||||
function s:SID()
|
||||
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
|
||||
endfun
|
||||
func s:ScriptNumber()
|
||||
return matchstr(expand('<SID>'), '<SNR>\zs\d\+\ze_')
|
||||
endfunc
|
||||
|
||||
The "<SNR>" will be shown when listing functions and mappings. This is useful
|
||||
to find out what they are defined to.
|
||||
@@ -1284,15 +1321,15 @@ last defined. Example: >
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
*E174* *E182*
|
||||
:com[mand][!] [{attr}...] {cmd} {rep}
|
||||
:com[mand][!] [{attr}...] {cmd} {repl}
|
||||
Define a user command. The name of the command is
|
||||
{cmd} and its replacement text is {rep}. The command's
|
||||
attributes (see below) are {attr}. If the command
|
||||
already exists, an error is reported, unless a ! is
|
||||
specified, in which case the command is redefined.
|
||||
There is one exception: When sourcing a script again,
|
||||
a command that was previously defined in that script
|
||||
will be silently replaced.
|
||||
{cmd} and its replacement text is {repl}. The
|
||||
command's attributes (see below) are {attr}. If the
|
||||
command already exists, an error is reported, unless a
|
||||
! is specified, in which case the command is
|
||||
redefined. There is one exception: When sourcing a
|
||||
script again, a command that was previously defined in
|
||||
that script will be silently replaced.
|
||||
|
||||
|
||||
:delc[ommand] {cmd} *:delc* *:delcommand* *E184*
|
||||
@@ -1502,11 +1539,11 @@ feature. Use the full name for new scripts.
|
||||
|
||||
Replacement text ~
|
||||
|
||||
The replacement text for a user defined command is scanned for special escape
|
||||
sequences, using <...> notation. Escape sequences are replaced with values
|
||||
from the entered command line, and all other text is copied unchanged. The
|
||||
resulting string is executed as an Ex command. To avoid the replacement use
|
||||
<lt> in place of the initial <. Thus to include "<bang>" literally use
|
||||
The replacement text {repl} for a user defined command is scanned for special
|
||||
escape sequences, using <...> notation. Escape sequences are replaced with
|
||||
values from the entered command line, and all other text is copied unchanged.
|
||||
The resulting string is executed as an Ex command. To avoid the replacement
|
||||
use <lt> in place of the initial <. Thus to include "<bang>" literally use
|
||||
"<lt>bang>".
|
||||
|
||||
The valid escape sequences are
|
||||
@@ -1632,6 +1669,11 @@ errors and the "update" command to write modified buffers): >
|
||||
This will invoke: >
|
||||
:call Allargs("%s/foo/bar/ge|update")
|
||||
<
|
||||
If the command is defined in Vim9 script (a script that starts with
|
||||
`:vim9script` and in a `:def` function) then {repl} will be executed as in Vim9
|
||||
script. Thus this depends on where the command is defined, not where it is
|
||||
used.
|
||||
|
||||
When defining a user command in a script, it will be able to call functions
|
||||
local to the script and use mappings local to the script. When the user
|
||||
invokes the user command, it will run in the context of the script it was
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*netbeans.txt* For Vim version 8.2. Last change: 2020 Aug 15
|
||||
*netbeans.txt* For Vim version 8.2. Last change: 2020 Nov 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur et al.
|
||||
@@ -562,9 +562,10 @@ setModtime time
|
||||
saved directly by the Vim Controller.
|
||||
New in version 2.3.
|
||||
|
||||
setReadOnly
|
||||
Set a file as readonly
|
||||
Implemented in version 2.3.
|
||||
setReadOnly readonly
|
||||
When the boolean argument "readonly" is "T" for True, mark the
|
||||
buffer as readonly, when it is "F" for False, mark it as not
|
||||
readonly. Implemented in version 2.3.
|
||||
|
||||
setStyle Not implemented.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 8.2. Last change: 2020 Sep 01
|
||||
*pattern.txt* For Vim version 8.2. Last change: 2020 Dec 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -361,8 +361,8 @@ For starters, read chapter 27 of the user manual |usr_27.txt|.
|
||||
*/atom*
|
||||
5. An atom can be one of a long list of items. Many atoms match one character
|
||||
in the text. It is often an ordinary character or a character class.
|
||||
Braces can be used to make a pattern into an atom. The "\z(\)" construct
|
||||
is only for syntax highlighting.
|
||||
Parentheses can be used to make a pattern into an atom. The "\z(\)"
|
||||
construct is only for syntax highlighting.
|
||||
|
||||
atom ::= ordinary-atom |/ordinary-atom|
|
||||
or \( pattern \) |/\(|
|
||||
@@ -676,7 +676,7 @@ overview.
|
||||
|
||||
Note that using "\&" works the same as using "\@=": "foo\&.." is the
|
||||
same as "\(foo\)\@=..". But using "\&" is easier, you don't need the
|
||||
braces.
|
||||
parentheses.
|
||||
|
||||
|
||||
*/\@!*
|
||||
@@ -1069,8 +1069,8 @@ x A single character, with no special meaning, matches itself
|
||||
|
||||
[] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection*
|
||||
\_[]
|
||||
A collection. This is a sequence of characters enclosed in brackets.
|
||||
It matches any single character in the collection.
|
||||
A collection. This is a sequence of characters enclosed in square
|
||||
brackets. It matches any single character in the collection.
|
||||
Example matches ~
|
||||
[xyz] any 'x', 'y' or 'z'
|
||||
[a-zA-Z]$ any alphabetic character at the end of a line
|
||||
@@ -1129,11 +1129,12 @@ x A single character, with no special meaning, matches itself
|
||||
*[:ident:]* [:ident:] identifier character (same as "\i")
|
||||
*[:keyword:]* [:keyword:] keyword character (same as "\k")
|
||||
*[:fname:]* [:fname:] file name character (same as "\f")
|
||||
The brackets in character class expressions are additional to the
|
||||
brackets delimiting a collection. For example, the following is a
|
||||
plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is,
|
||||
a list of at least one character, each of which is either '-', '.',
|
||||
'/', alphabetic, numeric, '_' or '~'.
|
||||
The square brackets in character class expressions are additional to
|
||||
the square brackets delimiting a collection. For example, the
|
||||
following is a plausible pattern for a UNIX filename:
|
||||
"[-./[:alnum:]_~]\+". That is, a list of at least one character,
|
||||
each of which is either '-', '.', '/', alphabetic, numeric, '_' or
|
||||
'~'.
|
||||
These items only work for 8-bit characters, except [:lower:] and
|
||||
[:upper:] also work for multibyte characters when using the new
|
||||
regexp engine. See |two-engines|. In the future these items may
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 8.2. Last change: 2020 Oct 17
|
||||
*popup.txt* For Vim version 8.2. Last change: 2020 Nov 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -101,7 +101,7 @@ CLOSING THE POPUP WINDOW *popup-close*
|
||||
|
||||
Normally the plugin that created the popup window is also in charge of closing
|
||||
it. If somehow a popup hangs around, you can close all of them with: >
|
||||
call popup_clear()
|
||||
call popup_clear(1)
|
||||
Some popups, such as notifications, close after a specified time. This can be
|
||||
set with the "time" property on `popup_create()`.
|
||||
Otherwise, a popup can be closed by clicking on the X in the top-right corner
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*sign.txt* For Vim version 8.2. Last change: 2020 Aug 31
|
||||
*sign.txt* For Vim version 8.2. Last change: 2020 Oct 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur
|
||||
@@ -81,6 +81,10 @@ on the same line, the attributes of the sign with the highest priority is used
|
||||
independently of the sign group. The default priority for a sign is 10. The
|
||||
priority is assigned at the time of placing a sign.
|
||||
|
||||
When two signs with the same priority are present, and one has an icon or text
|
||||
in the signcolumn while the other has line highlighting, then both are
|
||||
displayed.
|
||||
|
||||
When the line on which the sign is placed is deleted, the sign is moved to the
|
||||
next line (or the last line of the buffer, if there is no next line). When
|
||||
the delete is undone the sign does not move back.
|
||||
@@ -458,11 +462,11 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
|
||||
entries
|
||||
|
||||
The dictionary for each sign contains the following entries:
|
||||
group sign group. Set to '' for the global group.
|
||||
id identifier of the sign
|
||||
lnum line number where the sign is placed
|
||||
name name of the defined sign
|
||||
priority sign priority
|
||||
group sign group. Set to '' for the global group.
|
||||
id identifier of the sign
|
||||
lnum line number where the sign is placed
|
||||
name name of the defined sign
|
||||
priority sign priority
|
||||
|
||||
The returned signs in a buffer are ordered by their line
|
||||
number and priority.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 8.2. Last change: 2020 Aug 15
|
||||
*syntax.txt* For Vim version 8.2. Last change: 2020 Dec 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -3006,7 +3006,7 @@ vimrc file: >
|
||||
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
|
||||
|
||||
|
||||
*ft-posix-synax* *ft-dash-syntax*
|
||||
*ft-posix-syntax* *ft-dash-syntax*
|
||||
SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
|
||||
|
||||
This covers syntax highlighting for the older Unix (Bourne) sh, and newer
|
||||
@@ -3183,6 +3183,7 @@ redrawing can become slow.
|
||||
|
||||
|
||||
TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
|
||||
*syntax-tex* *syntax-latex*
|
||||
|
||||
Tex Contents~
|
||||
Tex: Want Syntax Folding? |tex-folding|
|
||||
@@ -3199,6 +3200,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
|
||||
Tex: Selective Conceal Mode |g:tex_conceal|
|
||||
Tex: Controlling iskeyword |g:tex_isk|
|
||||
Tex: Fine Subscript and Superscript Control |tex-supersub|
|
||||
Tex: Match Check Control |tex-matchcheck|
|
||||
|
||||
*tex-folding* *g:tex_fold_enabled*
|
||||
Tex: Want Syntax Folding? ~
|
||||
@@ -3422,6 +3424,22 @@ syntax highlighting script handles this with the following logic:
|
||||
< in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable
|
||||
utf-8 glyphs appear.
|
||||
|
||||
*tex-matchcheck* *g:tex_matchcheck*
|
||||
Tex: Match Check Control~
|
||||
|
||||
Sometimes one actually wants mismatched parentheses, square braces,
|
||||
and or curly braces; for example, \text{(1,10] is a range from but
|
||||
not including 1 to and including 10}. This wish, of course, conflicts
|
||||
with the desire to provide delimiter mismatch detection. To
|
||||
accommodate these conflicting goals, syntax/tex.vim provides >
|
||||
g:tex_matchcheck = '[({[]'
|
||||
< which is shown along with its default setting. So, if one doesn't
|
||||
want [] and () to be checked for mismatches, try using >
|
||||
let g:tex_matchcheck= '[{}]'
|
||||
< If you don't want matching to occur inside bold and italicized
|
||||
regions, >
|
||||
let g:tex_excludematcher= 1
|
||||
< will prevent the texMatcher group from being included in those regions.
|
||||
|
||||
TF *tf.vim* *ft-tf-syntax*
|
||||
|
||||
@@ -5305,6 +5323,12 @@ If you like Question highlighting for C comments, put this in your vimrc file: >
|
||||
Without the "default" in the C syntax file, the highlighting would be
|
||||
overruled when the syntax file is loaded.
|
||||
|
||||
To have a link survive `:highlight clear`, which is useful if you have
|
||||
highlighting for a specific filetype and you want to keep it when selecting
|
||||
another color scheme, put a command like this in the
|
||||
"after/syntax/{filetype}.vim" file: >
|
||||
highlight! default link cComment Question
|
||||
|
||||
==============================================================================
|
||||
15. Cleaning up *:syn-clear* *E391*
|
||||
|
||||
|
||||
@@ -2125,6 +2125,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:bad windows.txt /*:bad*
|
||||
:badd windows.txt /*:badd*
|
||||
:ball windows.txt /*:ball*
|
||||
:balt windows.txt /*:balt*
|
||||
:bar cmdline.txt /*:bar*
|
||||
:bd windows.txt /*:bd*
|
||||
:bdel windows.txt /*:bdel*
|
||||
@@ -2724,6 +2725,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:map-<unique> map.txt /*:map-<unique>*
|
||||
:map-alt-keys map.txt /*:map-alt-keys*
|
||||
:map-arguments map.txt /*:map-arguments*
|
||||
:map-cmd map.txt /*:map-cmd*
|
||||
:map-commands map.txt /*:map-commands*
|
||||
:map-expression map.txt /*:map-expression*
|
||||
:map-local map.txt /*:map-local*
|
||||
@@ -3506,6 +3508,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
<CSI> intro.txt /*<CSI>*
|
||||
<Char-> map.txt /*<Char->*
|
||||
<Char> map.txt /*<Char>*
|
||||
<Cmd> map.txt /*<Cmd>*
|
||||
<CursorHold> autocmd.txt /*<CursorHold>*
|
||||
<D- intro.txt /*<D-*
|
||||
<D-c> os_mac.txt /*<D-c>*
|
||||
@@ -3923,6 +3926,9 @@ E1112 eval.txt /*E1112*
|
||||
E1113 eval.txt /*E1113*
|
||||
E112 eval.txt /*E112*
|
||||
E113 eval.txt /*E113*
|
||||
E1135 map.txt /*E1135*
|
||||
E1136 map.txt /*E1136*
|
||||
E1137 map.txt /*E1137*
|
||||
E114 eval.txt /*E114*
|
||||
E115 eval.txt /*E115*
|
||||
E116 eval.txt /*E116*
|
||||
@@ -6249,6 +6255,7 @@ exepath() eval.txt /*exepath()*
|
||||
exim starting.txt /*exim*
|
||||
exists() eval.txt /*exists()*
|
||||
exiting starting.txt /*exiting*
|
||||
exiting-variable eval.txt /*exiting-variable*
|
||||
exp() eval.txt /*exp()*
|
||||
expand() eval.txt /*expand()*
|
||||
expand-env options.txt /*expand-env*
|
||||
@@ -6549,7 +6556,7 @@ ft-php-syntax syntax.txt /*ft-php-syntax*
|
||||
ft-php3-syntax syntax.txt /*ft-php3-syntax*
|
||||
ft-phtml-syntax syntax.txt /*ft-phtml-syntax*
|
||||
ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax*
|
||||
ft-posix-synax syntax.txt /*ft-posix-synax*
|
||||
ft-posix-syntax syntax.txt /*ft-posix-syntax*
|
||||
ft-postscr-syntax syntax.txt /*ft-postscr-syntax*
|
||||
ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax*
|
||||
ft-printcap-syntax syntax.txt /*ft-printcap-syntax*
|
||||
@@ -6856,6 +6863,7 @@ g:tex_fast syntax.txt /*g:tex_fast*
|
||||
g:tex_flavor filetype.txt /*g:tex_flavor*
|
||||
g:tex_fold_enabled syntax.txt /*g:tex_fold_enabled*
|
||||
g:tex_isk syntax.txt /*g:tex_isk*
|
||||
g:tex_matchcheck syntax.txt /*g:tex_matchcheck*
|
||||
g:tex_no_error syntax.txt /*g:tex_no_error*
|
||||
g:tex_nospell syntax.txt /*g:tex_nospell*
|
||||
g:tex_stylish syntax.txt /*g:tex_stylish*
|
||||
@@ -7745,6 +7753,7 @@ mapmode-s map.txt /*mapmode-s*
|
||||
mapmode-t map.txt /*mapmode-t*
|
||||
mapmode-v map.txt /*mapmode-v*
|
||||
mapmode-x map.txt /*mapmode-x*
|
||||
mapnew() eval.txt /*mapnew()*
|
||||
mapping map.txt /*mapping*
|
||||
mapping-functions usr_41.txt /*mapping-functions*
|
||||
mapset() eval.txt /*mapset()*
|
||||
@@ -9167,8 +9176,10 @@ synstack() eval.txt /*synstack()*
|
||||
syntax syntax.txt /*syntax*
|
||||
syntax-functions usr_41.txt /*syntax-functions*
|
||||
syntax-highlighting syntax.txt /*syntax-highlighting*
|
||||
syntax-latex syntax.txt /*syntax-latex*
|
||||
syntax-loading syntax.txt /*syntax-loading*
|
||||
syntax-printing usr_06.txt /*syntax-printing*
|
||||
syntax-tex syntax.txt /*syntax-tex*
|
||||
syntax.txt syntax.txt /*syntax.txt*
|
||||
syntax_cmd syntax.txt /*syntax_cmd*
|
||||
sys-file-list help.txt /*sys-file-list*
|
||||
@@ -9603,6 +9614,7 @@ tex-cole syntax.txt /*tex-cole*
|
||||
tex-conceal syntax.txt /*tex-conceal*
|
||||
tex-error syntax.txt /*tex-error*
|
||||
tex-folding syntax.txt /*tex-folding*
|
||||
tex-matchcheck syntax.txt /*tex-matchcheck*
|
||||
tex-math syntax.txt /*tex-math*
|
||||
tex-morecommands syntax.txt /*tex-morecommands*
|
||||
tex-nospell syntax.txt /*tex-nospell*
|
||||
@@ -9780,6 +9792,7 @@ v:errmsg eval.txt /*v:errmsg*
|
||||
v:errors eval.txt /*v:errors*
|
||||
v:event eval.txt /*v:event*
|
||||
v:exception eval.txt /*v:exception*
|
||||
v:exiting eval.txt /*v:exiting*
|
||||
v:false eval.txt /*v:false*
|
||||
v:fcs_choice eval.txt /*v:fcs_choice*
|
||||
v:fcs_reason eval.txt /*v:fcs_reason*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2020 Sep 04
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2020 Nov 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -123,12 +123,14 @@ use |:tlmenu| instead of |:tmenu|.
|
||||
|
||||
*options-in-terminal*
|
||||
After opening the terminal window and setting 'buftype' to "terminal" the
|
||||
TerminalOpen autocommand event is triggered. This makes it possible to set
|
||||
options specifically for the window and buffer. Example: >
|
||||
au TerminalOpen * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
|
||||
The <abuf> is set to the terminal buffer, but if there is no window (hidden
|
||||
terminal) then setting options will happen in the wrong buffer, therefore the
|
||||
check for &buftype in the example.
|
||||
|TerminalWinOpen| autocommand event is triggered. This makes it possible to set
|
||||
options specifically for the terminal window and buffer. Example: >
|
||||
au TerminalWinOpen * setlocal bufhidden=hide
|
||||
|
||||
There is also the |TerminalOpen| event, but this may be triggered for a hidden
|
||||
terminal, and the current window and buffer may not be for the new terminal.
|
||||
You need to use <abuf>, which is set to the terminal buffer. Example: >
|
||||
au TerminalOpen * call setbufvar(+expand('<abuf>'), '&colorcolumn', 123)
|
||||
|
||||
Mouse events (click and drag) are passed to the terminal. Mouse move events
|
||||
are only passed when Vim itself is receiving them. For a terminal that is
|
||||
@@ -503,6 +505,8 @@ term_dumpdiff({filename}, {filename} [, {options}])
|
||||
a different attribute
|
||||
+ missing position in first file
|
||||
- missing position in second file
|
||||
> cursor position in first file, not in second
|
||||
< cursor position in second file, not in first
|
||||
|
||||
Using the "s" key the top and bottom parts are swapped. This
|
||||
makes it easy to spot a difference.
|
||||
@@ -1411,16 +1415,18 @@ If you don't want this then disable it with: >
|
||||
|
||||
Vim window width *termdebug_wide*
|
||||
|
||||
To change the width of the Vim window when debugging starts, and use a
|
||||
vertical split: >
|
||||
let g:termdebug_wide = 163
|
||||
This will set &columns to 163 when `:Termdebug` is used. The value is restored
|
||||
when quitting the debugger.
|
||||
If g:termdebug_wide is set and &columns is already larger than
|
||||
g:termdebug_wide then a vertical split will be used without changing &columns.
|
||||
Set it to 1 to get a vertical split without every changing &columns (useful
|
||||
for when the terminal can't be resized by Vim).
|
||||
To change the width of the Vim window when debugging starts and use a vertical
|
||||
split: >
|
||||
let g:termdebug_wide = 163
|
||||
|
||||
This will set 'columns' to 163 when `:Termdebug` is used. The value is
|
||||
restored when quitting the debugger.
|
||||
|
||||
If g:termdebug_wide is set and 'columns' is already a greater value, then a
|
||||
vertical split will be used without modifying 'columns'.
|
||||
|
||||
Set g:termdebug_wide to 1 to use a vertical split without ever changing
|
||||
'columns'. This is useful when the terminal can't be resized by Vim.
|
||||
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 Oct 26
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 Dec 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -38,37 +38,16 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Sign highlight in signcolumn disappears if there is line highlighting.
|
||||
|
||||
Making everything work:
|
||||
- Test all command modifiers.
|
||||
- Check many more builtin function arguments at compile time.
|
||||
- Closure arguments should be more strict, like any function call?
|
||||
- Invoke user command in a :def function
|
||||
- Make map() give an error if the resulting type is wrong.
|
||||
Add mapnew() or mapcopy() to create a new List/Dict for the result, which
|
||||
can have a different value type.
|
||||
- Error message for "'yes && 0" is "using String as a Number", should be "using
|
||||
String as a Bool".
|
||||
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
|
||||
- In autocmd: use legacy syntax, not whatever the current script uses?
|
||||
- need to check type when a declaration specifies a type: #6507
|
||||
let nr: number = 'asdf'
|
||||
- Make sure that in vim9script a function call without namespace only finds
|
||||
the script-local function, not a global one.
|
||||
- Make sure that where a callback is expected a function can be used (without
|
||||
quotes). E.g. sort() and map(). Also at the script level.
|
||||
- assignment to more complex lval: list[1][2][3] = 8
|
||||
Also "list[0] += value". test in Test_assign_dict_unknown_type().
|
||||
- ":put" with ISN_PUT does not handle range correctly, e.g. ":$-2put".
|
||||
Add command to parse range at runtime?
|
||||
- When defining an :autocmd or :command, how to specify using Vim9 syntax?
|
||||
- always do this when defined in a Vim9 script
|
||||
- add some command modifier.
|
||||
- For an :autocmd and :command argument, if a following line starts with "|"
|
||||
append it. It's like line continuation. (#6702)
|
||||
Vim9 - Make everything work:
|
||||
- For an :autocmd and :command argument defined in Vim9 script, if a following
|
||||
line starts with "|" append it. It's like line continuation. (#6702)
|
||||
- The syntax of a range list[a:b] is ambiguous, is this one "a:b" variable or
|
||||
a range from "a" to "b"? To avoid confusion, require white space before
|
||||
(and after) the colon? #7409
|
||||
- Implement "export {one, two three}".
|
||||
- ISN_CHECKTYPE could use check_argtype()
|
||||
- Using a script variable inside a :def function doesn't work if the variable
|
||||
is inside a block, see Test_nested_function(). Should it work?
|
||||
- give error for variable name:
|
||||
let p = function('NoSuchFunc')
|
||||
- If a :def function is called with a function reference, compile it to get
|
||||
@@ -78,22 +57,27 @@ Making everything work:
|
||||
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
|
||||
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
|
||||
- Expand `=expr` in :mkspell
|
||||
- Test that a function defined inside a :def function is local to that
|
||||
function, g: functions can be defined and script-local functions cannot be
|
||||
defined.
|
||||
- Does this work already: can use func as reference:
|
||||
def SomeFunc() ...
|
||||
map(list, SomeFunc)
|
||||
- For builtin functions using tv_get_string*() use check_for_string() to be
|
||||
more strict about the argument type.
|
||||
- Support passing v:none to use the default argument value. (#6504)
|
||||
- Make map() give an error if the resulting type of the first argument is
|
||||
wrong. Only works if the type is known? Is this slow (need to go over all
|
||||
items)?
|
||||
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
|
||||
- Check many more builtin function arguments at compile time.
|
||||
- make 0 == 'string' fail on the script level, like inside :def.
|
||||
- Check that when using a user function name without prefix, it does not find
|
||||
a global function. Prefixing g: is required.
|
||||
- Compile: for [key, value] in items(map)
|
||||
- Assignment to dict doesn't work:
|
||||
let ret: dict<string> = #{}
|
||||
ret[i] = string(i)
|
||||
- Appending to dict item doesn't work:
|
||||
let d[i] ..= value
|
||||
- Need the equivalent of get_lval() and set_var_lval() to implement assignment
|
||||
to nested list and dict members.
|
||||
- Assignment to dict doesn't work:
|
||||
let ret: dict<string> = #{}
|
||||
ret[i] = string(i)
|
||||
- Appending to dict item doesn't work:
|
||||
let d[i] ..= value
|
||||
- Using ".." at script level doesn't convert arguments to a string.
|
||||
- Compile replacement of :s command: s/pat/\=expr/
|
||||
- Compile redir to local variable: var_redir_start().
|
||||
@@ -112,11 +96,11 @@ Making everything work:
|
||||
- expandcmd() with `=expr` in filename uses legacy expression.
|
||||
- eval_expr() in ex_cexpr()
|
||||
- eval_expr() call in dbg_parsearg() and debuggy_find()
|
||||
- has() is compiled as a constant, but some checks are dynamic.
|
||||
Check for dynamic values, such as "gui_running".
|
||||
New syntax and functionality:
|
||||
Improve error checking:
|
||||
- "echo Func()" is an error if Func() does not return anything.
|
||||
Before launch:
|
||||
- Add all the error numbers in a good place in documentation.
|
||||
- In the generic eval docs, point out the Vim9 syntax where it differs.
|
||||
Also:
|
||||
- For range: make table of first ASCII character with flag to quickly check if
|
||||
it can be a Vim9 command. E.g. "+" can, but "." can't.
|
||||
@@ -128,15 +112,16 @@ Also:
|
||||
- Test each level of expressions properly, with type checking
|
||||
- Test try/catch and throw better, also nested.
|
||||
Test return inside try/finally jumps to finally and then returns.
|
||||
- Test: Function declared inside a :def function is local, disappears at the
|
||||
end of the function. Unless g: is used, just like with variables.
|
||||
- Test that a function defined inside a :def function is local to that
|
||||
function, g: functions can be defined and script-local functions cannot be
|
||||
defined.
|
||||
- implement :type
|
||||
- import type declaration?
|
||||
- Future work: See |vim9-classes|
|
||||
- implement enum
|
||||
- Make accessing varargs faster: arg[expr]
|
||||
EVAL expr
|
||||
LOADVARARG (varags idx)
|
||||
LOADVARARG (varargs idx)
|
||||
- Make debugging work - at least per function. Need to recompile a function
|
||||
to step through it line-by-line? Evaluate the stack and variables on the
|
||||
stack?
|
||||
@@ -161,7 +146,6 @@ Popup windows:
|
||||
current window.
|
||||
? - switch between current window and all popup windows
|
||||
Esc in popup window goes back to previous current window
|
||||
- Cursor not updated before a redraw, making it jump. (#5943)
|
||||
- Add a termcap entry for changing the cursor when it goes under the popup and
|
||||
back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?)
|
||||
- With terminal in popup, allow for popup_hide() to temporarily hide it.?
|
||||
@@ -191,6 +175,8 @@ Text properties:
|
||||
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
|
||||
- Combining text property with 'cursorline' does not always work (Billie
|
||||
Cleek, #5533)
|
||||
- Should we let the textprop highlight overrule other (e.g. diff) highlight if
|
||||
the priority is above a certain value? (#7392)
|
||||
- See remarks at top of src/textprop.c
|
||||
|
||||
'incsearch' with :s:
|
||||
@@ -279,7 +265,8 @@ Was originally written by Felipe Morales.
|
||||
|
||||
Remove SPACE_IN_FILENAME ? It is only used for completion.
|
||||
|
||||
Patch to use collation based sorting. (Christian Brabandt, #6229)
|
||||
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
|
||||
Scroll doesn't work correctly, why?
|
||||
|
||||
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
|
||||
with 'termguicolors'. #1740
|
||||
@@ -295,9 +282,6 @@ Add an option to start_timer() to return from the input loop with K_IGNORE.
|
||||
This is useful e.g. when a popup was created that disables mappings, we need
|
||||
to return from vgetc() to make this happen. #7011
|
||||
|
||||
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
|
||||
Scroll doesn't work correctly, why?
|
||||
|
||||
Expanding <mods> should put the tab number from cmdmod.tab before "tab".
|
||||
Any way to convert "$" back by using a special value? (#6901)
|
||||
|
||||
@@ -326,6 +310,9 @@ autocommands for the buffer lifecycle:
|
||||
BufIsRenamed (after buffer ID gets another name)
|
||||
The buffer list and windows are locked, no changes possible
|
||||
|
||||
Add a ModeChanged autocommand that has an argument indicating the old and new
|
||||
mode, as what's returned from mode(). Also used for switching Terminal mode.
|
||||
|
||||
Matchparen doesn't remove highlight after undo. (#7054)
|
||||
Is OK when syntax HL is active.
|
||||
|
||||
@@ -348,6 +335,8 @@ Patch to make :q work with local arglist. (Christian Brabandt, #6286)
|
||||
|
||||
Why does Test_invalid_sid() not work in the GUI?
|
||||
|
||||
":pedit" ignores the local working directory when 'pvp' is set (#7267)
|
||||
|
||||
Lua: updating wrong buffer when using newly created, unloaded buffer.
|
||||
(#6539)
|
||||
|
||||
@@ -417,9 +406,6 @@ Another spurious BufDelete. (Dani Dickstein, #5701)
|
||||
|
||||
Wrong error when using local arglist. (Harm te Hennepe, #6133)
|
||||
|
||||
Request to support <Cmd> in mappings, similar to how Neovim does this.
|
||||
(Daniel Hahler, #4784)
|
||||
|
||||
Test loose_clipboard() by selecting text before suspending.
|
||||
|
||||
Undo puts cursor in wrong line after "cG<Esc>" undo.
|
||||
@@ -441,9 +427,6 @@ Also put :argadd commands at the start for all buffers, so that their order
|
||||
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
|
||||
Also #5326: netrw buffers are not restored.
|
||||
|
||||
Alternate file is not set in the session file. Use setwintabvar("@#") ?
|
||||
(#6714)
|
||||
|
||||
When 'backupdir' has a path ending in double slash (meaning: use full path of
|
||||
the file) combined with 'patchmode' the file name is wrong. (#5791)
|
||||
|
||||
@@ -773,6 +756,7 @@ Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
|
||||
|
||||
Add buffer argument to undotree(). (#4001)
|
||||
|
||||
Memory leak in test_debugger
|
||||
Using uninitialized value in test_crypt (can't explain why).
|
||||
Memory leak in test_terminal_fail
|
||||
TODO: be able to run all parts of test_alot with valgrind separately
|
||||
@@ -903,9 +887,6 @@ Try out background make plugin:
|
||||
or asyncmake:
|
||||
https://github.com/yegappan/asyncmake
|
||||
|
||||
Add a ModeChanged autocommand that has an argument indicating the old and new
|
||||
mode, as what's returned from mode(). Also used for switching Terminal mode.
|
||||
|
||||
Add an option with file patterns, to be used when unloading a buffer: If there
|
||||
is a match, remove entries for the buffer from marks, jumplist, etc. To be
|
||||
used for git temp files.
|
||||
@@ -1067,7 +1048,7 @@ neovim #7431)
|
||||
Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
|
||||
Nov 21)
|
||||
|
||||
When t_Co is changed from termresponse, the OptionSet autocmmand event isn't
|
||||
When t_Co is changed from termresponse, the OptionSet autocommand event isn't
|
||||
triggered. Use the code from the end of set_num_option() in
|
||||
set_color_count().
|
||||
|
||||
@@ -1352,6 +1333,9 @@ no longer support.
|
||||
sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
|
||||
4#1038)
|
||||
|
||||
sort() does not use 'smartcase' for the skip pattern, even though 'ignorecase'
|
||||
is used. (Filipe Brandenburger, #7322)
|
||||
|
||||
+channel:
|
||||
- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
|
||||
- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
|
||||
@@ -2297,7 +2281,7 @@ Additional info by Dominique Pelle. (also on 2010 Apr 10)
|
||||
|
||||
CreateFile and CreateFileW are used without sharing, filewritable() fails when
|
||||
the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
|
||||
FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
|
||||
FILE_SHARE_WRITE in mch_access()? (Philippe Vaucher, 2010 Nov 2)
|
||||
|
||||
Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
|
||||
Looks like only bash can do it. (Yakov Lerner)
|
||||
@@ -5933,7 +5917,7 @@ Writing files:
|
||||
losing the original when writing twice. (Slootman)
|
||||
7 On non-Unix machines, also overwrite the original file in some situations
|
||||
(file system full, it's a link on an NFS partition).
|
||||
7 When editing a file, check that it has been change outside of Vim more
|
||||
7 When editing a file, check that it has been changed outside of Vim more
|
||||
often, not only when writing over it. E.g., at the time the swap file is
|
||||
flushed. Or every ten seconds or so (use the time of day, check it before
|
||||
waiting for a character to be typed).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*undo.txt* For Vim version 8.2. Last change: 2020 Oct 18
|
||||
*undo.txt* For Vim version 8.2. Last change: 2020 Nov 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -65,9 +65,9 @@ with the redo command. If you make a new change after the undo command,
|
||||
the redo will not be possible anymore.
|
||||
|
||||
'u' included, the Vi-compatible way:
|
||||
The undo command undoes the previous change, and also the previous undo command.
|
||||
The redo command repeats the previous undo command. It does NOT repeat a
|
||||
change command, use "." for that.
|
||||
The undo command undoes the previous change, and also the previous undo
|
||||
command. The redo command repeats the previous undo command. It does NOT
|
||||
repeat a change command, use "." for that.
|
||||
|
||||
Examples Vim way Vi-compatible way ~
|
||||
"uu" two times undo no-op
|
||||
@@ -103,7 +103,7 @@ change again. But you can do something like this: >
|
||||
|
||||
:undojoin | delete
|
||||
|
||||
After this an "u" command will undo the delete command and the previous
|
||||
After this a "u" command will undo the delete command and the previous
|
||||
change.
|
||||
|
||||
To do the opposite, break a change into two undo blocks, in Insert mode use
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2020 Aug 30
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2020 Nov 09
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -644,6 +644,7 @@ List manipulation: *list-functions*
|
||||
deepcopy() make a full copy of a List
|
||||
filter() remove selected items from a List
|
||||
map() change each List item
|
||||
mapnew() make a new List with changed items
|
||||
reduce() reduce a List to a value
|
||||
sort() sort a List
|
||||
reverse() reverse the order of a List
|
||||
@@ -669,6 +670,7 @@ Dictionary manipulation: *dict-functions*
|
||||
extend() add entries from one Dictionary to another
|
||||
filter() remove selected entries from a Dictionary
|
||||
map() change each Dictionary entry
|
||||
mapnew() make a new Dictionary with changed items
|
||||
keys() get List of Dictionary keys
|
||||
values() get List of Dictionary values
|
||||
items() get List of Dictionary key-value pairs
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 8.2. Last change: 2020 Aug 20
|
||||
*various.txt* For Vim version 8.2. Last change: 2020 Nov 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -142,15 +142,17 @@ g8 Print the hex values of the bytes used in the
|
||||
quit
|
||||
<
|
||||
*:z* *E144*
|
||||
:{range}z[+-^.=]{count} Display several lines of text surrounding the line
|
||||
specified with {range}, or around the current line
|
||||
if there is no {range}. If there is a {count}, that's
|
||||
how many lines you'll see; if there is no {count} and
|
||||
only one window then twice the value of the 'scroll'
|
||||
option is used, otherwise the current window height
|
||||
minus 3 is used.
|
||||
:[range]z[+-^.=][count] Display several lines of text surrounding the line
|
||||
specified with [range], or around the current line
|
||||
if there is no [range].
|
||||
|
||||
If there is a {count} the 'window' option is set to
|
||||
If there is a [count], that's how many lines you'll
|
||||
see; if there is no [count] and only one window then
|
||||
twice the value of the 'scroll' option is used,
|
||||
otherwise the current window height minus 3 is used.
|
||||
This is the value of "scr" in the table below.
|
||||
|
||||
If there is a [count] the 'window' option is set to
|
||||
its value.
|
||||
|
||||
:z can be used either alone or followed by any of
|
||||
@@ -168,7 +170,7 @@ g8 Print the hex values of the bytes used in the
|
||||
If the mark is "=", a line of dashes is printed
|
||||
around the current line.
|
||||
|
||||
:{range}z#[+-^.=]{count} *:z#*
|
||||
:[range]z#[+-^.=][count] *:z#*
|
||||
Like ":z", but number the lines.
|
||||
|
||||
*:=*
|
||||
|
||||
@@ -1331,7 +1331,7 @@ eventhandler() Returns 1 when inside an event handler and interactive
|
||||
executable() Checks if a program or batch script can be executed.
|
||||
filewritable() Checks if a file can be written. (Ron Aaron)
|
||||
foldclosed() Find out if there is a closed fold. (Johannes Zellner).
|
||||
foldcloseend() Find the end of a closed fold.
|
||||
foldclosedend() Find the end of a closed fold.
|
||||
foldlevel() Find out the foldlevel. (Johannes Zellner)
|
||||
foreground() Move the GUI window to the foreground.
|
||||
getchar() Get one character from the user. Can be used to define a
|
||||
|
||||
@@ -76,7 +76,7 @@ Timers ~
|
||||
Also asynchronous are timers. They can fire once or repeatedly and invoke a
|
||||
function to do any work. For example: >
|
||||
let tempTimer = timer_start(4000, 'CheckTemp')
|
||||
This will call the CheckTemp() function four seconds (4000 milli seconds)
|
||||
This will call the CheckTemp() function four seconds (4000 milliseconds)
|
||||
later. See |timer_start()|.
|
||||
|
||||
|
||||
@@ -42557,7 +42557,7 @@ Files: src/buffer.c, src/testdir/test_statusline.vim,
|
||||
src/testdir/dumps/Test_statusline_1.dump
|
||||
|
||||
Patch 8.2.0236
|
||||
Problem: MS-Windows uninstall doesn't delete vimtutur.bat.
|
||||
Problem: MS-Windows uninstall doesn't delete vimtutor.bat.
|
||||
Solution: Change directory before deletion. (Ken Takata, closes #5603)
|
||||
Files: src/uninstall.c
|
||||
|
||||
|
||||
@@ -459,6 +459,9 @@ Use {name} as the server name. Used for the current Vim, unless used with a
|
||||
\-\-socketid {id}
|
||||
GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
|
||||
.TP
|
||||
\-\-startuptime {file}
|
||||
During startup write timing messages to the file {fname}.
|
||||
.TP
|
||||
\-\-version
|
||||
Print version information and exit.
|
||||
.SH ON-LINE HELP
|
||||
|
||||
@@ -345,6 +345,9 @@ OPTIONS
|
||||
GTK GUI only: Use the GtkPlug mechanism to run gvim in an‐
|
||||
other window.
|
||||
|
||||
--startuptime {file}
|
||||
During startup write timing messages to the file {fname}.
|
||||
|
||||
--version Print version information and exit.
|
||||
|
||||
ON-LINE HELP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2020 Oct 17
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2020 Dec 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -112,8 +112,7 @@ In Vi # is a command to list text with numbers. In Vim9 script you can use
|
||||
101 number
|
||||
|
||||
To improve readability there must be a space between a command and the #
|
||||
that starts a comment. Note that #{ is the start of a dictionary, therefore
|
||||
it does not start a comment.
|
||||
that starts a comment.
|
||||
|
||||
|
||||
Vim9 functions ~
|
||||
@@ -124,8 +123,8 @@ often 10x to 100x times.
|
||||
Many errors are already found when compiling, before the function is executed.
|
||||
The syntax is strict, to enforce code that is easy to read and understand.
|
||||
|
||||
Compilation is done when:
|
||||
- the function is first called
|
||||
Compilation is done when either of these is encountered:
|
||||
- the first time the function is called
|
||||
- when the `:defcompile` command is encountered in the script where the
|
||||
function was defined
|
||||
- `:disassemble` is used for the function.
|
||||
@@ -133,8 +132,9 @@ Compilation is done when:
|
||||
reference
|
||||
|
||||
`:def` has no options 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.
|
||||
"closure". A `:def` function always aborts on an error (unless `:silent!` was
|
||||
used for the command or inside a `:try` block), does not get a range passed
|
||||
and cannot be a "dict" function.
|
||||
|
||||
The argument types and return type need to be specified. The "any" type can
|
||||
be used, type checking will then be done at runtime, like with legacy
|
||||
@@ -303,8 +303,7 @@ identifier or can't be an Ex command. Examples: >
|
||||
myList->add(123)
|
||||
g:myList->add(123)
|
||||
[1, 2, 3]->Process()
|
||||
#{a: 1, b: 2}->Process()
|
||||
{'a': 1, 'b': 2}->Process()
|
||||
{a: 1, b: 2}->Process()
|
||||
"foobar"->Process()
|
||||
("foobar")->Process()
|
||||
'foobar'->Process()
|
||||
@@ -346,7 +345,7 @@ those cases there is no need to prefix the line with a backslash
|
||||
'two',
|
||||
]
|
||||
And when a dict spans multiple lines: >
|
||||
var mydict = #{
|
||||
var mydict = {
|
||||
one: 1,
|
||||
two: 2,
|
||||
}
|
||||
@@ -390,6 +389,9 @@ This will assign "start" and print a line: >
|
||||
var result = start
|
||||
:+ print
|
||||
|
||||
Note that the colon is not required for the |+cmd| argument: >
|
||||
edit +6 fname
|
||||
|
||||
It is also possible to split a function header over multiple lines, in between
|
||||
arguments: >
|
||||
def MyFunc(
|
||||
@@ -430,6 +432,33 @@ No curly braces expansion ~
|
||||
|curly-braces-names| cannot be used.
|
||||
|
||||
|
||||
Dictionary literals ~
|
||||
|
||||
Traditionally Vim has supported dictionary literals with a {} syntax: >
|
||||
let dict = {'key': value}
|
||||
|
||||
Later it became clear that using a simple text key is very common, thus
|
||||
literal dictionaries were introduced in a backwards compatible way: >
|
||||
let dict = #{key: value}
|
||||
|
||||
However, this #{} syntax is unlike any existing language. As it turns out
|
||||
that using a literal key is much more common than using an expression, and
|
||||
considering that JavaScript uses this syntax, using the {} form for dictionary
|
||||
literals is considered a much more useful syntax. In Vim9 script the {} form
|
||||
uses literal keys: >
|
||||
let dict = {key: value}
|
||||
|
||||
This works for alphanumeric characters, underscore and dash. If you want to
|
||||
use another character, use a single or double quoted string: >
|
||||
let dict = {'key with space': value}
|
||||
let dict = {"key\twith\ttabs": value}
|
||||
let dict = {'': value} # empty key
|
||||
|
||||
In case the key needs to be an expression, square brackets can be used, just
|
||||
like in JavaScript: >
|
||||
let dict = {["key" .. nr]: value}
|
||||
|
||||
|
||||
No :xit, :t, :append, :change or :insert ~
|
||||
|
||||
These commands are too easily confused with local variable names.
|
||||
@@ -1103,7 +1132,7 @@ are used. That is different, thus it's good to use a different command:
|
||||
`:var`. This is used in many languages. The semantics might be slightly
|
||||
different, but it's easily recognized as a declaration.
|
||||
|
||||
Using `:const` for constants is common, but the semantics vary. Some
|
||||
Using `:const` for constants is common, but the semantics varies. Some
|
||||
languages only make the variable immutable, others also make the value
|
||||
immutable. Since "final" is well known from Java for only making the variable
|
||||
immutable we decided to use that. And then `:const` can be used for making
|
||||
@@ -1163,7 +1192,7 @@ text not starting with a number would be converted to zero, which is
|
||||
considered false. Thus using a string for a condition would often not give an
|
||||
error and be considered false. That is confusing.
|
||||
|
||||
In Vim9 type checking is more strict to avoid mistakes. Where a condition is
|
||||
In Vim9 type checking is stricter to avoid mistakes. Where a condition is
|
||||
used, e.g. with the `:if` command and the `||` operator, only boolean-like
|
||||
values are accepted:
|
||||
true: `true`, `v:true`, `1`, `0 < 9`
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 8.2. Last change: 2020 Sep 02
|
||||
*windows.txt* For Vim version 8.2. Last change: 2020 Nov 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1119,6 +1119,11 @@ list of buffers. |unlisted-buffer|
|
||||
line when the buffer is first entered. Note that other
|
||||
commands after the + will be ignored.
|
||||
|
||||
*:balt*
|
||||
:balt [+lnum] {fname}
|
||||
Like `:badd` and also set the alternate file for the current
|
||||
window to {fname}.
|
||||
|
||||
:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
|
||||
:bd[elete][!] [N]
|
||||
Unload buffer [N] (default: current buffer) and delete it from
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2020 Oct 24
|
||||
" Last Change: 2020 Dec 07
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -696,12 +696,15 @@ au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
|
||||
au BufNewFile,BufRead *.haml setf haml
|
||||
|
||||
" Hamster Classic | Playground files
|
||||
au BufNewFile,BufRead *.hsc,*.hsm setf hamster
|
||||
au BufNewFile,BufRead *.hsm setf hamster
|
||||
|
||||
" Haskell
|
||||
au BufNewFile,BufRead *.hs,*.hs-boot setf haskell
|
||||
au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot setf haskell
|
||||
au BufNewFile,BufRead *.lhs setf lhaskell
|
||||
au BufNewFile,BufRead *.chs setf chaskell
|
||||
au BufNewFile,BufRead cabal.project setf cabalproject
|
||||
au BufNewFile,BufRead $HOME/.cabal/config setf cabalconfig
|
||||
au BufNewFile,BufRead cabal.config setf cabalconfig
|
||||
|
||||
" Haste
|
||||
au BufNewFile,BufRead *.ht setf haste
|
||||
@@ -1305,6 +1308,7 @@ au BufNewFile,BufRead *.pml setf promela
|
||||
|
||||
" Google protocol buffers
|
||||
au BufNewFile,BufRead *.proto setf proto
|
||||
au BufNewFile,BufRead *.pbtxt setf pbtxt
|
||||
|
||||
" Protocols
|
||||
au BufNewFile,BufRead */etc/protocols setf protocols
|
||||
@@ -1721,7 +1725,7 @@ au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
|
||||
au BufNewFile,BufRead *.tex call dist#ft#FTtex()
|
||||
|
||||
" ConTeXt
|
||||
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context
|
||||
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi,*.mkxl,*.mklx setf context
|
||||
|
||||
" Texinfo
|
||||
au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo
|
||||
@@ -1738,6 +1742,9 @@ au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
|
||||
" tmux configuration
|
||||
au BufNewFile,BufRead {.,}tmux*.conf setf tmux
|
||||
|
||||
" TOML
|
||||
au BufNewFile,BufRead *.toml setf toml
|
||||
|
||||
" TPP - Text Presentation Program
|
||||
au BufNewFile,BufReadPost *.tpp setf tpp
|
||||
|
||||
@@ -1759,8 +1766,13 @@ au BufNewFile,BufReadPost *.tsscl setf tsscl
|
||||
" TWIG files
|
||||
au BufNewFile,BufReadPost *.twig setf twig
|
||||
|
||||
" Typescript
|
||||
au BufNewFile,BufReadPost *.ts setf typescript
|
||||
" Typescript or Qt translation file (which is XML)
|
||||
au BufNewFile,BufReadPost *.ts
|
||||
\ if getline(1) =~ '<?xml' |
|
||||
\ setf xml |
|
||||
\ else |
|
||||
\ setf typescript |
|
||||
\ endif
|
||||
|
||||
" TypeScript with React
|
||||
au BufNewFile,BufRead *.tsx setf typescriptreact
|
||||
@@ -2036,12 +2048,14 @@ au BufNewFile,BufRead bzr_log.* setf bzr
|
||||
|
||||
" Bazel build file
|
||||
if !has("fname_case")
|
||||
au BufNewFile,BufRead *.BUILD,BUILD setf bzl
|
||||
au BufNewFile,BufRead *.BUILD,BUILD setf bzl
|
||||
endif
|
||||
|
||||
" BIND zone
|
||||
au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone')
|
||||
|
||||
au BufNewFile,BufRead cabal.project.* call s:StarSetf('cabalproject')
|
||||
|
||||
" Calendar
|
||||
au BufNewFile,BufRead */.calendar/*,
|
||||
\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin
|
||||
" Language: awk, nawk, gawk, mawk
|
||||
" Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||
" Last Change: 2020 Sep 28
|
||||
" Language: awk, nawk, gawk, mawk
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||
" Last Change: 2020 Sep 28
|
||||
|
||||
" This plugin was prepared by Mark Sikora
|
||||
" This plugin was updated as proposed by Doug Kearns
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
" Vim filetype plugin
|
||||
" Language: roff(7)
|
||||
" Maintainer: Chris Spiegel <cspiegel@gmail.com>
|
||||
" Last Change: 2019 Apr 24
|
||||
" Maintainer: Aman Verma
|
||||
" Homepage: https://github.com/a-vrma/vim-nroff-ftplugin
|
||||
" Previous Maintainer: Chris Spiegel <cspiegel@gmail.com>
|
||||
" Last Change: 2020 Nov 21
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -9,3 +11,7 @@ endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal commentstring=.\\\"%s
|
||||
setlocal comments=:.\\\"
|
||||
setlocal sections+=Sh
|
||||
|
||||
let b:undo_ftplugin = 'setlocal commentstring< comments< sections<'
|
||||
|
||||
21
runtime/ftplugin/pbtxt.vim
Normal file
21
runtime/ftplugin/pbtxt.vim
Normal file
@@ -0,0 +1,21 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Protobuf Text Format
|
||||
" Maintainer: Lakshay Garg <lakshayg@outlook.in>
|
||||
" Last Change: 2020 Nov 17
|
||||
" Homepage: https://github.com/lakshayg/vim-pbtxt
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Zsh shell script
|
||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2020-01-10
|
||||
" Latest Revision: 2020-09-01
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/chrisbra/vim-zsh
|
||||
|
||||
@@ -19,20 +19,21 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||
let b:undo_ftplugin = "setl com< cms< fo< "
|
||||
|
||||
if executable('zsh')
|
||||
if !has('gui_running') && executable('less')
|
||||
command! -buffer -nargs=1 RunHelp silent exe '!zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null | LESS= less"' | redraw!
|
||||
elseif has('terminal')
|
||||
command! -buffer -nargs=1 RunHelp silent exe ':term zsh -ic "autoload -Uz run-help; run-help <args>"'
|
||||
else
|
||||
command! -buffer -nargs=1 RunHelp echo system('zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null"')
|
||||
endif
|
||||
if !has('gui_running') && executable('less')
|
||||
command! -buffer -nargs=1 RunHelp silent exe '!MANPAGER= zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null | LESS= less"' | redraw!
|
||||
elseif has('terminal')
|
||||
command! -buffer -nargs=1 RunHelp silent exe ':term zsh -ic "autoload -Uz run-help; run-help <args>"'
|
||||
else
|
||||
command! -buffer -nargs=1 RunHelp echo system('zsh -ic "autoload -Uz run-help; run-help <args> 2>/dev/null"')
|
||||
endif
|
||||
if !exists('current_compiler')
|
||||
compiler zsh
|
||||
endif
|
||||
setlocal keywordprg=:RunHelp
|
||||
setlocal makeprg=zsh\ -n\ --\ %:S
|
||||
setlocal errorformat=%f:\ line\ %l:\ %m
|
||||
let b:undo_ftplugin .= 'keywordprg< errorformat< makeprg<'
|
||||
let b:undo_ftplugin .= 'keywordprg<'
|
||||
endif
|
||||
|
||||
let b:match_words = ',\<if\>:\<elif\>:\<else\>:\<fi\>'
|
||||
let b:match_words = '\<if\>:\<elif\>:\<else\>:\<fi\>'
|
||||
\ . ',\<case\>:^\s*([^)]*):\<esac\>'
|
||||
\ . ',\<\%(select\|while\|until\|repeat\|for\%(each\)\=\)\>:\<done\>'
|
||||
let b:match_skip = 's:comment\|string\|heredoc\|subst'
|
||||
|
||||
@@ -15,7 +15,7 @@ GenericName[eo]=Tekstoredaktilo
|
||||
GenericName[fr]=Éditeur de texte
|
||||
GenericName[ja]=テキストエディタ
|
||||
GenericName[ru]=Текстовый редактор
|
||||
GenericName[sr]=Текст Едитор
|
||||
GenericName[sr]=Едитор текст
|
||||
GenericName[tr]=Metin Düzenleyici
|
||||
GenericName=Text Editor
|
||||
# Translators: This is the comment used in the Vim desktop file
|
||||
@@ -24,7 +24,7 @@ Comment[eo]=Redakti tekstajn dosierojn
|
||||
Comment[fr]=Éditer des fichiers texte
|
||||
Comment[ja]=テキストファイルを編集します
|
||||
Comment[ru]=Редактирование текстовых файлов
|
||||
Comment[sr]=Уређивање текст фајлова
|
||||
Comment[sr]=Уређујте текст фајлове
|
||||
Comment[tr]=Metin dosyaları düzenleyin
|
||||
Comment=Edit text files
|
||||
# The translations should come from the po file. Leave them here for now, they will
|
||||
@@ -112,7 +112,6 @@ Icon[de]=gvim
|
||||
Icon[eo]=gvim
|
||||
Icon[fr]=gvim
|
||||
Icon[ru]=gvim
|
||||
Icon[sr]=gvim
|
||||
Icon=gvim
|
||||
Categories=Utility;TextEditor;
|
||||
StartupNotify=true
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
|
||||
" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||
" Last Changed: 2019 Dec 02
|
||||
" Last Changed: 2020 Nov 4th
|
||||
" Last Change:
|
||||
" 20200529 - Handle empty closing tags correctly
|
||||
" 20191202 - Handle docbk filetype
|
||||
" 20190726 - Correctly handle non-tagged data
|
||||
" 20190204 - correctly handle wrap tags
|
||||
@@ -45,7 +46,7 @@ if !exists('b:xml_indent_open')
|
||||
endif
|
||||
|
||||
if !exists('b:xml_indent_close')
|
||||
let b:xml_indent_close = '.\{-}</'
|
||||
let b:xml_indent_close = '.\{-}</\|/>.\{-}'
|
||||
" end pre tag, e.g. </address>
|
||||
" let b:xml_indent_close = '.\{-}</\(address\)\@!'
|
||||
endif
|
||||
@@ -81,7 +82,7 @@ endfun
|
||||
|
||||
" [-- return the sum of indents of a:lnum --]
|
||||
fun! <SID>XmlIndentSum(line, style, add)
|
||||
if <SID>IsXMLContinuation(a:line) && a:style == 0
|
||||
if <SID>IsXMLContinuation(a:line) && a:style == 0 && !<SID>IsXMLEmptyClosingTag(a:line)
|
||||
" no complete tag, add one additional indent level
|
||||
" but only for the current line
|
||||
return a:add + shiftwidth()
|
||||
@@ -131,13 +132,25 @@ fun! XmlIndentGet(lnum, use_syntax_check)
|
||||
endif
|
||||
let syn_name_end = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name')
|
||||
let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name')
|
||||
let prev_syn_name_end = synIDattr(synID(ptag, strlen(pline) - 1, 1), 'name')
|
||||
" not needed (yet?)
|
||||
" let prev_syn_name_start = synIDattr(synID(ptag, match(pline, '\S') + 1, 1), 'name')
|
||||
endif
|
||||
|
||||
if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment'
|
||||
return <SID>XmlIndentComment(a:lnum)
|
||||
elseif empty(syn_name_start) && empty(syn_name_end) && a:use_syntax_check
|
||||
" non-xml tag content: use indent from 'autoindent'
|
||||
return pind + shiftwidth()
|
||||
if pline =~ b:xml_indent_close
|
||||
return pind
|
||||
elseif !empty(prev_syn_name_end)
|
||||
" only indent by an extra shiftwidth, if the previous line ends
|
||||
" with an XML like tag
|
||||
return pind + shiftwidth()
|
||||
else
|
||||
" no extra indent, looks like a text continuation line
|
||||
return pind
|
||||
endif
|
||||
endif
|
||||
|
||||
" Get indent from previous tag line
|
||||
@@ -157,15 +170,28 @@ func! <SID>HasNoTagEnd(line)
|
||||
return a:line !~ '>\s*$'
|
||||
endfunc
|
||||
|
||||
func! <SID>IsXMLEmptyClosingTag(line)
|
||||
" Checks whether the line ends with an empty closing tag such as <lb/>
|
||||
return a:line =~? '<[^>]*/>\s*$'
|
||||
endfunc
|
||||
|
||||
" return indent for a commented line,
|
||||
" the middle part might be indented one additional level
|
||||
func! <SID>XmlIndentComment(lnum)
|
||||
let ptagopen = search(b:xml_indent_open, 'bnW')
|
||||
let ptagopen = search('.\{-}<[:A-Z_a-z]\_[^/]\{-}>.\{-}', 'bnW')
|
||||
let ptagclose = search(b:xml_indent_close, 'bnW')
|
||||
if getline(a:lnum) =~ '<!--'
|
||||
" if previous tag was a closing tag, do not add
|
||||
" one additional level of indent
|
||||
if ptagclose > ptagopen && a:lnum > ptagclose
|
||||
" If the previous tag was closed on the same line as it was
|
||||
" declared, we should indent with its indent level.
|
||||
if !<SID>IsXMLContinuation(getline(ptagclose))
|
||||
return indent(ptagclose)
|
||||
else
|
||||
return indent(ptagclose) - shiftwidth()
|
||||
endif
|
||||
elseif ptagclose == ptagopen
|
||||
return indent(ptagclose)
|
||||
else
|
||||
" start of comment, add one indentation level
|
||||
|
||||
11237
runtime/keymap/korean-dubeolsik_utf-8.vim
Normal file
11237
runtime/keymap/korean-dubeolsik_utf-8.vim
Normal file
File diff suppressed because it is too large
Load Diff
23
runtime/keymap/korean.vim
Normal file
23
runtime/keymap/korean.vim
Normal file
@@ -0,0 +1,23 @@
|
||||
" Maintainer: Jang Whemoon <palindrom615@gmail.com>
|
||||
" Last Change: Nov 24, 2020
|
||||
"
|
||||
"
|
||||
"
|
||||
" Unlike Japanese or Chinese, modern Korean texts do not depends on conversion
|
||||
" to Hanja (Chinese character). Thus, general Korean text totally can be
|
||||
" covered without help of IME but this keymap.
|
||||
"
|
||||
" BUT, simply mapping each letter of Hangul with sequence of alphabet 1 by 1
|
||||
" can fail to combine Hangul jamo (conconants and vowels) right.
|
||||
" For example, sequentially pressing `ㅅㅓㅇㅜㄹㄷㅐㅎㅏㄱㅛ` can not only be
|
||||
" combined as `서울대학교`, but alse `성ㅜㄹ댛ㅏㄱ교`, which is totally
|
||||
" nonsense.
|
||||
" Though combining Hangul is deterministic with law that each letter must be
|
||||
" one of (consonant + vowel) or (consonant + vowel + consonant), there is no
|
||||
" way to apply such law without implementing input engine.
|
||||
"
|
||||
" Thus, user of this keymap should wait until previous hangul letter is
|
||||
" completed before typing next one. To reduce such inconvenience, I suggest to
|
||||
" set `timeoutlen` with their own value. (default value is 1000ms)
|
||||
|
||||
source <sfile>:p:h/korean-dubeolsik_utf-8.vim
|
||||
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2020 Oct 23
|
||||
" Last Change: 2020 Oct 27
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
let buf = bufnr('option-window')
|
||||
@@ -848,7 +848,7 @@ if has("digraphs")
|
||||
endif
|
||||
call <SID>AddOption("tildeop", gettext("the \"~\" command behaves like an operator"))
|
||||
call <SID>BinOptionG("top", &top)
|
||||
call <SID>AddOption("operatorfunc", gettext("function called for the \"g@\" operator"))
|
||||
call <SID>AddOption("operatorfunc", gettext("function called for the \"g@\" operator"))
|
||||
call <SID>OptionG("opfunc", &opfunc)
|
||||
call <SID>AddOption("showmatch", gettext("when inserting a bracket, briefly jump to its match"))
|
||||
call <SID>BinOptionG("sm", &sm)
|
||||
@@ -1267,7 +1267,7 @@ endif
|
||||
|
||||
|
||||
call <SID>Header(gettext("multi-byte characters"))
|
||||
call <SID>AddOption("encoding", gettext("character encoding used in Vim: \"latin1\", \"utf-8\"\n\"euc-jp\", \"big5\", etc."))
|
||||
call <SID>AddOption("encoding", gettext("character encoding used in Vim: \"latin1\", \"utf-8\",\n\"euc-jp\", \"big5\", etc."))
|
||||
call <SID>OptionG("enc", &enc)
|
||||
call <SID>AddOption("fileencoding", gettext("character encoding for the current file"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"
|
||||
" Author: Bram Moolenaar
|
||||
" Copyright: Vim license applies, see ":help license"
|
||||
" Last Change: 2020 Oct 25
|
||||
" Last Change: 2020 Dec 07
|
||||
"
|
||||
" WORK IN PROGRESS - Only the basics work
|
||||
" Note: On MS-Windows you need a recent version of gdb. The one included with
|
||||
@@ -726,8 +726,12 @@ func s:DeleteCommands()
|
||||
delcommand Source
|
||||
delcommand Winbar
|
||||
|
||||
if exists('s:k_map_saved') && !empty(s:k_map_saved)
|
||||
call mapset('n', 0, s:k_map_saved)
|
||||
if exists('s:k_map_saved')
|
||||
if empty(s:k_map_saved)
|
||||
nunmap K
|
||||
else
|
||||
call mapset('n', 0, s:k_map_saved)
|
||||
endif
|
||||
unlet s:k_map_saved
|
||||
endif
|
||||
|
||||
@@ -1034,7 +1038,7 @@ endfunc
|
||||
|
||||
func s:PlaceSign(id, subid, entry)
|
||||
let nr = printf('%d.%d', a:id, a:subid)
|
||||
exe 'sign place ' . s:Breakpoint2SignNumber(a:id, a:subid) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint' . nr . ' file=' . a:entry['fname']
|
||||
exe 'sign place ' . s:Breakpoint2SignNumber(a:id, a:subid) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint' . nr . ' priority=110 file=' . a:entry['fname']
|
||||
let a:entry['placed'] = 1
|
||||
endfunc
|
||||
|
||||
|
||||
@@ -44,6 +44,8 @@ augroup tar
|
||||
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>"))
|
||||
au BufReadCmd *.tar.zst call tar#Browse(expand("<amatch>"))
|
||||
au BufReadCmd *.tzs call tar#Browse(expand("<amatch>"))
|
||||
augroup END
|
||||
com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
|
||||
|
||||
|
||||
@@ -404,6 +404,7 @@ an 50.90.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
|
||||
an 50.90.130 &Syntax.PQ.PApp :cal SetSyn("papp")<CR>
|
||||
an 50.90.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
|
||||
an 50.90.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
|
||||
an 50.90.490 &Syntax.PQ.Pbtxt :cal SetSyn("pbtxt")<CR>
|
||||
an 50.90.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
|
||||
an 50.90.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
|
||||
an 50.90.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: aidl (Android Interface Definition Language)
|
||||
" https://developer.android.com/guide/components/aidl
|
||||
" Maintainer: Dominique Pelle <dominique.pelle@tomtom.com>
|
||||
" LastChange: 2020/07/25
|
||||
" LastChange: 2020/12/03
|
||||
|
||||
" Quit when a syntax file was already loaded.
|
||||
if exists("b:current_syntax")
|
||||
@@ -12,7 +12,7 @@ endif
|
||||
source <sfile>:p:h/java.vim
|
||||
|
||||
syn keyword aidlParamDir in out inout
|
||||
syn keyword aidlKeyword oneway parcelable
|
||||
syn keyword aidlKeyword const oneway parcelable
|
||||
|
||||
" Needed for the 'in', 'out', 'inout' keywords to be highlighted.
|
||||
syn cluster javaTop add=aidlParamDir
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
" Vim syntax file
|
||||
" Language: GNU Assembler
|
||||
" Maintainer: Erik Wognsen <erik.wognsen@gmail.com>
|
||||
" Previous maintainer:
|
||||
" Kevin Dahlhausen <kdahlhaus@yahoo.com>
|
||||
" Last Change: 2014 Feb 04
|
||||
|
||||
" Thanks to Ori Avtalion for feedback on the comment markers!
|
||||
" Language: GNU Assembler
|
||||
" Maintainer: Doug Kearns dougkearns@gmail.com
|
||||
" Previous Maintainers: Erik Wognsen <erik.wognsen@gmail.com>
|
||||
" Kevin Dahlhausen <kdahlhaus@yahoo.com>
|
||||
" Contributors: Ori Avtalion, Lakshay Garg
|
||||
" Last Change: 2020 Oct 31
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -34,29 +33,49 @@ syn match asmType "\.space"
|
||||
syn match asmType "\.string"
|
||||
syn match asmType "\.word"
|
||||
|
||||
syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1
|
||||
syn match asmIdentifier "[a-z_][a-z0-9_]*"
|
||||
syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1
|
||||
|
||||
" Various #'s as defined by GAS ref manual sec 3.6.2.1
|
||||
" Technically, the first decNumber def is actually octal,
|
||||
" Technically, the first asmDecimal def is actually octal,
|
||||
" since the value of 0-7 octal is the same as 0-7 decimal,
|
||||
" I (Kevin) prefer to map it as decimal:
|
||||
syn match decNumber "0\+[1-7]\=[\t\n$,; ]"
|
||||
syn match decNumber "[1-9]\d*"
|
||||
syn match octNumber "0[0-7][0-7]\+"
|
||||
syn match hexNumber "0[xX][0-9a-fA-F]\+"
|
||||
syn match binNumber "0[bB][0-1]*"
|
||||
syn match asmDecimal "\<0\+[1-7]\=\>" display
|
||||
syn match asmDecimal "\<[1-9]\d*\>" display
|
||||
syn match asmOctal "\<0[0-7][0-7]\+\>" display
|
||||
syn match asmHexadecimal "\<0[xX][0-9a-fA-F]\+\>" display
|
||||
syn match asmBinary "\<0[bB][0-1]\+\>" display
|
||||
|
||||
syn keyword asmTodo contained TODO
|
||||
syn match asmFloat "\<\d\+\.\d*\%(e[+-]\=\d\+\)\=\>" display
|
||||
syn match asmFloat "\.\d\+\%(e[+-]\=\d\+\)\=\>" display
|
||||
syn match asmFloat "\<\d\%(e[+-]\=\d\+\)\>" display
|
||||
syn match asmFloat "[+-]\=Inf\>\|\<NaN\>" display
|
||||
|
||||
syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
|
||||
syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d\+\%(\.\d\+\)\=\%(e[+-]\=\d\+\)\=" display
|
||||
" Avoid fighting the hexadecimal match for unicorn-like '0x' prefixed floats
|
||||
syn match asmFloat "\%(0x\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
|
||||
|
||||
" Allow all characters to be escaped (and in strings) as these vary across
|
||||
" architectures [See sec 3.6.1.1 Strings]
|
||||
syn match asmCharacterEscape "\\." contained
|
||||
syn match asmCharacter "'\\\=." contains=asmCharacterEscape
|
||||
|
||||
syn match asmStringEscape "\\\_." contained
|
||||
syn match asmStringEscape "\\\%(\o\{3}\|00[89]\)" contained display
|
||||
syn match asmStringEscape "\\x\x\+" contained display
|
||||
|
||||
syn region asmString start="\"" end="\"" skip="\\\\\|\\\"" contains=asmStringEscape
|
||||
|
||||
syn keyword asmTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
" GAS supports one type of multi line comments:
|
||||
syn region asmComment start="/\*" end="\*/" contains=asmTodo
|
||||
syn region asmComment start="/\*" end="\*/" contains=asmTodo,@Spell
|
||||
|
||||
" GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however,
|
||||
" a backslash ending a C++ style comment does not extend the comment to the
|
||||
" next line (hence the syntax region does not define 'skip="\\$"')
|
||||
syn region asmComment start="//" end="$" keepend contains=asmTodo
|
||||
syn region asmComment start="//" end="$" keepend contains=asmTodo,@Spell
|
||||
|
||||
" Line comment characters depend on the target architecture and command line
|
||||
" options and some comments may double as logical line number directives or
|
||||
@@ -69,7 +88,7 @@ syn region asmComment start="//" end="$" keepend contains=asmTodo
|
||||
" frequently used features of the most popular architectures (and also the
|
||||
" non-GNU assembly languages that use this syntax file because their asm files
|
||||
" are also named *.asm), the following are used as line comment characters:
|
||||
syn match asmComment "[#;!|].*" contains=asmTodo
|
||||
syn match asmComment "[#;!|].*" contains=asmTodo,@Spell
|
||||
|
||||
" Side effects of this include:
|
||||
" - When `;' is used to separate statements on the same line (many targets
|
||||
@@ -96,35 +115,50 @@ syn match asmMacro "\.endm"
|
||||
" with '.', including the GCC auto-generated '.L' labels.
|
||||
syn match asmDirective "\.[A-Za-z][0-9A-Za-z-_]*"
|
||||
|
||||
|
||||
syn case match
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
" The default methods for highlighting. Can be overridden later
|
||||
hi def link asmSection Special
|
||||
hi def link asmLabel Label
|
||||
hi def link asmComment Comment
|
||||
hi def link asmTodo Todo
|
||||
hi def link asmSection Special
|
||||
hi def link asmLabel Label
|
||||
hi def link asmComment Comment
|
||||
hi def link asmTodo Todo
|
||||
hi def link asmDirective Statement
|
||||
|
||||
hi def link asmInclude Include
|
||||
hi def link asmCond PreCondit
|
||||
hi def link asmMacro Macro
|
||||
hi def link asmInclude Include
|
||||
hi def link asmCond PreCondit
|
||||
hi def link asmMacro Macro
|
||||
|
||||
hi def link hexNumber Number
|
||||
hi def link decNumber Number
|
||||
hi def link octNumber Number
|
||||
hi def link binNumber Number
|
||||
if exists('g:asm_legacy_syntax_groups')
|
||||
hi def link hexNumber Number
|
||||
hi def link decNumber Number
|
||||
hi def link octNumber Number
|
||||
hi def link binNumber Number
|
||||
hi def link asmHexadecimal hexNumber
|
||||
hi def link asmDecimal decNumber
|
||||
hi def link asmOctal octNumber
|
||||
hi def link asmBinary binNumber
|
||||
else
|
||||
hi def link asmHexadecimal Number
|
||||
hi def link asmDecimal Number
|
||||
hi def link asmOctal Number
|
||||
hi def link asmBinary Number
|
||||
endif
|
||||
hi def link asmFloat Float
|
||||
|
||||
hi def link asmString String
|
||||
hi def link asmStringEscape Special
|
||||
hi def link asmCharacter Character
|
||||
hi def link asmCharacterEscape Special
|
||||
|
||||
hi def link asmIdentifier Identifier
|
||||
hi def link asmType Type
|
||||
|
||||
hi def link asmType Type
|
||||
|
||||
let b:current_syntax = "asm"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: ts=8
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
" Vim syntax file
|
||||
" Language: Hitachi H-8300h specific syntax for GNU Assembler
|
||||
" Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
|
||||
" Last Change: 2002 Sep 19
|
||||
" Language: Hitachi H-8300h specific syntax for GNU Assembler
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
|
||||
" Last Change: 2020 Oct 31
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/asm.vim
|
||||
|
||||
syn case ignore
|
||||
|
||||
syn match asmDirective "\.h8300[h]*"
|
||||
syn match asmDirective "\.h8300[hs]n\="
|
||||
|
||||
"h8300[h] registers
|
||||
syn match asmReg "e\=r[0-7][lh]\="
|
||||
syn match asmRegister "e\=r\o[lh]\="
|
||||
|
||||
"h8300[h] opcodes - order is important!
|
||||
syn match asmOpcode "add\.[lbw]"
|
||||
@@ -37,32 +39,20 @@ syn match asmOpcode "sha[lr]\.[lbw]"
|
||||
syn match asmOpcode "shl[lr]\.[lbw]"
|
||||
syn match asmOpcode "sub\.[lbw]"
|
||||
syn match asmOpcode "xor\.[lbw]"
|
||||
syn keyword asmOpcode "andc" "band" "bcc" "bclr" "bcs" "beq" "bf" "bge" "bgt"
|
||||
syn keyword asmOpcode "bhi" "bhs" "biand" "bild" "bior" "bist" "bixor" "bmi"
|
||||
syn keyword asmOpcode "bne" "bnot" "bnp" "bor" "bpl" "bpt" "bra" "brn" "bset"
|
||||
syn keyword asmOpcode "bsr" "btst" "bst" "bt" "bvc" "bvs" "bxor" "cmp" "daa"
|
||||
syn keyword asmOpcode "das" "eepmov" "eepmovw" "inc" "jmp" "jsr" "ldc" "movfpe"
|
||||
syn keyword asmOpcode "movtpe" "mov" "nop" "orc" "rte" "rts" "sleep" "stc"
|
||||
syn keyword asmOpcode "sub" "trapa" "xorc"
|
||||
|
||||
syn keyword asmOpcode andc band bcc bclr bcs beq bf bge bgt
|
||||
syn keyword asmOpcode bhi bhs biand bild bior bist bixor bmi
|
||||
syn keyword asmOpcode bne bnot bnp bor bpl bpt bra brn bset
|
||||
syn keyword asmOpcode bsr btst bst bt bvc bvs bxor cmp daa
|
||||
syn keyword asmOpcode das eepmov eepmovw inc jmp jsr ldc movfpe
|
||||
syn keyword asmOpcode movtpe mov nop orc rte rts sleep stc
|
||||
syn keyword asmOpcode sub trapa xorc
|
||||
|
||||
syn case match
|
||||
|
||||
|
||||
" Read the general asm syntax
|
||||
runtime! syntax/asm.vim
|
||||
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
hi def link asmOpcode Statement
|
||||
hi def link asmRegister Identifier
|
||||
|
||||
" My default-color overrides:
|
||||
"hi asmOpcode ctermfg=yellow
|
||||
"hi asmReg ctermfg=lightmagenta
|
||||
|
||||
hi def link asmOpcode Statement
|
||||
hi def link asmRegister Identifier
|
||||
|
||||
let b:current_syntax = "asmh8300"
|
||||
|
||||
" vim: ts=8
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: awk, nawk, gawk, mawk
|
||||
" Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||
" Last Change: 2020 Aug 18
|
||||
" Language: awk, nawk, gawk, mawk
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||
" Last Change: 2020 Aug 18
|
||||
|
||||
" AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger
|
||||
" The AWK Programming Language, Addison-Wesley, 1988
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
" Maintainer: Marcin Szamotulski <profunctor@pm.me>
|
||||
" Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
|
||||
" File Types: .cabal
|
||||
" Last Change: 3 Oct 2020
|
||||
" Last Change: 21 Nov 2020
|
||||
" v1.5: Incorporated changes from
|
||||
" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
|
||||
" Use `syn keyword` instead of `syn match`.
|
||||
@@ -78,10 +78,13 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
|
||||
\ default-extensions
|
||||
\ author
|
||||
\ autogen-modules
|
||||
\ asm-sources
|
||||
\ asm-options
|
||||
\ branch
|
||||
\ bug-reports
|
||||
\ build-depends
|
||||
\ build-tools
|
||||
\ build-tools-depends
|
||||
\ build-type
|
||||
\ buildable
|
||||
\ c-sources
|
||||
@@ -89,33 +92,46 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
|
||||
\ category
|
||||
\ cc-options
|
||||
\ copyright
|
||||
\ cmm-sources
|
||||
\ cmm-options
|
||||
\ cpp-options
|
||||
\ cxx-sources
|
||||
\ data-dir
|
||||
\ data-files
|
||||
\ default
|
||||
\ default-extensions
|
||||
\ description
|
||||
\ executable
|
||||
\ exposed-modules
|
||||
\ exposed
|
||||
\ extensions
|
||||
\ extra-tmp-files
|
||||
\ extra-bundled-libraries
|
||||
\ extra-doc-files
|
||||
\ extra-dynamic-library-flavours
|
||||
\ extra-framework-dirs
|
||||
\ extra-ghci-libraries
|
||||
\ extra-lib-dirs
|
||||
\ extra-libraries
|
||||
\ extra-library-flavours
|
||||
\ extra-source-files
|
||||
\ exta-tmp-files
|
||||
\ extra-tmp-files
|
||||
\ for example
|
||||
\ frameworks
|
||||
\ ghc-options
|
||||
\ ghc-prof-options
|
||||
\ ghc-shared-options
|
||||
\ ghcjs-options
|
||||
\ ghcjs-prof-options
|
||||
\ ghcjs-shared-options
|
||||
\ homepage
|
||||
\ hs-source-dir
|
||||
\ hs-source-dirs
|
||||
\ hugs-options
|
||||
\ import
|
||||
\ include-dirs
|
||||
\ includes
|
||||
\ install-includes
|
||||
\ js-sources
|
||||
\ ld-options
|
||||
\ license
|
||||
\ license-file
|
||||
@@ -123,10 +139,13 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
|
||||
\ main-is
|
||||
\ maintainer
|
||||
\ manual
|
||||
\ mixins
|
||||
\ module
|
||||
\ name
|
||||
\ nhc98-options
|
||||
\ other-extensions
|
||||
\ other-language
|
||||
\ other-languages
|
||||
\ other-modules
|
||||
\ package-url
|
||||
\ pkgconfig-depends
|
||||
|
||||
30
runtime/syntax/cabalconfig.vim
Normal file
30
runtime/syntax/cabalconfig.vim
Normal file
@@ -0,0 +1,30 @@
|
||||
" Vim syntax file
|
||||
" Language: Cabal Config
|
||||
" Maintainer: profunctor@pm.me
|
||||
" Last Change: Marcin Szamotulski
|
||||
" Original Author: Marcin Szamotulski
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match CabalConfigSection /^\S[[:alpha:]]\+\%(-[[:alpha:]]\+\)*[^:]*$/
|
||||
syn region CabalConfigRegion matchgroup=CabalConfigKey start=/^\s*[[:alpha:]]\+\%(-[[:alpha:]]\+\)*:/ matchgroup=NONE end=/$/ contains=CabalConfigSeparator,CabalConfigKeyword,CabalConfigPath keepend
|
||||
syn match CabalConfigComment /^\s*--.*$/
|
||||
syn match CabalConfigValue /.*$/ contained
|
||||
syn match CabalConfigKey /[[:alpha:]]\+\%(-[[:alpha:]]\+\)*\ze:/
|
||||
syn keyword CabalConfigSeparator : contained
|
||||
syn match CabalConfigVariable /\$[[:alpha:]]\+/
|
||||
syn keyword CabalConfigKeyword True False ghc
|
||||
syn match CabalConfigPath /\%([[:alpha:]]\+:\)\?\%(\/[[:print:]]\+\)\+/
|
||||
|
||||
hi def link CabalConfigComment Comment
|
||||
hi def link CabalConfigSection Title
|
||||
hi def link CabalConfigKey Statement
|
||||
hi def link CabalConfigSeparator NonText
|
||||
hi def link CabalConfigValue Normal
|
||||
hi def link CabalConfigVariable Identifier
|
||||
hi def link CabalConfigKeyword Keyword
|
||||
hi def link CabalConfigPath Directory
|
||||
|
||||
let b:current_syntax = "cabal.config"
|
||||
28
runtime/syntax/cabalproject.vim
Normal file
28
runtime/syntax/cabalproject.vim
Normal file
@@ -0,0 +1,28 @@
|
||||
" Vim syntax file
|
||||
" Language: Cabal Project
|
||||
" Maintainer: profunctor@pm.me
|
||||
" Last Change: Marcin Szamotulski
|
||||
" Original Author: Marcin Szamotulski
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match CabalProjectComment /^\s*--.*/ contains=@Spell
|
||||
syn match CabalProjectField /^\w\%(\w\|-\)\+/ contains=@NoSpell
|
||||
|
||||
syn keyword CabalProjectBoolean true false True False
|
||||
syn keyword CabalProjectCompiler ghc ghcjs jhc lhc uhc haskell-suite
|
||||
syn match CabalProjectNat /\<\d\+\>/
|
||||
syn keyword CabalProjectJobs $ncpus
|
||||
syn keyword CabalProjectProfilingLevel default none exported-functions toplevel-functions all-functions
|
||||
|
||||
hi def link CabalProjectComment Comment
|
||||
hi def link CabalProjectField Statement
|
||||
hi def link CabalProjectBoolean Boolean
|
||||
hi def link CabalProjectCompiler Identifier
|
||||
hi def link CabalProjectNat Number
|
||||
hi def link CabalProjectJobs Number
|
||||
hi def link CabalProjectProfilingLevel Statement
|
||||
|
||||
let b:current_syntax = "cabal.project"
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Nick Jensen <nickspoon@gmail.com>
|
||||
" Former Maintainers: Anduin Withers <awithers@anduin.com>
|
||||
" Johannes Zellner <johannes@zellner.org>
|
||||
" Last Change: 2020-01-27
|
||||
" Last Change: 2020-11-23
|
||||
" Filenames: *.cs
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/nickspoons/vim-cs
|
||||
@@ -18,7 +18,6 @@ endif
|
||||
let s:save_cpo = &cpoptions
|
||||
set cpoptions&vim
|
||||
|
||||
|
||||
syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
|
||||
syn keyword csStorage delegate enum interface namespace struct
|
||||
syn keyword csRepeat break continue do for foreach goto return while
|
||||
@@ -27,7 +26,7 @@ syn keyword csLabel case default
|
||||
syn match csOperatorError display +::+
|
||||
syn match csGlobal display +global::+
|
||||
" user labels (see [1] 8.6 Statements)
|
||||
syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
|
||||
syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
|
||||
syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
|
||||
syn keyword csConstant false null true
|
||||
syn keyword csException try catch finally throw when
|
||||
@@ -39,9 +38,10 @@ syn keyword csUnsupportedStatement add remove value
|
||||
syn keyword csUnspecifiedKeyword explicit implicit
|
||||
|
||||
" Contextual Keywords
|
||||
syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
|
||||
syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
|
||||
syn match csContextualStatement /\<\(get\|set\)\(;\|[[:space:]\n]*{\)/me=s+3
|
||||
syn match csContextualStatement /\<yield[[:space:]\n]\+\%(return\|break\)/me=s+5
|
||||
syn match csContextualStatement /\<partial[[:space:]\n]\+\%(class\|struct\|interface\)/me=s+7
|
||||
syn match csContextualStatement /\<\%(get\|set\)\%(;\|[[:space:]\n]*{\)/me=s+3
|
||||
syn match csContextualStatement /\<\%(get\|set\)\s*=>/me=s+3
|
||||
syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
|
||||
|
||||
" Operators
|
||||
@@ -101,7 +101,7 @@ hi def link xmlRegion Comment
|
||||
syn spell default
|
||||
|
||||
" [1] 9.5 Pre-processing directives
|
||||
syn region csPreCondit start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" skip="\\$" end="$" contains=csComment keepend
|
||||
syn region csPreCondit start="^\s*#\s*\%(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|pragma\)\>" skip="\\$" end="$" contains=csComment keepend
|
||||
syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" end="^\s*#\s*endregion" transparent fold contains=TOP
|
||||
syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
|
||||
|
||||
@@ -120,25 +120,27 @@ syn match csSpecialError "\\." contained
|
||||
syn match csSpecialCharError "[^']" contained
|
||||
" [1] 9.4.4.4 Character literals
|
||||
syn match csSpecialChar +\\["\\'0abfnrtvx]+ contained display
|
||||
syn match csUnicodeNumber +\\x\x\{2,4}+ contained contains=csUnicodeSpecifier display
|
||||
syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
|
||||
syn match csUnicodeNumber +\\U\x\{8}+ contained contains=csUnicodeSpecifier display
|
||||
syn match csUnicodeSpecifier +\\[uU]+ contained display
|
||||
|
||||
syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
|
||||
syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError display
|
||||
syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
|
||||
syn match csCharacter "'\\''" contains=csSpecialChar display
|
||||
syn match csCharacter "'[^\\]'" display
|
||||
syn match csNumber "\<0[0-7]*[lL]\=\>" display
|
||||
syn match csNumber "\<0[xX]\x\+[lL]\=\>" display
|
||||
syn match csNumber "\<\d\+[lL]\=\>" display
|
||||
syn match csNumber "\<\d\+\.\d*\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
|
||||
syn match csNumber "\.\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
|
||||
syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" display
|
||||
syn match csNumber "\<\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\>" display
|
||||
syn match csNumber "\<0[xX][[:xdigit:]_]\+[lL]\=\>" display
|
||||
syn match csNumber "\<0[bB][01_]\+[lL]\=\>" display
|
||||
syn match csNumber "\<[[:digit:]_]\+[lL]\=\>" display
|
||||
syn match csNumber "\<[[:digit:]_]\+\.[[:digit:]_]*\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
|
||||
syn match csNumber "\.[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
|
||||
syn match csNumber "\<[[:digit:]_]\+[eE][-+]\=[[:digit:]_]\+[fFdDmM]\=\>" display
|
||||
syn match csNumber "\<[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\>" display
|
||||
|
||||
syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ end=+$+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
|
||||
syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
|
||||
|
||||
syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBracketed,csInterpolationAlign,csInterpolationFormat
|
||||
syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
|
||||
syn match csEscapedInterpolation "{{" transparent contains=NONE display
|
||||
syn match csEscapedInterpolation "}}" transparent contains=NONE display
|
||||
syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=csNumber,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
|
||||
@@ -152,9 +154,10 @@ syn match csQuoteError +@$"+he=s+2,me=s+2
|
||||
|
||||
syn region csInterVerbString matchgroup=csQuote start=+\$@"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
|
||||
|
||||
syn region csBracketed matchgroup=csParens start=+(+ end=+)+ contained transparent contains=@csAll,csBracketed
|
||||
syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
|
||||
syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
|
||||
|
||||
syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csInterpolatedString,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csType,csUnicodeNumber,csUnicodeSpecifier,csVerbatimString,csUserType,csUserIdentifier,csUserInterface,csUserMethod
|
||||
syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csType,csUnicodeNumber,csUnicodeSpecifier,csInterpolatedString,csVerbatimString,csInterVerbString,csUserType,csUserIdentifier,csUserInterface,csUserMethod
|
||||
|
||||
" The default highlighting.
|
||||
hi def link csType Type
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2020 Apr 27
|
||||
" Last Change: 2020 Nov 28
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
@@ -21,20 +21,20 @@ let s:cpo = &cpo
|
||||
set cpo-=C
|
||||
let s:supported = [
|
||||
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
|
||||
\ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
|
||||
\ 'sid', 'rc-buggy',
|
||||
\ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
|
||||
\ 'trixie', 'sid', 'rc-buggy',
|
||||
\
|
||||
\ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'groovy', 'devel'
|
||||
\ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel'
|
||||
\ ]
|
||||
let s:unsupported = [
|
||||
\ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
|
||||
\ 'woody', 'sarge', 'etch', 'lenny', 'squeeze',
|
||||
\ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
|
||||
\
|
||||
\ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
|
||||
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
|
||||
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
|
||||
\ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
|
||||
\ 'disco'
|
||||
\ 'disco', 'eoan'
|
||||
\ ]
|
||||
let &cpo=s:cpo
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2018 Aug 11
|
||||
" Last Change: 2020 Oct 26
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
@@ -47,22 +47,24 @@ exe 'syn keyword debcontrolArchitecture contained '. join(s:pairs)
|
||||
|
||||
unlet s:kernels s:archs s:pairs
|
||||
|
||||
" Keep in sync with https://metadata.ftp-master.org/sections.822
|
||||
" curl -q https://metadata.ftp-master.debian.org/sections.822 2>/dev/null| grep-dctrl -n --not -FSection -sSection / -
|
||||
let s:sections = [
|
||||
\ 'admin', 'cli-mono', 'comm', 'database', 'debian-installer', 'debug'
|
||||
\, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded'
|
||||
\, 'fonts', 'games', 'gnome', 'gnustep', 'gnu-r', 'golang', 'graphics'
|
||||
\, 'fonts', 'games', 'gnome', 'gnu-r', 'gnustep', 'golang', 'graphics'
|
||||
\, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection'
|
||||
\, 'java\%(script\)\=', 'kde', 'kernel', 'libs', 'libdevel', 'lisp'
|
||||
\, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net'
|
||||
\, 'news', 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python'
|
||||
\, 'ruby', 'rust', 'science', 'shells', 'sound', 'text', 'tex'
|
||||
\, 'java', 'javascript', 'kde', 'kernel', 'libdevel', 'libs', 'lisp'
|
||||
\, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net', 'news'
|
||||
\, 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python', 'raku'
|
||||
\, 'ruby', 'rust', 'science', 'shells', 'sound', 'tasks', 'tex', 'text'
|
||||
\, 'utils', 'vcs', 'video', 'web', 'x11', 'xfce', 'zope'
|
||||
\ ]
|
||||
|
||||
syn keyword debcontrolMultiArch contained no foreign allowed same
|
||||
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
|
||||
syn keyword debcontrolPriority contained extra important optional required standard
|
||||
exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\%('.join(s:sections, '\|').'\)"'
|
||||
exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\<\%('.join(s:sections, '\|').'\)\>"'
|
||||
syn keyword debcontrolPackageType contained udeb deb
|
||||
syn match debcontrolVariable contained "\${.\{-}}"
|
||||
syn keyword debcontrolDmUpload contained yes
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Debian sources.list
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
|
||||
" Last Change: 2020 Apr 27
|
||||
" Last Change: 2020 Nov 28
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
@@ -23,20 +23,20 @@ let s:cpo = &cpo
|
||||
set cpo-=C
|
||||
let s:supported = [
|
||||
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
|
||||
\ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
|
||||
\ 'sid', 'rc-buggy',
|
||||
\ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
|
||||
\ 'trixie', 'sid', 'rc-buggy',
|
||||
\
|
||||
\ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'groovy', 'devel'
|
||||
\ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel'
|
||||
\ ]
|
||||
let s:unsupported = [
|
||||
\ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
|
||||
\ 'woody', 'sarge', 'etch', 'lenny', 'squeeze',
|
||||
\ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
|
||||
\
|
||||
\ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
|
||||
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
|
||||
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
|
||||
\ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
|
||||
\ 'disco'
|
||||
\ 'disco', 'eoan'
|
||||
\ ]
|
||||
let &cpo=s:cpo
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Diff (context or unified)
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Translations by Jakson Alves de Aquino.
|
||||
" Last Change: 2016 Apr 02
|
||||
" Last Change: 2020 Dec 07
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -346,9 +346,11 @@ syn match diffLine "^---$"
|
||||
syn match diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*"
|
||||
|
||||
syn match diffFile "^diff\>.*"
|
||||
syn match diffFile "^+++ .*"
|
||||
syn match diffFile "^Index: .*"
|
||||
syn match diffFile "^==== .*"
|
||||
" Old style diff uses *** for old and --- for new.
|
||||
" Unified diff uses --- for old and +++ for new; names are wrong but it works.
|
||||
syn match diffOldFile "^+++ .*"
|
||||
syn match diffOldFile "^\*\*\* .*"
|
||||
syn match diffNewFile "^--- .*"
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ if has("folding")
|
||||
syn region lexPatComment fold start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
|
||||
syn region lexPatComment fold start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
|
||||
else
|
||||
syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='^}' skipnl skipwhitecontained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
|
||||
syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='^}' skipnl skipwhite contained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
|
||||
syn region lexPatComment start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
|
||||
syn region lexPatComment start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
|
||||
endif
|
||||
|
||||
44
runtime/syntax/pbtxt.vim
Normal file
44
runtime/syntax/pbtxt.vim
Normal file
@@ -0,0 +1,44 @@
|
||||
" Vim syntax file
|
||||
" Language: Protobuf Text Format
|
||||
" Maintainer: Lakshay Garg <lakshayg@outlook.in>
|
||||
" Last Change: 2020 Nov 17
|
||||
" Homepage: https://github.com/lakshayg/vim-pbtxt
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn case ignore
|
||||
|
||||
syn keyword pbtxtTodo TODO FIXME contained
|
||||
syn keyword pbtxtBool true false contained
|
||||
|
||||
syn match pbtxtInt display "\<\(0\|[1-9]\d*\)\>"
|
||||
syn match pbtxtHex display "\<0[xX]\x\+\>"
|
||||
syn match pbtxtFloat display "\(0\|[1-9]\d*\)\=\.\d*"
|
||||
syn match pbtxtMessage display "^\s*\w\+\s*{"me=e-1
|
||||
syn match pbtxtField display "^\s*\w\+:"me=e-1
|
||||
syn match pbtxtEnum display ":\s*\a\w\+"ms=s+1 contains=pbtxtBool
|
||||
syn region pbtxtString start=+"+ skip=+\\"+ end=+"+ contains=@Spell
|
||||
syn region pbtxtComment start="#" end="$" keepend contains=pbtxtTodo,@Spell
|
||||
|
||||
hi def link pbtxtTodo Todo
|
||||
hi def link pbtxtBool Boolean
|
||||
hi def link pbtxtInt Number
|
||||
hi def link pbtxtHex Number
|
||||
hi def link pbtxtFloat Float
|
||||
hi def link pbtxtMessage Structure
|
||||
hi def link pbtxtField Identifier
|
||||
hi def link pbtxtEnum Define
|
||||
hi def link pbtxtString String
|
||||
hi def link pbtxtComment Comment
|
||||
|
||||
let b:current_syntax = "pbtxt"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet
|
||||
@@ -1,26 +1,36 @@
|
||||
" syntax file for Protocol Buffers - Google's data interchange format
|
||||
"
|
||||
" Protocol Buffers - Google's data interchange format
|
||||
" Copyright 2008 Google Inc. All rights reserved.
|
||||
" https://developers.google.com/protocol-buffers/
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
" of this software and associated documentation files (the "Software"), to deal
|
||||
" in the Software without restriction, including without limitation the rights
|
||||
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
" copies of the Software, and to permit persons to whom the Software is
|
||||
" furnished to do so, subject to the following conditions:
|
||||
" Redistribution and use in source and binary forms, with or without
|
||||
" modification, are permitted provided that the following conditions are
|
||||
" met:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be included in
|
||||
" all copies or substantial portions of the Software.
|
||||
" * Redistributions of source code must retain the above copyright
|
||||
" notice, this list of conditions and the following disclaimer.
|
||||
" * Redistributions in binary form must reproduce the above
|
||||
" copyright notice, this list of conditions and the following disclaimer
|
||||
" in the documentation and/or other materials provided with the
|
||||
" distribution.
|
||||
" * Neither the name of Google Inc. nor the names of its
|
||||
" contributors may be used to endorse or promote products derived from
|
||||
" this software without specific prior written permission.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
" THE SOFTWARE.
|
||||
"
|
||||
" http://code.google.com/p/protobuf/
|
||||
" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
" This is the Vim syntax file for Google Protocol Buffers as found at
|
||||
" https://github.com/protocolbuffers/protobuf
|
||||
" Last update: 2020 Oct 29
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -33,10 +43,10 @@ syn keyword protoTodo contained TODO FIXME XXX
|
||||
syn cluster protoCommentGrp contains=protoTodo
|
||||
|
||||
syn keyword protoSyntax syntax import option
|
||||
syn keyword protoStructure package message group
|
||||
syn keyword protoStructure package message group oneof
|
||||
syn keyword protoRepeat optional required repeated
|
||||
syn keyword protoDefault default
|
||||
syn keyword protoExtend extend extensions to max
|
||||
syn keyword protoExtend extend extensions to max reserved
|
||||
syn keyword protoRPC service rpc returns
|
||||
|
||||
syn keyword protoType int32 int64 uint32 uint64 sint32 sint64
|
||||
@@ -48,10 +58,10 @@ syn keyword protoBool true false
|
||||
syn match protoInt /-\?\<\d\+\>/
|
||||
syn match protoInt /\<0[xX]\x+\>/
|
||||
syn match protoFloat /\<-\?\d*\(\.\d*\)\?/
|
||||
syn region protoComment start="\/\*" end="\*\/" contains=@protoCommentGrp
|
||||
syn region protoComment start="//" skip="\\$" end="$" keepend contains=@protoCommentGrp
|
||||
syn region protoString start=/"/ skip=/\\./ end=/"/
|
||||
syn region protoString start=/'/ skip=/\\./ end=/'/
|
||||
syn region protoComment start="\/\*" end="\*\/" contains=@pbCommentGrp,@Spell
|
||||
syn region protoComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp,@Spell
|
||||
syn region protoString start=/"/ skip=/\\./ end=/"/ contains=@Spell
|
||||
syn region protoString start=/'/ skip=/\\./ end=/'/ contains=@Spell
|
||||
|
||||
hi def link protoTodo Todo
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
" Language: shell (sh) Korn shell (ksh) bash (sh)
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
|
||||
" Last Change: Aug 10, 2020
|
||||
" Version: 193
|
||||
" Last Change: Nov 24, 2020
|
||||
" Version: 196
|
||||
" 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)
|
||||
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
|
||||
|
||||
" quit when a syntax file was already loaded {{{1
|
||||
if exists("b:current_syntax")
|
||||
@@ -137,7 +137,10 @@ 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,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 shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shCaseList add=shForPP
|
||||
endif
|
||||
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
|
||||
" COMBAK: removing shEscape fromshDblQuoteList fails ksh04:43
|
||||
@@ -149,15 +152,17 @@ syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote
|
||||
syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
|
||||
syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shFunctionList add=shRepeat
|
||||
syn cluster shFunctionList add=shDblBrace,shDblParen
|
||||
syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP
|
||||
endif
|
||||
syn cluster shHereBeginList contains=@shCommandSubList
|
||||
syn cluster shHereList contains=shBeginHere,shHerePayload
|
||||
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 shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shLoopoList add=shForPP
|
||||
endif
|
||||
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
|
||||
@@ -256,7 +261,9 @@ syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum
|
||||
ShFoldIfDoFor syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
|
||||
ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList
|
||||
ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
|
||||
ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList
|
||||
endif
|
||||
|
||||
if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
|
||||
syn cluster shCaseList add=shRepeat
|
||||
@@ -396,23 +403,23 @@ syn match shBQComment contained "#.\{-}\ze`" contains=@shCommentGroup
|
||||
|
||||
" Here Documents: {{{1
|
||||
" =========================================
|
||||
" Note : shHereDoc0[137] only had shDblQuoteList contained
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc02 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc04 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t'"|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^\t|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^\t|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc06 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc07 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc08 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc09 end="^\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" contains=@shDblQuoteList
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc12 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc13 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc14 end="^\s*\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc15 end="^\z1\s*$"
|
||||
ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc16 end="^\s*\z1\s*$"
|
||||
|
||||
|
||||
" Here Strings: {{{1
|
||||
" =============
|
||||
@@ -424,7 +431,7 @@ endif
|
||||
" Identifiers: {{{1
|
||||
"=============
|
||||
syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained
|
||||
syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign
|
||||
syn match shVariable "\<\h\w*\ze=" nextgroup=shVarAssign
|
||||
syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote,shVar
|
||||
syn match shVar contained "\h\w*"
|
||||
syn region shAtExpr contained start="@(" end=")" contains=@shIdList
|
||||
@@ -756,6 +763,7 @@ if !exists("skip_sh_syntax_inits")
|
||||
hi def link shHereDoc13 shRedir
|
||||
hi def link shHereDoc14 shRedir
|
||||
hi def link shHereDoc15 shRedir
|
||||
hi def link shHereDoc16 shRedir
|
||||
endif
|
||||
|
||||
" Delete shell folding commands {{{1
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
" Vim syntax file
|
||||
" Language: OpenSSH server configuration file (sshd_config)
|
||||
" Author: David Necas (Yeti)
|
||||
" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
|
||||
" Maintainer: Jakub Jelen <jakuje at gmail dot com>
|
||||
" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
|
||||
" Contributor: Thilo Six
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Contributor: Karsten Hopp <karsten@redhat.com>
|
||||
" Originally: 2009-07-09
|
||||
" Last Change: 2019-05-31
|
||||
" SSH Version: 7.9p1
|
||||
" Last Change: 2020-10-20
|
||||
" SSH Version: 8.4p1
|
||||
"
|
||||
|
||||
" Setup
|
||||
@@ -79,16 +80,24 @@ syn match sshdconfigMAC "\<umac-128-etm@openssh\.com\>"
|
||||
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-ed25519
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519-cert-v01@openssh\.com\>"
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-rsa
|
||||
syn keyword sshdconfigHostKeyAlgo rsa-sha2-256
|
||||
syn keyword sshdconfigHostKeyAlgo rsa-sha2-512
|
||||
syn keyword sshdconfigHostKeyAlgo ssh-dss
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384
|
||||
syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<rsa-sha2-256-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<rsa-sha2-512-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256@openssh\.com\>"
|
||||
syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
|
||||
|
||||
syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
|
||||
|
||||
@@ -108,12 +117,17 @@ syn keyword sshdconfigIPQoS ef lowdelay throughput reliability
|
||||
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha256
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group16-sha512
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group18-sha512
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1
|
||||
syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384
|
||||
syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521
|
||||
syn keyword sshdconfigKexAlgo curve25519-sha256
|
||||
syn match sshdconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
|
||||
syn match sshdconfigKexAlgo "\<sntrup4591761x25519-sha512@tinyssh\.org\>"
|
||||
|
||||
syn keyword sshdconfigTunnel point-to-point ethernet
|
||||
|
||||
@@ -187,6 +201,7 @@ syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly
|
||||
syn keyword sshdconfigKeyword IPQoS
|
||||
syn keyword sshdconfigKeyword IgnoreRhosts
|
||||
syn keyword sshdconfigKeyword IgnoreUserKnownHosts
|
||||
syn keyword sshdconfigKeyword Include
|
||||
syn keyword sshdconfigKeyword KbdInteractiveAuthentication
|
||||
syn keyword sshdconfigKeyword KerberosAuthentication
|
||||
syn keyword sshdconfigKeyword KerberosGetAFSToken
|
||||
@@ -221,11 +236,13 @@ syn keyword sshdconfigKeyword PrintMotd
|
||||
syn keyword sshdconfigKeyword Protocol
|
||||
syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes
|
||||
syn keyword sshdconfigKeyword PubkeyAuthentication
|
||||
syn keyword sshdconfigKeyword PubkeyAuthOptions
|
||||
syn keyword sshdconfigKeyword RSAAuthentication
|
||||
syn keyword sshdconfigKeyword RekeyLimit
|
||||
syn keyword sshdconfigKeyword RevokedKeys
|
||||
syn keyword sshdconfigKeyword RDomain
|
||||
syn keyword sshdconfigKeyword RhostsRSAAuthentication
|
||||
syn keyword sshdconfigKeyword SecurityKeyProvider
|
||||
syn keyword sshdconfigKeyword ServerKeyBits
|
||||
syn keyword sshdconfigKeyword SetEnv
|
||||
syn keyword sshdconfigKeyword ShowPatchLevel
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: TypeScript and TypeScriptReact
|
||||
" Maintainer: Bram Moolenaar, Herrington Darkholme
|
||||
" Last Change: 2019 Nov 30
|
||||
" Last Change: 2020 Oct 27
|
||||
" Based On: Herrington Darkholme's yats.vim
|
||||
" Changes: See https:github.com/HerringtonDarkholme/yats.vim
|
||||
" Credits: See yats.vim on github
|
||||
@@ -21,15 +21,14 @@ if main_syntax == 'typescript' || main_syntax == 'typescriptreact'
|
||||
setlocal iskeyword+=$
|
||||
" syntax cluster htmlJavaScript contains=TOP
|
||||
endif
|
||||
" For private field added from TypeScript 3.8
|
||||
setlocal iskeyword+=#
|
||||
|
||||
" lowest priority on least used feature
|
||||
syntax match typescriptLabel /[a-zA-Z_$]\k*:/he=e-1 contains=typescriptReserved nextgroup=@typescriptStatement skipwhite skipempty
|
||||
|
||||
" other keywords like return,case,yield uses containedin
|
||||
syntax region typescriptBlock matchgroup=typescriptBraces start=/{/ end=/}/ contains=@typescriptStatement,@typescriptComments fold
|
||||
|
||||
|
||||
"runtime syntax/basic/identifiers.vim
|
||||
syntax cluster afterIdentifier contains=
|
||||
\ typescriptDotNotation,
|
||||
\ typescriptFuncCallArg,
|
||||
@@ -60,7 +59,56 @@ syntax region typescriptFuncCallArg contained matchgroup=typescriptPa
|
||||
syntax region typescriptEventFuncCallArg contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
|
||||
syntax region typescriptEventString contained start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/ contains=typescriptASCII,@events
|
||||
|
||||
"runtime syntax/basic/literal.vim
|
||||
syntax region typescriptDestructureString
|
||||
\ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/
|
||||
\ contains=typescriptASCII
|
||||
\ nextgroup=typescriptDestructureAs
|
||||
\ contained skipwhite skipempty
|
||||
|
||||
syntax cluster typescriptVariableDeclarations
|
||||
\ contains=typescriptVariableDeclaration,@typescriptDestructures
|
||||
|
||||
syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
|
||||
\ nextgroup=typescriptTypeAnnotation,typescriptAssign
|
||||
\ contained skipwhite skipempty
|
||||
|
||||
syntax cluster typescriptDestructureVariables contains=
|
||||
\ typescriptRestOrSpread,
|
||||
\ typescriptDestructureComma,
|
||||
\ typescriptDestructureLabel,
|
||||
\ typescriptDestructureVariable,
|
||||
\ @typescriptDestructures
|
||||
|
||||
syntax match typescriptDestructureVariable /[A-Za-z_$]\k*/ contained
|
||||
\ nextgroup=typescriptDefaultParam
|
||||
\ contained skipwhite skipempty
|
||||
|
||||
syntax match typescriptDestructureLabel /[A-Za-z_$]\k*\ze\_s*:/
|
||||
\ nextgroup=typescriptDestructureAs
|
||||
\ contained skipwhite skipempty
|
||||
|
||||
syntax match typescriptDestructureAs /:/
|
||||
\ nextgroup=typescriptDestructureVariable,@typescriptDestructures
|
||||
\ contained skipwhite skipempty
|
||||
|
||||
syntax match typescriptDestructureComma /,/ contained
|
||||
|
||||
syntax cluster typescriptDestructures contains=
|
||||
\ typescriptArrayDestructure,
|
||||
\ typescriptObjectDestructure
|
||||
|
||||
syntax region typescriptArrayDestructure matchgroup=typescriptBraces
|
||||
\ start=/\[/ end=/]/
|
||||
\ contains=@typescriptDestructureVariables,@typescriptComments
|
||||
\ nextgroup=typescriptTypeAnnotation,typescriptAssign
|
||||
\ transparent contained skipwhite skipempty fold
|
||||
|
||||
syntax region typescriptObjectDestructure matchgroup=typescriptBraces
|
||||
\ start=/{/ end=/}/
|
||||
\ contains=typescriptDestructureString,@typescriptDestructureVariables,@typescriptComments
|
||||
\ nextgroup=typescriptTypeAnnotation,typescriptAssign
|
||||
\ transparent contained skipwhite skipempty fold
|
||||
|
||||
"Syntax in the JavaScript code
|
||||
|
||||
" String
|
||||
@@ -77,15 +125,15 @@ syntax region typescriptString
|
||||
\ contains=typescriptSpecial,@Spell
|
||||
\ extend
|
||||
|
||||
syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"
|
||||
syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{1,6}})|c\u|.)"
|
||||
|
||||
" From vim runtime
|
||||
" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
|
||||
syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}]+me=e-1 nextgroup=typescriptDotNotation oneline
|
||||
syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}:]+me=e-1 nextgroup=typescriptDotNotation oneline
|
||||
|
||||
syntax region typescriptTemplate
|
||||
\ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
|
||||
\ contains=typescriptTemplateSubstitution
|
||||
\ contains=typescriptTemplateSubstitution,typescriptSpecial,@Spell
|
||||
\ nextgroup=@typescriptSymbols
|
||||
\ skipwhite skipempty
|
||||
|
||||
@@ -100,18 +148,16 @@ syntax region typescriptArray matchgroup=typescriptBraces
|
||||
syntax match typescriptNumber /\<0[bB][01][01_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
|
||||
syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
|
||||
syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
|
||||
syntax match typescriptNumber /\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\|\.\d[0-9]*/
|
||||
\ nextgroup=typescriptExponent,@typescriptSymbols skipwhite skipempty
|
||||
syntax match typescriptExponent /[eE][+-]\=\d[0-9]*\>/
|
||||
\ nextgroup=@typescriptSymbols skipwhite skipempty contained
|
||||
syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
|
||||
\ nextgroup=typescriptSymbols skipwhite skipempty
|
||||
|
||||
|
||||
" runtime syntax/basic/object.vim
|
||||
syntax region typescriptObjectLiteral matchgroup=typescriptBraces
|
||||
\ start=/{/ end=/}/
|
||||
\ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName
|
||||
\ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName,typescriptObjectAsyncKeyword
|
||||
\ fold contained
|
||||
|
||||
syntax keyword typescriptObjectAsyncKeyword async contained
|
||||
|
||||
syntax match typescriptObjectLabel contained /\k\+\_s*/
|
||||
\ nextgroup=typescriptObjectColon,@typescriptCallImpl
|
||||
\ skipwhite skipempty
|
||||
@@ -136,7 +182,6 @@ syntax match typescriptObjectSpread /\.\.\./ contained containedin=typescriptObj
|
||||
|
||||
syntax match typescriptObjectColon contained /:/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
|
||||
"runtime syntax/basic/symbols.vim
|
||||
" + - ^ ~
|
||||
syntax match typescriptUnaryOp /[+\-~!]/
|
||||
\ nextgroup=@typescriptValue
|
||||
@@ -153,10 +198,12 @@ syntax match typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue s
|
||||
syntax match typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 4: <<=, <<, <=, <
|
||||
syntax match typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: ||, |=, |
|
||||
syntax match typescriptBinaryOp contained /|\(|\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: &&, &=, &
|
||||
syntax match typescriptBinaryOp contained /&\(&\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: ||, |=, |, ||=
|
||||
syntax match typescriptBinaryOp contained /||\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 4: &&, &=, &, &&=
|
||||
syntax match typescriptBinaryOp contained /&&\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: ??, ??=
|
||||
syntax match typescriptBinaryOp contained /??=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: *=, *
|
||||
syntax match typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: %=, %
|
||||
@@ -177,11 +224,18 @@ syntax match typescriptBinaryOp contained /\*\*=\?/ nextgroup=@typescriptValue
|
||||
syntax cluster typescriptSymbols contains=typescriptBinaryOp,typescriptKeywordOp,typescriptTernary,typescriptAssign,typescriptCastKeyword
|
||||
|
||||
" runtime syntax/basic/reserved.vim
|
||||
|
||||
"runtime syntax/basic/keyword.vim
|
||||
"Import
|
||||
syntax keyword typescriptImport from as import
|
||||
syntax keyword typescriptImport from as
|
||||
syntax keyword typescriptImport import
|
||||
\ nextgroup=typescriptImportType
|
||||
\ skipwhite
|
||||
syntax keyword typescriptImportType type
|
||||
\ contained
|
||||
syntax keyword typescriptExport export
|
||||
\ nextgroup=typescriptExportType
|
||||
\ skipwhite
|
||||
syntax match typescriptExportType /\<type\s*{\@=/
|
||||
\ contained skipwhite skipempty skipnl
|
||||
syntax keyword typescriptModule namespace module
|
||||
|
||||
"this
|
||||
@@ -199,16 +253,12 @@ syntax keyword typescriptIdentifier arguments this super
|
||||
\ nextgroup=@afterIdentifier
|
||||
|
||||
syntax keyword typescriptVariable let var
|
||||
\ nextgroup=typescriptVariableDeclaration
|
||||
\ skipwhite skipempty skipnl
|
||||
\ nextgroup=@typescriptVariableDeclarations
|
||||
\ skipwhite skipempty
|
||||
|
||||
syntax keyword typescriptVariable const
|
||||
\ nextgroup=typescriptEnum,typescriptVariableDeclaration
|
||||
\ skipwhite
|
||||
|
||||
syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
|
||||
\ nextgroup=typescriptTypeAnnotation,typescriptAssign
|
||||
\ contained skipwhite skipempty skipnl
|
||||
\ nextgroup=typescriptEnum,@typescriptVariableDeclarations
|
||||
\ skipwhite skipempty
|
||||
|
||||
syntax region typescriptEnum matchgroup=typescriptEnumKeyword start=/enum / end=/\ze{/
|
||||
\ nextgroup=typescriptBlock
|
||||
@@ -271,7 +321,6 @@ syntax cluster typescriptAmbients contains=
|
||||
\ typescriptEnumKeyword,typescriptEnum,
|
||||
\ typescriptModule
|
||||
|
||||
"runtime syntax/basic/doc.vim
|
||||
"Syntax coloring for Node.js shebang line
|
||||
syntax match shellbang "^#!.*node\>"
|
||||
syntax match shellbang "^#!.*iojs\>"
|
||||
@@ -279,8 +328,9 @@ syntax match shellbang "^#!.*iojs\>"
|
||||
|
||||
"JavaScript comments
|
||||
syntax keyword typescriptCommentTodo TODO FIXME XXX TBD
|
||||
syntax match typescriptMagicComment "@ts-\%(ignore\|expect-error\)\>"
|
||||
syntax match typescriptLineComment "//.*"
|
||||
\ contains=@Spell,typescriptCommentTodo,typescriptRef
|
||||
\ contains=@Spell,typescriptCommentTodo,typescriptRef,typescriptMagicComment
|
||||
syntax region typescriptComment
|
||||
\ start="/\*" end="\*/"
|
||||
\ contains=@Spell,typescriptCommentTodo extend
|
||||
@@ -349,24 +399,27 @@ syntax region typescriptDocLinkTag contained matchgroup=typescriptDo
|
||||
|
||||
syntax cluster typescriptDocs contains=typescriptDocParamType,typescriptDocNamedParamType,typescriptDocParam
|
||||
|
||||
if main_syntax == "typescript"
|
||||
if exists("main_syntax") && main_syntax == "typescript"
|
||||
syntax sync clear
|
||||
syntax sync ccomment typescriptComment minlines=200
|
||||
endif
|
||||
|
||||
syntax case match
|
||||
|
||||
"runtime syntax/basic/type.vim
|
||||
" Types
|
||||
syntax match typescriptOptionalMark /?/ contained
|
||||
|
||||
syntax cluster typescriptTypeParameterCluster contains=
|
||||
\ typescriptTypeParameter,
|
||||
\ typescriptGenericDefault
|
||||
|
||||
syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
|
||||
\ start=/</ end=/>/
|
||||
\ contains=typescriptTypeParameter
|
||||
\ contains=@typescriptTypeParameterCluster
|
||||
\ contained
|
||||
|
||||
syntax match typescriptTypeParameter /\K\k*/
|
||||
\ nextgroup=typescriptConstraint,typescriptGenericDefault
|
||||
\ nextgroup=typescriptConstraint
|
||||
\ contained skipwhite skipnl
|
||||
|
||||
syntax keyword typescriptConstraint extends
|
||||
@@ -409,6 +462,7 @@ syntax cluster typescriptPrimaryType contains=
|
||||
\ typescriptTupleType,
|
||||
\ typescriptTypeQuery,
|
||||
\ typescriptStringLiteralType,
|
||||
\ typescriptTemplateLiteralType,
|
||||
\ typescriptReadonlyArrayKeyword,
|
||||
\ typescriptAssertType
|
||||
|
||||
@@ -417,6 +471,17 @@ syntax region typescriptStringLiteralType contained
|
||||
\ nextgroup=typescriptUnion
|
||||
\ skipwhite skipempty
|
||||
|
||||
syntax region typescriptTemplateLiteralType contained
|
||||
\ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
|
||||
\ contains=typescriptTemplateSubstitutionType
|
||||
\ nextgroup=typescriptTypeOperator
|
||||
\ skipwhite skipempty
|
||||
|
||||
syntax region typescriptTemplateSubstitutionType matchgroup=typescriptTemplateSB
|
||||
\ start=/\${/ end=/}/
|
||||
\ contains=@typescriptType
|
||||
\ contained
|
||||
|
||||
syntax region typescriptParenthesizedType matchgroup=typescriptParens
|
||||
\ start=/(/ end=/)/
|
||||
\ contains=@typescriptType
|
||||
@@ -439,7 +504,7 @@ syntax region typescriptObjectType matchgroup=typescriptBraces
|
||||
\ start=/{/ end=/}/
|
||||
\ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier
|
||||
\ nextgroup=@typescriptTypeOperator
|
||||
\ contained skipwhite fold
|
||||
\ contained skipwhite skipnl fold
|
||||
|
||||
syntax cluster typescriptTypeMember contains=
|
||||
\ @typescriptCallSignature,
|
||||
@@ -447,16 +512,21 @@ syntax cluster typescriptTypeMember contains=
|
||||
\ typescriptIndexSignature,
|
||||
\ @typescriptMembers
|
||||
|
||||
syntax match typescriptTupleLable /\K\k*?\?:/
|
||||
\ contained
|
||||
|
||||
syntax region typescriptTupleType matchgroup=typescriptBraces
|
||||
\ start=/\[/ end=/\]/
|
||||
\ contains=@typescriptType,@typescriptComments
|
||||
\ contains=@typescriptType,@typescriptComments,typescriptRestOrSpread,typescriptTupleLable
|
||||
\ contained skipwhite
|
||||
|
||||
syntax cluster typescriptTypeOperator
|
||||
\ contains=typescriptUnion,typescriptTypeBracket
|
||||
\ contains=typescriptUnion,typescriptTypeBracket,typescriptConstraint,typescriptConditionalType
|
||||
|
||||
syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
|
||||
|
||||
syntax match typescriptConditionalType /?\|:/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
|
||||
|
||||
syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
|
||||
syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
|
||||
\ start=/</ end=/>/
|
||||
@@ -511,6 +581,7 @@ syntax match typescriptTypeAnnotation /:/
|
||||
syntax cluster typescriptParameterList contains=
|
||||
\ typescriptTypeAnnotation,
|
||||
\ typescriptAccessibilityModifier,
|
||||
\ typescriptReadonlyModifier,
|
||||
\ typescriptOptionalMark,
|
||||
\ typescriptRestOrSpread,
|
||||
\ typescriptFuncComma,
|
||||
@@ -550,10 +621,9 @@ syntax keyword typescriptReadonlyArrayKeyword readonly
|
||||
\ nextgroup=@typescriptPrimaryType
|
||||
\ skipwhite
|
||||
|
||||
|
||||
" extension
|
||||
if get(g:, 'yats_host_keyword', 1)
|
||||
"runtime syntax/yats.vim
|
||||
"runtime syntax/yats/typescript.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function Boolean
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Error EvalError
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName InternalError
|
||||
@@ -584,7 +654,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptGlobalMethod
|
||||
hi def link typescriptGlobalMethod Structure
|
||||
|
||||
"runtime syntax/yats/es6-number.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Number nextgroup=typescriptGlobalNumberDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalNumberDot /\./ contained nextgroup=typescriptNumberStaticProp,typescriptNumberStaticMethod,typescriptProp
|
||||
syntax keyword typescriptNumberStaticProp contained EPSILON MAX_SAFE_INTEGER MAX_VALUE
|
||||
@@ -599,7 +668,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptNumberMethod
|
||||
hi def link typescriptNumberMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-string.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName String nextgroup=typescriptGlobalStringDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalStringDot /\./ contained nextgroup=typescriptStringStaticMethod,typescriptProp
|
||||
syntax keyword typescriptStringStaticMethod contained fromCharCode fromCodePoint raw nextgroup=typescriptFuncCallArg
|
||||
@@ -615,7 +683,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptStringMethod
|
||||
hi def link typescriptStringMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-array.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Array nextgroup=typescriptGlobalArrayDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalArrayDot /\./ contained nextgroup=typescriptArrayStaticMethod,typescriptProp
|
||||
syntax keyword typescriptArrayStaticMethod contained from isArray of nextgroup=typescriptFuncCallArg
|
||||
@@ -629,7 +696,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptArrayMethod
|
||||
hi def link typescriptArrayMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-object.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Object nextgroup=typescriptGlobalObjectDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalObjectDot /\./ contained nextgroup=typescriptObjectStaticMethod,typescriptProp
|
||||
syntax keyword typescriptObjectStaticMethod contained create defineProperties defineProperty nextgroup=typescriptFuncCallArg
|
||||
@@ -646,7 +712,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptObjectMethod
|
||||
hi def link typescriptObjectMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-symbol.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Symbol nextgroup=typescriptGlobalSymbolDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalSymbolDot /\./ contained nextgroup=typescriptSymbolStaticProp,typescriptSymbolStaticMethod,typescriptProp
|
||||
syntax keyword typescriptSymbolStaticProp contained length iterator match replace
|
||||
@@ -657,13 +722,11 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptSymbolStaticMethod contained for keyFor nextgroup=typescriptFuncCallArg
|
||||
hi def link typescriptSymbolStaticMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-function.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function
|
||||
syntax keyword typescriptFunctionMethod contained apply bind call nextgroup=typescriptFuncCallArg
|
||||
syntax cluster props add=typescriptFunctionMethod
|
||||
hi def link typescriptFunctionMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-math.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Math nextgroup=typescriptGlobalMathDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalMathDot /\./ contained nextgroup=typescriptMathStaticProp,typescriptMathStaticMethod,typescriptProp
|
||||
syntax keyword typescriptMathStaticProp contained E LN10 LN2 LOG10E LOG2E PI SQRT1_2
|
||||
@@ -677,7 +740,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptMathStaticMethod contained sinh sqrt tan tanh trunc nextgroup=typescriptFuncCallArg
|
||||
hi def link typescriptMathStaticMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-date.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Date nextgroup=typescriptGlobalDateDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalDateDot /\./ contained nextgroup=typescriptDateStaticMethod,typescriptProp
|
||||
syntax keyword typescriptDateStaticMethod contained UTC now parse nextgroup=typescriptFuncCallArg
|
||||
@@ -699,13 +761,11 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptDateMethod
|
||||
hi def link typescriptDateMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-json.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName JSON nextgroup=typescriptGlobalJSONDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalJSONDot /\./ contained nextgroup=typescriptJSONStaticMethod,typescriptProp
|
||||
syntax keyword typescriptJSONStaticMethod contained parse stringify nextgroup=typescriptFuncCallArg
|
||||
hi def link typescriptJSONStaticMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-regexp.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName RegExp nextgroup=typescriptGlobalRegExpDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalRegExpDot /\./ contained nextgroup=typescriptRegExpStaticProp,typescriptProp
|
||||
syntax keyword typescriptRegExpStaticProp contained lastIndex
|
||||
@@ -717,7 +777,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptRegExpMethod
|
||||
hi def link typescriptRegExpMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-map.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Map WeakMap
|
||||
syntax keyword typescriptES6MapProp contained size
|
||||
syntax cluster props add=typescriptES6MapProp
|
||||
@@ -727,7 +786,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptES6MapMethod
|
||||
hi def link typescriptES6MapMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-set.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Set WeakSet
|
||||
syntax keyword typescriptES6SetProp contained size
|
||||
syntax cluster props add=typescriptES6SetProp
|
||||
@@ -737,7 +795,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptES6SetMethod
|
||||
hi def link typescriptES6SetMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-proxy.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Proxy
|
||||
syntax keyword typescriptProxyAPI contained getOwnPropertyDescriptor getOwnPropertyNames
|
||||
syntax keyword typescriptProxyAPI contained defineProperty deleteProperty freeze seal
|
||||
@@ -745,7 +802,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptProxyAPI contained iterate ownKeys apply construct
|
||||
hi def link typescriptProxyAPI Keyword
|
||||
|
||||
"runtime syntax/yats/es6-promise.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Promise nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg
|
||||
syntax match typescriptGlobalPromiseDot /\./ contained nextgroup=typescriptPromiseStaticMethod,typescriptProp
|
||||
syntax keyword typescriptPromiseStaticMethod contained resolve reject all race nextgroup=typescriptFuncCallArg
|
||||
@@ -754,7 +810,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptPromiseMethod
|
||||
hi def link typescriptPromiseMethod Keyword
|
||||
|
||||
"runtime syntax/yats/es6-reflect.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect
|
||||
syntax keyword typescriptReflectMethod contained apply construct defineProperty deleteProperty nextgroup=typescriptFuncCallArg
|
||||
syntax keyword typescriptReflectMethod contained enumerate get getOwnPropertyDescriptor nextgroup=typescriptFuncCallArg
|
||||
@@ -763,14 +818,12 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptReflectMethod
|
||||
hi def link typescriptReflectMethod Keyword
|
||||
|
||||
"runtime syntax/yats/ecma-402.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Intl
|
||||
syntax keyword typescriptIntlMethod contained Collator DateTimeFormat NumberFormat nextgroup=typescriptFuncCallArg
|
||||
syntax keyword typescriptIntlMethod contained PluralRules nextgroup=typescriptFuncCallArg
|
||||
syntax cluster props add=typescriptIntlMethod
|
||||
hi def link typescriptIntlMethod Keyword
|
||||
|
||||
"runtime syntax/yats/node.vim
|
||||
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName global process
|
||||
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName console Buffer
|
||||
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName module exports
|
||||
@@ -788,7 +841,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName afterAll
|
||||
syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName expect assert
|
||||
|
||||
"runtime syntax/yats/web.vim
|
||||
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
|
||||
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
|
||||
syntax keyword typescriptBOM containedin=typescriptIdentifierName App Apps ArrayBuffer
|
||||
@@ -1038,7 +1090,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptBOM containedin=typescriptIdentifierName XMLHttpRequestEventTarget
|
||||
hi def link typescriptBOM Structure
|
||||
|
||||
"runtime syntax/yats/web-window.vim
|
||||
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName applicationCache
|
||||
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName closed
|
||||
syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName Components
|
||||
@@ -1145,7 +1196,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName XMLSerializer
|
||||
hi def link typescriptBOMWindowCons Structure
|
||||
|
||||
"runtime syntax/yats/web-navigator.vim
|
||||
syntax keyword typescriptBOMNavigatorProp contained battery buildID connection cookieEnabled
|
||||
syntax keyword typescriptBOMNavigatorProp contained doNotTrack maxTouchPoints oscpu
|
||||
syntax keyword typescriptBOMNavigatorProp contained productSub push serviceWorker
|
||||
@@ -1164,7 +1214,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptServiceWorkerMethod
|
||||
hi def link typescriptServiceWorkerMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-location.vim
|
||||
syntax keyword typescriptBOMLocationProp contained href protocol host hostname port
|
||||
syntax keyword typescriptBOMLocationProp contained pathname search hash username password
|
||||
syntax keyword typescriptBOMLocationProp contained origin
|
||||
@@ -1174,7 +1223,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptBOMLocationMethod
|
||||
hi def link typescriptBOMLocationMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-history.vim
|
||||
syntax keyword typescriptBOMHistoryProp contained length current next previous state
|
||||
syntax keyword typescriptBOMHistoryProp contained scrollRestoration
|
||||
syntax cluster props add=typescriptBOMHistoryProp
|
||||
@@ -1183,7 +1231,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptBOMHistoryMethod
|
||||
hi def link typescriptBOMHistoryMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-console.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName console
|
||||
syntax keyword typescriptConsoleMethod contained count dir error group groupCollapsed nextgroup=typescriptFuncCallArg
|
||||
syntax keyword typescriptConsoleMethod contained groupEnd info log time timeEnd trace nextgroup=typescriptFuncCallArg
|
||||
@@ -1191,7 +1238,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptConsoleMethod
|
||||
hi def link typescriptConsoleMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-xhr.vim
|
||||
syntax keyword typescriptXHRGlobal containedin=typescriptIdentifierName XMLHttpRequest
|
||||
hi def link typescriptXHRGlobal Structure
|
||||
syntax keyword typescriptXHRProp contained onreadystatechange readyState response
|
||||
@@ -1204,7 +1250,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptXHRMethod
|
||||
hi def link typescriptXHRMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-blob.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Blob BlobBuilder
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName File FileReader
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName FileReaderSync
|
||||
@@ -1236,7 +1281,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptURLStaticMethod contained createObjectURL revokeObjectURL nextgroup=typescriptFuncCallArg
|
||||
hi def link typescriptURLStaticMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-crypto.vim
|
||||
syntax keyword typescriptCryptoGlobal containedin=typescriptIdentifierName crypto
|
||||
hi def link typescriptCryptoGlobal Structure
|
||||
syntax keyword typescriptSubtleCryptoMethod contained encrypt decrypt sign verify nextgroup=typescriptFuncCallArg
|
||||
@@ -1250,7 +1294,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptCryptoMethod
|
||||
hi def link typescriptCryptoMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-fetch.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Headers Request
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Response
|
||||
syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName fetch nextgroup=typescriptFuncCallArg
|
||||
@@ -1274,7 +1317,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptResponseMethod
|
||||
hi def link typescriptResponseMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-service-worker.vim
|
||||
syntax keyword typescriptServiceWorkerProp contained controller ready
|
||||
syntax cluster props add=typescriptServiceWorkerProp
|
||||
hi def link typescriptServiceWorkerProp Keyword
|
||||
@@ -1287,7 +1329,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptCacheMethod
|
||||
hi def link typescriptCacheMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-encoding.vim
|
||||
syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextEncoder
|
||||
syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextDecoder
|
||||
hi def link typescriptEncodingGlobal Structure
|
||||
@@ -1298,21 +1339,18 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptEncodingMethod
|
||||
hi def link typescriptEncodingMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-geo.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName Geolocation
|
||||
syntax keyword typescriptGeolocationMethod contained getCurrentPosition watchPosition nextgroup=typescriptFuncCallArg
|
||||
syntax keyword typescriptGeolocationMethod contained clearWatch nextgroup=typescriptFuncCallArg
|
||||
syntax cluster props add=typescriptGeolocationMethod
|
||||
hi def link typescriptGeolocationMethod Keyword
|
||||
|
||||
"runtime syntax/yats/web-network.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName NetworkInformation
|
||||
syntax keyword typescriptBOMNetworkProp contained downlink downlinkMax effectiveType
|
||||
syntax keyword typescriptBOMNetworkProp contained rtt type
|
||||
syntax cluster props add=typescriptBOMNetworkProp
|
||||
hi def link typescriptBOMNetworkProp Keyword
|
||||
|
||||
"runtime syntax/yats/web-payment.vim
|
||||
syntax keyword typescriptGlobal containedin=typescriptIdentifierName PaymentRequest
|
||||
syntax keyword typescriptPaymentMethod contained show abort canMakePayment nextgroup=typescriptFuncCallArg
|
||||
syntax cluster props add=typescriptPaymentMethod
|
||||
@@ -1340,7 +1378,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptPaymentShippingOptionProp
|
||||
hi def link typescriptPaymentShippingOptionProp Keyword
|
||||
|
||||
"runtime syntax/yats/dom-node.vim
|
||||
syntax keyword typescriptDOMNodeProp contained attributes baseURI baseURIObject childNodes
|
||||
syntax keyword typescriptDOMNodeProp contained firstChild lastChild localName namespaceURI
|
||||
syntax keyword typescriptDOMNodeProp contained nextSibling nodeName nodePrincipal
|
||||
@@ -1364,7 +1401,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptDOMNodeType contained DOCUMENT_FRAGMENT_NODE NOTATION_NODE
|
||||
hi def link typescriptDOMNodeType Keyword
|
||||
|
||||
"runtime syntax/yats/dom-elem.vim
|
||||
syntax keyword typescriptDOMElemAttrs contained accessKey clientHeight clientLeft
|
||||
syntax keyword typescriptDOMElemAttrs contained clientTop clientWidth id innerHTML
|
||||
syntax keyword typescriptDOMElemAttrs contained length onafterscriptexecute onbeforescriptexecute
|
||||
@@ -1387,7 +1423,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax keyword typescriptDOMElemFuncs contained getAttribute
|
||||
hi def link typescriptDOMElemFuncs Keyword
|
||||
|
||||
"runtime syntax/yats/dom-document.vim
|
||||
syntax keyword typescriptDOMDocProp contained activeElement body cookie defaultView
|
||||
syntax keyword typescriptDOMDocProp contained designMode dir domain embeds forms head
|
||||
syntax keyword typescriptDOMDocProp contained images lastModified links location plugins
|
||||
@@ -1419,7 +1454,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptDOMDocMethod
|
||||
hi def link typescriptDOMDocMethod Keyword
|
||||
|
||||
"runtime syntax/yats/dom-event.vim
|
||||
syntax keyword typescriptDOMEventTargetMethod contained addEventListener removeEventListener nextgroup=typescriptEventFuncCallArg
|
||||
syntax keyword typescriptDOMEventTargetMethod contained dispatchEvent waitUntil nextgroup=typescriptEventFuncCallArg
|
||||
syntax cluster props add=typescriptDOMEventTargetMethod
|
||||
@@ -1480,7 +1514,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptDOMEventMethod
|
||||
hi def link typescriptDOMEventMethod Keyword
|
||||
|
||||
"runtime syntax/yats/dom-storage.vim
|
||||
syntax keyword typescriptDOMStorage contained sessionStorage localStorage
|
||||
hi def link typescriptDOMStorage Keyword
|
||||
syntax keyword typescriptDOMStorageProp contained length
|
||||
@@ -1491,7 +1524,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptDOMStorageMethod
|
||||
hi def link typescriptDOMStorageMethod Keyword
|
||||
|
||||
"runtime syntax/yats/dom-form.vim
|
||||
syntax keyword typescriptDOMFormProp contained acceptCharset action elements encoding
|
||||
syntax keyword typescriptDOMFormProp contained enctype length method name target
|
||||
syntax cluster props add=typescriptDOMFormProp
|
||||
@@ -1500,7 +1532,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
syntax cluster props add=typescriptDOMFormMethod
|
||||
hi def link typescriptDOMFormMethod Keyword
|
||||
|
||||
"runtime syntax/yats/css.vim
|
||||
syntax keyword typescriptDOMStyle contained alignContent alignItems alignSelf animation
|
||||
syntax keyword typescriptDOMStyle contained animationDelay animationDirection animationDuration
|
||||
syntax keyword typescriptDOMStyle contained animationFillMode animationIterationCount
|
||||
@@ -1575,8 +1606,6 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
|
||||
|
||||
let typescript_props = 1
|
||||
|
||||
"runtime syntax/yats/event.vim
|
||||
syntax keyword typescriptAnimationEvent contained animationend animationiteration
|
||||
syntax keyword typescriptAnimationEvent contained animationstart beginEvent endEvent
|
||||
syntax keyword typescriptAnimationEvent contained repeatEvent
|
||||
@@ -1710,14 +1739,12 @@ if get(g:, 'yats_host_keyword', 1)
|
||||
endif
|
||||
|
||||
" patch
|
||||
"runtime syntax/basic/patch.vim
|
||||
" patch for generated code
|
||||
syntax keyword typescriptGlobal Promise
|
||||
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
|
||||
syntax keyword typescriptGlobal Map WeakMap
|
||||
\ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
|
||||
|
||||
"runtime syntax/basic/members.vim
|
||||
syntax keyword typescriptConstructor contained constructor
|
||||
\ nextgroup=@typescriptCallSignature
|
||||
\ skipwhite skipempty
|
||||
@@ -1725,7 +1752,7 @@ syntax keyword typescriptConstructor contained constructor
|
||||
|
||||
syntax cluster memberNextGroup contains=typescriptMemberOptionality,typescriptTypeAnnotation,@typescriptCallSignature
|
||||
|
||||
syntax match typescriptMember /\K\k*/
|
||||
syntax match typescriptMember /#\?\K\k*/
|
||||
\ nextgroup=@memberNextGroup
|
||||
\ contained skipwhite
|
||||
|
||||
@@ -1765,7 +1792,6 @@ syntax region typescriptComputedMember contained matchgroup=typescriptPropert
|
||||
\ nextgroup=@memberNextGroup
|
||||
\ skipwhite skipempty
|
||||
|
||||
"runtime syntax/basic/class.vim
|
||||
"don't add typescriptMembers to nextgroup, let outer scope match it
|
||||
" so we won't match abstract method outside abstract class
|
||||
syntax keyword typescriptAbstract abstract
|
||||
@@ -1781,7 +1807,7 @@ syntax match typescriptClassName contained /\K\k*/
|
||||
|
||||
syntax region typescriptClassTypeParameter
|
||||
\ start=/</ end=/>/
|
||||
\ contains=typescriptTypeParameter
|
||||
\ contains=@typescriptTypeParameterCluster
|
||||
\ nextgroup=typescriptClassBlock,typescriptClassExtends
|
||||
\ contained skipwhite skipnl
|
||||
|
||||
@@ -1813,7 +1839,7 @@ syntax match typescriptInterfaceName contained /\k\+/
|
||||
\ skipwhite skipnl
|
||||
syntax region typescriptInterfaceTypeParameter
|
||||
\ start=/</ end=/>/
|
||||
\ contains=typescriptTypeParameter
|
||||
\ contains=@typescriptTypeParameterCluster
|
||||
\ nextgroup=typescriptObjectType,typescriptInterfaceExtends
|
||||
\ contained
|
||||
\ skipwhite skipnl
|
||||
@@ -1832,7 +1858,6 @@ syntax region typescriptInterfaceTypeArguments matchgroup=typescriptTypeBrackets
|
||||
|
||||
syntax match typescriptInterfaceComma /,/ contained nextgroup=typescriptInterfaceHeritage skipwhite skipnl
|
||||
|
||||
"runtime syntax/basic/cluster.vim
|
||||
"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
|
||||
syntax cluster typescriptStatement
|
||||
\ contains=typescriptBlock,typescriptVariable,
|
||||
@@ -1872,7 +1897,6 @@ syntax cluster typescriptValue
|
||||
|
||||
syntax cluster typescriptEventExpression contains=typescriptArrowFuncDef,typescriptParenExp,@typescriptValue,typescriptRegexpString,@typescriptEventTypes,typescriptOperator,typescriptGlobal,jsxRegion
|
||||
|
||||
"runtime syntax/basic/function.vim
|
||||
syntax keyword typescriptAsyncFuncKeyword async
|
||||
\ nextgroup=typescriptFuncKeyword,typescriptArrowFuncDef
|
||||
\ skipwhite
|
||||
@@ -1894,7 +1918,7 @@ syntax match typescriptFuncName contained /\K\k*/
|
||||
\ skipwhite
|
||||
|
||||
" destructuring ({ a: ee }) =>
|
||||
syntax match typescriptArrowFuncDef contained /({\_[^}]*}\(:\_[^)]\)\?)\s*=>/
|
||||
syntax match typescriptArrowFuncDef contained /(\(\s*\({\_[^}]*}\|\k\+\)\(:\_[^)]\)\?,\?\)\+)\s*=>/
|
||||
\ contains=typescriptArrowFuncArg,typescriptArrowFunc
|
||||
\ nextgroup=@typescriptExpression,typescriptBlock
|
||||
\ skipwhite skipempty
|
||||
@@ -1913,7 +1937,7 @@ syntax match typescriptArrowFuncDef contained /\K\k*\s*=>/
|
||||
\ skipwhite skipempty
|
||||
|
||||
" TODO: optimize this pattern
|
||||
syntax region typescriptArrowFuncDef contained start=/(\_[^)]*):/ end=/=>/
|
||||
syntax region typescriptArrowFuncDef contained start=/(\_[^(^)]*):/ end=/=>/
|
||||
\ contains=typescriptArrowFuncArg,typescriptArrowFunc,typescriptTypeAnnotation
|
||||
\ nextgroup=@typescriptExpression,typescriptBlock
|
||||
\ skipwhite skipempty keepend
|
||||
@@ -1925,7 +1949,7 @@ syntax region typescriptArrowFuncArg contained start=/<\|(/ end=/\ze=>
|
||||
syntax region typescriptReturnAnnotation contained start=/:/ end=/{/me=e-1 contains=@typescriptType nextgroup=typescriptBlock
|
||||
|
||||
|
||||
syntax region typescriptFuncImpl contained start=/function/ end=/{/me=e-1
|
||||
syntax region typescriptFuncImpl contained start=/function\>/ end=/{/me=e-1
|
||||
\ contains=typescriptFuncKeyword
|
||||
\ nextgroup=typescriptBlock
|
||||
|
||||
@@ -1941,9 +1965,8 @@ syntax region typescriptParamImpl matchgroup=typescriptParens
|
||||
\ nextgroup=typescriptReturnAnnotation,typescriptBlock
|
||||
\ contained skipwhite skipnl
|
||||
|
||||
"runtime syntax/basic/decorator.vim
|
||||
syntax match typescriptDecorator /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/
|
||||
\ nextgroup=typescriptArgumentList,typescriptTypeArguments
|
||||
\ nextgroup=typescriptFuncCallArg,typescriptTypeArguments
|
||||
\ contains=@_semantic,typescriptDotNotation
|
||||
|
||||
" Define the default highlighting.
|
||||
@@ -1957,6 +1980,7 @@ hi def link typescriptComment Comment
|
||||
hi def link typescriptLineComment Comment
|
||||
hi def link typescriptDocComment Comment
|
||||
hi def link typescriptCommentTodo Todo
|
||||
hi def link typescriptMagicComment SpecialComment
|
||||
hi def link typescriptRef Include
|
||||
hi def link typescriptDocNotation SpecialComment
|
||||
hi def link typescriptDocTags SpecialComment
|
||||
@@ -1970,9 +1994,11 @@ hi def link typescriptDocParamType Type
|
||||
hi def link typescriptString String
|
||||
hi def link typescriptSpecial Special
|
||||
hi def link typescriptStringLiteralType String
|
||||
hi def link typescriptTemplateLiteralType String
|
||||
hi def link typescriptStringMember String
|
||||
hi def link typescriptTemplate String
|
||||
hi def link typescriptEventString String
|
||||
hi def link typescriptDestructureString String
|
||||
hi def link typescriptASCII Special
|
||||
hi def link typescriptTemplateSB Label
|
||||
hi def link typescriptRegexpString String
|
||||
@@ -1986,6 +2012,7 @@ hi def link typescriptDefault typescriptCase
|
||||
hi def link typescriptBranch Conditional
|
||||
hi def link typescriptIdentifier Structure
|
||||
hi def link typescriptVariable Identifier
|
||||
hi def link typescriptDestructureVariable PreProc
|
||||
hi def link typescriptEnumKeyword Identifier
|
||||
hi def link typescriptRepeat Repeat
|
||||
hi def link typescriptForOperator Repeat
|
||||
@@ -1997,14 +2024,17 @@ hi def link typescriptCastKeyword Special
|
||||
hi def link typescriptType Type
|
||||
hi def link typescriptNull Boolean
|
||||
hi def link typescriptNumber Number
|
||||
hi def link typescriptExponent Number
|
||||
hi def link typescriptBoolean Boolean
|
||||
hi def link typescriptObjectLabel typescriptLabel
|
||||
hi def link typescriptDestructureLabel Function
|
||||
hi def link typescriptLabel Label
|
||||
hi def link typescriptTupleLable Label
|
||||
hi def link typescriptStringProperty String
|
||||
hi def link typescriptImport Special
|
||||
hi def link typescriptImportType Special
|
||||
hi def link typescriptAmbientDeclaration Special
|
||||
hi def link typescriptExport Special
|
||||
hi def link typescriptExportType Special
|
||||
hi def link typescriptModule Special
|
||||
hi def link typescriptTry Special
|
||||
hi def link typescriptExceptions Special
|
||||
@@ -2013,6 +2043,7 @@ hi def link typescriptMember Function
|
||||
hi def link typescriptMethodAccessor Operator
|
||||
|
||||
hi def link typescriptAsyncFuncKeyword Keyword
|
||||
hi def link typescriptObjectAsyncKeyword Keyword
|
||||
hi def link typescriptAsyncFor Keyword
|
||||
hi def link typescriptFuncKeyword Keyword
|
||||
hi def link typescriptAsyncFunc Keyword
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Zsh shell script
|
||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2020-01-23
|
||||
" Latest Revision: 2020-11-21
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/chrisbra/vim-zsh
|
||||
|
||||
@@ -14,7 +14,7 @@ let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:ContainedGroup()
|
||||
" needs 7.4.2008 for execute() function
|
||||
" needs 7.4.2008 for execute() function
|
||||
let result='TOP'
|
||||
" vim-pandoc syntax defines the @langname cluster for embedded syntax languages
|
||||
" However, if no syntax is defined yet, `syn list @zsh` will return
|
||||
@@ -41,16 +41,6 @@ if get(g:, 'zsh_fold_enable', 0)
|
||||
setlocal foldmethod=syntax
|
||||
endif
|
||||
|
||||
syn keyword zshTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn region zshComment oneline start='\%(^\|\s\+\)#' end='$'
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn region zshComment start='^\s*#' end='^\%(\s*#\)\@!'
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'
|
||||
|
||||
syn match zshPOSIXQuoted '\\[xX][0-9a-fA-F]\{1,2}'
|
||||
syn match zshPOSIXQuoted '\\[0-7]\{1,3}'
|
||||
syn match zshPOSIXQuoted '\\u[0-9a-fA-F]\{1,4}'
|
||||
@@ -188,11 +178,13 @@ syn match zshOption /
|
||||
\ \%(\%(\<no_\?\)\?casematch\>\)\|\%(\%(no_\?\)\?case_match\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?cbases\>\)\|\%(\%(no_\?\)\?c_bases\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?cdablevars\>\)\|\%(\%(no_\?\)\?cdable_vars\>\)\|\%(\%(no_\?\)\?cd_able_vars\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?cdsilent\>\)\|\%(\%(no_\?\)\?cd_silent\>\)\|\%(\%(no_\?\)\?cd_silent\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?chasedots\>\)\|\%(\%(no_\?\)\?chase_dots\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?chaselinks\>\)\|\%(\%(no_\?\)\?chase_links\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?checkjobs\>\)\|\%(\%(no_\?\)\?check_jobs\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?checkrunningjobs\>\)\|\%(\%(no_\?\)\?check_running_jobs\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?clobber\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?clobberempty\>\)\|\%(\%(no_\?\)\?clobber_empty\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?combiningchars\>\)\|\%(\%(no_\?\)\?combining_chars\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?completealiases\>\)\|\%(\%(no_\?\)\?complete_aliases\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?completeinword\>\)\|\%(\%(no_\?\)\?complete_in_word\>\)\|
|
||||
@@ -333,6 +325,7 @@ syn match zshOption /
|
||||
\ \%(\%(\<no_\?\)\?shnullcmd\>\)\|\%(\%(no_\?\)\?sh_nullcmd\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?shoptionletters\>\)\|\%(\%(no_\?\)\?sh_option_letters\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?shortloops\>\)\|\%(\%(no_\?\)\?short_loops\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?shortrepeat\>\)\|\%(\%(no_\?\)\?short_repeat\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?shwordsplit\>\)\|\%(\%(no_\?\)\?sh_word_split\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?singlecommand\>\)\|\%(\%(no_\?\)\?single_command\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?singlelinezle\>\)\|\%(\%(no_\?\)\?single_line_zle\>\)\|
|
||||
@@ -351,6 +344,8 @@ syn match zshOption /
|
||||
\ \%(\%(\<no_\?\)\?xtrace\>\)\|
|
||||
\ \%(\%(\<no_\?\)\?zle\>\)/ nextgroup=zshOption,zshComment skipwhite contained
|
||||
|
||||
syn case match
|
||||
|
||||
syn keyword zshTypes float integer local typeset declare private readonly
|
||||
|
||||
" XXX: this may be too much
|
||||
@@ -368,7 +363,7 @@ exe 'syn region zshSubst matchgroup=zshSubstDelim transparent start=/\$(/
|
||||
syn region zshParentheses transparent start='(' skip='\\)' end=')' fold
|
||||
syn region zshGlob start='(#' end=')'
|
||||
syn region zshMathSubst matchgroup=zshSubstDelim transparent
|
||||
\ start='\$((' skip='\\)' end='))'
|
||||
\ start='\%(\$\?\)[<=>]\@<!((' skip='\\)' end='))'
|
||||
\ contains=zshParentheses,@zshSubst,zshNumber,
|
||||
\ @zshDerefs,zshString keepend fold
|
||||
" The ms=s+1 prevents matching zshBrackets several times on opening brackets
|
||||
@@ -385,6 +380,16 @@ syn sync minlines=50 maxlines=90
|
||||
syn sync match zshHereDocSync grouphere NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)'
|
||||
syn sync match zshHereDocEndSync groupthere NONE '^\s*EO\a\+\>'
|
||||
|
||||
syn keyword zshTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn region zshComment oneline start='\%(^\|\s\+\)#' end='$'
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn region zshComment start='^\s*#' end='^\%(\s*#\)\@!'
|
||||
\ contains=zshTodo,@Spell fold
|
||||
|
||||
syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'
|
||||
|
||||
hi def link zshTodo Todo
|
||||
hi def link zshComment Comment
|
||||
hi def link zshPreProc PreProc
|
||||
|
||||
@@ -9,9 +9,9 @@ endif
|
||||
|
||||
" Use a compiled Vim9 function for speed
|
||||
def DoIt()
|
||||
let lnum = 1
|
||||
var lnum = 1
|
||||
for c in range(0x100, 0x1ffff)
|
||||
let cs = nr2char(c)
|
||||
var cs = nr2char(c)
|
||||
if charclass(cs) == 3
|
||||
setline(lnum, '|' .. cs .. '| ' .. strwidth(cs))
|
||||
lnum += 1
|
||||
|
||||
@@ -319,7 +319,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will
|
||||
---> 6) Sugar is sweet
|
||||
---> 7) And so are you.
|
||||
|
||||
Doubling to operate on a line also works for operators mentioned below
|
||||
Doubling to operate on a line also works for operators mentioned below.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Lesson 2.7: THE UNDO COMMAND
|
||||
@@ -433,7 +433,7 @@ NOTE: Remember that you should be learning by doing, not memorization.
|
||||
---> This line has a few words that need changing using the change operator.
|
||||
|
||||
Notice that ce deletes the word and places you in Insert mode.
|
||||
cc does the same for the whole line
|
||||
cc does the same for the whole line.
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -804,7 +804,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an
|
||||
b)
|
||||
|
||||
NOTE: You can also use y as an operator: yw yanks one word,
|
||||
yy yanks the whole line, then p puts that line
|
||||
yy yanks the whole line, then p puts that line.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Lesson 6.5: SET OPTION
|
||||
|
||||
|
||||
@@ -906,9 +906,9 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
|
||||
soit appuyé.
|
||||
|
||||
6. Taper ":set xxx" active l'option "xxx". Quelques options sont :
|
||||
'ic' 'ingnorecase' pour ignorer la casse lors des recherches.
|
||||
'is' 'incsearch' pour montrer les appariements partiels.
|
||||
'hls' 'hlsearch' pour mettre en surbrillance les appariements.
|
||||
'ic' 'ignorecase' pour ignorer la casse lors des recherches.
|
||||
'is' 'incsearch' pour montrer les appariements partiels.
|
||||
'hls' 'hlsearch' pour mettre en surbrillance les appariements.
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -906,9 +906,9 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
|
||||
soit appuyé.
|
||||
|
||||
6. Taper ":set xxx" active l'option "xxx". Quelques options sont :
|
||||
'ic' 'ingnorecase' pour ignorer la casse lors des recherches.
|
||||
'is' 'incsearch' pour montrer les appariements partiels.
|
||||
'hls' 'hlsearch' pour mettre en surbrillance les appariements.
|
||||
'ic' 'ignorecase' pour ignorer la casse lors des recherches.
|
||||
'is' 'incsearch' pour montrer les appariements partiels.
|
||||
'hls' 'hlsearch' pour mettre en surbrillance les appariements.
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -319,7 +319,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will
|
||||
---> 6) Sugar is sweet
|
||||
---> 7) And so are you.
|
||||
|
||||
Doubling to operate on a line also works for operators mentioned below
|
||||
Doubling to operate on a line also works for operators mentioned below.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Lesson 2.7: THE UNDO COMMAND
|
||||
@@ -433,7 +433,7 @@ NOTE: Remember that you should be learning by doing, not memorization.
|
||||
---> This line has a few words that need changing using the change operator.
|
||||
|
||||
Notice that ce deletes the word and places you in Insert mode.
|
||||
cc does the same for the whole line
|
||||
cc does the same for the whole line.
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -804,7 +804,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an
|
||||
b)
|
||||
|
||||
NOTE: You can also use y as an operator: yw yanks one word,
|
||||
yy yanks the whole line, then p puts that line
|
||||
yy yanks the whole line, then p puts that line.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Lesson 6.5: SET OPTION
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ GenericName[eo]=Tekstoredaktilo
|
||||
GenericName[fr]=Éditeur de texte
|
||||
GenericName[ja]=テキストエディタ
|
||||
GenericName[ru]=Текстовый редактор
|
||||
GenericName[sr]=Текст Едитор
|
||||
GenericName[sr]=Едитор текст
|
||||
GenericName[tr]=Metin Düzenleyici
|
||||
GenericName=Text Editor
|
||||
# Translators: This is the comment used in the Vim desktop file
|
||||
@@ -24,7 +24,7 @@ Comment[eo]=Redakti tekstajn dosierojn
|
||||
Comment[fr]=Éditer des fichiers texte
|
||||
Comment[ja]=テキストファイルを編集します
|
||||
Comment[ru]=Редактирование текстовых файлов
|
||||
Comment[sr]=Уређивање текст фајлова
|
||||
Comment[sr]=Уређујте текст фајлове
|
||||
Comment[tr]=Metin dosyaları düzenleyin
|
||||
Comment=Edit text files
|
||||
# The translations should come from the po file. Leave them here for now, they will
|
||||
@@ -112,7 +112,6 @@ Icon[de]=gvim
|
||||
Icon[eo]=gvim
|
||||
Icon[fr]=gvim
|
||||
Icon[ru]=gvim
|
||||
Icon[sr]=gvim
|
||||
Icon=gvim
|
||||
Categories=Utility;TextEditor;
|
||||
StartupNotify=false
|
||||
|
||||
@@ -161,7 +161,6 @@ static char *null_libintl_bindtextdomain(const char *, const char *);
|
||||
static int dyn_libintl_init(char *dir);
|
||||
static void dyn_libintl_end(void);
|
||||
|
||||
static wchar_t *oldenv = NULL;
|
||||
static HINSTANCE hLibintlDLL = 0;
|
||||
static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
|
||||
static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
|
||||
@@ -205,17 +204,17 @@ dyn_libintl_init(char *dir)
|
||||
if (buf != NULL && buf2 != NULL)
|
||||
{
|
||||
GetEnvironmentVariableW(L"PATH", buf, len);
|
||||
#ifdef _WIN64
|
||||
# ifdef _WIN64
|
||||
_snwprintf(buf2, len2, L"%S\\GvimExt64;%s", dir, buf);
|
||||
#else
|
||||
# else
|
||||
_snwprintf(buf2, len2, L"%S\\GvimExt32;%s", dir, buf);
|
||||
#endif
|
||||
# endif
|
||||
SetEnvironmentVariableW(L"PATH", buf2);
|
||||
hLibintlDLL = LoadLibrary(GETTEXT_DLL);
|
||||
#ifdef GETTEXT_DLL_ALT
|
||||
# ifdef GETTEXT_DLL_ALT
|
||||
if (!hLibintlDLL)
|
||||
hLibintlDLL = LoadLibrary(GETTEXT_DLL_ALT);
|
||||
#endif
|
||||
# endif
|
||||
SetEnvironmentVariableW(L"PATH", buf);
|
||||
}
|
||||
free(buf);
|
||||
@@ -273,56 +272,7 @@ null_libintl_textdomain(const char* /* domainname */)
|
||||
dyn_gettext_load(void)
|
||||
{
|
||||
char szBuff[BUFSIZE];
|
||||
char szLang[BUFSIZE];
|
||||
DWORD len;
|
||||
HKEY keyhandle;
|
||||
int gotlang = 0;
|
||||
|
||||
strcpy(szLang, "LANG=");
|
||||
|
||||
// First try getting the language from the registry, this can be
|
||||
// used to overrule the system language.
|
||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
|
||||
KEY_READ, &keyhandle) == ERROR_SUCCESS)
|
||||
{
|
||||
len = BUFSIZE;
|
||||
if (RegQueryValueEx(keyhandle, "lang", 0, NULL, (BYTE*)szBuff, &len)
|
||||
== ERROR_SUCCESS)
|
||||
{
|
||||
szBuff[len] = 0;
|
||||
strcat(szLang, szBuff);
|
||||
gotlang = 1;
|
||||
}
|
||||
RegCloseKey(keyhandle);
|
||||
}
|
||||
|
||||
if (!gotlang && getenv("LANG") == NULL)
|
||||
{
|
||||
// Get the language from the system.
|
||||
// Could use LOCALE_SISO639LANGNAME, but it's not in Win95.
|
||||
// LOCALE_SABBREVLANGNAME gives us three letters, like "enu", we use
|
||||
// only the first two.
|
||||
len = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME,
|
||||
(LPTSTR)szBuff, BUFSIZE);
|
||||
if (len >= 2 && _strnicmp(szBuff, "en", 2) != 0)
|
||||
{
|
||||
// There are a few exceptions (probably more)
|
||||
if (_strnicmp(szBuff, "cht", 3) == 0
|
||||
|| _strnicmp(szBuff, "zht", 3) == 0)
|
||||
strcpy(szBuff, "zh_TW");
|
||||
else if (_strnicmp(szBuff, "chs", 3) == 0
|
||||
|| _strnicmp(szBuff, "zhc", 3) == 0)
|
||||
strcpy(szBuff, "zh_CN");
|
||||
else if (_strnicmp(szBuff, "jp", 2) == 0)
|
||||
strcpy(szBuff, "ja");
|
||||
else
|
||||
szBuff[2] = 0; // truncate to two-letter code
|
||||
strcat(szLang, szBuff);
|
||||
gotlang = 1;
|
||||
}
|
||||
}
|
||||
if (gotlang)
|
||||
putenv(szLang);
|
||||
|
||||
// Try to locate the runtime files. The path is used to find libintl.dll
|
||||
// and the vim.mo files.
|
||||
@@ -378,10 +328,8 @@ DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */)
|
||||
inc_cRefThisDLL()
|
||||
{
|
||||
#ifdef FEAT_GETTEXT
|
||||
if (g_cRefThisDll == 0) {
|
||||
if (g_cRefThisDll == 0)
|
||||
dyn_gettext_load();
|
||||
oldenv = GetEnvironmentStringsW();
|
||||
}
|
||||
#endif
|
||||
InterlockedIncrement((LPLONG)&g_cRefThisDll);
|
||||
}
|
||||
@@ -390,13 +338,8 @@ inc_cRefThisDLL()
|
||||
dec_cRefThisDLL()
|
||||
{
|
||||
#ifdef FEAT_GETTEXT
|
||||
if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) {
|
||||
if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0)
|
||||
dyn_gettext_free();
|
||||
if (oldenv != NULL) {
|
||||
FreeEnvironmentStringsW(oldenv);
|
||||
oldenv = NULL;
|
||||
}
|
||||
}
|
||||
#else
|
||||
InterlockedDecrement((LPLONG)&g_cRefThisDll);
|
||||
#endif
|
||||
@@ -967,8 +910,8 @@ STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
|
||||
NULL, // Process handle not inheritable.
|
||||
NULL, // Thread handle not inheritable.
|
||||
FALSE, // Set handle inheritance to FALSE.
|
||||
oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
|
||||
oldenv, // Use unmodified environment block.
|
||||
0, // No creation flags.
|
||||
NULL, // Use parent's environment block.
|
||||
NULL, // Use parent's starting directory.
|
||||
&si, // Pointer to STARTUPINFO structure.
|
||||
&pi) // Pointer to PROCESS_INFORMATION structure.
|
||||
@@ -1057,8 +1000,8 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
|
||||
NULL, // Process handle not inheritable.
|
||||
NULL, // Thread handle not inheritable.
|
||||
FALSE, // Set handle inheritance to FALSE.
|
||||
oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
|
||||
oldenv, // Use unmodified environment block.
|
||||
0, // No creation flags.
|
||||
NULL, // Use parent's environment block.
|
||||
NULL, // Use parent's starting directory.
|
||||
&si, // Pointer to STARTUPINFO structure.
|
||||
&pi) // Pointer to PROCESS_INFORMATION structure.
|
||||
|
||||
@@ -264,11 +264,6 @@ For building 64 bit binaries you also need to install the SDK:
|
||||
"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1"
|
||||
You don't need the examples and documentation.
|
||||
|
||||
If you get an error that Win32.mak can't be found, you have to set the
|
||||
variable SDK_INCLUDE_DIR. For example, on Windows 10, installation of MSVC
|
||||
puts include files in the following directory:
|
||||
set SDK_INCLUDE_DIR=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
|
||||
|
||||
|
||||
2. MSYS2 with MinGW
|
||||
===================
|
||||
@@ -385,7 +380,7 @@ The original 'mingw32' compiler is outdated, and may no longer work:
|
||||
Once you have downloaded the compiler binaries, unpack them on your hard disk
|
||||
somewhere, and put them on your PATH. Go to the Control Panel, (Performance
|
||||
and Maintenance), System, Advanced, and edit the environment from there. If
|
||||
you use the standalone MinGW-w64 compiler, the path may depends on your
|
||||
you use the standalone MinGW-w64 compiler, the path may depend on your
|
||||
installation. If you use msys2 compilers, set your installed paths (normally
|
||||
one of the following):
|
||||
|
||||
|
||||
@@ -9,12 +9,12 @@ If you already have an executable version of Vim, you don't need this.
|
||||
If you skip settings described here, then you will get the default Vim
|
||||
behavior as it is documented, which should be fine for most users.
|
||||
|
||||
The file "feature.h" can be edited to match your preferences, but this files
|
||||
The file "feature.h" can be edited to match your preferences, but this file
|
||||
does not describe possibilities hidden in feature.h acrobatics, however
|
||||
parameters from MAKE_VMS.MMS actively uses and sets up parameters in relation
|
||||
parameters from MAKE_VMS.MMS actively use and set up parameters in relation
|
||||
with feature.h
|
||||
|
||||
More information and case analysis you can found in os_vms.txt
|
||||
More information and case analysis you can find in os_vms.txt
|
||||
([runtime.doc]os_vms.txt or :help vms from vim prompt)
|
||||
|
||||
Contents:
|
||||
@@ -145,7 +145,7 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
|
||||
|
||||
Parameter name : VIM_XIM
|
||||
Description : X Input Method. For entering special languages
|
||||
like chinese and Japanese. Please define just
|
||||
like Chinese and Japanese. Please define just
|
||||
one: VIM_XIM or VIM_HANGULIN
|
||||
Options: : YES - Build with support
|
||||
Uncommented - build without support.
|
||||
@@ -210,7 +210,7 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
|
||||
XXD.EXE you should change to subdirectory <.CTAGS> or <.XXD> and build
|
||||
them separately.
|
||||
|
||||
5.2. In these directories you can found one make file for VMS as well.
|
||||
5.2. In these directories you can find one make file for VMS as well.
|
||||
Please read the detailed build instructions in the related *.MMS file.
|
||||
|
||||
6. Deployment
|
||||
@@ -300,7 +300,7 @@ perl_env :
|
||||
So far it works just on Alpha and IA64. More information at:
|
||||
http://www.openvms.compaq.com/openvms/products/ips/gtk.html
|
||||
|
||||
You need also the OpenVMS Porting Library:
|
||||
You also need the OpenVMS Porting Library:
|
||||
http://www.openvms.compaq.com/openvms/products/ips/porting.html
|
||||
|
||||
Source code for GTK and porting library that is used to build
|
||||
@@ -346,7 +346,7 @@ perl_env :
|
||||
|
||||
Edit PERL_INC = to point to perl includes directory where is extern.h
|
||||
|
||||
Build as usually.
|
||||
Build as usual.
|
||||
|
||||
7.4 PYTHON
|
||||
|
||||
@@ -358,7 +358,7 @@ perl_env :
|
||||
python.h is located.
|
||||
Enable Python feature at make_vms.mms with VIM_PYTHON = YES
|
||||
|
||||
Build as usually.
|
||||
Build as usual.
|
||||
|
||||
7.5 TCL
|
||||
|
||||
@@ -371,13 +371,13 @@ perl_env :
|
||||
|
||||
Edit TCL_INC = to point to TCL includes directory where is tcl.h
|
||||
|
||||
Build as usually.
|
||||
Build as usual.
|
||||
|
||||
8. Notes
|
||||
|
||||
8.1. New Compaq C compiler
|
||||
|
||||
If you are using Compaq C compiler V6.2 or newer, Informational messages
|
||||
If you are using Compaq C compiler V6.2 or newer, informational messages
|
||||
of the type QUESTCOMPARE will be displayed. You should ignore those
|
||||
messages ; they are generated only because some test comparisons are done
|
||||
with variables which type vary depending on the OS. Under VMS, those are
|
||||
|
||||
@@ -131,14 +131,6 @@ vim_cv_toupper_broken:
|
||||
Whether the "toupper" C library function works correctly. Set to "yes"
|
||||
if you know it's broken, otherwise set to "no".
|
||||
|
||||
vim_cv_tty_group:
|
||||
The default group of pseudo terminals. Either set to the numeric value
|
||||
of your tty group or to "world" if they are world accessible.
|
||||
|
||||
vim_cv_tty_mode:
|
||||
The default mode of pseudo terminals if they are not world accessible.
|
||||
Most probably the value "0620".
|
||||
|
||||
|
||||
4. EXAMPLE:
|
||||
===========
|
||||
@@ -153,7 +145,6 @@ vim_cv_stat_ignores_slash=yes \
|
||||
vim_cv_tgetent=zero \
|
||||
vim_cv_terminfo=yes \
|
||||
vim_cv_toupper_broken=no \
|
||||
vim_cv_tty_group=world \
|
||||
./configure \
|
||||
--build=i586-linux \
|
||||
--host=armeb-xscale-linux-gnu \
|
||||
|
||||
@@ -1055,17 +1055,23 @@ install.exe: dosinst.c dosinst.h version.h
|
||||
uninstall.exe: uninstall.c dosinst.h version.h
|
||||
$(CC) $(CFLAGS) -o uninstall.exe uninstall.c $(LIB) -lole32
|
||||
|
||||
$(OBJ): | $(OUTDIR)
|
||||
|
||||
$(EXEOBJG): | $(OUTDIR)
|
||||
|
||||
$(EXEOBJC): | $(OUTDIR)
|
||||
|
||||
ifeq ($(VIMDLL),yes)
|
||||
$(TARGET): $(OUTDIR) $(OBJ)
|
||||
$(TARGET): $(OBJ)
|
||||
$(LINK) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid -lgdi32 $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
|
||||
|
||||
$(GVIMEXE): $(OUTDIR) $(EXEOBJG) $(VIMDLLBASE).dll
|
||||
$(GVIMEXE): $(EXEOBJG) $(VIMDLLBASE).dll
|
||||
$(CC) -L. $(EXELFLAGS) -mwindows -o $@ $(EXEOBJG) -l$(VIMDLLBASE)
|
||||
|
||||
$(VIMEXE): $(OUTDIR) $(EXEOBJC) $(VIMDLLBASE).dll
|
||||
$(VIMEXE): $(EXEOBJC) $(VIMDLLBASE).dll
|
||||
$(CC) -L. $(EXELFLAGS) -o $@ $(EXEOBJC) -l$(VIMDLLBASE)
|
||||
else
|
||||
$(TARGET): $(OUTDIR) $(OBJ)
|
||||
$(TARGET): $(OBJ)
|
||||
$(LINK) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
|
||||
endif
|
||||
|
||||
@@ -1280,7 +1286,7 @@ $(OUTDIR)/%.o : xdiff/%.c $(XDIFF_DEPS)
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
|
||||
$(PATHDEF_SRC): Make_cyg_ming.mak Make_cyg.mak Make_ming.mak
|
||||
$(PATHDEF_SRC): Make_cyg_ming.mak Make_cyg.mak Make_ming.mak | $(OUTDIR)
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
@echo creating $(PATHDEF_SRC)
|
||||
@echo '/* pathdef.c */' > $(PATHDEF_SRC)
|
||||
|
||||
@@ -15,11 +15,7 @@
|
||||
# This will build the console version of Vim with no additional interfaces.
|
||||
# To add features, define any of the following:
|
||||
#
|
||||
# For MSVC 11, if you want to include Win32.mak, you need to specify
|
||||
# where the file is, e.g.:
|
||||
# SDK_INCLUDE_DIR="C:\Program Files\Microsoft SDKs\Windows\v7.1\Include"
|
||||
#
|
||||
# !!!! After changing features do "nmake clean" first !!!!
|
||||
# !!!! After changing any features do "nmake clean" first !!!!
|
||||
#
|
||||
# Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is HUGE)
|
||||
#
|
||||
@@ -209,9 +205,6 @@ OBJDIR = $(OBJDIR)V
|
||||
OBJDIR = $(OBJDIR)d
|
||||
!endif
|
||||
|
||||
# If you include Win32.mak, it requires that CPU be set appropriately.
|
||||
# To cross-compile for Win64, set CPU=AMD64 or CPU=IA64.
|
||||
|
||||
!ifdef PROCESSOR_ARCHITECTURE
|
||||
# We're on Windows NT or using VC 6+
|
||||
! ifdef CPU
|
||||
@@ -251,18 +244,7 @@ NODEBUG = 1
|
||||
MAKEFLAGS_GVIMEXT = DEBUG=yes
|
||||
!endif
|
||||
|
||||
|
||||
# Get all sorts of useful, standard macros from the Platform SDK,
|
||||
# if SDK_INCLUDE_DIR is set or USE_WIN32MAK is set to "yes".
|
||||
|
||||
!ifdef SDK_INCLUDE_DIR
|
||||
! include $(SDK_INCLUDE_DIR)\Win32.mak
|
||||
!elseif "$(USE_WIN32MAK)"=="yes"
|
||||
! include <Win32.mak>
|
||||
!else
|
||||
link = link
|
||||
!endif
|
||||
|
||||
|
||||
# Check VC version.
|
||||
!if [echo MSVCVER=_MSC_VER> msvcver.c && $(CC) /EP msvcver.c > msvcver.~ 2> nul]
|
||||
|
||||
@@ -2293,11 +2293,10 @@ run_message_test: $(MESSAGE_TEST_TARGET)
|
||||
$(VALGRIND) ./$(MESSAGE_TEST_TARGET) || exit 1; echo $* passed;
|
||||
|
||||
# Run the libvterm tests.
|
||||
# This currently doesn't work on Mac, only run on Linux for now.
|
||||
# This works only on GNU make, not on BSD make.
|
||||
test_libvterm:
|
||||
@if test `uname` = "Linux"; then \
|
||||
cd libvterm; $(MAKE) -f Makefile test \
|
||||
CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"; \
|
||||
@if $(MAKE) --version 2>/dev/null | grep -qs "GNU Make"; then \
|
||||
cd libvterm; $(MAKE) -f Makefile test CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"; \
|
||||
fi
|
||||
|
||||
# Run individual OLD style test.
|
||||
|
||||
@@ -409,7 +409,7 @@ do_arglist(
|
||||
p = file_pat_to_reg_pat(p, NULL, NULL, FALSE);
|
||||
if (p == NULL)
|
||||
break;
|
||||
regmatch.regprog = vim_regcomp(p, p_magic ? RE_MAGIC : 0);
|
||||
regmatch.regprog = vim_regcomp(p, magic_isset() ? RE_MAGIC : 0);
|
||||
if (regmatch.regprog == NULL)
|
||||
{
|
||||
vim_free(p);
|
||||
|
||||
17
src/auto/configure
vendored
17
src/auto/configure
vendored
@@ -5479,7 +5479,7 @@ $as_echo "no" >&6; }
|
||||
inc_path="$vi_cv_path_lua_pfx/include"
|
||||
for dir in "$inc_path"/moonjit-[0-9]* ; do
|
||||
if test -d "$dir" ; then
|
||||
lua_suf=`basename '$dir'`
|
||||
lua_suf=`basename "$dir"`
|
||||
lua_suf="/$lua_suf"
|
||||
break
|
||||
fi
|
||||
@@ -7617,8 +7617,7 @@ $as_echo "$rubyhdrdir" >&6; }
|
||||
librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBYARG'])"`
|
||||
librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBY_A'])"`
|
||||
rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['libdir'])"`
|
||||
if test -f "$rubylibdir/$librubya"; then
|
||||
librubyarg="$librubyarg"
|
||||
if test -f "$rubylibdir/$librubya" || expr "$librubyarg" : "-lruby"; then
|
||||
RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
|
||||
elif test "$librubyarg" = "libruby.a"; then
|
||||
librubyarg="-lruby"
|
||||
@@ -12350,10 +12349,18 @@ if test -c /dev/ptmx ; then
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
// These should be in stdlib.h, but it depends on _XOPEN_SOURCE.
|
||||
char *ptsname(int);
|
||||
int unlockpt(int);
|
||||
int grantpt(int);
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
ptsname(0);grantpt(0);unlockpt(0);
|
||||
|
||||
ptsname(0);
|
||||
grantpt(0);
|
||||
unlockpt(0);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
@@ -14853,6 +14860,8 @@ else
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-L /-L/g'`
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
|
||||
$as_echo_n "checking linker --as-needed support... " >&6; }
|
||||
LINK_AS_NEEDED=
|
||||
|
||||
@@ -191,6 +191,8 @@ static struct event_name
|
||||
{"WinLeave", EVENT_WINLEAVE},
|
||||
{"VimResized", EVENT_VIMRESIZED},
|
||||
{"TextYankPost", EVENT_TEXTYANKPOST},
|
||||
{"VimSuspend", EVENT_VIMSUSPEND},
|
||||
{"VimResume", EVENT_VIMRESUME},
|
||||
{NULL, (event_T)0}
|
||||
};
|
||||
|
||||
@@ -1433,9 +1435,9 @@ aucmd_prepbuf(
|
||||
// window. Expect a few side effects...
|
||||
win = curwin;
|
||||
|
||||
aco->save_curwin = curwin;
|
||||
aco->save_curwin_id = curwin->w_id;
|
||||
aco->save_curbuf = curbuf;
|
||||
aco->save_prevwin = prevwin;
|
||||
aco->save_prevwin_id = prevwin == NULL ? 0 : prevwin->w_id;
|
||||
if (win != NULL)
|
||||
{
|
||||
// There is a window for "buf" in the current tab page, make it the
|
||||
@@ -1481,7 +1483,7 @@ aucmd_prepbuf(
|
||||
curwin = aucmd_win;
|
||||
}
|
||||
curbuf = buf;
|
||||
aco->new_curwin = curwin;
|
||||
aco->new_curwin_id = curwin->w_id;
|
||||
set_bufref(&aco->new_curbuf, curbuf);
|
||||
}
|
||||
|
||||
@@ -1493,7 +1495,8 @@ aucmd_prepbuf(
|
||||
aucmd_restbuf(
|
||||
aco_save_T *aco) // structure holding saved values
|
||||
{
|
||||
int dummy;
|
||||
int dummy;
|
||||
win_T *save_curwin;
|
||||
|
||||
if (aco->use_aucmd_win)
|
||||
{
|
||||
@@ -1533,8 +1536,9 @@ win_found:
|
||||
(void)win_comp_pos(); // recompute window positions
|
||||
unblock_autocmds();
|
||||
|
||||
if (win_valid(aco->save_curwin))
|
||||
curwin = aco->save_curwin;
|
||||
save_curwin = win_find_by_id(aco->save_curwin_id);
|
||||
if (save_curwin != NULL)
|
||||
curwin = save_curwin;
|
||||
else
|
||||
// Hmm, original window disappeared. Just use the first one.
|
||||
curwin = firstwin;
|
||||
@@ -1543,9 +1547,7 @@ win_found:
|
||||
// May need to restore insert mode for a prompt buffer.
|
||||
entering_window(curwin);
|
||||
#endif
|
||||
|
||||
if (win_valid(aco->save_prevwin))
|
||||
prevwin = aco->save_prevwin;
|
||||
prevwin = win_find_by_id(aco->save_prevwin_id);
|
||||
#ifdef FEAT_EVAL
|
||||
vars_clear(&aucmd_win->w_vars->dv_hashtab); // free all w: variables
|
||||
hash_init(&aucmd_win->w_vars->dv_hashtab); // re-use the hashtab
|
||||
@@ -1571,13 +1573,15 @@ win_found:
|
||||
}
|
||||
else
|
||||
{
|
||||
// restore curwin
|
||||
if (win_valid(aco->save_curwin))
|
||||
// Restore curwin. Use the window ID, a window may have been closed
|
||||
// and the memory re-used for another one.
|
||||
save_curwin = win_find_by_id(aco->save_curwin_id);
|
||||
if (save_curwin != NULL)
|
||||
{
|
||||
// Restore the buffer which was previously edited by curwin, if
|
||||
// it was changed, we are still the same window and the buffer is
|
||||
// valid.
|
||||
if (curwin == aco->new_curwin
|
||||
if (curwin->w_id == aco->new_curwin_id
|
||||
&& curbuf != aco->new_curbuf.br_buf
|
||||
&& bufref_valid(&aco->new_curbuf)
|
||||
&& aco->new_curbuf.br_buf->b_ml.ml_mfp != NULL)
|
||||
@@ -1592,10 +1596,9 @@ win_found:
|
||||
++curbuf->b_nwindows;
|
||||
}
|
||||
|
||||
curwin = aco->save_curwin;
|
||||
curwin = save_curwin;
|
||||
curbuf = curwin->w_buffer;
|
||||
if (win_valid(aco->save_prevwin))
|
||||
prevwin = aco->save_prevwin;
|
||||
prevwin = win_find_by_id(aco->save_prevwin_id);
|
||||
// In case the autocommand moves the cursor to a position that
|
||||
// does not exist in curbuf.
|
||||
check_cursor();
|
||||
|
||||
20
src/buffer.c
20
src/buffer.c
@@ -552,6 +552,11 @@ close_buffer(
|
||||
unload_buf = FALSE;
|
||||
}
|
||||
}
|
||||
else if (buf->b_p_bh[0] == 'h' && !del_buf)
|
||||
{
|
||||
// Hide a terminal buffer.
|
||||
unload_buf = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// A terminal buffer is wiped out if the job has finished.
|
||||
@@ -2600,7 +2605,7 @@ buflist_findpat(
|
||||
p = pat;
|
||||
if (*p == '^' && !(attempt & 1)) // add/remove '^'
|
||||
++p;
|
||||
regmatch.regprog = vim_regcomp(p, p_magic ? RE_MAGIC : 0);
|
||||
regmatch.regprog = vim_regcomp(p, magic_isset() ? RE_MAGIC : 0);
|
||||
if (regmatch.regprog == NULL)
|
||||
{
|
||||
vim_free(pat);
|
||||
@@ -5648,10 +5653,21 @@ buf_spname(buf_T *buf)
|
||||
}
|
||||
|
||||
if (buf->b_fname == NULL)
|
||||
return (char_u *)_("[No Name]");
|
||||
return buf_get_fname(buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get "buf->b_fname", use "[No Name]" if it is NULL.
|
||||
*/
|
||||
char_u *
|
||||
buf_get_fname(buf_T *buf)
|
||||
{
|
||||
if (buf->b_fname == NULL)
|
||||
return (char_u *)_("[No Name]");
|
||||
return buf->b_fname;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set 'buflisted' for curbuf to "on" and trigger autocommands if it changed.
|
||||
*/
|
||||
|
||||
@@ -2138,7 +2138,7 @@ restore_backup:
|
||||
if (!checking_conversion)
|
||||
{
|
||||
#if defined(UNIX) && defined(HAVE_FSYNC)
|
||||
// On many journalling file systems there is a bug that causes both the
|
||||
// On many journaling file systems there is a bug that causes both the
|
||||
// original and the backup file to be lost when halting the system
|
||||
// right after writing the file. That's because only the meta-data is
|
||||
// journalled. Syncing the file slows down the system, but assures it
|
||||
@@ -2579,6 +2579,12 @@ nofail:
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef FEAT_VIMINFO
|
||||
// Make sure marks will be written out to the viminfo file later, even when
|
||||
// the file is new.
|
||||
curbuf->b_marks_read = TRUE;
|
||||
#endif
|
||||
|
||||
got_int |= prev_got_int;
|
||||
|
||||
return retval;
|
||||
|
||||
@@ -2121,7 +2121,7 @@ get_c_indent(void)
|
||||
}
|
||||
|
||||
// #defines and so on go at the left when included in 'cinkeys',
|
||||
// exluding pragmas when customized in 'cinoptions'
|
||||
// excluding pragmas when customized in 'cinoptions'
|
||||
if (*theline == '#' && (*linecopy == '#' || in_cinkeys('#', ' ', TRUE)))
|
||||
{
|
||||
char_u *directive = skipwhite(theline + 1);
|
||||
|
||||
@@ -2025,6 +2025,9 @@ clip_get_selection(Clipboard_T *cbd)
|
||||
&& get_y_register(STAR_REGISTER)->y_array != NULL))
|
||||
return;
|
||||
|
||||
// Avoid triggering autocmds such as TextYankPost.
|
||||
block_autocmds();
|
||||
|
||||
// Get the text between clip_star.start & clip_star.end
|
||||
old_y_previous = get_y_previous();
|
||||
old_y_current = get_y_current();
|
||||
@@ -2054,6 +2057,8 @@ clip_get_selection(Clipboard_T *cbd)
|
||||
curbuf->b_op_end = old_op_end;
|
||||
VIsual = old_visual;
|
||||
VIsual_mode = old_visual_mode;
|
||||
|
||||
unblock_autocmds();
|
||||
}
|
||||
else if (!is_clipboard_needs_update())
|
||||
{
|
||||
|
||||
@@ -1049,7 +1049,7 @@ set_one_cmd_context(
|
||||
++p;
|
||||
}
|
||||
|
||||
// If the cursor is touching the command, and it ends in an alpha-numeric
|
||||
// If the cursor is touching the command, and it ends in an alphanumeric
|
||||
// character, complete the command name.
|
||||
if (*p == NUL && ASCII_ISALNUM(p[-1]))
|
||||
return NULL;
|
||||
@@ -1391,7 +1391,7 @@ set_one_cmd_context(
|
||||
if (*arg != NUL)
|
||||
{
|
||||
xp->xp_context = EXPAND_NOTHING;
|
||||
arg = skip_regexp(arg + 1, *arg, p_magic);
|
||||
arg = skip_regexp(arg + 1, *arg, magic_isset());
|
||||
}
|
||||
}
|
||||
return find_nextcmd(arg);
|
||||
@@ -1429,7 +1429,7 @@ set_one_cmd_context(
|
||||
{
|
||||
// skip "from" part
|
||||
++arg;
|
||||
arg = skip_regexp(arg, delim, p_magic);
|
||||
arg = skip_regexp(arg, delim, magic_isset());
|
||||
}
|
||||
// skip "to" part
|
||||
while (arg[0] != NUL && arg[0] != delim)
|
||||
@@ -2077,7 +2077,7 @@ ExpandFromContext(
|
||||
pat = tofree;
|
||||
}
|
||||
|
||||
regmatch.regprog = vim_regcomp(pat, p_magic ? RE_MAGIC : 0);
|
||||
regmatch.regprog = vim_regcomp(pat, magic_isset() ? RE_MAGIC : 0);
|
||||
if (regmatch.regprog == NULL)
|
||||
return FAIL;
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
|
||||
inc_path="$vi_cv_path_lua_pfx/include"
|
||||
for dir in "$inc_path"/moonjit-[[0-9]]* ; do
|
||||
if test -d "$dir" ; then
|
||||
lua_suf=`basename '$dir'`
|
||||
lua_suf=`basename "$dir"`
|
||||
lua_suf="/$lua_suf"
|
||||
break
|
||||
fi
|
||||
@@ -1965,8 +1965,7 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
||||
librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
|
||||
librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
|
||||
rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
|
||||
if test -f "$rubylibdir/$librubya"; then
|
||||
librubyarg="$librubyarg"
|
||||
if test -f "$rubylibdir/$librubya" || expr "$librubyarg" : "-lruby"; then
|
||||
RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
|
||||
elif test "$librubyarg" = "libruby.a"; then
|
||||
dnl required on Mac OS 10.3 where libruby.a doesn't exist
|
||||
@@ -3593,7 +3592,15 @@ fi
|
||||
|
||||
AC_MSG_CHECKING(for SVR4 ptys)
|
||||
if test -c /dev/ptmx ; then
|
||||
AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
|
||||
AC_TRY_LINK([
|
||||
// These should be in stdlib.h, but it depends on _XOPEN_SOURCE.
|
||||
char *ptsname(int);
|
||||
int unlockpt(int);
|
||||
int grantpt(int);
|
||||
], [
|
||||
ptsname(0);
|
||||
grantpt(0);
|
||||
unlockpt(0);],
|
||||
AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
|
||||
AC_MSG_RESULT(no))
|
||||
else
|
||||
@@ -4459,6 +4466,10 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
dnl $LDFLAGS is passed to glibtool in libvterm, it doesn't like a space
|
||||
dnl between "-L" and the path that follows.
|
||||
LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-L /-L/g'`
|
||||
|
||||
dnl link.sh tries to avoid overlinking in a hackish way.
|
||||
dnl At least GNU ld supports --as-needed which provides the same functionality
|
||||
dnl at linker level. Let's use it.
|
||||
|
||||
109
src/dict.c
109
src/dict.c
@@ -22,6 +22,7 @@ static dict_T *first_dict = NULL;
|
||||
|
||||
/*
|
||||
* Allocate an empty header for a dictionary.
|
||||
* Caller should take care of the reference count.
|
||||
*/
|
||||
dict_T *
|
||||
dict_alloc(void)
|
||||
@@ -110,6 +111,7 @@ dict_free_contents(dict_T *d)
|
||||
|
||||
/*
|
||||
* Clear hashtab "ht" and dict items it contains.
|
||||
* If "ht" is not freed then you should call hash_init() next!
|
||||
*/
|
||||
void
|
||||
hashtab_free_contents(hashtab_T *ht)
|
||||
@@ -780,20 +782,31 @@ dict2string(typval_T *tv, int copyID, int restore_copyID)
|
||||
return (char_u *)ga.ga_data;
|
||||
}
|
||||
|
||||
/*
|
||||
* Advance over a literal key, including "-". If the first character is not a
|
||||
* literal key character then "key" is returned.
|
||||
*/
|
||||
char_u *
|
||||
skip_literal_key(char_u *key)
|
||||
{
|
||||
char_u *p;
|
||||
|
||||
for (p = key; ASCII_ISALNUM(*p) || *p == '_' || *p == '-'; ++p)
|
||||
;
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the key for #{key: val} into "tv" and advance "arg".
|
||||
* Return FAIL when there is no valid key.
|
||||
*/
|
||||
static int
|
||||
get_literal_key(char_u **arg, typval_T *tv)
|
||||
get_literal_key_tv(char_u **arg, typval_T *tv)
|
||||
{
|
||||
char_u *p;
|
||||
char_u *p = skip_literal_key(*arg);
|
||||
|
||||
if (!ASCII_ISALNUM(**arg) && **arg != '_' && **arg != '-')
|
||||
if (p == *arg)
|
||||
return FAIL;
|
||||
|
||||
for (p = *arg; ASCII_ISALNUM(*p) || *p == '_' || *p == '-'; ++p)
|
||||
;
|
||||
tv->v_type = VAR_STRING;
|
||||
tv->vval.v_string = vim_strnsave(*arg, p - *arg);
|
||||
|
||||
@@ -801,6 +814,47 @@ get_literal_key(char_u **arg, typval_T *tv)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a literal key for a Vim9 dict:
|
||||
* {"name": value},
|
||||
* {'name': value},
|
||||
* {name: value} use "name" as a literal key
|
||||
* Return the key in allocated memory or NULL in the case of an error.
|
||||
* "arg" is advanced to just after the key.
|
||||
*/
|
||||
char_u *
|
||||
get_literal_key(char_u **arg)
|
||||
{
|
||||
char_u *key;
|
||||
char_u *end;
|
||||
typval_T rettv;
|
||||
|
||||
if (**arg == '\'')
|
||||
{
|
||||
if (eval_lit_string(arg, &rettv, TRUE) == FAIL)
|
||||
return NULL;
|
||||
key = rettv.vval.v_string;
|
||||
}
|
||||
else if (**arg == '"')
|
||||
{
|
||||
if (eval_string(arg, &rettv, TRUE) == FAIL)
|
||||
return NULL;
|
||||
key = rettv.vval.v_string;
|
||||
}
|
||||
else
|
||||
{
|
||||
end = skip_literal_key(*arg);
|
||||
if (end == *arg)
|
||||
{
|
||||
semsg(_(e_invalid_key_str), *arg);
|
||||
return NULL;
|
||||
}
|
||||
key = vim_strnsave(*arg, end - *arg);
|
||||
*arg = end;
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a variable for a Dictionary and fill it from "*arg".
|
||||
* "*arg" points to the "{".
|
||||
@@ -849,10 +903,38 @@ eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal)
|
||||
*arg = skipwhite_and_linebreak(*arg + 1, evalarg);
|
||||
while (**arg != '}' && **arg != NUL)
|
||||
{
|
||||
if ((literal
|
||||
? get_literal_key(arg, &tvkey)
|
||||
: eval1(arg, &tvkey, evalarg)) == FAIL) // recursive!
|
||||
goto failret;
|
||||
int has_bracket = vim9script && **arg == '[';
|
||||
|
||||
if (literal)
|
||||
{
|
||||
if (get_literal_key_tv(arg, &tvkey) == FAIL)
|
||||
goto failret;
|
||||
}
|
||||
else if (vim9script && !has_bracket)
|
||||
{
|
||||
tvkey.vval.v_string = get_literal_key(arg);
|
||||
if (tvkey.vval.v_string == NULL)
|
||||
goto failret;
|
||||
tvkey.v_type = VAR_STRING;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (has_bracket)
|
||||
*arg = skipwhite(*arg + 1);
|
||||
if (eval1(arg, &tvkey, evalarg) == FAIL) // recursive!
|
||||
goto failret;
|
||||
if (has_bracket)
|
||||
{
|
||||
*arg = skipwhite(*arg);
|
||||
if (**arg != ']')
|
||||
{
|
||||
emsg(_(e_missing_matching_bracket_after_dict_key));
|
||||
clear_tv(&tvkey);
|
||||
return FAIL;
|
||||
}
|
||||
++*arg;
|
||||
}
|
||||
}
|
||||
|
||||
// the colon should come right after the key, but this wasn't checked
|
||||
// previously, so only require it in Vim9 script.
|
||||
@@ -869,6 +951,11 @@ eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal)
|
||||
}
|
||||
if (evaluate)
|
||||
{
|
||||
if (vim9script && check_for_string(&tvkey) == FAIL)
|
||||
{
|
||||
clear_tv(&tvkey);
|
||||
goto failret;
|
||||
}
|
||||
key = tv_get_string_buf_chk(&tvkey, buf);
|
||||
if (key == NULL)
|
||||
{
|
||||
@@ -986,7 +1073,7 @@ dict_extend(dict_T *d1, dict_T *d2, char_u *action)
|
||||
&& HI2DI(hi2)->di_tv.v_type == VAR_FUNC
|
||||
&& var_wrong_func_name(hi2->hi_key, di1 == NULL))
|
||||
break;
|
||||
if (!valid_varname(hi2->hi_key))
|
||||
if (!valid_varname(hi2->hi_key, TRUE))
|
||||
break;
|
||||
}
|
||||
if (di1 == NULL)
|
||||
|
||||
@@ -641,7 +641,7 @@ win_line(
|
||||
else
|
||||
tocol = MAXCOL;
|
||||
// do at least one character; happens when past end of line
|
||||
if (fromcol == tocol)
|
||||
if (fromcol == tocol && search_match_endcol)
|
||||
tocol = fromcol + 1;
|
||||
area_highlighting = TRUE;
|
||||
vi_attr = HL_ATTR(HLF_I);
|
||||
@@ -1873,6 +1873,7 @@ win_line(
|
||||
char_u *prev_ptr, *p;
|
||||
int len;
|
||||
hlf_T spell_hlf = HLF_COUNT;
|
||||
|
||||
if (has_mbyte)
|
||||
{
|
||||
prev_ptr = ptr - mb_l;
|
||||
@@ -2445,15 +2446,18 @@ win_line(
|
||||
&& conceal_cursor_line(wp)
|
||||
&& (int)wp->w_virtcol <= vcol + n_skip)
|
||||
{
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
if (wp->w_p_rl)
|
||||
wp->w_wcol = wp->w_width - col + boguscols - 1;
|
||||
else
|
||||
# endif
|
||||
# endif
|
||||
wp->w_wcol = col - boguscols;
|
||||
wp->w_wrow = row;
|
||||
did_wcol = TRUE;
|
||||
curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL;
|
||||
# ifdef FEAT_PROP_POPUP
|
||||
curwin->w_flags &= ~(WFLAG_WCOL_OFF_ADDED | WFLAG_WROW_OFF_ADDED);
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2778,10 +2782,14 @@ win_line(
|
||||
// Also highlight the 'colorcolumn' if 'breakindent' and/or 'showbreak'
|
||||
// options are set
|
||||
vcol_save_attr = -1;
|
||||
if ((draw_state == WL_LINE ||
|
||||
if (((draw_state == WL_LINE ||
|
||||
draw_state == WL_BRI ||
|
||||
draw_state == WL_SBR) && !lnum_in_visual_area
|
||||
&& search_attr == 0 && area_attr == 0)
|
||||
# ifdef FEAT_DIFF
|
||||
&& filler_todo <= 0
|
||||
# endif
|
||||
)
|
||||
{
|
||||
if (wp->w_p_cuc && VCOL_HLC == (long)wp->w_virtcol
|
||||
&& lnum != wp->w_cursor.lnum)
|
||||
|
||||
36
src/edit.c
36
src/edit.c
@@ -1031,6 +1031,15 @@ doESCkey:
|
||||
case K_IGNORE: // Something mapped to nothing
|
||||
break;
|
||||
|
||||
case K_COMMAND: // <Cmd>command<CR>
|
||||
do_cmdline(NULL, getcmdkeycmd, NULL, 0);
|
||||
#ifdef FEAT_TERMINAL
|
||||
if (term_use_loop())
|
||||
// Started a terminal that gets the input, exit Insert mode.
|
||||
goto doESCkey;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case K_CURSORHOLD: // Didn't type something for a while.
|
||||
ins_apply_autocmds(EVENT_CURSORHOLDI);
|
||||
did_cursorhold = TRUE;
|
||||
@@ -1525,7 +1534,6 @@ ins_ctrl_v(void)
|
||||
{
|
||||
int c;
|
||||
int did_putchar = FALSE;
|
||||
int prev_mod_mask = mod_mask;
|
||||
|
||||
// may need to redraw when no more chars available now
|
||||
ins_redraw(FALSE);
|
||||
@@ -1541,7 +1549,9 @@ ins_ctrl_v(void)
|
||||
add_to_showcmd_c(Ctrl_V);
|
||||
#endif
|
||||
|
||||
c = get_literal();
|
||||
// Do not change any modifyOtherKeys ESC sequence to a normal key for
|
||||
// CTRL-SHIFT-V.
|
||||
c = get_literal(mod_mask & MOD_MASK_SHIFT);
|
||||
if (did_putchar)
|
||||
// when the line fits in 'columns' the '^' is at the start of the next
|
||||
// line and will not removed by the redraw
|
||||
@@ -1550,11 +1560,6 @@ ins_ctrl_v(void)
|
||||
clear_showcmd();
|
||||
#endif
|
||||
|
||||
if ((c == ESC || c == CSI) && !(prev_mod_mask & MOD_MASK_SHIFT))
|
||||
// Using CTRL-V: Change any modifyOtherKeys ESC sequence to a normal
|
||||
// key. Don't do this for CTRL-SHIFT-V.
|
||||
c = decodeModifyOtherKeys(c);
|
||||
|
||||
insert_special(c, FALSE, TRUE);
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
revins_chars++;
|
||||
@@ -1836,9 +1841,11 @@ del_char_after_col(int limit_col UNUSED)
|
||||
* A one, two or three digit decimal number is interpreted as its byte value.
|
||||
* If one or two digits are entered, the next character is given to vungetc().
|
||||
* For Unicode a character > 255 may be returned.
|
||||
* If "noReduceKeys" is TRUE do not change any modifyOtherKeys ESC sequence
|
||||
* into a normal key, return ESC.
|
||||
*/
|
||||
int
|
||||
get_literal(void)
|
||||
get_literal(int noReduceKeys)
|
||||
{
|
||||
int cc;
|
||||
int nc;
|
||||
@@ -1869,6 +1876,9 @@ get_literal(void)
|
||||
for (;;)
|
||||
{
|
||||
nc = plain_vgetc();
|
||||
if ((nc == ESC || nc == CSI) && !noReduceKeys)
|
||||
nc = decodeModifyOtherKeys(nc);
|
||||
|
||||
#ifdef FEAT_CMDL_INFO
|
||||
if (!(State & CMDLINE) && MB_BYTE2LEN_CHECK(nc) == 1)
|
||||
add_to_showcmd(nc);
|
||||
@@ -3803,8 +3813,7 @@ ins_ctrl_o(void)
|
||||
{
|
||||
if (State & VREPLACE_FLAG)
|
||||
restart_edit = 'V';
|
||||
else
|
||||
if (State & REPLACE_FLAG)
|
||||
else if (State & REPLACE_FLAG)
|
||||
restart_edit = 'R';
|
||||
else
|
||||
restart_edit = 'I';
|
||||
@@ -3946,8 +3955,11 @@ ins_bs(
|
||||
#endif
|
||||
((curwin->w_cursor.lnum == 1 && curwin->w_cursor.col == 0)
|
||||
|| (!can_bs(BS_START)
|
||||
&& (arrow_used
|
||||
|| (curwin->w_cursor.lnum == Insstart_orig.lnum
|
||||
&& ((arrow_used
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
&& !bt_prompt(curbuf)
|
||||
#endif
|
||||
) || (curwin->w_cursor.lnum == Insstart_orig.lnum
|
||||
&& curwin->w_cursor.col <= Insstart_orig.col)))
|
||||
|| (!can_bs(BS_INDENT) && !arrow_used && ai_col > 0
|
||||
&& curwin->w_cursor.col <= ai_col)
|
||||
|
||||
46
src/errors.h
46
src/errors.h
@@ -21,6 +21,10 @@ EXTERN char e_invalid_command[]
|
||||
#ifdef FEAT_EVAL
|
||||
EXTERN char e_invalid_command_str[]
|
||||
INIT(= N_("E476: Invalid command: %s"));
|
||||
EXTERN char e_list_value_has_more_items_than_targets[]
|
||||
INIT(= N_("E710: List value has more items than targets"));
|
||||
EXTERN char e_list_value_does_not_have_enough_items[]
|
||||
INIT(= N_("E711: List value does not have enough items"));
|
||||
EXTERN char e_cannot_slice_dictionary[]
|
||||
INIT(= N_("E719: Cannot slice a Dictionary"));
|
||||
EXTERN char e_assert_fails_second_arg[]
|
||||
@@ -57,7 +61,7 @@ EXTERN char e_argument_nr_type_mismatch_expected_str_but_got_str[]
|
||||
INIT(= N_("E1013: Argument %d: type mismatch, expected %s but got %s"));
|
||||
EXTERN char e_invalid_key_str[]
|
||||
INIT(= N_("E1014: Invalid key: %s"));
|
||||
EXTERN char e_name_expected[]
|
||||
EXTERN char e_name_expected_str[]
|
||||
INIT(= N_("E1015: Name expected: %s"));
|
||||
EXTERN char e_cannot_declare_a_scope_variable[]
|
||||
INIT(= N_("E1016: Cannot declare a %s variable: %s"));
|
||||
@@ -89,8 +93,8 @@ EXTERN char e_compiling_def_function_failed[]
|
||||
INIT(= N_("E1028: Compiling :def function failed"));
|
||||
EXTERN char e_expected_str_but_got_str[]
|
||||
INIT(= N_("E1029: Expected %s but got %s"));
|
||||
EXTERN char e_using_string_as_number[]
|
||||
INIT(= N_("E1030: Using a String as a Number"));
|
||||
EXTERN char e_using_string_as_number_str[]
|
||||
INIT(= N_("E1030: Using a String as a Number: \"%s\""));
|
||||
EXTERN char e_cannot_use_void_value[]
|
||||
INIT(= N_("E1031: Cannot use void value"));
|
||||
EXTERN char e_missing_catch_or_finally[]
|
||||
@@ -286,4 +290,40 @@ EXTERN char e_cannot_add_to_null_list[]
|
||||
INIT(= N_("E1130: Cannot add to null list"));
|
||||
EXTERN char e_cannot_add_to_null_blob[]
|
||||
INIT(= N_("E1131: Cannot add to null blob"));
|
||||
EXTERN char e_missing_function_argument[]
|
||||
INIT(= N_("E1132: Missing function argument"));
|
||||
EXTERN char e_cannot_extend_null_dict[]
|
||||
INIT(= N_("E1133: Cannot extend a null dict"));
|
||||
EXTERN char e_cannot_extend_null_list[]
|
||||
INIT(= N_("E1134: Cannot extend a null list"));
|
||||
EXTERN char e_using_string_as_bool_str[]
|
||||
INIT(= N_("E1135: Using a String as a Bool: \"%s\""));
|
||||
#endif
|
||||
EXTERN char e_cmd_mapping_must_end_with_cr[]
|
||||
INIT(=N_("E1135: <Cmd> mapping must end with <CR>"));
|
||||
EXTERN char e_cmd_mapping_must_end_with_cr_before_second_cmd[]
|
||||
INIT(=N_("E1136: <Cmd> mapping must end with <CR> before second <Cmd>"));
|
||||
EXTERN char e_cmd_maping_must_not_include_str_key[]
|
||||
INIT(= N_("E1137: <Cmd> mapping must not include %s key"));
|
||||
EXTERN char e_using_bool_as_number[]
|
||||
INIT(= N_("E1138: Using a Bool as a Number"));
|
||||
EXTERN char e_missing_matching_bracket_after_dict_key[]
|
||||
INIT(= N_("E1139: Missing matching bracket after dict key"));
|
||||
EXTERN char e_for_argument_must_be_sequence_of_lists[]
|
||||
INIT(= N_("E1140: For argument must be a sequence of lists"));
|
||||
EXTERN char e_indexable_type_required[]
|
||||
INIT(= N_("E1141: Indexable type required"));
|
||||
EXTERN char e_non_empty_string_required[]
|
||||
INIT(= N_("E1142: Non-empty string required"));
|
||||
EXTERN char e_empty_expression_str[]
|
||||
INIT(= N_("E1143: Empty expression: \"%s\""));
|
||||
EXTERN char e_command_not_followed_by_white_space_str[]
|
||||
INIT(= N_("E1144: Command is not followed by white space: %s"));
|
||||
EXTERN char e_missing_heredoc_end_marker_str[]
|
||||
INIT(= N_("E1145: Missing heredoc end marker: %s"));
|
||||
EXTERN char e_command_not_recognized_str[]
|
||||
INIT(= N_("E1146: Command not recognized: %s"));
|
||||
EXTERN char e_list_not_set[]
|
||||
INIT(= N_("E1147: List not set"));
|
||||
EXTERN char e_cannot_index_str[]
|
||||
INIT(= N_("E1148: Cannot index a %s"));
|
||||
|
||||
68
src/eval.c
68
src/eval.c
@@ -654,11 +654,28 @@ call_func_retnr(
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* Call Vim script function like call_func_retnr() and drop the result.
|
||||
* Returns FAIL when calling the function fails.
|
||||
*/
|
||||
int
|
||||
call_func_noret(
|
||||
char_u *func,
|
||||
int argc,
|
||||
typval_T *argv)
|
||||
{
|
||||
typval_T rettv;
|
||||
|
||||
if (call_vim_function(func, argc, argv, &rettv) == FAIL)
|
||||
return FAIL;
|
||||
clear_tv(&rettv);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Call Vim script function "func" and return the result as a string.
|
||||
* Uses "argv" and "argc" as call_func_retnr().
|
||||
* Returns NULL when calling the function fails.
|
||||
* Uses argv[0] to argv[argc - 1] for the function arguments. argv[argc] should
|
||||
* have type VAR_UNKNOWN.
|
||||
*/
|
||||
void *
|
||||
call_func_retstr(
|
||||
@@ -679,8 +696,7 @@ call_func_retstr(
|
||||
|
||||
/*
|
||||
* Call Vim script function "func" and return the result as a List.
|
||||
* Uses argv[0] to argv[argc - 1] for the function arguments. argv[argc] should
|
||||
* have type VAR_UNKNOWN.
|
||||
* Uses "argv" and "argc" as call_func_retnr().
|
||||
* Returns NULL when there is something wrong.
|
||||
*/
|
||||
void *
|
||||
@@ -791,7 +807,7 @@ get_lval(
|
||||
listitem_T *ni;
|
||||
char_u *key = NULL;
|
||||
int len;
|
||||
hashtab_T *ht;
|
||||
hashtab_T *ht = NULL;
|
||||
int quiet = flags & GLV_QUIET;
|
||||
|
||||
// Clear everything in "lp".
|
||||
@@ -874,6 +890,13 @@ get_lval(
|
||||
if (v == NULL)
|
||||
return NULL;
|
||||
|
||||
if (in_vim9script() && (flags & GLV_NO_DECL) == 0)
|
||||
{
|
||||
if (!quiet)
|
||||
semsg(_(e_variable_already_declared), lp->ll_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop until no more [idx] or .key is following.
|
||||
*/
|
||||
@@ -1049,7 +1072,7 @@ get_lval(
|
||||
wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE
|
||||
&& rettv->v_type == VAR_FUNC
|
||||
&& var_wrong_func_name(key, lp->ll_di == NULL))
|
||||
|| !valid_varname(key);
|
||||
|| !valid_varname(key, TRUE);
|
||||
if (len != -1)
|
||||
key[len] = prevval;
|
||||
if (wrong)
|
||||
@@ -1397,11 +1420,11 @@ set_var_lval(
|
||||
++lp->ll_n1;
|
||||
}
|
||||
if (ri != NULL)
|
||||
emsg(_("E710: List value has more items than target"));
|
||||
emsg(_(e_list_value_has_more_items_than_targets));
|
||||
else if (lp->ll_empty2
|
||||
? (lp->ll_li != NULL && lp->ll_li->li_next != NULL)
|
||||
: lp->ll_n1 != lp->ll_n2)
|
||||
emsg(_("E711: List value has not enough items"));
|
||||
emsg(_(e_list_value_does_not_have_enough_items));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2156,7 +2179,13 @@ eval0(
|
||||
&& called_emsg == called_emsg_before
|
||||
&& (flags & EVAL_CONSTANT) == 0)
|
||||
semsg(_(e_invexpr2), arg);
|
||||
ret = FAIL;
|
||||
|
||||
// Some of the expression may not have been consumed. Do not check for
|
||||
// a next command to avoid more errors, unless "|" is following, which
|
||||
// could only be a command separator.
|
||||
if (eap != NULL && skipwhite(p)[0] == '|' && skipwhite(p)[1] != '|')
|
||||
eap->nextcmd = check_nextcmd(p);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (eap != NULL)
|
||||
@@ -2769,10 +2798,11 @@ eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
|
||||
int vim9script = in_vim9script();
|
||||
|
||||
// "." is only string concatenation when scriptversion is 1
|
||||
// "+=" and "-=" are assignment
|
||||
p = eval_next_non_blank(*arg, evalarg, &getnext);
|
||||
op = *p;
|
||||
concat = op == '.' && (*(p + 1) == '.' || current_sctx.sc_version < 2);
|
||||
if (op != '+' && op != '-' && !concat)
|
||||
if ((op != '+' && op != '-' && !concat) || p[1] == '=')
|
||||
break;
|
||||
|
||||
evaluate = evalarg == NULL ? 0 : (evalarg->eval_flags & EVAL_EVALUATE);
|
||||
@@ -3253,7 +3283,7 @@ eval7(
|
||||
/*
|
||||
* Dictionary: #{key: val, key: val}
|
||||
*/
|
||||
case '#': if ((*arg)[1] == '{')
|
||||
case '#': if (!in_vim9script() && (*arg)[1] == '{')
|
||||
{
|
||||
++*arg;
|
||||
ret = eval_dict(arg, rettv, evalarg, TRUE);
|
||||
@@ -3266,7 +3296,7 @@ eval7(
|
||||
* Lambda: {arg, arg -> expr}
|
||||
* Dictionary: {'key': val, 'key': val}
|
||||
*/
|
||||
case '{': ret = get_lambda_tv(arg, rettv, evalarg);
|
||||
case '{': ret = get_lambda_tv(arg, rettv, in_vim9script(), evalarg);
|
||||
if (ret == NOTDONE)
|
||||
ret = eval_dict(arg, rettv, evalarg, FALSE);
|
||||
break;
|
||||
@@ -3438,7 +3468,15 @@ eval7_leader(
|
||||
}
|
||||
#ifdef FEAT_FLOAT
|
||||
if (rettv->v_type == VAR_FLOAT)
|
||||
f = !f;
|
||||
{
|
||||
if (in_vim9script())
|
||||
{
|
||||
rettv->v_type = VAR_BOOL;
|
||||
val = f == 0.0 ? VVAL_TRUE : VVAL_FALSE;
|
||||
}
|
||||
else
|
||||
f = !f;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
@@ -3554,7 +3592,7 @@ eval_lambda(
|
||||
*arg += 2;
|
||||
rettv->v_type = VAR_UNKNOWN;
|
||||
|
||||
ret = get_lambda_tv(arg, rettv, evalarg);
|
||||
ret = get_lambda_tv(arg, rettv, FALSE, evalarg);
|
||||
if (ret != OK)
|
||||
return FAIL;
|
||||
else if (**arg != '(')
|
||||
@@ -4616,7 +4654,7 @@ set_ref_in_item(
|
||||
* "numbuf" is used for a number.
|
||||
* When "copyID" is not NULL replace recursive lists and dicts with "...".
|
||||
* When both "echo_style" and "composite_val" are FALSE, put quotes around
|
||||
* stings as "string()", otherwise does not put quotes around strings, as
|
||||
* strings as "string()", otherwise does not put quotes around strings, as
|
||||
* ":echo" displays values.
|
||||
* When "restore_copyID" is FALSE, repeated items in dictionaries and lists
|
||||
* are replaced with "...".
|
||||
|
||||
@@ -295,7 +295,7 @@ arg_float_or_nr(type_T *type, argcontext_T *context)
|
||||
static int
|
||||
arg_number(type_T *type, argcontext_T *context)
|
||||
{
|
||||
return check_type(&t_number, type, TRUE, context->arg_idx + 1);
|
||||
return check_arg_type(&t_number, type, context->arg_idx + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -304,7 +304,7 @@ arg_number(type_T *type, argcontext_T *context)
|
||||
static int
|
||||
arg_string(type_T *type, argcontext_T *context)
|
||||
{
|
||||
return check_type(&t_string, type, TRUE, context->arg_idx + 1);
|
||||
return check_arg_type(&t_string, type, context->arg_idx + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -342,7 +342,7 @@ arg_same_as_prev(type_T *type, argcontext_T *context)
|
||||
{
|
||||
type_T *prev_type = context->arg_types[context->arg_idx - 1];
|
||||
|
||||
return check_type(prev_type, type, TRUE, context->arg_idx + 1);
|
||||
return check_arg_type(prev_type, type, context->arg_idx + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -363,7 +363,7 @@ arg_item_of_prev(type_T *type, argcontext_T *context)
|
||||
// probably VAR_ANY, can't check
|
||||
return OK;
|
||||
|
||||
return check_type(expected, type, TRUE, context->arg_idx + 1);
|
||||
return check_arg_type(expected, type, context->arg_idx + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -479,7 +479,6 @@ ret_job(int argcount UNUSED, type_T **argtypes UNUSED)
|
||||
{
|
||||
return &t_job;
|
||||
}
|
||||
|
||||
static type_T *
|
||||
ret_first_arg(int argcount, type_T **argtypes)
|
||||
{
|
||||
@@ -487,6 +486,18 @@ ret_first_arg(int argcount, type_T **argtypes)
|
||||
return argtypes[0];
|
||||
return &t_void;
|
||||
}
|
||||
// for map(): returns first argument but item type may differ
|
||||
static type_T *
|
||||
ret_first_cont(int argcount UNUSED, type_T **argtypes)
|
||||
{
|
||||
if (argtypes[0]->tt_type == VAR_LIST)
|
||||
return &t_list_any;
|
||||
if (argtypes[0]->tt_type == VAR_DICT)
|
||||
return &t_dict_any;
|
||||
if (argtypes[0]->tt_type == VAR_BLOB)
|
||||
return argtypes[0];
|
||||
return &t_any;
|
||||
}
|
||||
|
||||
/*
|
||||
* Used for getqflist(): returns list if there is no argument, dict if there is
|
||||
@@ -1115,11 +1126,13 @@ static funcentry_T global_functions[] =
|
||||
#endif
|
||||
},
|
||||
{"map", 2, 2, FEARG_1, NULL,
|
||||
ret_any, f_map},
|
||||
ret_first_cont, f_map},
|
||||
{"maparg", 1, 4, FEARG_1, NULL,
|
||||
ret_maparg, f_maparg},
|
||||
{"mapcheck", 1, 3, FEARG_1, NULL,
|
||||
ret_string, f_mapcheck},
|
||||
{"mapnew", 2, 2, FEARG_1, NULL,
|
||||
ret_first_cont, f_mapnew},
|
||||
{"mapset", 3, 3, FEARG_1, NULL,
|
||||
ret_void, f_mapset},
|
||||
{"match", 2, 4, FEARG_1, NULL,
|
||||
@@ -2602,6 +2615,8 @@ f_cursor(typval_T *argvars, typval_T *rettv)
|
||||
else
|
||||
{
|
||||
line = tv_get_lnum(argvars);
|
||||
if (line < 0)
|
||||
semsg(_(e_invarg2), tv_get_string(&argvars[0]));
|
||||
col = (long)tv_get_number_chk(&argvars[1], NULL);
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
coladd = (long)tv_get_number_chk(&argvars[2], NULL);
|
||||
@@ -5483,6 +5498,73 @@ f_has(typval_T *argvars, typval_T *rettv)
|
||||
rettv->vval.v_number = n;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE if "feature" can change later.
|
||||
* Also when checking for the feature has side effects, such as loading a DLL.
|
||||
*/
|
||||
int
|
||||
dynamic_feature(char_u *feature)
|
||||
{
|
||||
return (feature == NULL
|
||||
#if defined(FEAT_BEVAL) && defined(FEAT_GUI_MSWIN)
|
||||
|| STRICMP(feature, "balloon_multiline") == 0
|
||||
#endif
|
||||
#if defined(FEAT_GUI) && defined(FEAT_BROWSE)
|
||||
|| (STRICMP(feature, "browse") == 0 && !gui.in_use)
|
||||
#endif
|
||||
#ifdef VIMDLL
|
||||
|| STRICMP(feature, "filterpipe") == 0
|
||||
#endif
|
||||
#if defined(FEAT_GUI) && !defined(ALWAYS_USE_GUI) && !defined(VIMDLL)
|
||||
// this can only change on Unix where the ":gui" command could be
|
||||
// used.
|
||||
|| (STRICMP(feature, "gui_running") == 0 && !gui.in_use)
|
||||
#endif
|
||||
#if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
|
||||
|| STRICMP(feature, "iconv") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_LUA
|
||||
|| STRICMP(feature, "lua") == 0
|
||||
#endif
|
||||
#ifdef FEAT_MOUSE_GPM
|
||||
|| (STRICMP(feature, "mouse_gpm_enabled") == 0 && !gpm_enabled())
|
||||
#endif
|
||||
#ifdef DYNAMIC_MZSCHEME
|
||||
|| STRICMP(feature, "mzscheme") == 0
|
||||
#endif
|
||||
#ifdef FEAT_NETBEANS_INTG
|
||||
|| STRICMP(feature, "netbeans_enabled") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_PERL
|
||||
|| STRICMP(feature, "perl") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_PYTHON
|
||||
|| STRICMP(feature, "python") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_PYTHON3
|
||||
|| STRICMP(feature, "python3") == 0
|
||||
#endif
|
||||
#if defined(DYNAMIC_PYTHON) || defined(DYNAMIC_PYTHON3)
|
||||
|| STRICMP(feature, "pythonx") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_RUBY
|
||||
|| STRICMP(feature, "ruby") == 0
|
||||
#endif
|
||||
#ifdef FEAT_SYN_HL
|
||||
|| STRICMP(feature, "syntax_items") == 0
|
||||
#endif
|
||||
#ifdef DYNAMIC_TCL
|
||||
|| STRICMP(feature, "tcl") == 0
|
||||
#endif
|
||||
// once "starting" is zero it will stay that way
|
||||
|| (STRICMP(feature, "vim_starting") == 0 && starting != 0)
|
||||
|| STRICMP(feature, "multi_byte_encoding") == 0
|
||||
#if defined(FEAT_TERMINAL) && defined(MSWIN)
|
||||
|| STRICMP(feature, "conpty") == 0
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* "haslocaldir()" function
|
||||
*/
|
||||
@@ -6873,7 +6955,7 @@ f_rand(typval_T *argvars, typval_T *rettv)
|
||||
static UINT32_T gx, gy, gz, gw;
|
||||
static int initialized = FALSE;
|
||||
listitem_T *lx, *ly, *lz, *lw;
|
||||
UINT32_T x, y, z, w, t, result;
|
||||
UINT32_T x = 0, y, z, w, t, result;
|
||||
|
||||
if (argvars[0].v_type == VAR_UNKNOWN)
|
||||
{
|
||||
|
||||
@@ -146,6 +146,7 @@ static struct vimvar
|
||||
{VV_NAME("echospace", VAR_NUMBER), VV_RO},
|
||||
{VV_NAME("argv", VAR_LIST), VV_RO},
|
||||
{VV_NAME("collate", VAR_STRING), VV_RO},
|
||||
{VV_NAME("exiting", VAR_SPECIAL), VV_RO},
|
||||
};
|
||||
|
||||
// shorthand
|
||||
@@ -218,6 +219,7 @@ evalvars_init(void)
|
||||
|
||||
set_vim_var_nr(VV_SEARCHFORWARD, 1L);
|
||||
set_vim_var_nr(VV_HLSEARCH, 1L);
|
||||
set_vim_var_nr(VV_EXITING, VVAL_NULL);
|
||||
set_vim_var_dict(VV_COMPLETED_ITEM, dict_alloc_lock(VAR_FIXED));
|
||||
set_vim_var_list(VV_ERRORS, list_alloc());
|
||||
set_vim_var_dict(VV_EVENT, dict_alloc_lock(VAR_FIXED));
|
||||
@@ -1462,7 +1464,8 @@ ex_let_one(
|
||||
{
|
||||
lval_T lv;
|
||||
|
||||
p = get_lval(arg, tv, &lv, FALSE, FALSE, 0, FNE_CHECK_START);
|
||||
p = get_lval(arg, tv, &lv, FALSE, FALSE,
|
||||
(flags & ASSIGN_NO_DECL) ? GLV_NO_DECL : 0, FNE_CHECK_START);
|
||||
if (p != NULL && lv.ll_name != NULL)
|
||||
{
|
||||
if (endchars != NULL && vim_strchr(endchars,
|
||||
@@ -1661,10 +1664,20 @@ do_unlet(char_u *name, int forceit)
|
||||
dict_T *d;
|
||||
dictitem_T *di;
|
||||
|
||||
// can't :unlet a script variable in Vim9 script
|
||||
if (in_vim9script() && check_vim9_unlet(name) == FAIL)
|
||||
return FAIL;
|
||||
|
||||
ht = find_var_ht(name, &varname);
|
||||
|
||||
// can't :unlet a script variable in Vim9 script from a function
|
||||
if (ht == get_script_local_ht()
|
||||
&& SCRIPT_ID_VALID(current_sctx.sc_sid)
|
||||
&& SCRIPT_ITEM(current_sctx.sc_sid)->sn_version
|
||||
== SCRIPT_VERSION_VIM9
|
||||
&& check_vim9_unlet(name) == FAIL)
|
||||
return FAIL;
|
||||
|
||||
if (ht != NULL && *varname != NUL)
|
||||
{
|
||||
d = get_current_funccal_dict(ht);
|
||||
@@ -2553,7 +2566,22 @@ eval_variable(
|
||||
ret = FAIL;
|
||||
}
|
||||
else if (rettv != NULL)
|
||||
{
|
||||
// If a list or dict variable wasn't initialized, do it now.
|
||||
if (tv->v_type == VAR_DICT && tv->vval.v_dict == NULL)
|
||||
{
|
||||
tv->vval.v_dict = dict_alloc();
|
||||
if (tv->vval.v_dict != NULL)
|
||||
++tv->vval.v_dict->dv_refcount;
|
||||
}
|
||||
else if (tv->v_type == VAR_LIST && tv->vval.v_list == NULL)
|
||||
{
|
||||
tv->vval.v_list = list_alloc();
|
||||
if (tv->vval.v_list != NULL)
|
||||
++tv->vval.v_list->lv_refcount;
|
||||
}
|
||||
copy_tv(tv, rettv);
|
||||
}
|
||||
}
|
||||
|
||||
name[len] = cc;
|
||||
@@ -2613,7 +2641,28 @@ find_var(char_u *name, hashtab_T **htp, int no_autoload)
|
||||
return ret;
|
||||
|
||||
// Search in parent scope for lambda
|
||||
return find_var_in_scoped_ht(name, no_autoload || htp != NULL);
|
||||
ret = find_var_in_scoped_ht(name, no_autoload || htp != NULL);
|
||||
if (ret != NULL)
|
||||
return ret;
|
||||
|
||||
// in Vim9 script items without a scope can be script-local
|
||||
if (in_vim9script() && name[0] != NUL && name[1] != ':')
|
||||
{
|
||||
ht = get_script_local_ht();
|
||||
if (ht != NULL)
|
||||
{
|
||||
ret = find_var_in_ht(ht, *name, varname,
|
||||
no_autoload || htp != NULL);
|
||||
if (ret != NULL)
|
||||
{
|
||||
if (htp != NULL)
|
||||
*htp = ht;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2683,19 +2732,23 @@ get_script_local_ht(void)
|
||||
|
||||
/*
|
||||
* Look for "name[len]" in script-local variables.
|
||||
* Return a non-NULL pointer when found, NULL when not found.
|
||||
* Return OK when found, FAIL when not found.
|
||||
*/
|
||||
void *
|
||||
lookup_scriptvar(char_u *name, size_t len, cctx_T *dummy UNUSED)
|
||||
int
|
||||
lookup_scriptvar(
|
||||
char_u *name,
|
||||
size_t len,
|
||||
void *lvar UNUSED,
|
||||
cctx_T *dummy UNUSED)
|
||||
{
|
||||
hashtab_T *ht = get_script_local_ht();
|
||||
char_u buffer[30];
|
||||
char_u *p;
|
||||
void *res;
|
||||
int res;
|
||||
hashitem_T *hi;
|
||||
|
||||
if (ht == NULL)
|
||||
return NULL;
|
||||
return FAIL;
|
||||
if (len < sizeof(buffer) - 1)
|
||||
{
|
||||
// avoid an alloc/free for short names
|
||||
@@ -2706,20 +2759,19 @@ lookup_scriptvar(char_u *name, size_t len, cctx_T *dummy UNUSED)
|
||||
{
|
||||
p = vim_strnsave(name, len);
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
hi = hash_find(ht, p);
|
||||
res = HASHITEM_EMPTY(hi) ? NULL : hi;
|
||||
res = HASHITEM_EMPTY(hi) ? FAIL : OK;
|
||||
|
||||
// if not script-local, then perhaps imported
|
||||
if (res == NULL && find_imported(p, 0, NULL) != NULL)
|
||||
res = p;
|
||||
if (res == FAIL && find_imported(p, 0, NULL) != NULL)
|
||||
res = OK;
|
||||
|
||||
if (p != buffer)
|
||||
vim_free(p);
|
||||
// Don't return "buffer", gcc complains.
|
||||
return res == NULL ? NULL : IObuff;
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3144,8 +3196,10 @@ set_var_const(
|
||||
goto failed;
|
||||
}
|
||||
|
||||
// Make sure the variable name is valid.
|
||||
if (!valid_varname(varname))
|
||||
// Make sure the variable name is valid. In Vim9 script an autoload
|
||||
// variable must be prefixed with "g:".
|
||||
if (!valid_varname(varname, !vim9script
|
||||
|| STRNCMP(name, "g:", 2) == 0))
|
||||
goto failed;
|
||||
|
||||
di = alloc(sizeof(dictitem_T) + STRLEN(varname));
|
||||
@@ -3298,17 +3352,17 @@ value_check_lock(int lock, char_u *name, int use_gettext)
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if a variable name is valid.
|
||||
* Check if a variable name is valid. When "autoload" is true "#" is allowed.
|
||||
* Return FALSE and give an error if not.
|
||||
*/
|
||||
int
|
||||
valid_varname(char_u *varname)
|
||||
valid_varname(char_u *varname, int autoload)
|
||||
{
|
||||
char_u *p;
|
||||
|
||||
for (p = varname; *p != NUL; ++p)
|
||||
if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p))
|
||||
&& *p != AUTOLOAD_CHAR)
|
||||
&& !(autoload && *p == AUTOLOAD_CHAR))
|
||||
{
|
||||
semsg(_(e_illvar), varname);
|
||||
return FALSE;
|
||||
|
||||
@@ -7,30 +7,30 @@ static const unsigned short cmdidxs1[26] =
|
||||
{
|
||||
/* a */ 0,
|
||||
/* b */ 19,
|
||||
/* c */ 42,
|
||||
/* d */ 108,
|
||||
/* e */ 133,
|
||||
/* f */ 156,
|
||||
/* g */ 173,
|
||||
/* h */ 179,
|
||||
/* i */ 188,
|
||||
/* j */ 207,
|
||||
/* k */ 209,
|
||||
/* l */ 214,
|
||||
/* m */ 276,
|
||||
/* n */ 294,
|
||||
/* o */ 314,
|
||||
/* p */ 326,
|
||||
/* q */ 365,
|
||||
/* r */ 368,
|
||||
/* s */ 388,
|
||||
/* t */ 457,
|
||||
/* u */ 502,
|
||||
/* v */ 513,
|
||||
/* w */ 533,
|
||||
/* x */ 547,
|
||||
/* y */ 557,
|
||||
/* z */ 558
|
||||
/* c */ 43,
|
||||
/* d */ 109,
|
||||
/* e */ 134,
|
||||
/* f */ 157,
|
||||
/* g */ 174,
|
||||
/* h */ 180,
|
||||
/* i */ 189,
|
||||
/* j */ 208,
|
||||
/* k */ 210,
|
||||
/* l */ 215,
|
||||
/* m */ 277,
|
||||
/* n */ 295,
|
||||
/* o */ 315,
|
||||
/* p */ 327,
|
||||
/* q */ 366,
|
||||
/* r */ 369,
|
||||
/* s */ 389,
|
||||
/* t */ 458,
|
||||
/* u */ 503,
|
||||
/* v */ 514,
|
||||
/* w */ 534,
|
||||
/* x */ 548,
|
||||
/* y */ 558,
|
||||
/* z */ 559
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -42,7 +42,7 @@ static const unsigned short cmdidxs1[26] =
|
||||
static const unsigned char cmdidxs2[26][26] =
|
||||
{ /* a b c d e f g h i j k l m n o p q r s t u v w x y z */
|
||||
/* a */ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 0, 0, 0, 7, 15, 0, 16, 0, 0, 0, 0, 0 },
|
||||
/* b */ { 2, 0, 0, 4, 5, 7, 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 13, 0, 0, 0, 0, 22, 0, 0, 0 },
|
||||
/* b */ { 2, 0, 0, 5, 6, 8, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 23, 0, 0, 0 },
|
||||
/* c */ { 3, 12, 16, 18, 20, 22, 25, 0, 0, 0, 0, 33, 37, 40, 46, 56, 58, 59, 60, 0, 62, 0, 65, 0, 0, 0 },
|
||||
/* d */ { 0, 0, 0, 0, 0, 0, 0, 0, 8, 18, 0, 19, 0, 0, 20, 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, 0 },
|
||||
/* e */ { 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 10, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 0, 0 },
|
||||
@@ -69,4 +69,4 @@ static const unsigned char cmdidxs2[26][26] =
|
||||
/* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static const int command_count = 573;
|
||||
static const int command_count = 574;
|
||||
|
||||
@@ -1254,6 +1254,16 @@ do_filter(
|
||||
if (read_linecount >= linecount)
|
||||
// move all marks from old lines to new lines
|
||||
mark_adjust(line1, line2, linecount, 0L);
|
||||
else if (save_cmod_flags & CMOD_LOCKMARKS)
|
||||
{
|
||||
// Move marks from the lines below the new lines down by
|
||||
// the number of lines lost.
|
||||
// Move marks from the lines that will be deleted to the
|
||||
// new lines and below.
|
||||
mark_adjust(line2 + 1, (linenr_T)MAXLNUM,
|
||||
linecount - read_linecount, 0L);
|
||||
mark_adjust(line1, line2, linecount, 0L);
|
||||
}
|
||||
else
|
||||
{
|
||||
// move marks from old lines to new lines, delete marks
|
||||
@@ -2449,6 +2459,7 @@ theend:
|
||||
* ECMD_OLDBUF: use existing buffer if it exists
|
||||
* ECMD_FORCEIT: ! used for Ex command
|
||||
* ECMD_ADDBUF: don't edit, just add to buffer list
|
||||
* ECMD_ALTBUF: like ECMD_ADDBUF and also set the alternate file
|
||||
* oldwin: Should be "curwin" when editing a new buffer in the current
|
||||
* window, NULL when splitting the window first. When not NULL info
|
||||
* of the previous buffer for "oldwin" is stored.
|
||||
@@ -2545,7 +2556,8 @@ do_ecmd(
|
||||
fname_case(sfname, 0); // set correct case for sfname
|
||||
#endif
|
||||
|
||||
if ((flags & ECMD_ADDBUF) && (ffname == NULL || *ffname == NUL))
|
||||
if ((flags & (ECMD_ADDBUF | ECMD_ALTBUF))
|
||||
&& (ffname == NULL || *ffname == NUL))
|
||||
goto theend;
|
||||
|
||||
if (ffname == NULL)
|
||||
@@ -2574,7 +2586,7 @@ do_ecmd(
|
||||
*/
|
||||
if ( ((!other_file && !(flags & ECMD_OLDBUF))
|
||||
|| (curbuf->b_nwindows == 1
|
||||
&& !(flags & (ECMD_HIDE | ECMD_ADDBUF))))
|
||||
&& !(flags & (ECMD_HIDE | ECMD_ADDBUF | ECMD_ALTBUF))))
|
||||
&& check_changed(curbuf, (p_awa ? CCGD_AW : 0)
|
||||
| (other_file ? 0 : CCGD_MULTWIN)
|
||||
| ((flags & ECMD_FORCEIT) ? CCGD_FORCEIT : 0)
|
||||
@@ -2623,7 +2635,7 @@ do_ecmd(
|
||||
*/
|
||||
if (other_file)
|
||||
{
|
||||
if (!(flags & ECMD_ADDBUF))
|
||||
if (!(flags & (ECMD_ADDBUF | ECMD_ALTBUF)))
|
||||
{
|
||||
if ((cmdmod.cmod_flags & CMOD_KEEPALT) == 0)
|
||||
curwin->w_alt_fnum = curbuf->b_fnum;
|
||||
@@ -2635,11 +2647,12 @@ do_ecmd(
|
||||
buf = buflist_findnr(fnum);
|
||||
else
|
||||
{
|
||||
if (flags & ECMD_ADDBUF)
|
||||
if (flags & (ECMD_ADDBUF | ECMD_ALTBUF))
|
||||
{
|
||||
// Default the line number to zero to avoid that a wininfo item
|
||||
// is added for the current window.
|
||||
linenr_T tlnum = 0;
|
||||
buf_T *newbuf;
|
||||
|
||||
if (command != NULL)
|
||||
{
|
||||
@@ -2647,10 +2660,12 @@ do_ecmd(
|
||||
if (tlnum <= 0)
|
||||
tlnum = 1L;
|
||||
}
|
||||
// Add BLN_NOCURWIN to avoid a new wininfo items is assocated
|
||||
// Add BLN_NOCURWIN to avoid a new wininfo items are associated
|
||||
// with the current window.
|
||||
(void)buflist_new(ffname, sfname, tlnum,
|
||||
newbuf = buflist_new(ffname, sfname, tlnum,
|
||||
BLN_LISTED | BLN_NOCURWIN);
|
||||
if (newbuf != NULL && (flags & ECMD_ALTBUF))
|
||||
curwin->w_alt_fnum = newbuf->b_fnum;
|
||||
goto theend;
|
||||
}
|
||||
buf = buflist_new(ffname, sfname, 0L,
|
||||
@@ -2808,7 +2823,7 @@ do_ecmd(
|
||||
}
|
||||
else // !other_file
|
||||
{
|
||||
if ((flags & ECMD_ADDBUF) || check_fname() == FAIL)
|
||||
if ((flags & (ECMD_ADDBUF | ECMD_ALTBUF)) || check_fname() == FAIL)
|
||||
goto theend;
|
||||
|
||||
oldbuf = (flags & ECMD_OLDBUF);
|
||||
@@ -3108,7 +3123,7 @@ do_ecmd(
|
||||
#endif
|
||||
|
||||
if (command != NULL)
|
||||
do_cmdline(command, NULL, NULL, DOCMD_VERBOSE);
|
||||
do_cmdline(command, NULL, NULL, DOCMD_VERBOSE|DOCMD_RANGEOK);
|
||||
|
||||
#ifdef FEAT_KEYMAP
|
||||
if (curbuf->b_kmap_state & KEYMAP_INIT)
|
||||
@@ -3656,7 +3671,8 @@ ex_substitute(exarg_T *eap)
|
||||
which_pat = RE_LAST; // use last used regexp
|
||||
delimiter = *cmd++; // remember delimiter character
|
||||
pat = cmd; // remember start of search pat
|
||||
cmd = skip_regexp_ex(cmd, delimiter, p_magic, &eap->arg, NULL);
|
||||
cmd = skip_regexp_ex(cmd, delimiter, magic_isset(),
|
||||
&eap->arg, NULL);
|
||||
if (cmd[0] == delimiter) // end delimiter found
|
||||
*cmd++ = NUL; // replace it with a NUL
|
||||
}
|
||||
@@ -3748,7 +3764,7 @@ ex_substitute(exarg_T *eap)
|
||||
}
|
||||
|
||||
if ((cmdmod.cmod_flags & CMOD_KEEPPATTERNS) == 0)
|
||||
save_re_pat(RE_SUBST, pat, p_magic);
|
||||
save_re_pat(RE_SUBST, pat, magic_isset());
|
||||
// put pattern in history
|
||||
add_to_history(HIST_SEARCH, pat, TRUE, NUL);
|
||||
|
||||
@@ -3762,6 +3778,15 @@ ex_substitute(exarg_T *eap)
|
||||
++cmd;
|
||||
else
|
||||
{
|
||||
#ifdef FEAT_EVAL
|
||||
if (in_vim9script())
|
||||
{
|
||||
// ignore 'gdefault' and 'edcompatible'
|
||||
subflags.do_all = FALSE;
|
||||
subflags.do_ask = FALSE;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (!p_ed)
|
||||
{
|
||||
if (p_gd) // default is global on
|
||||
@@ -3882,7 +3907,7 @@ ex_substitute(exarg_T *eap)
|
||||
* But don't do it when it starts with "\=", then it's an expression.
|
||||
*/
|
||||
if (!(sub[0] == '\\' && sub[1] == '='))
|
||||
sub = regtilde(sub, p_magic);
|
||||
sub = regtilde(sub, magic_isset());
|
||||
|
||||
/*
|
||||
* Check for a match on each line.
|
||||
@@ -4294,7 +4319,7 @@ ex_substitute(exarg_T *eap)
|
||||
// get length of substitution part
|
||||
sublen = vim_regsub_multi(®match,
|
||||
sub_firstlnum - regmatch.startpos[0].lnum,
|
||||
sub, sub_firstline, FALSE, p_magic, TRUE);
|
||||
sub, sub_firstline, FALSE, magic_isset(), TRUE);
|
||||
#ifdef FEAT_EVAL
|
||||
// If getting the substitute string caused an error, don't do
|
||||
// the replacement.
|
||||
@@ -4398,7 +4423,7 @@ ex_substitute(exarg_T *eap)
|
||||
|
||||
(void)vim_regsub_multi(®match,
|
||||
sub_firstlnum - regmatch.startpos[0].lnum,
|
||||
sub, new_end, TRUE, p_magic, TRUE);
|
||||
sub, new_end, TRUE, magic_isset(), TRUE);
|
||||
sub_nsubs++;
|
||||
did_sub = TRUE;
|
||||
|
||||
@@ -4831,7 +4856,7 @@ ex_global(exarg_T *eap)
|
||||
if (delim)
|
||||
++cmd; // skip delimiter if there is one
|
||||
pat = cmd; // remember start of pattern
|
||||
cmd = skip_regexp_ex(cmd, delim, p_magic, &eap->arg, NULL);
|
||||
cmd = skip_regexp_ex(cmd, delim, magic_isset(), &eap->arg, NULL);
|
||||
if (cmd[0] == delim) // end delimiter found
|
||||
*cmd++ = NUL; // replace it with a NUL
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user