mirror of
https://github.com/zoriya/vim.git
synced 2025-12-10 09:16:16 +00:00
Compare commits
422 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a53ec8bdd | ||
|
|
38ddf333f6 | ||
|
|
4d4d1cd5c8 | ||
|
|
f4ee528086 | ||
|
|
9d48956681 | ||
|
|
ea2d8d2571 | ||
|
|
c7e44a7e4c | ||
|
|
696ba23149 | ||
|
|
1040956292 | ||
|
|
7b7f78f51d | ||
|
|
33afa2447b | ||
|
|
ac7bf8c4bf | ||
|
|
ed3c7e6339 | ||
|
|
f9a343f8bd | ||
|
|
b61ef01cce | ||
|
|
45df2a01a7 | ||
|
|
9898107f54 | ||
|
|
b5ed266037 | ||
|
|
066b12e36c | ||
|
|
68e30449a2 | ||
|
|
bd7f7c123d | ||
|
|
461f21242a | ||
|
|
ae616494d7 | ||
|
|
0aac67a431 | ||
|
|
b13ab99908 | ||
|
|
622b3568fa | ||
|
|
6ca6ca4889 | ||
|
|
6d585f4c5c | ||
|
|
01865ade85 | ||
|
|
ace6132aa8 | ||
|
|
4fc224ca1c | ||
|
|
2547aa930b | ||
|
|
d3bb6a82a5 | ||
|
|
cb4f69c2fd | ||
|
|
a5d0423fa1 | ||
|
|
d66cdcd43a | ||
|
|
7d40b8a532 | ||
|
|
37394ff752 | ||
|
|
2d6b20d6a9 | ||
|
|
2afc3b4f77 | ||
|
|
24aa48b7a2 | ||
|
|
925e9fd633 | ||
|
|
c841afff6a | ||
|
|
13e12b8a3c | ||
|
|
40f4f7a48c | ||
|
|
43e969d3f9 | ||
|
|
b8070e3173 | ||
|
|
bfba8651a5 | ||
|
|
637cd7d1c9 | ||
|
|
6c4bfe4b31 | ||
|
|
2d06bfde29 | ||
|
|
8930caaa1a | ||
|
|
8d5f6af5e5 | ||
|
|
dd1a9af00f | ||
|
|
7a87b4e3fe | ||
|
|
4cc45a3673 | ||
|
|
5a67c37a55 | ||
|
|
63be3d4ba0 | ||
|
|
c69950ac17 | ||
|
|
4cdb13ce81 | ||
|
|
0f60e80f9b | ||
|
|
2f1980f7b7 | ||
|
|
054f14bbe5 | ||
|
|
e7e4838f25 | ||
|
|
2690b5aed8 | ||
|
|
bc6fcbe4ce | ||
|
|
7d5e744162 | ||
|
|
420952175a | ||
|
|
c71f36a889 | ||
|
|
f868ba8903 | ||
|
|
c7db57788b | ||
|
|
7591116acf | ||
|
|
f56c95fdad | ||
|
|
08815a1d03 | ||
|
|
b31be3f909 | ||
|
|
7892b953e0 | ||
|
|
d43906d2e5 | ||
|
|
470adb827f | ||
|
|
b146e01a7e | ||
|
|
54c3fcd852 | ||
|
|
682d0a1546 | ||
|
|
2f8ce0ae8a | ||
|
|
747f11ad6e | ||
|
|
956501594e | ||
|
|
bf9d8c3765 | ||
|
|
b209750b5e | ||
|
|
f398238a37 | ||
|
|
6802cce407 | ||
|
|
75783bd84e | ||
|
|
65b9545f44 | ||
|
|
6434fc574d | ||
|
|
10e1d01aaf | ||
|
|
de2396fc87 | ||
|
|
d032f34a51 | ||
|
|
447bfba24b | ||
|
|
e859312e74 | ||
|
|
2764d06ab7 | ||
|
|
066e7da3cd | ||
|
|
f0b9f43c31 | ||
|
|
b68ced5f07 | ||
|
|
945c857844 | ||
|
|
68d130c618 | ||
|
|
6e36b1c18e | ||
|
|
203ec7760d | ||
|
|
f5be8cdb77 | ||
|
|
98af99f2d7 | ||
|
|
ee1b93169d | ||
|
|
a90afb9a59 | ||
|
|
e30f64b4b5 | ||
|
|
657a826c07 | ||
|
|
02f9e6a60f | ||
|
|
452143c6bf | ||
|
|
5966ea105e | ||
|
|
3d48e25dcb | ||
|
|
1e1f612bd4 | ||
|
|
b6e4e4c6f7 | ||
|
|
e3f915d12c | ||
|
|
ceb56ddbaf | ||
|
|
297bec0731 | ||
|
|
5551b131da | ||
|
|
8455c5ed31 | ||
|
|
1f22cc5cdb | ||
|
|
21c16f868d | ||
|
|
49fe0d6b28 | ||
|
|
7ce85be63b | ||
|
|
1bce831e13 | ||
|
|
8c34ea54ad | ||
|
|
5d2eb0fff0 | ||
|
|
3ac9c4701a | ||
|
|
08f7a41b0a | ||
|
|
f1a2368d81 | ||
|
|
bfd65589d9 | ||
|
|
7177da9dd4 | ||
|
|
a4b442614c | ||
|
|
c212dd0a34 | ||
|
|
83e7450053 | ||
|
|
4d57ba0202 | ||
|
|
a4dc6f92bb | ||
|
|
35910f2d54 | ||
|
|
b898a029b0 | ||
|
|
985116ae0b | ||
|
|
eb6880b6eb | ||
|
|
8af81d656a | ||
|
|
6d3a7213f5 | ||
|
|
c85156bb89 | ||
|
|
13c046316b | ||
|
|
ecdd14a427 | ||
|
|
2b6ef856fb | ||
|
|
9b7bf9e98f | ||
|
|
914e7eaa67 | ||
|
|
21e5bdd271 | ||
|
|
1e624c912d | ||
|
|
f65927fc8d | ||
|
|
b074e8b8d4 | ||
|
|
18aa13d13b | ||
|
|
543e6f3467 | ||
|
|
7ff78465f7 | ||
|
|
a7eedf317a | ||
|
|
11a5b19a8c | ||
|
|
4004315292 | ||
|
|
08fc48492a | ||
|
|
58bb61cf5e | ||
|
|
ef85a9b2d9 | ||
|
|
97d2f34c87 | ||
|
|
92053ce59e | ||
|
|
389df259c4 | ||
|
|
ae97b94176 | ||
|
|
e4358906fd | ||
|
|
96916ac67a | ||
|
|
6e13530ca0 | ||
|
|
efaaaa683b | ||
|
|
8e2730a315 | ||
|
|
6110e79a58 | ||
|
|
6b7a0a8c20 | ||
|
|
b335b29e1c | ||
|
|
0a47e0970a | ||
|
|
002262f4de | ||
|
|
7a4b8980ea | ||
|
|
c620c055ce | ||
|
|
bed36b939a | ||
|
|
fe465a01cf | ||
|
|
0ab55d6201 | ||
|
|
bb790dcc46 | ||
|
|
007f9d6ed5 | ||
|
|
cbb6bdcd89 | ||
|
|
27321dbeed | ||
|
|
ab58946384 | ||
|
|
0ad3e894d7 | ||
|
|
67627355ac | ||
|
|
ad7c249327 | ||
|
|
252e88a785 | ||
|
|
0d94ad6958 | ||
|
|
b3c019cbc3 | ||
|
|
8f510afcd6 | ||
|
|
a66ba01a5f | ||
|
|
47e7d70b58 | ||
|
|
846178a72c | ||
|
|
50788ef349 | ||
|
|
435d89789e | ||
|
|
fce82b3aa7 | ||
|
|
9978d473e3 | ||
|
|
05a5551a86 | ||
|
|
788123c00c | ||
|
|
e9f262bdff | ||
|
|
3f40ce78f5 | ||
|
|
fb9d5c51c8 | ||
|
|
eeb27bfe28 | ||
|
|
962d721319 | ||
|
|
1c991144c5 | ||
|
|
effb0cd75d | ||
|
|
442af2f89e | ||
|
|
743d062020 | ||
|
|
92fdd1e75d | ||
|
|
5289783e0b | ||
|
|
810af5ea46 | ||
|
|
a9a8e5f0dc | ||
|
|
d2ef6b320b | ||
|
|
c19fd917be | ||
|
|
1112c0febb | ||
|
|
a0d072ef82 | ||
|
|
5f195938d4 | ||
|
|
9a78e6df17 | ||
|
|
e6b5324e3a | ||
|
|
086eb18ba1 | ||
|
|
d58d4f90ae | ||
|
|
ef8c617b9c | ||
|
|
8e6cbb7232 | ||
|
|
e49b8e8d75 | ||
|
|
11b6600c88 | ||
|
|
e707c882b2 | ||
|
|
9004949221 | ||
|
|
be7a50c22f | ||
|
|
47e880d6c1 | ||
|
|
37c8371195 | ||
|
|
006ad48b8a | ||
|
|
e46a440505 | ||
|
|
de8f0f47f6 | ||
|
|
f151ad1c70 | ||
|
|
6b949615ed | ||
|
|
a53618dd1d | ||
|
|
de19b745ee | ||
|
|
cf070112ca | ||
|
|
d034220c54 | ||
|
|
9b5384b97e | ||
|
|
927b7dd0fe | ||
|
|
6378b21d6d | ||
|
|
566cc8c72b | ||
|
|
cf30643ae6 | ||
|
|
6d90c61c5a | ||
|
|
7d2ac92ebc | ||
|
|
fda20c4cc5 | ||
|
|
91639195ef | ||
|
|
a1f9f8666e | ||
|
|
b7a78f7a67 | ||
|
|
d5053d015a | ||
|
|
06cf97e714 | ||
|
|
75e15670b8 | ||
|
|
faf8626b79 | ||
|
|
7e8967fdcd | ||
|
|
9215f01218 | ||
|
|
7a4981b936 | ||
|
|
a0a0c4147f | ||
|
|
e40fbc2ca9 | ||
|
|
ab19d495fd | ||
|
|
e6e031739c | ||
|
|
8ea9390b78 | ||
|
|
0b1cd52ff6 | ||
|
|
bd84617d1a | ||
|
|
7147820cb9 | ||
|
|
e6536aa766 | ||
|
|
be7ee48876 | ||
|
|
793648fb56 | ||
|
|
5d3c9f8c2a | ||
|
|
5f36d5fbb8 | ||
|
|
cf8441704d | ||
|
|
fc838d6cb0 | ||
|
|
1e4c7d0ed2 | ||
|
|
211dd3fd82 | ||
|
|
73b4465ba7 | ||
|
|
801ab06934 | ||
|
|
832adf9bb8 | ||
|
|
7acde51832 | ||
|
|
ca275a05d8 | ||
|
|
65a8ed37f7 | ||
|
|
b171fb1790 | ||
|
|
9d40c63c7d | ||
|
|
5409f5d8c9 | ||
|
|
b7e2483655 | ||
|
|
67fbdfefd2 | ||
|
|
ef6d86c173 | ||
|
|
4014e2ceb0 | ||
|
|
df069eec3b | ||
|
|
7eaafe65ee | ||
|
|
bdd2c290d3 | ||
|
|
25fd267287 | ||
|
|
b2b218d89b | ||
|
|
acd4c5e914 | ||
|
|
373c65104e | ||
|
|
7633fe595e | ||
|
|
38041da1c2 | ||
|
|
73fef33014 | ||
|
|
8d9437968b | ||
|
|
7fe875583b | ||
|
|
f5433fbfe4 | ||
|
|
da58134eed | ||
|
|
23c5527373 | ||
|
|
e55b1c098d | ||
|
|
820ffa567c | ||
|
|
a3b7fdc1bb | ||
|
|
8c524f76eb | ||
|
|
6797966dfc | ||
|
|
0cb5bcf583 | ||
|
|
845e0ee594 | ||
|
|
a190548e91 | ||
|
|
b326edf5b3 | ||
|
|
ef6746f637 | ||
|
|
280b0dc815 | ||
|
|
1089374130 | ||
|
|
7e380030c1 | ||
|
|
20298ce679 | ||
|
|
1e0b7b11db | ||
|
|
ec9b017b87 | ||
|
|
3b74b6b4bb | ||
|
|
c785b9a7f4 | ||
|
|
128d307963 | ||
|
|
c5b1c20b6b | ||
|
|
0779fab297 | ||
|
|
c8cb883015 | ||
|
|
efd8855594 | ||
|
|
9b68c82b7c | ||
|
|
511feec6f0 | ||
|
|
865af6b990 | ||
|
|
ceb2e77510 | ||
|
|
72abcf42d4 | ||
|
|
158ea175a9 | ||
|
|
2f03e5a0a9 | ||
|
|
3d9207ad2f | ||
|
|
856c1110c1 | ||
|
|
40a019f157 | ||
|
|
e17f8817a1 | ||
|
|
9bb3eb3e02 | ||
|
|
f7d267ef20 | ||
|
|
101f4810e2 | ||
|
|
0fe937fd86 | ||
|
|
a1bc6f1293 | ||
|
|
a6e8bf2d89 | ||
|
|
84cf6bd81b | ||
|
|
9af78769ee | ||
|
|
c70222d12a | ||
|
|
fdcbe3c3fe | ||
|
|
ab176ce982 | ||
|
|
ad72350360 | ||
|
|
b340baed9f | ||
|
|
47a519a933 | ||
|
|
a65d8b5bb9 | ||
|
|
65e0d77a66 | ||
|
|
8e20f75e58 | ||
|
|
0c8059e0b6 | ||
|
|
8dff4cbf6d | ||
|
|
df7df59d85 | ||
|
|
984dddbef4 | ||
|
|
f3decc5830 | ||
|
|
34db91f7a4 | ||
|
|
c82a5b5da5 | ||
|
|
142499de33 | ||
|
|
0c0eddd3dd | ||
|
|
4a021dfbee | ||
|
|
c9630d2658 | ||
|
|
71ccd03ee8 | ||
|
|
722e505d1a | ||
|
|
5055c56cfb | ||
|
|
37d1673ce0 | ||
|
|
6c6be9e88d | ||
|
|
f6e020b122 | ||
|
|
ec68028604 | ||
|
|
9721fb4ea3 | ||
|
|
00e260bb6c | ||
|
|
1de5f7c81d | ||
|
|
2d4070d3b0 | ||
|
|
e0ebeda4d8 | ||
|
|
215f49c4d7 | ||
|
|
f1f0ff9557 | ||
|
|
362b44bd4a | ||
|
|
be5ee8686a | ||
|
|
6ba24d8763 | ||
|
|
13b8205b44 | ||
|
|
ea1233fccf | ||
|
|
d281b7c227 | ||
|
|
ab54032f29 | ||
|
|
eebd555733 | ||
|
|
152e79e94b | ||
|
|
253ea9fa42 | ||
|
|
32ee627750 | ||
|
|
0e390f40e9 | ||
|
|
517f00f788 | ||
|
|
0ca8b5ba7b | ||
|
|
218cb0fb62 | ||
|
|
59de417b90 | ||
|
|
dcf59c37d0 | ||
|
|
a45551a535 | ||
|
|
077a1e670a | ||
|
|
ec98e93a82 | ||
|
|
7ba5a7eff3 | ||
|
|
f154f3ab2c | ||
|
|
6938e27abd | ||
|
|
b5e18f29fa | ||
|
|
cc613031b9 | ||
|
|
acc2240640 | ||
|
|
df44a27b53 | ||
|
|
da84ac2a6f | ||
|
|
951a2fb1b8 | ||
|
|
1f1fd44ef7 | ||
|
|
bb861e293e | ||
|
|
c82dd86084 | ||
|
|
48af321a33 | ||
|
|
4fdb8bd054 | ||
|
|
5b157fe2ed | ||
|
|
673fc3e23f | ||
|
|
a9c0104947 | ||
|
|
e928366de5 | ||
|
|
975a880a13 | ||
|
|
adc17a5f9d |
223
.github/workflows/ci-windows.yaml
vendored
Normal file
223
.github/workflows/ci-windows.yaml
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
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:
|
||||
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 "::set-env name=PYTHON_DIR::$python_dir"
|
||||
echo "::set-env name=PYTHON3_DIR::$python3_dir"
|
||||
|
||||
- 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: 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
|
||||
|
||||
mkdir ..\src2
|
||||
xcopy testdir ..\src2\testdir\ /E > nul || exit 1
|
||||
copy evalfunc.c ..\src2 > nul
|
||||
|
||||
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 5 minutes.
|
||||
for /L %%i in (1,1,300) do (
|
||||
if exist done.txt goto exitloop
|
||||
ping -n 2 localhost > nul
|
||||
)
|
||||
echo %COL_RED%Timed out.%COL_RESET%
|
||||
: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
|
||||
18
.travis.yml
18
.travis.yml
@@ -3,21 +3,21 @@ language: c
|
||||
_anchors:
|
||||
envs:
|
||||
- &tiny-nogui
|
||||
BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &tiny
|
||||
BUILD=yes TEST=test FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test FEATURES=tiny CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &small
|
||||
BUILD=yes TEST=test FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test FEATURES=small CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &normal
|
||||
BUILD=yes TEST=test FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test FEATURES=normal CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
- &linux-huge
|
||||
BUILD=yes TEST="scripttests test_libvterm" CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST="scripttests test_libvterm" CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
||||
- &osx-huge # macOS build
|
||||
BUILD=yes TEST=test FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
BUILD=yes TEST=test FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
|
||||
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
|
||||
- &unittests
|
||||
BUILD=no TEST=unittests CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
|
||||
BUILD=no TEST=unittests CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
|
||||
- &asan # ASAN build
|
||||
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
|
||||
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
|
||||
@@ -191,13 +191,13 @@ jobs:
|
||||
compiler: gcc
|
||||
env: *small
|
||||
- <<: *linux
|
||||
name: normal/clang
|
||||
name: normal+shadow/clang
|
||||
compiler: clang
|
||||
env:
|
||||
- *normal
|
||||
- *shadowopt
|
||||
- <<: *linux
|
||||
name: normal/gcc
|
||||
name: normal+shadow/gcc
|
||||
compiler: gcc
|
||||
env:
|
||||
- *normal
|
||||
|
||||
9
Filelist
9
Filelist
@@ -9,6 +9,7 @@ SRC_ALL = \
|
||||
.lgtm.yml \
|
||||
.travis.yml \
|
||||
.cirrus.yml \
|
||||
.github/workflows/ci-windows.yaml \
|
||||
appveyor.yml \
|
||||
ci/appveyor.bat \
|
||||
ci/if_ver*.vim \
|
||||
@@ -68,6 +69,7 @@ SRC_ALL = \
|
||||
src/gui_beval.c \
|
||||
src/hardcopy.c \
|
||||
src/hashtab.c \
|
||||
src/help.c \
|
||||
src/highlight.c \
|
||||
src/indent.c \
|
||||
src/insexpand.c \
|
||||
@@ -75,11 +77,13 @@ SRC_ALL = \
|
||||
src/json_test.c \
|
||||
src/kword_test.c \
|
||||
src/list.c \
|
||||
src/locale.c \
|
||||
src/keymap.h \
|
||||
src/macros.h \
|
||||
src/main.c \
|
||||
src/map.c \
|
||||
src/mark.c \
|
||||
src/match.c \
|
||||
src/mbyte.c \
|
||||
src/memfile.c \
|
||||
src/memfile_test.c \
|
||||
@@ -239,14 +243,17 @@ SRC_ALL = \
|
||||
src/proto/gui_beval.pro \
|
||||
src/proto/hardcopy.pro \
|
||||
src/proto/hashtab.pro \
|
||||
src/proto/help.pro \
|
||||
src/proto/highlight.pro \
|
||||
src/proto/indent.pro \
|
||||
src/proto/insexpand.pro \
|
||||
src/proto/json.pro \
|
||||
src/proto/list.pro \
|
||||
src/proto/locale.pro \
|
||||
src/proto/main.pro \
|
||||
src/proto/map.pro \
|
||||
src/proto/mark.pro \
|
||||
src/proto/match.pro \
|
||||
src/proto/mbyte.pro \
|
||||
src/proto/memfile.pro \
|
||||
src/proto/memline.pro \
|
||||
@@ -673,10 +680,8 @@ SRC_EXTRA = \
|
||||
$(SRC_QNX) \
|
||||
$(SRC_VMS) \
|
||||
README_os390.txt \
|
||||
src/Make_mint.mak \
|
||||
src/infplist.xml \
|
||||
src/link.390 \
|
||||
src/os_mint.h \
|
||||
src/os_vms_fix.com \
|
||||
src/toolbar.phi \
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
[](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)
|
||||
|
||||
@@ -13,17 +13,12 @@ src/if_sniff.* Interface to SNiFF. If you don't know what SNiFF is,
|
||||
|
||||
src/os_amiga.* Files for the Amiga port.
|
||||
|
||||
src/gui_beos.*
|
||||
src/os_beos.* Files for the BeOS port.
|
||||
|
||||
src/os_msdos.*
|
||||
src/os_dos.* Files for the MS-DOS port.
|
||||
|
||||
src/gui_mac.*
|
||||
src/os_mac.* Files for the Mac port.
|
||||
|
||||
src/os_mint.8 Files for the Atari Mint port.
|
||||
|
||||
src/os_vms* Files for the VMS port.
|
||||
|
||||
src/os_w32*
|
||||
|
||||
@@ -5,16 +5,17 @@ skip_tags: true
|
||||
environment:
|
||||
matrix:
|
||||
- FEATURE: HUGE
|
||||
- FEATURE: NORMAL
|
||||
# disabled
|
||||
# - FEATURE: TINY
|
||||
# - FEATURE: SMALL
|
||||
# - FEATURE: NORMAL
|
||||
# - FEATURE: BIG
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
before_build:
|
||||
# Use Windows SDK 7.1 (= MSVC 2010)
|
||||
- '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release'
|
||||
- 'set INCLUDE=%INCLUDE%C:\Program Files (x86)\Windows Kits\8.1\Include\um'
|
||||
|
||||
@@ -25,9 +26,9 @@ test_script:
|
||||
- cd src/testdir
|
||||
# Testing with MSVC gvim
|
||||
- path C:\Python35-x64;%PATH%
|
||||
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\gvim
|
||||
- nmake -f Make_dos.mak VIMPROG=..\gvim
|
||||
- nmake -f Make_dos.mak clean
|
||||
# Testing with MingW console version
|
||||
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\vim
|
||||
# Testing with MSVC console version
|
||||
- nmake -f Make_dos.mak VIMPROG=..\vim
|
||||
|
||||
# vim: sw=2 sts=2 et ts=8 sr
|
||||
|
||||
@@ -5,44 +5,32 @@ setlocal ENABLEDELAYEDEXPANSION
|
||||
cd %APPVEYOR_BUILD_FOLDER%
|
||||
|
||||
cd src
|
||||
echo "Building MinGW 32bit console version"
|
||||
set PATH=c:\msys64\mingw32\bin;%PATH%
|
||||
mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
|
||||
:: Save vim.exe before Make clean, moved back below.
|
||||
copy vim.exe testdir
|
||||
mingw32-make.exe -f Make_ming.mak clean
|
||||
|
||||
:: Build Mingw huge version with python and channel support, or
|
||||
:: with specified features without python.
|
||||
echo "Building MinGW 32bit GUI version"
|
||||
if "%FEATURE%" == "HUGE" (
|
||||
mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1
|
||||
) ELSE (
|
||||
mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
|
||||
)
|
||||
.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_ming.txt
|
||||
|
||||
:: Filter out the progress bar from the build log
|
||||
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
|
||||
|
||||
echo "Building MSVC 64bit console Version"
|
||||
nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
|
||||
nmake -f Make_mvc2.mak clean
|
||||
nmake -f Make_mvc2.mak CPU=AMD64 ^
|
||||
OLE=no GUI=no IME=yes ICONV=yes DEBUG=no ^
|
||||
FEATURES=%FEATURE% || exit 1
|
||||
|
||||
:: build MSVC huge version with python and channel support
|
||||
:: GUI needs to be last, so that testing works
|
||||
echo "Building MSVC 64bit GUI Version"
|
||||
if "%FEATURE%" == "HUGE" (
|
||||
nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1
|
||||
nmake -f Make_mvc2.mak CPU=AMD64 ^
|
||||
OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no POSTSCRIPT=yes ^
|
||||
PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 ^
|
||||
PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 ^
|
||||
FEATURES=%FEATURE% || exit 1
|
||||
) ELSE (
|
||||
nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
|
||||
nmake -f Make_mvc2.mak CPU=AMD64 ^
|
||||
OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no ^
|
||||
FEATURES=%FEATURE% || exit 1
|
||||
)
|
||||
.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_msvc.txt
|
||||
|
||||
:: Restore vim.exe, tests will run with this.
|
||||
move /Y testdir\vim.exe .
|
||||
echo "version output MinGW"
|
||||
type ver_ming.txt
|
||||
echo "version output MVC"
|
||||
echo "version output MSVC console"
|
||||
.\vim --version
|
||||
echo "version output MSVC GUI"
|
||||
type ver_msvc.txt
|
||||
cd ..
|
||||
|
||||
@@ -687,6 +687,15 @@ SectionEnd
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
!macro LoadDefaultVimrc out_var reg_value default_value
|
||||
ClearErrors
|
||||
ReadRegStr ${out_var} HKLM "${UNINST_REG_KEY_VIM}" ${reg_value}
|
||||
${If} ${Errors}
|
||||
${OrIf} ${out_var} == ""
|
||||
StrCpy ${out_var} ${default_value}
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
Function .onInit
|
||||
!ifdef HAVE_MULTI_LANG
|
||||
# Select a language (or read from the registry).
|
||||
@@ -718,10 +727,10 @@ Function .onInit
|
||||
!endif
|
||||
${EndIf}
|
||||
|
||||
# Load the selections from the registry (if any).
|
||||
${If} ${RunningX64}
|
||||
SetRegView 64
|
||||
${EndIf}
|
||||
# Load the selections from the registry (if any).
|
||||
!insertmacro LoadSectionSelection ${id_section_console} "select_console"
|
||||
!insertmacro LoadSectionSelection ${id_section_batch} "select_batch"
|
||||
!insertmacro LoadSectionSelection ${id_section_desktop} "select_desktop"
|
||||
@@ -736,6 +745,10 @@ Function .onInit
|
||||
!ifdef HAVE_NLS
|
||||
!insertmacro LoadSectionSelection ${id_section_nls} "select_nls"
|
||||
!endif
|
||||
# Load the default _vimrc settings from the registry (if any).
|
||||
!insertmacro LoadDefaultVimrc $vim_compat_stat "vim_compat" "all"
|
||||
!insertmacro LoadDefaultVimrc $vim_keymap_stat "vim_keyremap" "default"
|
||||
!insertmacro LoadDefaultVimrc $vim_mouse_stat "vim_mouse" "default"
|
||||
${If} ${RunningX64}
|
||||
SetRegView lastused
|
||||
${EndIf}
|
||||
@@ -799,17 +812,11 @@ Function SetCustom
|
||||
${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_defaults)
|
||||
${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_all)
|
||||
|
||||
# Default selection
|
||||
${If} $vim_compat_stat == ""
|
||||
ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_compat"
|
||||
${Else}
|
||||
StrCpy $3 $vim_compat_stat
|
||||
${EndIf}
|
||||
${If} $3 == "defaults"
|
||||
${If} $vim_compat_stat == "defaults"
|
||||
StrCpy $4 2
|
||||
${ElseIf} $3 == "vim"
|
||||
${ElseIf} $vim_compat_stat == "vim"
|
||||
StrCpy $4 1
|
||||
${ElseIf} $3 == "vi"
|
||||
${ElseIf} $vim_compat_stat == "vi"
|
||||
StrCpy $4 0
|
||||
${Else} # default
|
||||
StrCpy $4 3
|
||||
@@ -828,13 +835,7 @@ Function SetCustom
|
||||
${NSD_CB_AddString} $vim_nsd_keymap $(str_msg_keymap_default)
|
||||
${NSD_CB_AddString} $vim_nsd_keymap $(str_msg_keymap_windows)
|
||||
|
||||
# Default selection
|
||||
${If} $vim_keymap_stat == ""
|
||||
ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_keyremap"
|
||||
${Else}
|
||||
StrCpy $3 $vim_keymap_stat
|
||||
${EndIf}
|
||||
${If} $3 == "windows"
|
||||
${If} $vim_keymap_stat == "windows"
|
||||
StrCpy $4 1
|
||||
${Else} # default
|
||||
StrCpy $4 0
|
||||
@@ -854,15 +855,9 @@ Function SetCustom
|
||||
${NSD_CB_AddString} $vim_nsd_mouse $(str_msg_mouse_windows)
|
||||
${NSD_CB_AddString} $vim_nsd_mouse $(str_msg_mouse_unix)
|
||||
|
||||
# Default selection
|
||||
${If} $vim_mouse_stat == ""
|
||||
ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_mouse"
|
||||
${Else}
|
||||
StrCpy $3 $vim_mouse_stat
|
||||
${EndIf}
|
||||
${If} $3 == "xterm"
|
||||
${If} $vim_mouse_stat == "xterm"
|
||||
StrCpy $4 2
|
||||
${ElseIf} $3 == "windows"
|
||||
${ElseIf} $vim_mouse_stat == "windows"
|
||||
StrCpy $4 1
|
||||
${Else} # default
|
||||
StrCpy $4 0
|
||||
|
||||
@@ -25,7 +25,7 @@ function decada#Unit_Name () dict " {{{1
|
||||
" Convert filename into acs unit:
|
||||
" 1: remove the file extenstion.
|
||||
" 2: replace all double '_' or '-' with an dot (which denotes a separate)
|
||||
" 3: remove a trailing '_' (wich denotes a specification)
|
||||
" 3: remove a trailing '_' (which denotes a specification)
|
||||
return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '')
|
||||
endfunction decada#Unit_Name " }}}1
|
||||
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
" Vim script to download a missing spell file
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2012 Jan 08
|
||||
" Last Change: 2020 Jul 10
|
||||
|
||||
if !exists('g:spellfile_URL')
|
||||
" Prefer using http:// when netrw should be able to use it, since
|
||||
" more firewalls let this through.
|
||||
if executable("curl") || executable("wget") || executable("fetch")
|
||||
let g:spellfile_URL = 'http://ftp.vim.org/pub/vim/runtime/spell'
|
||||
else
|
||||
let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/runtime/spell'
|
||||
endif
|
||||
" Always use https:// because it's secure. The certificate is for nluug.nl,
|
||||
" thus we can't use the alias ftp.vim.org here.
|
||||
let g:spellfile_URL = 'https://ftp.nluug.nl/pub/vim/runtime/spell'
|
||||
endif
|
||||
let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset.
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@ DOCS = \
|
||||
usr_43.txt \
|
||||
usr_44.txt \
|
||||
usr_45.txt \
|
||||
usr_46.txt \
|
||||
usr_90.txt \
|
||||
usr_toc.txt \
|
||||
various.txt \
|
||||
@@ -282,6 +283,7 @@ HTMLS = \
|
||||
usr_43.html \
|
||||
usr_44.html \
|
||||
usr_45.html \
|
||||
usr_46.html \
|
||||
usr_90.html \
|
||||
usr_toc.html \
|
||||
various.html \
|
||||
@@ -394,7 +396,7 @@ test_urls:
|
||||
vim -S test_urls.vim
|
||||
|
||||
clean:
|
||||
-rm doctags *.html tags.ref
|
||||
-rm -f doctags *.html tags.ref
|
||||
|
||||
# These files are in the extra archive, skip if not present
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
|
||||
(without Form-B, Arabic will _NOT_ be usable). It is highly
|
||||
recommended that users search for so-called 'ISO-10646-1' fonts.
|
||||
Do an Internet search or check www.arabeyes.org for further
|
||||
info on where to attain the necessary Arabic fonts.
|
||||
info on where to obtain the necessary Arabic fonts.
|
||||
|
||||
|
||||
Font Installation
|
||||
@@ -123,7 +123,7 @@ o Setting the appropriate character Encoding
|
||||
>
|
||||
:set encoding=utf-8
|
||||
<
|
||||
to your .vimrc file (entering the command manually into you Vim
|
||||
to your .vimrc file (entering the command manually into your Vim
|
||||
window is highly discouraged). In short, include ':set
|
||||
encoding=utf-8' to your .vimrc file.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jan 26
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jun 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -380,6 +380,7 @@ Name triggered by ~
|
||||
info
|
||||
|
||||
|User| to be used in combination with ":doautocmd"
|
||||
|SigUSR1| after the SIGUSR1 signal has been detected
|
||||
|
||||
|
||||
The alphabetical list of autocommand events: *autocmd-events-abc*
|
||||
@@ -1153,11 +1154,14 @@ TextYankPost After text has been yanked or deleted in the
|
||||
register.
|
||||
regtype Type of the register, see
|
||||
|getregtype()|.
|
||||
visual True if the operation is
|
||||
performed on a |Visual| area.
|
||||
Not triggered when |quote_| is used nor when
|
||||
called recursively.
|
||||
It is not allowed to change the buffer text,
|
||||
see |textlock|.
|
||||
{only when compiled with the +eval feature}
|
||||
|
||||
*User*
|
||||
User Never executed automatically. To be used for
|
||||
autocommands that are only executed with
|
||||
@@ -1166,6 +1170,15 @@ User Never executed automatically. To be used for
|
||||
used while there are no matching autocommands,
|
||||
you will get an error. If you don't want
|
||||
that, define a dummy autocommand yourself.
|
||||
|
||||
*SigUSR1*
|
||||
SigUSR1 After the SIGUSR1 signal has been detected.
|
||||
Could be used if other ways of notifying Vim
|
||||
are not feasible. E.g. to check for the
|
||||
result of a build that takes a long time, or
|
||||
when a motion sensor is triggered.
|
||||
{only on Unix}
|
||||
|
||||
*UserGettingBored*
|
||||
UserGettingBored When the user presses the same key 42 times.
|
||||
Just kidding! :-)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 8.2. Last change: 2020 Apr 26
|
||||
*change.txt* For Vim version 8.2. Last change: 2020 Jun 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1755,7 +1755,7 @@ Some examples:
|
||||
Automatic formatting *auto-format* *autoformat*
|
||||
|
||||
When the 'a' flag is present in 'formatoptions' text is formatted
|
||||
automatically when inserting text or deleting text. This works nice for
|
||||
automatically when inserting text or deleting text. This works nicely for
|
||||
editing text paragraphs. A few hints on how to use this:
|
||||
|
||||
- You need to properly define paragraphs. The simplest is paragraphs that are
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*channel.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*channel.txt* For Vim version 8.2. Last change: 2020 Jul 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1235,8 +1235,8 @@ If you want to type input for the job in a Vim window you have a few options:
|
||||
- Use a terminal window. This works well if what you type goes directly to
|
||||
the job and the job output is directly displayed in the window.
|
||||
See |terminal-window|.
|
||||
- Use a prompt window. This works well when entering a line for the job in Vim
|
||||
while displaying (possibly filtered) output from the job.
|
||||
- Use a window with a prompt buffer. This works well when entering a line for
|
||||
the job in Vim while displaying (possibly filtered) output from the job.
|
||||
|
||||
A prompt buffer is created by setting 'buftype' to "prompt". You would
|
||||
normally only do that in a newly created buffer.
|
||||
@@ -1259,7 +1259,7 @@ can start typing a line.
|
||||
The text of the prompt can be set with the |prompt_setprompt()| function.
|
||||
|
||||
The user can go to Normal mode and navigate through the buffer. This can be
|
||||
useful see older output or copy text.
|
||||
useful to see older output or copy text.
|
||||
|
||||
The CTRL-W key can be used to start a window command, such as CTRL-W w to
|
||||
switch to the next window. This also works in Insert mode (use Shift-CTRL-W
|
||||
@@ -1270,5 +1270,46 @@ Any command that starts Insert mode, such as "a", "i", "A" and "I", will move
|
||||
the cursor to the last line. "A" will move to the end of the line, "I" to the
|
||||
start of the line.
|
||||
|
||||
Here is an example for Unix. It starts a shell in the background and prompts
|
||||
for the next shell command. Output from the shell is displayed above the
|
||||
prompt. >
|
||||
|
||||
" Create a channel log so we can see what happens.
|
||||
call ch_logfile('logfile', 'w')
|
||||
|
||||
" Function handling a line of text has been typed.
|
||||
func TextEntered(text)
|
||||
" Send the text to a shell with Enter appended.
|
||||
call ch_sendraw(g:shell_job, a:text .. "\n")
|
||||
endfunc
|
||||
|
||||
" Function handling output from the shell: Added above the prompt.
|
||||
func GotOutput(channel, msg)
|
||||
call append(line("$") - 1, "- " . a:msg)
|
||||
endfunc
|
||||
|
||||
" Function handling the shell exist: close the window.
|
||||
func JobExit(job, status)
|
||||
quit!
|
||||
endfunc
|
||||
|
||||
" Start a shell in the background.
|
||||
let shell_job = job_start(["/bin/sh"], #{
|
||||
\ out_cb: function('GotOutput'),
|
||||
\ err_cb: function('GotOutput'),
|
||||
\ exit_cb: function('JobExit'),
|
||||
\ })
|
||||
let shell_ch = job_getchannel(shell_job)
|
||||
|
||||
new
|
||||
set buftype=prompt
|
||||
let buf = bufnr('')
|
||||
call prompt_setcallback(buf, function("TextEntered"))
|
||||
eval prompt_setprompt(buf, "shell command: ")
|
||||
|
||||
" start accepting shell commands
|
||||
startinsert
|
||||
<
|
||||
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 8.2. Last change: 2020 Apr 23
|
||||
*cmdline.txt* For Vim version 8.2. Last change: 2020 Jul 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -876,7 +876,7 @@ Also see |`=|.
|
||||
*:<cword>* *<cword>* *:<cWORD>* *<cWORD>*
|
||||
*:<cexpr>* *<cexpr>* *:<cfile>* *<cfile>*
|
||||
*:<afile>* *<afile>* *:<abuf>* *<abuf>*
|
||||
*:<amatch>* *<amatch>*
|
||||
*:<amatch>* *<amatch>* *:<stack>* *<stack>*
|
||||
*:<sfile>* *<sfile>* *:<slnum>* *<slnum>*
|
||||
*:<sflnum>* *<sflnum>* *E499* *E500*
|
||||
Note: these are typed literally, they are not special keys!
|
||||
@@ -903,12 +903,16 @@ Note: these are typed literally, they are not special keys!
|
||||
events).
|
||||
<sfile> When executing a ":source" command, is replaced with the
|
||||
file name of the sourced file. *E498*
|
||||
When executing a function, is replaced with:
|
||||
"function {function-name}[{lnum}]"
|
||||
function call nesting is indicated like this:
|
||||
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
|
||||
When executing a function, is replaced with the call stack,
|
||||
as with <stack> (this is for backwards compatibility, using
|
||||
<stack> is preferred).
|
||||
Note that filename-modifiers are useless when <sfile> is
|
||||
used inside a function.
|
||||
not used inside a script.
|
||||
<stack> is replaced with the call stack, using
|
||||
"function {function-name}[{lnum}]" for a function line
|
||||
and "script {file-name}[{lnum}]" for a script line, and
|
||||
".." in between items. E.g.:
|
||||
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
|
||||
<slnum> When executing a ":source" command, is replaced with the
|
||||
line number. *E842*
|
||||
When executing a function it's the line number relative to
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*digraph.txt* For Vim version 8.2. Last change: 2019 May 05
|
||||
*digraph.txt* For Vim version 8.2. Last change: 2020 Jul 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -33,6 +33,8 @@ An alternative is using the 'keymap' option.
|
||||
it is the Unicode character, see |digraph-encoding|.
|
||||
Example: >
|
||||
:digr e: 235 a: 228
|
||||
< You can use `:exe` to enter a hex number: >
|
||||
:exe 'digr += ' .. 0x2A72
|
||||
< Avoid defining a digraph with '_' (underscore) as the
|
||||
first character, it has a special meaning in the
|
||||
future.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 8.2. Last change: 2020 May 12
|
||||
*editing.txt* For Vim version 8.2. Last change: 2020 Jul 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1402,7 +1402,7 @@ to 0, 'modeline' off, 'expandtab' off). Setting the 'binary' option has the
|
||||
same effect. Don't forget to do this before reading the file.
|
||||
|
||||
There are a few things to remember when editing binary files:
|
||||
- When editing executable files the number of characters must not change.
|
||||
- When editing executable files the number of bytes must not change.
|
||||
Use only the "R" or "r" command to change text. Do not delete characters
|
||||
with "x" or by backspacing.
|
||||
- Set the 'textwidth' option to 0. Otherwise lines will unexpectedly be
|
||||
@@ -1410,7 +1410,7 @@ There are a few things to remember when editing binary files:
|
||||
- When there are not many <EOL>s, the lines will become very long. If you
|
||||
want to edit a line that does not fit on the screen reset the 'wrap' option.
|
||||
Horizontal scrolling is used then. If a line becomes too long (more than
|
||||
about 32767 characters on the Amiga, much more on 32-bit systems, see
|
||||
about 32767 bytes on the Amiga, much more on 32-bit and 64-bit systems, see
|
||||
|limits|) you cannot edit that line. The line will be split when reading
|
||||
the file. It is also possible that you get an "out of memory" error when
|
||||
reading the file.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Jun 03
|
||||
*eval.txt* For Vim version 8.2. Last change: 2020 Jul 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -94,8 +94,9 @@ the Number. Examples:
|
||||
Number 0 --> String "0" ~
|
||||
Number -1 --> String "-1" ~
|
||||
*octal*
|
||||
Conversion from a String to a Number is done by converting the first digits to
|
||||
a number. Hexadecimal "0xf9", Octal "017" or "0o17", and Binary "0b10"
|
||||
Conversion from a String to a Number only happens in legacy Vim script, not in
|
||||
Vim9 script. It is done by converting the first digits to a number.
|
||||
Hexadecimal "0xf9", Octal "017" or "0o17", and Binary "0b10"
|
||||
numbers are recognized (NOTE: when using |scriptversion-4| octal with a
|
||||
leading "0" is not recognized). If the String doesn't start with digits, the
|
||||
result is zero.
|
||||
@@ -157,7 +158,7 @@ You will not get an error if you try to change the type of a variable.
|
||||
|
||||
|
||||
1.2 Function references ~
|
||||
*Funcref* *E695* *E718*
|
||||
*Funcref* *E695* *E718*
|
||||
A Funcref variable is obtained with the |function()| function, the |funcref()|
|
||||
function or created with the lambda expression |expr-lambda|. It can be used
|
||||
in an expression in the place of a function name, before the parenthesis
|
||||
@@ -1533,6 +1534,7 @@ An internal variable is explicitly destroyed with the ":unlet" command
|
||||
Using a name that is not an internal variable or refers to a variable that has
|
||||
been destroyed results in an error.
|
||||
|
||||
*variable-scope*
|
||||
There are several name spaces for variables. Which one is to be used is
|
||||
specified by what is prepended:
|
||||
|
||||
@@ -1551,7 +1553,9 @@ delete all script-local variables: >
|
||||
:for k in keys(s:)
|
||||
: unlet s:[k]
|
||||
:endfor
|
||||
<
|
||||
|
||||
Note: in Vim9 script this is different, see |vim9-scopes|.
|
||||
|
||||
*buffer-variable* *b:var* *b:*
|
||||
A variable name that is preceded with "b:" is local to the current buffer.
|
||||
Thus you can have several "b:foo" variables, one for each buffer.
|
||||
@@ -1742,6 +1746,14 @@ v:cmdbang Set like v:cmdarg for a file read/write command. When a "!"
|
||||
was used the value is 1, otherwise it is 0. Note that this
|
||||
can only be used in autocommands. For user commands |<bang>|
|
||||
can be used.
|
||||
*v:collate* *collate-variable*
|
||||
v:collate The current locale setting for collation order of the runtime
|
||||
environment. This allows Vim scripts to be aware of the
|
||||
current locale encoding. Technical: it's the value of
|
||||
LC_COLLATE. When not using a locale the value is "C".
|
||||
This variable can not be set directly, use the |:language|
|
||||
command.
|
||||
See |multi-lang|.
|
||||
|
||||
*v:completed_item* *completed_item-variable*
|
||||
v:completed_item
|
||||
@@ -1982,6 +1994,8 @@ v:mouse_col Column number for a mouse click obtained with |getchar()|.
|
||||
*v:none* *none-variable* *None*
|
||||
v:none An empty String. Used to put an empty item in JSON. See
|
||||
|json_encode()|.
|
||||
This can also be used as a function argument to use the
|
||||
default value, see |none-function_argument|.
|
||||
When used as a number this evaluates to zero.
|
||||
When used as a string this evaluates to "v:none". >
|
||||
echo v:none
|
||||
@@ -2194,7 +2208,8 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV|
|
||||
'c', with only digits and ';' in between.
|
||||
When this option is set, the TermResponse autocommand event is
|
||||
fired, so that you can react to the response from the
|
||||
terminal.
|
||||
terminal. You can use |terminalprops()| to see what Vim
|
||||
figured out about the terminal.
|
||||
The response from a new xterm is: "<Esc>[> Pp ; Pv ; Pc c". Pp
|
||||
is the terminal type: 0 for vt100 and 1 for vt220. Pv is the
|
||||
patch level (since this was introduced in patch 95, it's
|
||||
@@ -2451,6 +2466,7 @@ finddir({name} [, {path} [, {count}]])
|
||||
String find directory {name} in {path}
|
||||
findfile({name} [, {path} [, {count}]])
|
||||
String find file {name} in {path}
|
||||
flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels
|
||||
float2nr({expr}) Number convert Float {expr} to a Number
|
||||
floor({expr}) Float round {expr} down
|
||||
fmod({expr1}, {expr2}) Float remainder of {expr1} / {expr2}
|
||||
@@ -2498,16 +2514,19 @@ getjumplist([{winnr} [, {tabnr}]])
|
||||
List list of jump list items
|
||||
getline({lnum}) String line {lnum} of current buffer
|
||||
getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
|
||||
getloclist({nr} [, {what}]) List list of location list items
|
||||
getloclist({nr}) List list of location list items
|
||||
getloclist({nr}, {what}) Dict get specific location list properties
|
||||
getmarklist([{expr}]) List list of global/local marks
|
||||
getmatches([{win}]) List list of current matches
|
||||
getmousepos() Dict last known mouse position
|
||||
getpid() Number process ID of Vim
|
||||
getpos({expr}) List position of cursor, mark, etc.
|
||||
getqflist([{what}]) List list of quickfix items
|
||||
getqflist() List list of quickfix items
|
||||
getqflist({what}) Dict get specific quickfix list properties
|
||||
getreg([{regname} [, 1 [, {list}]]])
|
||||
String or List contents of register
|
||||
getregtype([{regname}]) String type of register
|
||||
String or List contents of a register
|
||||
getreginfo([{regname}]) Dict information about a register
|
||||
getregtype([{regname}]) String type of a register
|
||||
gettabinfo([{expr}]) List list of tab pages
|
||||
gettabvar({nr}, {varname} [, {def}])
|
||||
any variable {varname} in tab {nr} or {def}
|
||||
@@ -2677,8 +2696,10 @@ pyxeval({expr}) any evaluate |python_x| expression
|
||||
rand([{expr}]) Number get pseudo-random number
|
||||
range({expr} [, {max} [, {stride}]])
|
||||
List items from {expr} to {max}
|
||||
readdir({dir} [, {expr}]) List file names in {dir} selected by {expr}
|
||||
readdirex({dir} [, {expr}]) List file info in {dir} selected by {expr}
|
||||
readdir({dir} [, {expr} [, {dict}]])
|
||||
List file names in {dir} selected by {expr}
|
||||
readdirex({dir} [, {expr} [, {dict}]])
|
||||
List file info in {dir} selected by {expr}
|
||||
readfile({fname} [, {type} [, {max}]])
|
||||
List get list of lines from file {fname}
|
||||
reduce({object}, {func} [, {initial}])
|
||||
@@ -2716,7 +2737,7 @@ screencol() Number current cursor column
|
||||
screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character
|
||||
screenrow() Number current cursor row
|
||||
screenstring({row}, {col}) String characters at screen position
|
||||
search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
|
||||
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
|
||||
Number search for {pattern}
|
||||
searchcount([{options}]) Dict get or update search stats
|
||||
searchdecl({name} [, {global} [, {thisblock}]])
|
||||
@@ -2725,7 +2746,7 @@ searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
|
||||
Number search for other end of start/end pair
|
||||
searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
|
||||
List search for other end of start/end pair
|
||||
searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
|
||||
searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
|
||||
List search for {pattern}
|
||||
server2client({clientid}, {string})
|
||||
Number send reply string
|
||||
@@ -2740,12 +2761,15 @@ setcmdpos({pos}) Number set cursor position in command-line
|
||||
setenv({name}, {val}) none set environment variable
|
||||
setfperm({fname}, {mode}) Number set {fname} file permissions to {mode}
|
||||
setline({lnum}, {line}) Number set line {lnum} to {line}
|
||||
setloclist({nr}, {list} [, {action} [, {what}]])
|
||||
Number modify location list using {list}
|
||||
setloclist({nr}, {list} [, {action}])
|
||||
Number modify location list using {list}
|
||||
setloclist({nr}, {list}, {action}, {what})
|
||||
Number modify specific location list props
|
||||
setmatches({list} [, {win}]) Number restore a list of matches
|
||||
setpos({expr}, {list}) Number set the {expr} position to {list}
|
||||
setqflist({list} [, {action} [, {what}]])
|
||||
Number modify quickfix list using {list}
|
||||
setqflist({list} [, {action}]) Number modify quickfix list using {list}
|
||||
setqflist({list}, {action}, {what})
|
||||
Number modify specific quickfix list props
|
||||
setreg({n}, {v} [, {opt}]) Number set register to value and type
|
||||
settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val}
|
||||
settabwinvar({tabnr}, {winnr}, {varname}, {val})
|
||||
@@ -2810,7 +2834,7 @@ stridx({haystack}, {needle} [, {start}])
|
||||
string({expr}) String String representation of {expr} value
|
||||
strlen({expr}) Number length of the String {expr}
|
||||
strpart({str}, {start} [, {len}])
|
||||
String {len} characters of {str} at {start}
|
||||
String {len} bytes of {str} at byte {start}
|
||||
strptime({format}, {timestring})
|
||||
Number Convert {timestring} to unix timestamp
|
||||
strridx({haystack}, {needle} [, {start}])
|
||||
@@ -2868,6 +2892,7 @@ term_setsize({buf}, {rows}, {cols})
|
||||
none set the size of a terminal
|
||||
term_start({cmd} [, {options}]) Number open a terminal window and run a job
|
||||
term_wait({buf} [, {time}]) Number wait for screen to be updated
|
||||
terminalprops() Dict properties of the terminal
|
||||
test_alloc_fail({id}, {countdown}, {repeat})
|
||||
none make memory allocation fail
|
||||
test_autochdir() none enable 'autochdir' during startup
|
||||
@@ -3014,7 +3039,8 @@ append({lnum}, {text}) *append()*
|
||||
:let failed = append(line('$'), "# THE END")
|
||||
:let failed = append(0, ["Chapter 1", "the beginning"])
|
||||
|
||||
< Can also be used as a |method| after a List: >
|
||||
< Can also be used as a |method| after a List, the base is
|
||||
passed as the second argument: >
|
||||
mylist->append(lnum)
|
||||
|
||||
|
||||
@@ -3036,7 +3062,8 @@ appendbufline({expr}, {lnum}, {text}) *appendbufline()*
|
||||
error message is given. Example: >
|
||||
:let failed = appendbufline(13, 0, "# THE START")
|
||||
<
|
||||
Can also be used as a |method| after a List: >
|
||||
< Can also be used as a |method| after a List, the base is
|
||||
passed as the second argument: >
|
||||
mylist->appendbufline(buf, lnum)
|
||||
|
||||
|
||||
@@ -3618,7 +3645,7 @@ complete_check() *complete_check()*
|
||||
|
||||
*complete_info()*
|
||||
complete_info([{what}])
|
||||
Returns a Dictionary with information about Insert mode
|
||||
Returns a |Dictionary| with information about Insert mode
|
||||
completion. See |ins-completion|.
|
||||
The items are:
|
||||
mode Current completion mode name string.
|
||||
@@ -3650,7 +3677,7 @@ complete_info([{what}])
|
||||
"function" User defined completion |i_CTRL-X_CTRL-U|
|
||||
"omni" Omni completion |i_CTRL-X_CTRL-O|
|
||||
"spell" Spelling suggestions |i_CTRL-X_s|
|
||||
"eval" |complete()| completion
|
||||
"eval" |complete()| completion
|
||||
"unknown" Other internal modes
|
||||
|
||||
If the optional {what} list argument is supplied, then only
|
||||
@@ -3880,6 +3907,7 @@ deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
|
||||
changing an item in the copy does not change the contents of
|
||||
the original |List|.
|
||||
A |Dictionary| is copied in a similar way as a |List|.
|
||||
|
||||
When {noref} is omitted or zero a contained |List| or
|
||||
|Dictionary| is only copied once. All references point to
|
||||
this single copy. With {noref} set to 1 every occurrence of a
|
||||
@@ -4513,6 +4541,25 @@ findfile({name} [, {path} [, {count}]]) *findfile()*
|
||||
Can also be used as a |method|: >
|
||||
GetName()->findfile()
|
||||
|
||||
flatten({list} [, {maxdepth}]) *flatten()*
|
||||
Flatten {list} up to {maxdepth} levels. Without {maxdepth}
|
||||
the result is a |List| without nesting, as if {maxdepth} is
|
||||
a very large number.
|
||||
The {list} is changed in place, make a copy first if you do
|
||||
not want that.
|
||||
*E900*
|
||||
{maxdepth} means how deep in nested lists changes are made.
|
||||
{list} is not modified when {maxdepth} is 0.
|
||||
{maxdepth} must be positive number.
|
||||
|
||||
If there is an error the number zero is returned.
|
||||
|
||||
Example: >
|
||||
:echo flatten([1, [2, [3, 4]], 5])
|
||||
< [1, 2, 3, 4, 5] >
|
||||
:echo flatten([1, [2, [3, 4]], 5], 1)
|
||||
< [1, 2, [3, 4], 5]
|
||||
|
||||
float2nr({expr}) *float2nr()*
|
||||
Convert {expr} to a Number by omitting the part after the
|
||||
decimal point.
|
||||
@@ -4797,12 +4844,14 @@ get({list}, {idx} [, {default}]) *get()*
|
||||
Get item {idx} from |List| {list}. When this item is not
|
||||
available return {default}. Return zero when {default} is
|
||||
omitted.
|
||||
Can also be used as a |method|: >
|
||||
Preferably used as a |method|: >
|
||||
mylist->get(idx)
|
||||
get({blob}, {idx} [, {default}])
|
||||
Get byte {idx} from |Blob| {blob}. When this byte is not
|
||||
available return {default}. Return -1 when {default} is
|
||||
omitted.
|
||||
Preferably used as a |method|: >
|
||||
myblob->get(idx)
|
||||
get({dict}, {key} [, {default}])
|
||||
Get item with key {key} from |Dictionary| {dict}. When this
|
||||
item is not available return {default}. Return zero when
|
||||
@@ -4810,6 +4859,8 @@ get({dict}, {key} [, {default}])
|
||||
let val = get(g:, 'var_name', 'default')
|
||||
< This gets the value of g:var_name if it exists, and uses
|
||||
'default' when it does not exist.
|
||||
Preferably used as a |method|: >
|
||||
mydict->get(key)
|
||||
get({func}, {what})
|
||||
Get an item with from Funcref {func}. Possible values for
|
||||
{what} are:
|
||||
@@ -4817,7 +4868,9 @@ get({func}, {what})
|
||||
"func" The function
|
||||
"dict" The dictionary
|
||||
"args" The list with arguments
|
||||
|
||||
Preferably used as a |method|: >
|
||||
myfunc->get(what)
|
||||
<
|
||||
*getbufinfo()*
|
||||
getbufinfo([{expr}])
|
||||
getbufinfo([{dict}])
|
||||
@@ -4826,7 +4879,7 @@ getbufinfo([{dict}])
|
||||
Without an argument information about all the buffers is
|
||||
returned.
|
||||
|
||||
When the argument is a Dictionary only the buffers matching
|
||||
When the argument is a |Dictionary| only the buffers matching
|
||||
the specified criteria are returned. The following keys can
|
||||
be specified in {dict}:
|
||||
buflisted include only listed buffers.
|
||||
@@ -4879,8 +4932,11 @@ getbufinfo([{dict}])
|
||||
<
|
||||
To get buffer-local options use: >
|
||||
getbufvar({bufnr}, '&option_name')
|
||||
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->getbufinfo()
|
||||
<
|
||||
|
||||
*getbufline()*
|
||||
getbufline({expr}, {lnum} [, {end}])
|
||||
Return a |List| with the lines starting from {lnum} to {end}
|
||||
@@ -4982,8 +5038,9 @@ getchar([expr]) *getchar()*
|
||||
When the user clicks a mouse button, the mouse event will be
|
||||
returned. The position can then be found in |v:mouse_col|,
|
||||
|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
|
||||
|getmousepos()| can also be used. This example positions the
|
||||
mouse as it would normally happen: >
|
||||
|getmousepos()| can also be used. Mouse move events will be
|
||||
ignored.
|
||||
This example positions the mouse as it would normally happen: >
|
||||
let c = getchar()
|
||||
if c == "\<LeftMouse>" && v:mouse_win > 0
|
||||
exe v:mouse_win . "wincmd w"
|
||||
@@ -5111,6 +5168,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
||||
behave :behave suboptions
|
||||
color color schemes
|
||||
command Ex command (and arguments)
|
||||
cmdline |cmdline-completion| result
|
||||
compiler compilers
|
||||
cscope |:cscope| suboptions
|
||||
diff_buffer |:diffget| and |:diffput| completion
|
||||
@@ -5126,7 +5184,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
||||
highlight highlight groups
|
||||
history :history suboptions
|
||||
locale locale names (as output of locale -a)
|
||||
mapclear buffer argument
|
||||
mapclear buffer argument
|
||||
mapping mapping name
|
||||
menu menus
|
||||
messages |:messages| suboptions
|
||||
@@ -5141,14 +5199,19 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
||||
user user names
|
||||
var user variables
|
||||
|
||||
If {pat} is an empty string, then all the matches are returned.
|
||||
Otherwise only items matching {pat} are returned. See
|
||||
|wildcards| for the use of special characters in {pat}.
|
||||
If {pat} is an empty string, then all the matches are
|
||||
returned. Otherwise only items matching {pat} are returned.
|
||||
See |wildcards| for the use of special characters in {pat}.
|
||||
|
||||
If the optional {filtered} flag is set to 1, then 'wildignore'
|
||||
is applied to filter the results. Otherwise all the matches
|
||||
are returned. The 'wildignorecase' option always applies.
|
||||
|
||||
If {type} is "cmdline", then the |cmdline-completion| result is
|
||||
returned. For example, to complete the possible values after
|
||||
a ":call" command: >
|
||||
echo getcompletion('call ', 'cmdline')
|
||||
<
|
||||
If there are no matches, an empty list is returned. An
|
||||
invalid value for {type} produces an error.
|
||||
|
||||
@@ -5351,7 +5414,7 @@ getline({lnum} [, {end}])
|
||||
< To get lines from another buffer see |getbufline()|
|
||||
|
||||
getloclist({nr} [, {what}]) *getloclist()*
|
||||
Returns a list with all the entries in the location list for
|
||||
Returns a |List| with all the entries in the location list for
|
||||
window {nr}. {nr} can be the window number or the |window-ID|.
|
||||
When {nr} is zero the current window is used.
|
||||
|
||||
@@ -5373,6 +5436,14 @@ getloclist({nr} [, {what}]) *getloclist()*
|
||||
|location-list-file-window| for more
|
||||
details.
|
||||
|
||||
Returns an empty Dictionary if there is no location list for
|
||||
the window {nr} or the window is not present.
|
||||
|
||||
Examples (See also |getqflist-examples|): >
|
||||
:echo getloclist(3, {'all': 0})
|
||||
:echo getloclist(5, {'filewinid': 0})
|
||||
|
||||
|
||||
getmarklist([{expr}] *getmarklist()*
|
||||
Without the {expr} argument returns a |List| with information
|
||||
about all the global marks. |mark|
|
||||
@@ -5417,7 +5488,7 @@ getmatches([{win}]) *getmatches()*
|
||||
:unlet m
|
||||
<
|
||||
getmousepos() *getmousepos()*
|
||||
Returns a Dictionary with the last known position of the
|
||||
Returns a |Dictionary| with the last known position of the
|
||||
mouse. This can be used in a mapping for a mouse click or in
|
||||
a filter of a popup window. The items are:
|
||||
screenrow screen row
|
||||
@@ -5596,6 +5667,31 @@ getreg([{regname} [, 1 [, {list}]]]) *getreg()*
|
||||
Can also be used as a |method|: >
|
||||
GetRegname()->getreg()
|
||||
|
||||
getreginfo([{regname}]) *getreginfo()*
|
||||
Returns detailed information about register {regname} as a
|
||||
Dictionary with the following entries:
|
||||
regcontents List of lines contained in register
|
||||
{regname}, like
|
||||
|getreg|({regname}, 1, 1).
|
||||
regtype the type of register {regname}, as in
|
||||
|getregtype()|.
|
||||
isunnamed Boolean flag, v:true if this register
|
||||
is currently pointed to by the unnamed
|
||||
register.
|
||||
points_to for the unnamed register, gives the
|
||||
single letter name of the register
|
||||
currently pointed to (see |quotequote|).
|
||||
For example, after deleting a line
|
||||
with `dd`, this field will be "1",
|
||||
which is the register that got the
|
||||
deleted text.
|
||||
|
||||
If {regname} is invalid or not set, an empty Dictionary
|
||||
will be returned.
|
||||
If {regname} is not specified, |v:register| is used.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetRegname()->getreginfo()
|
||||
|
||||
getregtype([{regname}]) *getregtype()*
|
||||
The result is a String, which is type of register {regname}.
|
||||
@@ -5612,12 +5708,12 @@ getregtype([{regname}]) *getregtype()*
|
||||
|
||||
gettabinfo([{arg}]) *gettabinfo()*
|
||||
If {arg} is not specified, then information about all the tab
|
||||
pages is returned as a List. Each List item is a Dictionary.
|
||||
pages is returned as a |List|. Each List item is a |Dictionary|.
|
||||
Otherwise, {arg} specifies the tab page number and information
|
||||
about that one is returned. If the tab page does not exist an
|
||||
empty List is returned.
|
||||
|
||||
Each List item is a Dictionary with the following entries:
|
||||
Each List item is a |Dictionary| with the following entries:
|
||||
tabnr tab page number.
|
||||
variables a reference to the dictionary with
|
||||
tabpage-local variables
|
||||
@@ -5645,7 +5741,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
|
||||
When {varname} is empty a dictionary with all window-local
|
||||
variables is returned.
|
||||
When {varname} is equal to "&" get the values of all
|
||||
window-local options in a Dictionary.
|
||||
window-local options in a |Dictionary|.
|
||||
Otherwise, when {varname} starts with "&" get the value of a
|
||||
window-local option.
|
||||
Note that {varname} must be the name without "w:".
|
||||
@@ -5700,16 +5796,16 @@ gettagstack([{nr}]) *gettagstack()*
|
||||
GetWinnr()->gettagstack()
|
||||
|
||||
getwininfo([{winid}]) *getwininfo()*
|
||||
Returns information about windows as a List with Dictionaries.
|
||||
Returns information about windows as a |List| with Dictionaries.
|
||||
|
||||
If {winid} is given Information about the window with that ID
|
||||
is returned. If the window does not exist the result is an
|
||||
empty list.
|
||||
is returned, as a |List| with one item. If the window does not
|
||||
exist the result is an empty list.
|
||||
|
||||
Without {winid} information about all the windows in all the
|
||||
tab pages is returned.
|
||||
|
||||
Each List item is a Dictionary with the following entries:
|
||||
Each List item is a |Dictionary| with the following entries:
|
||||
botline last displayed buffer line
|
||||
bufnr number of buffer in the window
|
||||
height window height (excluding winbar)
|
||||
@@ -5737,7 +5833,7 @@ getwininfo([{winid}]) *getwininfo()*
|
||||
GetWinnr()->getwininfo()
|
||||
|
||||
getwinpos([{timeout}]) *getwinpos()*
|
||||
The result is a List with two numbers, the result of
|
||||
The result is a |List| with two numbers, the result of
|
||||
|getwinposx()| and |getwinposy()| combined:
|
||||
[x-pos, y-pos]
|
||||
{timeout} can be used to specify how long to wait in msec for
|
||||
@@ -5792,7 +5888,7 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
|
||||
'suffixes' affect the ordering of matches.
|
||||
'wildignorecase' always applies.
|
||||
|
||||
When {list} is present and it is |TRUE| the result is a List
|
||||
When {list} is present and it is |TRUE| the result is a |List|
|
||||
with all matching files. The advantage of using a List is,
|
||||
you also get filenames containing newlines correctly.
|
||||
Otherwise the result is a String and when there are several
|
||||
@@ -5855,7 +5951,7 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
|
||||
one of the patterns in 'wildignore' will be skipped and
|
||||
'suffixes' affect the ordering of matches.
|
||||
|
||||
When {list} is present and it is |TRUE| the result is a List
|
||||
When {list} is present and it is |TRUE| the result is a |List|
|
||||
with all matching files. The advantage of using a List is, you
|
||||
also get filenames containing newlines correctly. Otherwise
|
||||
the result is a String and when there are several matches,
|
||||
@@ -6224,10 +6320,11 @@ inputlist({textlist}) *inputlist()*
|
||||
displayed, one string per line. The user will be prompted to
|
||||
enter a number, which is returned.
|
||||
The user can also select an item by clicking on it with the
|
||||
mouse. For the first string 0 is returned. When clicking
|
||||
above the first item a negative number is returned. When
|
||||
clicking on the prompt one more than the length of {textlist}
|
||||
is returned.
|
||||
mouse, if the mouse is enabled in the command line ('mouse' is
|
||||
"a" or includes "c"). For the first string 0 is returned.
|
||||
When clicking above the first item a negative number is
|
||||
returned. When clicking on the prompt one more than the
|
||||
length of {textlist} is returned.
|
||||
Make sure {textlist} has less than 'lines' entries, otherwise
|
||||
it won't work. It's a good idea to put the entry number at
|
||||
the start of the string. And put a prompt in the first item.
|
||||
@@ -7213,7 +7310,7 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
|
||||
|
||||
*max()*
|
||||
max({expr}) Return the maximum value of all items in {expr}.
|
||||
{expr} can be a List or a Dictionary. For a Dictionary,
|
||||
{expr} can be a |List| or a |Dictionary|. For a Dictionary,
|
||||
it returns the maximum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
@@ -7284,7 +7381,7 @@ menu_info({name} [, {mode}]) *menu_info()*
|
||||
|
||||
< *min()*
|
||||
min({expr}) Return the minimum value of all items in {expr}.
|
||||
{expr} can be a List or a Dictionary. For a Dictionary,
|
||||
{expr} can be a |List| or a |Dictionary|. For a Dictionary,
|
||||
it returns the minimum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
@@ -7846,11 +7943,12 @@ rand([{expr}]) *rand()* *random*
|
||||
:echo rand(seed)
|
||||
:echo rand(seed) % 16 " random number 0 - 15
|
||||
<
|
||||
readdir({directory} [, {expr}]) *readdir()*
|
||||
readdir({directory} [, {expr} [, {dict}]]) *readdir()*
|
||||
Return a list with file and directory names in {directory}.
|
||||
You can also use |glob()| if you don't need to do complicated
|
||||
things, such as limiting the number of matches.
|
||||
The list will be sorted (case sensitive).
|
||||
The list will be sorted (case sensitive), see the {dict}
|
||||
argument below for changing the sort order.
|
||||
|
||||
When {expr} is omitted all entries are included.
|
||||
When {expr} is given, it is evaluated to check what to do:
|
||||
@@ -7868,18 +7966,38 @@ readdir({directory} [, {expr}]) *readdir()*
|
||||
< To skip hidden and backup files: >
|
||||
readdir(dirname, {n -> n !~ '^\.\|\~$'})
|
||||
|
||||
< The optional {dict} argument allows for further custom
|
||||
values. Currently this is used to specify if and how sorting
|
||||
should be performed. The dict can have the following members:
|
||||
|
||||
sort How to sort the result returned from the system.
|
||||
Valid values are:
|
||||
"none" do not sort (fastest method)
|
||||
"case" sort case sensitive (byte value of
|
||||
each character, technically, using
|
||||
strcmp()) (default)
|
||||
"icase" sort case insensitive (technically
|
||||
using strcasecmp())
|
||||
"collate" sort using the collation order
|
||||
of the "POSIX" or "C" |locale|
|
||||
(technically using strcoll())
|
||||
Other values are silently ignored.
|
||||
|
||||
For example, to get a list of all files in the current
|
||||
directory without sorting the individual entries: >
|
||||
readdir('.', '1', #{sort: 'none'})
|
||||
< If you want to get a directory tree: >
|
||||
function! s:tree(dir)
|
||||
return {a:dir : map(readdir(a:dir),
|
||||
function! s:tree(dir)
|
||||
return {a:dir : map(readdir(a:dir),
|
||||
\ {_, x -> isdirectory(x) ?
|
||||
\ {x : s:tree(a:dir . '/' . x)} : x})}
|
||||
endfunction
|
||||
echo s:tree(".")
|
||||
\ {x : s:tree(a:dir . '/' . x)} : x})}
|
||||
endfunction
|
||||
echo s:tree(".")
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetDirName()->readdir()
|
||||
<
|
||||
readdirex({directory} [, {expr}]) *readdirex()*
|
||||
readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
|
||||
Extended version of |readdir()|.
|
||||
Return a list of Dictionaries with file and directory
|
||||
information in {directory}.
|
||||
@@ -7888,7 +8006,9 @@ readdirex({directory} [, {expr}]) *readdirex()*
|
||||
This is much faster than calling |readdir()| then calling
|
||||
|getfperm()|, |getfsize()|, |getftime()| and |getftype()| for
|
||||
each file and directory especially on MS-Windows.
|
||||
The list will be sorted by name (case sensitive).
|
||||
The list will by default be sorted by name (case sensitive),
|
||||
the sorting can be changed by using the optional {dict}
|
||||
argument, see |readdir()|.
|
||||
|
||||
The Dictionary for file and directory information has the
|
||||
following items:
|
||||
@@ -7923,11 +8043,16 @@ readdirex({directory} [, {expr}]) *readdirex()*
|
||||
If {expr} results in 1 then this entry will be added
|
||||
to the list.
|
||||
The entries "." and ".." are always excluded.
|
||||
Each time {expr} is evaluated |v:val| is set to a Dictionary
|
||||
Each time {expr} is evaluated |v:val| is set to a |Dictionary|
|
||||
of the entry.
|
||||
When {expr} is a function the entry is passed as the argument.
|
||||
For example, to get a list of files ending in ".txt": >
|
||||
readdirex(dirname, {e -> e.name =~ '.txt$'})
|
||||
<
|
||||
For example, to get a list of all files in the current
|
||||
directory without sorting the individual entries: >
|
||||
readdirex(dirname, '1', #{sort: 'none'})
|
||||
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetDirName()->readdirex()
|
||||
@@ -8167,7 +8292,7 @@ remove({list}, {idx} [, {end}]) *remove()*
|
||||
Without {end}: Remove the item at {idx} from |List| {list} and
|
||||
return the item.
|
||||
With {end}: Remove items from {idx} to {end} (inclusive) and
|
||||
return a List with these items. When {idx} points to the same
|
||||
return a |List| with these items. When {idx} points to the same
|
||||
item as {end} a list with one item is returned. When {end}
|
||||
points to an item before {idx} this is an error.
|
||||
See |list-index| for possible values of {idx} and {end}.
|
||||
@@ -8304,7 +8429,7 @@ screenchar({row}, {col}) *screenchar()*
|
||||
GetRow()->screenchar(col)
|
||||
|
||||
screenchars({row}, {col}) *screenchars()*
|
||||
The result is a List of Numbers. The first number is the same
|
||||
The result is a |List| of Numbers. The first number is the same
|
||||
as what |screenchar()| returns. Further numbers are
|
||||
composing characters on top of the base character.
|
||||
This is mainly to be used for testing.
|
||||
@@ -8364,8 +8489,9 @@ screenstring({row}, {col}) *screenstring()*
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetRow()->screenstring(col)
|
||||
|
||||
search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
|
||||
<
|
||||
*search()*
|
||||
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
|
||||
Search for regexp pattern {pattern}. The search starts at the
|
||||
cursor position (you can use |cursor()| to set it).
|
||||
|
||||
@@ -8413,6 +8539,15 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
|
||||
giving the argument.
|
||||
{only available when compiled with the |+reltime| feature}
|
||||
|
||||
If the {skip} expression is given it is evaluated with the
|
||||
cursor positioned on the start of a match. If it evaluates to
|
||||
non-zero this match is skipped. This can be used, for
|
||||
example, to skip a match in a comment or a string.
|
||||
{skip} can be a string, which is evaluated as an expression, a
|
||||
function reference or a lambda.
|
||||
When {skip} is omitted or empty, every match is accepted.
|
||||
When evaluating {skip} causes an error the search is aborted
|
||||
and -1 returned.
|
||||
*search()-sub-match*
|
||||
With the 'p' flag the returned value is one more than the
|
||||
first sub-match in \(\). One if none of them matched but the
|
||||
@@ -8459,7 +8594,7 @@ searchcount([{options}]) *searchcount()*
|
||||
without the "S" flag in 'shortmess'. This works even if
|
||||
'shortmess' does contain the "S" flag.
|
||||
|
||||
This returns a Dictionary. The dictionary is empty if the
|
||||
This returns a |Dictionary|. The dictionary is empty if the
|
||||
previous pattern was not set and "pattern" was not specified.
|
||||
|
||||
key type meaning ~
|
||||
@@ -8500,14 +8635,14 @@ searchcount([{options}]) *searchcount()*
|
||||
if result.total > result.maxcount &&
|
||||
\ result.current > result.maxcount
|
||||
return printf(' /%s [>%d/>%d]', @/,
|
||||
\ result.current, result.total)
|
||||
\ result.current, result.total)
|
||||
elseif result.total > result.maxcount
|
||||
return printf(' /%s [%d/>%d]', @/,
|
||||
\ result.current, result.total)
|
||||
\ result.current, result.total)
|
||||
endif
|
||||
endif
|
||||
return printf(' /%s [%d/%d]', @/,
|
||||
\ result.current, result.total)
|
||||
\ result.current, result.total)
|
||||
endfunction
|
||||
let &statusline .= '%{LastSearchCount()}'
|
||||
|
||||
@@ -8541,7 +8676,7 @@ searchcount([{options}]) *searchcount()*
|
||||
" search again
|
||||
call searchcount()
|
||||
<
|
||||
{options} must be a Dictionary. It can contain:
|
||||
{options} must be a |Dictionary|. It can contain:
|
||||
key type meaning ~
|
||||
recompute |Boolean| if |TRUE|, recompute the count
|
||||
like |n| or |N| was executed.
|
||||
@@ -8696,7 +8831,8 @@ searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
|
||||
<
|
||||
See |match-parens| for a bigger and more useful example.
|
||||
|
||||
searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *searchpos()*
|
||||
*searchpos()*
|
||||
searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
|
||||
Same as |search()|, but returns a |List| with the line and
|
||||
column position of the match. The first element of the |List|
|
||||
is the line number and the second element is the byte index of
|
||||
@@ -8892,6 +9028,8 @@ setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
|
||||
Otherwise, same as |setqflist()|.
|
||||
Also see |location-list|.
|
||||
|
||||
For {action} see |setqflist-action|.
|
||||
|
||||
If the optional {what} dictionary argument is supplied, then
|
||||
only the items listed in {what} are set. Refer to |setqflist()|
|
||||
for the list of supported keys in {what}.
|
||||
@@ -8970,7 +9108,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
|
||||
only the items listed in {what} are set. The first {list}
|
||||
argument is ignored. See below for the supported items in
|
||||
{what}.
|
||||
|
||||
*setqflist-what*
|
||||
When {what} is not present, the items in {list} or used. Each
|
||||
item must be a dictionary. Non-dictionary items in {list} are
|
||||
ignored. Each dictionary item can contain the following
|
||||
@@ -9007,7 +9145,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
|
||||
Note that the list is not exactly the same as what
|
||||
|getqflist()| returns.
|
||||
|
||||
{action} values: *E927*
|
||||
{action} values: *setqflist-action* *E927*
|
||||
'a' The items from {list} are added to the existing
|
||||
quickfix list. If there is no existing list, then a
|
||||
new list is created.
|
||||
@@ -9048,7 +9186,8 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
|
||||
the last quickfix list.
|
||||
quickfixtextfunc
|
||||
function to get the text to display in the
|
||||
quickfix window. Refer to
|
||||
quickfix window. The value can be the name of
|
||||
a function or a funcref or a lambda. Refer to
|
||||
|quickfix-window-function| for an explanation
|
||||
of how to write the function and an example.
|
||||
title quickfix list title text. See |quickfix-title|
|
||||
@@ -9079,10 +9218,12 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
|
||||
setreg({regname}, {value} [, {options}])
|
||||
Set the register {regname} to {value}.
|
||||
If {regname} is "" or "@", the unnamed register '"' is used.
|
||||
{value} may be any value returned by |getreg()|, including
|
||||
a |List|.
|
||||
|
||||
{value} may be any value returned by |getreg()| or
|
||||
|getreginfo()|, including a |List| or |Dict|.
|
||||
If {options} contains "a" or {regname} is upper case,
|
||||
then the value is appended.
|
||||
|
||||
{options} can also contain a register type specification:
|
||||
"c" or "v" |characterwise| mode
|
||||
"l" or "V" |linewise| mode
|
||||
@@ -9107,9 +9248,13 @@ setreg({regname}, {value} [, {options}])
|
||||
:call setreg(v:register, @*)
|
||||
:call setreg('*', @%, 'ac')
|
||||
:call setreg('a', "1\n2\n3", 'b5')
|
||||
:call setreg('"', { 'points_to': 'a'})
|
||||
|
||||
< This example shows using the functions to save and restore a
|
||||
register: >
|
||||
:let var_a = getreginfo()
|
||||
:call setreg('a', var_a)
|
||||
< or: >
|
||||
:let var_a = getreg('a', 1, 1)
|
||||
:let var_amode = getregtype('a')
|
||||
....
|
||||
@@ -9275,7 +9420,9 @@ simplify({filename}) *simplify()*
|
||||
Unix) are not resolved. If the first path component in
|
||||
{filename} designates the current directory, this will be
|
||||
valid for the result as well. A trailing path separator is
|
||||
not removed either.
|
||||
not removed either. On Unix "//path" is unchanged, but
|
||||
"///path" is simplified to "/path" (this follows the Posix
|
||||
standard).
|
||||
Example: >
|
||||
simplify("./dir/.././/file/") == "./file/"
|
||||
< Note: The combination "dir/.." is only removed if "dir" is
|
||||
@@ -9470,9 +9617,8 @@ spellbadword([{sentence}])
|
||||
echo spellbadword("the quik brown fox")
|
||||
< ['quik', 'bad'] ~
|
||||
|
||||
The spelling information for the current window is used. The
|
||||
'spell' option must be set and the value of 'spelllang' is
|
||||
used.
|
||||
The spelling information for the current window and the value
|
||||
of 'spelllang' are used.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetText()->spellbadword()
|
||||
@@ -9497,8 +9643,7 @@ spellsuggest({word} [, {max} [, {capital}]])
|
||||
although it may appear capitalized.
|
||||
|
||||
The spelling information for the current window is used. The
|
||||
'spell' option must be set and the values of 'spelllang' and
|
||||
'spellsuggest' are used.
|
||||
values of 'spelllang' and 'spellsuggest' are used.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetWord()->spellsuggest()
|
||||
@@ -9586,13 +9731,13 @@ state([{what}]) *state()*
|
||||
something is busy:
|
||||
m halfway a mapping, :normal command, feedkeys() or
|
||||
stuffed command
|
||||
o operator pending or waiting for a command argument,
|
||||
e.g. after |f|
|
||||
o operator pending, e.g. after |d|
|
||||
a Insert mode autocomplete active
|
||||
x executing an autocommand
|
||||
w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
|
||||
ch_readraw() when reading json.
|
||||
S not triggering SafeState or SafeStateAgain
|
||||
ch_readraw() when reading json
|
||||
S not triggering SafeState or SafeStateAgain, e.g. after
|
||||
|f| or a count
|
||||
c callback invoked, including timer (repeats for
|
||||
recursiveness up to "ccc")
|
||||
s screen has scrolled for messages
|
||||
@@ -9773,7 +9918,7 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number,
|
||||
List [item, item]
|
||||
Dictionary {key: value, key: value}
|
||||
|
||||
When a List or Dictionary has a recursive reference it is
|
||||
When a |List| or |Dictionary| has a recursive reference it is
|
||||
replaced by "[...]" or "{...}". Using eval() on the result
|
||||
will then fail.
|
||||
|
||||
@@ -10064,7 +10209,7 @@ synIDtrans({synID}) *synIDtrans()*
|
||||
:echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
|
||||
|
||||
synconcealed({lnum}, {col}) *synconcealed()*
|
||||
The result is a List with currently three items:
|
||||
The result is a |List| with currently three items:
|
||||
1. The first item in the list is 0 if the character at the
|
||||
position {lnum} and {col} is not part of a concealable
|
||||
region, 1 if it is.
|
||||
@@ -10109,7 +10254,7 @@ synstack({lnum}, {col}) *synstack()*
|
||||
|
||||
system({expr} [, {input}]) *system()* *E677*
|
||||
Get the output of the shell command {expr} as a string. See
|
||||
|systemlist()| to get the output as a List.
|
||||
|systemlist()| to get the output as a |List|.
|
||||
|
||||
When {input} is given and is a string this string is written
|
||||
to a file and passed as stdin to the command. The string is
|
||||
@@ -10325,6 +10470,41 @@ tempname() *tempname()* *temp-file-name*
|
||||
|
||||
term_ functions are documented here: |terminal-function-details|
|
||||
|
||||
|
||||
terminalprops() *terminalprops()*
|
||||
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.
|
||||
cursor_style wether sending |t_RS| works **
|
||||
cursor_blink_mode wether sending |t_RC| works **
|
||||
underline_rgb whether |t_8u| works **
|
||||
mouse mouse type supported
|
||||
|
||||
** value 'u' for unknown, 'y' for yes, 'n' for no
|
||||
|
||||
If the |+termresponse| feature is missing then the result is
|
||||
an empty dictionary.
|
||||
|
||||
If "cursor_style" is 'y' then |t_RS| will be sent to request the
|
||||
current cursor style.
|
||||
If "cursor_blink_mode" is 'y' then |t_RC| will be sent to
|
||||
request the cursor blink status.
|
||||
"cursor_style" and "cursor_blink_mode" are also set if |t_u7|
|
||||
is not empty, Vim will detect the working of sending |t_RS|
|
||||
and |t_RC| on startup.
|
||||
|
||||
When "underline_rgb" is not 'y', then |t_8u| will be made empty.
|
||||
This avoids sending it to xterm, which would clear the colors.
|
||||
|
||||
For "mouse" the value 'u' is unknown
|
||||
|
||||
Also see:
|
||||
- 'ambiwidth' - detected by using |t_u7|.
|
||||
- |v:termstyleresp| and |v:termblinkresp| for the response to
|
||||
|t_RS| and |t_RC|.
|
||||
|
||||
|
||||
test_ functions are documented here: |test-functions-details|
|
||||
|
||||
|
||||
@@ -10336,7 +10516,7 @@ timer_info([{id}])
|
||||
returned.
|
||||
When {id} is omitted information about all timers is returned.
|
||||
|
||||
For each timer the information is stored in a Dictionary with
|
||||
For each timer the information is stored in a |Dictionary| with
|
||||
these items:
|
||||
"id" the timer ID
|
||||
"time" time the timer was started with
|
||||
@@ -10570,7 +10750,7 @@ undotree() *undotree()*
|
||||
undo blocks.
|
||||
|
||||
The first item in the "entries" list is the oldest undo item.
|
||||
Each List item is a Dictionary with these items:
|
||||
Each List item is a |Dictionary| with these items:
|
||||
"seq" Undo sequence number. Same as what appears in
|
||||
|:undolist|.
|
||||
"time" Timestamp when the change happened. Use
|
||||
@@ -10720,7 +10900,10 @@ win_getid([{win} [, {tab}]]) *win_getid()*
|
||||
|
||||
win_gettype([{nr}]) *win_gettype()*
|
||||
Return the type of the window:
|
||||
"autocmd" autocommand window. Temporary window
|
||||
used to execute autocommands.
|
||||
"popup" popup window |popup|
|
||||
"preview" preview window |preview-window|
|
||||
"command" command-line window |cmdwin|
|
||||
(empty) normal window
|
||||
"unknown" window {nr} not found
|
||||
@@ -10769,7 +10952,7 @@ win_screenpos({nr}) *win_screenpos()*
|
||||
GetWinid()->win_screenpos()
|
||||
<
|
||||
win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
|
||||
Move the window {nr} to a new split of the window {target}.
|
||||
Move the window {nr} to a new split of the window {target}.
|
||||
This is similar to moving to {target}, creating a new window
|
||||
using |:split| but having the same contents as window {nr}, and
|
||||
then closing {nr}.
|
||||
@@ -10779,7 +10962,7 @@ win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
|
||||
|
||||
Returns zero for success, non-zero for failure.
|
||||
|
||||
{options} is a Dictionary with the following optional entries:
|
||||
{options} is a |Dictionary| with the following optional entries:
|
||||
"vertical" When TRUE, the split is created vertically,
|
||||
like with |:vsplit|.
|
||||
"rightbelow" When TRUE, the split is made below or to the
|
||||
@@ -11529,7 +11712,7 @@ The argument default expressions are evaluated at the time of the function
|
||||
call, not definition. Thus it is possible to use an expression which is
|
||||
invalid the moment the function is defined. The expressions are also only
|
||||
evaluated when arguments are not specified during a call.
|
||||
|
||||
*none-function_argument*
|
||||
You can pass |v:none| to use the default expression. Note that this means you
|
||||
cannot pass v:none as an ordinary value when an argument has a default
|
||||
expression.
|
||||
@@ -11681,6 +11864,9 @@ like this: >
|
||||
|
||||
:call filename#funcname()
|
||||
|
||||
These functions are always global, in Vim9 script "g:" needs to be used: >
|
||||
:call g:filename#funcname()
|
||||
|
||||
When such a function is called, and it is not defined yet, Vim will search the
|
||||
"autoload" directories in 'runtimepath' for a script file called
|
||||
"filename.vim". For example "~/.vim/autoload/filename.vim". That file should
|
||||
@@ -11692,7 +11878,11 @@ then define the function like this: >
|
||||
|
||||
The file name and the name used before the # in the function must match
|
||||
exactly, and the defined function must have the name exactly as it will be
|
||||
called.
|
||||
called. In Vim9 script the "g:" prefix must be used: >
|
||||
function g:filename#funcname()
|
||||
|
||||
or for a compiled function: >
|
||||
def g:filename#funcname()
|
||||
|
||||
It is possible to use subdirectories. Every # in the function name works like
|
||||
a path separator. Thus when calling a function: >
|
||||
@@ -11775,6 +11965,9 @@ This does NOT work: >
|
||||
==============================================================================
|
||||
7. Commands *expression-commands*
|
||||
|
||||
Note: in Vim9 script `:let` is used for variable declaration, not assignment.
|
||||
An assignment leaves out the `:let` command. |vim9-declaration|
|
||||
|
||||
:let {var-name} = {expr1} *:let* *E18*
|
||||
Set internal variable {var-name} to the result of the
|
||||
expression {expr1}. The variable will get the type
|
||||
@@ -11934,8 +12127,9 @@ This does NOT work: >
|
||||
text...
|
||||
text...
|
||||
{endmarker}
|
||||
Set internal variable {var-name} to a List containing
|
||||
the lines of text bounded by the string {endmarker}.
|
||||
Set internal variable {var-name} to a |List|
|
||||
containing the lines of text bounded by the string
|
||||
{endmarker}.
|
||||
{endmarker} must not contain white space.
|
||||
{endmarker} cannot start with a lower case character.
|
||||
The last line should end only with the {endmarker}
|
||||
@@ -11997,12 +12191,14 @@ text...
|
||||
s: script-local variables
|
||||
l: local function variables
|
||||
v: Vim variables.
|
||||
This does not work in Vim9 script. |vim9-declaration|
|
||||
|
||||
:let List the values of all variables. The type of the
|
||||
variable is indicated before the value:
|
||||
<nothing> String
|
||||
# Number
|
||||
* Funcref
|
||||
This does not work in Vim9 script. |vim9-declaration|
|
||||
|
||||
:unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795*
|
||||
Remove the internal variable {name}. Several variable
|
||||
|
||||
@@ -312,7 +312,7 @@ can create any of the following: >
|
||||
$VIM/vimfiles/indent/sqlite.vim
|
||||
|
||||
No changes are necessary to the SQLSetType function. It will automatically
|
||||
pickup the new SQL files and load them when you issue the SQLSetType command.
|
||||
pick up the new SQL files and load them when you issue the SQLSetType command.
|
||||
|
||||
|
||||
==============================================================================
|
||||
@@ -519,7 +519,7 @@ beginning with those characters. >
|
||||
4.3.2 Column Completion: *sql-completion-columns*
|
||||
|
||||
The SQL completion plugin can also display a list of columns for particular
|
||||
tables. The column completion is trigger via <C-C>c.
|
||||
tables. The column completion is triggered via <C-C>c.
|
||||
|
||||
NOTE: The following example uses <Right> to trigger a column list while
|
||||
the popup window is active.
|
||||
@@ -727,7 +727,7 @@ your platform (often a case on *nix) you define the following variable in
|
||||
your |vimrc|: >
|
||||
let g:omni_sql_no_default_maps = 1
|
||||
|
||||
Do no edit ftplugin/sql.vim directly! If you change this file your changes
|
||||
Do not edit ftplugin/sql.vim directly! If you change this file your changes
|
||||
will be over written on future updates. Vim has a special directory structure
|
||||
which allows you to make customizations without changing the files that are
|
||||
included with the Vim distribution. If you wish to customize the maps
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui_x11.txt* For Vim version 8.2. Last change: 2019 May 05
|
||||
*gui_x11.txt* For Vim version 8.2. Last change: 2020 Jun 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -356,6 +356,9 @@ need to set those up in some sort of gtkrc file. You'll have to refer
|
||||
to the GTK documentation, however little there is, on how to do this.
|
||||
See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
|
||||
for more information.
|
||||
*gtk3-slow*
|
||||
If you are using GTK3 and Vim appears to be slow, try setting the environment
|
||||
variable $GDK_RENDERING to "image".
|
||||
|
||||
|
||||
Tooltip Colors ~
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_lua.txt* For Vim version 8.2. Last change: 2020 May 17
|
||||
*if_lua.txt* For Vim version 8.2. Last change: 2020 Jun 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Luis Carvalho
|
||||
@@ -217,14 +217,27 @@ Vim's syntax for lists. Since lists are objects, changes in list references in
|
||||
Lua are reflected in Vim and vice-versa. A list "l" has the following
|
||||
properties and methods:
|
||||
|
||||
NOTE: In patch 8.2.1066 array indexes were changed from zero-based to
|
||||
one-based. You can check with: >
|
||||
if has("patch-8.2.1066")
|
||||
|
||||
Properties
|
||||
----------
|
||||
o "#l" is the number of items in list "l", equivalent to "len(l)"
|
||||
in Vim.
|
||||
o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim.
|
||||
o "l[k]" returns the k-th item in "l"; "l" is one-indexed, as in Lua.
|
||||
To modify the k-th item, simply do "l[k] = newitem"; in
|
||||
particular, "l[k] = nil" removes the k-th item from "l".
|
||||
particular, "l[k] = nil" removes the k-th item from "l". Item can
|
||||
be added to the end of the list by "l[#l + 1] = newitem"
|
||||
o "l()" returns an iterator for "l".
|
||||
o "table.insert(l, newitem)" inserts an item at the end of the list.
|
||||
(only Lua 5.3 and later)
|
||||
o "table.insert(l, position, newitem)" inserts an item at the
|
||||
specified position. "position" is one-indexed. (only Lua 5.3 and
|
||||
later)
|
||||
o "table.remove(l, position)" removes an item at the specified
|
||||
position. "position" is one-indexed.
|
||||
|
||||
|
||||
Methods
|
||||
-------
|
||||
@@ -237,13 +250,16 @@ Examples:
|
||||
:let l = [1, 'item']
|
||||
:lua l = vim.eval('l') -- same 'l'
|
||||
:lua l:add(vim.list())
|
||||
:lua l[0] = math.pi
|
||||
:lua l[1] = math.pi
|
||||
:echo l[0] " 3.141593
|
||||
:lua l[0] = nil -- remove first item
|
||||
:lua l[1] = nil -- remove first item
|
||||
:lua l:insert(true, 1)
|
||||
:lua print(l, #l, l[0], l[1], l[-1])
|
||||
:lua print(l, #l, l[1], l[2])
|
||||
:lua l[#l + 1] = 'value'
|
||||
:lua table.insert(l, 100)
|
||||
:lua table.insert(l, 2, 200)
|
||||
:lua table.remove(l, 1)
|
||||
:lua for item in l() do print(item) end
|
||||
<
|
||||
|
||||
==============================================================================
|
||||
4. Dict userdata *lua-dict*
|
||||
@@ -333,6 +349,14 @@ Examples:
|
||||
:lua l = d.len -- assign d as 'self'
|
||||
:lua print(l())
|
||||
<
|
||||
Lua functions and closures are automatically converted to a Vim |Funcref| and
|
||||
can be accessed in Vim scripts. Example:
|
||||
>
|
||||
lua <<EOF
|
||||
vim.fn.timer_start(1000, function(timer)
|
||||
print('timer callback')
|
||||
end)
|
||||
EOF
|
||||
|
||||
==============================================================================
|
||||
7. Buffer userdata *lua-buffer*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 8.2. Last change: 2020 May 26
|
||||
*index.txt* For Vim version 8.2. Last change: 2020 May 31
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -85,7 +85,7 @@ tag char action in Insert mode ~
|
||||
|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {register}
|
||||
insert the contents of a register literally
|
||||
and fix indent.
|
||||
CTRL-S (used for terminal control flow)
|
||||
CTRL-S not used or used for terminal control flow
|
||||
|i_CTRL-T| CTRL-T insert one shiftwidth of indent in current
|
||||
line
|
||||
|i_CTRL-U| CTRL-U delete all entered characters in the current
|
||||
@@ -220,9 +220,9 @@ tag char note action in Normal mode ~
|
||||
|CTRL-N| CTRL-N 1 same as "j"
|
||||
|CTRL-O| CTRL-O 1 go to N older entry in jump list
|
||||
|CTRL-P| CTRL-P 1 same as "k"
|
||||
CTRL-Q (used for terminal control flow)
|
||||
CTRL-Q not used, or used for terminal control flow
|
||||
|CTRL-R| CTRL-R 2 redo changes which were undone with 'u'
|
||||
CTRL-S (used for terminal control flow)
|
||||
CTRL-S not used, or used for terminal control flow
|
||||
|CTRL-T| CTRL-T jump to N older Tag in tag list
|
||||
|CTRL-U| CTRL-U scroll N lines Upwards (default: half a
|
||||
screen)
|
||||
@@ -828,7 +828,7 @@ tag char note action in Normal mode ~
|
||||
|zD| zD delete folds recursively
|
||||
|zE| zE eliminate all folds
|
||||
|zF| zF create a fold for N lines
|
||||
|zG| zG temporarily mark word as good spelled word
|
||||
|zG| zG temporarily mark word as correctly spelled
|
||||
|zH| zH when 'wrap' off scroll half a screenwidth
|
||||
to the right
|
||||
|zL| zL when 'wrap' off scroll half a screenwidth
|
||||
@@ -837,7 +837,7 @@ tag char note action in Normal mode ~
|
||||
|zN| zN set 'foldenable'
|
||||
|zO| zO open folds recursively
|
||||
|zR| zR set 'foldlevel' to the deepest fold
|
||||
|zW| zW temporarily mark word as bad spelled word
|
||||
|zW| zW temporarily mark word as incorrectly spelled
|
||||
|zX| zX re-apply 'foldlevel'
|
||||
|z^| z^ cursor on line N (default line above
|
||||
window), otherwise like "z-"
|
||||
@@ -849,7 +849,7 @@ tag char note action in Normal mode ~
|
||||
position the cursor at the end (right side)
|
||||
of the screen
|
||||
|zf| zf{motion} create a fold for Nmove text
|
||||
|zg| zg permanently mark word as good spelled word
|
||||
|zg| zg permanently mark word as correctly spelled
|
||||
|zh| zh when 'wrap' off scroll screen N characters
|
||||
to the right
|
||||
|zi| zi toggle 'foldenable'
|
||||
@@ -870,7 +870,7 @@ tag char note action in Normal mode ~
|
||||
|zuW| zuW undo |zW|
|
||||
|zuG| zuG undo |zG|
|
||||
|zv| zv open enough folds to view the cursor line
|
||||
|zw| zw permanently mark word as bad spelled word
|
||||
|zw| zw permanently mark word as incorrectly spelled
|
||||
|zx| zx re-apply 'foldlevel' and do "zv"
|
||||
|zz| zz redraw, cursor line at center of window
|
||||
|z<Left>| z<Left> same as "zh"
|
||||
@@ -1056,7 +1056,7 @@ tag command action in Command-line editing mode ~
|
||||
|c_CTRL-R_CTRL-O| CTRL-R CTRL-O {regname}
|
||||
insert the contents of a register or object
|
||||
under the cursor literally
|
||||
CTRL-S (used for terminal control flow)
|
||||
CTRL-S not used, or used for terminal control flow
|
||||
|c_CTRL-T| CTRL-T previous match when 'incsearch' is active
|
||||
|c_CTRL-U| CTRL-U remove all characters
|
||||
|c_CTRL-V| CTRL-V insert next non-digit literally, insert three
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*intro.txt* For Vim version 8.2. Last change: 2019 Nov 11
|
||||
*intro.txt* For Vim version 8.2. Last change: 2020 May 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -121,14 +121,16 @@ http://www.vim.org/maillist.php
|
||||
|
||||
Bug reports: *bugs* *bug-reports* *bugreport.vim*
|
||||
|
||||
There are two ways to report bugs, both work:
|
||||
1. Send bug reports to: Vim Developers <vim-dev@vim.org>
|
||||
There are three ways to report bugs:
|
||||
1. Open an issue on GitHub: https://github.com/vim/vim/issues
|
||||
The text will be forwarded to the vim-dev maillist.
|
||||
2. For issues with runtime files, look in the header for an email address or
|
||||
any other way to report it to the maintainer.
|
||||
3. Send bug reports to: Vim Developers <vim-dev@vim.org>
|
||||
This is a maillist, you need to become a member first and many people will
|
||||
see the message. If you don't want that, e.g. because it is a security
|
||||
issue, send it to <bugs@vim.org>, this only goes to the Vim maintainer
|
||||
(that's Bram).
|
||||
2. Open an issue on GitHub: https://github.com/vim/vim/issues
|
||||
The text will be forwarded to the vim-dev maillist.
|
||||
|
||||
Please be brief; all the time that is spent on answering mail is subtracted
|
||||
from the time that is spent on improving Vim! Always give a reproducible
|
||||
|
||||
@@ -843,11 +843,10 @@ When modifyOtherKeys is enabled you can map <C-[> and <C-S-{>: >
|
||||
imap <C-S-{> {{{
|
||||
Without modifyOtherKeys <C-[> and <C-S-{> are indistinguishable from Esc.
|
||||
|
||||
A known side effect effect is that in Insert mode the raw escape sequence is
|
||||
inserted after the CTRL-V key. This can be used to check whether
|
||||
modifyOtherKeys is enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you
|
||||
get one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is
|
||||
on.
|
||||
A known side effect is that in Insert mode the raw escape sequence is inserted
|
||||
after the CTRL-V key. This can be used to check whether modifyOtherKeys is
|
||||
enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you get one byte then
|
||||
modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
|
||||
|
||||
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
|
||||
Insert mode to avoid every key with a modifier causing Insert mode to end.
|
||||
|
||||
@@ -128,7 +128,7 @@ There are several ways to enter multi-byte characters:
|
||||
- For MS-Windows IME can be used. See |IME|.
|
||||
- For all systems keymaps can be used. See |mbyte-keymap|.
|
||||
|
||||
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
|
||||
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose
|
||||
the different input methods or disable them temporarily.
|
||||
|
||||
==============================================================================
|
||||
@@ -141,8 +141,8 @@ in, or just use a certain locale inside Vim.
|
||||
|
||||
WHAT IS A LOCALE? *locale*
|
||||
|
||||
There are many of languages in the world. And there are different cultures
|
||||
and environments at least as much as the number of languages. A linguistic
|
||||
There are many languages in the world. And there are different cultures and
|
||||
environments at least as many as the number of languages. A linguistic
|
||||
environment corresponding to an area is called "locale". This includes
|
||||
information about the used language, the charset, collating order for sorting,
|
||||
date format, currency format and so on. For Vim only the language and charset
|
||||
@@ -889,7 +889,7 @@ input_server_name is your |IM-server| name (check your |IM-server|
|
||||
your_input_style is one of |OverTheSpot|, |OffTheSpot|, |Root|. See
|
||||
also |xim-input-style|.
|
||||
|
||||
*international may not necessary if you use X11R6.
|
||||
*international may not be necessary if you use X11R6.
|
||||
*.inputMethod and *.preeditType are optional if you use X11R6.
|
||||
|
||||
For example, when you are using kinput2 as |IM-server|, >
|
||||
@@ -952,7 +952,7 @@ automatically.
|
||||
|
||||
This works on not only insert-normal mode, but also search-command input and
|
||||
replace mode.
|
||||
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
|
||||
The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose
|
||||
the different input methods or disable them temporarily.
|
||||
|
||||
WHAT IS IME
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*mlang.txt* For Vim version 8.2. Last change: 2019 May 05
|
||||
*mlang.txt* For Vim version 8.2. Last change: 2020 Jun 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -37,6 +37,7 @@ use of "-" and "_".
|
||||
:lan[guage] mes[sages]
|
||||
:lan[guage] cty[pe]
|
||||
:lan[guage] tim[e]
|
||||
:lan[guage] col[late]
|
||||
Print the current language (aka locale).
|
||||
With the "messages" argument the language used for
|
||||
messages is printed. Technical: LC_MESSAGES.
|
||||
@@ -44,15 +45,19 @@ use of "-" and "_".
|
||||
character encoding is printed. Technical: LC_CTYPE.
|
||||
With the "time" argument the language used for
|
||||
strftime() is printed. Technical: LC_TIME.
|
||||
With the "collate" argument the language used for
|
||||
collation order is printed. Technical: LC_COLLATE.
|
||||
Without argument all parts of the locale are printed
|
||||
(this is system dependent).
|
||||
The current language can also be obtained with the
|
||||
|v:lang|, |v:ctype| and |v:lc_time| variables.
|
||||
|v:lang|, |v:ctype|, |v:collate| and |v:lc_time|
|
||||
variables.
|
||||
|
||||
:lan[guage] {name}
|
||||
:lan[guage] mes[sages] {name}
|
||||
:lan[guage] cty[pe] {name}
|
||||
:lan[guage] tim[e] {name}
|
||||
:lan[guage] col[late] {name}
|
||||
Set the current language (aka locale) to {name}.
|
||||
The locale {name} must be a valid locale on your
|
||||
system. Some systems accept aliases like "en" or
|
||||
@@ -72,7 +77,10 @@ use of "-" and "_".
|
||||
With the "time" argument the language used for time
|
||||
and date messages is set. This affects strftime().
|
||||
This sets $LC_TIME.
|
||||
Without an argument both are set, and additionally
|
||||
With the "collate" argument the language used for the
|
||||
collation order is set. This affects sorting of
|
||||
characters. This sets $LC_COLLATE.
|
||||
Without an argument all are set, and additionally
|
||||
$LANG is set.
|
||||
When compiled with the |+float| feature the LC_NUMERIC
|
||||
value will always be set to "C", so that floating
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 8.2. Last change: 2020 May 03
|
||||
*options.txt* For Vim version 8.2. Last change: 2020 Jul 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1951,9 +1951,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not available when compiled without the |+textprop|
|
||||
or |+quickfix| feature}
|
||||
When 'completeopt' contains "popup" then this option is used for the
|
||||
properties of the info popup when it is created. You can also use
|
||||
|popup_findinfo()| and then set properties for an existing info popup
|
||||
with |popup_setoptions()|. See |complete-popup|.
|
||||
properties of the info popup when it is created. If an info popup
|
||||
window already exists it is closed, so that the option value is
|
||||
applied when it is created again.
|
||||
You can also use |popup_findinfo()| and then set properties for an
|
||||
existing info popup with |popup_setoptions()|. See |complete-popup|.
|
||||
|
||||
|
||||
*'concealcursor'* *'cocu'*
|
||||
@@ -4133,7 +4135,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
This option specifies a function that will be called to
|
||||
activate or deactivate the Input Method.
|
||||
It is not used in the GUI.
|
||||
It is not used in the MS-Windows GUI version.
|
||||
The expression will be evaluated in the |sandbox| when set from a
|
||||
modeline, see |sandbox-option|.
|
||||
|
||||
@@ -4242,7 +4244,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
This option specifies a function that is called to obtain the status
|
||||
of Input Method. It must return a positive number when IME is active.
|
||||
It is not used in the GUI.
|
||||
It is not used in the MS-Windows GUI version.
|
||||
|
||||
Example: >
|
||||
function ImStatusFunc()
|
||||
@@ -5232,7 +5234,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< If your terminal can't overrule the mouse events going to the
|
||||
application, use: >
|
||||
:set mouse=nvi
|
||||
< The you can press ":", select text for the system, and press Esc to go
|
||||
< Then you can press ":", select text for the system, and press Esc to go
|
||||
back to Vim using the mouse events.
|
||||
In |defaults.vim| "nvi" is used if the 'term' option is not matching
|
||||
"xterm".
|
||||
@@ -5434,8 +5436,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
(without "unsigned" it would become "9-2021").
|
||||
Using CTRL-A on "2020" in "9-2020" results in "9-2021"
|
||||
(without "unsigned" it would become "9-2019").
|
||||
Using CTRL-X on "0" or "18446744073709551615" (2^64) has
|
||||
no effect, overflow is prevented.
|
||||
Using CTRL-X on "0" or CTRL-A on "18446744073709551615"
|
||||
(2^64 - 1) has no effect, overflow is prevented.
|
||||
Numbers which simply begin with a digit in the range 1-9 are always
|
||||
considered decimal. This also happens for numbers that are not
|
||||
recognized as octal or hex.
|
||||
@@ -5911,7 +5913,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
customize the information displayed in the quickfix or location window
|
||||
for each entry in the corresponding quickfix or location list. See
|
||||
|quickfix-window-function| for an explanation of how to write the
|
||||
function and an example.
|
||||
function and an example. The value can be the name of a function or a
|
||||
lambda.
|
||||
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
@@ -6730,7 +6733,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
flag meaning when present ~
|
||||
f use "(3 of 5)" instead of "(file 3 of 5)"
|
||||
i use "[noeol]" instead of "[Incomplete last line]"
|
||||
l use "999L, 888C" instead of "999 lines, 888 characters"
|
||||
l use "999L, 888B" instead of "999 lines, 888 bytes"
|
||||
m use "[+]" instead of "[Modified]"
|
||||
n use "[New]" instead of "[New File]"
|
||||
r use "[RO]" instead of "[readonly]"
|
||||
@@ -7105,6 +7108,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
up to the first character that is not an ASCII letter or number and
|
||||
not a dash. Also see |set-spc-auto|.
|
||||
|
||||
*'spelloptions'* *'spo'*
|
||||
'spelloptions' 'spo' string (default "")
|
||||
local to buffer
|
||||
{not available when compiled without the |+syntax|
|
||||
feature}
|
||||
A comma separated list of options for spell checking:
|
||||
camel When a word is CamelCased, assume "Cased" is a
|
||||
separate word: every upper-case character in a word
|
||||
that comes after a lower case character indicates the
|
||||
start of a new word.
|
||||
|
||||
*'spellsuggest'* *'sps'*
|
||||
'spellsuggest' 'sps' string (default "best")
|
||||
@@ -7696,10 +7709,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'term' string (default is $TERM, if that fails:
|
||||
in the GUI: "builtin_gui"
|
||||
on Amiga: "amiga"
|
||||
on BeOS: "beos-ansi"
|
||||
on Haiku: "xterm"
|
||||
on Mac: "mac-ansi"
|
||||
on MiNT: "vt52"
|
||||
on Unix: "ansi"
|
||||
on VMS: "ansi"
|
||||
on Win 32: "win32")
|
||||
@@ -8547,8 +8558,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'virtualedit'* *'ve'*
|
||||
'virtualedit' 've' string (default "")
|
||||
global
|
||||
{not available when compiled without the
|
||||
|+virtualedit| feature}
|
||||
A comma separated list of these words:
|
||||
block Allow virtual editing in Visual block mode.
|
||||
insert Allow virtual editing in Insert mode.
|
||||
|
||||
@@ -1,320 +1,13 @@
|
||||
*os_beos.txt* For Vim version 8.2. Last change: 2016 Mar 28
|
||||
*os_beos.txt* For Vim version 8.2. Last change: 2020 Jun 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
*BeOS* *BeBox*
|
||||
This is a port of Vim 5.1 to the BeOS Preview Release 2 (also known as PR2)
|
||||
or later.
|
||||
*beos* *BeOS* *BeBox*
|
||||
This file used to contain particularities for the BeOS port of Vim.
|
||||
|
||||
This file contains the particularities for the BeBox/BeOS version of Vim. For
|
||||
matters not discussed in this file, Vim behaves very much like the Unix
|
||||
|os_unix.txt| version.
|
||||
The BeOS support was removed in patch 8.2.0849.
|
||||
|
||||
1. General |beos-general|
|
||||
2. Compiling Vim |beos-compiling|
|
||||
3. Timeout in the Terminal |beos-timeout|
|
||||
4. Unicode vs. Latin1 |beos-unicode|
|
||||
5. The BeOS GUI |beos-gui|
|
||||
6. The $VIM directory |beos-vimdir|
|
||||
7. Drag & Drop |beos-dragndrop|
|
||||
8. Single Launch vs. Multiple
|
||||
Launch |beos-launch|
|
||||
9. Fonts |beos-fonts|
|
||||
10. The meta key modifier |beos-meta|
|
||||
11. Mouse key mappings |beos-mouse|
|
||||
12. Color names |beos-colors|
|
||||
13. Compiling with Perl |beos-perl|
|
||||
|
||||
|
||||
1. General *beos-general*
|
||||
|
||||
The default syntax highlighting mostly works with different foreground colors
|
||||
to highlight items. This works best if you set your Terminal window to a
|
||||
darkish background and light letters. Some middle-grey background (for
|
||||
instance (r,g,b)=(168,168,168)) with black letters also works nicely. If you
|
||||
use the default light background and dark letters, it may look better to
|
||||
simply reverse the notion of foreground and background color settings. To do
|
||||
this, add this to your .vimrc file (where <Esc> may need to be replaced with
|
||||
the escape character): >
|
||||
|
||||
:if &term == "beos-ansi"
|
||||
: set t_AB=<Esc>[3%dm
|
||||
: set t_AF=<Esc>[4%dm
|
||||
:endif
|
||||
|
||||
|
||||
2. Compiling Vim *beos-compiling*
|
||||
|
||||
From the Advanced Access Preview Release (AAPR) on, Vim can be configured with
|
||||
the standard configure script. To get the compiler and its flags right, use
|
||||
the following command-line in the shell (you can cut and paste it in one go):
|
||||
|
||||
CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \
|
||||
./configure --prefix=/boot/home/config
|
||||
|
||||
$BE_C_COMPILER is usually "mwcc", $BE_DEFAULT_C_FLAGS is usually "-I- -I."
|
||||
|
||||
When configure has run, and you wish to enable GUI support, you must edit the
|
||||
config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead
|
||||
of $(NONE_xxx).
|
||||
Alternatively you can make this change in the Makefile; it will have a
|
||||
more permanent effect. Search for "NONE_".
|
||||
|
||||
After compilation you need to add the resources to the binary. Add the
|
||||
following few lines near the end (before the line with "exit $exit_value") of
|
||||
the link.sh script to do this automatically.
|
||||
|
||||
rmattr BEOS:TYPE vim
|
||||
copyres os_beos.rsrc vim
|
||||
mimeset vim
|
||||
|
||||
Also, create a dummy file "strip":
|
||||
|
||||
#!/bin/sh
|
||||
mimeset $1
|
||||
exit 0
|
||||
|
||||
You will need it when using "make install" to install Vim.
|
||||
|
||||
Now type "make" to compile Vim, then "make install" to install it.
|
||||
|
||||
If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and
|
||||
create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must
|
||||
copy Vim's configuration files to $HOME/config/share/vim:
|
||||
vim-5.0s/{*.vim,doc,syntax}. For completeness, you should also copy the nroff
|
||||
manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd!
|
||||
|
||||
Obviously, you need the unlimited linker to actually link Vim. See
|
||||
http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS.
|
||||
There are currently no other linkers that can do the job.
|
||||
|
||||
This won't be able to include the Perl or Python interfaces even if
|
||||
you have the appropriate files installed. |beos-perl|
|
||||
|
||||
|
||||
3. Timeout in the Terminal *beos-timeout*
|
||||
|
||||
Because some POSIX/UNIX features are still missing[1], there is no direct OS
|
||||
support for read-with-timeout in the Terminal. This would mean that you cannot
|
||||
use :mappings of more than one character, unless you also :set notimeout.
|
||||
|'timeout'|
|
||||
|
||||
To circumvent this problem, I added a workaround to provide the necessary
|
||||
input with timeout by using an extra thread which reads ahead one character.
|
||||
As a side effect, it also makes Vim recognize when the Terminal window
|
||||
resizes.
|
||||
|
||||
Function keys are not supported in the Terminal since they produce very
|
||||
indistinctive character sequences.
|
||||
|
||||
These problems do not exist in the GUI.
|
||||
|
||||
[1]: there is no select() on file descriptors; also the termios VMIN and VTIME
|
||||
settings do not seem to work properly. This has been the case since DR7 at
|
||||
least and still has not been fixed as of PR2.
|
||||
|
||||
*beos-unicode*
|
||||
4. Unicode vs. Latin1 *beos-utf8*
|
||||
|
||||
BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to
|
||||
8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes.
|
||||
This does not produce the desired results for non-ASCII characters. Try the
|
||||
command :digraphs to see. If they look messed up, use :set isprint=@ to
|
||||
(slightly) improve the display of ISO-Latin1 characters 128-255. This works
|
||||
better in the GUI, depending on which font you use (below).
|
||||
|
||||
You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou
|
||||
-f iso1 filename) or to (xtou -t iso1 filename) ISO-Latin1 characters.
|
||||
|
||||
|
||||
5. The BeOS GUI *beos-gui*
|
||||
|
||||
The BeOS GUI is no longer included. It was not maintained for a while and
|
||||
most likely didn't work. If you want to work on this: get the Vim 6.x version
|
||||
and merge it back in.
|
||||
|
||||
|
||||
6. The $VIM directory *beos-vimdir*
|
||||
|
||||
$VIM is the symbolic name for the place where Vim's support files are stored.
|
||||
The default value for $VIM is set at compile time and can be determined with >
|
||||
|
||||
:version
|
||||
|
||||
The normal value is /boot/home/config/share/vim. If you don't like it you can
|
||||
set the VIM environment variable to override this, or set 'helpfile' in your
|
||||
.vimrc: >
|
||||
|
||||
:if version >= 500
|
||||
: set helpfile=~/vim/vim54/doc/help.txt
|
||||
: syntax on
|
||||
:endif
|
||||
|
||||
|
||||
7. Drag & Drop *beos-dragndrop*
|
||||
|
||||
You can drop files and directories on either the Vim icon (starts a new Vim
|
||||
session, unless you use the File Types application to set Vim to be "Single
|
||||
Launch") or on the Vim window (starts editing the files). Dropping a folder
|
||||
sets Vim's current working directory. |:cd| |:pwd| If you drop files or
|
||||
folders with either SHIFT key pressed, Vim changes directory to the folder
|
||||
that contains the first item dropped. When starting Vim, there is no need to
|
||||
press shift: Vim behaves as if you do.
|
||||
|
||||
Files dropped set the current argument list. |argument-list|
|
||||
|
||||
|
||||
8. Single Launch vs. Multiple Launch *beos-launch*
|
||||
|
||||
As distributed Vim's Application Flags (as seen in the FileTypes preference)
|
||||
are set to Multiple Launch. If you prefer, you can set them to Single Launch
|
||||
instead. Attempts to start a second copy of Vim will cause the first Vim to
|
||||
open the files instead. This works from the Tracker but also from the command
|
||||
line. In the latter case, non-file (option) arguments are not supported.
|
||||
|
||||
NB: Only the GUI version has a BApplication (and hence Application Flags).
|
||||
This section does not apply to the GUI-less version, should you compile one.
|
||||
|
||||
|
||||
9. Fonts *beos-fonts*
|
||||
|
||||
Set fonts with >
|
||||
|
||||
:set guifont=Courier10_BT/Roman/10
|
||||
|
||||
where the first part is the font family, the second part the style, and the
|
||||
third part the size. You can use underscores instead of spaces in family and
|
||||
style.
|
||||
|
||||
Best results are obtained with monospaced fonts (such as Courier). Vim
|
||||
attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not
|
||||
work for proportional fonts (despite what the BeBook says).
|
||||
|
||||
Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1.
|
||||
This also does not work for all fonts. It does work for Courier, but not for
|
||||
ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the >
|
||||
|
||||
:digraphs
|
||||
|
||||
command, which lists a bunch of characters with their ISO Latin 1 encoding.
|
||||
If, for instance, there are "box" characters among them, or the last character
|
||||
isn't a dotted-y, then for this font the encoding does not work.
|
||||
|
||||
If the font you specify is unavailable, you get the system fixed font.
|
||||
|
||||
Standard fixed-width system fonts are:
|
||||
|
||||
ProFontISOLatin1/Regular
|
||||
Courier10_BT/Roman
|
||||
Courier10_BT/Italic
|
||||
Courier10_BT/Bold
|
||||
Courier10_BT/Bold_Italic
|
||||
|
||||
Standard proportional system fonts are:
|
||||
|
||||
Swis721_BT/Roman
|
||||
Swis721_BT/Italic
|
||||
Swis721_BT/Bold
|
||||
Swis721_BT/Bold_Italic
|
||||
Dutch801_Rm_BT/Roman
|
||||
Dutch801_Rm_BT/Italic
|
||||
Dutch801_Rm_BT/Bold
|
||||
Dutch801_Rm_BT/Bold_Italic
|
||||
Baskerville/Roman
|
||||
Baskerville/Italic
|
||||
Baskerville/Bold
|
||||
Baskerville/Bold_Italic
|
||||
SymbolProp_BT/Regular
|
||||
|
||||
Try some of them, just for fun.
|
||||
|
||||
|
||||
10. The meta key modifier *beos-meta*
|
||||
|
||||
The META key modifier is obtained by the left or right OPTION keys. This is
|
||||
because the ALT (aka COMMAND) keys are not passed to applications.
|
||||
|
||||
|
||||
11. Mouse key mappings *beos-mouse*
|
||||
|
||||
Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse. If
|
||||
you use the default Mouse preference settings these names indeed correspond to
|
||||
reality. Vim uses this mapping:
|
||||
|
||||
Button 1 -> LeftMouse,
|
||||
Button 2 -> RightMouse,
|
||||
Button 3 -> MiddleMouse.
|
||||
|
||||
If your mouse has fewer than 3 buttons you can provide your own mapping from
|
||||
mouse clicks with modifier(s) to other mouse buttons. See the swapmouse
|
||||
package for an example: |gui-mouse-mapping|
|
||||
$VIMRUNTIME/pack/dist/opt/swapmouse/plugin/swapmouse.vim
|
||||
|
||||
|
||||
12. Color names *beos-colors*
|
||||
|
||||
Vim has a number of color names built-in. Additional names are read from the
|
||||
file $VIMRUNTIME/rgb.txt, if present. This file is basically the color
|
||||
database from X. Names used from this file are cached for efficiency.
|
||||
|
||||
|
||||
13. Compiling with Perl *beos-perl*
|
||||
|
||||
Compiling with Perl support enabled is slightly tricky. The Metrowerks
|
||||
compiler has some strange ideas where to search for include files. Since
|
||||
several include files with Perl have the same names as some Vim header
|
||||
files, the wrong ones get included. To fix this, run the following Perl
|
||||
script while in the vim-5.0/src directory: >
|
||||
|
||||
preproc.pl > perl.h
|
||||
|
||||
#!/bin/env perl
|
||||
# Simple #include expander, just good enough for the Perl header files.
|
||||
|
||||
use strict;
|
||||
use IO::File;
|
||||
use Config;
|
||||
|
||||
sub doinclude
|
||||
{
|
||||
my $filename = $_[0];
|
||||
my $fh = new IO::File($filename, "r");
|
||||
if (defined $fh) {
|
||||
print "/* Start of $filename */\n";
|
||||
|
||||
while (<$fh>) {
|
||||
if (/^#include "(.*)"/) {
|
||||
doinclude($1);
|
||||
print "/* Back in $filename */\n";
|
||||
} else {
|
||||
print $_;
|
||||
}
|
||||
}
|
||||
print "/* End of $filename */\n";
|
||||
|
||||
undef $fh;
|
||||
} else {
|
||||
print "/* Cannot open $filename */\n";
|
||||
print "#include \"$filename\"\n";
|
||||
}
|
||||
}
|
||||
|
||||
chdir $Config{installarchlib}."/CORE";
|
||||
doinclude "perl.h";
|
||||
|
||||
It expands the "perl.h" header file, using only other Perl header files.
|
||||
|
||||
Now you can configure & make Vim with the --enable-perlinterp option.
|
||||
Be warned though that this adds about 616 kilobytes to the size of Vim!
|
||||
Without Perl, Vim with default features and GUI is about 575K, with Perl
|
||||
it is about 1191K.
|
||||
|
||||
-Olaf Seibert
|
||||
|
||||
[Note: these addresses no longer work:]
|
||||
<rhialto@polder.ubc.kun.nl>
|
||||
http://polder.ubc.kun.nl/~rhialto/be
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -1,39 +1,15 @@
|
||||
*os_mint.txt* For Vim version 8.2. Last change: 2005 Mar 29
|
||||
*os_mint.txt* For Vim version 8.2. Last change: 2020 Jul 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Jens M. Felderhoff
|
||||
|
||||
|
||||
*MiNT* *Atari*
|
||||
This file contains the particularities for the Atari MiNT version of Vim.
|
||||
The Atari MiNT support was removed with patch 8.2.1215. It probably didn't
|
||||
work at that time, since the code was old and not maintained.
|
||||
|
||||
For compiling Vim on the Atari running MiNT see "INSTALL" and "Makefile"
|
||||
in the src directory.
|
||||
|
||||
Vim for MiNT behaves almost exactly like the Unix version.
|
||||
The Unix behavior described in the documentation also refers to the
|
||||
MiNT version of Vim unless explicitly stated otherwise.
|
||||
Originally added by: Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de>
|
||||
|
||||
For wildcard expansion of <~> (home directory) you need a shell that
|
||||
expands the tilde. The vanilla Bourne shell doesn't recognize it.
|
||||
With csh and ksh it should work OK.
|
||||
|
||||
The MiNT version of vim needs the termcap file /etc/termcap with the
|
||||
terminal capabilities of your terminal. Builtin termcaps are
|
||||
supported for the vt52 terminal. Termcap entries for the TOSWIN window
|
||||
manager and the virtual console terminals have been appended to the
|
||||
termcap file that comes with the Vim distribution.
|
||||
|
||||
If you should encounter problems with swapped <BS> and <Del> keys, see
|
||||
|:fixdel|.
|
||||
|
||||
Because terminal updating under MiNT is often slow (e.g. serial line
|
||||
terminal), the 'showcmd' and 'ruler' options are default off.
|
||||
If you have a fast terminal, try setting them on. You might
|
||||
also want to set 'ttyfast'.
|
||||
|
||||
Send bug reports to
|
||||
|
||||
Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de>
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -30,8 +30,8 @@ can be changed at compile time.
|
||||
|
||||
Because terminal updating under Unix is often slow (e.g. serial line
|
||||
terminal, shell window in suntools), the 'showcmd' and 'ruler' options
|
||||
are default off. If you have a fast terminal, try setting them on. You might
|
||||
also want to set 'ttyfast'.
|
||||
are off by default. If you have a fast terminal, try setting them on. You
|
||||
might also want to set 'ttyfast'.
|
||||
|
||||
When using Vim in an xterm the mouse clicks can be used by Vim by setting
|
||||
'mouse' to "a". If there is access to an X-server gui style copy/paste will
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*os_vms.txt* For Vim version 8.2. Last change: 2019 Jan 29
|
||||
*os_vms.txt* For Vim version 8.2. Last change: 2020 Jun 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL
|
||||
@@ -432,7 +432,6 @@ Terminal entry not found in termcap
|
||||
builtin_gui
|
||||
builtin_riscos
|
||||
builtin_amiga
|
||||
builtin_beos-ansi
|
||||
builtin_ansi
|
||||
builtin_vt320
|
||||
builtin_vt52
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 8.2. Last change: 2019 Dec 07
|
||||
*pattern.txt* For Vim version 8.2. Last change: 2020 Jul 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1279,7 +1279,7 @@ not match in "càt" (where the a has the composing character 0x0300), but
|
||||
0xe1, it does not have a compositing character). It does match "cat" (where
|
||||
the a is just an a).
|
||||
|
||||
When a composing character appears at the start of the pattern of after an
|
||||
When a composing character appears at the start of the pattern or after an
|
||||
item that doesn't include the composing character, a match is found at any
|
||||
character that includes this composing character.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2020 Jan 06
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2020 May 31
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1375,7 +1375,11 @@ Basic items
|
||||
%v virtual column number (finds a number representing
|
||||
screen column of the error (1 <tab> == 8 screen
|
||||
columns))
|
||||
%t error type (finds a single character)
|
||||
%t error type (finds a single character):
|
||||
e - error message
|
||||
w - warning message
|
||||
i - info message
|
||||
n - note message
|
||||
%n error number (finds a number)
|
||||
%m error message (finds a string)
|
||||
%r matches the "rest" of a single-line file message %O/P/Q
|
||||
@@ -1446,6 +1450,7 @@ prefixes are:
|
||||
%E start of a multi-line error message
|
||||
%W start of a multi-line warning message
|
||||
%I start of a multi-line informational message
|
||||
%N start of a multi-line note message
|
||||
%A start of a multi-line message (unspecified type)
|
||||
%> for next line start with current pattern again |efm-%>|
|
||||
%C continuation of a multi-line message
|
||||
@@ -1942,19 +1947,27 @@ under the current directory tree. The file path may need to be simplified to a
|
||||
common parent directory.
|
||||
|
||||
The displayed text can be customized by setting the 'quickfixtextfunc' option
|
||||
to a Vim function. This function will be called with a dict argument for
|
||||
every entry in a quickfix or a location list. The dict argument will have the
|
||||
following fields:
|
||||
to a Vim function. This function will be called with a dict argument and
|
||||
should return a List of strings to be displayed in the quickfix or location
|
||||
list window. The dict argument will have the following fields:
|
||||
|
||||
quickfix set to 1 when called for a quickfix list and 0 when called for
|
||||
a location list.
|
||||
winid for a location list, set to the id of the window with the
|
||||
location list. For a quickfix list, set to 0. Can be used in
|
||||
getloclist() to get the location list entry.
|
||||
id quickfix or location list identifier
|
||||
idx index of the entry in the quickfix or location list
|
||||
start_idx index of the first entry for which text should be returned
|
||||
end_idx index of the last entry for which text should be returned
|
||||
|
||||
The function should return a single line of text to display in the quickfix
|
||||
window for the entry identified by idx. The function can obtain information
|
||||
about the current entry using the |getqflist()| function and specifying the
|
||||
quickfix list identifier "id" and the entry index "idx".
|
||||
window for each entry from start_idx to end_idx. The function can obtain
|
||||
information about the entries using the |getqflist()| function and specifying
|
||||
the quickfix list identifier "id". For a location list, getloclist() function
|
||||
can be used with the 'winid' argument. If an empty list is returned, then the
|
||||
default format is used to display all the entries. If an item in the returned
|
||||
list is an empty string, then the default format is used to display the
|
||||
corresponding entry.
|
||||
|
||||
If a quickfix or location list specific customization is needed, then the
|
||||
'quickfixtextfunc' attribute of the list can be set using the |setqflist()| or
|
||||
@@ -1969,11 +1982,14 @@ Example: >
|
||||
call setqflist([], ' ', {'lines' : v:oldfiles, 'efm' : '%f',
|
||||
\ 'quickfixtextfunc' : 'QfOldFiles'})
|
||||
func QfOldFiles(info)
|
||||
" get information about the specific quickfix entry
|
||||
let e = getqflist({'id' : a:info.id, 'idx' : a:info.idx,
|
||||
\ 'items' : 1}).items[0]
|
||||
" return the simplified file name
|
||||
return fnamemodify(bufname(e.bufnr), ':p:.')
|
||||
" get information about a range of quickfix entries
|
||||
let items = getqflist({'id' : a:info.id, 'items' : 1}).items
|
||||
let l = []
|
||||
for idx in range(a:info.start_idx - 1, a:info.end_idx - 1)
|
||||
" use the simplified file name
|
||||
call add(l, fnamemodify(bufname(items[idx].bufnr), ':p:.'))
|
||||
endfor
|
||||
return l
|
||||
endfunc
|
||||
<
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 8.2. Last change: 2020 Jan 17
|
||||
*quickref.txt* For Vim version 8.2. Last change: 2020 Jun 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -851,6 +851,7 @@ Short explanation of each option: *option-list*
|
||||
'pythonthreedll' name of the Python 3 dynamic library
|
||||
'pythonthreehome' name of the Python 3 home directory
|
||||
'pyxversion' 'pyx' Python version used for pyx* commands
|
||||
'quickfixtextfunc' 'qftf' function for the text in the quickfix window
|
||||
'quoteescape' 'qe' escape characters used in a string
|
||||
'readonly' 'ro' disallow writing the buffer
|
||||
'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting
|
||||
@@ -909,6 +910,7 @@ Short explanation of each option: *option-list*
|
||||
'spellcapcheck' 'spc' pattern to locate end of a sentence
|
||||
'spellfile' 'spf' files where |zg| and |zw| store words
|
||||
'spelllang' 'spl' language(s) to do spell checking for
|
||||
'spelloptions' 'spo' options for spell checking
|
||||
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
|
||||
'splitbelow' 'sb' new window from split is below the current one
|
||||
'splitright' 'spr' new window is put right of the current one
|
||||
|
||||
@@ -163,6 +163,11 @@ q Stops recording. (Implementation note: The 'q' that
|
||||
result of evaluating the expression is executed as an
|
||||
Ex command.
|
||||
Mappings are not recognized in these commands.
|
||||
When the |line-continuation| character (\) is present
|
||||
at the beginning of a line in a linewise register,
|
||||
then it is combined with the previous line. This is
|
||||
useful for yanking and executing parts of a Vim
|
||||
script.
|
||||
Future: Will execute the register for each line in the
|
||||
address range.
|
||||
|
||||
@@ -637,7 +642,7 @@ disallowed though.
|
||||
This assumes you write one or more plugins that you distribute as a package.
|
||||
|
||||
If you have two unrelated plugins you would use two packages, so that Vim
|
||||
users can chose what they include or not. Or you can decide to use one
|
||||
users can choose what they include or not. Or you can decide to use one
|
||||
package with optional plugins, and tell the user to add the ones he wants with
|
||||
`:packadd`.
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ o Invocations
|
||||
+ 'rightleft' ('rl') sets window orientation to right-to-left.
|
||||
+ 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
|
||||
allows one to remove a composing character which gets superimposed
|
||||
on those that proceeded them (some languages require this).
|
||||
on those that preceded them (some languages require this).
|
||||
+ 'rightleftcmd' ('rlc') sets the command-line within certain modes
|
||||
(such as search) to be utilized in right-to-left orientation as well.
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ used by popup windows where 'cursorline' is set.
|
||||
*sign-priority*
|
||||
Each placed sign is assigned a priority value. When multiple signs are placed
|
||||
on the same line, the attributes of the sign with the highest priority is used
|
||||
independent of the sign group. The default priority for a sign is 10. The
|
||||
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 the line on which the sign is placed is deleted, the sign is moved to the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*spell.txt* For Vim version 8.2. Last change: 2019 Aug 16
|
||||
*spell.txt* For Vim version 8.2. Last change: 2020 Jul 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -215,6 +215,9 @@ When there is a line break right after a sentence the highlighting of the next
|
||||
line may be postponed. Use |CTRL-L| when needed. Also see |set-spc-auto| for
|
||||
how it can be set automatically when 'spelllang' is set.
|
||||
|
||||
The 'spelloptions' option has a few more flags that influence the way spell
|
||||
checking works.
|
||||
|
||||
Vim counts the number of times a good word is encountered. This is used to
|
||||
sort the suggestions: words that have been seen before get a small bonus,
|
||||
words that have been seen often get a bigger bonus. The COMMON item in the
|
||||
@@ -650,11 +653,12 @@ ask you where to write the file (there must be a writable directory in
|
||||
'runtimepath' for this).
|
||||
|
||||
The plugin has a default place where to look for spell files, on the Vim ftp
|
||||
server. If you want to use another location or another protocol, set the
|
||||
g:spellfile_URL variable to the directory that holds the spell files. The
|
||||
|netrw| plugin is used for getting the file, look there for the specific
|
||||
syntax of the URL. Example: >
|
||||
let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell'
|
||||
server. The protocol used is SSL (https://) for security. If you want to use
|
||||
another location or another protocol, set the g:spellfile_URL variable to the
|
||||
directory that holds the spell files. You can use http:// or ftp://, but you
|
||||
are taking a security risk then. The |netrw| plugin is used for getting the
|
||||
file, look there for the specific syntax of the URL. Example: >
|
||||
let g:spellfile_URL = 'https://ftp.nluug.nl/vim/runtime/spell'
|
||||
You may need to escape special characters.
|
||||
|
||||
The plugin will only ask about downloading a language once. If you want to
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 8.2. Last change: 2020 Feb 29
|
||||
*syntax.txt* For Vim version 8.2. Last change: 2020 Jul 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1214,11 +1214,13 @@ DESKTOP *desktop.vim* *ft-desktop-syntax*
|
||||
|
||||
Primary goal of this syntax file is to highlight .desktop and .directory files
|
||||
according to freedesktop.org standard:
|
||||
http://standards.freedesktop.org/desktop-entry-spec/latest/
|
||||
But actually almost none implements this standard fully. Thus it will
|
||||
highlight all Unix ini files. But you can force strict highlighting according
|
||||
to standard by placing this in your vimrc file: >
|
||||
:let enforce_freedesktop_standard = 1
|
||||
https://specifications.freedesktop.org/desktop-entry-spec/latest/
|
||||
To highlight nonstandard extensions that does not begin with X-, set >
|
||||
let g:desktop_enable_nonstd = 1
|
||||
Note that this may cause wrong highlight.
|
||||
To highlight KDE-reserved features, set >
|
||||
let g:desktop_enable_kde = 1
|
||||
g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
|
||||
|
||||
|
||||
DIFF *diff.vim*
|
||||
@@ -1401,7 +1403,7 @@ to your startup file.
|
||||
|
||||
EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax*
|
||||
|
||||
Two syntax highlighting files exists for Euphoria. One for Euphoria
|
||||
Two syntax highlighting files exist for Euphoria. One for Euphoria
|
||||
version 3.1.1, which is the default syntax highlighting file, and one for
|
||||
Euphoria version 4.0.5 or later.
|
||||
|
||||
@@ -1935,7 +1937,7 @@ new highlightings for the following groups.:
|
||||
Debug, DebugSpecial, DebugString, DebugBoolean, DebugType
|
||||
which are used for the statement itself, special characters used in debug
|
||||
strings, strings, boolean constants and types (this, super) respectively. I
|
||||
have opted to chose another background for those statements.
|
||||
have opted to choose another background for those statements.
|
||||
|
||||
Javadoc is a program that takes special comments out of Java program files and
|
||||
creates HTML pages. The standard configuration will highlight this HTML code
|
||||
@@ -4879,7 +4881,12 @@ term={attr-list} *attr-list* *highlight-term* *E418*
|
||||
have the same effect.
|
||||
"undercurl" is a curly underline. When "undercurl" is not possible
|
||||
then "underline" is used. In general "undercurl" and "strikethrough"
|
||||
is only available in the GUI. The color is set with |highlight-guisp|.
|
||||
are only available in the GUI and some terminals. The color is set
|
||||
with |highlight-guisp| or |highlight-ctermul|. You can try these
|
||||
termcap entries to make undercurl work in a terminal: >
|
||||
let &t_Cs = "\e[4:3m"
|
||||
let &t_Ce = "\e[4:0m"
|
||||
|
||||
|
||||
start={term-list} *highlight-start* *E422*
|
||||
stop={term-list} *term-list* *highlight-stop*
|
||||
@@ -5011,7 +5018,7 @@ ctermul={color-nr} *highlight-ctermul*
|
||||
console. Example, for reverse video: >
|
||||
:highlight Visual ctermfg=bg ctermbg=fg
|
||||
< Note that the colors are used that are valid at the moment this
|
||||
command are given. If the Normal group colors are changed later, the
|
||||
command is given. If the Normal group colors are changed later, the
|
||||
"fg" and "bg" colors will not be adjusted.
|
||||
|
||||
|
||||
|
||||
@@ -810,6 +810,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
'pyx' options.txt /*'pyx'*
|
||||
'pyxversion' options.txt /*'pyxversion'*
|
||||
'qe' options.txt /*'qe'*
|
||||
'qftf' options.txt /*'qftf'*
|
||||
'quickfixtextfunc' options.txt /*'quickfixtextfunc'*
|
||||
'quote motion.txt /*'quote*
|
||||
'quoteescape' options.txt /*'quoteescape'*
|
||||
'rdt' options.txt /*'rdt'*
|
||||
@@ -913,11 +915,13 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
'spellcapcheck' options.txt /*'spellcapcheck'*
|
||||
'spellfile' options.txt /*'spellfile'*
|
||||
'spelllang' options.txt /*'spelllang'*
|
||||
'spelloptions' options.txt /*'spelloptions'*
|
||||
'spellsuggest' options.txt /*'spellsuggest'*
|
||||
'spf' options.txt /*'spf'*
|
||||
'spl' options.txt /*'spl'*
|
||||
'splitbelow' options.txt /*'splitbelow'*
|
||||
'splitright' options.txt /*'splitright'*
|
||||
'spo' options.txt /*'spo'*
|
||||
'spr' options.txt /*'spr'*
|
||||
'sps' options.txt /*'sps'*
|
||||
'sr' options.txt /*'sr'*
|
||||
@@ -956,10 +960,12 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
't_&8' term.txt /*'t_&8'*
|
||||
't_8b' term.txt /*'t_8b'*
|
||||
't_8f' term.txt /*'t_8f'*
|
||||
't_8u' term.txt /*'t_8u'*
|
||||
't_@7' term.txt /*'t_@7'*
|
||||
't_AB' term.txt /*'t_AB'*
|
||||
't_AF' term.txt /*'t_AF'*
|
||||
't_AL' term.txt /*'t_AL'*
|
||||
't_AU' term.txt /*'t_AU'*
|
||||
't_BD' term.txt /*'t_BD'*
|
||||
't_BE' term.txt /*'t_BE'*
|
||||
't_CS' term.txt /*'t_CS'*
|
||||
@@ -1922,6 +1928,10 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
45.3 usr_45.txt /*45.3*
|
||||
45.4 usr_45.txt /*45.4*
|
||||
45.5 usr_45.txt /*45.5*
|
||||
46.1 usr_46.txt /*46.1*
|
||||
46.2 usr_46.txt /*46.2*
|
||||
46.3 usr_46.txt /*46.3*
|
||||
46.? usr_46.txt /*46.?*
|
||||
8g8 various.txt /*8g8*
|
||||
90.1 usr_90.txt /*90.1*
|
||||
90.2 usr_90.txt /*90.2*
|
||||
@@ -1969,6 +1979,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:<sfile> cmdline.txt /*:<sfile>*
|
||||
:<sflnum> cmdline.txt /*:<sflnum>*
|
||||
:<slnum> cmdline.txt /*:<slnum>*
|
||||
:<stack> cmdline.txt /*:<stack>*
|
||||
:= various.txt /*:=*
|
||||
:> change.txt /*:>*
|
||||
:? cmdline.txt /*:?*
|
||||
@@ -2587,6 +2598,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:lbuffer quickfix.txt /*:lbuffer*
|
||||
:lc editing.txt /*:lc*
|
||||
:lcd editing.txt /*:lcd*
|
||||
:lcd- editing.txt /*:lcd-*
|
||||
:lch editing.txt /*:lch*
|
||||
:lchdir editing.txt /*:lchdir*
|
||||
:lcl quickfix.txt /*:lcl*
|
||||
@@ -2894,6 +2906,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:put change.txt /*:put*
|
||||
:pw editing.txt /*:pw*
|
||||
:pwd editing.txt /*:pwd*
|
||||
:pwd-verbose editing.txt /*:pwd-verbose*
|
||||
:py if_pyth.txt /*:py*
|
||||
:py3 if_pyth.txt /*:py3*
|
||||
:py3do if_pyth.txt /*:py3do*
|
||||
@@ -3197,6 +3210,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:syn-file-remarks syntax.txt /*:syn-file-remarks*
|
||||
:syn-files syntax.txt /*:syn-files*
|
||||
:syn-fold syntax.txt /*:syn-fold*
|
||||
:syn-foldlevel syntax.txt /*:syn-foldlevel*
|
||||
:syn-include syntax.txt /*:syn-include*
|
||||
:syn-iskeyword syntax.txt /*:syn-iskeyword*
|
||||
:syn-keepend syntax.txt /*:syn-keepend*
|
||||
@@ -3277,6 +3291,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:tags tagsrch.txt /*:tags*
|
||||
:tc if_tcl.txt /*:tc*
|
||||
:tcd editing.txt /*:tcd*
|
||||
:tcd- editing.txt /*:tcd-*
|
||||
:tch editing.txt /*:tch*
|
||||
:tchdir editing.txt /*:tchdir*
|
||||
:tcl if_tcl.txt /*:tcl*
|
||||
@@ -3633,6 +3648,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
<sfile> cmdline.txt /*<sfile>*
|
||||
<sflnum> cmdline.txt /*<sflnum>*
|
||||
<slnum> cmdline.txt /*<slnum>*
|
||||
<stack> cmdline.txt /*<stack>*
|
||||
<xCSI> intro.txt /*<xCSI>*
|
||||
<xDown> term.txt /*<xDown>*
|
||||
<xEnd> term.txt /*<xEnd>*
|
||||
@@ -3878,10 +3894,14 @@ E101 diff.txt /*E101*
|
||||
E102 diff.txt /*E102*
|
||||
E103 diff.txt /*E103*
|
||||
E104 digraph.txt /*E104*
|
||||
E1042 vim9.txt /*E1042*
|
||||
E105 mbyte.txt /*E105*
|
||||
E1050 vim9.txt /*E1050*
|
||||
E107 eval.txt /*E107*
|
||||
E108 eval.txt /*E108*
|
||||
E109 eval.txt /*E109*
|
||||
E1092 vim9.txt /*E1092*
|
||||
E1094 vim9.txt /*E1094*
|
||||
E11 cmdline.txt /*E11*
|
||||
E110 eval.txt /*E110*
|
||||
E111 eval.txt /*E111*
|
||||
@@ -4249,6 +4269,7 @@ E448 various.txt /*E448*
|
||||
E449 eval.txt /*E449*
|
||||
E45 message.txt /*E45*
|
||||
E452 eval.txt /*E452*
|
||||
E453 syntax.txt /*E453*
|
||||
E455 print.txt /*E455*
|
||||
E456 print.txt /*E456*
|
||||
E457 print.txt /*E457*
|
||||
@@ -4681,6 +4702,7 @@ E855 autocmd.txt /*E855*
|
||||
E858 eval.txt /*E858*
|
||||
E859 eval.txt /*E859*
|
||||
E86 windows.txt /*E86*
|
||||
E860 textprop.txt /*E860*
|
||||
E861 popup.txt /*E861*
|
||||
E862 eval.txt /*E862*
|
||||
E863 popup.txt /*E863*
|
||||
@@ -4723,6 +4745,7 @@ E897 eval.txt /*E897*
|
||||
E898 channel.txt /*E898*
|
||||
E899 eval.txt /*E899*
|
||||
E90 message.txt /*E90*
|
||||
E900 eval.txt /*E900*
|
||||
E901 channel.txt /*E901*
|
||||
E902 channel.txt /*E902*
|
||||
E903 channel.txt /*E903*
|
||||
@@ -4829,6 +4852,7 @@ E994 eval.txt /*E994*
|
||||
E995 eval.txt /*E995*
|
||||
E996 eval.txt /*E996*
|
||||
E997 popup.txt /*E997*
|
||||
E998 eval.txt /*E998*
|
||||
E999 repeat.txt /*E999*
|
||||
EX intro.txt /*EX*
|
||||
EXINIT starting.txt /*EXINIT*
|
||||
@@ -5049,6 +5073,7 @@ SessionLoad-variable starting.txt /*SessionLoad-variable*
|
||||
SessionLoadPost autocmd.txt /*SessionLoadPost*
|
||||
ShellCmdPost autocmd.txt /*ShellCmdPost*
|
||||
ShellFilterPost autocmd.txt /*ShellFilterPost*
|
||||
SigUSR1 autocmd.txt /*SigUSR1*
|
||||
SourceCmd autocmd.txt /*SourceCmd*
|
||||
SourcePost autocmd.txt /*SourcePost*
|
||||
SourcePre autocmd.txt /*SourcePre*
|
||||
@@ -5440,20 +5465,7 @@ bars help.txt /*bars*
|
||||
base_font_name_list mbyte.txt /*base_font_name_list*
|
||||
basic.vim syntax.txt /*basic.vim*
|
||||
beep options.txt /*beep*
|
||||
beos-colors os_beos.txt /*beos-colors*
|
||||
beos-compiling os_beos.txt /*beos-compiling*
|
||||
beos-dragndrop os_beos.txt /*beos-dragndrop*
|
||||
beos-fonts os_beos.txt /*beos-fonts*
|
||||
beos-general os_beos.txt /*beos-general*
|
||||
beos-gui os_beos.txt /*beos-gui*
|
||||
beos-launch os_beos.txt /*beos-launch*
|
||||
beos-meta os_beos.txt /*beos-meta*
|
||||
beos-mouse os_beos.txt /*beos-mouse*
|
||||
beos-perl os_beos.txt /*beos-perl*
|
||||
beos-timeout os_beos.txt /*beos-timeout*
|
||||
beos-unicode os_beos.txt /*beos-unicode*
|
||||
beos-utf8 os_beos.txt /*beos-utf8*
|
||||
beos-vimdir os_beos.txt /*beos-vimdir*
|
||||
beos os_beos.txt /*beos*
|
||||
better-python-interface version7.txt /*better-python-interface*
|
||||
beval_bufnr-variable eval.txt /*beval_bufnr-variable*
|
||||
beval_col-variable eval.txt /*beval_col-variable*
|
||||
@@ -5792,6 +5804,7 @@ coding-style develop.txt /*coding-style*
|
||||
col() eval.txt /*col()*
|
||||
coldfusion.vim syntax.txt /*coldfusion.vim*
|
||||
collapse tips.txt /*collapse*
|
||||
collate-variable eval.txt /*collate-variable*
|
||||
color-xterm syntax.txt /*color-xterm*
|
||||
coloring syntax.txt /*coloring*
|
||||
colortest.vim syntax.txt /*colortest.vim*
|
||||
@@ -6332,6 +6345,7 @@ filetype.txt filetype.txt /*filetype.txt*
|
||||
filetypedetect-changed version6.txt /*filetypedetect-changed*
|
||||
filetypes filetype.txt /*filetypes*
|
||||
filewritable() eval.txt /*filewritable()*
|
||||
filler-lines windows.txt /*filler-lines*
|
||||
filter change.txt /*filter*
|
||||
filter() eval.txt /*filter()*
|
||||
find-manpage usr_12.txt /*find-manpage*
|
||||
@@ -6354,6 +6368,7 @@ fixed-7.1 version7.txt /*fixed-7.1*
|
||||
fixed-7.2 version7.txt /*fixed-7.2*
|
||||
fixed-7.3 version7.txt /*fixed-7.3*
|
||||
fixed-7.4 version7.txt /*fixed-7.4*
|
||||
flatten() eval.txt /*flatten()*
|
||||
flexwiki.vim syntax.txt /*flexwiki.vim*
|
||||
float-e eval.txt /*float-e*
|
||||
float-functions usr_41.txt /*float-functions*
|
||||
@@ -6910,6 +6925,7 @@ getjumplist() eval.txt /*getjumplist()*
|
||||
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*
|
||||
getline() eval.txt /*getline()*
|
||||
getloclist() eval.txt /*getloclist()*
|
||||
getmarklist() eval.txt /*getmarklist()*
|
||||
getmatches() eval.txt /*getmatches()*
|
||||
getmousepos() eval.txt /*getmousepos()*
|
||||
getpid() eval.txt /*getpid()*
|
||||
@@ -6917,6 +6933,7 @@ getpos() eval.txt /*getpos()*
|
||||
getqflist() eval.txt /*getqflist()*
|
||||
getqflist-examples quickfix.txt /*getqflist-examples*
|
||||
getreg() eval.txt /*getreg()*
|
||||
getreginfo() eval.txt /*getreginfo()*
|
||||
getregtype() eval.txt /*getregtype()*
|
||||
getscript pi_getscript.txt /*getscript*
|
||||
getscript-autoinstall pi_getscript.txt /*getscript-autoinstall*
|
||||
@@ -6987,6 +7004,7 @@ gstar pattern.txt /*gstar*
|
||||
gt tabpage.txt /*gt*
|
||||
gtk-css gui_x11.txt /*gtk-css*
|
||||
gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors*
|
||||
gtk3-slow gui_x11.txt /*gtk3-slow*
|
||||
gu change.txt /*gu*
|
||||
gugu change.txt /*gugu*
|
||||
gui gui.txt /*gui*
|
||||
@@ -7115,6 +7133,7 @@ highlight-changed version4.txt /*highlight-changed*
|
||||
highlight-cterm syntax.txt /*highlight-cterm*
|
||||
highlight-ctermbg syntax.txt /*highlight-ctermbg*
|
||||
highlight-ctermfg syntax.txt /*highlight-ctermfg*
|
||||
highlight-ctermul syntax.txt /*highlight-ctermul*
|
||||
highlight-default syntax.txt /*highlight-default*
|
||||
highlight-font syntax.txt /*highlight-font*
|
||||
highlight-groups syntax.txt /*highlight-groups*
|
||||
@@ -8182,6 +8201,7 @@ no_plugin_maps filetype.txt /*no_plugin_maps*
|
||||
nocombine syntax.txt /*nocombine*
|
||||
non-greedy pattern.txt /*non-greedy*
|
||||
non-zero-arg eval.txt /*non-zero-arg*
|
||||
none-function_argument eval.txt /*none-function_argument*
|
||||
none-variable eval.txt /*none-variable*
|
||||
normal-index index.txt /*normal-index*
|
||||
not-compatible usr_01.txt /*not-compatible*
|
||||
@@ -8549,6 +8569,7 @@ quickfix-title quickfix.txt /*quickfix-title*
|
||||
quickfix-valid quickfix.txt /*quickfix-valid*
|
||||
quickfix-window quickfix.txt /*quickfix-window*
|
||||
quickfix-window-ID quickfix.txt /*quickfix-window-ID*
|
||||
quickfix-window-function quickfix.txt /*quickfix-window-function*
|
||||
quickfix.txt quickfix.txt /*quickfix.txt*
|
||||
quickref quickref.txt /*quickref*
|
||||
quickref.txt quickref.txt /*quickref.txt*
|
||||
@@ -8599,6 +8620,7 @@ read-messages insert.txt /*read-messages*
|
||||
read-only-share editing.txt /*read-only-share*
|
||||
read-stdin version5.txt /*read-stdin*
|
||||
readdir() eval.txt /*readdir()*
|
||||
readdirex() eval.txt /*readdirex()*
|
||||
readfile() eval.txt /*readfile()*
|
||||
readline.vim syntax.txt /*readline.vim*
|
||||
recording repeat.txt /*recording*
|
||||
@@ -8607,6 +8629,7 @@ recovery recover.txt /*recovery*
|
||||
recursive_mapping map.txt /*recursive_mapping*
|
||||
redo undo.txt /*redo*
|
||||
redo-register undo.txt /*redo-register*
|
||||
reduce() eval.txt /*reduce()*
|
||||
ref intro.txt /*ref*
|
||||
reference intro.txt /*reference*
|
||||
reference_toc help.txt /*reference_toc*
|
||||
@@ -8771,6 +8794,7 @@ search-offset pattern.txt /*search-offset*
|
||||
search-pattern pattern.txt /*search-pattern*
|
||||
search-range pattern.txt /*search-range*
|
||||
search-replace change.txt /*search-replace*
|
||||
searchcount() eval.txt /*searchcount()*
|
||||
searchdecl() eval.txt /*searchdecl()*
|
||||
searchforward-variable eval.txt /*searchforward-variable*
|
||||
searchpair() eval.txt /*searchpair()*
|
||||
@@ -8801,7 +8825,9 @@ setloclist() eval.txt /*setloclist()*
|
||||
setmatches() eval.txt /*setmatches()*
|
||||
setpos() eval.txt /*setpos()*
|
||||
setqflist() eval.txt /*setqflist()*
|
||||
setqflist-action eval.txt /*setqflist-action*
|
||||
setqflist-examples quickfix.txt /*setqflist-examples*
|
||||
setqflist-what eval.txt /*setqflist-what*
|
||||
setreg() eval.txt /*setreg()*
|
||||
settabvar() eval.txt /*settabvar()*
|
||||
settabwinvar() eval.txt /*settabwinvar()*
|
||||
@@ -8861,11 +8887,13 @@ slow-terminal term.txt /*slow-terminal*
|
||||
socket-interface channel.txt /*socket-interface*
|
||||
sort() eval.txt /*sort()*
|
||||
sorting change.txt /*sorting*
|
||||
sound-functions usr_41.txt /*sound-functions*
|
||||
sound_clear() eval.txt /*sound_clear()*
|
||||
sound_playevent() eval.txt /*sound_playevent()*
|
||||
sound_playfile() eval.txt /*sound_playfile()*
|
||||
sound_stop() eval.txt /*sound_stop()*
|
||||
soundfold() eval.txt /*soundfold()*
|
||||
source-vim9-script usr_46.txt /*source-vim9-script*
|
||||
space intro.txt /*space*
|
||||
spec-customizing pi_spec.txt /*spec-customizing*
|
||||
spec-how-to-use-it pi_spec.txt /*spec-how-to-use-it*
|
||||
@@ -9129,10 +9157,12 @@ t_%i term.txt /*t_%i*
|
||||
t_&8 term.txt /*t_&8*
|
||||
t_8b term.txt /*t_8b*
|
||||
t_8f term.txt /*t_8f*
|
||||
t_8u term.txt /*t_8u*
|
||||
t_@7 term.txt /*t_@7*
|
||||
t_AB term.txt /*t_AB*
|
||||
t_AF term.txt /*t_AF*
|
||||
t_AL term.txt /*t_AL*
|
||||
t_AU term.txt /*t_AU*
|
||||
t_BD term.txt /*t_BD*
|
||||
t_BE term.txt /*t_BE*
|
||||
t_CS term.txt /*t_CS*
|
||||
@@ -9504,6 +9534,7 @@ terminal-unix terminal.txt /*terminal-unix*
|
||||
terminal-use terminal.txt /*terminal-use*
|
||||
terminal-window terminal.txt /*terminal-window*
|
||||
terminal.txt terminal.txt /*terminal.txt*
|
||||
terminalprops() eval.txt /*terminalprops()*
|
||||
terminfo term.txt /*terminfo*
|
||||
termresponse-variable eval.txt /*termresponse-variable*
|
||||
test-functions usr_41.txt /*test-functions*
|
||||
@@ -9560,6 +9591,7 @@ text-prop-changes textprop.txt /*text-prop-changes*
|
||||
text-prop-functions textprop.txt /*text-prop-functions*
|
||||
text-prop-intro textprop.txt /*text-prop-intro*
|
||||
text-properties textprop.txt /*text-properties*
|
||||
text-property-functions usr_41.txt /*text-property-functions*
|
||||
textlock eval.txt /*textlock*
|
||||
textprop textprop.txt /*textprop*
|
||||
textprop.txt textprop.txt /*textprop.txt*
|
||||
@@ -9679,6 +9711,7 @@ usr_42.txt usr_42.txt /*usr_42.txt*
|
||||
usr_43.txt usr_43.txt /*usr_43.txt*
|
||||
usr_44.txt usr_44.txt /*usr_44.txt*
|
||||
usr_45.txt usr_45.txt /*usr_45.txt*
|
||||
usr_46.txt usr_46.txt /*usr_46.txt*
|
||||
usr_90.txt usr_90.txt /*usr_90.txt*
|
||||
usr_toc.txt usr_toc.txt /*usr_toc.txt*
|
||||
utf-8 mbyte.txt /*utf-8*
|
||||
@@ -9700,6 +9733,7 @@ v:charconvert_from eval.txt /*v:charconvert_from*
|
||||
v:charconvert_to eval.txt /*v:charconvert_to*
|
||||
v:cmdarg eval.txt /*v:cmdarg*
|
||||
v:cmdbang eval.txt /*v:cmdbang*
|
||||
v:collate eval.txt /*v:collate*
|
||||
v:completed_item eval.txt /*v:completed_item*
|
||||
v:count eval.txt /*v:count*
|
||||
v:count1 eval.txt /*v:count1*
|
||||
@@ -9898,6 +9932,7 @@ val-variable eval.txt /*val-variable*
|
||||
valgrind debug.txt /*valgrind*
|
||||
values() eval.txt /*values()*
|
||||
var-functions usr_41.txt /*var-functions*
|
||||
variable-scope eval.txt /*variable-scope*
|
||||
variables eval.txt /*variables*
|
||||
various various.txt /*various*
|
||||
various-cmds various.txt /*various-cmds*
|
||||
@@ -9971,11 +10006,16 @@ vim.vim syntax.txt /*vim.vim*
|
||||
vim7 version7.txt /*vim7*
|
||||
vim8 version8.txt /*vim8*
|
||||
vim9 vim9.txt /*vim9*
|
||||
vim9-declaration vim9.txt /*vim9-declaration*
|
||||
vim9-declarations usr_46.txt /*vim9-declarations*
|
||||
vim9-differences vim9.txt /*vim9-differences*
|
||||
vim9-export vim9.txt /*vim9-export*
|
||||
vim9-gotchas vim9.txt /*vim9-gotchas*
|
||||
vim9-import vim9.txt /*vim9-import*
|
||||
vim9-rationale vim9.txt /*vim9-rationale*
|
||||
vim9-scopes vim9.txt /*vim9-scopes*
|
||||
vim9-script vim9.txt /*vim9-script*
|
||||
vim9-script-intro usr_46.txt /*vim9-script-intro*
|
||||
vim9-types vim9.txt /*vim9-types*
|
||||
vim9.txt vim9.txt /*vim9.txt*
|
||||
vim9script vim9.txt /*vim9script*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2020 May 24
|
||||
*terminal.txt* For Vim version 8.2. Last change: 2020 Jun 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -113,7 +113,8 @@ sent to the job running in the terminal. For example, to make F1 switch
|
||||
to Terminal-Normal mode: >
|
||||
tnoremap <F1> <C-W>N
|
||||
You can use Esc, but you need to make sure it won't cause other keys to
|
||||
break (cursor keys start with an Esc, so they may break): >
|
||||
break (cursor keys start with an Esc, so they may break), this probably only
|
||||
works in the GUI: >
|
||||
tnoremap <Esc> <C-W>N
|
||||
set notimeout ttimeout timeoutlen=100
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*testing.txt* For Vim version 8.2. Last change: 2020 Apr 10
|
||||
*testing.txt* For Vim version 8.2. Last change: 2020 Jul 11
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -165,6 +165,10 @@ test_override({name}, {val}) *test_override()*
|
||||
terminals
|
||||
no_wait_return set the "no_wait_return" flag. Not restored
|
||||
with "ALL".
|
||||
ui_delay time in msec to use in ui_delay(); overrules a
|
||||
wait time of up to 3 seconds for messages
|
||||
term_props reset all terminal properties when the version
|
||||
string is detected
|
||||
ALL clear all overrides ({val} is not used)
|
||||
|
||||
"starting" is to be used when a test should behave like
|
||||
@@ -260,7 +264,8 @@ assert_equal({expected}, {actual} [, {msg}])
|
||||
< Will result in a string to be added to |v:errors|:
|
||||
test.vim line 12: Expected 'foo' but got 'bar' ~
|
||||
|
||||
Can also be used as a |method|: >
|
||||
Can also be used as a |method|, the base is passed as the
|
||||
second argument: >
|
||||
mylist->assert_equal([1, 2, 3])
|
||||
|
||||
< *assert_equalfile()*
|
||||
@@ -290,8 +295,23 @@ assert_exception({error} [, {msg}]) *assert_exception()*
|
||||
|
||||
assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
|
||||
Run {cmd} and add an error message to |v:errors| if it does
|
||||
NOT produce an error. Also see |assert-return|.
|
||||
When {error} is given it must match in |v:errmsg|.
|
||||
NOT produce an error or when {error} is not found in the
|
||||
error message. Also see |assert-return|.
|
||||
|
||||
When {error} is a string it must be found literally in the
|
||||
first reported error. Most often this will be the error code,
|
||||
including the colon, e.g. "E123:". >
|
||||
assert_fails('bad cmd', 'E987:')
|
||||
<
|
||||
When {error} is a |List| with one or two strings, these are
|
||||
used as patterns. The first pattern is matched against the
|
||||
first reported error: >
|
||||
assert_fails('cmd', ['E987:.*expected bool'])
|
||||
< The second pattern, if present, is matched against the last
|
||||
reported error. To only match the last error use an empty
|
||||
string for the first error: >
|
||||
assert_fails('cmd', ['', 'E987:'])
|
||||
<
|
||||
Note that beeping is not considered an error, and some failing
|
||||
commands only beep. Use |assert_beeps()| for those.
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ prop_list({lnum} [, {props}]) *prop_list()*
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_list()
|
||||
<
|
||||
*prop_remove()* *E968*
|
||||
*prop_remove()* *E968* *E860*
|
||||
prop_remove({props} [, {lnum} [, {lnum-end}]])
|
||||
Remove a matching text property from line {lnum}. When
|
||||
{lnum-end} is given, remove matching text properties from line
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 May 26
|
||||
*todo.txt* For Vim version 8.2. Last change: 2020 Jul 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -38,22 +38,40 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Include src/po/vim.pot ?
|
||||
|
||||
Vim9 script:
|
||||
Making everything work:
|
||||
- possible memory leak in test_vim9_func through compile_nested_function.
|
||||
- memory leaks in test_vim9_expr
|
||||
- memory leaks in test_vim9_script
|
||||
- Test that a script-local function in Vim9 script cannot be deleted.
|
||||
- Make "true" and "false" work in vim9script
|
||||
- more items in https://github.com/vim/vim/issues/6507
|
||||
- More "goto failed" with check for trylevel.
|
||||
- memory leak in test_vim9_script
|
||||
- Check that when sourcing a Vim9 script, only the global items can be used.
|
||||
- :put with a "=" register argument doesn't work, need to find the expression
|
||||
and compile it. (#6397)
|
||||
- At the script level, keep script variables local to the block they are
|
||||
declared in? Need to remember what variables were declared and delete them
|
||||
when leaving the block.
|
||||
- Implement { } block at the script level.
|
||||
- need to check type when a declaration specifies a type: #6507
|
||||
let nr: number = 'asdf'
|
||||
- Make map() give an error if the resulting type is wrong.
|
||||
Add mapnew() to create a new List/Dict for the result, which can have a
|
||||
different value type.
|
||||
- Implement "export {one, two three}".
|
||||
- ISN_CHECKTYPE could use check_argtype()
|
||||
- Slice of list: [1, 2, 3][1:2].
|
||||
- give error for variable name:
|
||||
let p = function('NoSuchFunc')
|
||||
- Give runtime error if function argument is wrong.
|
||||
def Increment(nr: number)
|
||||
range(3)->Increment()
|
||||
- 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.
|
||||
- Support passing v:none to use the default argument value. (#6504)
|
||||
- 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: let [var, var] = expr
|
||||
- Compile: for [key, value] in items(map)
|
||||
- Assignment to dict doesn't work:
|
||||
let ret: dict<string> = #{}
|
||||
@@ -64,15 +82,13 @@ Making everything work:
|
||||
- Compile redir to local variable: var_redir_start().
|
||||
- Compile builtin functions that access local variables:
|
||||
islocked()
|
||||
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
|
||||
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
|
||||
- Expand `=expr` in :mkspell
|
||||
- possible memory leak in test_vim9_func through compile_nested_function.
|
||||
- memory leaks in test_vim9_expr
|
||||
- memory leaks in test_vim9_script
|
||||
- memory leaks in test_vim9_cmd
|
||||
- When evaluating constants for script variables, some functions could work:
|
||||
has('asdf'), len('string')
|
||||
- Support type for ":let"/":const" at script level for Vim9 script.
|
||||
(Ben Jackson, #5671)
|
||||
Can we share the code from ex_let_const() between direct execution and
|
||||
compiling?
|
||||
- Implement "as Name" in "import Item as Name from ..."
|
||||
- Disallow unlet for local/script/imported vars
|
||||
- Make "++nr" work.
|
||||
- Make closures work:
|
||||
@@ -82,16 +98,18 @@ Making everything work:
|
||||
- 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".
|
||||
- Implement command modifiers, such as "silent". (#6530)
|
||||
New syntax and functionality:
|
||||
Improve error checking:
|
||||
- "echo Func()" is an error if Func() does not return anything.
|
||||
Test:
|
||||
- Using a Vim9 autoload script (functions must be global).
|
||||
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.
|
||||
- better implementation for partial and tests for that.
|
||||
- Make "g:imported = Export.exported" work in Vim9 script.
|
||||
- Make Foo.Bar() work to call the dict function. (#5676)
|
||||
- Check that import in legacy script works and puts item in s:
|
||||
- Error in any command in "vim9script" aborts sourcing.
|
||||
- Find a way to test expressions in legacy and Vim9 script without duplication
|
||||
- Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script
|
||||
@@ -128,19 +146,16 @@ Further improvements:
|
||||
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
|
||||
|
||||
Popup windows:
|
||||
- Can put focus in another window using API and "drop". (#6077)
|
||||
- With some sequence get get hidden finished terminal buffer. (#5768)
|
||||
Cannot close popup terminal (#5744)
|
||||
Buffer can't be wiped, gets status "aF". (#5764)
|
||||
Is buf->nwindows incorrect?
|
||||
- popup_clear() and popup_close() should close the terminal popup, and
|
||||
make the buffer hidden. #5745
|
||||
- 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.?
|
||||
- Fire some autocommand event after a new popup window was created and
|
||||
positioned? PopupNew? Could be used to set some options or move it out of
|
||||
the way. (#5737)
|
||||
However, it may also cause trouble, changing the popup of another plugin.
|
||||
- Add a way to use popup_menu() synchronously: instead of invoking the
|
||||
callback, return the choice. (Ben Jackson, #6534)
|
||||
- Use popup (or popup menu) for command line completion
|
||||
- When using a popup for the info of a completion menu, and there is not
|
||||
enough space, let the popup overlap with the menu. (#4544)
|
||||
@@ -154,8 +169,6 @@ Popup windows:
|
||||
- Figure out the size and position better if wrapping inserts indent
|
||||
|
||||
Text properties:
|
||||
- Patch to fix that split / join does not update properties properly (Axel
|
||||
Forsman, #5839) Alternative: #5875.
|
||||
- :goto does not go to the right place when test properties are present.
|
||||
(#5930)
|
||||
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
|
||||
@@ -197,6 +210,10 @@ Terminal debugger:
|
||||
with another Vim instance.
|
||||
|
||||
Terminal emulator window:
|
||||
- No support for underline color, t_8u.
|
||||
- When in terminal-Normal mode when the job finishes, the cursor jumps to the
|
||||
end but the window is not updated. This only happens when typing "a".
|
||||
:term bash -c "for V in {0..5}; do echo $V; sleep 1; done"
|
||||
- When started with ":terminal ++close" and the shell exits but there is a
|
||||
background process, the window remains open, because the channel still
|
||||
exists (and output still shows). Perhaps close the window when an explicit
|
||||
@@ -236,10 +253,27 @@ Terminal emulator window:
|
||||
conversions.
|
||||
|
||||
Error numbers available:
|
||||
E453, E454, E489, E610, E611, E653, E856, E857, E861, E900
|
||||
E610, E611, E653
|
||||
|
||||
Patch to fix that typval related code is spread out. (Yegappan Lakshmanan,
|
||||
#6093)
|
||||
Remove SPACE_IN_FILENAME ? It is only used for completion.
|
||||
|
||||
Patch to use collaction based sorting. (Christian Brabandt, #6229)
|
||||
|
||||
Can we detect true color support? https://gist.github.com/XVilka/8346728
|
||||
Try setting a color then request the current color, like using t_u7.
|
||||
|
||||
Check out PR #543 (Roland Puntaier).
|
||||
Patch for multi-byte characters in langmap and applying a mapping on them.
|
||||
(Christian Brabandt, 2015 Jun 12, update July 25)
|
||||
Is this the right solution? Need to cleanup langmap behavior:
|
||||
- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
|
||||
a copy-buffer, only when langmap is appropriate for the current mode. Then
|
||||
check for mapping and let gotchars() work on the copy-buffer.
|
||||
- Remove LANGMAP_ADJUST() in other parts of the code. Make sure the mode is
|
||||
covered by the above change.
|
||||
So that replaying the register doesn't use keymap/langmap and still does the
|
||||
same thing.
|
||||
Also see #737: langmap not applied to replaying recording.
|
||||
|
||||
Buffer autocommands are a bit inconsistent. Add a separate set of
|
||||
autocommands for the buffer lifecycle:
|
||||
@@ -250,39 +284,35 @@ autocommands for the buffer lifecycle:
|
||||
BufIsRenamed (after buffer ID gets another name)
|
||||
The buffer list and windows are locked, no changes possible
|
||||
|
||||
Make it possible to map (console and GUI): #6457
|
||||
<C-[> 0x27 or is this <Esc> ?
|
||||
<C-\> 0x28
|
||||
<C-]> 0x29
|
||||
<C-^> 0x30
|
||||
<C-_> 0x31
|
||||
|
||||
Patch for Template string: #4634
|
||||
Have another look at the implementation.
|
||||
|
||||
Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
|
||||
replace this:
|
||||
let left = GetLeftFunc()
|
||||
let right = GetRightFunc()
|
||||
let res = left < right ? lower : left == right ? equal : upper
|
||||
by:
|
||||
let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper
|
||||
Patch to make :q work with local arglist. (Christian Brabandt, #6286)
|
||||
|
||||
Lua: updating wrong buffer when using newly created, unloaded buffer.
|
||||
(#6539)
|
||||
|
||||
When "+ register is set then "" points to it. If another Vim grabs the "+
|
||||
register, then "" doesn't contain anything. Make it still follow "+.
|
||||
(#6435)
|
||||
|
||||
Patch to fix drawing error with DirectX. (James Grant, #5688)
|
||||
Causes flicker on resizing.
|
||||
|
||||
Patch to support ipv6 for channel. (Ozaki Kiichi, #5893)
|
||||
|
||||
Patch to explain use of "%" in :!. (David Briscoe, #5591)
|
||||
|
||||
Patch to improve Windows terminal support. (Nobuhiro Takasaki, #5546)
|
||||
Ready to include.
|
||||
|
||||
Patch to improve use of Lua path. (Prabir Shrestha, #6098)
|
||||
|
||||
Patch to make exepath() work better on MS-Windows. (#6115)
|
||||
|
||||
Patch to add "-d" to xxd. (#5616)
|
||||
|
||||
Patch for the Haiku port: #5961
|
||||
|
||||
Patch to add Turkish manual. (Emir Sarı, #5641)
|
||||
|
||||
Patch to add lua sleep function. (Prabir Shrestha, #6057)
|
||||
Alternative: use vim.call and vim.fn: #6063
|
||||
|
||||
Patch to add getmarklist() (Yegappan, #6032)
|
||||
|
||||
Patch to support different color for undercurl in cterm.
|
||||
(Timur Celik, #6011)
|
||||
|
||||
Patch to support cindent option to handle pragmas differently.
|
||||
(Max Rumpf, #5468)
|
||||
|
||||
Patch to add ":syn foldlevel" to use fold level further down the line.
|
||||
(Brad King, 2016 Oct 19, update 2017 Jan 30, now in #6087)
|
||||
Causes flicker on resizing. Workaround from Ken Takata.
|
||||
How about only setting the attribute when part of the Vim window is offscreen?
|
||||
|
||||
File marks merging has duplicates since 7.4.1925. (Ingo Karkat, #5733)
|
||||
|
||||
@@ -293,27 +323,21 @@ Motif: Build on Ubuntu can't enter any text in dialog text fields.
|
||||
Running test_gui and test_gui_init with Motif sometimes kills the window
|
||||
manager. Problem with Motif?
|
||||
|
||||
Patch to add :argdedupe. (Nir Lichtman, #6235)
|
||||
|
||||
:map output does not clear the reset of the command line.
|
||||
(#5623, also see #5962)
|
||||
|
||||
Patch to properly break CJK lines: Anton Kochkov, #3875
|
||||
Flag in 'formatoptions' is not used in the tests.
|
||||
|
||||
Patch to add 'vtp' option. (#5344)
|
||||
Needs better docs. Is there a better name?
|
||||
|
||||
Patch to add argument to trim() to only trim start or end of a string.
|
||||
(Yegappan, #6126)
|
||||
Problem with auto-formatting - inserting space and putting cursor before added
|
||||
character. (#6154)
|
||||
|
||||
undo result wrong: Masato Nishihata, #4798
|
||||
|
||||
Patch for Template string: #4491. New pull: #4634
|
||||
Ready to include? Review the code.
|
||||
|
||||
When 'lazyredraw' is set sometimes the title is not updated.
|
||||
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
|
||||
|
||||
Patch to delete BeOS code. (#5817) Anyone who wants to keep it?
|
||||
Regexp to search for duplicate lines does not work correctly:
|
||||
/\(^.*\n\)\1 (Chris Morgan, #6239)
|
||||
|
||||
With bash ":make" does not set v:shell_error. Possible solution: set
|
||||
'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994
|
||||
@@ -330,6 +354,9 @@ When changing the crypt key the buffer should be considered modified.
|
||||
Like when changing 'fileformat'. Save the old key in save_file_ff().
|
||||
(Ninu-Ciprian Marginean)
|
||||
|
||||
Patch to implement the vimtutor with a plugin: #6414
|
||||
Was originally writtten by Felipe Morales.
|
||||
|
||||
Strange sequence of BufWipeout and BufNew events while doing omni-complete.
|
||||
(Paul Jolly, #5656)
|
||||
Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
|
||||
@@ -340,21 +367,25 @@ Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
|
||||
BufWinenter event not fired when saving unnamed buffer. (Paul Jolly, #5655)
|
||||
Another spurious BufDelete. (Dani Dickstein, #5701)
|
||||
|
||||
Patch to add function to return the text used in the quickfix window.
|
||||
(Yegappan, #5465)
|
||||
|
||||
Patch to add readdirex() (Ken Takata, #5619)
|
||||
|
||||
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.
|
||||
|
||||
Implement completion for "breakadd". Should expand the second argument, e.g.
|
||||
"func", and then function names after ":breakadd func". Including
|
||||
script-local functions.
|
||||
|
||||
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
|
||||
Dec 19)
|
||||
|
||||
Patch to add an option to enable/disable VTP. (Nobuhiro Takasaki, #5344)
|
||||
Should have three values: empty, "off", "on". Name it 'winterm'?
|
||||
|
||||
Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
|
||||
May 20)
|
||||
Also put :argadd commands at the start for all buffers, so that their order
|
||||
@@ -365,9 +396,6 @@ Also #5326: netrw buffers are not restored.
|
||||
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)
|
||||
|
||||
Patch to make ":verbose pwd" show the scope of the directory. (Takuya
|
||||
Fujiwara, #5469)
|
||||
|
||||
Completion mixes results from the current buffer with tags and other files.
|
||||
Happens when typing CTRL-N while still searching for results. E.g., type "b_"
|
||||
in terminal.c and then CTRL-N twice.
|
||||
@@ -377,19 +405,13 @@ Should do current file first and not split it up when more results are found.
|
||||
Undo history wrong when ":next file" re-uses a buffer. (#5426)
|
||||
ex_next() should pass flag to do_argfile(), then to do_ecmd().
|
||||
|
||||
Patch to add "note" type to quickfix. (#5527) Missing tests.
|
||||
Help for ":argadd fname" says that if "fname" is already in the argument list
|
||||
that entry is used. But instead it's always added. (#6210)
|
||||
Add flag AL_FIND_ADD, if there is one argument find it in the list.
|
||||
|
||||
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
|
||||
(#4087)
|
||||
|
||||
FR: add search_status(), the current values displayed for search (current
|
||||
match, total matches). (#5631)
|
||||
Patch to provide search stats in a variable, so that it can be used in the
|
||||
statusline. (Fujiwara Takuya, #4446)
|
||||
|
||||
Patch for ambiguous width characters in libvterm on MS-Windows 10.
|
||||
(Nobuhiro Takasaki, #4411)
|
||||
|
||||
behavior of i_CTRl-R_CTRL-R differs from documentation. (Paul Desmond Parker,
|
||||
#5771)
|
||||
|
||||
@@ -397,10 +419,11 @@ behavior of i_CTRl-R_CTRL-R differs from documentation. (Paul Desmond Parker,
|
||||
goes to any buffer, and then :bnext skips help buffers, since they are
|
||||
unlisted. (#4478)
|
||||
|
||||
Patch to include reduce() function. (#5481)
|
||||
|
||||
Statusline highlighting error, off by one. (#5599)
|
||||
|
||||
":find" with 'path' set to "data*" does not find files, while completion does
|
||||
find them. (Max Kukartsev, #6218)
|
||||
|
||||
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
|
||||
|
||||
Universal solution to detect if t_RS is working, using cursor position.
|
||||
@@ -415,6 +438,9 @@ support combining characters. (Charles Campbell) Also #4687
|
||||
|
||||
"--cleanFOO" does not result in an error. (#5537)
|
||||
|
||||
Output from assert_equalfile() doesn't give a hint about what's different.
|
||||
Assuming the files are text, print the line with the difference.
|
||||
|
||||
Add "t" action to settagstack(): truncate and add new entries. (#5405)
|
||||
|
||||
When 'relativenumber' is set the line just below a diff change doesn't get
|
||||
@@ -434,7 +460,7 @@ When using :packadd files under "later" are not used, which is inconsistent
|
||||
with packages under "start". (xtal8, #1994)
|
||||
|
||||
Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320)
|
||||
Or make "v" prefix work?
|
||||
Better: use the "z" prefix. or ]t) and [t(.
|
||||
|
||||
Modeless selection doesn't work in gvim. (#4783)
|
||||
Caused by patch 8.1.1534.
|
||||
@@ -442,8 +468,7 @@ Caused by patch 8.1.1534.
|
||||
Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
|
||||
fit. (Kevin Lawler, #4457)
|
||||
|
||||
Patch to add per-tabpage and per-window previous directory: "lcd -" and "tcd
|
||||
-". (Yegappan Lakshmanan, #4362)
|
||||
Current position in the changelist should be local to the buffer. (#2173)
|
||||
|
||||
Does not build with MinGW out of the box:
|
||||
- _stat64 is not defined, need to use "struct stat" in vim.h
|
||||
@@ -455,14 +480,6 @@ Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
|
||||
|
||||
Display messed up with matchparen, wrapping and scrolling. (#5638)
|
||||
|
||||
Patch to configure BUILD_DATE for reproducible builds. (James McCoy, #513)
|
||||
|
||||
Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
|
||||
|
||||
Patch to support "0o" for octal numbers. (Ken Takata, #5304)
|
||||
|
||||
Patch to enable IXON, avoid that CTRL-S stops terminal output. (#5775)
|
||||
|
||||
When getting a focus event halfway a mapping this aborts the mapping. E.g.
|
||||
when "qq" is mapped and after the first "q" the mouse is moved outside of the
|
||||
gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the
|
||||
@@ -491,21 +508,12 @@ Can be used to update highlighting. #3127 #5181
|
||||
Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
|
||||
|
||||
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
|
||||
Updated 2016 Jun 10, #858 Update 2017 Mar 28: use <buffer>
|
||||
Updated 2016 Jun 10, #858 Update 2017 Mar 28: use <buffer>.
|
||||
Better use ":bufgrep" ?
|
||||
|
||||
Errors found with random data:
|
||||
heap-buffer-overflow in alist_add (#2472)
|
||||
|
||||
Patch to support CamelCase for spell checking: See a lower-to-upper case
|
||||
change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235)
|
||||
patch for 'spellcamelcase' option: spellcheck each CamelCased word.
|
||||
(Ben Tucker, 2016 Dec 2)
|
||||
|
||||
Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
|
||||
Update 2016 Jun 10, #861
|
||||
|
||||
Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140)
|
||||
|
||||
Improve fallback for menu translations, to avoid having to create lots of
|
||||
files that source the actual file. E.g. menu_da_de -> menu_da
|
||||
Include part of #3242?
|
||||
@@ -521,24 +529,9 @@ Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
|
||||
window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg,
|
||||
#5443)
|
||||
|
||||
Patch for multi-byte characters in langmap and applying a mapping on them.
|
||||
(Christian Brabandt, 2015 Jun 12, update July 25)
|
||||
Is this the right solution? Need to cleanup langmap behavior:
|
||||
- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
|
||||
a copy-buffer, only when langmap is appropriate for the current mode. Then
|
||||
check for mapping and let gotchars() work on the copy-buffer.
|
||||
- Remove LANGMAP_ADJUST() in other parts of the code. Make sure the mode is
|
||||
covered by the above change.
|
||||
So that replaying the register doesn't use keymap/langmap and still does the
|
||||
same thing. Remarks on PR #543 (Roland Puntaier).
|
||||
Also see #737: langmap not applied to replaying recording.
|
||||
|
||||
Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use
|
||||
t:diffexpr_option t:diffopt_option? (#4782)
|
||||
|
||||
v:register isn't reset early enough, may be used by next command.
|
||||
(Andy Massimino, #5294, possible fix in #5305)
|
||||
|
||||
Internal diff doesn't handle binary file like external diff does. (Mike
|
||||
Williams, 2018 Oct 30)
|
||||
|
||||
@@ -562,10 +555,10 @@ Give a few examples. (#4288)
|
||||
Opening a file with --remote-tab-silent that matches 'wildignore' does not
|
||||
work, results in (E479: No match". (#4610)
|
||||
|
||||
Patch for this (Tristan Konolige, #1011, only adds the option, no implem.):
|
||||
7 Add an option to add one pixel column to the character width? Lucida
|
||||
Console italic is wider than the normal font ("d" overlaps with next char).
|
||||
Opposite of 'linespace': 'columnspace'.
|
||||
Patch for this (Tristan Konolige, #1011, only added the option, no implem.)
|
||||
|
||||
Bug: script written with "-W scriptout" contains Key codes, while the script
|
||||
read with "-s scriptin" expects escape codes. Probably "scriptout" needs to
|
||||
@@ -618,16 +611,9 @@ Should we include some part of pull request #4505, not increment changedtick
|
||||
in some cases? E.g. for ":write" when the changed flag was already off, the
|
||||
buffer didn't change at all.
|
||||
|
||||
Patch to add getreginfo() and setreg() with an option to set the unnamed
|
||||
register "", So that registers can be saved and fully restored.
|
||||
(Andy Massimino, 2018 Aug 24, #3370)
|
||||
|
||||
Line numbers in profile are off when function was defined with ":execute".
|
||||
(Daniel Hahler, #4511)
|
||||
|
||||
Add a way to create an empty, hidden buffer. Like doing ":new|hide".
|
||||
":let buf = bufcreate('name')
|
||||
|
||||
Session file contains absolute paths when "curdir" is removed form
|
||||
'sessionoptions', making it impossible to have a session with a relative path.
|
||||
(#4450)
|
||||
@@ -642,9 +628,6 @@ C syntax: {} inside () causes following {} to be highlighted as error.
|
||||
Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this
|
||||
added?
|
||||
|
||||
Patch to add a flatten() function. #3676. Check that the doc explains the
|
||||
maxdepth argument (applies to the input "recursiveness").
|
||||
|
||||
Add test for urxvt mouse codes. Also test that mouse coordinates can be
|
||||
negative. (see #4326)
|
||||
|
||||
@@ -715,11 +698,6 @@ punctuation is repeated. (Smylers, 2018 Nov 17, #3621)
|
||||
|
||||
ml_get error: (Israel Chauca Fuentes, 2018 Oct 17, #3550).
|
||||
|
||||
Patch to add more info to OptionSet. Should mention what triggered the change
|
||||
":set", ":setlocal", ":setglobal", "modeline"; and the old global value.
|
||||
#4118. Proposed implementation: 2019 Mar 27.
|
||||
Updated 2019 May 25.
|
||||
|
||||
Using single wide base character with double wide composing character gives
|
||||
drawing errors. Fill up the base character? (Dominique, #4328)
|
||||
|
||||
@@ -770,26 +748,13 @@ Neovim uses "eob:X" in 'fillchars'.
|
||||
Sourceforge Vim pages still have content, redirect from empty page.
|
||||
Check for PHP errors. (Wayne Davison, 2018 Oct 26)
|
||||
|
||||
Patch to support ":tag <tagkind> <tagname>". (emmrk, 2018 May 7, #2871)
|
||||
Use something like ":tag {kind}/{tagname}".
|
||||
Not ready to include.
|
||||
|
||||
Problem with Visual yank when 'linebreak' and 'showbreak' are set.
|
||||
Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
|
||||
Nov 17) Asked about this, Dec 22. Christian will have a look.
|
||||
|
||||
Patch for larger icons in installer. (#978) Still not good.
|
||||
|
||||
Patch to fix that using "5gj" starting inside a closed fold does not work on
|
||||
screen lines but on text lines. (Julius Hulsmann, #4095) Lacks a test.
|
||||
|
||||
Patch to implement 'diffref' option. (#3535)
|
||||
Easier to use a 'diffmaster' option, is the extra complexity needed?
|
||||
Not ready to include.
|
||||
|
||||
Patch to specify color for cterm=underline and cterm=undercurl, like "guisp".
|
||||
Patch #2405 does something like this, but in the wrong way.
|
||||
|
||||
home_replace() uses $HOME instead of "homedir". (Cesar Martins, 2018 Aug 9)
|
||||
|
||||
When the status line uses term_gettitle(), it does not get updated when the
|
||||
@@ -817,7 +782,7 @@ Further xdiff changes:
|
||||
Difference between two regexp engines: #3373
|
||||
|
||||
Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
|
||||
What is the practical use for this?
|
||||
What is the practical use for this? Need an example.
|
||||
|
||||
When the last line wraps, selecting with the mouse below that line only
|
||||
includes the first screen line. (2018 Aug 23, #3368)
|
||||
@@ -841,8 +806,6 @@ when adding a sign for every quickfix entry. (#4557)
|
||||
Win32 key codes are messy. Mike Williams tried to fix that, but now old
|
||||
mappings no longer work. Create a new terminal for the better solution?
|
||||
|
||||
Patch to "fix" 'visualbell'. Add option to set delay? (#1789)
|
||||
|
||||
Script generated by :mksession does not work well if there are windows with
|
||||
modified buffers
|
||||
change "silent only" into "silent only!"
|
||||
@@ -932,9 +895,6 @@ deleting autocmds, not when adding them.
|
||||
|
||||
Alternative manpager.vim. (Enno, 2018 Jan 5, #2529)
|
||||
|
||||
Delete all the specific stuff for the Borland compiler? (#3374)
|
||||
Patch in #3377 (Thomas Dziedzic)
|
||||
|
||||
With 'foldmethod' "indent" and appending an empty line, what follows isn't
|
||||
included in the existing fold. Deleting the empty line and undo fixes it.
|
||||
(Oleg Koshovetc, 2018 Jul 15, #3214)
|
||||
@@ -1099,6 +1059,7 @@ The ":move" command does not honor closed folds. (Ryan Lue, #2351)
|
||||
|
||||
Patch to fix increment/decrement not working properly when 'virtualedit' is
|
||||
set. (Hirohito Higashi, 2016 Aug 1, #923)
|
||||
Was this fixed?
|
||||
|
||||
Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)
|
||||
|
||||
@@ -1130,7 +1091,7 @@ Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
|
||||
|
||||
Creating a partial with an autoload function is confused about the "self"
|
||||
attribute of the function. For an unknown function assume "self" and make
|
||||
that optiona? (Bjorn Linse, 2017 Aug 5)
|
||||
that optional? (Bjorn Linse, 2017 Aug 5)
|
||||
|
||||
Cindent: returning a structure has more indent for the second item.
|
||||
(Sam Pagenkopf, 2017 Sep 14, #2090)
|
||||
@@ -1168,8 +1129,6 @@ Or is this not an actual problem?
|
||||
|
||||
Better TeX indent file. (Christian Brabandt, 2017 May 3)
|
||||
|
||||
Patch to use a separate code for BS on Windows. (Linwei, #1823)
|
||||
|
||||
Use gvimext.dll from the nightly build? (Issue #249)
|
||||
|
||||
'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
|
||||
@@ -1271,20 +1230,13 @@ Make a function to check for function-like type?
|
||||
Screen updated delayed when using CTRL-O u in Insert mode.
|
||||
(Barlik, #1191) Perhaps because status message?
|
||||
|
||||
Implement named arguments for functions:
|
||||
func Foo(start, count = 1 all = 1)
|
||||
Implement named arguments for functions with optional arguments:
|
||||
func Foo(start, count = 1, all = 1)
|
||||
call Foo(12, all = 0)
|
||||
|
||||
Add a command to take a range of lines, filter them and put the output
|
||||
somewhere else. :{range}copy {dest} !cmd
|
||||
|
||||
Patch to fix that empty first tab is not in session.
|
||||
(Hirohito Higashi, 2016 Nov 25, #1282)
|
||||
|
||||
Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
|
||||
Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
|
||||
Update Aug 2017: #1954
|
||||
|
||||
The TermResponse event is not triggered when a plugin has set 'eventignore' to
|
||||
"all". Netrw does this. (Gary Johnson, 2017 Jan 24)
|
||||
Postpone the event until 'eventignore' is reset.
|
||||
@@ -1448,11 +1400,6 @@ Undo message is not always properly displayed. Patch by Ken Takata, 2013 oct
|
||||
3. Doesn't work properly according to Yukihiro Nakadaira.
|
||||
Also see #1635.
|
||||
|
||||
Patch for systemlist(), add empty item. (thinca, Sep 30, #1135)
|
||||
Add an argument to choose binary or non-binary (like readfile()), when omitted
|
||||
use the current behavior.
|
||||
Include the test.
|
||||
|
||||
When 'keywordprg' starts with ":" the argument is still escaped as a shell
|
||||
command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
|
||||
|
||||
@@ -1462,9 +1409,6 @@ Probably list of keystrokes, with some annotations for mode changes.
|
||||
Could store in logfile to be able to analyse it with an external command.
|
||||
E.g. to see when's the last time a plugin command was used.
|
||||
|
||||
execute() cannot be used with command completion. (Daniel Hahler, 2016 Oct 1,
|
||||
#1141)
|
||||
|
||||
cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
|
||||
|
||||
:map X may print invalid data. (Nikolay Pavlov, 2017 Jul 3, #1816)
|
||||
@@ -1477,14 +1421,9 @@ synced. (Ryan Carney, 2016 Sep 14)
|
||||
Syntax highlighting for messages with RFC3339 timestamp (#946)
|
||||
Did maintainer reply?
|
||||
|
||||
Patch to avoid problem with special characters in file name.
|
||||
(Shougo, 2016 Sept 19, #1099) Not finished?
|
||||
|
||||
ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
|
||||
Also with latest version.
|
||||
|
||||
Cannot delete a file with square brackets with delete(). (#696)
|
||||
|
||||
Completion for input() does not expand environment variables. (chdiza, 2016
|
||||
Jul 25, #948)
|
||||
|
||||
@@ -1493,14 +1432,9 @@ names, shell commands and the like. (Kikuchan, 2010 Oct 14)
|
||||
Assume the system converts between the actual encoding of the filesystem to
|
||||
the system encoding (usually utf-8).
|
||||
|
||||
'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
|
||||
|
||||
MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
|
||||
Otherwise task flickers in taskbar.
|
||||
|
||||
Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26)
|
||||
Also for ":@.".
|
||||
|
||||
Repeating 'opfunc' in a function only works once. (Tarmean, 2016 Jul 15, #925)
|
||||
|
||||
Have a way to get the call stack, in a function and from an exception.
|
||||
@@ -1509,14 +1443,10 @@ Have a way to get the call stack, in a function and from an exception.
|
||||
Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
|
||||
times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
|
||||
|
||||
Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806)
|
||||
|
||||
Filetype plugin for awk. (Doug Kearns, 2016 Sep 5)
|
||||
|
||||
Patch to improve map documentation. Issue #799.
|
||||
|
||||
Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)
|
||||
|
||||
We can use '. to go to the last change in the current buffer, but how about
|
||||
the last change in any buffer? Can we use ', (, is next to .)?
|
||||
|
||||
@@ -1531,8 +1461,6 @@ Reject the value? #710.
|
||||
When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
|
||||
Because of using the initial buffer? (Dun Peal, 2016 May 12)
|
||||
|
||||
Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11)
|
||||
|
||||
Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
|
||||
No test, needs some work to include.
|
||||
|
||||
@@ -1573,11 +1501,6 @@ Mechelynck) Perhaps use exists("::tearoff") to check?
|
||||
Use vim.vim syntax highlighting for help file examples, but without ":" in
|
||||
'iskeyword' for syntax.
|
||||
|
||||
Patch to make "%:h:h" return "." instead of the full path.
|
||||
(Coot, 2016 Jan 24, #592)
|
||||
|
||||
Remove SPACE_IN_FILENAME ? What could possibly go wrong?
|
||||
|
||||
When command names are very long :command output is difficult to read. Use a
|
||||
maximum for the column width? (#871)
|
||||
Patcy by varmanishant, 2016 Jun 18, #876
|
||||
@@ -1607,20 +1530,10 @@ If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe,
|
||||
Patch to avoid redrawing tabline when the popup menu is visible.
|
||||
(Christian Brabandt, 2016 Jan 28)
|
||||
|
||||
Patch to show search statistics. (Christian Brabandt, 2016 Jul 22)
|
||||
|
||||
When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
|
||||
restore the mode properly. (Andrew Stewart, 2016 Apr 20)
|
||||
Do not trigger the event?
|
||||
|
||||
Using ":windo" to set options in all windows has the side effect that it
|
||||
changes the window layout and the current window. Make a variant that saves
|
||||
and restores. Use in the matchparen plugin.
|
||||
Perhaps we can use ":windo <restore> {cmd}"?
|
||||
Patch to add <restore> to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan
|
||||
6, 2nd message)
|
||||
Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}".
|
||||
|
||||
Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
|
||||
Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
|
||||
https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
|
||||
@@ -1649,10 +1562,6 @@ Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
|
||||
|
||||
Comparing nested structures with "==" uses a different comparator than when
|
||||
comparing individual items.
|
||||
Also, "'' == 0" evaluates to true, which isn't nice.
|
||||
Add "===" to have a strict comparison (type and value match).
|
||||
Add "==*" (?) to have a value match, but no automatic conversion, and v:true
|
||||
equals 1 and 1.0, v:false equals 0 and 0.0.?
|
||||
|
||||
Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
|
||||
|
||||
@@ -1823,8 +1732,6 @@ arguments.
|
||||
|
||||
Problem with transparent and matchgroup. Issue #475
|
||||
|
||||
Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6)
|
||||
|
||||
Spell files use a latin single quote. Unicode also has another single quote:
|
||||
0x2019. (Ron Aaron, 2014 Apr 4)
|
||||
New OpenOffice spell files support this with ICONV. But they are not
|
||||
@@ -1851,8 +1758,11 @@ from?
|
||||
Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
|
||||
2014 Jun 8)
|
||||
|
||||
Include a plugin manager with Vim? Neobundle seems to be the best currently.
|
||||
Include a plugin manager with Vim? vim-plug seems to be the best currently:
|
||||
https://github.com/junegunn/vim-plug.
|
||||
Also Vundle: https://github.com/gmarik/vundle
|
||||
Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin
|
||||
package feature.
|
||||
Long message about this from ZyX, 2014 Mar 23. And following replies.
|
||||
Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
|
||||
User view:
|
||||
@@ -1907,6 +1817,7 @@ instead. (Samuel Ferencik, 2013 Sep 28)
|
||||
|
||||
Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4)
|
||||
Remark on the docs. Should not be a compile time feature. But then what?
|
||||
Also see #2034.
|
||||
|
||||
Completion of ":e" is ":earlier", should be ":edit". Complete to the matching
|
||||
command instead of doing this alphabetically. (Mikel Jorgensen)
|
||||
@@ -1968,6 +1879,10 @@ Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}.
|
||||
|
||||
Exception caused by argument of return is not caught by try/catch.
|
||||
(David Barnett, 2013 Nov 19)
|
||||
Bug in try/catch: return with invalid compare throws error that isn't caught.
|
||||
(ZyX, 2011 Jan 26)
|
||||
try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
|
||||
try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
|
||||
|
||||
Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt,
|
||||
2013 Mar 19, later message)
|
||||
@@ -2003,6 +1918,8 @@ process that is running. It might actually be some other program, e.g. after
|
||||
a reboot.
|
||||
|
||||
patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6)
|
||||
Patch to add "combine" to :syntax, combines highlight attributes. (Nate
|
||||
Soares, 2012 Dec 3)
|
||||
|
||||
Syntax update problem in one buffer opened in two windows, bottom window is
|
||||
not correctly updated. (Paul Harris, 2012 Feb 27)
|
||||
@@ -2040,13 +1957,6 @@ Szamotulski, 2012 Nov 8)
|
||||
Session file creation: 'autochdir' causes trouble. Keep it off until after
|
||||
loading all files.
|
||||
|
||||
MS-Windows resizing problems:
|
||||
- Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
|
||||
20. Uses getWindowRect() instead of GetWindowPlacement()
|
||||
- Win32: When the taskbar is at the top of the screen creating the tabbar
|
||||
causes the window to move unnecessarily. (William E. Skeith III, 2012 Jan
|
||||
12) Patch: 2012 Jan 13 Needs more work (2012 Feb 2)
|
||||
|
||||
'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23)
|
||||
|
||||
Patch to append regexp to tag commands to make it possible to select one out
|
||||
@@ -2172,11 +2082,6 @@ Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
|
||||
BT regexp engine: After trying a \@> match and failing, submatches are not
|
||||
cleared. See test64.
|
||||
|
||||
Patch to make "z=" work when 'spell' is off. Does this have nasty side
|
||||
effects? (Christian Brabandt, 2012 Aug 5, Update 2013 Aug 12)
|
||||
Would also need to do this for spellbadword() and spellsuggest().
|
||||
https://github.com/chrisbra/vim-mq-patches/blob/master/enable_spellchecking
|
||||
|
||||
On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
|
||||
64 bits value. Change all number options to use nropt_T and define it to the
|
||||
right type.
|
||||
@@ -2195,12 +2100,6 @@ doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18)
|
||||
|
||||
Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19)
|
||||
|
||||
maparg() does not show the <script> flag. When temporarily changing a
|
||||
mapping, how to restore the script ID?
|
||||
|
||||
Bug in try/catch: return with invalid compare throws error that isn't caught.
|
||||
(ZyX, 2011 Jan 26)
|
||||
|
||||
When setting a local option value from the global value, add a script ID that
|
||||
indicates this, so that ":verbose set" can give a hint. Check with options in
|
||||
the help file.
|
||||
@@ -2389,9 +2288,6 @@ Add local time at start of --startuptime output.
|
||||
Requires configure check for localtime().
|
||||
Use format year-month-day hr:min:sec.
|
||||
|
||||
Patch to add "combine" to :syntax, combines highlight attributes. (Nate
|
||||
Soares, 2012 Dec 3)
|
||||
|
||||
Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4)
|
||||
|
||||
Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
|
||||
@@ -2586,6 +2482,9 @@ Sergey Khorev)
|
||||
|
||||
Consider making YankRing or something else that keeps a list of yanked text
|
||||
part of standard Vim. The "1 to "9 registers are not sufficient.
|
||||
6 When yanking into the unnamed registers several times, somehow make the
|
||||
previous contents also available (like it's done for deleting). What
|
||||
register names to use? g"1, g"2, etc.?
|
||||
|
||||
After doing "su" $HOME can be the old user's home, thus ~root/file is not
|
||||
correct. Don't use it in the swap file.
|
||||
@@ -2792,10 +2691,6 @@ Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
|
||||
In the swapfile dialog, add a H(elp) option that gives more info about what
|
||||
each choice does. Similar to ":help swap-exists-choices"
|
||||
|
||||
try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
|
||||
|
||||
try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
|
||||
|
||||
":tab help" always opens a new tab, while ":help" re-uses an existing window.
|
||||
Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
|
||||
|
||||
@@ -3365,7 +3260,7 @@ Quickfix/Location List:
|
||||
":grep" and ":helpgrep".
|
||||
More generic solution: support a filter (e.g., by calling a function).
|
||||
7 Add a command that goes back to the position from before jumping to the
|
||||
first quickfix location. ":cbefore"?
|
||||
first quickfix location.
|
||||
|
||||
Vi incompatibility:
|
||||
- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7)
|
||||
@@ -3402,7 +3297,6 @@ Vi incompatibility:
|
||||
7 The ":map" command output overwrites the command. Perhaps it should keep
|
||||
the ":map" when it's used without arguments?
|
||||
7 CTRL-L is not the end of a section? It is for Posix! Make it an option.
|
||||
7 Implement 'prompt' option. Init to off when stdin is not a tty.
|
||||
7 Add a way to send an email for a crashed edit session. Create a file when
|
||||
making changes (containing name of the swap file), delete it when writing
|
||||
the file. Supply a program that can check for crashed sessions (either
|
||||
@@ -3580,8 +3474,6 @@ GUI:
|
||||
Solaris 2.6. (Marley)
|
||||
9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim
|
||||
is started from, causes empty lines below the cmdline. (raf)
|
||||
8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key
|
||||
should not be used to trigger a menu (like the Win32 version).
|
||||
8 When setting 'langmenu', it should be effective immediately. Store both
|
||||
the English and the translated text in the menu structure. Re-generate
|
||||
the translation when 'langmenu' has changed.
|
||||
@@ -3620,10 +3512,6 @@ GUI:
|
||||
When the "+0+0" is omitted it works.
|
||||
8 When starting an external command, and 'guipty' set, BS and DEL are mixed
|
||||
up. Set erase character somehow?
|
||||
8 A dead circumflex followed by a space should give the '^' character
|
||||
(Rommel). Look how xterm does this.
|
||||
Also: Bednar has some code for dead key handling.
|
||||
Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya)
|
||||
8 The compose key doesn't work properly (Cepas). Both for Win32 and X11.
|
||||
7 The cursor in an inactive window should be hollow. Currently it's not
|
||||
visible.
|
||||
@@ -3720,17 +3608,8 @@ Macintosh:
|
||||
|
||||
|
||||
"Small" problems:
|
||||
- Can't disable terminal flow control, to enable the use of CTRL-S and
|
||||
CTRL-Q. Add an option for it?
|
||||
- When using e_secure in do_one_cmd() mention the command being executed,
|
||||
otherwise it's not clear where it comes from.
|
||||
- When the quickfix window is open and executing ":echo 'hello'" using the
|
||||
Command-line window, the text is immediately removed by the redrawing.
|
||||
(Michael Henry, 2008 Nov 1)
|
||||
Generic solution: When redrawing while there is a message on the
|
||||
cmdline, don't erase the display but draw over the existing text.
|
||||
Other solution, redraw after closing the cmdline window, before executing
|
||||
the command.
|
||||
9 For Turkish vim_tolower() and vim_toupper() also need to use utf_
|
||||
functions for characters below 0x80. (Sertacyildiz)
|
||||
9 When the last edited file is a help file, using '0 in a new Vim doesn't
|
||||
@@ -4190,8 +4069,6 @@ Spell checking:
|
||||
- Considering Hunspell 1.1.4:
|
||||
What does MAXNGRAMSUGS do?
|
||||
Is COMPLEXPREFIXES necessary when we have flags for affixes?
|
||||
- Support spelling words in CamelCase as if they were two separate words.
|
||||
Requires some option to enable it. (Timothy Knox)
|
||||
- There is no Finnish spell checking file. For openoffice Voikko is now
|
||||
used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
|
||||
(Teemu Likonen)
|
||||
@@ -4566,8 +4443,6 @@ Vim script language:
|
||||
7 Execute a function with standard option values. No need to save and
|
||||
restore option values. Especially useful for new options. Problem: how
|
||||
to avoid a performance penalty (esp. for string options)?
|
||||
8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and
|
||||
":let &t_xx =". Useful for making portable mappings.
|
||||
- range for ":exec", pass it on to the executed command. (Webb)
|
||||
8 ":{range}source": source the lines from the current file.
|
||||
You can already yank lines and use :@" to execute them.
|
||||
@@ -4798,8 +4673,6 @@ Messages:
|
||||
- Delete message after new command has been entered and have waited for key.
|
||||
Perhaps after ten seconds?
|
||||
- Make message history available in "msg" variables: msg1, msg2, .. msg9.
|
||||
8 When reading from stdin allow suppressing the "reading from stdin"
|
||||
message.
|
||||
9 Check handling of overwriting of messages and delays:
|
||||
Very wrong: errors while redrawing cause endless loop.
|
||||
When switching to another file and screen scrolls because of the long
|
||||
@@ -4978,9 +4851,6 @@ Win32 GUI:
|
||||
|
||||
|
||||
GUI:
|
||||
8 Make inputdialog() work for Photon, Amiga.
|
||||
- <C--> cannot be mapped. Should be possible to recognize this as a
|
||||
normal "-" with the Ctrl modifier.
|
||||
7 Implement ":popup" for other systems than Windows.
|
||||
8 Implement ":tearoff" for other systems than Win32 GUI.
|
||||
6 Implement ":untearoff": hide a torn-off menu.
|
||||
@@ -6090,9 +5960,6 @@ Registers:
|
||||
8 Add put command that overwrites existing text. Should also work for
|
||||
blocks. Useful to move text around in a table. Works like using "R ^R r"
|
||||
for every line.
|
||||
6 When yanking into the unnamed registers several times, somehow make the
|
||||
previous contents also available (like it's done for deleting). What
|
||||
register names to use? g"1, g"2, etc.?
|
||||
- When appending to a register, also report the total resulting number of
|
||||
lines. Or just say "99 more lines yanked", add the "more".
|
||||
- When inserting a register in Insert mode with CTRL-R, don't insert comment
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_11.txt* For Vim version 8.2. Last change: 2020 Jan 17
|
||||
*usr_11.txt* For Vim version 8.2. Last change: 2020 Jul 08
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -211,7 +211,7 @@ will automatically delete it:
|
||||
- The flag that the file was modified is not set.
|
||||
- The process is not running.
|
||||
|
||||
You can programatically deal with this situation with the |FileChangedShell|
|
||||
You can programmatically deal with this situation with the |FileChangedShell|
|
||||
autocommand event.
|
||||
|
||||
|
||||
@@ -256,7 +256,7 @@ O Open the file readonly. Use this when you just want to view the file and
|
||||
|
||||
E Edit the file anyway. Use this with caution! If the file is being edited
|
||||
in another Vim, you might end up with two versions of the file. Vim will
|
||||
try to warn you when this happens, but better be safe then sorry.
|
||||
try to warn you when this happens, but better be safe than sorry.
|
||||
|
||||
R Recover the file from the swap file. Use this if you know that the swap
|
||||
file contains changes that you want to recover.
|
||||
|
||||
@@ -434,7 +434,7 @@ redefined without changing the search pattern.
|
||||
|
||||
/\f\+
|
||||
|
||||
The "\f" items stands for file name characters. Thus this matches a sequence
|
||||
The "\f" item stands for file name characters. Thus this matches a sequence
|
||||
of characters that can be a file name.
|
||||
Which characters can be part of a file name depends on the system you are
|
||||
using. On MS-Windows, the backslash is included, on Unix it is not. This is
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2020 Jun 01
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2020 Jun 13
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -41,10 +41,11 @@ prefer. And you can use any colon command in it (commands that start with a
|
||||
specific file type. A complicated macro can be defined by a separate Vim
|
||||
script file. You can think of other uses yourself.
|
||||
|
||||
Note: if you are familiar with Python, you can find a comparison between
|
||||
Python and Vim script here, with pointers to other documents:
|
||||
https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
|
||||
|
||||
If you are familiar with Python, you can find a comparison between
|
||||
Python and Vim script here, with pointers to other documents:
|
||||
https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
|
||||
And if you are familiar with Javascript:
|
||||
https://w0rp.com/blog/post/vim-script-for-the-javascripter/
|
||||
|
||||
Let's start with a simple example: >
|
||||
|
||||
@@ -98,6 +99,8 @@ and the value of the variable i. Since i is one, this will print:
|
||||
Then there is the ":let i += 1" command. This does the same thing as
|
||||
":let i = i + 1". This adds one to the variable i and assigns the new value
|
||||
to the same variable.
|
||||
Note: this is how it works in legacy Vim script, which is what we discuss in
|
||||
this file. In Vim9 script it's a bit different, see |usr_46.txt|.
|
||||
|
||||
The example was given to explain the commands, but would you really want to
|
||||
make such a loop, it can be written much more compact: >
|
||||
@@ -650,6 +653,7 @@ List manipulation: *list-functions*
|
||||
min() minimum value in a List
|
||||
count() count number of times a value appears in a List
|
||||
repeat() repeat a List multiple times
|
||||
flatten() flatten a List
|
||||
|
||||
Dictionary manipulation: *dict-functions*
|
||||
get() get an entry without an error for a wrong key
|
||||
@@ -1147,6 +1151,7 @@ Various: *various-functions*
|
||||
getimstatus() check if IME status is active
|
||||
interrupt() interrupt script execution
|
||||
windowsversion() get MS-Windows version
|
||||
terminalprops() properties of the terminal
|
||||
|
||||
libcall() call a function in an external library
|
||||
libcallnr() idem, returning a number
|
||||
@@ -1155,6 +1160,7 @@ Various: *various-functions*
|
||||
undotree() return the state of the undo tree
|
||||
|
||||
getreg() get contents of a register
|
||||
getreginfo() get information about a register
|
||||
getregtype() get type of a register
|
||||
setreg() set contents and type of a register
|
||||
reg_executing() return the name of the register being executed
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
*usr_45.txt* For Vim version 8.2. Last change: 2008 Nov 15
|
||||
*usr_45.txt* For Vim version 8.2. Last change: 2020 Jun 11
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
Select your language
|
||||
Select your language (locale)
|
||||
|
||||
|
||||
The messages in Vim can be given in several languages. This chapter explains
|
||||
@@ -15,7 +15,7 @@ in various languages is explained.
|
||||
|45.4| Editing files with a different encoding
|
||||
|45.5| Entering language text
|
||||
|
||||
Next chapter: |usr_90.txt| Installing Vim
|
||||
Next chapter: |usr_46.txt| Write plugins using Vim9 script
|
||||
Previous chapter: |usr_44.txt| Your own syntax highlighted
|
||||
Table of contents: |usr_toc.txt|
|
||||
|
||||
@@ -408,6 +408,6 @@ Don't type the spaces. See |i_CTRL-V_digit| for the details.
|
||||
|
||||
==============================================================================
|
||||
|
||||
Next chapter: |usr_90.txt| Installing Vim
|
||||
Next chapter: |usr_46.txt| Write plugins using Vim9 script
|
||||
|
||||
Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
192
runtime/doc/usr_46.txt
Normal file
192
runtime/doc/usr_46.txt
Normal file
@@ -0,0 +1,192 @@
|
||||
*usr_46.txt* For Vim version 8.2. Last change: 2020 Jun 14
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
Write plugins using Vim9 script
|
||||
|
||||
|
||||
The Vim9 script language is used for writing plugins, especially larger ones
|
||||
that use multiple files. This chapter explains how to split up a plugin into
|
||||
modules, import and export items and keep the rest local.
|
||||
|
||||
|46.1| Introduction
|
||||
|46.2| Variable declarations
|
||||
|46.3| Functions and types
|
||||
|46.?| Using a Vim9 script from legacy script
|
||||
|
||||
Next chapter: |usr_90.txt| Installing Vim
|
||||
Previous chapter: |usr_45.txt| Select your language (locale)
|
||||
Table of contents: |usr_toc.txt|
|
||||
|
||||
==============================================================================
|
||||
*46.1* Introduction *vim9-script-intro*
|
||||
|
||||
Vim9 script was designed to make it easier to write large Vim scripts. It
|
||||
looks more like other script languages, especially Typescript. Also,
|
||||
functions are compiled into instructions that can be executed quickly. This
|
||||
makes Vim9 script a lot faster, up to a 100 times.
|
||||
|
||||
The basic idea is that a script file has items that are private, only used
|
||||
inside the script file, and items that are exported, used outside of the
|
||||
script file. The exported items can then be used by scripts that import them.
|
||||
That makes very clear what is defined where.
|
||||
|
||||
Let's start with an example, a script that exports one function and has one
|
||||
private function: >
|
||||
|
||||
vim9script " This indicates a Vim9 script file,
|
||||
|
||||
export def GetMessage(): string
|
||||
let result = ''
|
||||
...
|
||||
result = GetPart(count)
|
||||
...
|
||||
return result
|
||||
enddef
|
||||
|
||||
def GetPart(nr: number): string
|
||||
if nr == 4
|
||||
return 'yes'
|
||||
else
|
||||
return 'no'
|
||||
endif
|
||||
enddef
|
||||
|
||||
The `vim9script` command must be the very first command in the file. Without
|
||||
it Vim will assume legacy script syntax.
|
||||
|
||||
The `export def GetMessage(): string` line starts with `export`, meaning that
|
||||
this function can be imported and called by other scripts. The line
|
||||
`def GetPart(...` does not start with `export`, this is a script-local
|
||||
function, it can only be used inside this script file.
|
||||
|
||||
In the `export def GetMessage(): string` line you will notice the colon and
|
||||
the return type. Vim9 functions, defined with `def`, require specifying the
|
||||
type of arguments and the return type. That way Vim can compile the code
|
||||
efficiently. The GetPart function defines an argument "nr" of type "number".
|
||||
|
||||
Notice that the assignment `result = GetPart(count)` does not use the `let`
|
||||
command. That is explained in the next section.
|
||||
|
||||
==============================================================================
|
||||
*46.2* Variable declarations *vim9-declarations*
|
||||
|
||||
In Vim9 script variables are declared once with a `:let` or `:const` command.
|
||||
Assigning a value is done without `:let` and it is not possible to `:unlet`
|
||||
the variable.
|
||||
|
||||
In most cases you will want to declare the variable and initialize it at the
|
||||
same time: >
|
||||
let myText = 'some text'
|
||||
...
|
||||
myText = 'other text'
|
||||
|
||||
The type of the variable will be inferred from the expression. In this case
|
||||
it is a string. If you initialize with a number, then the type is number: >
|
||||
let myNumber = 1234
|
||||
...
|
||||
myNumber = 0
|
||||
|
||||
If you try to assign a string to this variable, you will get an error: >
|
||||
let myNumber = 'this fails!'
|
||||
|
||||
In the rare case you want a variable that can take values of any type, you
|
||||
have to specify the type: >
|
||||
let myVar: any = 1234
|
||||
myVar = 'text also works'
|
||||
|
||||
You can also declare a variable without assigning a value. In that case Vim
|
||||
will initialize it to zero or empty: >
|
||||
let word: string
|
||||
if condition
|
||||
word = 'yes'
|
||||
else
|
||||
word = 'no'
|
||||
endif
|
||||
|
||||
Although it's shorter to do: >
|
||||
let word = condition ? 'yes' : 'no'
|
||||
|
||||
==============================================================================
|
||||
*46.3* Functions and types
|
||||
|
||||
Legacy Vim script does have type checking, but this happens at runtime, when
|
||||
the code is executed. And it's permissive, often a computation gives an
|
||||
unexpected value instead of reporting an error. Thus you can define a
|
||||
function and think it's fine, but see a problem only later when it is called: >
|
||||
let s:collected = ''
|
||||
func ExtendAndReturn(add)
|
||||
let s:collected += a:add
|
||||
return s:collected
|
||||
endfunc
|
||||
|
||||
Can you spot the error? Try this: >
|
||||
echo ExtendAndReturn('text')
|
||||
And you'll see zero. Why? Because in legacy Vim script "+=" will convert the
|
||||
arguments to numbers, and any string without a number results in zero!
|
||||
|
||||
With `:def` the type checking happens when compiling the function. For that
|
||||
you need to specify the argument types and the return type. Also notice that
|
||||
the argument is used without the "a:" prefix: >
|
||||
let s:collected = ''
|
||||
def ExtendAndReturn(add: string): string
|
||||
s:collected += add
|
||||
return s:collected
|
||||
enddef
|
||||
defcompile
|
||||
|
||||
Here we use `:defcompile` to do the compilation right away, without it the
|
||||
compilation would happen when the function is called. Vim will tell you what
|
||||
you did wrong: >
|
||||
E1013: type mismatch, expected number but got string
|
||||
|
||||
Vim9 script is strict, it uses the "+" operator only for numbers and floats.
|
||||
For string concatenation ".." must be used. This avoids mistakes and avoids
|
||||
the automatic conversion that gave a surprising result above. So you change
|
||||
the first line of the function to: >
|
||||
s:collected ..= add
|
||||
And now it works.
|
||||
|
||||
If the function does not return anything, just leave out the return type: >
|
||||
def ReportResult(result: string)
|
||||
echo 'The result is: ' .. result
|
||||
enddef
|
||||
|
||||
This is also checked, if you try to return a value you'll get an error.
|
||||
|
||||
In case you don't care about types or have a function that does work with
|
||||
multiple types, you can use the "any" type: >
|
||||
def Store(key: string, value: any)
|
||||
resultDict[key] = value
|
||||
enddef
|
||||
|
||||
==============================================================================
|
||||
*46.?* Using a Vim9 script from legacy script *source-vim9-script*
|
||||
|
||||
In some cases you have a legacy Vim script where you want to use items from a
|
||||
Vim9 script. For example in your .vimrc you want to initialize a plugin. The
|
||||
best way to do this is to use `:import`. For example: >
|
||||
|
||||
import Init as NiceInit from 'myNicePlugin.vim'
|
||||
call NiceInit('today')
|
||||
|
||||
This finds the exported function "Init" in the Vim9 script file and makes it
|
||||
available as script-local item "NiceInit". `:import` always uses the script
|
||||
namespace, even when "s:" is not given. If "myNicePlugin.vim" was already
|
||||
sourced it is not sourced again.
|
||||
|
||||
Besides avoiding putting any items in the global namespace (where name clashes
|
||||
can cause unexpected errors), this also means the script is sourced only once,
|
||||
no matter how many times items from it are imported.
|
||||
|
||||
In some cases, e.g. for testing, you may just want to source the Vim9 script.
|
||||
That is OK, but then only global items will be available. The Vim9 script
|
||||
will have to make sure to use a unique name for these global items. Example: >
|
||||
source ~/.vim/extra/myNicePlugin.vim
|
||||
call g:NicePluginTest()
|
||||
|
||||
==============================================================================
|
||||
|
||||
Next chapter: |usr_90.txt| Installing Vim
|
||||
|
||||
Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_90.txt* For Vim version 8.2. Last change: 2008 Sep 10
|
||||
*usr_90.txt* For Vim version 8.2. Last change: 2020 Jun 11
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -15,7 +15,7 @@ upgrading to a new version is done.
|
||||
|90.4| Common installation issues
|
||||
|90.5| Uninstalling Vim
|
||||
|
||||
Previous chapter: |usr_45.txt| Select your language
|
||||
Previous chapter: |usr_46.txt| Write plugins using Vim9 script
|
||||
Table of contents: |usr_toc.txt|
|
||||
|
||||
==============================================================================
|
||||
@@ -226,7 +226,7 @@ We will use "82" here, which is version 8.2.
|
||||
This is all you need for the second method. Just launch the executable, and
|
||||
follow the prompts.
|
||||
|
||||
For the first method you must chose one of the binary archives. These are
|
||||
For the first method you must choose one of the binary archives. These are
|
||||
available:
|
||||
|
||||
gvim82.zip The normal MS-Windows GUI version.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_toc.txt* For Vim version 8.2. Last change: 2019 May 24
|
||||
*usr_toc.txt* For Vim version 8.2. Last change: 2020 Jun 15
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -42,7 +42,8 @@ Tuning Vim
|
||||
|usr_42.txt| Add new menus
|
||||
|usr_43.txt| Using filetypes
|
||||
|usr_44.txt| Your own syntax highlighted
|
||||
|usr_45.txt| Select your language
|
||||
|usr_45.txt| Select your language (locale)
|
||||
|usr_46.txt| Write plugins using Vim9 script
|
||||
|
||||
Making Vim Run
|
||||
|usr_90.txt| Installing Vim
|
||||
@@ -339,6 +340,12 @@ Make Vim work as you like it.
|
||||
|45.4| Editing files with a different encoding
|
||||
|45.5| Entering language text
|
||||
|
||||
|usr_46.txt| Write plugins using Vim9 script
|
||||
|46.1| Introduction
|
||||
|46.2| Variable declarations
|
||||
|46.3| Functions and types
|
||||
|46.?| Using a Vim9 script from legacy script
|
||||
|
||||
==============================================================================
|
||||
Making Vim Run ~
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 8.2. Last change: 2020 Apr 13
|
||||
*various.txt* For Vim version 8.2. Last change: 2020 Jul 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -251,14 +251,20 @@ g8 Print the hex values of the bytes used in the
|
||||
it to append a Vim command. See |:bar|.
|
||||
|
||||
If {cmd} contains "%" it is expanded to the current
|
||||
file name. Special characters are not escaped, use
|
||||
quotes to avoid their special meaning: >
|
||||
file name, "#" is expanded to the alternate file name.
|
||||
Special characters in the file name are not escaped,
|
||||
use quotes to avoid their special meaning: >
|
||||
:!ls "%"
|
||||
< If the file name contains a "$" single quotes might
|
||||
work better (but a single quote causes trouble): >
|
||||
< If the file name contains a "$" then single quotes
|
||||
might work better, but this only works if the file
|
||||
name does not contain a single quote: >
|
||||
:!ls '%'
|
||||
< This should always work, but it's more typing: >
|
||||
:exe "!ls " . shellescape(expand("%"))
|
||||
< To get a literal "%" or "#" prepend it with a
|
||||
backslash. For example, to list all files starting
|
||||
with "%": >
|
||||
:!ls \%*
|
||||
<
|
||||
A newline character ends {cmd}, what follows is
|
||||
interpreted as a following ":" command. However, if
|
||||
@@ -464,7 +470,7 @@ B *+vartabs* Variable-width tabstops. |'vartabstop'|
|
||||
N *+viminfo* |'viminfo'|
|
||||
*+vertsplit* Vertically split windows |:vsplit|; Always enabled
|
||||
since 8.0.1118.
|
||||
N *+virtualedit* |'virtualedit'|
|
||||
N *+virtualedit* |'virtualedit'| Always enabled since 8.1.826.
|
||||
T *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200.
|
||||
T *+visualextra* extra Visual mode commands |blockwise-operators|
|
||||
T *+vreplace* |gR| and |gr|
|
||||
@@ -748,7 +754,7 @@ up mappings to simulate the commands that less supports. Otherwise, you can
|
||||
still use the Vim commands.
|
||||
|
||||
This isn't perfect. For example, when viewing a short file Vim will still use
|
||||
the whole screen. But it works good enough for most uses, and you get syntax
|
||||
the whole screen. But it works well enough for most uses, and you get syntax
|
||||
highlighting.
|
||||
|
||||
The "h" key will give you a short overview of the available commands.
|
||||
|
||||
@@ -7882,7 +7882,7 @@ Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h,
|
||||
Patch 6.1.221
|
||||
Problem: Changing case may not work properly, depending on the current
|
||||
locale.
|
||||
Solution: Add the 'casemap' option to let the user chose how changing case
|
||||
Solution: Add the 'casemap' option to let the user choose how changing case
|
||||
is to be done.
|
||||
Also fix lowering case when an UTF-8 character doesn't keep the
|
||||
same byte length.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version8.txt* For Vim version 8.2. Last change: 2020 Feb 04
|
||||
*version8.txt* For Vim version 8.2. Last change: 2020 Jun 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -30777,7 +30777,7 @@ Solution: Use a double quoted string. Add a test.
|
||||
Files: src/ex_docmd.c, src/testdir/test_mksession.vim
|
||||
|
||||
Patch 8.1.0804
|
||||
Problem: Crash when setting v:errmsg to empty list. (Jaon Franklin)
|
||||
Problem: Crash when setting v:errmsg to empty list. (Jason Franklin)
|
||||
Solution: Separate getting value and assigning result.
|
||||
Files: src/eval.c, src/testdir/test_eval_stuff.vim
|
||||
|
||||
@@ -33684,8 +33684,8 @@ Solution: Also change the textprop implementation.
|
||||
Files: src/textprop.c
|
||||
|
||||
Patch 8.1.1279
|
||||
Problem: Cannot set 'spellang' to "sr@latin". (Bojan Stipic)
|
||||
Solution: Allow using '@' in 'spellang'. (closes #4342)
|
||||
Problem: Cannot set 'spelllang' to "sr@latin". (Bojan Stipic)
|
||||
Solution: Allow using '@' in 'spelllang'. (closes #4342)
|
||||
Files: src/option.c, src/testdir/gen_opt_test.vim
|
||||
|
||||
Patch 8.1.1280
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vi_diff.txt* For Vim version 8.2. Last change: 2019 Dec 17
|
||||
*vi_diff.txt* For Vim version 8.2. Last change: 2020 Jun 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -135,7 +135,6 @@ Support for different systems.
|
||||
- Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
|
||||
- MS-Windows
|
||||
- VMS
|
||||
- BeOS
|
||||
- Macintosh
|
||||
- IBM OS/390
|
||||
Note that on some systems features need to be disabled to reduce
|
||||
@@ -162,7 +161,7 @@ Graphical User Interface (GUI). |gui|
|
||||
define your own menus. Better support for CTRL/SHIFT/ALT keys in
|
||||
combination with special keys and mouse. Supported for various
|
||||
platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32
|
||||
(Windows 95 and later), BeOS, Amiga and Macintosh.
|
||||
(Windows XP and later), Amiga and Macintosh.
|
||||
|
||||
Multiple windows and buffers. |windows.txt|
|
||||
Vim can split the screen into several windows, each editing a
|
||||
|
||||
@@ -147,7 +147,7 @@ Se ":help search\-pattern" for tilg
|
||||
{kommando} fortolkes som en Ex-kommando.
|
||||
Hvis {kommando} indeholder mellemrum, s<> skal den omsluttes af
|
||||
dobbelte citationstegn (det afh<66>nger af den skal der bruges).
|
||||
Eksempel: Vim "+set si" main.c
|
||||
Eksempel: vim "+set si" main.c
|
||||
.br
|
||||
Bem<EFBFBD>rk: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer.
|
||||
.TP
|
||||
|
||||
@@ -147,7 +147,7 @@ Se ":help search\-pattern" for tilgængelige søgemønstre.
|
||||
{kommando} fortolkes som en Ex-kommando.
|
||||
Hvis {kommando} indeholder mellemrum, så skal den omsluttes af
|
||||
dobbelte citationstegn (det afhænger af den skal der bruges).
|
||||
Eksempel: Vim "+set si" main.c
|
||||
Eksempel: vim "+set si" main.c
|
||||
.br
|
||||
Bemærk: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer.
|
||||
.TP
|
||||
|
||||
@@ -156,7 +156,7 @@ Ex
|
||||
{commande} est interpr<70>t<EFBFBD>e comme une commande Ex.
|
||||
Si la {commande} contient des espaces, elle doit <20>tre entour<75>e
|
||||
de doubles-apostrophes (cela d<>pend du shell utilis<69>).
|
||||
Exemple : Vim "+set si" main.c
|
||||
Exemple : vim "+set si" main.c
|
||||
.br
|
||||
Note : vous pouvez utiliser jusqu'<27> 10 commandes "+" ou "\-c".
|
||||
.TP
|
||||
|
||||
@@ -156,7 +156,7 @@ Exécute {commande} après la lecture du premier fichier.
|
||||
{commande} est interprétée comme une commande Ex.
|
||||
Si la {commande} contient des espaces, elle doit être entourée
|
||||
de doubles-apostrophes (cela dépend du shell utilisé).
|
||||
Exemple : Vim "+set si" main.c
|
||||
Exemple : vim "+set si" main.c
|
||||
.br
|
||||
Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c".
|
||||
.TP
|
||||
|
||||
@@ -150,7 +150,7 @@ primo file
|
||||
{comando} <20> interpretato come un comando Ex.
|
||||
Se il {comando} contiene spazi deve essere incluso fra doppi apici
|
||||
(o altro delimitatore, a seconda della shell che si sta usando).
|
||||
Esempio: Vim "+set si" main.c
|
||||
Esempio: vim "+set si" main.c
|
||||
.br
|
||||
Note: Si possono avere fino a 10 comandi "+" o "\-c".
|
||||
.TP
|
||||
|
||||
@@ -150,7 +150,7 @@ primo file è stato letto.
|
||||
{comando} è interpretato come un comando Ex.
|
||||
Se il {comando} contiene spazi deve essere incluso fra doppi apici
|
||||
(o altro delimitatore, a seconda della shell che si sta usando).
|
||||
Esempio: Vim "+set si" main.c
|
||||
Esempio: vim "+set si" main.c
|
||||
.br
|
||||
Note: Si possono avere fino a 10 comandi "+" o "\-c".
|
||||
.TP
|
||||
|
||||
@@ -150,7 +150,7 @@ wzorce wyszukiwania.
|
||||
{polecenie} jest interpretowane jako polecenie Ex.
|
||||
Je<EFBFBD>li {poleceni} zawiera bia<69>e znaki musi by<62> umieszczone w podw<64>jnych
|
||||
cudzys<EFBFBD>owach (zale<6C>y to od u<>ywanej pow<6F>oki).
|
||||
Przyk<EFBFBD>ad: Vim "+set si" main.c
|
||||
Przyk<EFBFBD>ad: vim "+set si" main.c
|
||||
.br
|
||||
Uwaga: Mo<4D>na u<>y<EFBFBD> do 10 polece<63> "+" lub "\-c".
|
||||
.TP
|
||||
|
||||
@@ -150,7 +150,7 @@ wzorce wyszukiwania.
|
||||
{polecenie} jest interpretowane jako polecenie Ex.
|
||||
Jeśli {poleceni} zawiera białe znaki musi być umieszczone w podwójnych
|
||||
cudzysłowach (zależy to od używanej powłoki).
|
||||
Przykład: Vim "+set si" main.c
|
||||
Przykład: vim "+set si" main.c
|
||||
.br
|
||||
Uwaga: Można użyć do 10 poleceń "+" lub "\-c".
|
||||
.TP
|
||||
|
||||
@@ -145,7 +145,7 @@ Kullan
|
||||
{komut} bir Ex komutu olarak i<>letilir.
|
||||
E<EFBFBD>er {komut} bo<62>luk i<>eriyorsa <20>ift t<>rnak i<>erisine al<61>nmal<61>d<EFBFBD>r (bu
|
||||
kullan<EFBFBD>lan kabu<62>a ba<62>l<EFBFBD>d<EFBFBD>r).
|
||||
<EFBFBD>rnek: Vim "+set si" main.c
|
||||
<EFBFBD>rnek: vim "+set si" main.c
|
||||
.br
|
||||
Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz.
|
||||
.TP
|
||||
|
||||
@@ -145,7 +145,7 @@ Kullanılabilir arama dizgileri için ":help search\-pattern" yazın.
|
||||
{komut} bir Ex komutu olarak işletilir.
|
||||
Eğer {komut} boşluk içeriyorsa çift tırnak içerisine alınmalıdır (bu
|
||||
kullanılan kabuğa bağlıdır).
|
||||
Örnek: Vim "+set si" main.c
|
||||
Örnek: vim "+set si" main.c
|
||||
.br
|
||||
Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz.
|
||||
.TP
|
||||
|
||||
@@ -146,7 +146,7 @@ See ":help search\-pattern" for the available search patterns.
|
||||
{command} is interpreted as an Ex command.
|
||||
If the {command} contains spaces it must be enclosed in double quotes (this
|
||||
depends on the shell that is used).
|
||||
Example: Vim "+set si" main.c
|
||||
Example: vim "+set si" main.c
|
||||
.br
|
||||
Note: You can use up to 10 "+" or "\-c" commands.
|
||||
.TP
|
||||
|
||||
@@ -110,7 +110,7 @@ OPTIONS
|
||||
read. {command} is interpreted as an Ex command. If the
|
||||
{command} contains spaces it must be enclosed in double
|
||||
quotes (this depends on the shell that is used). Example:
|
||||
Vim "+set si" main.c
|
||||
vim "+set si" main.c
|
||||
Note: You can use up to 10 "+" or "-c" commands.
|
||||
|
||||
-S {file} {file} will be sourced after the first file has been read.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2020 May 25
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2020 Jul 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -30,7 +30,7 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
Vim script has been growing over time, while preserving backwards
|
||||
compatibility. That means bad choices from the past often can't be changed
|
||||
and compability with Vi restricts possible solutions. Execution is quite
|
||||
and compatibility with Vi restricts possible solutions. Execution is quite
|
||||
slow, each line is parsed every time it is executed.
|
||||
|
||||
The main goal of Vim9 script is to drastically improve performance. This is
|
||||
@@ -64,15 +64,24 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
|
||||
Comments starting with # ~
|
||||
|
||||
In Vim script comments normally start with double quote. That can also be the
|
||||
start of a string, thus in many places it cannot be used. In Vim9 script a
|
||||
comment can also start with #. In Vi this is a command to list text with
|
||||
numbers, but you can also use `:number` for that. >
|
||||
let count = 0 # number of occurences
|
||||
In legacy Vim script comments start with double quote. In Vim9 script
|
||||
comments start with #. >
|
||||
# declarations
|
||||
let count = 0 # number of occurrences
|
||||
|
||||
To improve readability there must be a space between the command and the #
|
||||
The reason is that a double quote can also be the start of a string. In many
|
||||
places, especially halfway an expression with a line break, it's hard to tell
|
||||
what the meaning is, since both a string and a comment can be followed by
|
||||
arbitrary text. To avoid confusion only # comments are recognized. This is
|
||||
the same as in shell scripts and Python programs.
|
||||
|
||||
In Vi # is a command to list text with numbers. In Vim9 script you can use
|
||||
`:number` for that. >
|
||||
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 cannot start a comment.
|
||||
it does not start a comment.
|
||||
|
||||
|
||||
Vim9 functions ~
|
||||
@@ -85,7 +94,7 @@ The syntax is strict, to enforce code that is easy to read and understand.
|
||||
|
||||
Compilation is done when the function is first called, or when the
|
||||
`:defcompile` command is encountered in the script where the function was
|
||||
defined.
|
||||
defined. `:disassemble` also compiles the function.
|
||||
|
||||
`: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
|
||||
@@ -96,7 +105,7 @@ be used, type checking will then be done at runtime, like with legacy
|
||||
functions.
|
||||
|
||||
Arguments are accessed by name, without "a:". There is no "a:" dictionary or
|
||||
"a:000" list.
|
||||
"a:000" list. Just like any other language.
|
||||
|
||||
Variable arguments are defined as the last argument, with a name and have a
|
||||
list type, similar to Typescript. For example, a list of numbers: >
|
||||
@@ -106,12 +115,16 @@ list type, similar to Typescript. For example, a list of numbers: >
|
||||
|
||||
|
||||
Functions and variables are script-local by default ~
|
||||
|
||||
*vim9-scopes*
|
||||
When using `:function` or `:def` to specify a new function at the script level
|
||||
in a Vim9 script, the function is local to the script, as if "s:" was
|
||||
prefixed. Using the "s:" prefix is optional.
|
||||
|
||||
To define or use a global function or variable the "g:" prefix must be used.
|
||||
prefixed. Using the "s:" prefix is optional. To define or use a global
|
||||
function or variable the "g:" prefix must be used. For functions in an
|
||||
autoload script the "name#" prefix is sufficient. >
|
||||
def ThisFunction() # script-local
|
||||
def s:ThisFunction() # script-local
|
||||
def g:ThatFunction() # global
|
||||
def scriptname#function() # autoload
|
||||
|
||||
When using `:function` or `:def` to specify a new function inside a function,
|
||||
the function is local to the function. It is not possible to define a
|
||||
@@ -136,7 +149,7 @@ and cannot be deleted or replaced.
|
||||
|
||||
|
||||
Variable declarations with :let and :const ~
|
||||
|
||||
*vim9-declaration*
|
||||
Local variables need to be declared with `:let`. Local constants need to be
|
||||
declared with `:const`. We refer to both as "variables".
|
||||
|
||||
@@ -176,8 +189,9 @@ To intentionally avoid a variable being available later, a block can be used:
|
||||
echo temp " Error!
|
||||
|
||||
An existing variable cannot be assigned to with `:let`, since that implies a
|
||||
declaration. An exception is global variables: these can be both used with
|
||||
and without `:let`, because there is no rule about where they are declared.
|
||||
declaration. Global, window, tab, buffer and Vim variables can only be used
|
||||
without `:let`, because they are are not really declared, they can also be
|
||||
deleted with `:unlet`.
|
||||
|
||||
Variables cannot shadow previously defined variables.
|
||||
Variables may shadow Ex commands, rename the variable if needed.
|
||||
@@ -186,12 +200,19 @@ Global variables and user defined functions must be prefixed with "g:", also
|
||||
at the script level. >
|
||||
vim9script
|
||||
let script_local = 'text'
|
||||
let g:global = 'value'
|
||||
g:global = 'value'
|
||||
let Funcref = g:ThatFunction
|
||||
|
||||
Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
|
||||
used to repeat a `:substitute` command.
|
||||
|
||||
*E1092*
|
||||
Declaring more than one variable at a time, using the unpack notation, is
|
||||
currently not supported: >
|
||||
let [v1, v2] = GetValues() # Error!
|
||||
That is because the type needs to be inferred from the list item type, which
|
||||
isn't that easy.
|
||||
|
||||
|
||||
Omitting :call and :eval ~
|
||||
|
||||
@@ -200,29 +221,29 @@ Functions can be called without `:call`: >
|
||||
Using `:call` is still possible, but this is discouraged.
|
||||
|
||||
A method call without `eval` is possible, so long as the start is an
|
||||
identifier or can't be an Ex command. It does NOT work for string constants: >
|
||||
myList->add(123) " works
|
||||
g:myList->add(123) " works
|
||||
[1, 2, 3]->Process() " works
|
||||
#{a: 1, b: 2}->Process() " works
|
||||
{'a': 1, 'b': 2}->Process() " works
|
||||
"foobar"->Process() " does NOT work
|
||||
("foobar")->Process() " works
|
||||
'foobar'->Process() " does NOT work
|
||||
('foobar')->Process() " works
|
||||
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()
|
||||
"foobar"->Process()
|
||||
("foobar")->Process()
|
||||
'foobar'->Process()
|
||||
('foobar')->Process()
|
||||
|
||||
In case there is ambiguity between a function name and an Ex command, use ":"
|
||||
to make clear you want to use the Ex command. For example, there is both the
|
||||
`:substitute` command and the `substitute()` function. When the line starts
|
||||
with `substitute(` this will use the function, prepend a colon to use the
|
||||
command instead: >
|
||||
In rare case there is ambiguity between a function name and an Ex command, use
|
||||
":" to make clear you want to use the Ex command. For example, there is both
|
||||
the `:substitute` command and the `substitute()` function. When the line
|
||||
starts with `substitute(` this will use the function. Prepend a colon to use
|
||||
the command instead: >
|
||||
:substitute(pattern (replacement (
|
||||
|
||||
Note that while variables need to be defined before they can be used,
|
||||
functions can be called before being defined. This is required to be able
|
||||
have cyclic dependencies between functions. It is slightly less efficient,
|
||||
since the function has to be looked up by name. And a typo in the function
|
||||
name will only be found when the call is executed.
|
||||
name will only be found when the function is called.
|
||||
|
||||
|
||||
Omitting function() ~
|
||||
@@ -257,20 +278,39 @@ Function call: >
|
||||
arg2
|
||||
)
|
||||
|
||||
For binary operators iin expressions not in [], {} or () a line break is
|
||||
possible AFTER the operators. For example: >
|
||||
let text = lead ..
|
||||
middle ..
|
||||
end
|
||||
For binary operators in expressions not in [], {} or () a line break is
|
||||
possible just before or after the operator. For example: >
|
||||
let text = lead
|
||||
.. middle
|
||||
.. end
|
||||
let total = start +
|
||||
end -
|
||||
correction
|
||||
let result = positive ?
|
||||
PosFunc(arg) :
|
||||
NegFunc(arg)
|
||||
let result = positive
|
||||
? PosFunc(arg)
|
||||
: NegFunc(arg)
|
||||
|
||||
Note that "enddef" cannot be used at the start of a continuation line, it ends
|
||||
the current function.
|
||||
For a method call using "->" and a member using a dot, a line break is allowed
|
||||
before it: >
|
||||
let result = GetBuilder()
|
||||
->BuilderSetWidth(333)
|
||||
->BuilderSetHeight(777)
|
||||
->BuilderBuild()
|
||||
let result = MyDict
|
||||
.member
|
||||
|
||||
< *E1050*
|
||||
To make it possible for the operator at the start of the line to be
|
||||
recognized, it is required to put a colon before a range. This will add
|
||||
"start" and print: >
|
||||
let result = start
|
||||
+ print
|
||||
Like this: >
|
||||
let result = start + print
|
||||
|
||||
This will assign "start" and print a line: >
|
||||
let result = start
|
||||
:+ print
|
||||
|
||||
It is also possible to split a function header over multiple lines, in between
|
||||
arguments: >
|
||||
@@ -279,15 +319,43 @@ arguments: >
|
||||
separator = '-'
|
||||
): string
|
||||
|
||||
Notes:
|
||||
- "enddef" cannot be used at the start of a continuation line, it ends the
|
||||
current function.
|
||||
- No line break is allowed in the LHS of an assignment. Specifically when
|
||||
unpacking a list |:let-unpack|. This is OK: >
|
||||
[var1, var2] =
|
||||
Func()
|
||||
< This does not work: >
|
||||
[var1,
|
||||
var2] =
|
||||
Func()
|
||||
- No line break is allowed in between arguments of an `:echo`, `:execute` and
|
||||
similar commands. This is OK: >
|
||||
echo [1,
|
||||
2] [3,
|
||||
4]
|
||||
< This does not work: >
|
||||
echo [1, 2]
|
||||
[3, 4]
|
||||
- No line break is allowed in the arguments of a lambda, between the "{" and
|
||||
"->". This is OK: >
|
||||
filter(list, {k, v ->
|
||||
v > 0})
|
||||
< This does not work: >
|
||||
filter(list, {k,
|
||||
v -> v > 0})
|
||||
|
||||
|
||||
No curly braces expansion ~
|
||||
|
||||
|curly-braces-names| cannot be used.
|
||||
|
||||
|
||||
No :append, :change or :insert ~
|
||||
No :xit, :append, :change or :insert ~
|
||||
|
||||
These commands are too quickly confused with local variable names.
|
||||
These commands are too easily confused with local variable names. Instead of
|
||||
`:x` or `:xit` you can use `:exit`.
|
||||
|
||||
|
||||
Comparators ~
|
||||
@@ -303,7 +371,8 @@ Vim9 script enforces proper use of white space. This is no longer allowed: >
|
||||
let var =234 " Error!
|
||||
There must be white space before and after the "=": >
|
||||
let var = 234 " OK
|
||||
White space must also be put before the # that starts a comment: >
|
||||
White space must also be put before the # that starts a comment after a
|
||||
command: >
|
||||
let var = 234# Error!
|
||||
let var = 234 # OK
|
||||
|
||||
@@ -353,6 +422,7 @@ The boolean operators "||" and "&&" do not change the value: >
|
||||
0 || '' == ''
|
||||
8 && 2 == 2
|
||||
0 && 2 == 0
|
||||
2 && 0 == 0
|
||||
[] && 2 == []
|
||||
|
||||
When using `..` for string concatenation the arguments are always converted to
|
||||
@@ -363,6 +433,51 @@ string. >
|
||||
In Vim9 script one can use "true" for v:true and "false" for v:false.
|
||||
|
||||
|
||||
What to watch out for ~
|
||||
*vim9-gotchas*
|
||||
Vim9 was designed to be closer to often used programming languages, but at the
|
||||
same time tries to support the legacy Vim commands. Some compromises had to
|
||||
be made. Here is a summary of what might be unexpected.
|
||||
|
||||
Ex command ranges need to be prefixed with a colon. >
|
||||
-> " legacy Vim: shifts the previous line to the right
|
||||
->func() " Vim9: method call in continuation line
|
||||
:-> " Vim9: shifts the previous line to the right
|
||||
|
||||
%s/a/b " legacy Vim: substitute on all lines
|
||||
x = alongname
|
||||
% another " Vim9: line continuation without a backslash
|
||||
:%s/a/b " Vim9: substitute on all lines
|
||||
'text'->func() " Vim9: method call
|
||||
:'t " legacy Vim: jump to mark m
|
||||
|
||||
Functions defined with `:def` compile the whole function. Legacy functions
|
||||
can bail out, and the following lines are not parsed: >
|
||||
func Maybe()
|
||||
if !has('feature')
|
||||
return
|
||||
endif
|
||||
use-feature
|
||||
endfunc
|
||||
Vim9 functions are compiled as a whole: >
|
||||
def Maybe()
|
||||
if !has('feature')
|
||||
return
|
||||
endif
|
||||
use-feature " May give compilation error
|
||||
enddef
|
||||
For a workaround, split it in two functions: >
|
||||
func Maybe()
|
||||
if has('feature')
|
||||
call MaybyInner()
|
||||
endif
|
||||
endfunc
|
||||
if has('feature')
|
||||
def MaybeInner()
|
||||
use-feature
|
||||
enddef
|
||||
endif
|
||||
|
||||
==============================================================================
|
||||
|
||||
3. New style functions *fast-functions*
|
||||
@@ -388,22 +503,28 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
|
||||
The second and third form are optional arguments.
|
||||
When the caller omits an argument the {value} is used.
|
||||
|
||||
NOTE: It is possible to nest `:def` inside another
|
||||
`:def`, but it is not possible to nest `:def` inside
|
||||
`:function`, for backwards compatibility.
|
||||
The function will be compiled into instructions when
|
||||
called, or when `:disassemble` or `:defcompile` is
|
||||
used. Syntax and type errors will be produced at that
|
||||
time.
|
||||
|
||||
It is possible to nest `:def` inside another `:def` or
|
||||
`:function` up to about 50 levels deep.
|
||||
|
||||
[!] is used as with `:function`. Note that in Vim9
|
||||
script script-local functions cannot be deleted or
|
||||
redefined.
|
||||
redefined later in the same script.
|
||||
|
||||
*:enddef*
|
||||
:enddef End of a function defined with `:def`.
|
||||
:enddef End of a function defined with `:def`. It should be on
|
||||
a line by its own.
|
||||
|
||||
|
||||
If the script the function is defined in is Vim9 script, then script-local
|
||||
variables can be accessed without the "s:" prefix. They must be defined
|
||||
before the function. If the script the function is defined in is legacy
|
||||
script, then script-local variables must be accessed with the "s:" prefix.
|
||||
before the function is compiled. If the script the function is defined in is
|
||||
legacy script, then script-local variables must be accessed with the "s:"
|
||||
prefix.
|
||||
|
||||
*:defc* *:defcompile*
|
||||
:defc[ompile] Compile functions defined in the current script that
|
||||
@@ -416,6 +537,22 @@ script, then script-local variables must be accessed with the "s:" prefix.
|
||||
Note that for command line completion of {func} you
|
||||
can prepend "s:" to find script-local functions.
|
||||
|
||||
Limitations ~
|
||||
|
||||
Local variables will not be visible to string evaluation. For example: >
|
||||
def EvalString(): list<string>
|
||||
let list = ['aa', 'bb', 'cc', 'dd']
|
||||
return range(1, 2)->map('list[v:val]')
|
||||
enddef
|
||||
|
||||
The map argument is a string expression, which is evaluated without the
|
||||
function scope. Instead, use a lambda: >
|
||||
def EvalString(): list<string>
|
||||
let list = ['aa', 'bb', 'cc', 'dd']
|
||||
return range(1, 2)->map({ _, v -> list[v] })
|
||||
enddef
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Types *vim9-types*
|
||||
@@ -441,7 +578,7 @@ Not supported yet:
|
||||
tuple<a: {type}, b: {type}, ...>
|
||||
|
||||
These types can be used in declarations, but no value will have this type:
|
||||
{type}|{type}
|
||||
{type}|{type} {not implemented yet}
|
||||
void
|
||||
any
|
||||
|
||||
@@ -543,22 +680,21 @@ The original value of 'cpoptions' is restored at the end of the script.
|
||||
|
||||
Export ~
|
||||
*:export* *:exp*
|
||||
Exporting one item can be written as: >
|
||||
Exporting an item can be written as: >
|
||||
export const EXPORTED_CONST = 1234
|
||||
export let someValue = ...
|
||||
export def MyFunc() ...
|
||||
export class MyClass ...
|
||||
|
||||
As this suggests, only constants, variables, `:def` functions and classes can
|
||||
be exported.
|
||||
be exported. {classes are not implemented yet}
|
||||
|
||||
Alternatively, an export statement can be used to export several already
|
||||
defined (otherwise script-local) items: >
|
||||
export {EXPORTED_CONST, someValue, MyFunc, MyClass}
|
||||
*E1042*
|
||||
`:export` can only be used in Vim9 script, at the script level.
|
||||
|
||||
|
||||
Import ~
|
||||
*:import* *:imp*
|
||||
*:import* *:imp* *E1094*
|
||||
The exported items can be imported individually in another Vim9 script: >
|
||||
import EXPORTED_CONST from "thatscript.vim"
|
||||
import MyClass from "myclass.vim"
|
||||
@@ -629,8 +765,8 @@ actually needed. A recommended mechanism:
|
||||
|
||||
Import in legacy Vim script ~
|
||||
|
||||
If an `import` statement is used in legacy Vim script, for identifier the
|
||||
script-local "s:" namespace will be used, even when "s:" is not specified.
|
||||
If an `import` statement is used in legacy Vim script, the script-local "s:"
|
||||
namespace will be used for the imported item, even when "s:" is not specified.
|
||||
|
||||
|
||||
==============================================================================
|
||||
@@ -673,12 +809,37 @@ widely used. The type names are what was used in Vim before, with some
|
||||
additions such as "void" and "bool".
|
||||
|
||||
|
||||
JavaScript/TypeScript syntax and semantics ~
|
||||
Compiling functions early ~
|
||||
|
||||
Functions are compiled when called or when `:defcompile` is used. Why not
|
||||
compile them early, so that syntax and type errors are reported early?
|
||||
|
||||
The functions can't be compiled right away when encountered, because there may
|
||||
be forward references to functions defined later. Consider defining functions
|
||||
A, B and C, where A calls B, B calls C, and C calls A again. It's impossible
|
||||
to reorder the functions to avoid forward references.
|
||||
|
||||
An alternative would be to first scan through the file to locate items and
|
||||
figure out their type, so that forward references are found, and only then
|
||||
execute the script and compile the functions. This means the script has to be
|
||||
parsed twice, which is slower, and some conditions at the script level, such
|
||||
as checking if a feature is supported, are hard to use. An attempt was made
|
||||
to see if it works, but it turned out to be impossible to make work nicely.
|
||||
|
||||
It would be possible to compile all the functions at the end of the script.
|
||||
The drawback is that if a function never gets called, the overhead of
|
||||
compiling it counts anyway. Since startup speed is very important, in most
|
||||
cases it's better to do it later and accept that syntax and type errors are
|
||||
only reported then. In case these errors should be found early, e.g. when
|
||||
testing, the `:defcompile` command will help out.
|
||||
|
||||
|
||||
TypeScript syntax and semantics ~
|
||||
|
||||
Script writers have complained that the Vim script syntax is unexpectedly
|
||||
different from what they are used to. To reduce this complaint popular
|
||||
languages will be used as an example. At the same time, we do not want to
|
||||
abandon the well-known parts of legacy Vim script.
|
||||
languages are used as an example. At the same time, we do not want to abandon
|
||||
the well-known parts of legacy Vim script.
|
||||
|
||||
Since Vim already uses `:let` and `:const` and optional type checking is
|
||||
desirable, the JavaScript/TypeScript syntax fits best for variable
|
||||
@@ -695,7 +856,7 @@ are doing. Some details are unexpected and can be fixed. For example how the
|
||||
...
|
||||
return result || 0 " returns 1
|
||||
|
||||
Vim9 script works like JavaScript, keep the value: >
|
||||
Vim9 script works like JavaScript/Typescript, keep the value: >
|
||||
let result = 44
|
||||
...
|
||||
return result || 0 " returns 44
|
||||
@@ -727,6 +888,16 @@ that works like one would expect:
|
||||
avoided.
|
||||
- The Vim-specific use of "s:" to make things script-local can be dropped.
|
||||
|
||||
When sourcing a Vim9 script from a legacy script, only the items defined
|
||||
globally can be used, not the exported items. Alternatives considered:
|
||||
- All the exported items become available as script-local items. This makes
|
||||
it uncontrollable what items get defined.
|
||||
- Use the exported items and make them global. Disadvantage is that it's then
|
||||
not possible to avoid name clashes in the global namespace.
|
||||
- Completely disallow sourcing a Vim9 script, require using `:import`. That
|
||||
makes it difficult to use scripts for testing, or sourcing them from the
|
||||
command line to try them out.
|
||||
|
||||
|
||||
Classes ~
|
||||
|
||||
|
||||
@@ -137,6 +137,12 @@ invert the status line. Now it should be "sr", reverse the status line, as
|
||||
status line is inverted anyway; you will only see this problem on terminals
|
||||
that have termcap codes for italics.
|
||||
|
||||
*filler-lines*
|
||||
The lines after the last buffer line in a window are called filler lines.
|
||||
These lines start with a tilde (~) character. By default, these are
|
||||
highlighted as NonText (|hl-NonText|). The EndOfBuffer highlight group
|
||||
(|hl-EndOfBuffer|) can be used to change the highlighting of filler lines.
|
||||
|
||||
==============================================================================
|
||||
3. Opening and closing a window *opening-window* *E36*
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2020 May 07
|
||||
" Last Change: 2020 Jun 25
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -88,6 +88,9 @@ endif
|
||||
" AHDL
|
||||
au BufNewFile,BufRead *.tdf setf ahdl
|
||||
|
||||
" AIDL
|
||||
au BufNewFile,BufRead *.aidl setf aidl
|
||||
|
||||
" AMPL
|
||||
au BufNewFile,BufRead *.run setf ampl
|
||||
|
||||
@@ -237,7 +240,7 @@ au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml
|
||||
au BufNewFile,BufRead *bsd,*.bsdl setf bsdl
|
||||
|
||||
" Bazel (http://bazel.io)
|
||||
autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel setf bzl
|
||||
autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel setf bzl
|
||||
if has("fname_case")
|
||||
" There is another check for BUILD further below.
|
||||
autocmd BufRead,BufNewFile BUILD setf bzl
|
||||
@@ -462,7 +465,7 @@ au BufNewFile,BufRead *.desc setf desc
|
||||
au BufNewFile,BufRead *.d call dist#ft#DtraceCheck()
|
||||
|
||||
" Desktop files
|
||||
au BufNewFile,BufRead *.desktop,.directory setf desktop
|
||||
au BufNewFile,BufRead *.desktop,*.directory setf desktop
|
||||
|
||||
" Dict config
|
||||
au BufNewFile,BufRead dict.conf,.dictrc setf dictconf
|
||||
@@ -542,7 +545,7 @@ au BufNewFile,BufRead *.ecd setf ecd
|
||||
au BufNewFile,BufRead *.e,*.E call dist#ft#FTe()
|
||||
|
||||
" Elinks configuration
|
||||
au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks
|
||||
au BufNewFile,BufRead elinks.conf setf elinks
|
||||
|
||||
" ERicsson LANGuage; Yaws is erlang too
|
||||
au BufNewFile,BufRead *.erl,*.hrl,*.yaws setf erlang
|
||||
@@ -625,8 +628,8 @@ au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
|
||||
au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
|
||||
|
||||
" Git
|
||||
au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
|
||||
au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig
|
||||
au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
|
||||
au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig
|
||||
au BufNewFile,BufRead */.config/git/config setf gitconfig
|
||||
au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig
|
||||
if !empty($XDG_CONFIG_HOME)
|
||||
@@ -770,11 +773,11 @@ au BufNewFile,BufRead *.inf,*.INF setf inform
|
||||
au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
|
||||
|
||||
" Innovation Data Processing
|
||||
au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
||||
au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
|
||||
au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
||||
au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
|
||||
au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
|
||||
au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
|
||||
au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
|
||||
au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
|
||||
au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
|
||||
|
||||
" Ipfilter
|
||||
au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter
|
||||
@@ -1073,7 +1076,7 @@ au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
|
||||
au BufRead,BufNewfile *.n1ql,*.nql setf n1ql
|
||||
|
||||
" Nano
|
||||
au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc
|
||||
au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc
|
||||
|
||||
" Nastran input/DMAP
|
||||
"au BufNewFile,BufRead *.dat setf nastran
|
||||
@@ -1134,8 +1137,17 @@ au BufNewFile,BufRead *.ora setf ora
|
||||
" Packet filter conf
|
||||
au BufNewFile,BufRead pf.conf setf pf
|
||||
|
||||
" Pacman Config (close enough to dosini)
|
||||
au BufNewFile,BufRead */etc/pacman.conf setf dosini
|
||||
|
||||
" Pacman hooks
|
||||
au BufNewFile,BufRead *.hook
|
||||
\ if getline(1) == '[Trigger]' |
|
||||
\ setf dosini |
|
||||
\ endif
|
||||
|
||||
" Pam conf
|
||||
au BufNewFile,BufRead */etc/pam.conf setf pamconf
|
||||
au BufNewFile,BufRead */etc/pam.conf setf pamconf
|
||||
|
||||
" Pam environment
|
||||
au BufNewFile,BufRead pam_env.conf,.pam_environment setf pamenv
|
||||
@@ -1156,7 +1168,7 @@ au BufNewFile,BufRead *.dpr setf pascal
|
||||
au BufNewFile,BufRead *.pdf setf pdf
|
||||
|
||||
" PCMK - HAE - crm configure edit
|
||||
au BufNewFile,BufRead *.pcmk setf pcmk
|
||||
au BufNewFile,BufRead *.pcmk setf pcmk
|
||||
|
||||
" Perl
|
||||
if has("fname_case")
|
||||
@@ -1166,6 +1178,7 @@ else
|
||||
endif
|
||||
au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl
|
||||
au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
|
||||
au BufNewFile,BufRead *.raku,*.rakumod setf perl6
|
||||
|
||||
" Perl, XPM or XPM2
|
||||
au BufNewFile,BufRead *.pm
|
||||
@@ -1295,7 +1308,8 @@ au BufNewFile,BufRead *.pyx,*.pxd setf pyrex
|
||||
|
||||
" Python, Python Shell Startup and Python Stub Files
|
||||
" Quixote (Python-based web framework)
|
||||
au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc,*.ptl,*.pyi setf python
|
||||
au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc setf python
|
||||
au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
|
||||
|
||||
" Radiance
|
||||
au BufNewFile,BufRead *.rad,*.mat setf radiance
|
||||
@@ -1617,10 +1631,12 @@ au BufNewFile,BufRead *.sqlj setf sqlj
|
||||
au BufNewFile,BufRead *.sqr,*.sqi setf sqr
|
||||
|
||||
" OpenSSH configuration
|
||||
au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig
|
||||
au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig
|
||||
au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig
|
||||
|
||||
" OpenSSH server configuration
|
||||
au BufNewFile,BufRead sshd_config setf sshdconfig
|
||||
au BufNewFile,BufRead sshd_config setf sshdconfig
|
||||
au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf setf sshdconfig
|
||||
|
||||
" Stata
|
||||
au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata
|
||||
@@ -1642,17 +1658,18 @@ au BufNewFile,BufRead *.cm setf voscm
|
||||
|
||||
" Swift
|
||||
au BufNewFile,BufRead *.swift setf swift
|
||||
au BufNewFile,BufRead *.swift.gyb setf swiftgyb
|
||||
au BufNewFile,BufRead *.swift.gyb setf swiftgyb
|
||||
|
||||
" Swift Intermediate Language
|
||||
au BufNewFile,BufRead *.sil setf sil
|
||||
au BufNewFile,BufRead *.sil setf sil
|
||||
|
||||
" Sysctl
|
||||
au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl
|
||||
|
||||
" Systemd unit files
|
||||
au BufNewFile,BufRead */systemd/*.{automount,mount,path,service,socket,swap,target,timer} setf systemd
|
||||
au BufNewFile,BufRead */systemd/*.{automount,dnssd,link,mount,netdev,network,nspawn,path,service,slice,socket,swap,target,timer} setf systemd
|
||||
" Systemd overrides
|
||||
au BufNewFile,BufRead */etc/systemd/*.conf.d/*.conf setf systemd
|
||||
au BufNewFile,BufRead */etc/systemd/system/*.d/*.conf setf systemd
|
||||
au BufNewFile,BufRead */.config/systemd/user/*.d/*.conf setf systemd
|
||||
" Systemd temp files
|
||||
@@ -2062,7 +2079,7 @@ au BufNewFile,BufRead *fvwm2rc*
|
||||
au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom')
|
||||
|
||||
" Git
|
||||
au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig')
|
||||
au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig')
|
||||
|
||||
" Gitolite
|
||||
au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite')
|
||||
|
||||
11
runtime/ftplugin/asm.vim
Normal file
11
runtime/ftplugin/asm.vim
Normal file
@@ -0,0 +1,11 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: asm
|
||||
" Maintainer: Colin Caine <cmcaine at the common googlemail domain>
|
||||
" Last Changed: 23 May 2020
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
|
||||
setl comments=:;,s1:/*,mb:*,ex:*/,://
|
||||
setl commentstring=;%s
|
||||
|
||||
let b:did_ftplugin = 1
|
||||
@@ -1,12 +1,17 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: C++
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2001 Jan 15
|
||||
" Last Change: 2020 Jul 26
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Behaves just like C
|
||||
" Behaves mostly just like C
|
||||
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim
|
||||
|
||||
" C++ uses templates with <things>
|
||||
" Disabled, because it gives an error for typing an unmatched ">".
|
||||
" set matchpairs+=<:>
|
||||
" let b:undo_ftplugin ..= ' | setl matchpairs<'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Diff
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Jul 27
|
||||
" Last Change: 2020 Jul 18
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -13,3 +13,6 @@ let b:undo_ftplugin = "setl modeline<"
|
||||
|
||||
" Don't use modelines in a diff, they apply to the diffed file
|
||||
setlocal nomodeline
|
||||
|
||||
" If there are comments they start with #
|
||||
let &commentstring = "# %s"
|
||||
|
||||
18
runtime/ftplugin/elm.vim
Normal file
18
runtime/ftplugin/elm.vim
Normal file
@@ -0,0 +1,18 @@
|
||||
" Elm filetype plugin file
|
||||
" Language: Elm
|
||||
" Maintainer: Andreas Scharf <as@99n.de>
|
||||
" Latest Revision: 2020-05-29
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=s1fl:{-,mb:\ ,ex:-},:--
|
||||
setlocal commentstring=--\ %s
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: man
|
||||
" Maintainer: Jason Franklin <vim@justemail.net>
|
||||
" Maintainer: SungHyun Nam <goweol@gmail.com>
|
||||
" Last Change: 2020 May 07
|
||||
" Last Change: 2020 Jun 01
|
||||
|
||||
" To make the ":Man" command available before editing a manual page, source
|
||||
" this script from your startup vimrc file.
|
||||
@@ -34,8 +34,8 @@ if &filetype == "man"
|
||||
endif
|
||||
nnoremap <buffer> <Plug>ManBS :%s/.\b//g<CR>:setl nomod<CR>''
|
||||
|
||||
nnoremap <buffer> <c-]> :call <SID>PreGetPage(v:count)<CR>
|
||||
nnoremap <buffer> <c-t> :call <SID>PopPage()<CR>
|
||||
nnoremap <buffer> <silent> <c-]> :call <SID>PreGetPage(v:count)<CR>
|
||||
nnoremap <buffer> <silent> <c-t> :call <SID>PopPage()<CR>
|
||||
nnoremap <buffer> <silent> q :q<CR>
|
||||
|
||||
" Add undo commands for the maps
|
||||
@@ -138,11 +138,11 @@ func <SID>GetPage(cmdmods, ...)
|
||||
endif
|
||||
endif
|
||||
if s:FindPage(sect, page) == 0
|
||||
let msg = "\nNo manual entry for ".page
|
||||
if sect != ""
|
||||
let msg .= " in section ".sect
|
||||
let msg = 'man.vim: no manual entry for "' . page . '"'
|
||||
if !empty(sect)
|
||||
let msg .= ' in section ' . sect
|
||||
endif
|
||||
echo msg
|
||||
echomsg msg
|
||||
return
|
||||
endif
|
||||
exec "let s:man_tag_buf_".s:man_tag_depth." = ".bufnr("%")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Vim
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2020 May 17
|
||||
" Last Change: 2020 Jul 26
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -49,14 +49,14 @@ setlocal isk+=#
|
||||
setlocal keywordprg=:help
|
||||
|
||||
" Set 'comments' to format dashed lists in comments
|
||||
setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
|
||||
setlocal com=sO:\"\ -,mO:\"\ \ ,sO:#\ -,mO:#\ \ ,eO:##,:\",:#
|
||||
|
||||
" Format comments to be up to 78 characters long
|
||||
if &tw == 0
|
||||
setlocal tw=78
|
||||
endif
|
||||
|
||||
" Comments start with a double quote
|
||||
" Comments start with a double quote; in Vim9 script # would also work
|
||||
setlocal commentstring=\"%s
|
||||
|
||||
if !exists("no_plugin_maps") && !exists("no_vim_maps")
|
||||
@@ -83,8 +83,7 @@ endif
|
||||
if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 0
|
||||
let b:match_words =
|
||||
\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
|
||||
\ '\<def\>:\<retu\%[rn]\>:\<enddef\>,' .
|
||||
\ '\<\%(fu\%[nction]\|def\)\>[^(]:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
|
||||
\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
|
||||
\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
|
||||
\ '{:},' .
|
||||
|
||||
@@ -10,5 +10,5 @@ test:
|
||||
VIMRUNTIME=$(VIMRUNTIME) $(VIM) --clean --not-a-term -u testdir/runtest.vim
|
||||
|
||||
|
||||
clean:
|
||||
clean testclean:
|
||||
rm -f testdir/*.fail testdir/*.out
|
||||
|
||||
114
runtime/indent/elm.vim
Normal file
114
runtime/indent/elm.vim
Normal file
@@ -0,0 +1,114 @@
|
||||
" Elm indent plugin file
|
||||
" Language: Elm
|
||||
" Maintainer: Andreas Scharf <as@99n.de>
|
||||
" Original Author: Joseph Hager <ajhager@gmail.com>
|
||||
" Copyright: Joseph Hager <ajhager@gmail.com>
|
||||
" License: BSD3
|
||||
" Latest Revision: 2020-05-29
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
" Local defaults
|
||||
setlocal expandtab
|
||||
setlocal indentexpr=GetElmIndent()
|
||||
setlocal indentkeys+=0=else,0=if,0=of,0=import,0=then,0=type,0\|,0},0\],0),=-},0=in
|
||||
setlocal nolisp
|
||||
setlocal nosmartindent
|
||||
|
||||
" Only define the function once.
|
||||
if exists('*GetElmIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Indent pairs
|
||||
function! s:FindPair(pstart, pmid, pend)
|
||||
"call search(a:pend, 'bW')
|
||||
return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
endfunction
|
||||
|
||||
function! GetElmIndent()
|
||||
let l:lnum = v:lnum - 1
|
||||
|
||||
" Ident 0 if the first line of the file:
|
||||
if l:lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
let l:ind = indent(l:lnum)
|
||||
let l:lline = getline(l:lnum)
|
||||
let l:line = getline(v:lnum)
|
||||
|
||||
" Indent if current line begins with '}':
|
||||
if l:line =~? '^\s*}'
|
||||
return s:FindPair('{', '', '}')
|
||||
|
||||
" Indent if current line begins with 'else':
|
||||
elseif l:line =~# '^\s*else\>'
|
||||
if l:lline !~# '^\s*\(if\|then\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<else\>')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'then':
|
||||
elseif l:line =~# '^\s*then\>'
|
||||
if l:lline !~# '^\s*\(if\|else\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<then\>')
|
||||
endif
|
||||
|
||||
" HACK: Indent lines in case with nearest case clause:
|
||||
elseif l:line =~# '->' && l:line !~# ':' && l:line !~# '\\'
|
||||
return indent(search('^\s*case', 'bWn')) + &shiftwidth
|
||||
|
||||
" HACK: Don't change the indentation if the last line is a comment.
|
||||
elseif l:lline =~# '^\s*--'
|
||||
return l:ind
|
||||
|
||||
" Align the end of block comments with the start
|
||||
elseif l:line =~# '^\s*-}'
|
||||
return indent(search('{-', 'bWn'))
|
||||
|
||||
" Indent double shift after let with an empty rhs
|
||||
elseif l:lline =~# '\<let\>.*\s=$'
|
||||
return l:ind + 4 + &shiftwidth
|
||||
|
||||
" Align 'in' with the parent let.
|
||||
elseif l:line =~# '^\s*in\>'
|
||||
return indent(search('^\s*let', 'bWn'))
|
||||
|
||||
" Align bindings with the parent let.
|
||||
elseif l:lline =~# '\<let\>'
|
||||
return l:ind + 4
|
||||
|
||||
" Align bindings with the parent in.
|
||||
elseif l:lline =~# '^\s*in\>'
|
||||
return l:ind
|
||||
|
||||
endif
|
||||
|
||||
" Add a 'shiftwidth' after lines ending with:
|
||||
if l:lline =~# '\(|\|=\|->\|<-\|(\|\[\|{\|\<\(of\|else\|if\|then\)\)\s*$'
|
||||
let l:ind = l:ind + &shiftwidth
|
||||
|
||||
" Add a 'shiftwidth' after lines starting with type ending with '=':
|
||||
elseif l:lline =~# '^\s*type' && l:line =~# '^\s*='
|
||||
let l:ind = l:ind + &shiftwidth
|
||||
|
||||
" Back to normal indent after comments:
|
||||
elseif l:lline =~# '-}\s*$'
|
||||
call search('-}', 'bW')
|
||||
let l:ind = indent(searchpair('{-', '', '-}', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
|
||||
|
||||
" Ident some operators if there aren't any starting the last line.
|
||||
elseif l:line =~# '^\s*\(!\|&\|(\|`\|+\||\|{\|[\|,\)=' && l:lline !~# '^\s*\(!\|&\|(\|`\|+\||\|{\|[\|,\)=' && l:lline !~# '^\s*$'
|
||||
let l:ind = l:ind + &shiftwidth
|
||||
|
||||
elseif l:lline ==# '' && getline(l:lnum - 1) !=# ''
|
||||
let l:ind = indent(search('^\s*\S+', 'bWn'))
|
||||
|
||||
endif
|
||||
|
||||
return l:ind
|
||||
endfunc
|
||||
@@ -1,9 +1,8 @@
|
||||
" Vim indent script for HTML
|
||||
" Header: "{{{
|
||||
" Maintainer: Bram Moolenaar
|
||||
" Original Author: Andy Wokula <anwoku@yahoo.de>
|
||||
" Last Change: 2019 Mar 20
|
||||
" Version: 1.0
|
||||
" Last Change: 2020 Jul 06
|
||||
" Version: 1.0 "{{{
|
||||
" Description: HTML indent script with cached state for faster indenting on a
|
||||
" range of lines.
|
||||
" Supports template systems through hooks.
|
||||
@@ -223,7 +222,7 @@ endfunc "}}}
|
||||
call s:AddITags(s:indent_tags, [
|
||||
\ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big',
|
||||
\ 'blockquote', 'body', 'button', 'caption', 'center', 'cite', 'code',
|
||||
\ 'colgroup', 'del', 'dfn', 'dir', 'div', 'dl', 'em', 'fieldset', 'font',
|
||||
\ 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'fieldset', 'font',
|
||||
\ 'form', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'html',
|
||||
\ 'i', 'iframe', 'ins', 'kbd', 'label', 'legend', 'li',
|
||||
\ 'map', 'menu', 'noframes', 'noscript', 'object', 'ol',
|
||||
@@ -587,7 +586,7 @@ func! s:Alien3()
|
||||
return eval(b:hi_js1indent)
|
||||
endif
|
||||
if b:hi_indent.scripttype == "javascript"
|
||||
return GetJavascriptIndent()
|
||||
return eval(b:hi_js1indent) + GetJavascriptIndent()
|
||||
else
|
||||
return -1
|
||||
endif
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: SQL
|
||||
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
||||
" Last Change: 2017 Jun 13
|
||||
" Last Change By Maintainer: 2017 Jun 13
|
||||
" Last Change: by Stephen Wall, #5578, 2020 Jun 07
|
||||
" Version: 3.0
|
||||
" Download: http://vim.sourceforge.net/script.php?script_id=495
|
||||
|
||||
@@ -67,68 +68,73 @@ set cpo&vim
|
||||
" IS is excluded, since it is difficult to determine when the
|
||||
" ending block is (especially for procedures/functions).
|
||||
let s:SQLBlockStart = '^\s*\%('.
|
||||
\ 'if\|else\|elseif\|elsif\|'.
|
||||
\ 'while\|loop\|do\|for\|'.
|
||||
\ 'begin\|'.
|
||||
\ 'if\>.*\<then\|'.
|
||||
\ 'then\|else\>\|'.
|
||||
\ 'elseif\>.*\<then\|'.
|
||||
\ 'elsif\>.(\<then\|'.
|
||||
\ 'while\>.*\<loop\|'.
|
||||
\ 'for\>.*\<loop\|'.
|
||||
\ 'foreach\>.*\<loop\|'.
|
||||
\ 'loop\|do\|declare\|begin\|'.
|
||||
\ 'case\|when\|merge\|exception'.
|
||||
\ '\)\>'
|
||||
let s:SQLBlockEnd = '^\s*\(end\)\>'
|
||||
|
||||
" The indent level is also based on unmatched paranethesis
|
||||
" The indent level is also based on unmatched parentheses
|
||||
" If a line has an extra "(" increase the indent
|
||||
" If a line has an extra ")" decrease the indent
|
||||
function! s:CountUnbalancedParan( line, paran_to_check )
|
||||
function! s:CountUnbalancedParen( line, paren_to_check )
|
||||
let l = a:line
|
||||
let lp = substitute(l, '[^(]', '', 'g')
|
||||
let l = a:line
|
||||
let rp = substitute(l, '[^)]', '', 'g')
|
||||
|
||||
if a:paran_to_check =~ ')'
|
||||
" echom 'CountUnbalancedParan ) returning: ' .
|
||||
if a:paren_to_check =~ ')'
|
||||
" echom 'CountUnbalancedParen ) returning: ' .
|
||||
" \ (strlen(rp) - strlen(lp))
|
||||
return (strlen(rp) - strlen(lp))
|
||||
elseif a:paran_to_check =~ '('
|
||||
" echom 'CountUnbalancedParan ( returning: ' .
|
||||
elseif a:paren_to_check =~ '('
|
||||
" echom 'CountUnbalancedParen ( returning: ' .
|
||||
" \ (strlen(lp) - strlen(rp))
|
||||
return (strlen(lp) - strlen(rp))
|
||||
else
|
||||
" echom 'CountUnbalancedParan unknown paran to check: ' .
|
||||
" \ a:paran_to_check
|
||||
" echom 'CountUnbalancedParen unknown paren to check: ' .
|
||||
" \ a:paren_to_check
|
||||
return 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Unindent commands based on previous indent level
|
||||
function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
|
||||
function! s:CheckToIgnoreRightParen( prev_lnum, num_levels )
|
||||
let lnum = a:prev_lnum
|
||||
let line = getline(lnum)
|
||||
let ends = 0
|
||||
let num_right_paran = a:num_levels
|
||||
let ignore_paran = 0
|
||||
let num_right_paren = a:num_levels
|
||||
let ignore_paren = 0
|
||||
let vircol = 1
|
||||
|
||||
while num_right_paran > 0
|
||||
while num_right_paren > 0
|
||||
silent! exec 'norm! '.lnum."G\<bar>".vircol."\<bar>"
|
||||
let right_paran = search( ')', 'W' )
|
||||
if right_paran != lnum
|
||||
let right_paren = search( ')', 'W' )
|
||||
if right_paren != lnum
|
||||
" This should not happen since there should be at least
|
||||
" num_right_paran matches for this line
|
||||
" num_right_paren matches for this line
|
||||
break
|
||||
endif
|
||||
let vircol = virtcol(".")
|
||||
|
||||
" if getline(".") =~ '^)'
|
||||
let matching_paran = searchpair('(', '', ')', 'bW',
|
||||
let matching_paren = searchpair('(', '', ')', 'bW',
|
||||
\ 's:IsColComment(line("."), col("."))')
|
||||
|
||||
if matching_paran < 1
|
||||
if matching_paren < 1
|
||||
" No match found
|
||||
" echom 'CTIRP - no match found, ignoring'
|
||||
break
|
||||
endif
|
||||
|
||||
if matching_paran == lnum
|
||||
" This was not an unmatched parantenses, start the search again
|
||||
if matching_paren == lnum
|
||||
" This was not an unmatched parentheses, start the search again
|
||||
" again after this column
|
||||
" echom 'CTIRP - same line match, ignoring'
|
||||
continue
|
||||
@@ -136,23 +142,23 @@ function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
|
||||
|
||||
" echom 'CTIRP - match: ' . line(".") . ' ' . getline(".")
|
||||
|
||||
if getline(matching_paran) =~? '\(if\|while\)\>'
|
||||
if getline(matching_paren) =~? '\(if\|while\)\>'
|
||||
" echom 'CTIRP - if/while ignored: ' . line(".") . ' ' . getline(".")
|
||||
let ignore_paran = ignore_paran + 1
|
||||
let ignore_paren = ignore_paren + 1
|
||||
endif
|
||||
|
||||
" One match found, decrease and check for further matches
|
||||
let num_right_paran = num_right_paran - 1
|
||||
let num_right_paren = num_right_paren - 1
|
||||
|
||||
endwhile
|
||||
|
||||
" Fallback - just move back one
|
||||
" return a:prev_indent - shiftwidth()
|
||||
return ignore_paran
|
||||
return ignore_paren
|
||||
endfunction
|
||||
|
||||
" Based on the keyword provided, loop through previous non empty
|
||||
" non comment lines to find the statement that initated the keyword.
|
||||
" non comment lines to find the statement that initiated the keyword.
|
||||
" Return its indent level
|
||||
" CASE ..
|
||||
" WHEN ...
|
||||
@@ -295,26 +301,26 @@ function! GetSQLIndent()
|
||||
" echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline
|
||||
elseif prevline =~ '[()]'
|
||||
if prevline =~ '('
|
||||
let num_unmatched_left = s:CountUnbalancedParan( prevline, '(' )
|
||||
let num_unmatched_left = s:CountUnbalancedParen( prevline, '(' )
|
||||
else
|
||||
let num_unmatched_left = 0
|
||||
endif
|
||||
if prevline =~ ')'
|
||||
let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' )
|
||||
let num_unmatched_right = s:CountUnbalancedParen( prevline, ')' )
|
||||
else
|
||||
let num_unmatched_right = 0
|
||||
" let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' )
|
||||
" let num_unmatched_right = s:CountUnbalancedParen( prevline, ')' )
|
||||
endif
|
||||
if num_unmatched_left > 0
|
||||
" There is a open left paranethesis
|
||||
" There is a open left parenthesis
|
||||
" increase indent
|
||||
let ind = ind + ( shiftwidth() * num_unmatched_left )
|
||||
elseif num_unmatched_right > 0
|
||||
" if it is an unbalanced paranethesis only unindent if
|
||||
" if it is an unbalanced parenthesis only unindent if
|
||||
" it was part of a command (ie create table(..) )
|
||||
" instead of part of an if (ie if (....) then) which should
|
||||
" maintain the indent level
|
||||
let ignore = s:CheckToIgnoreRightParan( prevlnum, num_unmatched_right )
|
||||
let ignore = s:CheckToIgnoreRightParen( prevlnum, num_unmatched_right )
|
||||
" echom 'prevl - ) unbalanced - CTIRP - ignore: ' . ignore
|
||||
|
||||
if prevline =~ '^\s*)'
|
||||
@@ -357,8 +363,8 @@ function! GetSQLIndent()
|
||||
" elseif line =~ '^\s*)\s*;\?\s*$'
|
||||
" elseif line =~ '^\s*)'
|
||||
elseif line =~ '^\s*)'
|
||||
let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
|
||||
let ignore = s:CheckToIgnoreRightParan( v:lnum, num_unmatched_right )
|
||||
let num_unmatched_right = s:CountUnbalancedParen( line, ')' )
|
||||
let ignore = s:CheckToIgnoreRightParen( v:lnum, num_unmatched_right )
|
||||
" If the line ends in a ), then reduce the indent
|
||||
" This catches items like:
|
||||
" CREATE TABLE T1(
|
||||
@@ -368,7 +374,7 @@ function! GetSQLIndent()
|
||||
" But we do not want to unindent a line like:
|
||||
" IF ( c1 = 1
|
||||
" AND c2 = 3 ) THEN
|
||||
" let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
|
||||
" let num_unmatched_right = s:CountUnbalancedParen( line, ')' )
|
||||
" if num_unmatched_right > 0
|
||||
" elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
|
||||
" let ind = ind - shiftwidth()
|
||||
|
||||
@@ -2,6 +2,16 @@
|
||||
|
||||
|
||||
" START_INDENT
|
||||
<html>
|
||||
<body>
|
||||
<style>
|
||||
div#d1 { color: red; }
|
||||
div#d2 { color: green; }
|
||||
</style>
|
||||
<script>
|
||||
var v1 = "v1";
|
||||
var v2 = "v2";
|
||||
</script>
|
||||
<div>
|
||||
<div>
|
||||
text
|
||||
@@ -23,4 +33,34 @@ bar">
|
||||
text
|
||||
</div>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
dd text
|
||||
</dd>
|
||||
<dt>
|
||||
dt text
|
||||
</dt>
|
||||
</dl>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
" END_INDENT
|
||||
|
||||
% START_INDENT
|
||||
% INDENT_EXE let g:html_indent_style1 = "inc"
|
||||
% INDENT_EXE let g:html_indent_script1 = "zero"
|
||||
% INDENT_EXE call HtmlIndent_CheckUserSettings()
|
||||
<html>
|
||||
<body>
|
||||
<style>
|
||||
div#d1 { color: red; }
|
||||
div#d2 { color: green; }
|
||||
</style>
|
||||
<script>
|
||||
var v1 = "v1";
|
||||
var v2 = "v2";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
% END_INDENT
|
||||
|
||||
@@ -2,25 +2,65 @@
|
||||
|
||||
|
||||
" START_INDENT
|
||||
<div>
|
||||
<div>
|
||||
text
|
||||
</div>
|
||||
</div>
|
||||
<html>
|
||||
<body>
|
||||
<style>
|
||||
div#d1 { color: red; }
|
||||
div#d2 { color: green; }
|
||||
</style>
|
||||
<script>
|
||||
var v1 = "v1";
|
||||
var v2 = "v2";
|
||||
</script>
|
||||
<div>
|
||||
<div>
|
||||
text
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="foo bar">
|
||||
text
|
||||
</div>
|
||||
<div
|
||||
class="foo bar">
|
||||
text
|
||||
</div>
|
||||
|
||||
<div class="foo bar"
|
||||
data="something">
|
||||
text
|
||||
</div>
|
||||
<div class="foo bar"
|
||||
data="something">
|
||||
text
|
||||
</div>
|
||||
|
||||
<div class="foo
|
||||
bar">
|
||||
text
|
||||
</div>
|
||||
<div class="foo
|
||||
bar">
|
||||
text
|
||||
</div>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
dd text
|
||||
</dd>
|
||||
<dt>
|
||||
dt text
|
||||
</dt>
|
||||
</dl>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
" END_INDENT
|
||||
|
||||
% START_INDENT
|
||||
% INDENT_EXE let g:html_indent_style1 = "inc"
|
||||
% INDENT_EXE let g:html_indent_script1 = "zero"
|
||||
% INDENT_EXE call HtmlIndent_CheckUserSettings()
|
||||
<html>
|
||||
<body>
|
||||
<style>
|
||||
div#d1 { color: red; }
|
||||
div#d2 { color: green; }
|
||||
</style>
|
||||
<script>
|
||||
var v1 = "v1";
|
||||
var v2 = "v2";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
% END_INDENT
|
||||
|
||||
@@ -12,3 +12,8 @@ map2:
|
||||
map: &anchor
|
||||
map: val
|
||||
# END_INDENT
|
||||
|
||||
# START_INDENT
|
||||
map: multiline
|
||||
value
|
||||
# END_INDENT
|
||||
|
||||
@@ -12,3 +12,8 @@ map2:
|
||||
map: &anchor
|
||||
map: val
|
||||
# END_INDENT
|
||||
|
||||
# START_INDENT
|
||||
map: multiline
|
||||
value
|
||||
# END_INDENT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Vim script
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2019 Oct 31
|
||||
" Last Change: 2020 Jul 19
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@@ -11,6 +11,7 @@ let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetVimIndent()
|
||||
setlocal indentkeys+==end,=},=else,=cat,=fina,=END,0\\,0=\"\\\
|
||||
setlocal indentkeys-=0#
|
||||
|
||||
let b:undo_indent = "setl indentkeys< indentexpr<"
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim indent file
|
||||
" Language: YAML
|
||||
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
|
||||
" Last Change: 2019 Sep 28
|
||||
" Language: YAML
|
||||
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
|
||||
" Last Update: Lukas Reineke
|
||||
" Last Change: 2020 Jun 07
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists('b:did_indent')
|
||||
@@ -53,7 +54,7 @@ let s:c_ns_anchor_name = s:c_ns_anchor_char.'+'
|
||||
let s:c_ns_anchor_property = '\v\&'.s:c_ns_anchor_name
|
||||
|
||||
let s:ns_word_char = '\v[[:alnum:]_\-]'
|
||||
let s:ns_tag_char = '\v%(%\x\x|'.s:ns_word_char.'|[#/;?:@&=+$.~*''()])'
|
||||
let s:ns_tag_char = '\v%('.s:ns_word_char.'|[#/;?:@&=+$.~*''()])'
|
||||
let s:c_named_tag_handle = '\v\!'.s:ns_word_char.'+\!'
|
||||
let s:c_secondary_tag_handle = '\v\!\!'
|
||||
let s:c_primary_tag_handle = '\v\!'
|
||||
@@ -62,7 +63,7 @@ let s:c_tag_handle = '\v%('.s:c_named_tag_handle.
|
||||
\ '|'.s:c_primary_tag_handle.')'
|
||||
let s:c_ns_shorthand_tag = '\v'.s:c_tag_handle . s:ns_tag_char.'+'
|
||||
let s:c_non_specific_tag = '\v\!'
|
||||
let s:ns_uri_char = '\v%(%\x\x|'.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])'
|
||||
let s:ns_uri_char = '\v%('.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])'
|
||||
let s:c_verbatim_tag = '\v\!\<'.s:ns_uri_char.'+\>'
|
||||
let s:c_ns_tag_property = '\v'.s:c_verbatim_tag.
|
||||
\ '\v|'.s:c_ns_shorthand_tag.
|
||||
|
||||
@@ -453,12 +453,12 @@ if has("spell")
|
||||
an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us" :set spl=en_us spell<CR>
|
||||
an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
|
||||
|
||||
let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
|
||||
let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
|
||||
func s:SpellLang()
|
||||
for cmd in s:undo_spellang
|
||||
for cmd in s:undo_spelllang
|
||||
exe "silent! " . cmd
|
||||
endfor
|
||||
let s:undo_spellang = []
|
||||
let s:undo_spelllang = []
|
||||
|
||||
if &enc == "iso-8859-15"
|
||||
let enc = "latin1"
|
||||
@@ -481,7 +481,7 @@ if has("spell")
|
||||
let found += 1
|
||||
let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
|
||||
exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
|
||||
let s:undo_spellang += ['aun ' . menuname]
|
||||
let s:undo_spelllang += ['aun ' . menuname]
|
||||
endif
|
||||
let n += 10
|
||||
endfor
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2019 Nov 07
|
||||
" Last Change: 2020 Jun 10
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
let buf = bufnr('option-window')
|
||||
@@ -447,6 +447,9 @@ if has("syntax")
|
||||
call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
|
||||
call append("$", "\t(local to buffer)")
|
||||
call <SID>OptionL("spc")
|
||||
call append("$", "spelloptions\tflags to change how spell checking works")
|
||||
call append("$", "\t(local to buffer)")
|
||||
call <SID>OptionL("spo")
|
||||
call append("$", "spellsuggest\tmethods used to suggest corrections")
|
||||
call <SID>OptionG("sps", &sps)
|
||||
call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
|
||||
@@ -1153,7 +1156,7 @@ call <SID>BinOptionG("warn", &warn)
|
||||
|
||||
|
||||
if has("quickfix")
|
||||
call <SID>Header("running make and jumping to errors")
|
||||
call <SID>Header("running make and jumping to errors (quickfix)")
|
||||
call append("$", "errorfile\tname of the file that contains error messages")
|
||||
call <SID>OptionG("ef", &ef)
|
||||
call append("$", "errorformat\tlist of formats for error messages")
|
||||
@@ -1174,6 +1177,8 @@ if has("quickfix")
|
||||
call append("$", "makeencoding\tencoding of the \":make\" and \":grep\" output")
|
||||
call append("$", "\t(global or local to buffer)")
|
||||
call <SID>OptionG("menc", &menc)
|
||||
call append("$", "quickfixtextfunc\tfunction to display text in the quickfix window")
|
||||
call <SID>OptionG("qftf", &qftf)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"
|
||||
" Author: Bram Moolenaar
|
||||
" Copyright: Vim license applies, see ":help license"
|
||||
" Last Change: 2020 May 22
|
||||
" Last Change: 2020 Jul 12
|
||||
"
|
||||
" WORK IN PROGRESS - Only the basics work
|
||||
" Note: On MS-Windows you need a recent version of gdb. The one included with
|
||||
@@ -710,7 +710,7 @@ func s:DeleteCommands()
|
||||
delcommand Source
|
||||
delcommand Winbar
|
||||
|
||||
if exists('s:k_map_saved')
|
||||
if exists('s:k_map_saved') && !empty(s:k_map_saved)
|
||||
call mapset('n', 0, s:k_map_saved)
|
||||
unlet s:k_map_saved
|
||||
endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim plugin for showing matching parens
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2019 Oct 28
|
||||
" Last Change: 2020 Jun 18
|
||||
|
||||
" Exit quickly when:
|
||||
" - this plugin was already loaded (or disabled)
|
||||
@@ -21,6 +21,7 @@ endif
|
||||
augroup matchparen
|
||||
" Replace all matchparen autocommands
|
||||
autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair()
|
||||
autocmd! WinLeave * call s:Remove_Matches()
|
||||
if exists('##TextChanged')
|
||||
autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
|
||||
endif
|
||||
@@ -38,10 +39,7 @@ set cpo-=C
|
||||
" for any matching paren.
|
||||
func s:Highlight_Matching_Pair()
|
||||
" Remove any previous match.
|
||||
if exists('w:paren_hl_on') && w:paren_hl_on
|
||||
silent! call matchdelete(3)
|
||||
let w:paren_hl_on = 0
|
||||
endif
|
||||
call s:Remove_Matches()
|
||||
|
||||
" Avoid that we remove the popup menu.
|
||||
" Return when there are no colors (looks like the cursor jumps).
|
||||
@@ -195,6 +193,14 @@ func s:Highlight_Matching_Pair()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
func s:Remove_Matches()
|
||||
if exists('w:paren_hl_on') && w:paren_hl_on
|
||||
silent! call matchdelete(3)
|
||||
let w:paren_hl_on = 0
|
||||
endif
|
||||
endfunc
|
||||
|
||||
|
||||
" Define commands that will disable and enable the plugin.
|
||||
command DoMatchParen call s:DoMatchParen()
|
||||
command NoMatchParen call s:NoMatchParen()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types in scripts
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last change: 2020 Mar 06
|
||||
" Last change: 2020 Jun 07
|
||||
|
||||
" This file is called by an autocommand for every file that has just been
|
||||
" loaded into a buffer. It checks if the type of file can be recognized by
|
||||
@@ -35,10 +35,12 @@ let s:line1 = getline(1)
|
||||
if s:line1 =~# "^#!"
|
||||
" A script that starts with "#!".
|
||||
|
||||
" Check for a line like "#!/usr/bin/env VAR=val bash". Turn it into
|
||||
" Check for a line like "#!/usr/bin/env {options} bash". Turn it into
|
||||
" "#!/usr/bin/bash" to make matching easier.
|
||||
" Recognize only a few {options} that are commonly used.
|
||||
if s:line1 =~# '^#!\s*\S*\<env\s'
|
||||
let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g')
|
||||
let s:line1 = substitute(s:line1, '\(-[iS]\|--ignore-environment\|--split-string\)', '', '')
|
||||
let s:line1 = substitute(s:line1, '\<env\s\+', '', '')
|
||||
endif
|
||||
|
||||
|
||||
81
runtime/spell/eu/main.aap
Normal file
81
runtime/spell/eu/main.aap
Normal file
@@ -0,0 +1,81 @@
|
||||
# Aap recipe for Basque Vim spell files.
|
||||
#
|
||||
# NOTE: This takes a VERY long time: several hours on a modern PC, more than
|
||||
# a day on older systems.
|
||||
|
||||
# Select the amount of memory that can be used.
|
||||
# Default.
|
||||
#SETTING = 'set mkspellmem=460000,2000,500'
|
||||
|
||||
# For about 1 Tbyte of RAM.
|
||||
#SETTING = 'set mkspellmem=900000,4000,1000'
|
||||
|
||||
# For about 2 Tbyte of RAM.
|
||||
#SETTING = 'set mkspellmem=1900000,8000,2000'
|
||||
|
||||
# For about 4 Tbyte of RAM.
|
||||
#SETTING = 'set mkspellmem=3900000,16000,4000'
|
||||
|
||||
# For about 8 Tbyte of RAM.
|
||||
SETTING = 'set mkspellmem=7900000,30000,8000'
|
||||
|
||||
|
||||
# Use a freshly compiled Vim if it exists.
|
||||
@if os.path.exists('../../../src/vim'):
|
||||
VIM = ../../../src/vim
|
||||
@else:
|
||||
:progsearch VIM vim
|
||||
|
||||
SPELLDIR = ..
|
||||
FILES = eu_ES.aff eu_ES.dic
|
||||
|
||||
all: $SPELLDIR/eu.utf-8.spl ../README_eu.txt
|
||||
|
||||
$SPELLDIR/eu.utf-8.spl : $FILES
|
||||
:sys env LANG=eu_ES.UTF-8
|
||||
$VIM -u NONE -e -c $SETTING -c "mkspell! $SPELLDIR/eu eu_ES" -c q
|
||||
|
||||
#
|
||||
# Fetching the files.
|
||||
# URL suggested by Zuhaitz Beloki Leiza.
|
||||
#
|
||||
:attr {fetch = http://xuxen.eus/static/hunspell/xuxen_5.1_hunspell.tar.gz} xuxen_5.1_hunspell.tar.gz
|
||||
|
||||
# The files don't depend on the tar file so that we can delete it.
|
||||
# Only download the tar file if the targets don't exist.
|
||||
eu_ES.aff eu_ES.dic: {buildcheck=}
|
||||
:assertpkg tar
|
||||
:fetch xuxen_5.1_hunspell.tar.gz
|
||||
:sys tar xf xuxen_5.1_hunspell.tar.gz
|
||||
:update cleanunused
|
||||
@if not os.path.exists('eu_ES.orig.aff'):
|
||||
:copy eu_ES.aff eu_ES.orig.aff
|
||||
@if not os.path.exists('eu_ES.orig.dic'):
|
||||
:copy eu_ES.dic eu_ES.orig.dic
|
||||
@if os.path.exists('eu_ES.diff'):
|
||||
:sys patch <eu_ES.diff
|
||||
|
||||
../README_eu.txt : LICENSE.txt
|
||||
:cat $source >! $target
|
||||
|
||||
# Delete all the files unpacked from the archive
|
||||
clean: cleanunused
|
||||
:delete {f} eu_ES.dic
|
||||
:delete {f} eu_ES.aff
|
||||
|
||||
# Delete all the files from the archive that are not used, including the
|
||||
# archive itself.
|
||||
cleanunused:
|
||||
:delete {f} xuxen_5.1_hunspell.tar.gz
|
||||
|
||||
# Generate diff files, so that others can get the files and apply
|
||||
# the diffs to get the Vim versions.
|
||||
|
||||
diff:
|
||||
:assertpkg diff
|
||||
:sys {force} diff -a -C 1 eu_ES.orig.aff eu_ES.aff >eu_ES.diff
|
||||
:sys {force} diff -a -C 1 eu_ES.orig.dic eu_ES.dic >>eu_ES.diff
|
||||
|
||||
|
||||
|
||||
# vim: set sts=4 sw=4 :
|
||||
@@ -5,9 +5,10 @@
|
||||
# aap diff create all the diff files
|
||||
|
||||
# "hu" is at the end, because it takes a very long time.
|
||||
# "eu" takes even longer (4 hours on my system).
|
||||
LANG = af am bg br ca cs cy da de el en eo es fr fo ga gd gl he hr id it
|
||||
ku la lt lv mg mi ms nb nl nn ny pl pt ro ru rw sk sl sv sw
|
||||
tet th tl tn tr uk yi zu hu
|
||||
tet th tl tn tr uk yi zu hu eu
|
||||
|
||||
# TODO:
|
||||
# Finnish doesn't work, the dictionary fi_FI.zip file contains hyphenation...
|
||||
@@ -15,6 +16,12 @@ LANG = af am bg br ca cs cy da de el en eo es fr fo ga gd gl he hr id it
|
||||
diff: $*LANG/diff
|
||||
:print Done.
|
||||
|
||||
# Use "aap publish" to upload the .spl files.
|
||||
SPL_files = eu.utf-8.spl
|
||||
|
||||
UPDIR = rsync://bram@ftp1.nluug.nl//var/ftp/pub/vim/runtime/spell
|
||||
:attr {publish = $UPDIR/%file%} $SPL_files
|
||||
|
||||
@for l in string.split(_no.LANG):
|
||||
:child $l/main.aap
|
||||
|
||||
|
||||
23
runtime/syntax/aidl.vim
Normal file
23
runtime/syntax/aidl.vim
Normal file
@@ -0,0 +1,23 @@
|
||||
" Vim syntax file
|
||||
" Language: aidl (Android Interface Definition Language)
|
||||
" https://developer.android.com/guide/components/aidl
|
||||
" Maintainer: Dominique Pelle <dominique.pelle@tomtom.com>
|
||||
" LastChange: 2020/07/25
|
||||
|
||||
" Quit when a syntax file was already loaded.
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
source <sfile>:p:h/java.vim
|
||||
|
||||
syn keyword aidlParamDir in out inout
|
||||
syn keyword aidlKeyword oneway parcelable
|
||||
|
||||
" Needed for the 'in', 'out', 'inout' keywords to be highlighted.
|
||||
syn cluster javaTop add=aidlParamDir
|
||||
|
||||
hi def link aidlParamDir StorageClass
|
||||
hi def link aidlKeyword Keyword
|
||||
|
||||
let b:current_syntax = "aidl"
|
||||
@@ -1,107 +1,267 @@
|
||||
" Vim syntax file
|
||||
" Language: .desktop, .directory files
|
||||
" according to freedesktop.org specification 0.9.4
|
||||
" http://pdx.freedesktop.org/Standards/desktop-entry-spec/desktop-entry-spec-0.9.4.html
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2016 Apr 02
|
||||
" (added "Keywords")
|
||||
" Version Info: desktop.vim 0.9.4-1.2
|
||||
" Language: XDG desktop entry
|
||||
" Filenames: *.desktop, *.directory
|
||||
" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
|
||||
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2020-06-11
|
||||
" Version Info: desktop.vim 1.5
|
||||
" References:
|
||||
" - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27)
|
||||
" - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07)
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
" This syntax file can be used to all *nix configuration files similar to dos
|
||||
" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. But
|
||||
" you can also enforce strict following of freedesktop.org standard for
|
||||
" .desktop and .directory files . Set (eg. in vimrc)
|
||||
" let enforce_freedesktop_standard = 1
|
||||
" and nonstandard extensions not following X- notation will not be highlighted.
|
||||
if exists("enforce_freedesktop_standard")
|
||||
let b:enforce_freedesktop_standard = 1
|
||||
else
|
||||
let b:enforce_freedesktop_standard = 0
|
||||
endif
|
||||
|
||||
" case on
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
syn case match
|
||||
|
||||
" General
|
||||
if b:enforce_freedesktop_standard == 0
|
||||
syn match dtNotStLabel "^.\{-}=\@=" nextgroup=dtDelim
|
||||
" Variable {{{1
|
||||
" This syntax file can be used to all *nix configuration files similar to dos
|
||||
" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode.
|
||||
" By default strict following of freedesktop.org standard is enforced.
|
||||
" To highlight nonstandard extensions that does not begin with X-, set
|
||||
" let g:desktop_enable_nonstd = v:true
|
||||
" Note that this may cause wrong highlight.
|
||||
" To highlight KDE-reserved features, set
|
||||
" let g:desktop_enable_kde = v:true
|
||||
" g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
|
||||
|
||||
if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd
|
||||
let s:desktop_enable_nonstd = v:true
|
||||
else
|
||||
let s:desktop_enable_nonstd = v:false
|
||||
endif
|
||||
|
||||
syn match dtGroup /^\s*\[.*\]/
|
||||
syn match dtComment /^\s*#.*$/
|
||||
syn match dtDelim /=/ contained
|
||||
if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd
|
||||
let s:desktop_enable_kde = v:true
|
||||
else
|
||||
let s:desktop_enable_kde = v:false
|
||||
endif
|
||||
|
||||
" Locale
|
||||
syn match dtLocale /^\s*\<\(Name\|GenericName\|Comment\|SwallowTitle\|Icon\|UnmountIcon\)\>.*/ contains=dtLocaleKey,dtLocaleName,dtDelim transparent
|
||||
syn keyword dtLocaleKey Name GenericName Comment SwallowTitle Icon UnmountIcon nextgroup=dtLocaleName containedin=dtLocale
|
||||
syn match dtLocaleName /\(\[.\{-}\]\s*=\@=\|\)/ nextgroup=dtDelim containedin=dtLocale contained
|
||||
" Comment {{{1
|
||||
syn match dtComment /^#.*$/
|
||||
|
||||
" Numeric
|
||||
syn match dtNumeric /^\s*\<Version\>/ contains=dtNumericKey,dtDelim
|
||||
syn keyword dtNumericKey Version nextgroup=dtDelim containedin=dtNumeric contained
|
||||
" Error {{{1
|
||||
syn match dtError /\%(^\s.*\|\s\+$\)/
|
||||
|
||||
" Boolean
|
||||
syn match dtBoolean /^\s*\<\(StartupNotify\|ReadOnly\|Terminal\|Hidden\|NoDisplay\)\>.*/ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
|
||||
syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgroup=dtDelim containedin=dtBoolean contained
|
||||
syn keyword dtBooleanValue true false containedin=dtBoolean contained
|
||||
" Group Header {{{1
|
||||
" ASCII printable characters except for brackets [ (0x5B) and ] (0x5D)
|
||||
syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/
|
||||
|
||||
" String
|
||||
syn match dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Keywords\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
|
||||
syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Keywords Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
|
||||
" Entries {{{1
|
||||
syn match dtDelim /=/ contained
|
||||
" lang_territory.codeset@modifier
|
||||
syn match dtLocaleSuffix
|
||||
\ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/
|
||||
\ contained
|
||||
|
||||
" Exec
|
||||
syn match dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
|
||||
syn keyword dtExecKey Exec TryExec SwallowExec nextgroup=dtDelim containedin=dtExec contained
|
||||
syn match dtExecParam /%[fFuUnNdDickv]/ containedin=dtExec contained
|
||||
" Boolean Value {{{2
|
||||
syn match dtBoolean
|
||||
\ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/
|
||||
\ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
|
||||
syn keyword dtBooleanKey
|
||||
\ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU StartupNotify Terminal
|
||||
\ contained nextgroup=dtDelim
|
||||
|
||||
" Type
|
||||
syn match dtType /^\s*\<Type\>.*/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
|
||||
syn keyword dtTypeKey Type nextgroup=dtDelim containedin=dtType contained
|
||||
syn keyword dtTypeValue Application Link FSDevice Directory containedin=dtType contained
|
||||
if s:desktop_enable_kde
|
||||
syn match dtBoolean
|
||||
\ /^ReadOnly\s*=\s*\%(true\|false\)/
|
||||
\ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
|
||||
syn keyword dtBooleanKey
|
||||
\ ReadOnly
|
||||
\ contained nextgroup=dtDelim
|
||||
endif
|
||||
syn keyword dtBooleanValue true false contained
|
||||
|
||||
" X-Addition
|
||||
syn match dtXAdd /^\s*X-.*/ contains=dtXAddKey,dtDelim transparent
|
||||
syn match dtXAddKey /^\s*X-.\{-}\s*=\@=/ nextgroup=dtDelim containedin=dtXAdd contains=dtXLocale contained
|
||||
" Numeric Value {{{2
|
||||
" icon theme
|
||||
syn match dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
|
||||
syn keyword dtNumericKey
|
||||
\ MaxSize MinSize Size Threshold
|
||||
\ contained nextgroup=dtDelim
|
||||
|
||||
" Locale for X-Addition
|
||||
syn match dtXLocale /\[.\{-}\]\s*=\@=/ containedin=dtXAddKey contained
|
||||
if s:desktop_enable_kde
|
||||
syn match dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
|
||||
syn keyword dtNumericKey
|
||||
\ InitialPreference
|
||||
\ contained nextgroup=dtDelim
|
||||
endif
|
||||
|
||||
" Locale for all
|
||||
syn match dtALocale /\[.\{-}\]\s*=\@=/ containedin=ALL
|
||||
syn match dtNumericDecimal /\<\d\+$/ contained
|
||||
|
||||
" String Value {{{2
|
||||
syn match dtString
|
||||
\ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/
|
||||
\ contains=dtStringKey,dtDelim transparent
|
||||
syn keyword dtStringKey
|
||||
\ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version
|
||||
\ contained nextgroup=dtDelim
|
||||
|
||||
" icon theme
|
||||
syn match dtString
|
||||
\ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/
|
||||
\ contains=dtStringKey,dtDelim transparent
|
||||
syn keyword dtStringKey
|
||||
\ Context Directories Example Inherits
|
||||
\ contained nextgroup=dtDelim
|
||||
|
||||
if s:desktop_enable_kde
|
||||
syn match dtString
|
||||
\ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/
|
||||
\ contains=dtStringKey,dtDelim transparent
|
||||
syn keyword dtStringKey
|
||||
\ Dev DocPath FSType MountPoint ServiceTypes
|
||||
\ contained nextgroup=dtDelim
|
||||
endif
|
||||
|
||||
" Categories {{{3
|
||||
" https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
|
||||
syn match dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent
|
||||
syn keyword dtCategoriesKey
|
||||
\ Categories
|
||||
\ contained nextgroup=dtDelim
|
||||
|
||||
" Main Categories
|
||||
syn keyword dtCategoriesValue
|
||||
\ Audio AudioVideo Development Education Game Graphics Network Office
|
||||
\ Settings System Utility Video
|
||||
\ contained
|
||||
|
||||
" Additional Categories
|
||||
syn keyword dtCategoriesValue
|
||||
\ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics
|
||||
\ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving
|
||||
\ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology
|
||||
\ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat
|
||||
\ Chemistry Clock Compression ComputerScience ConsoleOnly Construction
|
||||
\ ContactManagement Core DataVisualization Database Debugger
|
||||
\ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy
|
||||
\ Electricity Electronics Email Emulator Engineering FileManager
|
||||
\ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK
|
||||
\ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings
|
||||
\ History IDE IRCClient ImageProcessing InstantMessaging Java KDE
|
||||
\ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi
|
||||
\ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA
|
||||
\ PackageManager ParallelComputing Photography Physics Player
|
||||
\ Presentation Printing Profiling ProjectManagement Publishing Qt
|
||||
\ RasterGraphics Recorder RemoteAccess RevisionControl Robotics
|
||||
\ RolePlaying Scanning Science Security Sequencer Simulation Sports
|
||||
\ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools
|
||||
\ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics
|
||||
\ VideoConference Viewer WebBrowser WebDevelopment WordProcessor
|
||||
\ contained
|
||||
|
||||
" Reserved Category
|
||||
syn keyword dtCategoriesValue
|
||||
\ Applet Screensaver Shell TrayIcon
|
||||
\ contained
|
||||
|
||||
" Exec/TryExec {{{3
|
||||
syn match dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent
|
||||
syn keyword dtExecKey
|
||||
\ Exec TryExec
|
||||
\ contained nextgroup=dtDelim
|
||||
" code for file(s), URL(s), etc
|
||||
syn match dtExecParam /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained
|
||||
|
||||
" Type {{{3
|
||||
syn match dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
|
||||
syn keyword dtTypeKey
|
||||
\ Type
|
||||
\ contained nextgroup=dtDelim
|
||||
syn keyword dtTypeValue
|
||||
\ Application Directory Link
|
||||
\ contained
|
||||
|
||||
if s:desktop_enable_kde
|
||||
syn keyword dtTypeValue
|
||||
\ FSDevice Service ServiceType
|
||||
\ contained
|
||||
endif
|
||||
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
" Version {{{3
|
||||
syn match dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent
|
||||
syn keyword dtVersionKey
|
||||
\ Version
|
||||
\ contained nextgroup=dtDelim
|
||||
syn match dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained
|
||||
|
||||
hi def link dtGroup Special
|
||||
hi def link dtComment Comment
|
||||
hi def link dtDelim String
|
||||
" Localestring Value {{{2
|
||||
syn match dtLocalestring
|
||||
\ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/
|
||||
\ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent
|
||||
syn keyword dtLocalestringKey
|
||||
\ Comment GenericName Keywords Name
|
||||
\ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
|
||||
|
||||
hi def link dtLocaleKey Type
|
||||
hi def link dtLocaleName Identifier
|
||||
hi def link dtXLocale Identifier
|
||||
hi def link dtALocale Identifier
|
||||
" Iconstring Value {{{2
|
||||
syn match dtIconstring
|
||||
\ /^Icon\s*=.*\S/
|
||||
\ contains=dtIconstringKey,dtDelim transparent
|
||||
syn keyword dtIconstringKey
|
||||
\ Icon
|
||||
\ contained nextgroup=dtDelim skipwhite
|
||||
|
||||
hi def link dtNumericKey Type
|
||||
if s:desktop_enable_kde
|
||||
syn match dtIconstring
|
||||
\ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/
|
||||
\ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent
|
||||
syn keyword dtIconstringKey
|
||||
\ UnmountIcon
|
||||
\ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
|
||||
endif
|
||||
|
||||
hi def link dtBooleanKey Type
|
||||
hi def link dtBooleanValue Constant
|
||||
" X-Extension {{{2
|
||||
syn match dtXExtension /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/
|
||||
\ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent
|
||||
syn match dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim
|
||||
|
||||
hi def link dtStringKey Type
|
||||
" non standard {{{2
|
||||
if s:desktop_enable_nonstd
|
||||
syn match dtNonStdLabel /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/
|
||||
\ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent
|
||||
syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim
|
||||
endif
|
||||
|
||||
hi def link dtExecKey Type
|
||||
hi def link dtExecParam Special
|
||||
hi def link dtTypeKey Type
|
||||
hi def link dtTypeValue Constant
|
||||
hi def link dtNotStLabel Type
|
||||
hi def link dtXAddKey Type
|
||||
" Highlight {{{1
|
||||
hi def link dtComment Comment
|
||||
hi def link dtError Error
|
||||
|
||||
hi def link dtGroup Special
|
||||
|
||||
hi def link dtDelim Delimiter
|
||||
hi def link dtLocaleSuffix Identifier
|
||||
|
||||
hi def link dtBooleanKey Type
|
||||
hi def link dtBooleanValue Boolean
|
||||
|
||||
hi def link dtNumericKey Type
|
||||
hi def link dtNumericDecimal Number
|
||||
|
||||
hi def link dtStringKey Type
|
||||
hi def link dtCategoriesKey Type
|
||||
hi def link dtCategoriesValue Constant
|
||||
hi def link dtExecKey Type
|
||||
hi def link dtExecParam Special
|
||||
hi def link dtTypeKey Type
|
||||
hi def link dtTypeValue Constant
|
||||
hi def link dtVersionKey Type
|
||||
hi def link dtVersionValue Constant
|
||||
|
||||
hi def link dtLocalestringKey Type
|
||||
|
||||
hi def link dtIconStringKey Type
|
||||
|
||||
hi def link dtXExtensionKey Type
|
||||
|
||||
hi def link dtNonStdLabelKey Type
|
||||
|
||||
" Clean Up {{{1
|
||||
let b:current_syntax = "desktop"
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
" vim:ts=8
|
||||
" vim:ts=8:sw=2:fdm=marker
|
||||
|
||||
105
runtime/syntax/elm.vim
Normal file
105
runtime/syntax/elm.vim
Normal file
@@ -0,0 +1,105 @@
|
||||
" Vim syntax file
|
||||
" Language: Elm
|
||||
" Maintainer: Andreas Scharf <as@99n.de>
|
||||
" Original Author: Joseph Hager <ajhager@gmail.com>
|
||||
" Copyright: Joseph Hager <ajhager@gmail.com>
|
||||
" License: BSD3
|
||||
" Latest Revision: 2020-05-29
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Keywords
|
||||
syn keyword elmConditional else if of then case
|
||||
syn keyword elmAlias alias
|
||||
syn keyword elmTypedef contained type port
|
||||
syn keyword elmImport exposing as import module where
|
||||
|
||||
" Operators
|
||||
" elm/core
|
||||
syn match elmOperator contained "\(<|\||>\|||\|&&\|==\|/=\|<=\|>=\|++\|::\|+\|-\|*\|/\|//\|^\|<>\|>>\|<<\|<\|>\|%\)"
|
||||
" elm/parser
|
||||
syn match elmOperator contained "\(|.\||=\)"
|
||||
" elm/url
|
||||
syn match elmOperator contained "\(</>\|<?>\)"
|
||||
|
||||
" Types
|
||||
syn match elmType "\<[A-Z][0-9A-Za-z_-]*"
|
||||
syn keyword elmNumberType number
|
||||
|
||||
" Modules
|
||||
syn match elmModule "\<\([A-Z][0-9A-Za-z_'-\.]*\)\+\.[A-Za-z]"me=e-2
|
||||
syn match elmModule "^\(module\|import\)\s\+[A-Z][0-9A-Za-z_'-\.]*\(\s\+as\s\+[A-Z][0-9A-Za-z_'-\.]*\)\?\(\s\+exposing\)\?" contains=elmImport
|
||||
|
||||
" Delimiters
|
||||
syn match elmDelimiter "[,;]"
|
||||
syn match elmBraces "[()[\]{}]"
|
||||
|
||||
" Functions
|
||||
syn match elmTupleFunction "\((,\+)\)"
|
||||
|
||||
" Comments
|
||||
syn keyword elmTodo TODO FIXME XXX contained
|
||||
syn match elmLineComment "--.*" contains=elmTodo,@spell
|
||||
syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell fold
|
||||
|
||||
" Strings
|
||||
syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained
|
||||
syn match elmStringEscape "\\[nrfvbt\\\"]" contained
|
||||
syn region elmString start="\"" skip="\\\"" end="\"" contains=elmStringEscape,@spell
|
||||
syn region elmTripleString start="\"\"\"" skip="\\\"" end="\"\"\"" contains=elmStringEscape,@spell
|
||||
syn match elmChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
|
||||
|
||||
" Lambda
|
||||
syn region elmLambdaFunc start="\\"hs=s+1 end="->"he=e-2
|
||||
|
||||
" Debug
|
||||
syn match elmDebug "Debug.\(log\|todo\|toString\)"
|
||||
|
||||
" Numbers
|
||||
syn match elmInt "-\?\<\d\+\>"
|
||||
syn match elmFloat "-\?\(\<\d\+\.\d\+\>\)"
|
||||
|
||||
" Identifiers
|
||||
syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\(\r\n\|\r\|\n\|\s\)\+" contains=elmOperator
|
||||
syn match elmFuncName /^\l\w*/
|
||||
|
||||
" Folding
|
||||
syn region elmTopLevelTypedef start="type" end="\n\(\n\n\)\@=" contains=ALL fold
|
||||
syn region elmTopLevelFunction start="^[a-zA-Z].\+\n[a-zA-Z].\+=" end="^\(\n\+\)\@=" contains=ALL fold
|
||||
syn region elmCaseBlock matchgroup=elmCaseBlockDefinition start="^\z\(\s\+\)\<case\>" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\n\z1\@!\(\n\n\)\@=" contains=ALL fold
|
||||
syn region elmCaseItemBlock start="^\z\(\s\+\).\+->$" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\(\n\z1\S\)\@=" contains=ALL fold
|
||||
syn region elmLetBlock matchgroup=elmLetBlockDefinition start="\<let\>" end="\<in\>" contains=ALL fold
|
||||
|
||||
hi def link elmFuncName Function
|
||||
hi def link elmCaseBlockDefinition Conditional
|
||||
hi def link elmCaseBlockItemDefinition Conditional
|
||||
hi def link elmLetBlockDefinition TypeDef
|
||||
hi def link elmTopLevelDecl Function
|
||||
hi def link elmTupleFunction Normal
|
||||
hi def link elmTodo Todo
|
||||
hi def link elmComment Comment
|
||||
hi def link elmLineComment Comment
|
||||
hi def link elmString String
|
||||
hi def link elmTripleString String
|
||||
hi def link elmChar String
|
||||
hi def link elmStringEscape Special
|
||||
hi def link elmInt Number
|
||||
hi def link elmFloat Float
|
||||
hi def link elmDelimiter Delimiter
|
||||
hi def link elmBraces Delimiter
|
||||
hi def link elmTypedef TypeDef
|
||||
hi def link elmImport Include
|
||||
hi def link elmConditional Conditional
|
||||
hi def link elmAlias Delimiter
|
||||
hi def link elmOperator Operator
|
||||
hi def link elmType Type
|
||||
hi def link elmNumberType Identifier
|
||||
hi def link elmLambdaFunc Function
|
||||
hi def link elmDebug Debug
|
||||
hi def link elmModule Type
|
||||
|
||||
syn sync minlines=500
|
||||
|
||||
let b:current_syntax = 'elm'
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Objective-C
|
||||
" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@gmail.com>
|
||||
" Last Change: 2015 Dec 14
|
||||
" Last Change: 2020 Jun 07
|
||||
" Last Change By Maintainer: 2015 Dec 14
|
||||
|
||||
""" Preparation for loading ObjC stuff
|
||||
if exists("b:current_syntax")
|
||||
@@ -24,7 +25,7 @@ syn keyword objcUsefulTerm nil Nil NO YES
|
||||
|
||||
" Preprocessor Directives
|
||||
syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match objcImported display contained "\(<\h[-a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
|
||||
syn match objcImported display contained "\(<\h[-+a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
|
||||
syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported
|
||||
|
||||
" ObjC Compiler Directives
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: TeX
|
||||
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
|
||||
" Last Change: May 19, 2020
|
||||
" Version: 117
|
||||
" Last Change: Jun 29, 2020
|
||||
" Version: 119
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
|
||||
"
|
||||
" Notes: {{{1
|
||||
@@ -147,6 +147,11 @@ if exists("g:tex_nospell") && g:tex_nospell
|
||||
else
|
||||
let s:tex_nospell = 0
|
||||
endif
|
||||
if exists("g:tex_matchcheck")
|
||||
let s:tex_matchcheck= g:tex_matchcheck
|
||||
else
|
||||
let s:tex_matchcheck= '[({[]'
|
||||
endif
|
||||
if exists("g:tex_excludematcher")
|
||||
let s:tex_excludematcher= g:tex_excludematcher
|
||||
else
|
||||
@@ -205,27 +210,41 @@ if !exists("g:tex_no_math")
|
||||
endif
|
||||
endif
|
||||
|
||||
" Try to flag {} and () mismatches: {{{1
|
||||
" Try to flag {}, [], and () mismatches: {{{1
|
||||
if s:tex_fast =~# 'm'
|
||||
if !s:tex_no_error
|
||||
syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
|
||||
syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
|
||||
syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
|
||||
syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
|
||||
if s:tex_matchcheck =~ '{'
|
||||
syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
|
||||
syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
|
||||
endif
|
||||
if s:tex_matchcheck =~ '\['
|
||||
syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
|
||||
syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
|
||||
endif
|
||||
else
|
||||
syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
|
||||
syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup
|
||||
syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
|
||||
syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup
|
||||
if s:tex_matchcheck =~ '{'
|
||||
syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
|
||||
syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
|
||||
endif
|
||||
if s:tex_matchcheck =~ '\['
|
||||
syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup
|
||||
syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup
|
||||
endif
|
||||
endif
|
||||
if !s:tex_nospell
|
||||
syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
|
||||
else
|
||||
syn region texParen start="(" end=")" transparent contains=@texMatchGroup
|
||||
if s:tex_matchcheck =~ '('
|
||||
if !s:tex_nospell
|
||||
syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
|
||||
else
|
||||
syn region texParen start="(" end=")" transparent contains=@texMatchGroup
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
if !s:tex_no_error
|
||||
syn match texError "[}\])]"
|
||||
if s:tex_matchcheck =~ '('
|
||||
syn match texError "[}\]]"
|
||||
else
|
||||
syn match texError "[}\])]"
|
||||
endif
|
||||
endif
|
||||
if s:tex_fast =~# 'M'
|
||||
if !exists("g:tex_no_math")
|
||||
@@ -755,6 +774,8 @@ if has("conceal") && &enc == 'utf-8'
|
||||
\ ['lceil' , '⌈'],
|
||||
\ ['ldots' , '…'],
|
||||
\ ['le' , '≤'],
|
||||
\ ['left|' , '|'],
|
||||
\ ['left\\|' , '‖'],
|
||||
\ ['left(' , '('],
|
||||
\ ['left\[' , '['],
|
||||
\ ['left\\{' , '{'],
|
||||
@@ -805,6 +826,8 @@ if has("conceal") && &enc == 'utf-8'
|
||||
\ ['quad' , ' '],
|
||||
\ ['qquad' , ' '],
|
||||
\ ['rfloor' , '⌋'],
|
||||
\ ['right|' , '|'],
|
||||
\ ['right\\|' , '‖'],
|
||||
\ ['right)' , ')'],
|
||||
\ ['right]' , ']'],
|
||||
\ ['right\\}' , '}'],
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user