Compare commits
387 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c216a7a21a | ||
|
|
65214053f6 | ||
|
|
d0f8d39d20 | ||
|
|
a0a6f3a22a | ||
|
|
3d3e2aa826 | ||
|
|
9163efb5b8 | ||
|
|
c1c365c1ca | ||
|
|
b21b8e9ed0 | ||
|
|
c0370529c0 | ||
|
|
1b73edd9ee | ||
|
|
8ffb7e051d | ||
|
|
af19ec0bfa | ||
|
|
37f088eead | ||
|
|
267db7c3e3 | ||
|
|
89469d157a | ||
|
|
500c444283 | ||
|
|
c67c89c758 | ||
|
|
c96b7f5d2a | ||
|
|
9c8d12c811 | ||
|
|
b55ae8ce42 | ||
|
|
cf650b7c9b | ||
|
|
5390c05a3c | ||
|
|
1a173409ae | ||
|
|
023930d62e | ||
|
|
184a622ada | ||
|
|
45e4eead2a | ||
|
|
c3f1881aed | ||
|
|
733a69b29f | ||
|
|
4f501171f7 | ||
|
|
3b8c7083b2 | ||
|
|
4c5678ff0c | ||
|
|
a87749e3ea | ||
|
|
7c02ad9f89 | ||
|
|
dffa6ea85c | ||
|
|
064fd67e6a | ||
|
|
4e6072b8d3 | ||
|
|
6f2a227565 | ||
|
|
3719989431 | ||
|
|
28a896f54d | ||
|
|
c13e998d4a | ||
|
|
84497cd06f | ||
|
|
f86490ed4f | ||
|
|
e76062c078 | ||
|
|
74a694dbe2 | ||
|
|
269aa2b29a | ||
|
|
38854b565a | ||
|
|
3da8597fc0 | ||
|
|
502e91756e | ||
|
|
8b336a6614 | ||
|
|
19cf525c20 | ||
|
|
64fabf3802 | ||
|
|
9f14557d6a | ||
|
|
cc0907165d | ||
|
|
c255b78965 | ||
|
|
837ca8f43b | ||
|
|
f3f198b634 | ||
|
|
01105b37a1 | ||
|
|
c96311b5be | ||
|
|
ef2c325f5e | ||
|
|
c1cf4c9107 | ||
|
|
cc762a48d4 | ||
|
|
ad85af5b38 | ||
|
|
637862fc3c | ||
|
|
6ac16f0c0f | ||
|
|
d330e8422d | ||
|
|
f60bdc3417 | ||
|
|
1273dfb015 | ||
|
|
ebed1b0bea | ||
|
|
47f1fdc28c | ||
|
|
0b228cddc7 | ||
|
|
e2da59851a | ||
|
|
82946e1439 | ||
|
|
24482fbfd5 | ||
|
|
24fe33a83a | ||
|
|
b59ae59a58 | ||
|
|
43300f6034 | ||
|
|
ecfd511e8d | ||
|
|
36446bbb62 | ||
|
|
63a2e360cc | ||
|
|
0b6d6a186e | ||
|
|
1d822afaf6 | ||
|
|
96cbbe29de | ||
|
|
bc222152d8 | ||
|
|
df3c0eb41e | ||
|
|
c3e06e4bfa | ||
|
|
a787c24e00 | ||
|
|
364438d1e8 | ||
|
|
9af2ea80a8 | ||
|
|
b775e72439 | ||
|
|
9c5b7cb4cf | ||
|
|
0319306f20 | ||
|
|
35fc61cb5b | ||
|
|
ce30ccc06a | ||
|
|
2996773276 | ||
|
|
228e422855 | ||
|
|
0a60f79fd0 | ||
|
|
c896adbcde | ||
|
|
e6392b1021 | ||
|
|
c934bfa1b7 | ||
|
|
9fda81515b | ||
|
|
361895d2a1 | ||
|
|
d63a85592c | ||
|
|
ff95ce0930 | ||
|
|
02edfaa610 | ||
|
|
88456cd3c4 | ||
|
|
d13166e788 | ||
|
|
236dffab43 | ||
|
|
696d0a8625 | ||
|
|
0c34d56264 | ||
|
|
81ba26e9de | ||
|
|
4654d63dec | ||
|
|
75ac25b496 | ||
|
|
12babe45a3 | ||
|
|
1d8765daba | ||
|
|
780154bf7a | ||
|
|
ee28c707e4 | ||
|
|
01ee52bab6 | ||
|
|
f32fb93e43 | ||
|
|
fc1b2d0961 | ||
|
|
1573e73f1c | ||
|
|
8303035d67 | ||
|
|
f10952e8c0 | ||
|
|
a44c7811ff | ||
|
|
44c2209352 | ||
|
|
b53a190e9f | ||
|
|
cdeb65729d | ||
|
|
698a00f55d | ||
|
|
c3d27ada14 | ||
|
|
24dc19cdb2 | ||
|
|
161b6ac04f | ||
|
|
dcbdd82d05 | ||
|
|
b298fe6cba | ||
|
|
cf2594fbf3 | ||
|
|
68353e5270 | ||
|
|
398a26f7fc | ||
|
|
920d311480 | ||
|
|
bf533e4e88 | ||
|
|
623e94e138 | ||
|
|
3b014befa0 | ||
|
|
2f7bfe66a1 | ||
|
|
28c56d5013 | ||
|
|
1140b51e83 | ||
|
|
d6e91385f0 | ||
|
|
f7570f2107 | ||
|
|
b3052aa1b5 | ||
|
|
6600447c7b | ||
|
|
4c8d2f02b3 | ||
|
|
0aad88f073 | ||
|
|
9954dc39ea | ||
|
|
a20be06f97 | ||
|
|
fd3084b6e2 | ||
|
|
f00112d558 | ||
|
|
37f1030fd6 | ||
|
|
d55bfcaa9b | ||
|
|
09a93e3e66 | ||
|
|
7265851b2b | ||
|
|
98aebcc2c6 | ||
|
|
90e66ec1e1 | ||
|
|
1d139a012e | ||
|
|
38804d6457 | ||
|
|
157241e879 | ||
|
|
76db9e0763 | ||
|
|
0fd7be7f95 | ||
|
|
80613d64e6 | ||
|
|
f220643c26 | ||
|
|
4e7590ec00 | ||
|
|
7b224fdf4a | ||
|
|
1756f4b218 | ||
|
|
0e364c9fca | ||
|
|
7af3ee2b83 | ||
|
|
adbc08fd69 | ||
|
|
69a8bb8dc1 | ||
|
|
a25f718431 | ||
|
|
cd9c8d400c | ||
|
|
91c75d18d9 | ||
|
|
845bbb72ed | ||
|
|
f8ea10677d | ||
|
|
25b8420c2b | ||
|
|
5a5f17f9b3 | ||
|
|
6c3d3e6904 | ||
|
|
5375205761 | ||
|
|
3d19c81a11 | ||
|
|
c57b5bcd22 | ||
|
|
1410d1841b | ||
|
|
3af982196b | ||
|
|
8e0ccb6bc2 | ||
|
|
873f41a018 | ||
|
|
7a7db047dc | ||
|
|
8ab9ca93ee | ||
|
|
86e6717ace | ||
|
|
03d6e6f42b | ||
|
|
1577537f10 | ||
|
|
6ebe4f970b | ||
|
|
3f68a4136e | ||
|
|
72c8e3c070 | ||
|
|
f0b567e32a | ||
|
|
ad353244f2 | ||
|
|
fb0cf2357e | ||
|
|
9c50eeb401 | ||
|
|
436e5d395f | ||
|
|
4bc85f23ed | ||
|
|
7fa02bcb3b | ||
|
|
2435adf8eb | ||
|
|
5b2a3d77d3 | ||
|
|
63c84731c1 | ||
|
|
6c8bc37a10 | ||
|
|
d5337efece | ||
|
|
49660f5139 | ||
|
|
d0fab10ed2 | ||
|
|
cdef1cefa2 | ||
|
|
43625762a9 | ||
|
|
4c36678ffd | ||
|
|
7609c88eed | ||
|
|
d505c8220d | ||
|
|
d0fbb41eaa | ||
|
|
3c708c4390 | ||
|
|
df63f05c3a | ||
|
|
060b838488 | ||
|
|
11df3aeee5 | ||
|
|
9f62ea01a0 | ||
|
|
605d02a9b7 | ||
|
|
bf72e0c67f | ||
|
|
a353282c13 | ||
|
|
53c5c9f50c | ||
|
|
8f3c3c6cd0 | ||
|
|
61c4b04799 | ||
|
|
9298a996fc | ||
|
|
208567e9d7 | ||
|
|
9652249a2d | ||
|
|
b99e6e6c5f | ||
|
|
8107a2a8af | ||
|
|
4bf67ec52e | ||
|
|
e6a16e9950 | ||
|
|
a1a46da87d | ||
|
|
4ac8e7948c | ||
|
|
4913d420e8 | ||
|
|
3f0092c141 | ||
|
|
9d8620b519 | ||
|
|
2a46f81ec7 | ||
|
|
6a12d26f34 | ||
|
|
d094e580b0 | ||
|
|
501e77766c | ||
|
|
3c053a1a5a | ||
|
|
bd053f894b | ||
|
|
d8cd6f7427 | ||
|
|
db4c94788a | ||
|
|
5b148ef262 | ||
|
|
c4860bdd28 | ||
|
|
0e9bdad545 | ||
|
|
36343ae0fb | ||
|
|
c8b6735573 | ||
|
|
a2e4e0fc3b | ||
|
|
4b082c4bd0 | ||
|
|
49846fb1a3 | ||
|
|
297164cb79 | ||
|
|
fa7bb1d937 | ||
|
|
13cdde3952 | ||
|
|
eb4de62931 | ||
|
|
4ccaedfcd7 | ||
|
|
d988ef3a55 | ||
|
|
a79b35b578 | ||
|
|
b77bdce120 | ||
|
|
7e120ffccb | ||
|
|
c9121f798f | ||
|
|
0abd6cf62d | ||
|
|
975a665d48 | ||
|
|
b9c09c118e | ||
|
|
ba43e76fcd | ||
|
|
856c5d2bc7 | ||
|
|
4b6172e108 | ||
|
|
6c4d4a6444 | ||
|
|
66b8d2a89e | ||
|
|
3558afe9e9 | ||
|
|
d93009eb35 | ||
|
|
4997f2a605 | ||
|
|
17822c507c | ||
|
|
91ccbad5de | ||
|
|
d26c5805bc | ||
|
|
f8412c9d7c | ||
|
|
e42033e735 | ||
|
|
2fbabd238a | ||
|
|
84d14ccdb5 | ||
|
|
d987642626 | ||
|
|
af40f9af33 | ||
|
|
9ce7915d06 | ||
|
|
ae906c8b1b | ||
|
|
a4962cd7ba | ||
|
|
7c6cd44375 | ||
|
|
159b2d5bfc | ||
|
|
7e017461e2 | ||
|
|
a275f2cdcc | ||
|
|
a9a364872e | ||
|
|
877151b3d8 | ||
|
|
9466fb8001 | ||
|
|
0c502d2e70 | ||
|
|
56564964e6 | ||
|
|
ccf2837a05 | ||
|
|
d3283fba25 | ||
|
|
cd105417a5 | ||
|
|
801cd35e7e | ||
|
|
1206c163db | ||
|
|
c601d988b6 | ||
|
|
79f234499b | ||
|
|
084f2620ec | ||
|
|
4282633ba6 | ||
|
|
f167c7b424 | ||
|
|
15b314ffbb | ||
|
|
118c235112 | ||
|
|
28f7e701b7 | ||
|
|
13845c48d8 | ||
|
|
b7af5a0445 | ||
|
|
330d64d32c | ||
|
|
30c0c467d6 | ||
|
|
8cf3459878 | ||
|
|
25f3a146a0 | ||
|
|
bf499c0e6f | ||
|
|
251c1e2ed8 | ||
|
|
16dab41537 | ||
|
|
fbdce18500 | ||
|
|
0089ce293f | ||
|
|
4314e4f7da | ||
|
|
5a049846e4 | ||
|
|
b7f52f5659 | ||
|
|
2b7b4f7670 | ||
|
|
a0789478f6 | ||
|
|
fcb86b0a99 | ||
|
|
33b55b562b | ||
|
|
5ab300195b | ||
|
|
8d8b9758ce | ||
|
|
07eaa1ede4 | ||
|
|
2eae3d24d7 | ||
|
|
bdc09a18fc | ||
|
|
cf3d0eaf47 | ||
|
|
0937b9fb24 | ||
|
|
3725116f6e | ||
|
|
35b251d2c2 | ||
|
|
97f0eb169b | ||
|
|
06618f94f1 | ||
|
|
d459020c62 | ||
|
|
851907a7ab | ||
|
|
4d31b48a11 | ||
|
|
46b54747c5 | ||
|
|
9bab7a0243 | ||
|
|
1a58e1d97c | ||
|
|
c9f5f73206 | ||
|
|
db77cb3c08 | ||
|
|
3ff71cda98 | ||
|
|
346823d3e5 | ||
|
|
7beaf6a720 | ||
|
|
0816f473ab | ||
|
|
f3ef026c98 | ||
|
|
d195598714 | ||
|
|
7500866182 | ||
|
|
18b3500b8c | ||
|
|
2cd0f27b75 | ||
|
|
caf05f504e | ||
|
|
351523f893 | ||
|
|
7904fa420e | ||
|
|
4ba5f1dab6 | ||
|
|
2f7e1b8b40 | ||
|
|
ec32c781a2 | ||
|
|
01c34e7d10 | ||
|
|
b6aab8f44b | ||
|
|
f269eabc6c | ||
|
|
eb47d6d20a | ||
|
|
0466d398a5 | ||
|
|
406b5d89e1 | ||
|
|
0a016671b9 | ||
|
|
13ece2ae1d | ||
|
|
6b2d4ff714 | ||
|
|
8df9748edb | ||
|
|
b1fd26d208 | ||
|
|
b34c4b7863 | ||
|
|
693729ae58 | ||
|
|
bbbda8fd81 | ||
|
|
f6196f4244 | ||
|
|
ff85d4a107 | ||
|
|
393f8d61f5 | ||
|
|
eda29c971c | ||
|
|
b393275ae9 | ||
|
|
3292a22940 | ||
|
|
a4e0b9785e | ||
|
|
b850c39676 | ||
|
|
87b4e5c5db | ||
|
|
145d1fd910 | ||
|
|
cfb4d4f312 | ||
|
|
a5d1a67bee |
@@ -7,7 +7,6 @@ environment:
|
||||
- FEATURE: HUGE
|
||||
# disabled
|
||||
# - FEATURE: TINY
|
||||
# - FEATURE: SMALL
|
||||
# - FEATURE: NORMAL
|
||||
# - FEATURE: BIG
|
||||
|
||||
|
||||
@@ -30,15 +30,17 @@ macos_task:
|
||||
name: macOS m1
|
||||
macos_instance:
|
||||
image: ghcr.io/cirruslabs/macos-ventura-xcode:latest
|
||||
env:
|
||||
# only run with clang, gcc is not real, it is a link to clang
|
||||
CC: clang
|
||||
timeout_in: 20m
|
||||
install_script:
|
||||
- uname -a
|
||||
- brew update
|
||||
- brew install gettext libtool
|
||||
build_script:
|
||||
- NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
- ./configure --with-features=${FEATURES}
|
||||
- make -j${NPROC} CC=clang
|
||||
- make -j${NPROC}
|
||||
test_script:
|
||||
- src/vim --version
|
||||
- make CC=clang test
|
||||
- make test
|
||||
|
||||
12
.github/CODEOWNERS
vendored
12
.github/CODEOWNERS
vendored
@@ -104,6 +104,7 @@ runtime/doc/pi_vimball.txt @cecamp
|
||||
runtime/doc/pi_zip.txt @cecamp
|
||||
runtime/doc/ps1.txt @heaths
|
||||
runtime/ftplugin/abaqus.vim @costerwi
|
||||
runtime/ftplugin/apache.vim @dubgeiser
|
||||
runtime/ftplugin/awk.vim @dkearns
|
||||
runtime/ftplugin/basic.vim @dkearns
|
||||
runtime/ftplugin/bst.vim @tpope
|
||||
@@ -166,11 +167,13 @@ runtime/ftplugin/nginx.vim @chr4
|
||||
runtime/ftplugin/nroff.vim @a-vrma
|
||||
runtime/ftplugin/nsis.vim @k-takata
|
||||
runtime/ftplugin/octave.vim @dkearns
|
||||
runtime/ftplugin/openvpn.vim @ObserverOfTime
|
||||
runtime/ftplugin/pascal.vim @dkearns
|
||||
runtime/ftplugin/pbtxt.vim @lakshayg
|
||||
runtime/ftplugin/pdf.vim @tpope
|
||||
runtime/ftplugin/perl.vim @petdance @dkearns
|
||||
runtime/ftplugin/pod.vim @petdance @dkearns
|
||||
runtime/ftplugin/poefilter.vim @ObserverOfTime
|
||||
runtime/ftplugin/postscr.vim @mrdubya
|
||||
runtime/ftplugin/ps1.vim @heaths
|
||||
runtime/ftplugin/ps1xml.vim @heaths
|
||||
@@ -192,6 +195,7 @@ runtime/ftplugin/sdoc.vim @gpanders
|
||||
runtime/ftplugin/sh.vim @dkearns
|
||||
runtime/ftplugin/solution.vim @dkearns
|
||||
runtime/ftplugin/spec.vim @ignatenkobrain
|
||||
runtime/ftplugin/ssa.vim @ObserverOfTime
|
||||
runtime/ftplugin/swayconfig.vim @jamespeapen
|
||||
runtime/ftplugin/systemverilog.vim @Kocha
|
||||
runtime/ftplugin/tap.vim @petdance
|
||||
@@ -292,6 +296,7 @@ runtime/plugin/netrwPlugin.vim @cecamp
|
||||
runtime/plugin/tarPlugin.vim @cecamp
|
||||
runtime/plugin/vimballPlugin.vim @cecamp
|
||||
runtime/plugin/zipPlugin.vim @cecamp
|
||||
runtime/plugin/manpager.vim @Konfekt
|
||||
runtime/syntax/abaqus.vim @costerwi
|
||||
runtime/syntax/aidl.vim @dpelle
|
||||
runtime/syntax/amiga.vim @cecamp
|
||||
@@ -358,6 +363,7 @@ runtime/syntax/haml.vim @tpope
|
||||
runtime/syntax/hare.vim @rsaihe
|
||||
runtime/syntax/haskell.vim @coot
|
||||
runtime/syntax/hgcommit.vim @k-takata
|
||||
runtime/syntax/hollywood.vim @sodero
|
||||
runtime/syntax/html.vim @dkearns
|
||||
runtime/syntax/i3config.vim @hiqua
|
||||
runtime/syntax/icon.vim @dkearns
|
||||
@@ -390,6 +396,7 @@ runtime/syntax/nginx.vim @chr4
|
||||
runtime/syntax/ninja.vim @nico
|
||||
runtime/syntax/nroff.vim @jmarshall
|
||||
runtime/syntax/nsis.vim @k-takata
|
||||
runtime/syntax/openvpn.vim @ObserverOfTime
|
||||
runtime/syntax/pascal.vim @dkearns
|
||||
runtime/syntax/pbtxt.vim @lakshayg
|
||||
runtime/syntax/pdf.vim @tpope
|
||||
@@ -397,6 +404,7 @@ runtime/syntax/perl.vim @petdance
|
||||
runtime/syntax/php.vim @TysonAndre
|
||||
runtime/syntax/plsql.vim @lee-lindley
|
||||
runtime/syntax/pod.vim @petdance
|
||||
runtime/syntax/poefilter.vim @ObserverOfTime
|
||||
runtime/syntax/postscr.vim @mrdubya
|
||||
runtime/syntax/privoxy.vim @dkearns
|
||||
runtime/syntax/prolog.vim @XVilka
|
||||
@@ -424,12 +432,14 @@ runtime/syntax/sass.vim @tpope
|
||||
runtime/syntax/scala.vim @derekwyatt
|
||||
runtime/syntax/scss.vim @tpope
|
||||
runtime/syntax/sdoc.vim @gpanders
|
||||
runtime/syntax/sed.vim @dkearns
|
||||
runtime/syntax/sh.vim @cecamp
|
||||
runtime/syntax/sm.vim @cecamp
|
||||
runtime/syntax/spec.vim @ignatenkobrain
|
||||
runtime/syntax/srt.vim @ObserverOfTime
|
||||
runtime/syntax/sqloracle.vim @chrisbra
|
||||
runtime/syntax/squirrel.vim @zenmatic
|
||||
runtime/syntax/srt.vim @ObserverOfTime
|
||||
runtime/syntax/ssa.vim @ObserverOfTime
|
||||
runtime/syntax/sshconfig.vim @Jakuje
|
||||
runtime/syntax/sshdconfig.vim @Jakuje
|
||||
runtime/syntax/sudoers.vim @e-kwsm
|
||||
|
||||
43
.github/workflows/ci.yml
vendored
43
.github/workflows/ci.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
features: [tiny, small, normal, huge]
|
||||
features: [tiny, normal, huge]
|
||||
compiler: [clang, gcc]
|
||||
extra: [none]
|
||||
include:
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
echo "TMPDIR=${{ runner.temp }}"
|
||||
|
||||
case "${{ matrix.features }}" in
|
||||
tiny|small)
|
||||
tiny)
|
||||
echo "TEST=testtiny"
|
||||
if ${{ contains(matrix.extra, 'nogui') }}; then
|
||||
echo "CONFOPT=--disable-gui"
|
||||
@@ -174,22 +174,23 @@ jobs:
|
||||
sudo usermod -a -G audio "${USER}"
|
||||
sudo bash ci/setup-xvfb.sh
|
||||
|
||||
- name: Cache snd-dummy
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ env.SND_DUMMY_DIR }}
|
||||
key: linux-${{ env.LINUX_VERSION }}-snd-dummy
|
||||
# FIXME: Temporarily disabled because of build errors
|
||||
#- name: Cache snd-dummy
|
||||
# uses: actions/cache@v3
|
||||
# with:
|
||||
# path: ${{ env.SND_DUMMY_DIR }}
|
||||
# key: linux-${{ env.LINUX_VERSION }}-snd-dummy
|
||||
|
||||
- name: Set up snd-dummy
|
||||
run: |
|
||||
if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
|
||||
bash ci/build-snd-dummy.sh
|
||||
fi
|
||||
cd "${SND_DUMMY_DIR}"
|
||||
sudo insmod soundcore.ko
|
||||
sudo insmod snd.ko
|
||||
sudo insmod snd-pcm.ko
|
||||
sudo insmod snd-dummy.ko
|
||||
#- name: Set up snd-dummy
|
||||
# run: |
|
||||
# if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
|
||||
# bash ci/build-snd-dummy.sh
|
||||
# fi
|
||||
# cd "${SND_DUMMY_DIR}"
|
||||
# sudo insmod soundcore.ko
|
||||
# sudo insmod snd.ko
|
||||
# sudo insmod snd-pcm.ko
|
||||
# sudo insmod snd-dummy.ko
|
||||
|
||||
- name: Check autoconf
|
||||
if: contains(matrix.extra, 'unittests')
|
||||
@@ -304,6 +305,7 @@ jobs:
|
||||
run: |
|
||||
brew install lua
|
||||
echo "LUA_PREFIX=/usr/local" >> $GITHUB_ENV
|
||||
brew uninstall perl
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
@@ -400,6 +402,9 @@ jobs:
|
||||
id: init
|
||||
shell: bash
|
||||
run: |
|
||||
# Show Windows version
|
||||
cmd /c ver
|
||||
|
||||
git config --global core.autocrlf input
|
||||
|
||||
if [ "${{ matrix.arch }}" = "x64" ]; then
|
||||
@@ -421,9 +426,9 @@ jobs:
|
||||
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
|
||||
if [ "${{ matrix.features }}" != "TINY" ]; then
|
||||
if [ "${{ matrix.arch }}" = "x86" ]; then
|
||||
choco install python2 --forcex86
|
||||
choco install python2 --no-progress --forcex86
|
||||
else
|
||||
choco install python2
|
||||
choco install python2 --no-progress
|
||||
fi
|
||||
fi
|
||||
python3_dir=$(cat "/proc/$cygreg/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}$pyreg/InstallPath/@")
|
||||
|
||||
11
.github/workflows/coverity.yml
vendored
11
.github/workflows/coverity.yml
vendored
@@ -15,20 +15,22 @@ jobs:
|
||||
CC: gcc
|
||||
CFLAGS: -Wno-deprecated-declarations
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository from github
|
||||
if: env.TOKEN
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Download Coverity
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz
|
||||
mkdir cov-scan
|
||||
tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan
|
||||
env:
|
||||
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
|
||||
- name: Install packages
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y \
|
||||
autoconf \
|
||||
@@ -47,6 +49,7 @@ jobs:
|
||||
libsodium-dev
|
||||
|
||||
- name: Set up environment
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH
|
||||
(
|
||||
@@ -55,6 +58,7 @@ jobs:
|
||||
) >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing
|
||||
# Append various warning flags to CFLAGS.
|
||||
@@ -62,10 +66,12 @@ jobs:
|
||||
sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk
|
||||
|
||||
- name: Build/scan vim
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
cov-build --dir cov-int make -j${NPROC}
|
||||
|
||||
- name: Submit results
|
||||
if: env.TOKEN
|
||||
run: |
|
||||
tar zcf cov-scan.tgz cov-int
|
||||
curl --form token=$TOKEN \
|
||||
@@ -75,5 +81,4 @@ jobs:
|
||||
--form description="Automatic GHA scan" \
|
||||
'https://scan.coverity.com/builds?project=vim'
|
||||
env:
|
||||
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -44,6 +44,8 @@ gvimext.lib
|
||||
gvim.lib
|
||||
runtime/doc/uganda.nsis.txt
|
||||
nsis/icons/*
|
||||
/vim90/
|
||||
.vscode/
|
||||
|
||||
# NetBeans
|
||||
nbproject/*
|
||||
@@ -83,6 +85,7 @@ src/testdir/messages
|
||||
src/testdir/viminfo
|
||||
src/testdir/opt_test.vim
|
||||
src/testdir/failed
|
||||
src/testdir/starttime
|
||||
runtime/indent/testdir/*.out
|
||||
runtime/indent/testdir/*.fail
|
||||
src/memfile_test
|
||||
|
||||
33
Filelist
33
Filelist
@@ -12,6 +12,7 @@ SRC_ALL = \
|
||||
.github/workflows/ci.yml \
|
||||
.github/workflows/codeql-analysis.yml \
|
||||
.github/workflows/coverity.yml \
|
||||
.github/dependabot.yml \
|
||||
.gitignore \
|
||||
.hgignore \
|
||||
.lgtm.yml \
|
||||
@@ -87,10 +88,11 @@ SRC_ALL = \
|
||||
src/job.c \
|
||||
src/json.c \
|
||||
src/json_test.c \
|
||||
src/keymap.h \
|
||||
src/kword_test.c \
|
||||
src/list.c \
|
||||
src/locale.c \
|
||||
src/keymap.h \
|
||||
src/logfile.c \
|
||||
src/macros.h \
|
||||
src/main.c \
|
||||
src/map.c \
|
||||
@@ -161,6 +163,7 @@ SRC_ALL = \
|
||||
src/version.h \
|
||||
src/vim.h \
|
||||
src/vim9.h \
|
||||
src/vim9class.c \
|
||||
src/vim9cmds.c \
|
||||
src/vim9compile.c \
|
||||
src/vim9execute.c \
|
||||
@@ -177,6 +180,8 @@ SRC_ALL = \
|
||||
src/testdir/Make_all.mak \
|
||||
src/testdir/*.in \
|
||||
src/testdir/*.py \
|
||||
src/testdir/keycode_check.vim \
|
||||
src/testdir/keycode_check.json \
|
||||
src/testdir/lsan-suppress.txt \
|
||||
src/testdir/sautest/autoload/*.vim \
|
||||
src/testdir/testluaplugin/lua/testluaplugin/*.lua \
|
||||
@@ -271,6 +276,7 @@ SRC_ALL = \
|
||||
src/proto/json.pro \
|
||||
src/proto/list.pro \
|
||||
src/proto/locale.pro \
|
||||
src/proto/logfile.pro \
|
||||
src/proto/main.pro \
|
||||
src/proto/map.pro \
|
||||
src/proto/mark.pro \
|
||||
@@ -322,6 +328,7 @@ SRC_ALL = \
|
||||
src/proto/usercmd.pro \
|
||||
src/proto/userfunc.pro \
|
||||
src/proto/version.pro \
|
||||
src/proto/vim9class.pro \
|
||||
src/proto/vim9cmds.pro \
|
||||
src/proto/vim9compile.pro \
|
||||
src/proto/vim9execute.pro \
|
||||
@@ -394,6 +401,7 @@ SRC_ALL = \
|
||||
src/libvterm/t/66screen_extent.test \
|
||||
src/libvterm/t/67screen_dbl_wh.test \
|
||||
src/libvterm/t/68screen_termprops.test \
|
||||
src/libvterm/t/69screen_reflow.test \
|
||||
src/libvterm/t/90vttest_01-movement-1.test \
|
||||
src/libvterm/t/90vttest_01-movement-2.test \
|
||||
src/libvterm/t/90vttest_01-movement-3.test \
|
||||
@@ -590,30 +598,9 @@ SRC_DOS = \
|
||||
nsis/README.txt \
|
||||
nsis/lang/*.nsi \
|
||||
uninstall.txt \
|
||||
src/VisVim/Commands.cpp \
|
||||
src/VisVim/Commands.h \
|
||||
src/VisVim/DSAddIn.cpp \
|
||||
src/VisVim/DSAddIn.h \
|
||||
src/VisVim/OleAut.cpp \
|
||||
src/VisVim/OleAut.h \
|
||||
src/VisVim/README_VisVim.txt \
|
||||
src/VisVim/Reg.cpp \
|
||||
src/VisVim/Register.bat \
|
||||
src/VisVim/Resource.h \
|
||||
src/VisVim/StdAfx.cpp \
|
||||
src/VisVim/StdAfx.h \
|
||||
src/VisVim/UnRegist.bat \
|
||||
src/VisVim/VisVim.cpp \
|
||||
src/VisVim/VisVim.def \
|
||||
src/VisVim/VisVim.mak \
|
||||
src/VisVim/VisVim.h \
|
||||
src/VisVim/VisVim.odl \
|
||||
src/VisVim/VisVim.rc \
|
||||
src/VisVim/VsReadMe.txt \
|
||||
|
||||
# source files for DOS without CR/LF translation (also in the extra archive)
|
||||
SRC_DOS_BIN = \
|
||||
src/VisVim/Res/*.bmp \
|
||||
src/tearoff.bmp \
|
||||
src/tools.bmp \
|
||||
src/vim*.ico \
|
||||
@@ -662,6 +649,7 @@ SRC_MAC = \
|
||||
src/os_mac_conv.c \
|
||||
src/os_macosx.m \
|
||||
src/proto/os_mac_conv.pro \
|
||||
src/proto/os_macosx.pro \
|
||||
|
||||
# source files for VMS (in the extra archive)
|
||||
SRC_VMS = \
|
||||
@@ -945,7 +933,6 @@ EXTRA = \
|
||||
$(RT_EXTRA) \
|
||||
$(SRC_EXTRA) \
|
||||
README_extra.txt \
|
||||
src/VisVim/VisVim.dll \
|
||||
runtime/vimlogo.xpm \
|
||||
|
||||
# files in READMEdir that are included from the top dir
|
||||
|
||||
4
Makefile
4
Makefile
@@ -198,8 +198,6 @@ MINOR = 0
|
||||
# - copy these files (get them from a binary archive or build them):
|
||||
# gvimext.dll in src/GvimExt
|
||||
# gvimext64.dll in src/GvimExt
|
||||
# VisVim.dll in src/VisVim
|
||||
# Note: VisVim needs to be build with MSVC 5, newer versions don't work.
|
||||
# gvimext64.dll can be obtained from:
|
||||
# https://github.com/vim/vim-win32-installer/releases
|
||||
# It is part of gvim_9.0.*_x64.zip as vim/vim90/GvimExt/gvimext64.dll.
|
||||
@@ -554,8 +552,6 @@ dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE)
|
||||
cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
|
||||
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
|
||||
cp README_ole.txt dist/vim/$(VIMRTDIR)
|
||||
cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll
|
||||
cp src/VisVim/README_VisVim.txt dist/vim/$(VIMRTDIR)
|
||||
cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE)
|
||||
cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb
|
||||
|
||||
|
||||
@@ -29,9 +29,6 @@ src/Make_mvc.mak MS Visual C++ makefile for the Win32 GUI.
|
||||
|
||||
src/if_ole.* OLE automation interface, for MS Windows 95 and NT.
|
||||
|
||||
src/VisVim/* Integration of Win32 GUI with MS Visual Developer
|
||||
Studio.
|
||||
|
||||
src/GvimExt/* DLL for the "Edit with Vim" context menu entry
|
||||
|
||||
nsis/* NSIS script to build the self-installing MS-Windows exe
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
README_ole.txt for version 9.0 of Vim: Vi IMproved.
|
||||
|
||||
This archive contains gvim.exe with OLE interface and VisVim.
|
||||
This archive contains gvim.exe with OLE interface.
|
||||
This version of gvim.exe can also load a number of interface dynamically (you
|
||||
can optionally install the .dll files for each interface).
|
||||
It is only for MS-Windows 95/98/ME/NT/2000/XP.
|
||||
@@ -15,6 +15,3 @@ Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
|
||||
|
||||
For further information, type this inside Vim:
|
||||
:help if_ole
|
||||
|
||||
Furthermore, this archive contains VISVIM.DLL. It can be used to integrate
|
||||
the OLE gvim with Microsoft Visual Developer Studio. See VisVim/README.txt.
|
||||
|
||||
@@ -6,7 +6,6 @@ These files are in the runtime archive (vim90rt.zip).
|
||||
|
||||
|
||||
The DOS source archive contains the files needed to compile Vim on MS-Windows.
|
||||
It is packed for MS-Windows systems, with CR-LF. It also includes the VisVim
|
||||
sources.
|
||||
It is packed for MS-Windows systems, with CR-LF.
|
||||
|
||||
See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
|
||||
|
||||
@@ -27,23 +27,20 @@ To build the installable .exe:
|
||||
64-bit: src/GvimExt/gvimext64.dll
|
||||
32-bit: src/GvimExt/gvimext.dll
|
||||
|
||||
4. Go to the VisVim directory and build VisVim.dll (or get it from a binary
|
||||
archive).
|
||||
|
||||
5. Get a "diff.exe" program. If you skip this the built-in diff will always
|
||||
4. Get a "diff.exe" program. If you skip this the built-in diff will always
|
||||
be used (which is fine for most users). If you do have your own
|
||||
"diff.exe" put it in the "../.." directory (above the "vim82" directory,
|
||||
it's the same for all Vim versions).
|
||||
You can find one in previous Vim versions or in this archive:
|
||||
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz
|
||||
|
||||
6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82"
|
||||
5 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82"
|
||||
directory). This is required for the terminal window.
|
||||
|
||||
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have
|
||||
6. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have
|
||||
to do this on Unix. Make sure the file is in DOS file format!
|
||||
|
||||
8. Get gettext and iconv DLLs from the following site:
|
||||
7. Get gettext and iconv DLLs from the following site:
|
||||
https://github.com/mlocati/gettext-iconv-windows/releases
|
||||
Both 64- and 32-bit versions are needed.
|
||||
Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract
|
||||
|
||||
@@ -36,9 +36,6 @@ Unicode true
|
||||
# Comment the next line if you do not want to add Native Language Support
|
||||
!define HAVE_NLS
|
||||
|
||||
# Uncomment the next line if you want to include VisVim extension:
|
||||
#!define HAVE_VIS_VIM
|
||||
|
||||
# Comment the following line to create an English-only installer:
|
||||
!define HAVE_MULTI_LANG
|
||||
|
||||
@@ -55,9 +52,6 @@ Unicode true
|
||||
# ----------- No configurable settings below this line -----------
|
||||
|
||||
!include "Library.nsh" # For DLL install
|
||||
!ifdef HAVE_VIS_VIM
|
||||
!include "UpgradeDLL.nsh" # for VisVim.dll
|
||||
!endif
|
||||
!include "LogicLib.nsh"
|
||||
!include "MUI2.nsh"
|
||||
!include "nsDialogs.nsh"
|
||||
@@ -536,17 +530,6 @@ SectionGroup $(str_group_plugin) id_group_plugin
|
||||
SectionEnd
|
||||
SectionGroupEnd
|
||||
|
||||
##########################################################
|
||||
!ifdef HAVE_VIS_VIM
|
||||
Section "$(str_section_vis_vim)" id_section_visvim
|
||||
SectionIn 3
|
||||
|
||||
SetOutPath $0
|
||||
!insertmacro UpgradeDLL "${VIMSRC}\VisVim\VisVim.dll" "$0\VisVim.dll" "$0"
|
||||
File ${VIMSRC}\VisVim\README_VisVim.txt
|
||||
SectionEnd
|
||||
!endif
|
||||
|
||||
##########################################################
|
||||
!ifdef HAVE_NLS
|
||||
Section "$(str_section_nls)" id_section_nls
|
||||
@@ -634,12 +617,6 @@ Section -post
|
||||
SectionGetSize ${id_section_editwith} $4
|
||||
IntOp $3 $3 + $4
|
||||
${EndIf}
|
||||
!ifdef HAVE_VIS_VIM
|
||||
${If} ${SectionIsSelected} ${id_section_visvim}
|
||||
SectionGetSize ${id_section_visvim} $4
|
||||
IntOp $3 $3 + $4
|
||||
${EndIf}
|
||||
!endif
|
||||
!ifdef HAVE_NLS
|
||||
${If} ${SectionIsSelected} ${id_section_nls}
|
||||
SectionGetSize ${id_section_nls} $4
|
||||
@@ -670,9 +647,6 @@ Section -post
|
||||
!insertmacro SaveSectionSelection ${id_section_vimrc} "select_vimrc"
|
||||
!insertmacro SaveSectionSelection ${id_section_pluginhome} "select_pluginhome"
|
||||
!insertmacro SaveSectionSelection ${id_section_pluginvim} "select_pluginvim"
|
||||
!ifdef HAVE_VIS_VIM
|
||||
!insertmacro SaveSectionSelection ${id_section_visvim} "select_visvim"
|
||||
!endif
|
||||
!ifdef HAVE_NLS
|
||||
!insertmacro SaveSectionSelection ${id_section_nls} "select_nls"
|
||||
!endif
|
||||
@@ -744,9 +718,6 @@ Function .onInit
|
||||
!insertmacro LoadSectionSelection ${id_section_vimrc} "select_vimrc"
|
||||
!insertmacro LoadSectionSelection ${id_section_pluginhome} "select_pluginhome"
|
||||
!insertmacro LoadSectionSelection ${id_section_pluginvim} "select_pluginvim"
|
||||
!ifdef HAVE_VIS_VIM
|
||||
!insertmacro LoadSectionSelection ${id_section_visvim} "select_visvim"
|
||||
!endif
|
||||
!ifdef HAVE_NLS
|
||||
!insertmacro LoadSectionSelection ${id_section_nls} "select_nls"
|
||||
!endif
|
||||
@@ -921,9 +892,6 @@ FunctionEnd
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${id_group_plugin} $(str_desc_plugin)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginhome} $(str_desc_plugin_home)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginvim} $(str_desc_plugin_vim)
|
||||
!ifdef HAVE_VIS_VIM
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${id_section_visvim} $(str_desc_vis_vim)
|
||||
!endif
|
||||
!ifdef HAVE_NLS
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${id_section_nls} $(str_desc_nls)
|
||||
!endif
|
||||
@@ -947,13 +915,6 @@ Section "un.$(str_unsection_register)" id_unsection_register
|
||||
# created. Thus the "vim61" directory is included in it.
|
||||
StrCpy $0 "$INSTDIR"
|
||||
|
||||
!ifdef HAVE_VIS_VIM
|
||||
# If VisVim was installed, unregister the DLL.
|
||||
${If} ${FileExists} "$0\VisVim.dll"
|
||||
ExecWait "regsvr32.exe /u /s $0\VisVim.dll"
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
# delete the context menu entry and batch files
|
||||
DetailPrint "$(str_msg_unregistering)"
|
||||
nsExec::Exec "$0\uninstall.exe -nsis"
|
||||
@@ -1046,9 +1007,6 @@ Section "un.$(str_unsection_exe)" id_unsection_exe
|
||||
RMDir /r $0\syntax
|
||||
RMDir /r $0\tools
|
||||
RMDir /r $0\tutor
|
||||
!ifdef HAVE_VIS_VIM
|
||||
RMDir /r $0\VisVim
|
||||
!endif
|
||||
RMDir /r $0\lang
|
||||
RMDir /r $0\keymap
|
||||
Delete $0\*.exe
|
||||
|
||||
@@ -79,9 +79,6 @@ LangString str_desc_plugin_home ${LANG_DANISH} "Opret plugin-mapper i HO
|
||||
LangString str_section_plugin_vim ${LANG_DANISH} "Delte"
|
||||
LangString str_desc_plugin_vim ${LANG_DANISH} "Opret plugin-mapper i Vim-installationsmappe, det bruges af alle på systemet."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_DANISH} "VisVim-udvidelser"
|
||||
LangString str_desc_vis_vim ${LANG_DANISH} "VisVim-udvidelser til integrering i Microsoft Visual Studio."
|
||||
|
||||
LangString str_section_nls ${LANG_DANISH} "Understøttelse af modersmål"
|
||||
LangString str_desc_nls ${LANG_DANISH} "Installer filer til understøttelse af modersmål."
|
||||
|
||||
|
||||
@@ -123,11 +123,6 @@ LangString str_desc_plugin_vim ${LANG_DUTCH} \
|
||||
"Creëer plugin mappen in Vim installatie map, deze worden gebruikt \
|
||||
voor iedereen op het systeem."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_DUTCH} \
|
||||
"VisVim extensie"
|
||||
LangString str_desc_vis_vim ${LANG_DUTCH} \
|
||||
"VisVim extensie voor Microsoft Visual Studio integratie."
|
||||
|
||||
LangString str_section_nls ${LANG_DUTCH} \
|
||||
"Ondersteuning voor andere talen"
|
||||
LangString str_desc_nls ${LANG_DUTCH} \
|
||||
|
||||
@@ -121,11 +121,6 @@ LangString str_desc_plugin_vim ${LANG_ENGLISH} \
|
||||
"Create plugin directories in Vim install directory, it is used for \
|
||||
everybody on the system."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_ENGLISH} \
|
||||
"VisVim Extension"
|
||||
LangString str_desc_vis_vim ${LANG_ENGLISH} \
|
||||
"VisVim Extension for Microsoft Visual Studio integration."
|
||||
|
||||
LangString str_section_nls ${LANG_ENGLISH} \
|
||||
"Native Language Support"
|
||||
LangString str_desc_nls ${LANG_ENGLISH} \
|
||||
|
||||
@@ -122,11 +122,6 @@ LangString str_desc_plugin_vim ${LANG_GERMAN} \
|
||||
"Plugin-Verzeichnisse im Vim-Installationsverzeichnis erstellen. Diese werden \
|
||||
für alle Benutzer dieses Systems genutzt."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_GERMAN} \
|
||||
"VisVim-Erweiterung"
|
||||
LangString str_desc_vis_vim ${LANG_GERMAN} \
|
||||
"VisVim-Erweiterung zur Integration in Microsoft Visual Studio."
|
||||
|
||||
LangString str_section_nls ${LANG_GERMAN} \
|
||||
"Unterstützung für andere Sprachen"
|
||||
LangString str_desc_nls ${LANG_GERMAN} \
|
||||
|
||||
@@ -123,11 +123,6 @@ LangString str_desc_plugin_vim ${LANG_ITALIAN} \
|
||||
"Crea directory per plugin nella directory di installazione di Vim \
|
||||
per uso da parte di tutti gli utenti di questo sistema."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_ITALIAN} \
|
||||
"Estensione VisVim"
|
||||
LangString str_desc_vis_vim ${LANG_ITALIAN} \
|
||||
"Estensione VisVim per integrazione con Microsoft Visual Studio."
|
||||
|
||||
LangString str_section_nls ${LANG_ITALIAN} \
|
||||
"Supporto Multilingue (NLS)"
|
||||
LangString str_desc_nls ${LANG_ITALIAN} \
|
||||
|
||||
@@ -128,11 +128,6 @@ LangString str_section_plugin_vim ${LANG_JAPANESE} \
|
||||
LangString str_desc_plugin_vim ${LANG_JAPANESE} \
|
||||
"プラグインディレクトリを Vim のインストールディレクトリに作成します。システムの全員で共有されます。"
|
||||
|
||||
LangString str_section_vis_vim ${LANG_JAPANESE} \
|
||||
"VisVim 拡張"
|
||||
LangString str_desc_vis_vim ${LANG_JAPANESE} \
|
||||
"Microsoft Visual Studio 統合用の VisVim 拡張。"
|
||||
|
||||
LangString str_section_nls ${LANG_JAPANESE} \
|
||||
"多言語サポート"
|
||||
LangString str_desc_nls ${LANG_JAPANESE} \
|
||||
|
||||
@@ -125,11 +125,6 @@ LangString str_desc_plugin_vim ${LANG_RUSSIAN} \
|
||||
Модули в этом каталоге будут доступны для любого пользователя \
|
||||
зарегистрировавшегося в системе"
|
||||
|
||||
LangString str_section_vis_vim ${LANG_RUSSIAN} \
|
||||
"Подключаемый модуль VisVim"
|
||||
LangString str_desc_vis_vim ${LANG_RUSSIAN} \
|
||||
"Подключаемый модуль VisVim используется для интеграции с Microsoft Visual Studio"
|
||||
|
||||
LangString str_section_nls ${LANG_RUSSIAN} \
|
||||
"Поддержка региональных языков"
|
||||
LangString str_desc_nls ${LANG_RUSSIAN} \
|
||||
|
||||
@@ -121,11 +121,6 @@ LangString str_desc_plugin_vim ${LANG_SERBIAN} \
|
||||
"Креира директоријуме додатака у Vim инсталационом директоријуму, користе их сви \
|
||||
на систему."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_SERBIAN} \
|
||||
"VisVim проширење"
|
||||
LangString str_desc_vis_vim ${LANG_SERBIAN} \
|
||||
"VisVim проширење за Microsoft Visual Studio интеграцију."
|
||||
|
||||
LangString str_section_nls ${LANG_SERBIAN} \
|
||||
"Подршка за домаћи језик"
|
||||
LangString str_desc_nls ${LANG_SERBIAN} \
|
||||
|
||||
@@ -120,11 +120,6 @@ LangString str_desc_plugin_vim ${LANG_SIMPCHINESE} \
|
||||
"在 Vim 安装目录下创建(空的)插件目录结构,系统上所有用户都能使用安装在\
|
||||
该目录下的扩展插件。"
|
||||
|
||||
LangString str_section_vis_vim ${LANG_SIMPCHINESE} \
|
||||
"VisVim 插件"
|
||||
LangString str_desc_vis_vim ${LANG_SIMPCHINESE} \
|
||||
"安装与 Visual Studio 集成的 VisVim 插件。"
|
||||
|
||||
LangString str_section_nls ${LANG_SIMPCHINESE} \
|
||||
"安装多语言支持"
|
||||
LangString str_desc_nls ${LANG_SIMPCHINESE} \
|
||||
|
||||
@@ -121,11 +121,6 @@ LangString str_desc_plugin_vim ${LANG_TRADCHINESE} \
|
||||
"在 Vim 安裝資料夾下建立(空的)插件資料夾結構,電腦上所有用戶都能使用安裝\
|
||||
在該資料夾里的擴展插件。"
|
||||
|
||||
LangString str_section_vis_vim ${LANG_TRADCHINESE} \
|
||||
"安裝 VisVim 插件"
|
||||
LangString str_desc_vis_vim ${LANG_TRADCHINESE} \
|
||||
"VisVim 是用于與微軟 Microsoft Visual Studio 軟體進行整合的插件。"
|
||||
|
||||
LangString str_section_nls ${LANG_TRADCHINESE} \
|
||||
"安裝本地語言支持"
|
||||
LangString str_desc_nls ${LANG_TRADCHINESE} \
|
||||
|
||||
@@ -90,11 +90,6 @@ LangString str_desc_plugin_vim ${LANG_TURKISH} \
|
||||
"Eklenti dizinlerini Vim yükleme dizininde oluşturur. Bu eklentilerden \
|
||||
bilgisayarın tüm kullanıcıları yararlanabilir."
|
||||
|
||||
LangString str_section_vis_vim ${LANG_TURKISH} \
|
||||
"VisVim eklentisi"
|
||||
LangString str_desc_vis_vim ${LANG_TURKISH} \
|
||||
"Microsoft Visual Studio entegrasyonu için VisVim eklentisi"
|
||||
|
||||
LangString str_section_nls ${LANG_TURKISH} \
|
||||
"Ek dil desteği"
|
||||
LangString str_desc_nls ${LANG_TURKISH} \
|
||||
|
||||
18
runtime/autoload/dist/ft.vim
vendored
18
runtime/autoload/dist/ft.vim
vendored
@@ -145,7 +145,7 @@ export def FTcls()
|
||||
return
|
||||
endif
|
||||
|
||||
if getline(1) =~ '^%'
|
||||
if getline(1) =~ '^\v%(\%|\\)'
|
||||
setf tex
|
||||
elseif getline(1)[0] == '#' && getline(1) =~ 'rexx'
|
||||
setf rexx
|
||||
@@ -712,7 +712,8 @@ export def SetFileTypeSH(name: string)
|
||||
if exists("b:is_sh")
|
||||
unlet b:is_sh
|
||||
endif
|
||||
elseif name =~ '\<sh\>'
|
||||
elseif name =~ '\<sh\>' || name =~ '\<dash\>'
|
||||
# Ubuntu links "sh" to "dash", thus it is expected to work the same way
|
||||
b:is_sh = 1
|
||||
if exists("b:is_kornshell")
|
||||
unlet b:is_kornshell
|
||||
@@ -1087,5 +1088,18 @@ export def FTdat()
|
||||
endif
|
||||
enddef
|
||||
|
||||
export def FTlsl()
|
||||
if exists("g:filetype_lsl")
|
||||
exe "setf " .. g:filetype_lsl
|
||||
endif
|
||||
|
||||
var line = getline(nextnonblank(1))
|
||||
if line =~ '^\s*%' || line =~# ':\s*trait\s*$'
|
||||
setf larch
|
||||
else
|
||||
setf lsl
|
||||
endif
|
||||
enddef
|
||||
|
||||
# Uncomment this line to check for compilation errors early
|
||||
# defcompile
|
||||
|
||||
4
runtime/autoload/dist/script.vim
vendored
4
runtime/autoload/dist/script.vim
vendored
@@ -53,8 +53,8 @@ def DetectFromHashBang(firstline: string)
|
||||
name = 'wish'
|
||||
endif
|
||||
|
||||
# Bourne-like shell scripts: bash bash2 ksh ksh93 sh
|
||||
if name =~ '^\(bash\d*\|\|ksh\d*\|sh\)\>'
|
||||
# Bourne-like shell scripts: bash bash2 dash ksh ksh93 sh
|
||||
if name =~ '^\(bash\d*\|dash\|ksh\d*\|sh\)\>'
|
||||
call dist#ft#SetFileTypeSH(line1)
|
||||
|
||||
# csh scripts
|
||||
|
||||
55
runtime/autoload/dist/vimindent.vim
vendored
55
runtime/autoload/dist/vimindent.vim
vendored
@@ -2,7 +2,12 @@ vim9script
|
||||
|
||||
# Language: Vim script
|
||||
# Maintainer: github user lacygoill
|
||||
# Last Change: 2022 Sep 24
|
||||
# Last Change: 2022 Oct 15
|
||||
|
||||
# NOTE: Whenever you change the code, make sure the tests are still passing:
|
||||
#
|
||||
# $ cd runtime/indent/
|
||||
# $ make clean; make test || vimdiff testdir/vim.{fail,ok}
|
||||
|
||||
# Config {{{1
|
||||
|
||||
@@ -151,7 +156,7 @@ const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\
|
||||
|
||||
# CD_COMMAND {{{3
|
||||
|
||||
const CD_COMMAND: string = $'[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
|
||||
const CD_COMMAND: string = $'\<[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
|
||||
|
||||
# HIGHER_ORDER_COMMAND {{{3
|
||||
|
||||
@@ -173,7 +178,7 @@ const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%(' .. patt
|
||||
|
||||
# MAPPING_COMMAND {{{3
|
||||
|
||||
const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=[nvxsoilct]\=\%(nore\|un\)map!\=\s'
|
||||
const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s'
|
||||
|
||||
# NORMAL_COMMAND {{{3
|
||||
|
||||
@@ -217,7 +222,7 @@ END
|
||||
|
||||
const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
|
||||
.. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
|
||||
.. $'\|^\s*elseif\=\s\+\%({OPERATOR}\)\@!'
|
||||
.. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
|
||||
|
||||
# STARTS_CURLY_BLOCK {{{3
|
||||
|
||||
@@ -293,7 +298,7 @@ const START_MIDDLE_END: dict<list<string>> = {
|
||||
# EOL {{{2
|
||||
# OPENING_BRACKET_AT_EOL {{{3
|
||||
|
||||
const OPENING_BRACKET_AT_EOL: string = $'{OPENING_BRACKET}{END_OF_VIM9_LINE}'
|
||||
const OPENING_BRACKET_AT_EOL: string = OPENING_BRACKET .. END_OF_VIM9_LINE
|
||||
|
||||
# COMMA_AT_EOL {{{3
|
||||
|
||||
@@ -349,7 +354,7 @@ const LINE_CONTINUATION_AT_SOL: string = '^\s*\%('
|
||||
const RANGE_AT_SOL: string = '^\s*:\S'
|
||||
# }}}1
|
||||
# Interface {{{1
|
||||
export def Expr(lnum: number): number # {{{2
|
||||
export def Expr(lnum = v:lnum): number # {{{2
|
||||
# line which is indented
|
||||
var line_A: dict<any> = {text: getline(lnum), lnum: lnum}
|
||||
# line above, on which we'll base the indent of line A
|
||||
@@ -404,16 +409,15 @@ export def Expr(lnum: number): number # {{{2
|
||||
line_A->CacheBracketBlock()
|
||||
endif
|
||||
if line_A.lnum->IsInside('BracketBlock')
|
||||
&& !b:vimindent.block_stack[0].is_curly_block
|
||||
var is_in_curly_block: bool = IsInCurlyBlock()
|
||||
for block: dict<any> in b:vimindent.block_stack
|
||||
# Can't call `BracketBlockIndent()` before we're indenting a line *after* the start of the block.{{{
|
||||
#
|
||||
# That's because it might need the correct indentation of the start
|
||||
# of the block. But if we're still *on* the start, we haven't yet
|
||||
# computed that indentation.
|
||||
#}}}
|
||||
if line_A.lnum > block.startlnum
|
||||
&& !block.is_curly_block
|
||||
if line_A.lnum <= block.startlnum
|
||||
continue
|
||||
endif
|
||||
if !block->has_key('startindent')
|
||||
block.startindent = Indent(block.startlnum)
|
||||
endif
|
||||
if !is_in_curly_block
|
||||
return BracketBlockIndent(line_A, block)
|
||||
endif
|
||||
endfor
|
||||
@@ -481,7 +485,7 @@ export def Expr(lnum: number): number # {{{2
|
||||
cursor(line_A.lnum, 1)
|
||||
|
||||
var [start: string, middle: string, end: string] = START_MIDDLE_END[kwd]
|
||||
var block_start = SearchPairStart(start, middle, end)
|
||||
var block_start: number = SearchPairStart(start, middle, end)
|
||||
if block_start > 0
|
||||
return Indent(block_start)
|
||||
else
|
||||
@@ -516,7 +520,7 @@ enddef
|
||||
|
||||
def g:GetVimIndent(): number # {{{2
|
||||
# for backward compatibility
|
||||
return Expr(v:lnum)
|
||||
return Expr()
|
||||
enddef
|
||||
# }}}1
|
||||
# Core {{{1
|
||||
@@ -535,10 +539,10 @@ def Offset( # {{{2
|
||||
# Indent twice for a line continuation in the block header itself, so that
|
||||
# we can easily distinguish the end of the block header from the start of
|
||||
# the block body.
|
||||
elseif line_B->EndsWithLineContinuation()
|
||||
&& !line_A.isfirst
|
||||
|| line_A.text =~ LINE_CONTINUATION_AT_SOL
|
||||
&& line_A.text !~ PLUS_MINUS_COMMAND
|
||||
elseif (line_B->EndsWithLineContinuation()
|
||||
&& !line_A.isfirst)
|
||||
|| (line_A.text =~ LINE_CONTINUATION_AT_SOL
|
||||
&& line_A.text !~ PLUS_MINUS_COMMAND)
|
||||
|| line_A.text->Is_IN_KeywordForLoop(line_B.text)
|
||||
return 2 * shiftwidth()
|
||||
else
|
||||
@@ -646,10 +650,6 @@ def CommentIndent(): number # {{{2
|
||||
enddef
|
||||
|
||||
def BracketBlockIndent(line_A: dict<any>, block: dict<any>): number # {{{2
|
||||
if !block->has_key('startindent')
|
||||
block.startindent = block.startlnum->Indent()
|
||||
endif
|
||||
|
||||
var ind: number = block.startindent
|
||||
|
||||
if line_A.text =~ CLOSING_BRACKET_AT_SOL
|
||||
@@ -997,6 +997,11 @@ def IsRightBelow(lnum: number, syntax: string): bool # {{{3
|
||||
&& lnum > b:vimindent.endlnum
|
||||
enddef
|
||||
|
||||
def IsInCurlyBlock(): bool # {{{3
|
||||
return b:vimindent.block_stack
|
||||
->indexof((_, block: dict<any>): bool => block.is_curly_block) >= 0
|
||||
enddef
|
||||
|
||||
def IsInThisBlock(line_A: dict<any>, lnum: number): bool # {{{3
|
||||
var pos: list<number> = getcurpos()
|
||||
cursor(lnum, [lnum, '$']->col())
|
||||
|
||||
@@ -1791,8 +1791,10 @@ fun! s:NetrwOptionsRestore(vt)
|
||||
" call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
|
||||
if !exists("{a:vt}netrw_optionsave")
|
||||
" call Decho("case ".a:vt."netrw_optionsave : doesn't exist",'~'.expand("<slnum>"))
|
||||
" call Decho("..doing filetype detect anyway")
|
||||
filetype detect
|
||||
if !isdirectory(expand('%'))
|
||||
" call Decho("..doing filetype detect anyway")
|
||||
filetype detect
|
||||
endif
|
||||
" call Decho("..settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
|
||||
" call Decho("..ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
|
||||
" call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist")
|
||||
@@ -1904,9 +1906,11 @@ fun! s:NetrwOptionsRestore(vt)
|
||||
" were having their filetype detect-generated settings overwritten by
|
||||
" NetrwOptionRestore.
|
||||
if &ft != "netrw"
|
||||
" call Decho("before: filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
|
||||
filetype detect
|
||||
" call Decho("after : filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
|
||||
if !isdirectory(expand('%'))
|
||||
" call Decho("before: filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
|
||||
filetype detect
|
||||
" call Decho("after : filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
|
||||
endif
|
||||
endif
|
||||
" call Decho("(s:NetrwOptionsRestore) lines=".&lines)
|
||||
" call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
|
||||
|
||||
@@ -712,6 +712,9 @@ func! tohtml#GetUserSettings() "{{{
|
||||
call tohtml#GetOption(user_settings, 'no_foldcolumn', user_settings.ignore_folding)
|
||||
call tohtml#GetOption(user_settings, 'hover_unfold', 0 )
|
||||
call tohtml#GetOption(user_settings, 'no_pre', 0 )
|
||||
call tohtml#GetOption(user_settings, 'no_doc', 0 )
|
||||
call tohtml#GetOption(user_settings, 'no_links', 0 )
|
||||
call tohtml#GetOption(user_settings, 'no_modeline', 0 )
|
||||
call tohtml#GetOption(user_settings, 'no_invalid', 0 )
|
||||
call tohtml#GetOption(user_settings, 'whole_filler', 0 )
|
||||
call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
|
||||
@@ -752,7 +755,7 @@ func! tohtml#GetUserSettings() "{{{
|
||||
|
||||
" pre_wrap doesn't do anything if not using pre or not using CSS
|
||||
if user_settings.no_pre || !user_settings.use_css
|
||||
let user_settings.pre_wrap=0
|
||||
let user_settings.pre_wrap = 0
|
||||
endif
|
||||
"}}}
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@ DOCS = \
|
||||
version9.txt \
|
||||
vi_diff.txt \
|
||||
vim9.txt \
|
||||
vim9class.txt \
|
||||
visual.txt \
|
||||
windows.txt \
|
||||
workshop.txt
|
||||
@@ -313,6 +314,7 @@ HTMLS = \
|
||||
vi_diff.html \
|
||||
vimindex.html \
|
||||
vim9.html \
|
||||
vim9class.html \
|
||||
visual.html \
|
||||
windows.html \
|
||||
workshop.html
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 9.0. Last change: 2022 May 24
|
||||
*autocmd.txt* For Vim version 9.0. Last change: 2022 Nov 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -409,6 +409,7 @@ Name triggered by ~
|
||||
when popup menu is not visible
|
||||
|TextChangedP| after a change was made to the text in Insert mode
|
||||
when popup menu visible
|
||||
|TextChangedT| after a change was made to the text in Terminal mode
|
||||
|TextYankPost| after text has been yanked or deleted
|
||||
|
||||
|SafeState| nothing pending, going to wait for the user to type a
|
||||
@@ -1057,8 +1058,8 @@ QuickFixCmdPre Before a quickfix command is run (|:make|,
|
||||
QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
|
||||
command is run, before jumping to the first
|
||||
location. For |:cfile| and |:lfile| commands
|
||||
it is run after error file is read and before
|
||||
moving to the first error.
|
||||
it is run after the error file is read and
|
||||
before moving to the first error.
|
||||
See |QuickFixCmdPost-example|.
|
||||
*QuitPre*
|
||||
QuitPre When using `:quit`, `:wq` or `:qall`, before
|
||||
@@ -1237,6 +1238,10 @@ TextChangedP After a change was made to the text in the
|
||||
current buffer in Insert mode, only when the
|
||||
popup menu is visible. Otherwise the same as
|
||||
TextChanged.
|
||||
*TextChangedT*
|
||||
TextChangedT After a change was made to the text in the
|
||||
current buffer in Terminal mode.
|
||||
Otherwise the same as TextChanged.
|
||||
*TextYankPost*
|
||||
TextYankPost After text has been yanked or deleted in the
|
||||
current buffer. The following values of
|
||||
@@ -1337,8 +1342,9 @@ VimSuspend When the Vim instance is suspended. Only when
|
||||
CTRL-Z was typed inside Vim, or when the SIGTSTP
|
||||
signal was sent to Vim, but not for SIGSTOP.
|
||||
*WinClosed*
|
||||
WinClosed After closing a window. The pattern is
|
||||
matched against the |window-ID|. Both
|
||||
WinClosed When closing a window, just before it is
|
||||
removed from the window layout. The pattern
|
||||
is matched against the |window-ID|. Both
|
||||
<amatch> and <afile> are set to the
|
||||
|window-ID|. Non-recursive (event cannot
|
||||
trigger itself).
|
||||
@@ -1366,17 +1372,42 @@ WinNew When a new window was created. Not done for
|
||||
Before a WinEnter event.
|
||||
|
||||
*WinScrolled*
|
||||
WinScrolled After scrolling the content of a window or
|
||||
resizing a window.
|
||||
The pattern is matched against the
|
||||
|window-ID|. Both <amatch> and <afile> are
|
||||
set to the |window-ID|.
|
||||
Non-recursive (the event cannot trigger
|
||||
itself). However, if the command causes the
|
||||
window to scroll or change size another
|
||||
WinScrolled After any window in the current tab page
|
||||
scrolled the text (horizontally or vertically)
|
||||
or changed width or height. See
|
||||
|win-scrolled-resized|.
|
||||
|
||||
The pattern is matched against the |window-ID|
|
||||
of the first window that scrolled or resized.
|
||||
Both <amatch> and <afile> are set to the
|
||||
|window-ID|.
|
||||
|
||||
|v:event| is set with information about size
|
||||
and scroll changes. |WinScrolled-event|
|
||||
|
||||
Only starts triggering after startup finished
|
||||
and the first screen redraw was done.
|
||||
Does not trigger when defining the first
|
||||
WinScrolled or WinResized event, but may
|
||||
trigger when adding more.
|
||||
|
||||
Non-recursive: the event will not trigger
|
||||
while executing commands for the WinScrolled
|
||||
event. However, if the command causes a
|
||||
window to scroll or change size, then another
|
||||
WinScrolled event will be triggered later.
|
||||
Does not trigger when the command is added,
|
||||
only after the first scroll or resize.
|
||||
|
||||
|
||||
*WinResized*
|
||||
WinResized After a window in the current tab page changed
|
||||
width or height.
|
||||
See |win-scrolled-resized|.
|
||||
|
||||
|v:event| is set with information about size
|
||||
changes. |WinResized-event|
|
||||
|
||||
Same behavior as |WinScrolled| for the
|
||||
pattern, triggering and recursiveness.
|
||||
|
||||
==============================================================================
|
||||
6. Patterns *autocmd-patterns* *{aupat}*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*builtin.txt* For Vim version 9.0. Last change: 2022 Sep 17
|
||||
*builtin.txt* For Vim version 9.0. Last change: 2022 Nov 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -6,9 +6,10 @@
|
||||
|
||||
Builtin functions *builtin-functions*
|
||||
|
||||
Note: Expression evaluation can be disabled at compile time. If this has been
|
||||
done, the builtin functions are not available. See |+eval| and
|
||||
|no-eval-feature|.
|
||||
Note: Expression evaluation can be disabled at compile time, the builtin
|
||||
functions are not available then. See |+eval| and |no-eval-feature|.
|
||||
|
||||
For functions grouped by what they are used for see |function-list|.
|
||||
|
||||
1. Overview |builtin-function-list|
|
||||
2. Details |builtin-function-details|
|
||||
@@ -115,13 +116,13 @@ ch_status({handle} [, {options}])
|
||||
changenr() Number current change number
|
||||
char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
|
||||
charclass({string}) Number character class of {string}
|
||||
charcol({expr}) Number column number of cursor or mark
|
||||
charcol({expr} [, {winid}]) Number column number of cursor or mark
|
||||
charidx({string}, {idx} [, {countcc}])
|
||||
Number char index of byte {idx} in {string}
|
||||
chdir({dir}) String change current working directory
|
||||
cindent({lnum}) Number C indent for line {lnum}
|
||||
clearmatches([{win}]) none clear all matches
|
||||
col({expr}) Number column byte index of cursor or mark
|
||||
col({expr} [, {winid}]) Number column byte index of cursor or mark
|
||||
complete({startcol}, {matches}) none set Insert mode completion
|
||||
complete_add({expr}) Number add completion match
|
||||
complete_check() Number check for key typed during completion
|
||||
@@ -207,6 +208,7 @@ get({func}, {what}) any get property of funcref/partial {func}
|
||||
getbufinfo([{buf}]) List information about buffers
|
||||
getbufline({buf}, {lnum} [, {end}])
|
||||
List lines {lnum} to {end} of buffer {buf}
|
||||
getbufoneline({buf}, {lnum}) String line {lnum} of buffer {buf}
|
||||
getbufvar({buf}, {varname} [, {def}])
|
||||
any variable {varname} in buffer {buf}
|
||||
getchangelist([{buf}]) List list of change list items
|
||||
@@ -245,6 +247,7 @@ getloclist({nr}, {what}) Dict get specific location list properties
|
||||
getmarklist([{buf}]) List list of global/local marks
|
||||
getmatches([{win}]) List list of current matches
|
||||
getmousepos() Dict last known mouse position
|
||||
getmouseshape() String current mouse shape name
|
||||
getpid() Number process ID of Vim
|
||||
getpos({expr}) List position of cursor, mark, etc.
|
||||
getqflist() List list of quickfix items
|
||||
@@ -395,6 +398,7 @@ popup_create({what}, {options}) Number create a popup window
|
||||
popup_dialog({what}, {options}) Number create a popup window used as a dialog
|
||||
popup_filter_menu({id}, {key}) Number filter for a menu popup window
|
||||
popup_filter_yesno({id}, {key}) Number filter for a dialog popup window
|
||||
popup_findecho() Number get window ID of popup for `:echowin`
|
||||
popup_findinfo() Number get window ID of info popup window
|
||||
popup_findpreview() Number get window ID of preview popup window
|
||||
popup_getoptions({id}) Dict get options of popup window {id}
|
||||
@@ -443,7 +447,8 @@ pyxeval({expr}) any evaluate |python_x| expression
|
||||
rand([{expr}]) Number get pseudo-random number
|
||||
range({expr} [, {max} [, {stride}]])
|
||||
List items from {expr} to {max}
|
||||
readblob({fname}) Blob read a |Blob| from {fname}
|
||||
readblob({fname} [, {offset} [, {size}]])
|
||||
Blob read a |Blob| from {fname}
|
||||
readdir({dir} [, {expr} [, {dict}]])
|
||||
List file names in {dir} selected by {expr}
|
||||
readdirex({dir} [, {expr} [, {dict}]])
|
||||
@@ -603,6 +608,7 @@ submatch({nr} [, {list}]) String or List
|
||||
specific match in ":s" or substitute()
|
||||
substitute({expr}, {pat}, {sub}, {flags})
|
||||
String all {pat} in {expr} replaced with {sub}
|
||||
swapfilelist() List swap files found in 'directory'
|
||||
swapinfo({fname}) Dict information about swap file {fname}
|
||||
swapname({buf}) String swap file of buffer {buf}
|
||||
synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
|
||||
@@ -803,8 +809,10 @@ append({lnum}, {text}) *append()*
|
||||
{lnum} can be zero to insert a line before the first one.
|
||||
{lnum} is used like with |getline()|.
|
||||
Returns 1 for failure ({lnum} out of range or out of memory),
|
||||
0 for success. In |Vim9| script an invalid argument or
|
||||
negative number results in an error. Example: >
|
||||
0 for success. When {text} is an empty list zero is returned,
|
||||
no matter the value of {lnum}.
|
||||
In |Vim9| script an invalid argument or negative number
|
||||
results in an error. Example: >
|
||||
:let failed = append(line('$'), "# THE END")
|
||||
:let failed = append(0, ["Chapter 1", "the beginning"])
|
||||
|
||||
@@ -832,7 +840,9 @@ appendbufline({buf}, {lnum}, {text}) *appendbufline()*
|
||||
If {buf} is not a valid buffer or {lnum} is not valid, an
|
||||
error message is given. Example: >
|
||||
:let failed = appendbufline(13, 0, "# THE START")
|
||||
<
|
||||
< However, when {text} is an empty list then no error is given
|
||||
for an invalid {lnum}, since {lnum} isn't actually used.
|
||||
|
||||
Can also be used as a |method| after a List, the base is
|
||||
passed as the second argument: >
|
||||
mylist->appendbufline(buf, lnum)
|
||||
@@ -978,7 +988,7 @@ autocmd_add({acmds}) *autocmd_add()*
|
||||
let acmd.bufnr = 5
|
||||
let acmd.cmd = 'call BufEnterFunc()'
|
||||
call autocmd_add([acmd])
|
||||
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetAutocmdList()->autocmd_add()
|
||||
<
|
||||
@@ -1314,7 +1324,8 @@ bufwinid({buf}) *bufwinid()*
|
||||
|
||||
echo "A window containing buffer 1 is " .. (bufwinid(1))
|
||||
<
|
||||
Only deals with the current tab page.
|
||||
Only deals with the current tab page. See |win_findbuf()| for
|
||||
finding more.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
FindBuffer()->bufwinid()
|
||||
@@ -1466,7 +1477,7 @@ charclass({string}) *charclass()*
|
||||
Returns 0 if {string} is not a |String|.
|
||||
|
||||
|
||||
charcol({expr}) *charcol()*
|
||||
charcol({expr} [, {winid}]) *charcol()*
|
||||
Same as |col()| but returns the character index of the column
|
||||
position given with {expr} instead of the byte position.
|
||||
|
||||
@@ -1549,8 +1560,8 @@ clearmatches([{win}]) *clearmatches()*
|
||||
Can also be used as a |method|: >
|
||||
GetWin()->clearmatches()
|
||||
<
|
||||
*col()*
|
||||
col({expr}) The result is a Number, which is the byte index of the column
|
||||
col({expr} [, {winid}) *col()*
|
||||
The result is a Number, which is the byte index of the column
|
||||
position given with {expr}. The accepted positions are:
|
||||
. the cursor position
|
||||
$ the end of the cursor line (the result is the
|
||||
@@ -1565,6 +1576,8 @@ col({expr}) The result is a Number, which is the byte index of the column
|
||||
and column number. Most useful when the column is "$", to get
|
||||
the last column of a specific line. When "lnum" or "col" is
|
||||
out of range then col() returns zero.
|
||||
With the optional {winid} argument the values are obtained for
|
||||
that window instead of the current window.
|
||||
To get the line number use |line()|. To get both use
|
||||
|getpos()|.
|
||||
For the screen column position use |virtcol()|. For the
|
||||
@@ -1575,16 +1588,15 @@ col({expr}) The result is a Number, which is the byte index of the column
|
||||
col("$") length of cursor line plus one
|
||||
col("'t") column of mark t
|
||||
col("'" .. markname) column of mark markname
|
||||
< The first column is 1. Returns 0 if {expr} is invalid.
|
||||
< The first column is 1. Returns 0 if {expr} is invalid or when
|
||||
the window with ID {winid} is not found.
|
||||
For an uppercase mark the column may actually be in another
|
||||
buffer.
|
||||
For the cursor position, when 'virtualedit' is active, the
|
||||
column is one higher if the cursor is after the end of the
|
||||
line. This can be used to obtain the column in Insert mode: >
|
||||
:imap <F2> <C-O>:let save_ve = &ve<CR>
|
||||
\<C-O>:set ve=all<CR>
|
||||
\<C-O>:echo col(".") .. "\n" <Bar>
|
||||
\let &ve = save_ve<CR>
|
||||
line. Also, when using a <Cmd> mapping the cursor isn't
|
||||
moved, this can be used to obtain the column in Insert mode: >
|
||||
:imap <F2> <Cmd>echowin col(".")<CR>
|
||||
|
||||
< Can also be used as a |method|: >
|
||||
GetPos()->col()
|
||||
@@ -1880,10 +1892,10 @@ cursor({list})
|
||||
|setcursorcharpos()|.
|
||||
|
||||
Does not change the jumplist.
|
||||
{lnum} is used like with |getline()|.
|
||||
{lnum} is used like with |getline()|, except that if {lnum} is
|
||||
zero, the cursor will stay in the current line.
|
||||
If {lnum} is greater than the number of lines in the buffer,
|
||||
the cursor will be positioned at the last line in the buffer.
|
||||
If {lnum} is zero, the cursor will stay in the current line.
|
||||
If {col} is greater than the number of bytes in the line,
|
||||
the cursor will be positioned at the last character in the
|
||||
line.
|
||||
@@ -2768,7 +2780,7 @@ flattennew({list} [, {maxdepth}]) *flattennew()*
|
||||
float2nr({expr}) *float2nr()*
|
||||
Convert {expr} to a Number by omitting the part after the
|
||||
decimal point.
|
||||
{expr} must evaluate to a |Float| or a Number.
|
||||
{expr} must evaluate to a |Float| or a |Number|.
|
||||
Returns 0 if {expr} is not a |Float| or a |Number|.
|
||||
When the value of {expr} is out of range for a |Number| the
|
||||
result is truncated to 0x7fffffff or -0x7fffffff (or when
|
||||
@@ -3194,7 +3206,8 @@ getbufinfo([{dict}])
|
||||
getbufline({buf}, {lnum} [, {end}])
|
||||
Return a |List| with the lines starting from {lnum} to {end}
|
||||
(inclusive) in the buffer {buf}. If {end} is omitted, a
|
||||
|List| with only the line {lnum} is returned.
|
||||
|List| with only the line {lnum} is returned. See
|
||||
`getbufoneline()` for only getting the line.
|
||||
|
||||
For the use of {buf}, see |bufname()| above.
|
||||
|
||||
@@ -3217,6 +3230,11 @@ getbufline({buf}, {lnum} [, {end}])
|
||||
|
||||
< Can also be used as a |method|: >
|
||||
GetBufnr()->getbufline(lnum)
|
||||
<
|
||||
*getbufoneline()*
|
||||
getbufoneline({buf}, {lnum})
|
||||
Just like `getbufline()` but only get one line and return it
|
||||
as a string.
|
||||
|
||||
getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
|
||||
The result is the value of option or local buffer variable
|
||||
@@ -3761,7 +3779,8 @@ getline({lnum} [, {end}])
|
||||
< Can also be used as a |method|: >
|
||||
ComputeLnum()->getline()
|
||||
|
||||
< To get lines from another buffer see |getbufline()|
|
||||
< To get lines from another buffer see |getbufline()| and
|
||||
|getbufoneline()|
|
||||
|
||||
getloclist({nr} [, {what}]) *getloclist()*
|
||||
Returns a |List| with all the entries in the location list for
|
||||
@@ -3870,6 +3889,12 @@ getmousepos() *getmousepos()*
|
||||
When using |getchar()| the Vim variables |v:mouse_lnum|,
|
||||
|v:mouse_col| and |v:mouse_winid| also provide these values.
|
||||
|
||||
getmouseshape() *getmouseshape()*
|
||||
Returns the name of the currently showing mouse pointer.
|
||||
When the |+mouseshape| feature is not supported or the shape
|
||||
is unknown an empty string is returned.
|
||||
This function is mainly intended for testing.
|
||||
|
||||
*getpid()*
|
||||
getpid() Return a Number which is the process ID of the Vim process.
|
||||
On Unix and MS-Windows this is a unique number, until Vim
|
||||
@@ -5402,7 +5427,8 @@ listener_add({callback} [, {buf}]) *listener_add()*
|
||||
the change; one if unknown or the whole line
|
||||
was affected; this is a byte index, first
|
||||
character has a value of one.
|
||||
When lines are inserted the values are:
|
||||
When lines are inserted (not when a line is split, e.g. by
|
||||
typing CR in Insert mode) the values are:
|
||||
lnum line above which the new line is added
|
||||
end equal to "lnum"
|
||||
added number of lines inserted
|
||||
@@ -5547,6 +5573,10 @@ map({expr1}, {expr2}) *map()*
|
||||
If {expr2} is a |Funcref| it is called with two arguments:
|
||||
1. The key or the index of the current item.
|
||||
2. the value of the current item.
|
||||
With a legacy script lambda you don't get an error if it only
|
||||
accepts one argument, but with a Vim9 lambda you get "E1106:
|
||||
One argument too many", the number of arguments must match.
|
||||
|
||||
The function must return the new value of the item. Example
|
||||
that changes each value by "key-value": >
|
||||
func KeyValue(key, val)
|
||||
@@ -6844,10 +6874,28 @@ range({expr} [, {max} [, {stride}]]) *range()*
|
||||
GetExpr()->range()
|
||||
<
|
||||
|
||||
readblob({fname}) *readblob()*
|
||||
readblob({fname} [, {offset} [, {size}]]) *readblob()*
|
||||
Read file {fname} in binary mode and return a |Blob|.
|
||||
When the file can't be opened an error message is given and
|
||||
If {offset} is specified, read the file from the specified
|
||||
offset. If it is a negative value, it is used as an offset
|
||||
from the end of the file. E.g., to read the last 12 bytes: >
|
||||
readblob('file.bin', -12)
|
||||
< If {size} is specified, only the specified size will be read.
|
||||
E.g. to read the first 100 bytes of a file: >
|
||||
readblob('file.bin', 0, 100)
|
||||
< If {size} is -1 or omitted, the whole data starting from
|
||||
{offset} will be read.
|
||||
This can be also used to read the data from a character device
|
||||
on Unix when {size} is explicitly set. Only if the device
|
||||
supports seeking {offset} can be used. Otherwise it should be
|
||||
zero. E.g. to read 10 bytes from a serial console: >
|
||||
readblob('/dev/ttyS0', 0, 10)
|
||||
< When the file can't be opened an error message is given and
|
||||
the result is an empty |Blob|.
|
||||
When the offset is beyond the end of the file the result is an
|
||||
empty blob.
|
||||
When trying to read more bytes than are available the result
|
||||
is truncated.
|
||||
Also see |readfile()| and |writefile()|.
|
||||
|
||||
|
||||
@@ -7035,13 +7083,19 @@ reg_recording() *reg_recording()*
|
||||
Returns the single letter name of the register being recorded.
|
||||
Returns an empty string when not recording. See |q|.
|
||||
|
||||
reltime([{start} [, {end}]]) *reltime()*
|
||||
reltime()
|
||||
reltime({start})
|
||||
reltime({start}, {end}) *reltime()*
|
||||
Return an item that represents a time value. The item is a
|
||||
list with items that depend on the system. In Vim 9 script
|
||||
list<any> can be used.
|
||||
The item can be passed to |reltimestr()| to convert it to a
|
||||
string or |reltimefloat()| to convert to a Float.
|
||||
|
||||
string or |reltimefloat()| to convert to a Float. For
|
||||
example, to see the time spent in function Work(): >
|
||||
var startTime = reltime()
|
||||
Work()
|
||||
echo startTime->reltime()->reltimestr()
|
||||
<
|
||||
Without an argument reltime() returns the current time (the
|
||||
representation is system-dependent, it can not be used as the
|
||||
wall-clock time, see |localtime()| for that).
|
||||
@@ -7162,8 +7216,8 @@ remote_peek({serverid} [, {retvar}]) *remote_peek()*
|
||||
This function is not available in the |sandbox|.
|
||||
{only available when compiled with the |+clientserver| feature}
|
||||
Examples: >
|
||||
:let repl = ""
|
||||
:echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl
|
||||
:let repl = ""
|
||||
:echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl
|
||||
|
||||
< Can also be used as a |method|: >
|
||||
ServerId()->remote_peek()
|
||||
@@ -7223,7 +7277,8 @@ remote_startserver({name})
|
||||
|
||||
< {only available when compiled with the |+clientserver| feature}
|
||||
|
||||
remove({list}, {idx} [, {end}]) *remove()*
|
||||
remove({list}, {idx})
|
||||
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
|
||||
@@ -7241,7 +7296,8 @@ remove({list}, {idx} [, {end}]) *remove()*
|
||||
Can also be used as a |method|: >
|
||||
mylist->remove(idx)
|
||||
|
||||
remove({blob}, {idx} [, {end}])
|
||||
remove({blob}, {idx})
|
||||
remove({blob}, {idx}, {end})
|
||||
Without {end}: Remove the byte at {idx} from |Blob| {blob} and
|
||||
return the byte.
|
||||
With {end}: Remove bytes from {idx} to {end} (inclusive) and
|
||||
@@ -7845,9 +7901,10 @@ setbufline({buf}, {lnum}, {text}) *setbufline()*
|
||||
To insert lines use |appendbufline()|.
|
||||
Any text properties in {lnum} are cleared.
|
||||
|
||||
{text} can be a string to set one line, or a list of strings
|
||||
to set multiple lines. If the list extends below the last
|
||||
line then those lines are added.
|
||||
{text} can be a string to set one line, or a List of strings
|
||||
to set multiple lines. If the List extends below the last
|
||||
line then those lines are added. If the List is empty then
|
||||
nothing is changed and zero is returned.
|
||||
|
||||
For the use of {buf}, see |bufname()| above.
|
||||
|
||||
@@ -7886,29 +7943,38 @@ setbufvar({buf}, {varname}, {val}) *setbufvar()*
|
||||
|
||||
setcellwidths({list}) *setcellwidths()*
|
||||
Specify overrides for cell widths of character ranges. This
|
||||
tells Vim how wide characters are, counted in screen cells.
|
||||
This overrides 'ambiwidth'. Example: >
|
||||
setcellwidths([[0xad, 0xad, 1],
|
||||
\ [0x2194, 0x2199, 2]])
|
||||
tells Vim how wide characters are when displayed in the
|
||||
terminal, counted in screen cells. The values override
|
||||
'ambiwidth'. Example: >
|
||||
call setcellwidths([
|
||||
\ [0x111, 0x111, 1],
|
||||
\ [0x2194, 0x2199, 2],
|
||||
\ ])
|
||||
|
||||
< *E1109* *E1110* *E1111* *E1112* *E1113* *E1114*
|
||||
The {list} argument is a list of lists with each three
|
||||
numbers. These three numbers are [low, high, width]. "low"
|
||||
and "high" can be the same, in which case this refers to one
|
||||
character. Otherwise it is the range of characters from "low"
|
||||
to "high" (inclusive). "width" is either 1 or 2, indicating
|
||||
the character width in screen cells.
|
||||
An error is given if the argument is invalid, also when a
|
||||
range overlaps with another.
|
||||
< The {list} argument is a List of Lists with each three
|
||||
numbers: [{low}, {high}, {width}]. *E1109* *E1110*
|
||||
{low} and {high} can be the same, in which case this refers to
|
||||
one character. Otherwise it is the range of characters from
|
||||
{low} to {high} (inclusive). *E1111* *E1114*
|
||||
Only characters with value 0x100 and higher can be used.
|
||||
|
||||
{width} must be either 1 or 2, indicating the character width
|
||||
in screen cells. *E1112*
|
||||
An error is given if the argument is invalid, also when a
|
||||
range overlaps with another. *E1113*
|
||||
|
||||
If the new value causes 'fillchars' or 'listchars' to become
|
||||
invalid it is rejected and an error is given.
|
||||
|
||||
To clear the overrides pass an empty list: >
|
||||
To clear the overrides pass an empty {list}: >
|
||||
setcellwidths([]);
|
||||
|
||||
< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
|
||||
the effect for known emoji characters.
|
||||
the effect for known emoji characters. Move the cursor
|
||||
through the text to check if the cell widths of your terminal
|
||||
match with what Vim knows about each emoji. If it doesn't
|
||||
look right you need to adjust the {list} argument.
|
||||
|
||||
|
||||
setcharpos({expr}, {list}) *setcharpos()*
|
||||
Same as |setpos()| but uses the specified column number as the
|
||||
@@ -8032,7 +8098,8 @@ setline({lnum}, {text}) *setline()*
|
||||
When {lnum} is just below the last line the {text} will be
|
||||
added below the last line.
|
||||
{text} can be any type or a List of any type, each item is
|
||||
converted to a String.
|
||||
converted to a String. When {text} is an empty List then
|
||||
nothing is changed and FALSE is returned.
|
||||
|
||||
If this succeeds, FALSE is returned. If this fails (most likely
|
||||
because {lnum} is invalid) TRUE is returned.
|
||||
@@ -8621,6 +8688,9 @@ sound_playevent({name} [, {callback}])
|
||||
< On MS-Windows, {name} can be SystemAsterisk, SystemDefault,
|
||||
SystemExclamation, SystemExit, SystemHand, SystemQuestion,
|
||||
SystemStart, SystemWelcome, etc.
|
||||
On macOS, {name} refers to files located in
|
||||
/System/Library/Sounds (e.g. "Tink"). It will also work for
|
||||
custom installed sounds in folders like ~/Library/Sounds.
|
||||
|
||||
When {callback} is specified it is invoked when the sound is
|
||||
finished. The first argument is the sound ID, the second
|
||||
@@ -9245,6 +9315,17 @@ substitute({string}, {pat}, {sub}, {flags}) *substitute()*
|
||||
Can also be used as a |method|: >
|
||||
GetString()->substitute(pat, sub, flags)
|
||||
|
||||
swapfilelist() *swapfilelist()*
|
||||
Returns a list of swap file names, like what "vim -r" shows.
|
||||
See the |-r| command argument. The 'directory' option is used
|
||||
for the directories to inspect. If you only want to get a
|
||||
list of swap files in the current directory then temporarily
|
||||
set 'directory' to a dot: >
|
||||
let save_dir = &directory
|
||||
let &directory = '.'
|
||||
let swapfiles = swapfilelist()
|
||||
let &directory = save_dir
|
||||
|
||||
swapinfo({fname}) *swapinfo()*
|
||||
The result is a dictionary, which holds information about the
|
||||
swapfile {fname}. The available fields are:
|
||||
@@ -9637,6 +9718,7 @@ terminalprops() *terminalprops()*
|
||||
cursor_blink_mode whether sending |t_RC| works **
|
||||
underline_rgb whether |t_8u| works **
|
||||
mouse mouse type supported
|
||||
kitty whether Kitty terminal was detected
|
||||
|
||||
** value 'u' for unknown, 'y' for yes, 'n' for no
|
||||
|
||||
@@ -10166,6 +10248,7 @@ win_move_separator({nr}, {offset}) *win_move_separator()*
|
||||
FALSE otherwise.
|
||||
This will fail for the rightmost window and a full-width
|
||||
window, since it has no separator on the right.
|
||||
Only works for the current tab page. *E1308*
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetWinnr()->win_move_separator(offset)
|
||||
@@ -10180,6 +10263,7 @@ win_move_statusline({nr}, {offset}) *win_move_statusline()*
|
||||
movement may be smaller than specified (e.g., as a consequence
|
||||
of maintaining 'winminheight'). Returns TRUE if the window can
|
||||
be found and FALSE otherwise.
|
||||
Only works for the current tab page.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetWinnr()->win_move_statusline(offset)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 9.0. Last change: 2022 Sep 13
|
||||
*change.txt* For Vim version 9.0. Last change: 2022 Nov 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
@@ -465,7 +465,7 @@ a close callback to the channel.
|
||||
|
||||
To read all normal output from a RAW channel that is available: >
|
||||
let output = ch_readraw(channel)
|
||||
To read all error output from a RAW channel that is available:: >
|
||||
To read all error output from a RAW channel that is available: >
|
||||
let output = ch_readraw(channel, {"part": "err"})
|
||||
Note that if the channel is in NL mode, ch_readraw() will only return one line
|
||||
for each call.
|
||||
@@ -618,6 +618,9 @@ ch_info({handle}) *ch_info()*
|
||||
ch_log({msg} [, {handle}]) *ch_log()*
|
||||
Write String {msg} in the channel log file, if it was opened
|
||||
with |ch_logfile()|.
|
||||
The text "ch_log():" is prepended to the message to make clear
|
||||
it came from this function call and make it easier to find in
|
||||
the log file.
|
||||
When {handle} is passed the channel number is used for the
|
||||
message.
|
||||
{handle} can be a Channel or a Job that has a Channel. The
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 9.0. Last change: 2022 Sep 26
|
||||
*cmdline.txt* For Vim version 9.0. Last change: 2022 Nov 11
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -736,7 +736,9 @@ Line numbers may be specified with: *:range* *{address}*
|
||||
'T position of mark T (uppercase); when the mark is in
|
||||
another file it cannot be used in a range
|
||||
/{pattern}[/] the next line where {pattern} matches *:/*
|
||||
also see |:range-pattern| below
|
||||
?{pattern}[?] the previous line where {pattern} matches *:?*
|
||||
also see |:range-pattern| below
|
||||
\/ the next line where the previously used search
|
||||
pattern matches
|
||||
\? the previous line where the previously used search
|
||||
@@ -744,11 +746,49 @@ Line numbers may be specified with: *:range* *{address}*
|
||||
\& the next line where the previously used substitute
|
||||
pattern matches
|
||||
|
||||
*:range-offset*
|
||||
Each may be followed (several times) by '+' or '-' and an optional number.
|
||||
This number is added or subtracted from the preceding line number. If the
|
||||
number is omitted, 1 is used. If there is nothing before the '+' or '-' then
|
||||
the current line is used.
|
||||
*:range-closed-fold*
|
||||
When a line number after the comma is in a closed fold it is adjusted to the
|
||||
last line of the fold, thus the whole fold is included.
|
||||
|
||||
When a number is added this is done after the adjustment to the last line of
|
||||
the fold. This means these lines are additionally included in the range. For
|
||||
example: >
|
||||
:3,4+2print
|
||||
On this text:
|
||||
1 one ~
|
||||
2 two ~
|
||||
3 three ~
|
||||
4 four FOLDED ~
|
||||
5 five FOLDED ~
|
||||
6 six ~
|
||||
7 seven ~
|
||||
8 eight ~
|
||||
Where lines four and five are a closed fold, ends up printing lines 3 to 7.
|
||||
The 7 comes from the "4" in the range, which is adjusted to the end of the
|
||||
closed fold, which is 5, and then the offset 2 is added.
|
||||
|
||||
An example for subtracting (which isn't very useful): >
|
||||
:2,4-1print
|
||||
On this text:
|
||||
1 one ~
|
||||
2 two ~
|
||||
3 three FOLDED~
|
||||
4 four FOLDED ~
|
||||
5 five FOLDED ~
|
||||
6 six FOLDED ~
|
||||
7 seven ~
|
||||
8 eight ~
|
||||
Where lines three to six are a closed fold, ends up printing lines 2 to 6.
|
||||
The 6 comes from the "4" in the range, which is adjusted to the end of the
|
||||
closed fold, which is 6, and then 1 is subtracted, then this is still in the
|
||||
closed fold and the last line of that fold is used, which is 6.
|
||||
|
||||
*:range-pattern*
|
||||
The "/" and "?" after {pattern} are required to separate the pattern from
|
||||
anything that follows.
|
||||
|
||||
@@ -804,7 +844,7 @@ always be swapped then.
|
||||
|
||||
Count and Range *N:*
|
||||
|
||||
When giving a count before entering ":", this is translated into:
|
||||
When giving a count before entering ":", this is translated into: >
|
||||
:.,.+(count - 1)
|
||||
In words: The "count" lines at and after the cursor. Example: To delete
|
||||
three lines: >
|
||||
@@ -1124,7 +1164,6 @@ Also see |`=|.
|
||||
In the command-line window the command line can be edited just like editing
|
||||
text in any window. It is a special kind of window, because you cannot leave
|
||||
it in a normal way.
|
||||
{not available when compiled without the |+cmdwin| feature}
|
||||
|
||||
|
||||
OPEN *c_CTRL-F* *q:* *q/* *q?*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 9.0. Last change: 2022 Jan 22
|
||||
*diff.txt* For Vim version 9.0. Last change: 2022 Oct 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -376,6 +376,9 @@ Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
|
||||
'diffopt' option. 'diffexpr' cannot change the value of 'lines' and
|
||||
'columns'.
|
||||
|
||||
The advantage of using a function call without arguments is that it is faster,
|
||||
see |expr-option-function|.
|
||||
|
||||
Example (this does almost the same as 'diffexpr' being empty): >
|
||||
|
||||
set diffexpr=MyDiff()
|
||||
@@ -441,6 +444,9 @@ will have the same effect. These variables are set to the file names used:
|
||||
v:fname_diff patch file
|
||||
v:fname_out resulting patched file
|
||||
|
||||
The advantage of using a function call without arguments is that it is faster,
|
||||
see |expr-option-function|.
|
||||
|
||||
Example (this does the same as 'patchexpr' being empty): >
|
||||
|
||||
set patchexpr=MyPatch()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*digraph.txt* For Vim version 9.0. Last change: 2021 Jul 19
|
||||
*digraph.txt* For Vim version 9.0. Last change: 2022 Nov 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -162,7 +162,7 @@ These are the RFC1345 digraphs for the one-byte characters. See the output of
|
||||
":digraphs" for the others.
|
||||
|
||||
EURO
|
||||
|
||||
*euro* *euro-digraph*
|
||||
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
|
||||
added for this. Note the difference between latin1, where the digraph Cu is
|
||||
used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 9.0. Last change: 2022 Apr 16
|
||||
*editing.txt* For Vim version 9.0. Last change: 2022 Nov 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -578,6 +578,43 @@ single <NL> characters are unexpectedly replaced with <CR><NL>.
|
||||
You can encrypt files that are written by setting the 'key' option. This
|
||||
provides some security against others reading your files. |encryption|
|
||||
|
||||
END OF LINE AND END OF FILE *eol-and-eof*
|
||||
|
||||
Vim has several options to control the file format:
|
||||
'fileformat' the <EOL> style: Unix, DOS, Mac
|
||||
'endofline' whether the last line ends with a <EOL>
|
||||
'endoffile' whether the file ends with a CTRL-Z
|
||||
'fixendofline' whether to fix eol and eof
|
||||
|
||||
The first three values are normally detected automatically when reading the
|
||||
file and are used when writing the text to a file. While editing the buffer
|
||||
it looks like every line has a line ending and the CTRL-Z isn't there (an
|
||||
exception is when 'binary' is set, it works differently then).
|
||||
|
||||
The 'fixendofline' option can be used to choose what to write. You can also
|
||||
change the option values to write the file differently than how it was read.
|
||||
|
||||
Here are some examples how to use them.
|
||||
|
||||
If you want files in Unix format (every line NL terminated): >
|
||||
setl ff=unix fixeol
|
||||
You should probably do this on any Unix-like system. Also modern MS-Windows
|
||||
systems tend to work well with this. It is recommended to always use this
|
||||
format for Vim scripts.
|
||||
|
||||
If you want to use an old MS-DOS file in a modern environment, fixing line
|
||||
endings and dropping CTRL-Z, but keeping the <CR><NL> style <EOL>: >
|
||||
setl ff=dos fixeol
|
||||
This is useful for many MS-Windows programs, they regularly expect the
|
||||
<CR><NL> line endings.
|
||||
|
||||
If you want to drop the final <EOL> and add a final CTRL-Z (e.g. for an old
|
||||
system like CP/M): >
|
||||
setl ff=dos nofixeol noeol eof
|
||||
|
||||
If you want to preserve the fileformat exactly as-is, including any final
|
||||
<EOL> and final CTRL-Z: >
|
||||
setl nofixeol
|
||||
|
||||
==============================================================================
|
||||
3. The argument list *argument-list* *arglist*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 9.0. Last change: 2022 Sep 17
|
||||
*eval.txt* For Vim version 9.0. Last change: 2022 Nov 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1548,7 +1548,7 @@ to be doubled. These two commands are equivalent: >
|
||||
if a =~ '\s*'
|
||||
|
||||
|
||||
interpolated-string *$quote* *interp-string*
|
||||
interpolated-string *$quote* *interpolated-string*
|
||||
--------------------
|
||||
$"string" interpolated string constant *expr-$quote*
|
||||
$'string' interpolated literal string constant *expr-$'*
|
||||
@@ -1965,7 +1965,7 @@ v:collate The current locale setting for collation order of the runtime
|
||||
command.
|
||||
See |multi-lang|.
|
||||
|
||||
*v:colornames*
|
||||
*v:colornames*
|
||||
v:colornames A dictionary that maps color names to hex color strings. These
|
||||
color names can be used with the |highlight-guifg|,
|
||||
|highlight-guibg|, and |highlight-guisp| parameters. Updating
|
||||
@@ -2859,7 +2859,7 @@ text...
|
||||
does not need to be doubled.
|
||||
If "eval" is specified, then any Vim expression in the
|
||||
form {expr} is evaluated and the result replaces the
|
||||
expression, like with |interp-string|.
|
||||
expression, like with |interpolated-string|.
|
||||
Example where $HOME is expanded: >
|
||||
let lines =<< trim eval END
|
||||
some text
|
||||
@@ -3073,6 +3073,10 @@ text...
|
||||
Unlock the internal variable {name}. Does the
|
||||
opposite of |:lockvar|.
|
||||
|
||||
If {name} does not exist:
|
||||
- In |Vim9| script an error is given.
|
||||
- In legacy script this is silently ignored.
|
||||
|
||||
:if {expr1} *:if* *:end* *:endif* *:en* *E171* *E579* *E580*
|
||||
:en[dif] Execute the commands until the next matching `:else`
|
||||
or `:endif` if {expr1} evaluates to non-zero.
|
||||
@@ -3392,7 +3396,7 @@ text...
|
||||
when the screen is redrawn.
|
||||
|
||||
*:echow* *:echowin* *:echowindow*
|
||||
:echow[indow] {expr1} ..
|
||||
:[N]echow[indow] {expr1} ..
|
||||
Like |:echomsg| but when the messages popup window is
|
||||
available the message is displayed there. This means
|
||||
it will show for three seconds and avoid a
|
||||
@@ -3400,6 +3404,9 @@ text...
|
||||
that, press Esc in Normal mode (when it would
|
||||
otherwise beep). If it disappears too soon you can
|
||||
use `:messages` to see the text.
|
||||
When [N] is given then the window will show up for
|
||||
this number of seconds. The last `:echowindow` with a
|
||||
count matters, it is used once only.
|
||||
The message window is available when Vim was compiled
|
||||
with the +timer and the +popupwin features.
|
||||
|
||||
@@ -3595,7 +3602,7 @@ this pending exception or command is discarded.
|
||||
For examples see |throw-catch| and |try-finally|.
|
||||
|
||||
|
||||
NESTING OF TRY CONDITIONALS *try-nesting*
|
||||
NESTING OF TRY CONDITIONALS *try-nesting*
|
||||
|
||||
Try conditionals can be nested arbitrarily. That is, a complete try
|
||||
conditional can be put into the try block, a catch clause, or the finally
|
||||
|
||||
@@ -150,6 +150,7 @@ variables can be used to overrule the filetype used for certain extensions:
|
||||
*.fs g:filetype_fs |ft-forth-syntax|
|
||||
*.i g:filetype_i |ft-progress-syntax|
|
||||
*.inc g:filetype_inc
|
||||
*.lsl g:filetype_lsl
|
||||
*.m g:filetype_m |ft-mathematica-syntax|
|
||||
*.mod g:filetype_mod
|
||||
*.p g:filetype_p |ft-pascal-syntax|
|
||||
@@ -570,7 +571,7 @@ used.
|
||||
For example, to set the dialect to a default of "fblite" but still allow for
|
||||
any #lang directive overrides, use the following command: >
|
||||
|
||||
let g:freebasic_lang = "fblite"
|
||||
let g:freebasic_lang = "fblite"
|
||||
|
||||
|
||||
GIT COMMIT *ft-gitcommit-plugin*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*fold.txt* For Vim version 9.0. Last change: 2022 Jan 22
|
||||
*fold.txt* For Vim version 9.0. Last change: 2022 Oct 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -74,8 +74,6 @@ method. The value of the 'foldexpr' option is evaluated to get the foldlevel
|
||||
of a line. Examples:
|
||||
This will create a fold for all consecutive lines that start with a tab: >
|
||||
:set foldexpr=getline(v:lnum)[0]==\"\\t\"
|
||||
This will call a function to compute the fold level: >
|
||||
:set foldexpr=MyFoldLevel(v:lnum)
|
||||
This will make a fold out of paragraphs separated by blank lines: >
|
||||
:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
|
||||
This does the same: >
|
||||
@@ -84,6 +82,10 @@ This does the same: >
|
||||
Note that backslashes must be used to escape characters that ":set" handles
|
||||
differently (space, backslash, double quote, etc., see |option-backslash|).
|
||||
|
||||
The most efficient is to call a compiled function without arguments: >
|
||||
:set foldexpr=MyFoldLevel()
|
||||
The function must use v:lnum. See |expr-option-function|.
|
||||
|
||||
These are the conditions with which the expression is evaluated:
|
||||
- The current buffer and window are set for the line.
|
||||
- The variable "v:lnum" is set to the line number.
|
||||
@@ -501,7 +503,7 @@ is evaluated to obtain the text displayed for a closed fold. Example: >
|
||||
|
||||
This shows the first line of the fold, with "/*", "*/" and "{{{" removed.
|
||||
Note the use of backslashes to avoid some characters to be interpreted by the
|
||||
":set" command. It's simpler to define a function and call that: >
|
||||
":set" command. It is much simpler to define a function and call it: >
|
||||
|
||||
:set foldtext=MyFoldText()
|
||||
:function MyFoldText()
|
||||
@@ -510,6 +512,9 @@ Note the use of backslashes to avoid some characters to be interpreted by the
|
||||
: return v:folddashes .. sub
|
||||
:endfunction
|
||||
|
||||
The advantage of using a function call without arguments is that it is faster,
|
||||
see |expr-option-function|.
|
||||
|
||||
Evaluating 'foldtext' is done in the |sandbox|. The current window is set to
|
||||
the window that displays the line. The context is set to the script where the
|
||||
option was last set.
|
||||
|
||||
@@ -79,7 +79,7 @@ The last command will create the following syntax files:
|
||||
- `context-data-context.vim`;
|
||||
- `context-data-interfaces.vim`;
|
||||
- `context-data-metafun.vim`;
|
||||
- `context-data-tex.vim`.
|
||||
- `context-data-tex.vim`.
|
||||
|
||||
The same command can be used to update those syntax files.
|
||||
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
*ft_rust.txt* For Vim version 9.0. Last change: 2017 Nov 02
|
||||
*ft_rust.txt* For Vim version 9.0. Last change: 2022 Oct 17
|
||||
|
||||
This is documentation for the Rust filetype plugin.
|
||||
|
||||
==============================================================================
|
||||
CONTENTS *rust*
|
||||
CONTENTS *rust*
|
||||
|
||||
1. Introduction |rust-intro|
|
||||
2. Settings |rust-settings|
|
||||
3. Commands |rust-commands|
|
||||
4. Mappings |rust-mappings|
|
||||
1. Introduction |rust-intro|
|
||||
2. Settings |rust-settings|
|
||||
3. Commands |rust-commands|
|
||||
4. Mappings |rust-mappings|
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *rust-intro*
|
||||
INTRODUCTION *rust-intro*
|
||||
|
||||
This plugin provides syntax and supporting functionality for the Rust
|
||||
filetype.
|
||||
|
||||
==============================================================================
|
||||
SETTINGS *rust-settings*
|
||||
SETTINGS *rust-settings*
|
||||
|
||||
This plugin has a few variables you can define in your vimrc that change the
|
||||
behavior of the plugin.
|
||||
|
||||
*g:rustc_path*
|
||||
*g:rustc_path*
|
||||
g:rustc_path~
|
||||
Set this option to the path to rustc for use in the |:RustRun| and
|
||||
|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
|
||||
let g:rustc_path = $HOME .. "/bin/rustc"
|
||||
<
|
||||
|
||||
*g:rustc_makeprg_no_percent*
|
||||
*g:rustc_makeprg_no_percent*
|
||||
g:rustc_makeprg_no_percent~
|
||||
Set this option to 1 to have 'makeprg' default to "rustc" instead of
|
||||
"rustc %": >
|
||||
let g:rustc_makeprg_no_percent = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal*
|
||||
*g:rust_conceal*
|
||||
g:rust_conceal~
|
||||
Set this option to turn on the basic |conceal| support: >
|
||||
let g:rust_conceal = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal_mod_path*
|
||||
*g:rust_conceal_mod_path*
|
||||
g:rust_conceal_mod_path~
|
||||
Set this option to turn on |conceal| for the path connecting token
|
||||
"::": >
|
||||
let g:rust_conceal_mod_path = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal_pub*
|
||||
*g:rust_conceal_pub*
|
||||
g:rust_conceal_pub~
|
||||
Set this option to turn on |conceal| for the "pub" token: >
|
||||
let g:rust_conceal_pub = 1
|
||||
<
|
||||
|
||||
*g:rust_recommended_style*
|
||||
*g:rust_recommended_style*
|
||||
g:rust_recommended_style~
|
||||
Set this option to enable vim indentation and textwidth settings to
|
||||
conform to style conventions of the rust standard library (i.e. use 4
|
||||
spaces for indents and sets 'textwidth' to 99). This option is enabled
|
||||
Set this option to enable vim indentation and textwidth settings to
|
||||
conform to style conventions of the rust standard library (i.e. use 4
|
||||
spaces for indents and sets 'textwidth' to 99). This option is enabled
|
||||
by default. To disable it: >
|
||||
let g:rust_recommended_style = 0
|
||||
<
|
||||
|
||||
*g:rust_fold*
|
||||
*g:rust_fold*
|
||||
g:rust_fold~
|
||||
Set this option to turn on |folding|: >
|
||||
let g:rust_fold = 1
|
||||
@@ -76,39 +76,39 @@ g:rust_fold~
|
||||
2 Braced blocks are folded. 'foldlevel' is left at the
|
||||
global value (all folds are closed by default).
|
||||
|
||||
*g:rust_bang_comment_leader*
|
||||
*g:rust_bang_comment_leader*
|
||||
g:rust_bang_comment_leader~
|
||||
Set this option to 1 to preserve the leader on multi-line doc comments
|
||||
using the /*! syntax: >
|
||||
let g:rust_bang_comment_leader = 1
|
||||
<
|
||||
|
||||
*g:ftplugin_rust_source_path*
|
||||
*g:ftplugin_rust_source_path*
|
||||
g:ftplugin_rust_source_path~
|
||||
Set this option to a path that should be prepended to 'path' for Rust
|
||||
source files: >
|
||||
let g:ftplugin_rust_source_path = $HOME .. '/dev/rust'
|
||||
<
|
||||
|
||||
*g:rustfmt_command*
|
||||
*g:rustfmt_command*
|
||||
g:rustfmt_command~
|
||||
Set this option to the name of the 'rustfmt' executable in your $PATH. If
|
||||
not specified it defaults to 'rustfmt' : >
|
||||
let g:rustfmt_command = 'rustfmt'
|
||||
<
|
||||
*g:rustfmt_autosave*
|
||||
*g:rustfmt_autosave*
|
||||
g:rustfmt_autosave~
|
||||
Set this option to 1 to run |:RustFmt| automatically when saving a
|
||||
buffer. If not specified it defaults to 0 : >
|
||||
let g:rustfmt_autosave = 0
|
||||
<
|
||||
*g:rustfmt_fail_silently*
|
||||
*g:rustfmt_fail_silently*
|
||||
g:rustfmt_fail_silently~
|
||||
Set this option to 1 to prevent 'rustfmt' from populating the
|
||||
|location-list| with errors. If not specified it defaults to 0: >
|
||||
let g:rustfmt_fail_silently = 0
|
||||
<
|
||||
*g:rustfmt_options*
|
||||
*g:rustfmt_options*
|
||||
g:rustfmt_options~
|
||||
Set this option to a string of options to pass to 'rustfmt'. The
|
||||
write-mode is already set to 'overwrite'. If not specified it
|
||||
@@ -116,13 +116,13 @@ g:rustfmt_options~
|
||||
let g:rustfmt_options = ''
|
||||
<
|
||||
|
||||
*g:rust_playpen_url*
|
||||
*g:rust_playpen_url*
|
||||
g:rust_playpen_url~
|
||||
Set this option to override the URL for the playpen to use: >
|
||||
let g:rust_playpen_url = 'https://play.rust-lang.org/'
|
||||
<
|
||||
|
||||
*g:rust_shortener_url*
|
||||
*g:rust_shortener_url*
|
||||
g:rust_shortener_url~
|
||||
Set this option to override the URL for the URL shortener: >
|
||||
let g:rust_shortener_url = 'https://is.gd/'
|
||||
@@ -130,9 +130,9 @@ g:rust_shortener_url~
|
||||
|
||||
|
||||
==============================================================================
|
||||
COMMANDS *rust-commands*
|
||||
COMMANDS *rust-commands*
|
||||
|
||||
:RustRun [args] *:RustRun*
|
||||
:RustRun [args] *:RustRun*
|
||||
:RustRun! [rustc-args] [--] [args]
|
||||
Compiles and runs the current file. If it has unsaved changes,
|
||||
it will be saved first using |:update|. If the current file is
|
||||
@@ -150,7 +150,7 @@ COMMANDS *rust-commands*
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustExpand [args] *:RustExpand*
|
||||
:RustExpand [args] *:RustExpand*
|
||||
:RustExpand! [TYPE] [args]
|
||||
Expands the current file using --pretty and displays the
|
||||
results in a new split. If the current file has unsaved
|
||||
@@ -169,7 +169,7 @@ COMMANDS *rust-commands*
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustEmitIr [args] *:RustEmitIr*
|
||||
:RustEmitIr [args] *:RustEmitIr*
|
||||
Compiles the current file to LLVM IR and displays the results
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
@@ -180,7 +180,7 @@ COMMANDS *rust-commands*
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustEmitAsm [args] *:RustEmitAsm*
|
||||
:RustEmitAsm [args] *:RustEmitAsm*
|
||||
Compiles the current file to assembly and displays the results
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
@@ -191,7 +191,7 @@ COMMANDS *rust-commands*
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustPlay *:RustPlay*
|
||||
:RustPlay *:RustPlay*
|
||||
This command will only work if you have web-api.vim installed
|
||||
(available at https://github.com/mattn/webapi-vim). It sends the
|
||||
current selection, or if nothing is selected, the entirety of the
|
||||
@@ -204,7 +204,7 @@ COMMANDS *rust-commands*
|
||||
|g:rust_shortener_url| is the base URL for the shortener, by
|
||||
default "https://is.gd/"
|
||||
|
||||
:RustFmt *:RustFmt*
|
||||
:RustFmt *:RustFmt*
|
||||
Runs |g:rustfmt_command| on the current buffer. If
|
||||
|g:rustfmt_options| is set then those will be passed to the
|
||||
executable.
|
||||
@@ -214,12 +214,12 @@ COMMANDS *rust-commands*
|
||||
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
|
||||
then it will not populate the |location-list|.
|
||||
|
||||
:RustFmtRange *:RustFmtRange*
|
||||
:RustFmtRange *:RustFmtRange*
|
||||
Runs |g:rustfmt_command| with selected range. See
|
||||
|:RustFmt| for any other information.
|
||||
|
||||
==============================================================================
|
||||
MAPPINGS *rust-mappings*
|
||||
MAPPINGS *rust-mappings*
|
||||
|
||||
This plugin defines mappings for |[[| and |]]| to support hanging indents.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 9.0. Last change: 2022 Apr 03
|
||||
*gui.txt* For Vim version 9.0. Last change: 2022 Nov 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -889,6 +889,11 @@ s The menu was defined with "<silent>" to avoid showing what it is
|
||||
Note that hitting <Tab> while entering a menu name after a menu command may
|
||||
be used to complete the name of the menu item.
|
||||
|
||||
It is not allowed to change menus while listing them. *E1310*
|
||||
This doesn't normally happen, only when, for example, you would have a timer
|
||||
callback define a menu and the user lists menus in a way it shows
|
||||
|more-prompt|.
|
||||
|
||||
|
||||
5.4 Executing Menus *execute-menus*
|
||||
|
||||
|
||||
@@ -161,6 +161,8 @@ Programming language support ~
|
||||
|filetype.txt| settings done specifically for a type of file
|
||||
|quickfix.txt| commands for a quick edit-compile-fix cycle
|
||||
|ft_ada.txt| Ada (the programming language) support
|
||||
|ft_context.txt| Filetype plugin for ConTeXt
|
||||
|ft_mp.txt| Filetype plugin for METAFONT and MetaPost
|
||||
|ft_ps1.txt| Filetype plugin for Windows PowerShell
|
||||
|ft_raku.txt| Filetype plugin for Raku
|
||||
|ft_rust.txt| Filetype plugin for Rust
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_ole.txt* For Vim version 9.0. Last change: 2019 Dec 07
|
||||
*if_ole.txt* For Vim version 9.0. Last change: 2022 Oct 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Paul Moore
|
||||
@@ -156,18 +156,14 @@ To avoid the message box that pops up to report the result, prepend "-silent":
|
||||
gvim -silent -unregister
|
||||
|
||||
==============================================================================
|
||||
5. MS Visual Studio integration *MSVisualStudio* *VisVim*
|
||||
5. MS Visual Studio integration *MSVisualStudio*
|
||||
|
||||
The OLE version can be used to run Vim as the editor in Microsoft Visual
|
||||
Studio. This is called "VisVim". It is included in the archive that contains
|
||||
the OLE version. The documentation can be found in the runtime directory, the
|
||||
README_VisVim.txt file.
|
||||
The old "VisVim" integration was removed from Vim in patch 9.0.0698.
|
||||
|
||||
|
||||
Using Vim with Visual Studio .Net~
|
||||
|
||||
With .Net you no longer really need VisVim, since .Net studio has support for
|
||||
external editors. Follow these directions:
|
||||
.Net studio has support for external editors. Follow these directions:
|
||||
|
||||
In .Net Studio choose from the menu Tools->External Tools...
|
||||
Add
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*indent.txt* For Vim version 9.0. Last change: 2022 May 21
|
||||
*indent.txt* For Vim version 9.0. Last change: 2022 Oct 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -982,9 +982,12 @@ indentation: >
|
||||
|
||||
PYTHON *ft-python-indent*
|
||||
|
||||
The amount of indent can be set for the following situations. The examples
|
||||
given are the defaults. Note that the dictionary values are set to an
|
||||
expression, so that you can change the value of 'shiftwidth' later.
|
||||
The amount of indent can be set with the `g:python_indent` |Dictionary|, which
|
||||
needs to be created before adding the items: >
|
||||
let g:python_indent = {}
|
||||
The examples given are the defaults. Note that the dictionary values are set
|
||||
to an expression, so that you can change the value of 'shiftwidth' later
|
||||
without having to update these values.
|
||||
|
||||
Indent after an open paren: >
|
||||
let g:python_indent.open_paren = 'shiftwidth() * 2'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 9.0. Last change: 2022 Jun 11
|
||||
*index.txt* For Vim version 9.0. Last change: 2022 Oct 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1150,7 +1150,7 @@ tag command action ~
|
||||
|:!!| :!! repeat last ":!" command
|
||||
|:#| :# same as ":number"
|
||||
|:&| :& repeat last ":substitute"
|
||||
|:star| :* execute contents of a register
|
||||
|:star| :* use the last Visual area, like :'<,'>
|
||||
|:<| :< shift lines one 'shiftwidth' left
|
||||
|:=| := print the last line number
|
||||
|:>| :> shift lines one 'shiftwidth' right
|
||||
@@ -1277,6 +1277,7 @@ tag command action ~
|
||||
|:debuggreedy| :debugg[reedy] read debug mode commands from normal input
|
||||
|:def| :def define a Vim9 user function
|
||||
|:defcompile| :defc[ompile] compile Vim9 user functions in current script
|
||||
|:defer| :defer call function when current function is done
|
||||
|:delcommand| :delc[ommand] delete user-defined command
|
||||
|:delfunction| :delf[unction] delete a user function
|
||||
|:delmarks| :delm[arks] delete marks
|
||||
@@ -1308,6 +1309,7 @@ tag command action ~
|
||||
|:echohl| :echoh[l] set highlighting for echo commands
|
||||
|:echomsg| :echom[sg] same as :echo, put message in history
|
||||
|:echon| :echon same as :echo, but without <EOL>
|
||||
|:echowindow| :echow[indow] same as :echomsg, but use a popup window
|
||||
|:else| :el[se] part of an :if command
|
||||
|:elseif| :elsei[f] part of an :if command
|
||||
|:emenu| :em[enu] execute a menu by name
|
||||
@@ -1356,6 +1358,7 @@ tag command action ~
|
||||
|:highlight| :hi[ghlight] specify highlighting methods
|
||||
|:hide| :hid[e] hide current buffer for a command
|
||||
|:history| :his[tory] print a history list
|
||||
|:horizontal| :hor[izontal] following window command work horizontally
|
||||
|:insert| :i[nsert] insert text
|
||||
|:iabbrev| :ia[bbrev] like ":abbrev" but for Insert mode
|
||||
|:iabclear| :iabc[lear] like ":abclear" but for Insert mode
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 9.0. Last change: 2022 Apr 06
|
||||
*insert.txt* For Vim version 9.0. Last change: 2022 Sep 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -667,7 +667,7 @@ When the popup menu is displayed there are a few more special keys, see
|
||||
|popupmenu-keys|.
|
||||
|
||||
Note: The keys that are valid in CTRL-X mode are not mapped. This allows for
|
||||
":map ^F ^X^F" to work (where ^F is CTRL-F and ^X is CTRL-X). The key that
|
||||
`:map <C-F> <C-X><C-F>` to work (assuming "<" is not in 'cpo'). The key that
|
||||
ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
|
||||
Also, when doing completion with 'complete' mappings apply as usual.
|
||||
|
||||
@@ -677,11 +677,12 @@ buffer text cannot be changed. Mappings that somehow invoke ":normal i.."
|
||||
will generate an E565 error.
|
||||
|
||||
The following mappings are suggested to make typing the completion commands
|
||||
a bit easier (although they will hide other commands): >
|
||||
:inoremap ^] ^X^]
|
||||
:inoremap ^F ^X^F
|
||||
:inoremap ^D ^X^D
|
||||
:inoremap ^L ^X^L
|
||||
a bit easier (although they will hide other commands; this requires "<" is not
|
||||
in 'cpo'): >
|
||||
:inoremap <C-]> <C-X><C-]>
|
||||
:inoremap <C-F> <C-X><C-F>
|
||||
:inoremap <C-D> <C-X><C-D>
|
||||
:inoremap <C-L> <C-X><C-L>
|
||||
|
||||
As a special case, typing CTRL-R to perform register insertion (see
|
||||
|i_CTRL-R|) will not exit CTRL-X mode. This is primarily to allow the use of
|
||||
@@ -891,7 +892,7 @@ Groß): >
|
||||
endfor
|
||||
return res
|
||||
endfunc
|
||||
|
||||
|
||||
if exists('+thesaurusfunc')
|
||||
set thesaurusfunc=Thesaur
|
||||
endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*intro.txt* For Vim version 9.0. Last change: 2022 Sep 12
|
||||
*intro.txt* For Vim version 9.0. Last change: 2022 Nov 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -122,10 +122,10 @@ http://www.vim.org/maillist.php
|
||||
Bug reports: *bugs* *bug-reports* *bugreport.vim*
|
||||
|
||||
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
|
||||
1. For issues with runtime files, look in the header for an email address or
|
||||
any other way to report it to the maintainer.
|
||||
2. Open an issue on GitHub: https://github.com/vim/vim/issues
|
||||
The text will be forwarded to the vim-dev maillist.
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 9.0. Last change: 2022 Sep 26
|
||||
*map.txt* For Vim version 9.0. Last change: 2022 Nov 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -10,18 +10,19 @@ This subject is introduced in sections |05.4|, |24.7| and |40.1| of the user
|
||||
manual.
|
||||
|
||||
1. Key mapping |key-mapping|
|
||||
1.1 MAP COMMANDS |:map-commands|
|
||||
1.2 Special arguments |:map-arguments|
|
||||
1.3 Mapping and modes |:map-modes|
|
||||
1.4 Listing mappings |map-listing|
|
||||
1.5 Mapping special keys |:map-special-keys|
|
||||
1.6 Special characters |:map-special-chars|
|
||||
1.7 What keys to map |map-which-keys|
|
||||
1.8 Examples |map-examples|
|
||||
1.9 Using mappings |map-typing|
|
||||
1.10 Mapping alt-keys |:map-alt-keys|
|
||||
1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
|
||||
1.12 Mapping an operator |:map-operator|
|
||||
1.1 MAP COMMANDS |:map-commands|
|
||||
1.2 Special arguments |:map-arguments|
|
||||
1.3 Mapping and modes |:map-modes|
|
||||
1.4 Listing mappings |map-listing|
|
||||
1.5 Mapping special keys |:map-special-keys|
|
||||
1.6 Special characters |:map-special-chars|
|
||||
1.7 What keys to map |map-which-keys|
|
||||
1.8 Examples |map-examples|
|
||||
1.9 Using mappings |map-typing|
|
||||
1.10 Mapping alt-keys |:map-alt-keys|
|
||||
1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
|
||||
1.12 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol|
|
||||
1.13 Mapping an operator |:map-operator|
|
||||
2. Abbreviations |abbreviations|
|
||||
3. Local mappings and functions |script-local|
|
||||
4. User-defined commands |user-commands|
|
||||
@@ -234,6 +235,9 @@ The search string will not be echoed when using this mapping. Messages from
|
||||
the executed command are still given though. To shut them up too, add a
|
||||
":silent" in the executed command: >
|
||||
:map <silent> ,h :exe ":silent normal /Header\r"<CR>
|
||||
Note that the effect of a command might also be silenced, e.g., when the
|
||||
mapping selects another entry for command line completion it won't be
|
||||
displayed.
|
||||
Prompts will still be given, e.g., for inputdialog().
|
||||
Using "<silent>" for an abbreviation is possible, but will cause redrawing of
|
||||
the command line to fail.
|
||||
@@ -581,6 +585,9 @@ is the start of the last selected Visual area in the current buffer |'<|.
|
||||
The |:filter| command can be used to select what mappings to list. The
|
||||
pattern is matched against the {lhs} and {rhs} in the raw form.
|
||||
|
||||
While mappings are being listed, it is not possible to add or clear mappings,
|
||||
e.g. from a timer callback. *E1309*
|
||||
|
||||
*:map-verbose*
|
||||
When 'verbose' is non-zero, listing a key map will also display where it was
|
||||
last defined. Example: >
|
||||
@@ -964,13 +971,18 @@ using other applications but not when inside Vim.
|
||||
Xterm and a few other terminals can be put in a mode where keys with modifiers
|
||||
are sent with a special escape code. Vim recognizes these codes and can then
|
||||
make a difference between CTRL-H and Backspace, even when Backspace sends the
|
||||
character 8. And many more special keys.
|
||||
character 8. And many more special keys, such as Tab and CTRL-I, which cannot
|
||||
be mapped separately otherwise.
|
||||
|
||||
For xterm modifyOtherKeys is enabled in the builtin termcap entry. If this is
|
||||
not used you can enable modifyOtherKeys with these lines in your vimrc: >
|
||||
let &t_TI = "\<Esc>[>4;2m"
|
||||
let &t_TE = "\<Esc>[>4;m"
|
||||
|
||||
This sets modifyOtherKeys to level 2. Note that modifyOtherKeys level 1 does
|
||||
not work. Some terminals do not support level 2 and then send key codes that
|
||||
Vim will not be able to correctly recognize.
|
||||
|
||||
In case the modifyOtherKeys mode causes problems you can disable it: >
|
||||
let &t_TI = ""
|
||||
let &t_TE = ""
|
||||
@@ -989,16 +1001,61 @@ mapping, see |map-bar|.
|
||||
WARNING: if you map <C-[> you may very well break any key codes that start
|
||||
with Esc. Make sure it comes AFTER other mappings.
|
||||
|
||||
Starting with xterm version 377 Vim can detect the modifyOtherKeys state by
|
||||
requesting it. For this the 't_RK' termcap entry is used. When the response
|
||||
is found then Vim will know whether modifyOtherKeys level 2 is enabled, and
|
||||
handle mappings accordingly.
|
||||
|
||||
Before version 377 Vim automatically detects if the modifyOtherKeys mode was
|
||||
enabled when it spots an escape sequence that must have been created by it.
|
||||
To see if Vim detected such an escape sequence use `:verbose map`, the first
|
||||
line will then show "Seen modifyOtherKeys: true" (possibly translated).
|
||||
|
||||
This automatic detection depends on receiving an escape code starting with
|
||||
"<1b>[27;". This is the normal way xterm sends these key codes. However, if
|
||||
the *formatOtherKeys* resource is set another form is used that is not
|
||||
recognized, therefore you must not set formatOtherKeys.
|
||||
|
||||
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.
|
||||
modifyOtherKeys is off, if you get <1b>[27;5;118~ then it is on.
|
||||
|
||||
Note that xterm up to version 376 has a bug that makes Shift-Esc send a
|
||||
regular Esc code, the Shift modifier is dropped.
|
||||
|
||||
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
|
||||
Insert mode to avoid every key with a modifier causing Insert mode to end.
|
||||
|
||||
|
||||
1.12 MAPPING AN OPERATOR *:map-operator*
|
||||
1.12 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol*
|
||||
|
||||
If the value of 'term' contains "kitty" then Vim will send out an escape
|
||||
sequence to enable the Kitty keyboard protocol. This can be changed with the
|
||||
'keyprotocol' option.
|
||||
|
||||
Like modifyOtherKeys, this will make it possible to distinguish between more
|
||||
keys with modifiers. Also, this protocol sends an escape sequence for the Esc
|
||||
key, so that Vim does not need to use a timeout to know whether receiving an
|
||||
Esc character means the Esc key was pressed or it's the start of an escape
|
||||
sequence.
|
||||
|
||||
Vim automatically detects if the Kitty keyboard protocol was enabled when it
|
||||
spots the response to the status request (this should be part of the |t_TI|
|
||||
termcap entry). To see if Vim detected such an escape sequence use: >
|
||||
:verbose map
|
||||
The first line will then show "Kitty keyboard protocol: {value}" (possibly
|
||||
translated). The meaning of {value}:
|
||||
Unknown no status received yet
|
||||
Off protocol is not used
|
||||
On protocol is used
|
||||
Disabled protocol was used but expected to have been disabled
|
||||
by 't_TE'
|
||||
Cleared protocol expected to have beeen disabled by 't_TE',
|
||||
previous state is unknown
|
||||
|
||||
|
||||
1.13 MAPPING AN OPERATOR *:map-operator*
|
||||
|
||||
An operator is used before a {motion} command. To define your own operator
|
||||
you must create a mapping that first sets the 'operatorfunc' option and then
|
||||
@@ -1468,6 +1525,8 @@ See |:verbose-cmd| for more information.
|
||||
|
||||
:delc[ommand] {cmd} *:delc* *:delcommand* *E184*
|
||||
Delete the user-defined command {cmd}.
|
||||
This is not allowed while listing commands, e.g. from
|
||||
a timer. *E1311*
|
||||
|
||||
:delc[ommand] -buffer {cmd} *E1237*
|
||||
Delete the user-defined command {cmd} that was defined
|
||||
@@ -1478,7 +1537,7 @@ See |:verbose-cmd| for more information.
|
||||
|
||||
|
||||
Command attributes ~
|
||||
*command-attributes*
|
||||
*command-attributes*
|
||||
User-defined commands are treated by Vim just like any other Ex commands. They
|
||||
can have arguments, or have a range specified. Arguments are subject to
|
||||
completion as filenames, buffers, etc. Exactly how this works depends upon the
|
||||
@@ -1812,7 +1871,7 @@ When executed as: >
|
||||
This will invoke: >
|
||||
:call Myfunc("arg1","arg2")
|
||||
|
||||
< *q-args-example*
|
||||
< *q-args-example*
|
||||
A more substantial example: >
|
||||
:function Allargs(command)
|
||||
: let i = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*message.txt* For Vim version 9.0. Last change: 2022 Jan 26
|
||||
*message.txt* For Vim version 9.0. Last change: 2022 Oct 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -635,6 +635,7 @@ probably means that some other program changed the file. You will have to
|
||||
find out what happened, and decide which version of the file you want to keep.
|
||||
Set the 'autoread' option if you want to do this automatically.
|
||||
This message is not given when 'buftype' is not empty.
|
||||
Also see the |FileChangedShell| autocommand.
|
||||
|
||||
There is one situation where you get this message even though there is nothing
|
||||
wrong: If you save a file in Windows on the day the daylight saving time
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.0. Last change: 2022 Sep 27
|
||||
*options.txt* For Vim version 9.0. Last change: 2022 Nov 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1626,6 +1626,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Note that v:charconvert_from and v:charconvert_to may be different
|
||||
from 'encoding'. Vim internally uses UTF-8 instead of UCS-2 or UCS-4.
|
||||
|
||||
The advantage of using a function call without arguments is that it is
|
||||
faster, see |expr-option-function|.
|
||||
|
||||
Encryption is not done by Vim when using 'charconvert'. If you want
|
||||
to encrypt the file after conversion, 'charconvert' should take care
|
||||
of this.
|
||||
@@ -2939,7 +2942,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'display' 'dy' string (default "", set to "truncate" in
|
||||
|defaults.vim|)
|
||||
global
|
||||
Change the way text is displayed. This is comma-separated list of
|
||||
Change the way text is displayed. This is a comma-separated list of
|
||||
flags:
|
||||
lastline When included, as much as possible of the last line
|
||||
in a window will be displayed. "@@@" is put in the
|
||||
@@ -2953,6 +2956,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
When neither "lastline" nor "truncate" is included, a last line that
|
||||
doesn't fit is replaced with "@" lines.
|
||||
|
||||
The "@" character can be changed by setting the "lastline" item in
|
||||
'fillchars'. The character is highlighted with |hl-NonText|.
|
||||
|
||||
*'eadirection'* *'ead'*
|
||||
'eadirection' 'ead' string (default "both")
|
||||
global
|
||||
@@ -3042,6 +3048,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
|
||||
not set yet, the default for 'fileencodings' is changed.
|
||||
|
||||
*'endoffile'* *'eof'* *'noendoffile'* *'noeof'*
|
||||
'endoffile' 'eof' boolean (default off)
|
||||
local to buffer
|
||||
Indicates that a CTRL-Z character was found at the end of the file
|
||||
when reading it. Normally only happens when 'fileformat' is "dos".
|
||||
When writing a file and this option is off and the 'binary' option
|
||||
is on, or 'fixeol' option is off, no CTRL-Z will be written at the
|
||||
end of the file.
|
||||
See |eol-and-eof| for example settings.
|
||||
|
||||
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
|
||||
'endofline' 'eol' boolean (default on)
|
||||
local to buffer
|
||||
@@ -3056,6 +3072,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
to remember the presence of a <EOL> for the last line in the file, so
|
||||
that when you write the file the situation from the original file can
|
||||
be kept. But you can change it if you want to.
|
||||
See |eol-and-eof| for example settings.
|
||||
|
||||
*'equalalways'* *'ea'* *'noequalalways'* *'noea'*
|
||||
'equalalways' 'ea' boolean (default on)
|
||||
@@ -3417,6 +3434,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
foldsep '|' open fold middle character
|
||||
diff '-' deleted lines of the 'diff' option
|
||||
eob '~' empty lines below the end of a buffer
|
||||
lastline '@' 'display' contains lastline/truncate
|
||||
|
||||
Any one that is omitted will fall back to the default. For "stl" and
|
||||
"stlnc" the space will be used when there is highlighting, '^' or '='
|
||||
@@ -3439,16 +3457,18 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
fold Folded |hl-Folded|
|
||||
diff DiffDelete |hl-DiffDelete|
|
||||
eob EndOfBuffer |hl-EndOfBuffer|
|
||||
lastline NonText |hl-NonText|
|
||||
|
||||
*'fixendofline'* *'fixeol'* *'nofixendofline'* *'nofixeol'*
|
||||
'fixendofline' 'fixeol' boolean (default on)
|
||||
local to buffer
|
||||
When writing a file and this option is on, <EOL> at the end of file
|
||||
will be restored if missing. Turn this option off if you want to
|
||||
will be restored if missing. Turn this option off if you want to
|
||||
preserve the situation from the original file.
|
||||
When the 'binary' option is set the value of this option doesn't
|
||||
matter.
|
||||
See the 'endofline' option.
|
||||
See |eol-and-eof| for example settings.
|
||||
|
||||
*'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
|
||||
'fkmap' 'fk' boolean (default off)
|
||||
@@ -3664,6 +3684,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< This will invoke the mylang#Format() function in the
|
||||
autoload/mylang.vim file in 'runtimepath'. |autoload|
|
||||
|
||||
The advantage of using a function call without arguments is that it is
|
||||
faster, see |expr-option-function|.
|
||||
|
||||
The expression is also evaluated when 'textwidth' is set and adding
|
||||
text beyond that limit. This happens under the same conditions as
|
||||
when internal formatting is used. Make sure the cursor is kept in the
|
||||
@@ -4525,20 +4548,27 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|+find_in_path| or |+eval| features}
|
||||
Expression to be used to transform the string found with the 'include'
|
||||
option to a file name. Mostly useful to change "." to "/" for Java: >
|
||||
:set includeexpr=substitute(v:fname,'\\.','/','g')
|
||||
:setlocal includeexpr=substitute(v:fname,'\\.','/','g')
|
||||
< The "v:fname" variable will be set to the file name that was detected.
|
||||
|
||||
Note the double backslash: the `:set` command first halves them, then
|
||||
one remains it the value, where "\." matches a dot literally. For
|
||||
simple character replacements `tr()` avoids the need for escaping: >
|
||||
:setlocal includeexpr=tr(v:fname,'.','/')
|
||||
<
|
||||
Also used for the |gf| command if an unmodified file name can't be
|
||||
found. Allows doing "gf" on the name after an 'include' statement.
|
||||
Also used for |<cfile>|.
|
||||
|
||||
If the expression starts with s: or |<SID>|, then it is replaced with
|
||||
the script ID (|local-function|). Example: >
|
||||
set includeexpr=s:MyIncludeExpr(v:fname)
|
||||
set includeexpr=<SID>SomeIncludeExpr(v:fname)
|
||||
setlocal includeexpr=s:MyIncludeExpr()
|
||||
setlocal includeexpr=<SID>SomeIncludeExpr()
|
||||
< Otherwise, the expression is evaluated in the context of the script
|
||||
where the option was set, thus script-local items are available.
|
||||
|
||||
It is more efficient if the value is just a function call without
|
||||
arguments, see |expr-option-function|.
|
||||
|
||||
The expression will be evaluated in the |sandbox| when set from a
|
||||
modeline, see |sandbox-option|.
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
@@ -4607,7 +4637,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
in Insert mode as specified with the 'indentkeys' option.
|
||||
When this option is not empty, it overrules the 'cindent' and
|
||||
'smartindent' indenting. When 'lisp' is set, this option is
|
||||
overridden by the Lisp indentation algorithm.
|
||||
is only used when 'lispoptions' contains "expr:1".
|
||||
When 'paste' is set this option is not used for indenting.
|
||||
The expression is evaluated with |v:lnum| set to the line number for
|
||||
which the indent is to be computed. The cursor is also in this line
|
||||
@@ -4620,6 +4650,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< Otherwise, the expression is evaluated in the context of the script
|
||||
where the option was set, thus script-local items are available.
|
||||
|
||||
The advantage of using a function call without arguments is that it is
|
||||
faster, see |expr-option-function|.
|
||||
|
||||
The expression must return the number of spaces worth of indent. It
|
||||
can return "-1" to keep the current indent (this means 'autoindent' is
|
||||
used for the indent).
|
||||
@@ -4859,6 +4892,51 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
<PageUp> and <PageDown>.
|
||||
The 'keymodel' option is set by the |:behave| command.
|
||||
|
||||
*'keyprotocol'* *'kpc'*
|
||||
'keyprotocol' 'kpc' string (default: see below)
|
||||
global
|
||||
Specifies what keyboard protocol to use depending on the value of
|
||||
'term'. The supported keyboard protocols names are:
|
||||
none whatever the terminal uses
|
||||
mok2 modifyOtherKeys level 2, as supported by xterm
|
||||
kitty Kitty keyboard protocol, as supported by Kitty
|
||||
|
||||
The option value is a list of comma separated items. Each item has
|
||||
a pattern that is matched against the 'term' option, a colon and the
|
||||
protocol name to be used. To illustrate this, the default value would
|
||||
be set with: >
|
||||
set keyprotocol=kitty:kitty,foot:kitty,wezterm:kitty,xterm:mok2
|
||||
|
||||
< This means that when 'term' contains "kitty, "foot" or "wezterm"
|
||||
somewhere then the "kitty" protocol is used. When 'term' contains
|
||||
"xterm" somewhere, then the "mok2" protocol is used.
|
||||
|
||||
The first match is used, thus if you want to have "kitty" use the
|
||||
kitty protocol, but "badkitty" not, then you should match "badkitty"
|
||||
first and use the "none" value: >
|
||||
set keyprotocol=badkitty:none,kitty:kitty
|
||||
<
|
||||
The option is used after 'term' has been changed. First the termcap
|
||||
entries are set, possibly using the builtin list, see |builtin-terms|.
|
||||
Then this option is inspected and if there is a match and a protocol
|
||||
is specified the following happens:
|
||||
none Nothing, the regular t_TE and t_TI values remain
|
||||
|
||||
mok2 The t_TE value is changed to:
|
||||
CSI >4;m disables modifyOtherKeys
|
||||
The t_TI value is changed to:
|
||||
CSI >4;2m enables modifyOtherKeys
|
||||
CSI ?4m request the modifyOtherKeys state
|
||||
|
||||
kitty The t_TE value is changed to:
|
||||
CSI >4;m disables modifyOtherKeys
|
||||
CSI =0;1u disables the kitty keyboard protocol
|
||||
The t_TI value is changed to:
|
||||
CSI =1;1u enables the kitty keyboard protocol
|
||||
CSI ?u request kitty keyboard protocol state
|
||||
CSI >c request the termresponse
|
||||
|
||||
|
||||
*'keywordprg'* *'kp'*
|
||||
'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help",
|
||||
VMS: "help")
|
||||
@@ -5046,6 +5124,17 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
calling an external program if 'equalprg' is empty.
|
||||
This option is not used when 'paste' is set.
|
||||
|
||||
*'lispoptions'* *'lop'*
|
||||
'lispoptions' 'lop' string (default "")
|
||||
local to buffer
|
||||
Comma-separated list of items that influence the Lisp indenting when
|
||||
enabled with the |'lisp'| option. Currently only one item is
|
||||
supported:
|
||||
expr:1 use 'indentexpr' for Lisp indenting when it is set
|
||||
expr:0 do not use 'indentexpr' for Lisp indenting (default)
|
||||
Note that when using 'indentexpr' the `=` operator indents all the
|
||||
lines, otherwise the first line is not indented (Vi-compatible).
|
||||
|
||||
*'lispwords'* *'lw'*
|
||||
'lispwords' 'lw' string (default is very long)
|
||||
global or local to buffer |global-local|
|
||||
@@ -6459,8 +6548,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'ruler'* *'ru'* *'noruler'* *'noru'*
|
||||
'ruler' 'ru' boolean (default off, set in |defaults.vim|)
|
||||
global
|
||||
{not available when compiled without the
|
||||
|+cmdline_info| feature}
|
||||
Show the line and column number of the cursor position, separated by a
|
||||
comma. When there is room, the relative position of the displayed
|
||||
text in the file is shown on the far right:
|
||||
@@ -7062,6 +7149,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
c don't give |ins-completion-menu| messages. For example,
|
||||
"-- XXX completion (YYY)", "match 1 of 2", "The only match",
|
||||
"Pattern not found", "Back at original", etc.
|
||||
C don't give messages while scanning for ins-completion items,
|
||||
for instance "scanning tags"
|
||||
q use "recording" instead of "recording @a"
|
||||
F don't give the file info when editing a file, like `:silent`
|
||||
was used for the command; note that this also affects messages
|
||||
@@ -7118,8 +7207,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'showcmd' 'sc' boolean (Vim default: on, off for Unix,
|
||||
Vi default: off, set in |defaults.vim|)
|
||||
global
|
||||
{not available when compiled without the
|
||||
|+cmdline_info| feature}
|
||||
Show (partial) command in the last line of the screen. Set this
|
||||
option off if your terminal is slow.
|
||||
In Visual mode the size of the selected area is shown:
|
||||
@@ -7290,6 +7377,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
reset.
|
||||
NOTE: This option is reset when 'compatible' is set.
|
||||
|
||||
*'smoothscroll'* *'sms'* *'nosmoothscroll'* *'nosms'*
|
||||
'smoothscroll' 'sms' boolean (default off)
|
||||
local to window
|
||||
Scrolling works with screen lines. When 'wrap' is set and the first
|
||||
line in the window wraps part of it may not be visible, as if it is
|
||||
above the window. "<<<" is displayed at the start of the first line,
|
||||
highlighted with |hl-NonText|.
|
||||
NOTE: only partly implemented, currently works with CTRL-E, CTRL-Y
|
||||
and scrolling with the mouse.
|
||||
|
||||
*'softtabstop'* *'sts'*
|
||||
'softtabstop' 'sts' number (default 0)
|
||||
local to buffer
|
||||
@@ -7470,9 +7567,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The file is used for all languages.
|
||||
|
||||
expr:{expr} Evaluate expression {expr}. Use a function to avoid
|
||||
trouble with spaces. |v:val| holds the badly spelled
|
||||
word. The expression must evaluate to a List of
|
||||
Lists, each with a suggestion and a score.
|
||||
trouble with spaces. Best is to call a function
|
||||
without arguments, see |expr-option-function|.
|
||||
|v:val| holds the badly spelled word. The expression
|
||||
must evaluate to a List of Lists, each with a
|
||||
suggestion and a score.
|
||||
Example:
|
||||
[['the', 33], ['that', 44]] ~
|
||||
Set 'verbose' and use |z=| to see the scores that the
|
||||
@@ -7496,24 +7595,28 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
When on, splitting a window will put the new window below the current
|
||||
one. |:split|
|
||||
|
||||
*'splitkeep'* *'spk'*
|
||||
'splitkeep' 'spk' string (default "cursor")
|
||||
global
|
||||
The value of this option determines the scroll behavior when opening,
|
||||
closing or resizing horizontal splits.
|
||||
|
||||
Possible values are:
|
||||
cursor Keep the same relative cursor position.
|
||||
screen Keep the text on the same screen line.
|
||||
topline Keep the topline the same.
|
||||
|
||||
For the "screen" and "topline" values, the cursor position will be
|
||||
changed when necessary. In this case, the jumplist will be populated
|
||||
with the previous cursor position. For "screen", the text cannot always
|
||||
be kept on the same screen line when 'wrap' is enabled.
|
||||
|
||||
*'splitright'* *'spr'* *'nosplitright'* *'nospr'*
|
||||
'splitright' 'spr' boolean (default off)
|
||||
global
|
||||
When on, splitting a window will put the new window right of the
|
||||
current one. |:vsplit|
|
||||
|
||||
*'splitscroll'* *'spsc'* *'nosplitscroll'* *'nospsc'*
|
||||
'splitscroll' 'spsc' boolean (default on)
|
||||
global
|
||||
The value of this option determines the scroll behavior when opening,
|
||||
closing or resizing horizontal splits. When "on", splitting a window
|
||||
horizontally will keep the same relative cursor position in the old and
|
||||
new window, as well windows that are resized. When "off", scrolling
|
||||
will be avoided to stabilize the window content. Instead, the cursor
|
||||
position will be changed when necessary. In this case, the jumplist
|
||||
will be populated with the previous cursor position. Scrolling cannot
|
||||
be guaranteed to be avoided when 'wrap' is enabled.
|
||||
|
||||
*'startofline'* *'sol'* *'nostartofline'* *'nosol'*
|
||||
'startofline' 'sol' boolean (default on)
|
||||
global
|
||||
@@ -8467,10 +8570,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
xterm entries...).
|
||||
|
||||
*'ttyfast'* *'tf'* *'nottyfast'* *'notf'*
|
||||
'ttyfast' 'tf' boolean (default off, on when 'term' is xterm, hpterm,
|
||||
sun-cmd, screen, rxvt, dtterm or
|
||||
iris-ansi; also on when running Vim in
|
||||
a DOS console)
|
||||
'ttyfast' 'tf' boolean (default on)
|
||||
global
|
||||
Indicates a fast terminal connection. More characters will be sent to
|
||||
the screen for redrawing, instead of using insert/delete line
|
||||
@@ -8480,6 +8580,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
line for lines that wrap. This helps when using copy/paste with the
|
||||
mouse in an xterm and other terminals.
|
||||
|
||||
The default used to be set only for some terminal names, but these
|
||||
days nearly all terminals are fast, therefore the default is now "on".
|
||||
If you have a slow connection you may want to set this option off,
|
||||
e.g. depending on the host name: >
|
||||
if hostname() =~ 'faraway'
|
||||
set nottyfast
|
||||
endif
|
||||
<
|
||||
*'ttymouse'* *'ttym'*
|
||||
'ttymouse' 'ttym' string (default depends on 'term')
|
||||
global
|
||||
|
||||
@@ -47,7 +47,7 @@ features you can enable/disable.
|
||||
|
||||
Haiku uses "ncurses6" as its terminal library, therefore you need to have
|
||||
"ncurses6_devel" package installed from HaikuDepot in order to configure
|
||||
the Haiku build. Just append "--with-tlib=ncurses6" to ./configure command
|
||||
the Haiku build. Just append "--with-tlib=ncurses" to ./configure command.
|
||||
|
||||
Now you should use "make" to compile Vim, then "make install" to install it.
|
||||
For seamless integration into Haiku, the GUI-less vim binary should be
|
||||
@@ -56,12 +56,14 @@ additionally installed over the GUI version. Typical build commands are:
|
||||
./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
|
||||
--datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
|
||||
--mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
|
||||
--with-tlib=ncurses
|
||||
make clean
|
||||
make install
|
||||
|
||||
./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
|
||||
--datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
|
||||
--mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
|
||||
--with-tlib=ncurses \
|
||||
--disable-gui
|
||||
make clean
|
||||
make install
|
||||
@@ -93,7 +95,7 @@ The default value for $VIM is set at compile time and can be determined with:
|
||||
|
||||
:version
|
||||
|
||||
The normal value is /boot/system/data/vim for Haikuports version,
|
||||
The normal value is /boot/system/data/vim for Haikuports version,
|
||||
/boot/system/non-packaged/data/vim for manual builds. If you don't like it
|
||||
you can set the VIM environment variable to override this, or set 'helpfile'
|
||||
in your .vimrc: >
|
||||
@@ -221,11 +223,11 @@ Thank you, all!
|
||||
|
||||
|
||||
14. Bugs & to-do *haiku-bugs*
|
||||
|
||||
|
||||
The port is under development now and far away from the perfect state. For bug
|
||||
reports, patches and wishes, please use the Vim mailing list or Vim Github
|
||||
repository.
|
||||
|
||||
|
||||
Mailing list: https://www.vim.org/maillist.php
|
||||
Vim Github repository: https://github.com/vim/vim
|
||||
|
||||
|
||||
@@ -28,10 +28,11 @@ system() is used, which is a bit slower. The output of ":version" includes
|
||||
can be changed at compile time.
|
||||
(For forking of the GUI version see |gui-fork|.)
|
||||
|
||||
Because terminal updating under Unix is often slow (e.g. serial line
|
||||
terminal, shell window in suntools), the 'showcmd' and 'ruler' options
|
||||
are off by default. If you have a fast terminal, try setting them on. You
|
||||
might also want to set 'ttyfast'.
|
||||
For historic reasons terminal updating under Unix is expected to be slow (e.g.
|
||||
serial line terminal, shell window in suntools), the 'showcmd' and 'ruler'
|
||||
options are off by default. If you have a fast terminal, try setting them
|
||||
on: >
|
||||
set showcmd ruler
|
||||
|
||||
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 9.0. Last change: 2021 Jan 04
|
||||
*os_vms.txt* For Vim version 9.0. Last change: 2022 Sep 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL
|
||||
@@ -331,10 +331,10 @@ features, it is worth to choose non GUI executables.
|
||||
8.1 Backspace/delete
|
||||
|
||||
There are backspace/delete key inconsistencies with VMS.
|
||||
:fixdel doesn't do the trick, but the solution is: >
|
||||
:fixdel doesn't do the trick, but the solution is (without "<" in 'cpo'): >
|
||||
|
||||
:inoremap ^? ^H " for terminal mode
|
||||
:inoremap <Del> ^H " for gui mode
|
||||
:inoremap <C-?> <C-H> " for terminal mode
|
||||
:inoremap <Del> <C-H> " for gui mode
|
||||
|
||||
Read more in ch: 8.6 (Terminal problems).
|
||||
(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3)
|
||||
@@ -458,18 +458,11 @@ Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to
|
||||
|
||||
Vim will also recognize that they are fast terminals.
|
||||
|
||||
If you have some annoying line jumping on the screen between windows add to
|
||||
your .vimrc file: >
|
||||
|
||||
set ttyfast " set fast terminal
|
||||
|
||||
Note: if you're using Vim on remote host or through a very slow connection, it's
|
||||
recommended to avoid the fast terminal option with: >
|
||||
If you're using Vim on remote host or through a very slow connection, you
|
||||
might want to reset fast terminal option with: >
|
||||
|
||||
set nottyfast " set terminal to slow mode
|
||||
|
||||
(Zoltan Arpadffy, Vim 5.6)
|
||||
|
||||
|
||||
8.7 Hex-editing and other external tools
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_tar.txt* For Vim version 9.0. Last change: 2020 Jan 07
|
||||
*pi_tar.txt* For Vim version 9.0. Last change: 2022 Oct 17
|
||||
|
||||
+====================+
|
||||
| Tar File Interface |
|
||||
@@ -80,25 +80,25 @@ Copyright 2005-2017: *tar-copyright*
|
||||
|
||||
These options are variables that one may change, typically in one's
|
||||
<.vimrc> file.
|
||||
Default
|
||||
Variable Value Explanation
|
||||
*g:tar_browseoptions* "Ptf" used to get a list of contents
|
||||
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
|
||||
*g:tar_cmd* "tar" the name of the tar program
|
||||
*g:tar_nomax* 0 if true, file window will not be maximized
|
||||
*g:tar_secure* undef if exists:
|
||||
Default
|
||||
Variable Value Explanation
|
||||
*g:tar_browseoptions* "Ptf" used to get a list of contents
|
||||
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
|
||||
*g:tar_cmd* "tar" the name of the tar program
|
||||
*g:tar_nomax* 0 if true, file window will not be maximized
|
||||
*g:tar_secure* undef if exists:
|
||||
"--"s will be used to prevent unwanted
|
||||
option expansion in tar commands.
|
||||
Please be sure that your tar command
|
||||
accepts "--"; Posix compliant tar
|
||||
utilities do accept them.
|
||||
if not exists:
|
||||
The tar plugin will reject any tar
|
||||
The tar plugin will reject any tar
|
||||
files or member files that begin with
|
||||
"-"
|
||||
Not all tar's support the "--" which is why
|
||||
it isn't default.
|
||||
*g:tar_writeoptions* "uf" used to update/replace a file
|
||||
*g:tar_writeoptions* "uf" used to update/replace a file
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_zip.txt* For Vim version 9.0. Last change: 2021 Nov 08
|
||||
*pi_zip.txt* For Vim version 9.0. Last change: 2022 Oct 17
|
||||
|
||||
+====================+
|
||||
| Zip File Interface |
|
||||
@@ -39,7 +39,7 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
|
||||
OPTIONS~
|
||||
|
||||
*g:zip_nomax*
|
||||
*g:zip_nomax*
|
||||
|
||||
If this variable exists and is true, the file window will not be
|
||||
automatically maximized when opened.
|
||||
@@ -54,21 +54,21 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
under Windows ("). If you'd rather have no quotes, simply set
|
||||
g:zip_shq to the empty string (let g:zip_shq= "") in your <.vimrc>.
|
||||
|
||||
*g:zip_unzipcmd*
|
||||
*g:zip_unzipcmd*
|
||||
Use this option to specify the program which does the duty of "unzip".
|
||||
It's used during browsing. By default: >
|
||||
let g:zip_unzipcmd= "unzip"
|
||||
let g:zip_unzipcmd= "unzip"
|
||||
<
|
||||
*g:zip_zipcmd*
|
||||
Use this option to specify the program which does the duty of "zip".
|
||||
It's used during the writing (updating) of a file already in a zip
|
||||
file; by default: >
|
||||
let g:zip_zipcmd= "zip"
|
||||
let g:zip_zipcmd= "zip"
|
||||
<
|
||||
*g:zip_extractcmd*
|
||||
This option specifies the program (and any options needed) used to
|
||||
extract a file from a zip archive. By default, >
|
||||
let g:zip_extractcmd= g:zip_unzipcmd
|
||||
let g:zip_extractcmd= g:zip_unzipcmd
|
||||
<
|
||||
PREVENTING LOADING~
|
||||
|
||||
@@ -103,14 +103,14 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
==============================================================================
|
||||
4. History *zip-history* {{{1
|
||||
v32 Oct 22, 2021 * to avoid an issue with a vim 8.2 patch, zipfile: has
|
||||
been changed to zipfile:// . This often shows up
|
||||
been changed to zipfile:// . This often shows up
|
||||
as zipfile:/// with zipped files that are root-based.
|
||||
v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
|
||||
opened but the swapfile held unencrypted contents.
|
||||
opened but the swapfile held unencrypted contents.
|
||||
The solution is to edit the contents of a zip file
|
||||
using the |:noswapfile| modifier.
|
||||
v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
|
||||
the command actually to be attempted in zip#Read()
|
||||
the command actually to be attempted in zip#Read()
|
||||
and zip#Write()
|
||||
* added the extraction of a file capability
|
||||
Nov 30, 2015 * added *.epub to the |g:zipPlugin_ext| list
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 9.0. Last change: 2022 Jun 16
|
||||
*popup.txt* For Vim version 9.0. Last change: 2022 Oct 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -347,6 +347,12 @@ popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
|
||||
See the example here: |popup_dialog-example|
|
||||
|
||||
|
||||
popup_findecho() *popup_findecho()*
|
||||
Get the |window-ID| for the popup that shows messages for the
|
||||
`:echowindow` command. Return zero if there is none.
|
||||
Mainly useful to hide the popup.
|
||||
|
||||
|
||||
popup_findinfo() *popup_findinfo()*
|
||||
Get the |window-ID| for the popup info window, as it used by
|
||||
the popup menu. See |complete-popup|. The info popup is
|
||||
@@ -360,7 +366,6 @@ popup_findpreview() *popup_findpreview()*
|
||||
Get the |window-ID| for the popup preview window.
|
||||
Return zero if there is none.
|
||||
|
||||
|
||||
popup_getoptions({id}) *popup_getoptions()*
|
||||
Return the {options} for popup {id} in a Dict.
|
||||
A zero value means the option was not set. For "zindex" the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*print.txt* For Vim version 9.0. Last change: 2022 Jan 23
|
||||
*print.txt* For Vim version 9.0. Last change: 2022 Oct 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -158,13 +158,16 @@ currently specified printdevice: >
|
||||
If you change this option, using a function is an easy way to avoid having to
|
||||
escape all the spaces. Example: >
|
||||
|
||||
:set printexpr=PrintFile(v:fname_in)
|
||||
:function PrintFile(fname)
|
||||
: call system("ghostview " .. a:fname)
|
||||
: call delete(a:fname)
|
||||
:set printexpr=PrintFile()
|
||||
:function PrintFile()
|
||||
: call system("ghostview " .. v:fname_in)
|
||||
: call delete(v:fname_in)
|
||||
: return v:shell_error
|
||||
:endfunc
|
||||
|
||||
It is more efficient if the option is set to just a function call,
|
||||
see |expr-option-function|.
|
||||
|
||||
Be aware that some print programs return control before they have read the
|
||||
file. If you delete the file too soon it will not be printed. These programs
|
||||
usually offer an option to have them remove the file when printing is done.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 9.0. Last change: 2022 Sep 14
|
||||
*quickref.txt* For Vim version 9.0. Last change: 2022 Nov 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -689,6 +689,7 @@ Short explanation of each option: *option-list*
|
||||
'edcompatible' 'ed' toggle flags of ":substitute" command
|
||||
'emoji' 'emo' emoji characters are considered full width
|
||||
'encoding' 'enc' encoding used internally
|
||||
'endoffile' 'eof' write CTRL-Z at end of the file
|
||||
'endofline' 'eol' write <EOL> for last line in file
|
||||
'equalalways' 'ea' windows are automatically made the same size
|
||||
'equalprg' 'ep' external program to use for "=" command
|
||||
@@ -774,6 +775,7 @@ Short explanation of each option: *option-list*
|
||||
'key' encryption key
|
||||
'keymap' 'kmp' name of a keyboard mapping
|
||||
'keymodel' 'km' enable starting/stopping selection with keys
|
||||
'keyprotocol' 'kpc' what keyboard protocol to use for what terminal
|
||||
'keywordprg' 'kp' program to use for the "K" command
|
||||
'langmap' 'lmap' alphabetic characters for other language mode
|
||||
'langmenu' 'lm' language to be used for the menus
|
||||
@@ -785,6 +787,7 @@ Short explanation of each option: *option-list*
|
||||
'lines' number of lines in the display
|
||||
'linespace' 'lsp' number of pixel lines to use between characters
|
||||
'lisp' automatic indenting for Lisp
|
||||
'lispoptions' 'lop' changes how Lisp indenting is done
|
||||
'lispwords' 'lw' words that change how lisp indenting works
|
||||
'list' show <Tab> and <EOL>
|
||||
'listchars' 'lcs' characters for displaying in list mode
|
||||
@@ -910,6 +913,7 @@ Short explanation of each option: *option-list*
|
||||
'smartcase' 'scs' no ignore case when pattern has uppercase
|
||||
'smartindent' 'si' smart autoindenting for C programs
|
||||
'smarttab' 'sta' use 'shiftwidth' when inserting <Tab>
|
||||
'smoothscroll' 'sms' scroll by screen lines when 'wrap' is set
|
||||
'softtabstop' 'sts' number of spaces that <Tab> uses while editing
|
||||
'spell' enable spell checking
|
||||
'spellcapcheck' 'spc' pattern to locate end of a sentence
|
||||
@@ -918,8 +922,8 @@ Short explanation of each option: *option-list*
|
||||
'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
|
||||
'splitkeep' 'spk' determines scroll behavior for split windows
|
||||
'splitright' 'spr' new window is put right of the current one
|
||||
'splitscroll' 'spsc' determines scroll behavior for split windows
|
||||
'startofline' 'sol' commands move cursor to first non-blank in line
|
||||
'statusline' 'stl' custom format for the status line
|
||||
'suffixes' 'su' suffixes that are ignored with multiple match
|
||||
|
||||
@@ -628,6 +628,11 @@ When Vim starts up, after processing your .vimrc, it scans all directories in
|
||||
directories are added to 'runtimepath'. Then all the plugins are loaded.
|
||||
See |packload-two-steps| for how these two steps can be useful.
|
||||
|
||||
To allow for calling into package functionality while parsing your .vimrc,
|
||||
|:colorscheme| and |autoload| will both automatically search under 'packpath'
|
||||
as well in addition to 'runtimepath'. See the documentation for each for
|
||||
details.
|
||||
|
||||
In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
|
||||
"~/.vim/pack/foo/start/foobar" to 'runtimepath'.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*rileft.txt* For Vim version 9.0. Last change: 2022 Apr 03
|
||||
*rileft.txt* For Vim version 9.0. Last change: 2022 Oct 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Avner Lottem
|
||||
@@ -35,6 +35,11 @@ encoded for every character (or group of characters) are not supported either
|
||||
as this kind of support is out of the scope of a simple addition to an
|
||||
existing editor (and it's not sanctioned by Unicode either).
|
||||
|
||||
As many people working on the code do not use the right-to-left mode, this
|
||||
feature may not work in some situations. If you can describe what is wrong
|
||||
and how it would work when fixed, please create an issue on github, see
|
||||
|bug-reports|.
|
||||
|
||||
|
||||
Highlights
|
||||
----------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*scroll.txt* For Vim version 9.0. Last change: 2022 May 07
|
||||
*scroll.txt* For Vim version 9.0. Last change: 2022 Oct 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -280,6 +280,17 @@ You can also use Alt and Ctrl modifiers.
|
||||
|
||||
This only works when Vim gets the scroll wheel events, of course. You can
|
||||
check if this works with the "xev" program.
|
||||
*mouse-scrolling-off*
|
||||
If you do not want the mouse to cause scrolling (e.g. because resting your
|
||||
palm on the touchpad causes scroll events), you can disable that with: >
|
||||
:map <ScrollWheelDown> <Nop>
|
||||
:map! <ScrollWheelDown> <Nop>
|
||||
:map <ScrollWheelUp> <Nop>
|
||||
:map! <ScrollWheelUp> <Nop>
|
||||
:map <ScrollWheelLeft> <Nop>
|
||||
:map! <ScrollWheelLeft> <Nop>
|
||||
:map <ScrollWheelRight> <Nop>
|
||||
:map! <ScrollWheelRight> <Nop>
|
||||
|
||||
When using XFree86, the /etc/XF86Config file should have the correct entry for
|
||||
your mouse. For FreeBSD, this entry works for a Logitech scrollmouse: >
|
||||
|
||||
@@ -1008,8 +1008,8 @@ Note: even when using "num" or "long" the number of flags available to
|
||||
compounding and prefixes is limited to about 250.
|
||||
|
||||
|
||||
AFFIXES
|
||||
*spell-PFX* *spell-SFX*
|
||||
AFFIXES *spell-PFX* *spell-SFX*
|
||||
|
||||
The usual PFX (prefix) and SFX (suffix) lines are supported (see the Myspell
|
||||
documentation or the Aspell manual:
|
||||
http://aspell.net/man-html/Affix-Compression.html).
|
||||
|
||||
@@ -348,7 +348,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
|
||||
Start logging and write entries to {filename}.
|
||||
This works like calling `ch_logfile({filename}, 'ao')` very
|
||||
early during startup.
|
||||
{only available with the |+channel| feature}
|
||||
{only available with the |+eval| feature}
|
||||
|
||||
*-D*
|
||||
-D Debugging. Go to debugging mode when executing the first
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 9.0. Last change: 2022 Sep 26
|
||||
*syntax.txt* For Vim version 9.0. Last change: 2022 Nov 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -500,7 +500,7 @@ Force to omit the line numbers: >
|
||||
Go back to the default to use 'number' by deleting the variable: >
|
||||
:unlet g:html_number_lines
|
||||
<
|
||||
*g:html_line_ids*
|
||||
*g:html_line_ids*
|
||||
Default: 1 if |g:html_number_lines| is set, 0 otherwise.
|
||||
When 1, adds an HTML id attribute to each line number, or to an empty <span>
|
||||
inserted for that purpose if no line numbers are shown. This ID attribute
|
||||
@@ -692,6 +692,22 @@ the rendered page generated by 2html.vim.
|
||||
>
|
||||
:let g:html_no_pre = 1
|
||||
<
|
||||
*g:html_no_doc*
|
||||
Default: 0.
|
||||
When 1 it doesn't generate a full HTML document with a DOCTYPE, <head>,
|
||||
<body>, etc. If |g:html_use_css| is enabled (the default) you'll have to
|
||||
define the CSS manually. The |g:html_dynamic_folds| and |g:html_line_ids|
|
||||
settings (off by default) also insert some JavaScript.
|
||||
|
||||
|
||||
*g:html_no_links*
|
||||
Default: 0.
|
||||
Don't generate <a> tags for text that looks like an URL.
|
||||
|
||||
*g:html_no_modeline*
|
||||
Default: 0.
|
||||
Don't generate a modeline disabling folding.
|
||||
|
||||
*g:html_expand_tabs*
|
||||
Default: 0 if 'tabstop' is 8, 'expandtab' is 0, 'vartabstop' is not in use,
|
||||
and no fold column or line numbers occur in the generated HTML;
|
||||
@@ -1872,6 +1888,16 @@ following two lines to the syntax coloring file for that language
|
||||
Now you just need to make sure that you add all regions that contain
|
||||
the preprocessor language to the cluster htmlPreproc.
|
||||
|
||||
*html-folding*
|
||||
The HTML syntax file provides syntax |folding| (see |:syn-fold|) between start
|
||||
and end tags. This can be turned on by >
|
||||
|
||||
:let g:html_syntax_folding = 1
|
||||
:set foldmethod=syntax
|
||||
|
||||
Note: Syntax folding might slow down syntax highlighting significantly,
|
||||
especially for large files.
|
||||
|
||||
|
||||
HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax*
|
||||
|
||||
@@ -2400,7 +2426,7 @@ you set the variable: >
|
||||
|
||||
:let papp_include_html=1
|
||||
|
||||
in your startup file it will try to syntax-hilight html code inside phtml
|
||||
in your startup file it will try to syntax-highlight html code inside phtml
|
||||
sections, but this is relatively slow and much too colourful to be able to
|
||||
edit sensibly. ;)
|
||||
|
||||
@@ -2932,7 +2958,7 @@ Default folding is rather detailed, i.e., small syntax units like "if", "do",
|
||||
|
||||
You can set "ruby_foldable_groups" to restrict which groups are foldable: >
|
||||
|
||||
:let ruby_foldable_groups = 'if case %'
|
||||
:let ruby_foldable_groups = 'if case %'
|
||||
<
|
||||
The value is a space-separated list of keywords:
|
||||
|
||||
@@ -2940,22 +2966,22 @@ The value is a space-separated list of keywords:
|
||||
-------- ------------------------------------- ~
|
||||
ALL Most block syntax (default)
|
||||
NONE Nothing
|
||||
if "if" or "unless" block
|
||||
if "if" or "unless" block
|
||||
def "def" block
|
||||
class "class" block
|
||||
module "module" block
|
||||
do "do" block
|
||||
do "do" block
|
||||
begin "begin" block
|
||||
case "case" block
|
||||
for "for", "while", "until" loops
|
||||
{ Curly bracket block or hash literal
|
||||
[ Array literal
|
||||
% Literal with "%" notation, e.g.: %w(STRING), %!STRING!
|
||||
/ Regexp
|
||||
{ Curly bracket block or hash literal
|
||||
[ Array literal
|
||||
% Literal with "%" notation, e.g.: %w(STRING), %!STRING!
|
||||
/ Regexp
|
||||
string String and shell command output (surrounded by ', ", `)
|
||||
: Symbol
|
||||
# Multiline comment
|
||||
<< Here documents
|
||||
: Symbol
|
||||
# Multiline comment
|
||||
<< Here documents
|
||||
__END__ Source code after "__END__" directive
|
||||
|
||||
*ruby_no_expensive*
|
||||
@@ -3021,16 +3047,25 @@ satisfied with it for my own projects.
|
||||
SED *sed.vim* *ft-sed-syntax*
|
||||
|
||||
To make tabs stand out from regular blanks (accomplished by using Todo
|
||||
highlighting on the tabs), define "highlight_sedtabs" by putting >
|
||||
|
||||
:let highlight_sedtabs = 1
|
||||
highlighting on the tabs), define "g:sed_highlight_tabs" by putting >
|
||||
|
||||
:let g:sed_highlight_tabs = 1
|
||||
<
|
||||
in the vimrc file. (This special highlighting only applies for tabs
|
||||
inside search patterns, replacement texts, addresses or text included
|
||||
by an Append/Change/Insert command.) If you enable this option, it is
|
||||
also a good idea to set the tab width to one character; by doing that,
|
||||
you can easily count the number of tabs in a string.
|
||||
|
||||
GNU sed allows comments after text on the same line. BSD sed only allows
|
||||
comments where "#" is the first character of the line. To enforce BSD-style
|
||||
comments, i.e. mark end-of-line comments as errors, use: >
|
||||
|
||||
:let g:sed_dialect = "bsd"
|
||||
<
|
||||
Note that there are other differences between GNU sed and BSD sed which are
|
||||
not (yet) affected by this setting.
|
||||
|
||||
Bugs:
|
||||
|
||||
The transform command (y) is treated exactly like the substitute
|
||||
@@ -3793,7 +3828,7 @@ SYNTAX ISKEYWORD SETTING *:syn-iskeyword*
|
||||
|
||||
clear: Syntax specific iskeyword setting is disabled and the
|
||||
buffer-local 'iskeyword' setting is used.
|
||||
{option} Set the syntax 'iskeyword' option to a new value.
|
||||
{option} Set the syntax 'iskeyword' option to a new value.
|
||||
|
||||
Example: >
|
||||
:syntax iskeyword @,48-57,192-255,$,_
|
||||
@@ -4866,7 +4901,7 @@ is mostly used, because it looks better.
|
||||
In the next section you can find information about indivisual highlight groups
|
||||
and how to specify colors for them. Most likely you want to just select a set
|
||||
of colors by using the `:colorscheme` command, for example: >
|
||||
|
||||
|
||||
colorscheme pablo
|
||||
<
|
||||
*:colo* *:colorscheme* *E185*
|
||||
@@ -4918,7 +4953,7 @@ Change a couple more colors: >
|
||||
augroup my_colorschemes
|
||||
au!
|
||||
au Colorscheme pablo hi Normal ctermbg=NONE
|
||||
\ | higlight Special ctermfg=63
|
||||
\ | highlight Special ctermfg=63
|
||||
\ | highlight Identifier ctermfg=44
|
||||
augroup END
|
||||
|
||||
@@ -5271,7 +5306,7 @@ guisp={color-name} *highlight-guisp*
|
||||
"gg" is the Green value
|
||||
"bb" is the Blue value
|
||||
All values are hexadecimal, range from "00" to "ff". Examples: >
|
||||
:highlight Comment guifg=#11f0c3 guibg=#ff00ff
|
||||
:highlight Comment guifg=#11f0c3 guibg=#ff00ff
|
||||
<
|
||||
If you are authoring a color scheme and use the same hexadecimal value
|
||||
repeatedly, you can define a name for it in |v:colornames|. For
|
||||
@@ -5361,25 +5396,26 @@ LineNrBelow Line number for when the 'relativenumber'
|
||||
*hl-CursorLineNr*
|
||||
CursorLineNr Like LineNr when 'cursorline' is set and 'cursorlineopt'
|
||||
contains "number" or is "both", for the cursor line.
|
||||
*hl-CursorLineSign*
|
||||
CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
|
||||
*hl-CursorLineFold*
|
||||
CursorLineFold Like FoldColumn when 'cursorline' is set for the cursor line.
|
||||
*hl-CursorLineSign*
|
||||
CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
|
||||
*hl-MatchParen*
|
||||
MatchParen Character under the cursor or just before it, if it
|
||||
is a paired bracket, and its match. |pi_paren.txt|
|
||||
*hl-MessageWindow*
|
||||
MessageWindow Messages popup window used when 'cmdheight' is zero. If not
|
||||
defined |hl-WarningMsg| is used.
|
||||
MessageWindow Messages popup window used by `:echowindow`. If not defined
|
||||
|hl-WarningMsg| is used.
|
||||
*hl-ModeMsg*
|
||||
ModeMsg 'showmode' message (e.g., "-- INSERT --").
|
||||
*hl-MoreMsg*
|
||||
MoreMsg |more-prompt|
|
||||
*hl-NonText*
|
||||
NonText '@' at the end of the window, characters from 'showbreak'
|
||||
and other characters that do not really exist in the text
|
||||
(e.g., ">" displayed when a double-wide character doesn't
|
||||
fit at the end of the line).
|
||||
NonText '@' at the end of the window, "<<<" at the start of the window
|
||||
for 'smoothscroll', characters from 'showbreak' and other
|
||||
characters that do not really exist in the text, such as the
|
||||
">" displayed when a double-wide character doesn't fit at the
|
||||
end of the line.
|
||||
*hl-Normal*
|
||||
Normal Normal text.
|
||||
*hl-Pmenu*
|
||||
|
||||
@@ -231,7 +231,9 @@ $quote eval.txt /*$quote*
|
||||
'emoji' options.txt /*'emoji'*
|
||||
'enc' options.txt /*'enc'*
|
||||
'encoding' options.txt /*'encoding'*
|
||||
'endoffile' options.txt /*'endoffile'*
|
||||
'endofline' options.txt /*'endofline'*
|
||||
'eof' options.txt /*'eof'*
|
||||
'eol' options.txt /*'eol'*
|
||||
'ep' options.txt /*'ep'*
|
||||
'equalalways' options.txt /*'equalalways'*
|
||||
@@ -435,10 +437,12 @@ $quote eval.txt /*$quote*
|
||||
'key' options.txt /*'key'*
|
||||
'keymap' options.txt /*'keymap'*
|
||||
'keymodel' options.txt /*'keymodel'*
|
||||
'keyprotocol' options.txt /*'keyprotocol'*
|
||||
'keywordprg' options.txt /*'keywordprg'*
|
||||
'km' options.txt /*'km'*
|
||||
'kmp' options.txt /*'kmp'*
|
||||
'kp' options.txt /*'kp'*
|
||||
'kpc' options.txt /*'kpc'*
|
||||
'langmap' options.txt /*'langmap'*
|
||||
'langmenu' options.txt /*'langmenu'*
|
||||
'langnoremap' options.txt /*'langnoremap'*
|
||||
@@ -451,6 +455,7 @@ $quote eval.txt /*$quote*
|
||||
'lines' options.txt /*'lines'*
|
||||
'linespace' options.txt /*'linespace'*
|
||||
'lisp' options.txt /*'lisp'*
|
||||
'lispoptions' options.txt /*'lispoptions'*
|
||||
'lispwords' options.txt /*'lispwords'*
|
||||
'list' options.txt /*'list'*
|
||||
'listchars' options.txt /*'listchars'*
|
||||
@@ -458,6 +463,7 @@ $quote eval.txt /*$quote*
|
||||
'lmap' options.txt /*'lmap'*
|
||||
'lnr' options.txt /*'lnr'*
|
||||
'loadplugins' options.txt /*'loadplugins'*
|
||||
'lop' options.txt /*'lop'*
|
||||
'lpl' options.txt /*'lpl'*
|
||||
'lrm' options.txt /*'lrm'*
|
||||
'ls' options.txt /*'ls'*
|
||||
@@ -596,7 +602,9 @@ $quote eval.txt /*$quote*
|
||||
'noek' options.txt /*'noek'*
|
||||
'noemo' options.txt /*'noemo'*
|
||||
'noemoji' options.txt /*'noemoji'*
|
||||
'noendoffile' options.txt /*'noendoffile'*
|
||||
'noendofline' options.txt /*'noendofline'*
|
||||
'noeof' options.txt /*'noeof'*
|
||||
'noeol' options.txt /*'noeol'*
|
||||
'noequalalways' options.txt /*'noequalalways'*
|
||||
'noerrorbells' options.txt /*'noerrorbells'*
|
||||
@@ -714,14 +722,14 @@ $quote eval.txt /*$quote*
|
||||
'nosmartindent' options.txt /*'nosmartindent'*
|
||||
'nosmarttab' options.txt /*'nosmarttab'*
|
||||
'nosmd' options.txt /*'nosmd'*
|
||||
'nosmoothscroll' options.txt /*'nosmoothscroll'*
|
||||
'nosms' options.txt /*'nosms'*
|
||||
'nosn' options.txt /*'nosn'*
|
||||
'nosol' options.txt /*'nosol'*
|
||||
'nospell' options.txt /*'nospell'*
|
||||
'nosplitbelow' options.txt /*'nosplitbelow'*
|
||||
'nosplitright' options.txt /*'nosplitright'*
|
||||
'nosplitscroll' options.txt /*'nosplitscroll'*
|
||||
'nospr' options.txt /*'nospr'*
|
||||
'nospsc' options.txt /*'nospsc'*
|
||||
'nosr' options.txt /*'nosr'*
|
||||
'nossl' options.txt /*'nossl'*
|
||||
'nosta' options.txt /*'nosta'*
|
||||
@@ -938,6 +946,8 @@ $quote eval.txt /*$quote*
|
||||
'smarttab' options.txt /*'smarttab'*
|
||||
'smc' options.txt /*'smc'*
|
||||
'smd' options.txt /*'smd'*
|
||||
'smoothscroll' options.txt /*'smoothscroll'*
|
||||
'sms' options.txt /*'sms'*
|
||||
'sn' options.txt /*'sn'*
|
||||
'so' options.txt /*'so'*
|
||||
'softtabstop' options.txt /*'softtabstop'*
|
||||
@@ -952,14 +962,14 @@ $quote eval.txt /*$quote*
|
||||
'spelloptions' options.txt /*'spelloptions'*
|
||||
'spellsuggest' options.txt /*'spellsuggest'*
|
||||
'spf' options.txt /*'spf'*
|
||||
'spk' options.txt /*'spk'*
|
||||
'spl' options.txt /*'spl'*
|
||||
'splitbelow' options.txt /*'splitbelow'*
|
||||
'splitkeep' options.txt /*'splitkeep'*
|
||||
'splitright' options.txt /*'splitright'*
|
||||
'splitscroll' options.txt /*'splitscroll'*
|
||||
'spo' options.txt /*'spo'*
|
||||
'spr' options.txt /*'spr'*
|
||||
'sps' options.txt /*'sps'*
|
||||
'spsc' options.txt /*'spsc'*
|
||||
'sr' options.txt /*'sr'*
|
||||
'srr' options.txt /*'srr'*
|
||||
'ss' options.txt /*'ss'*
|
||||
@@ -3034,6 +3044,9 @@ $quote eval.txt /*$quote*
|
||||
:r! insert.txt /*:r!*
|
||||
:range cmdline.txt /*:range*
|
||||
:range! change.txt /*:range!*
|
||||
:range-closed-fold cmdline.txt /*:range-closed-fold*
|
||||
:range-offset cmdline.txt /*:range-offset*
|
||||
:range-pattern cmdline.txt /*:range-pattern*
|
||||
:re insert.txt /*:re*
|
||||
:read insert.txt /*:read*
|
||||
:read! insert.txt /*:read!*
|
||||
@@ -4345,7 +4358,13 @@ E1303 map.txt /*E1303*
|
||||
E1304 vim9.txt /*E1304*
|
||||
E1305 textprop.txt /*E1305*
|
||||
E1306 vim9.txt /*E1306*
|
||||
E1307 vim9.txt /*E1307*
|
||||
E1308 builtin.txt /*E1308*
|
||||
E1309 map.txt /*E1309*
|
||||
E131 userfunc.txt /*E131*
|
||||
E1310 gui.txt /*E1310*
|
||||
E1311 map.txt /*E1311*
|
||||
E1312 windows.txt /*E1312*
|
||||
E132 userfunc.txt /*E132*
|
||||
E133 userfunc.txt /*E133*
|
||||
E134 change.txt /*E134*
|
||||
@@ -5545,6 +5564,7 @@ TerminalWinOpen autocmd.txt /*TerminalWinOpen*
|
||||
TextChanged autocmd.txt /*TextChanged*
|
||||
TextChangedI autocmd.txt /*TextChangedI*
|
||||
TextChangedP autocmd.txt /*TextChangedP*
|
||||
TextChangedT autocmd.txt /*TextChangedT*
|
||||
TextYankPost autocmd.txt /*TextYankPost*
|
||||
Transact-SQL ft_sql.txt /*Transact-SQL*
|
||||
U undo.txt /*U*
|
||||
@@ -5572,7 +5592,6 @@ VimResume autocmd.txt /*VimResume*
|
||||
VimSuspend autocmd.txt /*VimSuspend*
|
||||
Vimball-copyright pi_vimball.txt /*Vimball-copyright*
|
||||
Virtual-Replace-mode insert.txt /*Virtual-Replace-mode*
|
||||
VisVim if_ole.txt /*VisVim*
|
||||
Visual visual.txt /*Visual*
|
||||
Visual-mode visual.txt /*Visual-mode*
|
||||
W motion.txt /*W*
|
||||
@@ -5598,7 +5617,10 @@ WinClosed autocmd.txt /*WinClosed*
|
||||
WinEnter autocmd.txt /*WinEnter*
|
||||
WinLeave autocmd.txt /*WinLeave*
|
||||
WinNew autocmd.txt /*WinNew*
|
||||
WinResized autocmd.txt /*WinResized*
|
||||
WinResized-event windows.txt /*WinResized-event*
|
||||
WinScrolled autocmd.txt /*WinScrolled*
|
||||
WinScrolled-event windows.txt /*WinScrolled-event*
|
||||
X change.txt /*X*
|
||||
X11 options.txt /*X11*
|
||||
X11-icon gui_x11.txt /*X11-icon*
|
||||
@@ -6646,6 +6668,7 @@ end intro.txt /*end*
|
||||
end-of-file pattern.txt /*end-of-file*
|
||||
enlightened-terminal syntax.txt /*enlightened-terminal*
|
||||
environ() builtin.txt /*environ()*
|
||||
eol-and-eof editing.txt /*eol-and-eof*
|
||||
erlang.vim syntax.txt /*erlang.vim*
|
||||
err_buf channel.txt /*err_buf*
|
||||
err_cb channel.txt /*err_cb*
|
||||
@@ -6675,6 +6698,8 @@ escape() builtin.txt /*escape()*
|
||||
escape-bar version4.txt /*escape-bar*
|
||||
euphoria3.vim syntax.txt /*euphoria3.vim*
|
||||
euphoria4.vim syntax.txt /*euphoria4.vim*
|
||||
euro digraph.txt /*euro*
|
||||
euro-digraph digraph.txt /*euro-digraph*
|
||||
eval eval.txt /*eval*
|
||||
eval() builtin.txt /*eval()*
|
||||
eval-examples eval.txt /*eval-examples*
|
||||
@@ -6777,6 +6802,7 @@ expr-lambda eval.txt /*expr-lambda*
|
||||
expr-nesting eval.txt /*expr-nesting*
|
||||
expr-number eval.txt /*expr-number*
|
||||
expr-option eval.txt /*expr-option*
|
||||
expr-option-function vim9.txt /*expr-option-function*
|
||||
expr-quote eval.txt /*expr-quote*
|
||||
expr-register eval.txt /*expr-register*
|
||||
expr-star eval.txt /*expr-star*
|
||||
@@ -7244,8 +7270,11 @@ g:html_id_expr syntax.txt /*g:html_id_expr*
|
||||
g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal*
|
||||
g:html_ignore_folding syntax.txt /*g:html_ignore_folding*
|
||||
g:html_line_ids syntax.txt /*g:html_line_ids*
|
||||
g:html_no_doc syntax.txt /*g:html_no_doc*
|
||||
g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn*
|
||||
g:html_no_invalid syntax.txt /*g:html_no_invalid*
|
||||
g:html_no_links syntax.txt /*g:html_no_links*
|
||||
g:html_no_modeline syntax.txt /*g:html_no_modeline*
|
||||
g:html_no_pre syntax.txt /*g:html_no_pre*
|
||||
g:html_no_progress syntax.txt /*g:html_no_progress*
|
||||
g:html_number_lines syntax.txt /*g:html_number_lines*
|
||||
@@ -7466,6 +7495,7 @@ get() builtin.txt /*get()*
|
||||
get-ms-debuggers debug.txt /*get-ms-debuggers*
|
||||
getbufinfo() builtin.txt /*getbufinfo()*
|
||||
getbufline() builtin.txt /*getbufline()*
|
||||
getbufoneline() builtin.txt /*getbufoneline()*
|
||||
getbufvar() builtin.txt /*getbufvar()*
|
||||
getchangelist() builtin.txt /*getchangelist()*
|
||||
getchar() builtin.txt /*getchar()*
|
||||
@@ -7497,6 +7527,7 @@ getloclist() builtin.txt /*getloclist()*
|
||||
getmarklist() builtin.txt /*getmarklist()*
|
||||
getmatches() builtin.txt /*getmatches()*
|
||||
getmousepos() builtin.txt /*getmousepos()*
|
||||
getmouseshape() builtin.txt /*getmouseshape()*
|
||||
getpid() builtin.txt /*getpid()*
|
||||
getpos() builtin.txt /*getpos()*
|
||||
getqflist() builtin.txt /*getqflist()*
|
||||
@@ -7817,6 +7848,7 @@ howto.txt howto.txt /*howto.txt*
|
||||
hpterm term.txt /*hpterm*
|
||||
hpterm-color syntax.txt /*hpterm-color*
|
||||
html-flavor insert.txt /*html-flavor*
|
||||
html-folding syntax.txt /*html-folding*
|
||||
html-indent indent.txt /*html-indent*
|
||||
html-indenting indent.txt /*html-indenting*
|
||||
html.vim syntax.txt /*html.vim*
|
||||
@@ -8043,7 +8075,7 @@ interfaces-5.2 version5.txt /*interfaces-5.2*
|
||||
internal-variables eval.txt /*internal-variables*
|
||||
internal-wordlist spell.txt /*internal-wordlist*
|
||||
internet intro.txt /*internet*
|
||||
interp-string eval.txt /*interp-string*
|
||||
interpolated-string eval.txt /*interpolated-string*
|
||||
interrupt() builtin.txt /*interrupt()*
|
||||
intro intro.txt /*intro*
|
||||
intro.txt intro.txt /*intro.txt*
|
||||
@@ -8135,6 +8167,7 @@ keypad-plus intro.txt /*keypad-plus*
|
||||
keypad-point intro.txt /*keypad-point*
|
||||
keys() builtin.txt /*keys()*
|
||||
keytrans() builtin.txt /*keytrans()*
|
||||
kitty-keyboard-protocol map.txt /*kitty-keyboard-protocol*
|
||||
known-bugs todo.txt /*known-bugs*
|
||||
l motion.txt /*l*
|
||||
l: eval.txt /*l:*
|
||||
@@ -8412,6 +8445,7 @@ motion-count-multiplied motion.txt /*motion-count-multiplied*
|
||||
motion.txt motion.txt /*motion.txt*
|
||||
mouse-mode-table term.txt /*mouse-mode-table*
|
||||
mouse-overview term.txt /*mouse-overview*
|
||||
mouse-scrolling-off scroll.txt /*mouse-scrolling-off*
|
||||
mouse-swap-buttons term.txt /*mouse-swap-buttons*
|
||||
mouse-using term.txt /*mouse-using*
|
||||
mouse_col-variable eval.txt /*mouse_col-variable*
|
||||
@@ -9031,6 +9065,7 @@ popup_dialog() popup.txt /*popup_dialog()*
|
||||
popup_dialog-example popup.txt /*popup_dialog-example*
|
||||
popup_filter_menu() popup.txt /*popup_filter_menu()*
|
||||
popup_filter_yesno() popup.txt /*popup_filter_yesno()*
|
||||
popup_findecho() popup.txt /*popup_findecho()*
|
||||
popup_findinfo() popup.txt /*popup_findinfo()*
|
||||
popup_findpreview() popup.txt /*popup_findpreview()*
|
||||
popup_getoptions() popup.txt /*popup_getoptions()*
|
||||
@@ -10162,6 +10197,7 @@ termdebug_popup terminal.txt /*termdebug_popup*
|
||||
termdebug_shortcuts terminal.txt /*termdebug_shortcuts*
|
||||
termdebug_use_prompt terminal.txt /*termdebug_use_prompt*
|
||||
termdebug_wide terminal.txt /*termdebug_wide*
|
||||
termdebug_winbar terminal.txt /*termdebug_winbar*
|
||||
terminal terminal.txt /*terminal*
|
||||
terminal-api terminal.txt /*terminal-api*
|
||||
terminal-autoshelldir terminal.txt /*terminal-autoshelldir*
|
||||
@@ -10834,6 +10870,7 @@ whitespace pattern.txt /*whitespace*
|
||||
wildcard editing.txt /*wildcard*
|
||||
wildcards editing.txt /*wildcards*
|
||||
wildmenumode() builtin.txt /*wildmenumode()*
|
||||
win-scrolled-resized windows.txt /*win-scrolled-resized*
|
||||
win16 os_win32.txt /*win16*
|
||||
win32 os_win32.txt /*win32*
|
||||
win32-!start gui_w32.txt /*win32-!start*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*term.txt* For Vim version 9.0. Last change: 2022 Apr 23
|
||||
*term.txt* For Vim version 9.0. Last change: 2022 Oct 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -90,6 +90,11 @@ Note: When 't_ti' is not empty, Vim assumes that it causes switching to the
|
||||
alternate screen. This may slightly change what happens when executing a
|
||||
shell command or exiting Vim. To avoid this use 't_TI' and 't_TE'.
|
||||
|
||||
Vim will try to detect what keyboard protocol the terminal is using with the
|
||||
't_RK' termcap entry. This is sent after 't_TI', but only when there is no
|
||||
work to do (no typeahead and no pending commands). That is to avoid the
|
||||
response to end up in a shell command or arrive after Vim exits.
|
||||
|
||||
*xterm-bracketed-paste*
|
||||
When the 't_BE' option is set then 't_BE' will be sent to the
|
||||
terminal when entering "raw" mode and 't_BD' when leaving "raw" mode. The
|
||||
@@ -388,6 +393,8 @@ Added by Vim (there are no standard codes for these):
|
||||
xterm and other terminal emulators) The
|
||||
response is stored in |v:termresponse| |xterm-8bit|
|
||||
|'ttymouse'| |xterm-codes|
|
||||
t_RK request terminal keyboard protocol state; *t_RK* *'t_RK'*
|
||||
sent after |t_TI|
|
||||
t_u7 request cursor position (for xterm) *t_u7* *'t_u7'*
|
||||
see |'ambiwidth'|
|
||||
The response is stored in |v:termu7resp|
|
||||
@@ -569,7 +576,7 @@ anymore.
|
||||
Vim supports using true colors in the terminal (taken from |highlight-guifg|
|
||||
and |highlight-guibg|), given that the terminal supports this. To make this
|
||||
work the 'termguicolors' option needs to be set.
|
||||
See https://gist.github.com/XVilka/8346728 for a list of terminals that
|
||||
See https://github.com/termstandard/colors for a list of terminals that
|
||||
support true colors.
|
||||
|
||||
Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
|
||||
@@ -768,8 +775,9 @@ See the "Options" chapter |options|.
|
||||
|
||||
If your terminal does not support a scrolling region, but it does support
|
||||
insert/delete line commands, scrolling with multiple windows may make the
|
||||
lines jump up and down. If you don't want this set the 'ttyfast' option.
|
||||
This will redraw the window instead of scroll it.
|
||||
lines jump up and down. This would happen if the 'ttyfast' option has been
|
||||
reset. Check that with: >
|
||||
verbose set ttyfast?
|
||||
|
||||
If your terminal scrolls very slowly, but redrawing is not slow, set the
|
||||
'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the
|
||||
@@ -1005,6 +1013,8 @@ and then drag) will result in whole words to be selected. This continues
|
||||
until the button is released, at which point the selection is per character
|
||||
again.
|
||||
|
||||
For scrolling with the mouse see |scroll-mouse-wheel|.
|
||||
|
||||
*gpm-mouse*
|
||||
The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at
|
||||
compile time. The GPM mouse driver (Linux console) does not support quadruple
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 9.0. Last change: 2022 Jun 09
|
||||
*terminal.txt* For Vim version 9.0. Last change: 2022 Nov 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -288,9 +288,8 @@ way to kill or interrupt the job. For example: >
|
||||
|
||||
So long as the job is running the window behaves like it contains a modified
|
||||
buffer. Trying to close the window with `CTRL-W :quit` fails. When using
|
||||
`CTRL-W :quit!` the job is ended. The text in the window is lost. The buffer
|
||||
still exists, but getting it in a window with `:buffer` will show an empty
|
||||
buffer.
|
||||
`CTRL-W :quit!` the job is ended. The text in the window is lost, the buffer
|
||||
is deleted. With `CTRL-W :bunload!` the buffer remains but will be empty.
|
||||
|
||||
Trying to close the window with `CTRL-W :close` also fails. Using
|
||||
`CTRL-W :close!` will close the window and make the buffer hidden.
|
||||
@@ -470,7 +469,6 @@ ConPTY problems have been fixed "winpty" will be preferred.
|
||||
Environment variables are used to pass information to the running job:
|
||||
VIM_SERVERNAME v:servername
|
||||
|
||||
|
||||
==============================================================================
|
||||
2. Terminal functions *terminal-function-details*
|
||||
|
||||
@@ -1130,7 +1128,6 @@ reference: >
|
||||
|
||||
Creating a screen dump ~
|
||||
*terminal-screendump*
|
||||
|
||||
To create the screen dump, run Vim (or any other program) in a terminal and
|
||||
make it show the desired state. Then use the |term_dumpwrite()| function to
|
||||
create a screen dump file. For example: >
|
||||
@@ -1154,7 +1151,6 @@ If there are differences then v:errors will contain the error message.
|
||||
|
||||
Comparing screen dumps ~
|
||||
*terminal-diffscreendump*
|
||||
|
||||
|assert_equalfile()| does not make it easy to see what is different.
|
||||
To spot the problem use |term_dumpdiff()|: >
|
||||
call term_dumpdiff("mysyntax.dump", "test.dump")
|
||||
@@ -1351,6 +1347,7 @@ If 'mouse' is set the plugin adds a window toolbar with these entries:
|
||||
Eval `:Evaluate`
|
||||
This way you can use the mouse to perform the most common commands. You need
|
||||
to have the 'mouse' option set to enable mouse clicks.
|
||||
See |termdebug_winbar| for configuring this toolbar.
|
||||
*:Winbar*
|
||||
You can add the window toolbar in other windows you open with: >
|
||||
:Winbar
|
||||
@@ -1416,6 +1413,20 @@ TermdebugStopPost After debugging has ended, gdb-related windows
|
||||
the state before the debugging was restored.
|
||||
|
||||
|
||||
Customizing ~
|
||||
*termdebug-customizing* *g:termdebug_config*
|
||||
In the past several global variables were used for configuration. These are
|
||||
deprecated and using the g:termdebug_config dictionary is preferred. When
|
||||
g:termdebug_config exists the other global variables will NOT be used.
|
||||
The recommended way is to start with an empty dictionary: >
|
||||
let g:termdebug_config = {}
|
||||
|
||||
Then you can add entries to the dictionary as mentioned below. The
|
||||
deprecated global variable names are mentioned for completeness. If you are
|
||||
switching over to using g:termdebug_config you can find the old variable name
|
||||
and take over the value, then delete the deprecated variable.
|
||||
|
||||
|
||||
Prompt mode ~
|
||||
*termdebug-prompt*
|
||||
When the |+terminal| feature is not supported and on MS-Windows, gdb will run
|
||||
@@ -1431,13 +1442,13 @@ in a buffer with 'buftype' set to "prompt". This works slightly differently:
|
||||
*termdebug_use_prompt*
|
||||
Prompt mode can be used even when the |+terminal| feature is present with: >
|
||||
let g:termdebug_config['use_prompt'] = 1
|
||||
Or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebug_use_prompt = 1
|
||||
<
|
||||
*termdebug_map_K*
|
||||
The K key is normally mapped to :Evaluate. If you do not want this use: >
|
||||
let g:termdebug_config['map_K'] = 0
|
||||
Or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebug_map_K = 0
|
||||
<
|
||||
*termdebug_disasm_window*
|
||||
@@ -1445,7 +1456,7 @@ If you want the Asm window shown by default, set the flag to 1.
|
||||
the "disasm_window_height" entry can be used to set the window height: >
|
||||
let g:termdebug_config['disasm_window'] = 1
|
||||
let g:termdebug_config['disasm_window_height'] = 15
|
||||
or, if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebug_disasm_window = 15
|
||||
Any value greater than 1 will set the Asm window height to that value.
|
||||
|
||||
@@ -1463,25 +1474,18 @@ interrupt the running program. But after using the MI command
|
||||
communication channel.
|
||||
|
||||
|
||||
Customizing ~
|
||||
*termdebug-customizing* *g:termdebug_config*
|
||||
In the past several global variables were used for configuration. These are
|
||||
deprecated, using the g:termdebug_config dictionary is preferred. When
|
||||
g:termdebug_config exists the other global variables will not be used.
|
||||
|
||||
|
||||
GDB command ~
|
||||
*g:termdebugger*
|
||||
To change the name of the gdb command, set "debugger" entry in
|
||||
g:termdebug_config or the "g:termdebugger" variable before invoking
|
||||
`:Termdebug`: >
|
||||
let g:termdebug_config['command'] = "mygdb"
|
||||
Or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebugger = "mygdb"
|
||||
|
||||
If the command needs an argument use a List: >
|
||||
let g:termdebug_config['command'] = ['rr', 'replay', '--']
|
||||
Or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebugger = ['rr', 'replay', '--']
|
||||
|
||||
Several arguments will be added to make gdb work well for the debugger.
|
||||
@@ -1502,7 +1506,7 @@ Then your gdb is too old.
|
||||
|
||||
|
||||
Colors ~
|
||||
*hl-debugPC* *hl-debugBreakpoint*
|
||||
*hl-debugPC* *hl-debugBreakpoint*
|
||||
The color of the signs can be adjusted with these highlight groups:
|
||||
- debugPC the current position
|
||||
- debugBreakpoint a breakpoint
|
||||
@@ -1518,7 +1522,6 @@ When 'background' is "dark":
|
||||
|
||||
Shortcuts ~
|
||||
*termdebug_shortcuts*
|
||||
|
||||
You can define your own shortcuts (mappings) to control gdb, that can work in
|
||||
any window, using the TermDebugSendCommand() function. Example: >
|
||||
map ,w :call TermDebugSendCommand('where')<CR>
|
||||
@@ -1527,7 +1530,6 @@ The argument is the gdb command.
|
||||
|
||||
Popup menu ~
|
||||
*termdebug_popup*
|
||||
|
||||
By default the Termdebug plugin sets 'mousemodel' to "popup_setpos" and adds
|
||||
these entries to the popup menu:
|
||||
Set breakpoint `:Break`
|
||||
@@ -1535,17 +1537,23 @@ these entries to the popup menu:
|
||||
Evaluate `:Evaluate`
|
||||
If you don't want this then disable it with: >
|
||||
let g:termdebug_config['popup'] = 0
|
||||
or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebug_popup = 0
|
||||
|
||||
|
||||
Window toolbar ~
|
||||
*termdebug_winbar*
|
||||
By default the Termdebug plugin creates a window toolbar if the mouse is
|
||||
enabled (see |:Winbar|). If you don't want this then disable it with: >
|
||||
let g:termdebug_config['winbar'] = 0
|
||||
|
||||
|
||||
Vim window width ~
|
||||
*termdebug_wide*
|
||||
|
||||
To change the width of the Vim window when debugging starts and use a vertical
|
||||
split: >
|
||||
let g:termdebug_config['wide'] = 163
|
||||
Or if there is no g:termdebug_config: >
|
||||
If there is no g:termdebug_config you can use: >
|
||||
let g:termdebug_wide = 163
|
||||
|
||||
This will set 'columns' to 163 when `:Termdebug` is used. The value is
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*textprop.txt* For Vim version 9.0. Last change: 2022 Sep 21
|
||||
*textprop.txt* For Vim version 9.0. Last change: 2022 Nov 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -147,7 +147,8 @@ prop_add({lnum}, {col}, {props})
|
||||
above/below the line if {col} is zero; prepend
|
||||
and/or append spaces for padding with
|
||||
highlighting; cannot be used with "length",
|
||||
"end_lnum" and "end_col" |virtual-text|
|
||||
"end_lnum" and "end_col"
|
||||
See |virtual-text| for more information.
|
||||
*E1294*
|
||||
text_align when "text" is present and {col} is zero;
|
||||
specifies where to display the text:
|
||||
@@ -172,6 +173,9 @@ prop_add({lnum}, {col}, {props})
|
||||
wrap wrap the text to the next line
|
||||
truncate truncate the text to make it fit
|
||||
When omitted "truncate" is used.
|
||||
Note that this applies to the individual text
|
||||
property, the 'wrap' option sets the overall
|
||||
behavior
|
||||
All fields except "type" are optional.
|
||||
|
||||
It is an error when both "length" and "end_lnum" or "end_col"
|
||||
@@ -225,7 +229,7 @@ prop_add({lnum}, {col}, {props})
|
||||
GetLnum()->prop_add(col, props)
|
||||
<
|
||||
*prop_add_list()*
|
||||
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
||||
prop_add_list({props}, [{item}, ...])
|
||||
Similar to prop_add(), but attaches a text property at
|
||||
multiple positions in a buffer.
|
||||
|
||||
@@ -237,12 +241,18 @@ prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
||||
type name of the text property type
|
||||
All fields except "type" are optional.
|
||||
|
||||
The second argument is a List of Lists where each list
|
||||
specifies the starting and ending position of the text. The
|
||||
first two items {lnum} and {col} specify the starting position
|
||||
of the text where the property will be attached and the last
|
||||
two items {end-lnum} and {end-col} specify the position just
|
||||
after the text.
|
||||
The second argument is a List of items, where each {item} is a
|
||||
list that specifies the starting and ending position of the
|
||||
text: [{lnum}, {col}, {end-lnum}, {end-col}]
|
||||
or: [{lnum}, {col}, {end-lnum}, {end-col}, {id}]
|
||||
|
||||
The first two items {lnum} and {col} specify the starting
|
||||
position of the text where the property will be attached.
|
||||
The next two items {end-lnum} and {end-col} specify the
|
||||
position just after the text.
|
||||
An optional fifth item {id} can be used to give a different ID
|
||||
to a property. When omitted the ID from {props} is used,
|
||||
falling back to zero if none are present.
|
||||
|
||||
It is not possible to add a text property with a "text" field
|
||||
here.
|
||||
|
||||
@@ -539,7 +539,7 @@ the current window, try this custom `:HelpCurwin` command:
|
||||
>
|
||||
command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
|
||||
let s:did_open_help = v:false
|
||||
|
||||
|
||||
function s:HelpCurwin(subject) abort
|
||||
let mods = 'silent noautocmd keepalt'
|
||||
if !s:did_open_help
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 9.0. Last change: 2022 Sep 27
|
||||
*todo.txt* For Vim version 9.0. Last change: 2022 Nov 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -38,55 +38,72 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
From test_global
|
||||
Found errors in Test_interrupt_global():
|
||||
Run 1, 02:16:22 - 02:16:27:
|
||||
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[469]..function RunTheTest[44]..Test_interrupt_global[13]..WaitForAssert[2]..<SNR>7_WaitForCommon[11]..<lambda>20 line 1: Pattern 'Interrupted' does not match 'Type :qa! and press...l changes and exit Vim 1,1 All'
|
||||
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[469]..function RunTheTest[44]..Test_interrupt_global[20]..WaitForAssert[2]..<SNR>7_WaitForCommon[11]..<lambda>21 line 1: Pattern 'Interrupted' does not match 'Entering Ex mode. Type "visual" to go to Normal mode.'
|
||||
Keyboard protocol (also see below):
|
||||
- Use the kitty_protocol_state value, similar to seenModifyOtherKeys
|
||||
- When kitty_protocol_state is set then reset seenModifyOtherKeys.
|
||||
Do not set seenModifyOtherKeys for kitty-protocol sequences in
|
||||
handle_key_with_modifier().
|
||||
|
||||
Use :defer command:
|
||||
- Use "D" flag of writefile() and mkdir() in tests.
|
||||
(testdir/test_e*.vim done)
|
||||
virtual text issues:
|
||||
- #11520 `below` cannot be placed below empty lines
|
||||
James Alvarado looks into it
|
||||
- virtual text `below` highlighted incorrectly when `cursorline` enabled
|
||||
(Issue #11588)
|
||||
|
||||
'smoothscroll':
|
||||
- CTRL-E and gj in long line with 'scrolloff' 5 not working well yet.
|
||||
- computing 'scrolloff' position row use w_skipcol
|
||||
- Check this list: https://github.com/vim/vim/pulls?q=is%3Apr+is%3Aopen+smoothscroll+author%3Aychin
|
||||
- Long line spanning multiple pages: After a few CTRL-E then gj causes a
|
||||
scroll. (Ernie Rael, 18 Nov) Also pressing space or "l"
|
||||
|
||||
|
||||
Upcoming larger works:
|
||||
- Make spell checking work with recent .dic/.aff files, e.g. French. #4916
|
||||
Make Vim understand the format somehow? Search for "spell" below.
|
||||
Make sure suggestions are speedy, also with composed words (German).
|
||||
- Discuss alternatives for using other grammars (treesitter, TextMate).
|
||||
- Possibly conversion to Vim syntax rules.
|
||||
- Other mechanism than group and cluster to nest syntax items, to be used
|
||||
for grammars.
|
||||
- Possibly keeping the parsed syntax tree and incremental updates.
|
||||
- Make clear how it relates to LSP.
|
||||
- example plugin: https://github.com/uga-rosa/dps-vsctm.vim
|
||||
- Better support for detecting terminal emulator behavior (esp. special key
|
||||
handling) and taking away the need for users to tweak their config.
|
||||
> In the table of names pointing to the list of entries, with an additional
|
||||
one. So that "xterm-kitty" can first load "xterm" and then add "kitty"
|
||||
entries.
|
||||
> Add an "expectKittyEsc" flag (Esc is always sent as a sequence, not one
|
||||
character) and always wait after an Esc for more to come, don't leave
|
||||
Insert mode.
|
||||
-> Request code for Esc after outputting t_KI, use "k!" value.
|
||||
Use response to set "expectKittyEsc".
|
||||
-> Add ESC[>1uESC[?u to t_KI, parse flag response.
|
||||
-> May also send t_RV and delay starting a shell command until the
|
||||
response has been seen, to make sure the other responses don't get read
|
||||
by a shell command.
|
||||
> Can we use the req_more_codes_from_term() mechanism with more terminals?
|
||||
Should we repeat it after executing a shell command?
|
||||
Can also add this to the 'keyprotocol' option: "mok2+tcap"
|
||||
|
||||
New Vim indent script: #11079 OK?
|
||||
|
||||
Further Vim9 improvements, possibly after launch:
|
||||
- For map(), reduce() and filter() use a specific implementation if the second
|
||||
argument is a compiled function. #11163
|
||||
- Use Vim9 for more runtime files.
|
||||
- Check performance with callgrind and kcachegrind.
|
||||
getline()/substitute()/setline() in #5632
|
||||
- Better implementation for partial and tests for that.
|
||||
- when using "const" mark the variable type as const with TTFLAG_CONST, so
|
||||
that an error is given at compile time when trying to change it. E.g. for a
|
||||
const list and trying to call add().
|
||||
- Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
|
||||
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
|
||||
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
|
||||
Give an error if compilation fails. (#7625)
|
||||
Alternatively: Detect a compiled function call and skip the expression
|
||||
evaluation.
|
||||
Use the location where the option was set for deciding whether it's to be
|
||||
evaluated in Vim9 script context.
|
||||
- implement :type
|
||||
- implement :enum
|
||||
- implement :class and :interface: See |vim9-classes|
|
||||
- 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.
|
||||
- implement :class and :interface: See |vim9-classes| #11544
|
||||
- Inline call to map() and filter(), better type checking.
|
||||
- Make accessing varargs faster: arg[expr]
|
||||
EVAL expr
|
||||
LOADVARARG (varargs idx)
|
||||
- When evaluating constants for script variables, some functions could work:
|
||||
has(featureName), len(someString)
|
||||
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
|
||||
|
||||
Popup windows:
|
||||
- Preview popup not properly updated when it overlaps with completion menu.
|
||||
(Yegappan Lakshmanan, 2021 May 22)
|
||||
- Scrollbar thumb sometimes not visible #10492
|
||||
- Add a function to redraw a specific popup window. Esp. to be used when
|
||||
editing the command line, when screen updating doesn't happen. (Shougo)
|
||||
#10210 Example that shows the need on the issue.
|
||||
Probably need to update all popup windows (they may overlap)
|
||||
If the display is scrolled need to redraw everything later.
|
||||
- Add a flag to make a popup window focusable?
|
||||
CTRL-W P cycle over any preview window or focusable popup, end up back in
|
||||
current window.
|
||||
@@ -113,8 +130,6 @@ Popup windows:
|
||||
- put popup menu also in popup_mask?
|
||||
- Match does not have right BG color if line length equals popup width.
|
||||
(#5658)
|
||||
- Any other commands to disable in a popup window?
|
||||
Use ERROR_IF_POPUP_WINDOW for these.
|
||||
- Figure out the size and position better if wrapping inserts indent
|
||||
|
||||
'incsearch' with :s:
|
||||
@@ -190,8 +205,13 @@ Terminal emulator window:
|
||||
- When 'encoding' is not utf-8, or the job is using another encoding, setup
|
||||
conversions.
|
||||
|
||||
Crash when a variable is removed while listing variables (Issue #11435)
|
||||
|
||||
Autoconf: must use autoconf 2.69, later version generates lots of warnings
|
||||
- try using autoconf 2.71 and fix all "obsolete" warnings
|
||||
- try using autoconf 2.71 and fix all "obsolete" warnings #11322
|
||||
|
||||
Problem with Visual highlight when 'linebreak' and 'showbreak' are set.
|
||||
#11272
|
||||
|
||||
Can deref_func_name() and deref_function_name() be merged?
|
||||
|
||||
@@ -200,37 +220,71 @@ reduced?
|
||||
|
||||
Add BufDeletePost. #11041
|
||||
|
||||
Add winid arg to col() and charcol() #11466 (request #11461)
|
||||
|
||||
Make the default for 'ttyfast' on, checking $TERM names doesn't make much
|
||||
sense right now, most terminals are fast. #11549
|
||||
|
||||
Can we make 'noendofline' and 'endoffile' visible? Should show by default,
|
||||
since it's an unusual situation.
|
||||
- Show 'noendofline' when it would be used for writing ('fileformat' "dos")
|
||||
with an upside down exclamation mark? NonText highlighting.
|
||||
- Show 'endoffile' when it would be used for writing ('fileformat' "dos") with
|
||||
"CTRL-Z", NonText highlighting.
|
||||
- Add 'fillchars' items to change this, default behavior like:
|
||||
noeol:¡
|
||||
eof:CTRL-Z
|
||||
|
||||
Test property disappears when using CR twice in a row. OK when some text was
|
||||
entered. (#11151)
|
||||
|
||||
Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
|
||||
CTRL-Y scroll one screen line, also if this means the first line doesn't start
|
||||
with the first character (like what happens with a last line that doesn't
|
||||
fit). Display "<<<" at the start of the first visible line (like "@@@" is
|
||||
displayed in the last line). (Arseny Nasokin, #5154)
|
||||
Neovim PR: https://github.com/neovim/neovim/pull/11014
|
||||
Add 'keywordprg' to various ftplugin files:
|
||||
https://github.com/vim/vim/pull/5566
|
||||
|
||||
Add some kind of ":whathappend" command and functions to make visible what the
|
||||
last few typed keys and executed commands are. To be used when the user
|
||||
wonders what went wrong.
|
||||
- typed keys - Normal mode command - like what is recorded in a register and
|
||||
displayed by 'showcmd'.
|
||||
- executed command lines
|
||||
- with more verbosity: what scripts/functions/autocommands were executed
|
||||
|
||||
NFA regexp does not handle composing characters well: #10286
|
||||
[ɔ̃] matches both ɔ and ɔ̃
|
||||
\(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
|
||||
|
||||
Is there a way to make 'autowriteall' make a clean exit when the xterm is
|
||||
closed? (Dennis Nazic says files are preserved, okt 28). Perhaps handle TERM
|
||||
like HUP?
|
||||
|
||||
Improvement in terminal configuration mess: Request the terminfo entry from
|
||||
the terminal itself. The $TERM value then is only relevant for whether this
|
||||
feature is supported or not. Replaces the xterm mechanism to request each
|
||||
entry separately. #6609
|
||||
Multiplexers (screen, tmux) can request it to the underlying terminal, and
|
||||
pass it on with modifications.
|
||||
How to get all the text quickly (also over ssh)? Can we use a side channel?
|
||||
|
||||
Horizontal mouse scroll only works when compiled with GUI? #11374
|
||||
|
||||
Using "A" and "o" in manually created fold (in empty buffer) does not behave
|
||||
consistenly (James McCoy, #10698)
|
||||
|
||||
In a timer callback, when using ":echo" and then input() the message is
|
||||
overwritten. Could use ":echowin" and call redraw_cmd() in get_user_input().
|
||||
#11299
|
||||
|
||||
Syntax include problem: #11277. Related to Patch 8.2.2761
|
||||
|
||||
Add str2blob() and blob2str() ? #4049
|
||||
|
||||
To avoid flicker: add an option that when a screen clear is requested, instead
|
||||
of clearing it draws everything and uses "clear to end of line" for every line.
|
||||
Resetting 't_ut' already causes this?
|
||||
|
||||
When scheme can't be found by configure there is no clear "not found" message:
|
||||
configure:5769: checking MzScheme install prefix
|
||||
configure:5781: result:
|
||||
configure:5781: result:
|
||||
|
||||
Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002
|
||||
|
||||
@@ -257,11 +311,10 @@ MS-Windows: did path modifier :p:8 stop working? #8600
|
||||
Version of getchar() that does not move the cursor - #10603 Use a separate
|
||||
argument for the new flag.
|
||||
|
||||
Add "lastline" entry to 'fillchars' to specify a character instead of '@'.
|
||||
#10963
|
||||
|
||||
test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
|
||||
|
||||
Can we add highlighting to ":echowindow"?
|
||||
|
||||
Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is
|
||||
spread out. Make a section with copy/paste examples of script and pointers to
|
||||
more information.
|
||||
@@ -288,8 +341,8 @@ Also, z= in German on a long word can take a very long time, but CTRL-C to
|
||||
interrupt does not work. Where to add ui_breakcheck()?
|
||||
New English spell files also have very slow suggestions.
|
||||
|
||||
French spell files don't work correctly. #4916
|
||||
Make Vim understand the format somehow?
|
||||
When 'spelloptions' is "camel" then zG doesn't work on some words.
|
||||
(Gary Johnson, 17 Oct 2022)
|
||||
|
||||
Make "g>" and "g<" in Visual mode move the text right or left.
|
||||
Also for a block selection. #8558
|
||||
@@ -323,6 +376,9 @@ when redirecting to a local variable (function or script) storing the value
|
||||
won't work. At least give an error. Is there a way to make it work?
|
||||
#10616
|
||||
|
||||
Completion for ":runtime" should show valid values, not what's in the current
|
||||
directory. (#11447)
|
||||
|
||||
Add an option to start_timer() to return from the input loop with K_IGNORE.
|
||||
This is useful e.g. when a popup was created that disables mappings, we need
|
||||
to return from vgetc() to make this happen. #7011
|
||||
@@ -364,6 +420,7 @@ Is this the right solution? Need to cleanup langmap behavior:
|
||||
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.
|
||||
Perhaps also related: #5147
|
||||
|
||||
Matchparen doesn't remove highlight after undo. (#7054)
|
||||
Is OK when syntax HL is active.
|
||||
@@ -404,6 +461,8 @@ and/or "sandbox" are set.
|
||||
|
||||
Problem with auto-formatting - inserting space and putting cursor before added
|
||||
character. (#6154)
|
||||
Auto-formatting comments joins a following non-comment line when the comment
|
||||
ends in a space. (Adam Levy, 18 Oct 2022)
|
||||
|
||||
When 'lazyredraw' is set sometimes the title is not updated.
|
||||
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
|
||||
@@ -474,8 +533,6 @@ find them. (Max Kukartsev, #6218)
|
||||
|
||||
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
|
||||
|
||||
Sound: support on Mac? Or does libcanberra work there?
|
||||
|
||||
Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
|
||||
|
||||
"--cleanFOO" does not result in an error. (#5537)
|
||||
@@ -625,6 +682,11 @@ negative. (see #4326)
|
||||
tab page. (Ingo Karkat, #4324)
|
||||
:call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well.
|
||||
|
||||
When opening a file, allow for specifying the initial column position:
|
||||
vim +12:5 file.txt line 12 column 5
|
||||
:edit +12:5 file.txt
|
||||
Should probably use the column as the character index.
|
||||
|
||||
This modeline throws unexpected errors: (#4165)
|
||||
vim: syn=nosyntax
|
||||
|
||||
@@ -681,9 +743,6 @@ when possible. (Dylan Lloyd, #3973)
|
||||
Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
|
||||
(#3692)
|
||||
|
||||
matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul
|
||||
19.
|
||||
|
||||
Add something like 'fillchars' local to window, but allow for specifying a
|
||||
highlight name. Esp. for the statusline.
|
||||
And "extends" and "precedes" are also useful without 'list' set. Also in
|
||||
@@ -3101,9 +3160,6 @@ Macintosh:
|
||||
line is too short. Add a word in 'scrollopt' to allow moving the cursor
|
||||
to longer line that is visible. A similar thing is done for the GUI when
|
||||
using the horizontal scrollbar.
|
||||
7 VisVim can only open one file. Hard to solve: each opened file is passed
|
||||
with a separate invocation, would need to use timestamps to know the
|
||||
invocations belong together.
|
||||
8 When giving a ":bwipeout" command a file-changed dialog may popup for this
|
||||
buffer, which is pointless. (Mike Williams)
|
||||
8 On MS-Windows ":make" doesn't show output while it is working. Use the
|
||||
@@ -4502,8 +4558,11 @@ Autocommands:
|
||||
BufChangePre, BufChangePost and RevertBuf. (Shah)
|
||||
ViewChanged - triggered when the text scrolls and when the window size
|
||||
changes.
|
||||
WinResized - After a window has been resized
|
||||
WinClose - Just before closing a window
|
||||
QuickfixList - when any entry in the current list changes or another
|
||||
list is selected
|
||||
QuickfixPosition - when selecting another entry in the current quickfix
|
||||
list
|
||||
|
||||
- Write the file now and then ('autosave'):
|
||||
*'autosave'* *'as'* *'noautosave'* *'noas'*
|
||||
'autosave' 'as' number (default 0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*userfunc.txt* For Vim version 9.0. Last change: 2022 Sep 09
|
||||
*userfunc.txt* For Vim version 9.0. Last change: 2022 Nov 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -8,8 +8,8 @@ Defining and using functions.
|
||||
|
||||
This is introduced in section |41.7| of the user manual.
|
||||
|
||||
1. Defining a fuction |define-function|
|
||||
2. Calling a fuction |:call|
|
||||
1. Defining a function |define-function|
|
||||
2. Calling a function |:call|
|
||||
3. Cleaning up in a function |:defer|
|
||||
4. Automatically loading functions |autoload-functions|
|
||||
|
||||
@@ -405,7 +405,7 @@ function to abort. `:defer` can be used to avoid that: >
|
||||
call Handle('Outfile')
|
||||
endfunc
|
||||
|
||||
Note that deleting "Outfile" is scheduled before calling system(), since it
|
||||
Note that deleting "Outfile" is scheduled before calling `system()`, since it
|
||||
can be created even when `system()` fails.
|
||||
|
||||
The deferred functions are called in reverse order, the last one added is
|
||||
@@ -482,6 +482,10 @@ then define the function like this: >
|
||||
echo "Done!"
|
||||
endfunction
|
||||
|
||||
If the file doesn't exist, Vim will also search in 'packpath' (under "start")
|
||||
to allow calling packages' functions from your .vimrc when the packages have
|
||||
not been added to 'runtimepath' yet (see |packages|).
|
||||
|
||||
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. In Vim9 script the "g:" prefix must be used: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_03.txt* For Vim version 9.0. Last change: 2020 Sep 03
|
||||
*usr_03.txt* For Vim version 9.0. Last change: 2022 Oct 30
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -223,7 +223,7 @@ you can see? This figure shows the three commands you can use:
|
||||
+---------------------------+
|
||||
|
||||
Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively,
|
||||
"H" for high, "M" for Middle and "L" for low.
|
||||
"H" for High, "M" for Middle and "L" for Low.
|
||||
|
||||
==============================================================================
|
||||
*03.6* Telling where you are
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_12.txt* For Vim version 9.0. Last change: 2021 Apr 19
|
||||
*usr_12.txt* For Vim version 9.0. Last change: 2022 Nov 19
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 9.0. Last change: 2022 Jun 23
|
||||
*usr_41.txt* For Vim version 9.0. Last change: 2022 Nov 22
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -139,7 +139,7 @@ FOUR KINDS OF NUMBERS
|
||||
Numbers can be decimal, hexadecimal, octal and binary.
|
||||
|
||||
A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal
|
||||
31 and 0x1234 is decimal 4660.
|
||||
31 and "0x1234" is decimal 4660.
|
||||
|
||||
An octal number starts with "0o", "0O". "0o17" is decimal 15.
|
||||
|
||||
@@ -442,7 +442,7 @@ If you don't like the concatenation you can use the $"string" form, which
|
||||
accepts an expression in curly braces: >
|
||||
echo $"Name: {name}"
|
||||
|
||||
See |interp-string| for more information.
|
||||
See |interpolated-string| for more information.
|
||||
|
||||
Borrowed from the C language is the conditional expression: >
|
||||
|
||||
@@ -687,7 +687,7 @@ search() function uses its first argument as a search pattern and the second
|
||||
one as flags. The "W" flag means the search doesn't wrap around the end of
|
||||
the file.
|
||||
|
||||
Using the `call` command is optional in |Vim9| script. It is required in
|
||||
Using the `call` command is optional in |Vim9| script. It is required in
|
||||
legacy script and on the command line: >
|
||||
|
||||
call search("Date: ", "W")
|
||||
@@ -803,7 +803,7 @@ List manipulation: *list-functions*
|
||||
call() call a function with List as arguments
|
||||
index() index of a value in a List or Blob
|
||||
indexof() index in a List or Blob where an expression
|
||||
evaluates to true
|
||||
evaluates to true
|
||||
max() maximum value in a List
|
||||
min() minimum value in a List
|
||||
count() count number of times a value appears in a List
|
||||
@@ -935,6 +935,7 @@ Working with text in the current buffer: *text-functions*
|
||||
|
||||
Working with text in another buffer:
|
||||
getbufline() get a list of lines from the specified buffer
|
||||
getbufoneline() get a one line from the specified buffer
|
||||
setbufline() replace a line in the specified buffer
|
||||
appendbufline() append a list of lines in the specified buffer
|
||||
deletebufline() delete lines from a specified buffer
|
||||
@@ -1030,6 +1031,7 @@ Buffers, windows and the argument list:
|
||||
getwininfo() get a list with window information
|
||||
getchangelist() get a list of change list entries
|
||||
getjumplist() get a list of jump list entries
|
||||
swapfilelist() list of existing swap files in 'directory'
|
||||
swapinfo() information about a swap file
|
||||
swapname() get the swap file path of a buffer
|
||||
|
||||
@@ -1110,6 +1112,7 @@ Interactive: *interactive-functions*
|
||||
getcharstr() get a character from the user as a string
|
||||
getcharmod() get modifiers for the last typed character
|
||||
getmousepos() get last known mouse position
|
||||
getmouseshape() get name of the current mouse shape
|
||||
echoraw() output characters as-is
|
||||
feedkeys() put characters in the typeahead queue
|
||||
input() get a line from the user
|
||||
@@ -1289,6 +1292,7 @@ Popup window: *popup-window-functions*
|
||||
popup_filter_yesno() block until 'y' or 'n' is pressed
|
||||
popup_getoptions() get current options for a popup
|
||||
popup_getpos() get actual position and size of a popup
|
||||
popup_findecho() get window ID for popup used for `:echowindow`
|
||||
popup_findinfo() get window ID for popup info window
|
||||
popup_findpreview() get window ID for popup preview window
|
||||
popup_list() get list of all popup window IDs
|
||||
|
||||
@@ -159,6 +159,7 @@ relative path: >
|
||||
|
||||
This will search for the script "monthlib.vim" in the autoload directories of
|
||||
'runtimepath'. With Unix one of the directories often is "~/.vim/autoload".
|
||||
It will also search under 'packpath', under "start".
|
||||
|
||||
The main advantage of this is that this script can be easily shared with other
|
||||
scripts. You do need to make sure that the script name is unique, since Vim
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 9.0. Last change: 2022 Sep 19
|
||||
*various.txt* For Vim version 9.0. Last change: 2022 Nov 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -298,7 +298,8 @@ g8 Print the hex values of the bytes used in the
|
||||
:silent !{cmd}
|
||||
< The screen is not redrawn then, thus you have to use
|
||||
CTRL-L or ":redraw!" if the command did display
|
||||
something.
|
||||
something. However, this depends on what the |t_ti|
|
||||
and |t_te| termcap entries are set to.
|
||||
Also see |shell-window|.
|
||||
|
||||
*:!!*
|
||||
@@ -332,8 +333,8 @@ g8 Print the hex values of the bytes used in the
|
||||
*+feature-list*
|
||||
*+acl* |ACL| support included
|
||||
*+ARP* Amiga only: ARP support included
|
||||
B *+arabic* |Arabic| language support
|
||||
B *+autochdir* support 'autochdir' option
|
||||
H *+arabic* |Arabic| language support
|
||||
N *+autochdir* support 'autochdir' option
|
||||
T *+autocmd* |:autocmd|, automatic commands. Always enabled since
|
||||
8.0.1564
|
||||
H *+autoservername* Automatically enable |clientserver|
|
||||
@@ -349,18 +350,19 @@ T *++builtin_terms* maximal terminals builtin |builtin-terms| Always
|
||||
N *+byte_offset* support for 'o' flag in 'statusline' option, "go"
|
||||
and ":goto" commands.
|
||||
m *+channel* inter process communication |channel|
|
||||
6 *+cindent* |'cindent'|, C indenting
|
||||
T *+cindent* |'cindent'|, C indenting; Always enabled
|
||||
N *+clientserver* Unix and Win32: Remote invocation |clientserver|
|
||||
*+clipboard* |clipboard| support compiled-in
|
||||
*+clipboard_working* |clipboard| support compiled-in and working
|
||||
T *+cmdline_compl* command line completion |cmdline-completion|
|
||||
T *+cmdline_hist* command line history |cmdline-history|
|
||||
N *+cmdline_info* |'showcmd'| and |'ruler'|
|
||||
S *+cmdwin* |cmdline-window| support
|
||||
T *+cmdline_info* |'showcmd'| and |'ruler'|; Always enabled since
|
||||
9.0.0747
|
||||
T *+cmdwin* |cmdline-window| support; Always enabled since 9.0.0657
|
||||
T *+comments* |'comments'| support
|
||||
B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
|
||||
N *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
|
||||
N *+cryptv* encryption support |encryption|
|
||||
B *+cscope* |cscope| support
|
||||
H *+cscope* |cscope| support
|
||||
T *+cursorbind* |'cursorbind'| support
|
||||
m *+cursorshape* |termcap-cursor-shape| support
|
||||
m *+debug* Compiled for debugging.
|
||||
@@ -371,7 +373,7 @@ N *+diff* |vimdiff| and 'diff'
|
||||
N *+digraphs* |digraphs| *E196*
|
||||
*+directx* Win32 GUI only: DirectX and |'renderoptions'|
|
||||
*+dnd* Support for DnD into the "~ register |quote_~|.
|
||||
B *+emacs_tags* |emacs-tags| files
|
||||
H *+emacs_tags* |emacs-tags| files
|
||||
N *+eval* expression evaluation |eval.txt|
|
||||
T *+ex_extra* always on now, used to be for Vim's extra Ex commands
|
||||
N *+extra_search* |'hlsearch'| and |'incsearch'| options.
|
||||
@@ -397,12 +399,12 @@ T *+insert_expand* |insert_expand| Insert mode completion
|
||||
m *+ipv6* Support for IPv6 networking |channel|
|
||||
m *+job* starting and stopping jobs |job|
|
||||
T *+jumplist* |jumplist|; Always enabled since 8.2.3795
|
||||
B *+keymap* |'keymap'|
|
||||
H *+keymap* |'keymap'|
|
||||
N *+lambda* |lambda| and |closure|
|
||||
B *+langmap* |'langmap'|
|
||||
H *+langmap* |'langmap'|
|
||||
N *+libcall* |libcall()|
|
||||
N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'|
|
||||
t *+lispindent* |'lisp'|
|
||||
T *+lispindent* |'lisp'|
|
||||
T *+listcmds* Vim commands for the list of buffers |buffer-hidden|
|
||||
and argument list |:argdelete|
|
||||
T *+localmap* Support for mappings local to a buffer |:map-local|
|
||||
@@ -413,16 +415,16 @@ N *+mksession* |:mksession|
|
||||
T *+modify_fname* |filename-modifiers|
|
||||
T *+mouse* Mouse handling |mouse-using|
|
||||
N *+mouseshape* |'mouseshape'|
|
||||
B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
|
||||
N *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
|
||||
N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse|
|
||||
m *+mouse_gpm/dyn* Same as |+mouse_gpm| with optional library dependency
|
||||
|/dyn|
|
||||
N *+mouse_jsbterm* JSB mouse handling |jsbterm-mouse|
|
||||
B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse|
|
||||
N *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse|
|
||||
N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal|
|
||||
N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse|
|
||||
B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse|
|
||||
B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse|
|
||||
N *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse|
|
||||
N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse|
|
||||
N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse|
|
||||
T *+multi_byte* Unicode support, 16 and 32 bit characters |multibyte|
|
||||
*+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
|
||||
@@ -451,14 +453,14 @@ m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn|
|
||||
N *+quickfix* |:make| and |quickfix| commands
|
||||
N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
|
||||
'redrawtime' option
|
||||
B *+rightleft* Right to left typing |'rightleft'|
|
||||
H *+rightleft* Right to left typing |'rightleft'|
|
||||
m *+ruby* Ruby interface |ruby|
|
||||
m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
|
||||
T *+scrollbind* |'scrollbind'|
|
||||
B *+signs* |:sign|
|
||||
t *+smartindent* |'smartindent'|
|
||||
B *+sodium* compiled with libsodium for better encryption support
|
||||
B *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
|
||||
N *+signs* |:sign|
|
||||
T *+smartindent* |'smartindent'|
|
||||
H *+sodium* compiled with libsodium for better encryption support
|
||||
H *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
|
||||
N *+spell* spell checking support, see |spell|
|
||||
N *+startuptime* |--startuptime| argument
|
||||
N *+statusline* Options 'statusline', 'rulerformat' and special
|
||||
@@ -474,7 +476,7 @@ m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
|
||||
m *+terminal* Support for terminal window |terminal|
|
||||
*+terminfo* uses |terminfo| instead of termcap
|
||||
N *+termresponse* support for |t_RV| and |v:termresponse|
|
||||
B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
||||
N *+termguicolors* 24-bit color in xterm-compatible terminals support
|
||||
T *+textobjects* |text-objects| selection. Always enabled since 9.0.0222.
|
||||
N *+textprop* |text-properties|
|
||||
*+tgetent* non-Unix only: able to use external termcap
|
||||
@@ -483,7 +485,7 @@ T *+title* Setting the window 'title' and 'icon'; Always enabled
|
||||
N *+toolbar* |gui-toolbar|
|
||||
T *+user_commands* User-defined commands. |user-commands|
|
||||
Always enabled since 8.1.1210.
|
||||
B *+vartabs* Variable-width tabstops. |'vartabstop'|
|
||||
H *+vartabs* Variable-width tabstops. |'vartabstop'|
|
||||
T *+vertsplit* Vertically split windows |:vsplit|; Always enabled
|
||||
since 8.0.1118.
|
||||
T *+vim9script* |Vim9| script
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version5.txt* For Vim version 9.0. Last change: 2022 Apr 06
|
||||
*version5.txt* For Vim version 9.0. Last change: 2022 Nov 09
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -118,7 +118,7 @@ Added |added-5.8|
|
||||
Fixed |fixed-5.8|
|
||||
|
||||
==============================================================================
|
||||
INCOMPATIBLE *incompatible-5*
|
||||
INCOMPATIBLE *incompatible-5*
|
||||
|
||||
Default value for 'compatible' changed *cp-default*
|
||||
--------------------------------------
|
||||
@@ -360,7 +360,7 @@ CTRL-_ key for this |i_CTRL-_|. >
|
||||
:imap <C-B> <C-O>:set revins!<CR>
|
||||
|
||||
==============================================================================
|
||||
NEW FEATURES *new-5*
|
||||
NEW FEATURES *new-5*
|
||||
|
||||
Syntax highlighting *new-highlighting*
|
||||
-------------------
|
||||
@@ -635,7 +635,7 @@ Included support for the Farsi language (Shiran). Only when enabled at
|
||||
compile time. See |farsi|.
|
||||
|
||||
==============================================================================
|
||||
IMPROVEMENTS *improvements-5*
|
||||
IMPROVEMENTS *improvements-5*
|
||||
|
||||
Performance:
|
||||
- When 'showcmd' was set, mappings would execute much more slowly because the
|
||||
@@ -929,7 +929,7 @@ Some versions of Motif require "-lXpm". Added check for this in configure.
|
||||
Don't add "-L/usr/lib" to the link line, causes problems on a few systems.
|
||||
|
||||
==============================================================================
|
||||
COMPILE TIME CHANGES *compile-changes-5*
|
||||
COMPILE TIME CHANGES *compile-changes-5*
|
||||
|
||||
When compiling, allow a choice for minimal, normal or maximal features in an
|
||||
easy way, by changing a single line in src/feature.h.
|
||||
@@ -975,7 +975,7 @@ Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined.
|
||||
|digraphs-default|
|
||||
|
||||
==============================================================================
|
||||
BUG FIXES *bug-fixes-5*
|
||||
BUG FIXES *bug-fixes-5*
|
||||
|
||||
Note: Some of these fixes may only apply to test versions which were
|
||||
created after version 4.6, but before 5.0.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.0. Last change: 2022 Jun 28
|
||||
*version9.txt* For Vim version 9.0. Last change: 2022 Nov 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -254,12 +254,12 @@ summary.
|
||||
Many memory leaks, invalid memory accesses and crashes have been fixed.
|
||||
See the list of patches below: |bug-fixes-9|.
|
||||
|
||||
Support for Vim expression evaluation in a string. |interp-string|
|
||||
Support for Vim expression evaluation in a string. |interpolated-string|
|
||||
Support for evaluating Vim expressions in a heredoc. |:let-heredoc|
|
||||
|
||||
Support for fuzzy matching:
|
||||
- a string in a List of strings. |fuzzy-matching|
|
||||
- completion support for command line completion using 'wildoptions'
|
||||
- completion support for command line completion using 'wildoptions'.
|
||||
- for |:vimgrep|.
|
||||
|
||||
Added support for the |Haiku| OS.
|
||||
@@ -398,22 +398,22 @@ Update xdiff to version 2.33. Update libvterm to revision 789.
|
||||
|
||||
Support 'trim' for Python/Lua/Perl/Tcl/Ruby/MzScheme interface heredoc.
|
||||
|
||||
Add the |t_AU| and |t_8u| termap codes for underline and undercurl. Add the
|
||||
Add the |t_AU| and |t_8u| termcap codes for underline and undercurl. Add the
|
||||
t_fd and t_fe termcap codes for detecting focus events.
|
||||
|
||||
Support for indenting C pragmas like normal code. (|cino-P|)
|
||||
|
||||
Add support for defining the syntax fold level (|:syn-foldlevel|)
|
||||
Add support for defining the syntax fold level. (|:syn-foldlevel|)
|
||||
|
||||
Add support for using \<*xxx> in a string to prepend a modifier to a
|
||||
character. (|expr-quote|).
|
||||
character. (|expr-quote|)
|
||||
|
||||
Add support trimming characters at the beginning or end of a string using
|
||||
|trim()|.
|
||||
|
||||
Make ":verbose pwd" show the scope of the directory. |:pwd-verbose|
|
||||
|
||||
Add the "0o" notation for specifying octal numbers |scriptversion-4|
|
||||
Add the "0o" notation for specifying octal numbers. |scriptversion-4|
|
||||
|
||||
Support for changing to the previous tab-local and window-local directories
|
||||
using the "tcd -" and "lcd -" commands. (|:tcd-| and |:lcd-|)
|
||||
@@ -428,7 +428,7 @@ Add support for executing (|:@|) a register containing line continuation.
|
||||
Lua support:
|
||||
- Call Vim functions from Lua (vim.call() and vim.fn()).
|
||||
- Convert a Lua function and a closure to a Vim funcref so that it can be
|
||||
accessed in a Vimscript (|lua-funcref|).
|
||||
accessed in a Vim script (|lua-funcref|).
|
||||
- Not backwards compatible: Make Lua arrays one based.
|
||||
- Add support for using table.insert() and table.remove() functions with Vim
|
||||
lists.
|
||||
@@ -27366,7 +27366,7 @@ Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim
|
||||
Patch 8.2.4460
|
||||
Problem: Vim9: wrong error for defining dict function.
|
||||
Solution: Explicitly check for trying to define a dict function.
|
||||
(closes 9827)
|
||||
(closes #9827)
|
||||
Files: src/errors.h, src/userfunc.c, src/vim9compile.c,
|
||||
src/testdir/test_vim9_func.vim
|
||||
|
||||
@@ -28478,7 +28478,7 @@ Files: src/change.c, src/drawscreen.c, src/structs.h
|
||||
|
||||
Patch 8.2.4645
|
||||
Problem: 'shortmess' changed when session does not store options.
|
||||
Solution: Save and restore 'shortmess' if needed. (James Charti,
|
||||
Solution: Save and restore 'shortmess' if needed. (James Cherti,
|
||||
closes #10037)
|
||||
Files: src/session.c, src/testdir/test_mksession.vim
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 9.0. Last change: 2022 Sep 19
|
||||
*vim9.txt* For Vim version 9.0. Last change: 2022 Nov 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -16,7 +16,7 @@ features in Vim9 script.
|
||||
3. New style functions |fast-functions|
|
||||
4. Types |vim9-types|
|
||||
5. Namespace, Import and Export |vim9script|
|
||||
6. Future work: classes |vim9-classes|
|
||||
6. Classes and interfaces |vim9-classes|
|
||||
|
||||
9. Rationale |vim9-rationale|
|
||||
|
||||
@@ -502,7 +502,7 @@ How constants work varies between languages. Some consider a variable that
|
||||
can't be assigned another value a constant. JavaScript is an example. Others
|
||||
also make the value immutable, thus when a constant uses a list, the list
|
||||
cannot be changed. In Vim9 we can use both.
|
||||
*E1021*
|
||||
*E1021* *E1307*
|
||||
`:const` is used for making both the variable and the value a constant. Use
|
||||
this for composite structures that you want to make sure will not be modified.
|
||||
Example: >
|
||||
@@ -962,6 +962,8 @@ In compiled Vim9 script you get:
|
||||
3
|
||||
Generally, you should not change the list that is iterated over. Make a copy
|
||||
first if needed.
|
||||
When looping over a list of lists, the nested lists can be changed. The loop
|
||||
variable is "final", it cannot be changed but what its value can be changed.
|
||||
*E1306*
|
||||
The depth of loops, :for and :while loops added together, cannot exceed 10.
|
||||
|
||||
@@ -1037,7 +1039,7 @@ In Vim9 script one can use the following predefined values: >
|
||||
`true` is the same as `v:true`, `false` the same as `v:false`, `null` the same
|
||||
as `v:null`.
|
||||
|
||||
While `null` has the type "special", the other "null_" types have the type
|
||||
While `null` has the type "special", the other "null_" values have the type
|
||||
indicated by their name. Quite often a null value is handled the same as an
|
||||
empty value, but not always. The values can be useful to clear a script-local
|
||||
variable, since they cannot be deleted with `:unlet`. E.g.: >
|
||||
@@ -1410,6 +1412,21 @@ to a Vim9 function:
|
||||
'three'
|
||||
]
|
||||
|
||||
|
||||
Calling a function in an expr option ~
|
||||
*expr-option-function*
|
||||
The value of a few options, such as 'foldexpr', is an expression that is
|
||||
evaluated to get a value. The evaluation can have quite a bit of overhead.
|
||||
One way to minimize the overhead, and also to keep the option value very
|
||||
simple, is to define a compiled function and set the option to call it
|
||||
without arguments. Example: >
|
||||
vim9script
|
||||
def MyFoldFunc(): any
|
||||
... compute fold level for line v:lnum
|
||||
return level
|
||||
enddef
|
||||
set foldexpr=s:MyFoldFunc()
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Types *vim9-types*
|
||||
@@ -1923,64 +1940,17 @@ Or: >
|
||||
|
||||
==============================================================================
|
||||
|
||||
6. Future work: classes *vim9-classes*
|
||||
6. Classes and interfaces *vim9-classes*
|
||||
|
||||
Above "class" was mentioned a few times, but it has not been implemented yet.
|
||||
Most of Vim9 script can be created without this functionality, and since
|
||||
implementing classes is going to be a lot of work, it is left for the future.
|
||||
For now we'll just make sure classes can be added later.
|
||||
In legacy script a Dictionary could be used as a kind-of object, by adding
|
||||
members that are functions. However, this is quite inefficient and requires
|
||||
the writer to do the work of making sure all the objects have the right
|
||||
members. See |Dictionary-function|.
|
||||
|
||||
Thoughts:
|
||||
- `class` / `endclass`, the whole class must be in one file
|
||||
- Class names are always CamelCase (to avoid a name clash with builtin types)
|
||||
- A single constructor called "constructor"
|
||||
- Single inheritance with `class ThisClass extends BaseClass`
|
||||
- `abstract class` (class with incomplete implementation)
|
||||
- `interface` / `endinterface` (abstract class without any implementation)
|
||||
- `class SomeClass implements SomeInterface`
|
||||
- Generics for class: `class <Tkey, Tentry>`
|
||||
- Generics for function: `def <Tkey> GetLast(key: Tkey)`
|
||||
In |Vim9| script you can have classes, objects and interfaces like in most
|
||||
popular object-oriented programming languages. Since this is a lot of
|
||||
functionality it is located in a separate help file: |vim9class.txt|.
|
||||
|
||||
Again, much of this is from TypeScript with a slightly different syntax.
|
||||
|
||||
Some things that look like good additions:
|
||||
- Use a class as an interface (like Dart)
|
||||
- Extend a class with methods, using an import (like Dart)
|
||||
- Mixins
|
||||
- For testing: Mock mechanism
|
||||
|
||||
An important class that will be provided is "Promise". Since Vim is single
|
||||
threaded, connecting asynchronous operations is a natural way of allowing
|
||||
plugins to do their work without blocking the user. It's a uniform way to
|
||||
invoke callbacks and handle timeouts and errors.
|
||||
|
||||
Some commands have already been reserved:
|
||||
*:class*
|
||||
*:endclass*
|
||||
*:abstract*
|
||||
*:enum*
|
||||
*:endenum*
|
||||
*:interface*
|
||||
*:endinterface*
|
||||
*:static*
|
||||
*:type*
|
||||
|
||||
Some examples: >
|
||||
|
||||
abstract class Person
|
||||
static const prefix = 'xxx'
|
||||
var name: string
|
||||
|
||||
def constructor(name: string)
|
||||
this.name = name
|
||||
enddef
|
||||
|
||||
def display(): void
|
||||
echo name
|
||||
enddef
|
||||
|
||||
abstract def find(string): Person
|
||||
endclass
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -2267,18 +2237,5 @@ tool need to be supported. Since most languages support classes the lack of
|
||||
support for classes in Vim is then a problem.
|
||||
|
||||
|
||||
Classes ~
|
||||
|
||||
Vim supports a kind-of object oriented programming by adding methods to a
|
||||
dictionary. With some care this can be made to work, but it does not look
|
||||
like real classes. On top of that, it's quite slow, because of the use of
|
||||
dictionaries.
|
||||
|
||||
It would be good to support real classes, and this is planned for a later
|
||||
version. The support is a "minimal common functionality" of class support in
|
||||
most languages. It will work much like Java, which is the most popular
|
||||
programming language.
|
||||
|
||||
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
697
runtime/doc/vim9class.txt
Normal file
697
runtime/doc/vim9class.txt
Normal file
@@ -0,0 +1,697 @@
|
||||
*vim9class.txt* For Vim version 9.0. Last change: 2022 Dec 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
NOTE - This is under development, anything can still change! - NOTE
|
||||
|
||||
|
||||
Vim9 classes, objects, interfaces, types and enums.
|
||||
|
||||
1. Overview |Vim9-class-overview|
|
||||
2. A simple class |Vim9-simple-class|
|
||||
3. Using an abstract class |Vim9-abstract-class|
|
||||
4. Using an interface |Vim9-using-interface|
|
||||
5. More class details |Vim9-class|
|
||||
6. Type definition |Vim9-type|
|
||||
7. Enum |Vim9-enum|
|
||||
|
||||
9. Rationale
|
||||
10. To be done later
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. Overview *Vim9-class-overview*
|
||||
|
||||
The fancy term is "object-oriented programming". You can find lots of study
|
||||
material about this subject. Here we document what |Vim9| script provides,
|
||||
assuming you know the basics already. Added are helpful hints about how
|
||||
to use this functionality effectively.
|
||||
|
||||
The basic item is an object:
|
||||
- An object stores state. It contains one or more variables that can each
|
||||
have a value.
|
||||
- An object usually provides functions that manipulate its state. These
|
||||
functions are invoked "on the object", which is what sets it apart from the
|
||||
traditional separation of data and code that manipulates the data.
|
||||
- An object has a well defined interface, with typed member variables and
|
||||
member functions.
|
||||
- Objects are created by a class and all objects have the same interface.
|
||||
This never changes, it is not dynamic.
|
||||
|
||||
An object can only be created by a class. A class provides:
|
||||
- A new() method, the constructor, which returns an object for the class.
|
||||
This method is invoked on the class name: MyClass.new().
|
||||
- State shared by all objects of the class: class variables and constants.
|
||||
- A hierarchy of classes, with super-classes and sub-classes, inheritance.
|
||||
|
||||
An interface is used to specify properties of an object:
|
||||
- An object can declare several interfaces that it implements.
|
||||
- Different objects implementing the same interface can be used the same way.
|
||||
|
||||
The class hierarchy allows for single inheritance. Otherwise interfaces are
|
||||
to be used where needed.
|
||||
|
||||
|
||||
Class modeling ~
|
||||
|
||||
You can model classes any way you like. Keep in mind what you are building,
|
||||
don't try to model the real world. This can be confusing, especially because
|
||||
teachers use real-world objects to explain class relations and you might think
|
||||
your model should therefore reflect the real world. It doesn't! The model
|
||||
should match your purpose.
|
||||
|
||||
You will soon find that composition is often better than inheritance. Don't
|
||||
waste time trying to find the optimal class model. Or waste time discussing
|
||||
whether a square is a rectangle or that a rectangle is a square. It doesn't
|
||||
matter.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
2. A simple class *Vim9-simple-class*
|
||||
|
||||
Let's start with a simple example: a class that stores a text position: >
|
||||
|
||||
class TextPosition
|
||||
this.lnum: number
|
||||
this.col: number
|
||||
|
||||
def new(lnum: number, col: number)
|
||||
this.lnum = lnum
|
||||
this.col = col
|
||||
enddef
|
||||
|
||||
def SetLnum(lnum: number)
|
||||
this.lnum = lnum
|
||||
enddef
|
||||
|
||||
def SetCol(col: number)
|
||||
this.col = col
|
||||
enddef
|
||||
|
||||
def SetPosition(lnum: number, col: number)
|
||||
this.lnum = lnum
|
||||
this.col = col
|
||||
enddef
|
||||
endclass
|
||||
|
||||
You can create an object from this class with the new() method: >
|
||||
|
||||
var pos = TextPosition.new(1, 1)
|
||||
|
||||
The object members "lnum" and "col" can be accessed directly: >
|
||||
|
||||
echo $'The text position is ({pos.lnum}, {pos.col})'
|
||||
|
||||
If you have been using other object-oriented languages you will notice that
|
||||
in Vim the object members are consistently referred to with the "this."
|
||||
prefix. This is different from languages like Java and TypeScript. This
|
||||
naming convention makes the object members easy to spot. Also, when a
|
||||
variable does not have the "this." prefix you know it is not an object member.
|
||||
|
||||
|
||||
Member write access ~
|
||||
|
||||
Now try to change an object member directly: >
|
||||
|
||||
pos.lnum = 9
|
||||
|
||||
This will give you an error! That is because by default object members can be
|
||||
read but not set. That's why the class provides a method for it: >
|
||||
|
||||
pos.SetLnum(9)
|
||||
|
||||
Allowing to read but not set an object member is the most common and safest
|
||||
way. Most often there is no problem using a value, while setting a value may
|
||||
have side effects that need to be taken care of. In this case, the SetLnum()
|
||||
method could check if the line number is valid and either give an error or use
|
||||
the closest valid value.
|
||||
|
||||
If you don't care about side effects and want to allow the object member to be
|
||||
changed at any time, you can make it public: >
|
||||
|
||||
public this.lnum: number
|
||||
public this.col number
|
||||
|
||||
Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting
|
||||
"pos.lnum" directly above will no longer give an error.
|
||||
|
||||
|
||||
Private members ~
|
||||
|
||||
On the other hand, if you do not want the object members to be read directly,
|
||||
you can make them private. This is done by prefixing an underscore to the
|
||||
name: >
|
||||
|
||||
this._lnum: number
|
||||
this._col number
|
||||
|
||||
Now you need to provide methods to get the value of the private members.
|
||||
These are commonly call getters. We recommend using a name that starts with
|
||||
"Get": >
|
||||
|
||||
def GetLnum(): number
|
||||
return this._lnum
|
||||
enddef
|
||||
|
||||
def GetCol() number
|
||||
return this._col
|
||||
enddef
|
||||
|
||||
This example isn't very useful, the members might as well have been public.
|
||||
It does become useful if you check the value. For example, restrict the line
|
||||
number to the total number of lines: >
|
||||
|
||||
def GetLnum(): number
|
||||
if this._lnum > this._lineCount
|
||||
return this._lineCount
|
||||
endif
|
||||
return this._lnum
|
||||
enddef
|
||||
|
||||
|
||||
Simplifying the new() method ~
|
||||
|
||||
Many constructors take values for the object members. Thus you very often see
|
||||
this pattern: >
|
||||
|
||||
this.lnum: number
|
||||
this.col: number
|
||||
|
||||
def new(lnum: number, col: number)
|
||||
this.lnum = lnum
|
||||
this.col = col
|
||||
enddef
|
||||
|
||||
Not only is this text you need to write, it also has the type of each member
|
||||
twice. Since this is so common a shorter way to write new() is provided: >
|
||||
|
||||
def new(this.lnum, this.col)
|
||||
enddef
|
||||
|
||||
The semantics are easy to understand: Providing the object member name,
|
||||
including "this.", as the argument to new() means the value provided in the
|
||||
new() call is assigned to that object member. This mechanism is coming from
|
||||
the Dart language.
|
||||
|
||||
The sequence of constructing a new object is:
|
||||
1. Memory is allocated and cleared. All values are zero/false/empty.
|
||||
2. For each declared member that has an initializer, the expression is
|
||||
evaluated and assigned to the member. This happens in the sequence the
|
||||
members are declared in the class.
|
||||
3. Arguments in the new() method in the "this.name" form are assigned.
|
||||
4. The body of the new() method is executed.
|
||||
|
||||
TODO: for a sub-class the constructor of the parent class will be invoked
|
||||
somewhere.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
3. Using an abstract class *Vim9-abstract-class*
|
||||
|
||||
An abstract class forms the base for at least one sub-class. In the class
|
||||
model one often finds that a few classes have the same properties that can be
|
||||
shared, but a class with those properties does not have enough state to create
|
||||
an object from. A sub-class must extend the abstract class and add the
|
||||
missing state and/or methods before it can be used to create objects for.
|
||||
|
||||
An abstract class does not have a new() method.
|
||||
|
||||
For example, a Shape class could store a color and thickness. You cannot
|
||||
create a Shape object, it is missing the information about what kind of shape
|
||||
it is. The Shape class functions as the base for a Square and a Triangle
|
||||
class, for which objects can be created. Example: >
|
||||
|
||||
abstract class Shape
|
||||
this.color = Color.Black
|
||||
this.thickness = 10
|
||||
endclass
|
||||
|
||||
class Square extends Shape
|
||||
this.size: number
|
||||
|
||||
def new(this.size)
|
||||
enddef
|
||||
endclass
|
||||
|
||||
class Triangle extends Shape
|
||||
this.base: number
|
||||
this.height: number
|
||||
|
||||
def new(this.base, this.height)
|
||||
enddef
|
||||
endclass
|
||||
<
|
||||
*class-member* *:static*
|
||||
Class members are declared with "static". They are used by the name without a
|
||||
prefix: >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
def new(this.size)
|
||||
totalSize += this.size
|
||||
enddef
|
||||
endclass
|
||||
<
|
||||
*class-method*
|
||||
Class methods are also declared with "static". They have no access to object
|
||||
members, they cannot use the "this" keyword. >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
" Clear the total size and return the value it had before.
|
||||
static def ClearTotalSize(): number
|
||||
var prev = totalSize
|
||||
totalSize = 0
|
||||
return prev
|
||||
enddef
|
||||
endclass
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Using an interface *Vim9-using-interface*
|
||||
|
||||
The example above with Shape, Square and Triangle can be made more useful if
|
||||
we add a method to compute the surface of the object. For that we create the
|
||||
interface called HasSurface, which specifies one method Surface() that returns
|
||||
a number. This example extends the one above: >
|
||||
|
||||
abstract class Shape
|
||||
this.color = Color.Black
|
||||
this.thickness = 10
|
||||
endclass
|
||||
|
||||
interface HasSurface
|
||||
def Surface(): number
|
||||
endinterface
|
||||
|
||||
class Square extends Shape implements HasSurface
|
||||
this.size: number
|
||||
|
||||
def new(this.size)
|
||||
enddef
|
||||
|
||||
def Surface(): number
|
||||
return this.size * this.size
|
||||
enddef
|
||||
endclass
|
||||
|
||||
class Triangle extends Shape implements HasSurface
|
||||
this.base: number
|
||||
this.height: number
|
||||
|
||||
def new(this.base, this.height)
|
||||
enddef
|
||||
|
||||
def Surface(): number
|
||||
return this.base * this.height / 2
|
||||
enddef
|
||||
endclass
|
||||
|
||||
The interface name can be used as a type: >
|
||||
|
||||
var shapes: list<HasSurface> = [
|
||||
Square.new(12),
|
||||
Triangle.new(8, 15),
|
||||
]
|
||||
for shape in shapes
|
||||
echo $'the surface is {shape.Surface()}'
|
||||
endfor
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
5. More class details *Vim9-class*
|
||||
|
||||
Defining a class ~
|
||||
*:class* *:endclass* *:abstract*
|
||||
A class is defined between `:class` and `:endclass`. The whole class is
|
||||
defined in one script file. It is not possible to add to a class later.
|
||||
|
||||
It is possible to define more than one class in a script file. Although it
|
||||
usually is better to export only one main class. It can be useful to define
|
||||
types, enums and helper classes though.
|
||||
|
||||
The `:abstract` keyword may be prefixed and `:export` may be used. That gives
|
||||
these variants: >
|
||||
|
||||
class ClassName
|
||||
endclass
|
||||
|
||||
export class ClassName
|
||||
endclass
|
||||
|
||||
abstract class ClassName
|
||||
endclass
|
||||
|
||||
export abstract class ClassName
|
||||
endclass
|
||||
<
|
||||
*E1314*
|
||||
The class name should be CamelCased. It must start with an uppercase letter.
|
||||
That avoids clashing with builtin types.
|
||||
|
||||
After the class name these optional items can be used. Each can appear only
|
||||
once. They can appear in any order, although this order is recommended: >
|
||||
extends ClassName
|
||||
implements InterfaceName, OtherInterface
|
||||
specifies SomeInterface
|
||||
< *extends*
|
||||
A class can extend one other class.
|
||||
*implements*
|
||||
A class can implement one or more interfaces.
|
||||
*specifies*
|
||||
A class can declare it's interface, the object members and methods, with a
|
||||
named interface. This avoids the need for separately specifying the
|
||||
interface, which is often done an many languages, especially Java.
|
||||
|
||||
|
||||
Defining an interface ~
|
||||
*:interface* *:endinterface*
|
||||
An interface is defined between `:interface` and `:endinterface`. It may be
|
||||
prefixed with `:export`: >
|
||||
|
||||
interface InterfaceName
|
||||
endinterface
|
||||
|
||||
export interface InterfaceName
|
||||
endinterface
|
||||
|
||||
An interface can declare object members, just like in a class but without any
|
||||
initializer.
|
||||
|
||||
An interface can declare methods with `:def`, including the arguments and
|
||||
return type, but without the body and without `:enddef`. Example: >
|
||||
|
||||
interface HasSurface
|
||||
this.size: number
|
||||
def Surface(): number
|
||||
endinterface
|
||||
|
||||
The "Has" prefix can be used to make it easier to guess this is an interface
|
||||
name, with a hint about what it provides.
|
||||
|
||||
|
||||
Default constructor ~
|
||||
|
||||
In case you define a class without a new() method, one will be automatically
|
||||
defined. This default constructor will have arguments for all the object
|
||||
members, in the order they were specified. Thus if your class looks like: >
|
||||
|
||||
class AutoNew
|
||||
this.name: string
|
||||
this.age: number
|
||||
this.gender: Gender
|
||||
endclass
|
||||
|
||||
Then The default constructor will be: >
|
||||
|
||||
def new(this.name, this.age, this.gender)
|
||||
enddef
|
||||
|
||||
All object members will be used, also private access ones.
|
||||
|
||||
|
||||
Multiple constructors ~
|
||||
|
||||
Normally a class has just one new() constructor. In case you find that the
|
||||
constructor is often called with the same arguments you may want to simplify
|
||||
your code by putting those arguments into a second constructor method. For
|
||||
example, if you tend to use the color black a lot: >
|
||||
|
||||
def new(this.garment, this.color, this.size)
|
||||
enddef
|
||||
...
|
||||
var pants = new(Garment.pants, Color.black, "XL")
|
||||
var shirt = new(Garment.shirt, Color.black, "XL")
|
||||
var shoes = new(Garment.shoes, Color.black, "45")
|
||||
|
||||
Instead of repeating the color every time you can add a constructor that
|
||||
includes it: >
|
||||
|
||||
def newBlack(this.garment, this.size)
|
||||
this.color = Color.black
|
||||
enddef
|
||||
...
|
||||
var pants = newBlack(Garment.pants, "XL")
|
||||
var shirt = newBlack(Garment.shirt, "XL")
|
||||
var shoes = newBlack(Garment.shoes, "9.5")
|
||||
|
||||
Note that the method name must start with "new". If there is no method called
|
||||
"new()" then the default constructor is added, even though there are other
|
||||
constructor methods.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
6. Type definition *Vim9-type* *:type*
|
||||
|
||||
A type definition is giving a name to a type specification. For Example: >
|
||||
|
||||
:type ListOfStrings list<string>
|
||||
|
||||
TODO: more explanation
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
7. Enum *Vim9-enum* *:enum* *:endenum*
|
||||
|
||||
An enum is a type that can have one of a list of values. Example: >
|
||||
|
||||
:enum Color
|
||||
White
|
||||
Red
|
||||
Green
|
||||
Blue
|
||||
Black
|
||||
:endenum
|
||||
|
||||
TODO: more explanation
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
9. Rationale
|
||||
|
||||
Most of the choices for |Vim9| classes come from popular and recently
|
||||
developed languages, such as Java, TypeScript and Dart. The syntax has been
|
||||
made to fit with the way Vim script works, such as using `endclass` instead of
|
||||
using curly braces around the whole class.
|
||||
|
||||
Some common constructs of object-oriented languages were chosen very long ago
|
||||
when this kind of programming was still new, and later found to be
|
||||
sub-optimal. By this time those constructs were widely used and changing them
|
||||
was not an option. In Vim we do have the freedom to make different choices,
|
||||
since classes are completely new. We can make the syntax simpler and more
|
||||
consistent than what "old" languages use. Without diverting too much, it
|
||||
should still mostly look like what you know from existing languages.
|
||||
|
||||
Some recently developed languages add all kinds of fancy features that we
|
||||
don't need for Vim. But some have nice ideas that we do want to use.
|
||||
Thus we end up with a base of what is common in popular languages, dropping
|
||||
what looks like a bad idea, and adding some nice features that are easy to
|
||||
understand.
|
||||
|
||||
The main rules we use to make decisions:
|
||||
- Keep it simple.
|
||||
- No surprises, mostly do what other languages are doing.
|
||||
- Avoid mistakes from the past.
|
||||
- Avoid the need for the script writer to consult the help to understand how
|
||||
things work, most things should be obvious.
|
||||
- Keep it consistent.
|
||||
- Aim at an average size plugin, not at a huge project.
|
||||
|
||||
|
||||
Using new() for the constructor ~
|
||||
|
||||
Many languages use the class name for the constructor method. A disadvantage
|
||||
is that quite often this is a long name. And when changing the class name all
|
||||
constructor methods need to be renamed. Not a big deal, but still a
|
||||
disadvantage.
|
||||
|
||||
Other languages, such as TypeScript, use a specific name, such as
|
||||
"constructor()". That seems better. However, using "new" or "new()" to
|
||||
create a new object has no obvious relation with "constructor()".
|
||||
|
||||
For |Vim9| script using the same method name for all constructors seemed like
|
||||
the right choice, and by calling it new() the relation between the caller and
|
||||
the method being called is obvious.
|
||||
|
||||
|
||||
No overloading of the constructor ~
|
||||
|
||||
In Vim script, both legacy and |Vim9| script, there is no overloading of
|
||||
functions. That means it is not possible to use the same function name with
|
||||
different types of arguments. Therefore there also is only one new()
|
||||
constructor.
|
||||
|
||||
With |Vim9| script it would be possible to support overloading, since
|
||||
arguments are typed. However, this gets complicated very quickly. Looking at
|
||||
a new() call one has to inspect the types of the arguments to know which of
|
||||
several new() methods is actually being called. And that can require
|
||||
inspecting quite a bit of code. For example, if one of the arguments is the
|
||||
return value of a method, you need to find that method to see what type it is
|
||||
returning.
|
||||
|
||||
Instead, every constructor has to have a different name, starting with "new".
|
||||
That way multiple constructors with different arguments are possible, while it
|
||||
is very easy to see which constructor is being used. And the type of
|
||||
arguments can be properly checked.
|
||||
|
||||
|
||||
No overloading of methods ~
|
||||
|
||||
Same reasoning as for the constructor: It is often not obvious what type
|
||||
arguments have, which would make it difficult to figure out what method is
|
||||
actually being called. Better just give the methods a different name, then
|
||||
type checking will make sure it works as you intended. This rules out
|
||||
polymorphism, which we don't really need anyway.
|
||||
|
||||
|
||||
Using "this.member" everywhere ~
|
||||
|
||||
The object members in various programming languages can often be accessed in
|
||||
different ways, depending on the location. Sometimes "this." has to be
|
||||
prepended to avoid ambiguity. They are usually declared without "this.".
|
||||
That is quite inconsistent and sometimes confusing.
|
||||
|
||||
A very common issue is that in the constructor the arguments use the same name
|
||||
as the object member. Then for these members "this." needs to be prefixed in
|
||||
the body, while for other members this is not needed and often omitted. This
|
||||
leads to a mix of members with and without "this.", which is inconsistent.
|
||||
|
||||
For |Vim9| classes the "this." prefix is always used. Also for declaring the
|
||||
members. Simple and consistent. When looking at the code inside a class it's
|
||||
also directly clear which variable references are object members and which
|
||||
aren't.
|
||||
|
||||
|
||||
Single inheritance and interfaces ~
|
||||
|
||||
Some languages support multiple inheritance. Although that can be useful in
|
||||
some cases, it makes the rules of how a class works quite complicated.
|
||||
Instead, using interfaces to declare what is supported is much simpler. The
|
||||
very popular Java language does it this way, and it should be good enough for
|
||||
Vim. The "keep it simple" rule applies here.
|
||||
|
||||
Explicitly declaring that a class supports an interface makes it easy to see
|
||||
what a class is intended for. It also makes it possible to do proper type
|
||||
checking. When an interface is changed any class that declares to implement
|
||||
it will be checked if that change was also changed. The mechanism to assume a
|
||||
class implements an interface just because the methods happen to match is
|
||||
brittle and leads to obscure problems, let's not do that.
|
||||
|
||||
|
||||
Using class members ~
|
||||
|
||||
Using "static member" to declare a class member is very common, nothing new
|
||||
here. In |Vim9| script these can be accessed directly by their name. Very
|
||||
much like how a script-local variable can be used in a function. Since object
|
||||
members are always accessed with "this." prepended, it's also quickly clear
|
||||
what kind of member it is.
|
||||
|
||||
TypeScript prepends the class name before the class member, also inside the
|
||||
class. This has two problems: The class name can be rather long, taking up
|
||||
quite a bit of space, and when the class is renamed all these places need to
|
||||
be changed too.
|
||||
|
||||
|
||||
Using "ClassName.new()" to construct an object ~
|
||||
|
||||
Many languages use the "new" operator to create an object, which is actually
|
||||
kind of strange, since the constructor is defined as a method with arguments,
|
||||
not a command. TypeScript also has the "new" keyword, but the method is
|
||||
called "constructor()", it is hard to see the relation between the two.
|
||||
|
||||
In |Vim9| script the constructor method is called new(), and it is invoked as
|
||||
new(), simple and straightforward. Other languages use "new ClassName()",
|
||||
while there is no ClassName() method, it's a method by another name in the
|
||||
class called ClassName. Quite confusing.
|
||||
|
||||
|
||||
Default read access to object members ~
|
||||
|
||||
Some users will remark that the access rules for object members are
|
||||
asymmetric. Well, that is intentional. Changing a value is a very different
|
||||
action than reading a value. The read operation has no side effects, it can
|
||||
be done any number of times without affecting the object. Changing the value
|
||||
can have many side effects, and even have a ripple effect, affecting other
|
||||
objects.
|
||||
|
||||
When adding object members one usually doesn't think much about this, just get
|
||||
the type right. And normally the values are set in the new() method.
|
||||
Therefore defaulting to read access only "just works" in most cases. And when
|
||||
directly writing you get an error, which makes you wonder if you actually want
|
||||
to allow that. This helps writing code with fewer mistakes.
|
||||
|
||||
|
||||
Making object membes private with an underscore ~
|
||||
|
||||
When an object member is private, it can only be read and changed inside the
|
||||
class (and in sub-classes), then it cannot be used outside of the class.
|
||||
Prepending an underscore is a simple way to make that visible. Various
|
||||
programming languages have this as a recommendation.
|
||||
|
||||
In case you change your mind and want to make the object member accessible
|
||||
outside of the class, you will have to remove the underscore everywhere.
|
||||
Since the name only appears in the class (and sub-classes) they will be easy
|
||||
to find and change.
|
||||
|
||||
The other way around is much harder: you can easily prepend an underscore to
|
||||
the object member inside the class to make it private, but any usage elsewhere
|
||||
you will have to track down and change. You may have to make it a "set"
|
||||
method call. This reflects the real world problem that taking away access
|
||||
requires work to be done for all places where that access exists.
|
||||
|
||||
An alternative would have been using the "private" keyword, just like "public"
|
||||
changes the access in the other direction. Well, that's just to reduce the
|
||||
number of keywords.
|
||||
|
||||
|
||||
No protected object members ~
|
||||
|
||||
Some languages provide several ways to control access to object members. The
|
||||
most known is "protected", and the meaning varies from language to language.
|
||||
Others are "shared", "private" and even "friend".
|
||||
|
||||
These rules make life more difficult. That can be justified in projects where
|
||||
many people work on the same, complex code where it is easy to make mistakes.
|
||||
Especially when refactoring or other changes to the class model.
|
||||
|
||||
The Vim scripts are expected to be used in a plugin, with just one person or a
|
||||
small team working on it. Complex rules then only make it more complicated,
|
||||
the extra safety provide by the rules isn't really needed. Let's just keep it
|
||||
simple and not specify access details.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
10. To be done later
|
||||
|
||||
Can a newSomething() constructor invoke another constructor? If yes, what are
|
||||
the restrictions?
|
||||
|
||||
Thoughts:
|
||||
- Generics for a class: `class <Tkey, Tentry>`
|
||||
- Generics for a function: `def <Tkey> GetLast(key: Tkey)`
|
||||
- Mixins: not sure if that is useful, leave out for simplicity.
|
||||
|
||||
Some things that look like good additions:
|
||||
- For testing: Mock mechanism
|
||||
|
||||
An important class to be provided is "Promise". Since Vim is single
|
||||
threaded, connecting asynchronous operations is a natural way of allowing
|
||||
plugins to do their work without blocking the user. It's a uniform way to
|
||||
invoke callbacks and handle timeouts and errors.
|
||||
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
@@ -116,7 +116,7 @@ gn Search forward for the last used search pattern, like
|
||||
E.g., "dgn" deletes the text of the next match.
|
||||
If Visual mode is active, extends the selection
|
||||
until the end of the next match.
|
||||
'wrapscan' applies
|
||||
'wrapscan' applies.
|
||||
Note: Unlike `n` the search direction does not depend
|
||||
on the previous search command.
|
||||
|
||||
@@ -510,11 +510,11 @@ mode Vim automatically switches to Visual mode, so that the same behavior as
|
||||
in Visual mode is effective. If you don't want this use |:xmap| or |:smap|.
|
||||
|
||||
One particular edge case: >
|
||||
:vnoremap <C-K> <Esc>
|
||||
:vnoremap <C-K> <Esc>
|
||||
This ends Visual mode when in Visual mode, but in Select mode it does not
|
||||
work, because Select mode is restored after executing the mapped keys. You
|
||||
need to use: >
|
||||
:snoremap <C-K> <Esc>
|
||||
:snoremap <C-K> <Esc>
|
||||
<
|
||||
Users will expect printable characters to replace the selected area.
|
||||
Therefore avoid mapping printable characters in Select mode. Or use
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 9.0. Last change: 2022 May 11
|
||||
*windows.txt* For Vim version 9.0. Last change: 2022 Nov 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -561,9 +561,9 @@ CTRL-W = Make all windows (almost) equally high and wide, but use
|
||||
Windows with 'winfixheight' set keep their height and windows
|
||||
with 'winfixwidth' set keep their width.
|
||||
To equalize only vertically (make window equally high) use
|
||||
`vertical wincmd =`
|
||||
`vertical wincmd =`.
|
||||
To equalize only horizontally (make window equally wide) use
|
||||
`horizontal wincmd =`
|
||||
`horizontal wincmd =`.
|
||||
|
||||
:res[ize] -N *:res* *:resize* *CTRL-W_-*
|
||||
CTRL-W - Decrease current window height by N (default 1).
|
||||
@@ -631,6 +631,54 @@ it).
|
||||
The minimal height and width of a window is set with 'winminheight' and
|
||||
'winminwidth'. These are hard values, a window will never become smaller.
|
||||
|
||||
|
||||
WinScrolled and WinResized autocommands ~
|
||||
*win-scrolled-resized*
|
||||
If you want to get notified of changes in window sizes, the |WinResized|
|
||||
autocommand event can be used.
|
||||
If you want to get notified of text in windows scrolling vertically or
|
||||
horizontally, the |WinScrolled| autocommand event can be used. This will also
|
||||
trigger in window size changes.
|
||||
*WinResized-event*
|
||||
The |WinResized| event is triggered after updating the display, several
|
||||
windows may have changed size then. A list of the IDs of windows that changed
|
||||
since last time is provided in the v:event.windows variable, for example:
|
||||
[1003, 1006]
|
||||
*WinScrolled-event*
|
||||
The |WinScrolled| event is triggered after |WinResized|, and also if a window
|
||||
was scrolled. That can be vertically (the text at the top of the window
|
||||
changed) or horizontally (when 'wrap' is off or when the first displayed part
|
||||
of the first line changes). Note that |WinScrolled| will trigger many more
|
||||
times than |WinResized|, it may slow down editing a bit.
|
||||
|
||||
The information provided by |WinScrolled| is a dictionary for each window that
|
||||
has changes, using the window ID as the key, and a total count of the changes
|
||||
with the key "all". Example value for |v:event| (|Vim9| syntax):
|
||||
{
|
||||
all: {width: 0, height: 2, leftcol: 0, topline: 1, skipcol: 0},
|
||||
1003: {width: 0, height: -1, leftcol: 0, topline: 0, skipcol: 0},
|
||||
1006: {width: 0, height: 1, leftcol: 0, topline: 1, skipcol: 0},
|
||||
}
|
||||
|
||||
Note that the "all" entry has the absolute values of the individual windows
|
||||
accumulated.
|
||||
|
||||
If you need more information about what changed, or you want to "debounce" the
|
||||
events (not handle every event to avoid doing too much work), you may want to
|
||||
use the `winlayout()` and `getwininfo()` functions.
|
||||
|
||||
|WinScrolled| and |WinResized| do not trigger when the first autocommand is
|
||||
added, only after the first scroll or resize. They may trigger when switching
|
||||
to another tab page.
|
||||
|
||||
The commands executed are expected to not cause window size or scroll changes.
|
||||
If this happens anyway, the event will trigger again very soon. In other
|
||||
words: Just before triggering the event, the current sizes and scroll
|
||||
positions are stored and used to decide whether there was a change.
|
||||
*E1312*
|
||||
It is not allowed to change the window layout here (split, close or move
|
||||
windows).
|
||||
|
||||
==============================================================================
|
||||
7. Argument and buffer list commands *buffer-list*
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2022 Sep 27
|
||||
" Last Change: 2022 Nov 23
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -369,6 +369,12 @@ au BufNewFile,BufRead *.ch call dist#ft#FTchange()
|
||||
" ChordPro
|
||||
au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro
|
||||
|
||||
" Clang-format
|
||||
au BufNewFile,BufRead .clang-format setf yaml
|
||||
|
||||
" Clang-tidy
|
||||
au BufNewFile,BufRead .clang-tidy setf yaml
|
||||
|
||||
" Clean
|
||||
au BufNewFile,BufRead *.dcl,*.icl setf clean
|
||||
|
||||
@@ -413,6 +419,12 @@ au BufNewFile,BufRead configure.in,configure.ac setf config
|
||||
" Cooklang
|
||||
au BufNewFile,BufRead *.cook setf cook
|
||||
|
||||
" Clinical Quality Language (CQL)
|
||||
" .cql is also mentioned as the 'XDCC Catcher queue list' file extension.
|
||||
" If support for XDCC Catcher is needed in the future, the contents of the file
|
||||
" needs to be inspected.
|
||||
au BufNewFile,BufRead *.cql setf cqlang
|
||||
|
||||
" CSV Files
|
||||
au BufNewFile,BufRead *.csv setf csv
|
||||
|
||||
@@ -969,6 +981,8 @@ au BufNewFile,BufRead *.jsp setf jsp
|
||||
|
||||
" Java Properties resource file (note: doesn't catch font.properties.pl)
|
||||
au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties
|
||||
" Eclipse preference files use Java Properties syntax
|
||||
au BufNewFile,BufRead org.eclipse.*.prefs setf jproperties
|
||||
|
||||
" Jess
|
||||
au BufNewFile,BufRead *.clp setf jess
|
||||
@@ -998,7 +1012,7 @@ au BufNewFile,BufRead .babelrc,.eslintrc,.prettierrc,.firebaserc setf json
|
||||
au BufNewFile,BufRead *.jsonc setf jsonc
|
||||
|
||||
" Jsonnet
|
||||
au BufNewFile,BufRead *.jsonnet,*.libjsonnet setf jsonnet
|
||||
au BufNewFile,BufRead *.jsonnet,*.libsonnet setf jsonnet
|
||||
|
||||
" Julia
|
||||
au BufNewFile,BufRead *.jl setf julia
|
||||
@@ -1029,6 +1043,9 @@ au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig
|
||||
" Lace (ISE)
|
||||
au BufNewFile,BufRead *.ace,*.ACE setf lace
|
||||
|
||||
" Larch Shared Language
|
||||
au BufNewFile,BufRead .lsl call dist#ft#FTlsl()
|
||||
|
||||
" Latexmkrc
|
||||
au BufNewFile,BufRead .latexmkrc,latexmkrc setf perl
|
||||
|
||||
@@ -1119,7 +1136,7 @@ au BufNewFile,BufRead .luacheckrc setf lua
|
||||
au BufNewFile,BufRead *.rockspec setf lua
|
||||
|
||||
" Linden Scripting Language (Second Life)
|
||||
au BufNewFile,BufRead *.lsl setf lsl
|
||||
au BufNewFile,BufRead *.lsl call dist#ft#FTlsl()
|
||||
|
||||
" Lynx style file (or LotusScript!)
|
||||
au BufNewFile,BufRead *.lss setf lss
|
||||
@@ -1182,6 +1199,9 @@ au BufNewFile,BufRead hg-editor-*.txt setf hgcommit
|
||||
" Mercurial config (looks like generic config file)
|
||||
au BufNewFile,BufRead *.hgrc,*hgrc setf cfg
|
||||
|
||||
" Mermaid
|
||||
au BufNewFile,BufRead *.mmd,*.mmdc,*.mermaid setf mermaid
|
||||
|
||||
" Meson Build system config
|
||||
au BufNewFile,BufRead meson.build,meson_options.txt setf meson
|
||||
au BufNewFile,BufRead *.wrap setf dosini
|
||||
@@ -1217,6 +1237,9 @@ au BufNewFile,BufRead *.m2,*.DEF,*.mi setf modula2
|
||||
" Modula-3 (.m3, .i3, .mg, .ig)
|
||||
au BufNewFile,BufRead *.[mi][3g] setf modula3
|
||||
|
||||
" Larch/Modula-3
|
||||
au BufNewFile,BufRead *.lm3 setf modula3
|
||||
|
||||
" Monk
|
||||
au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk
|
||||
|
||||
@@ -1322,6 +1345,9 @@ au BufNewFile,BufRead *.nse setf lua
|
||||
" NSIS
|
||||
au BufNewFile,BufRead *.nsi,*.nsh setf nsis
|
||||
|
||||
" Oblivion Language and Oblivion Script Extender
|
||||
au BufNewFile,BufRead *.obl,*.obse,*.oblivion,*.obscript setf obse
|
||||
|
||||
" OCaml
|
||||
au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit,*.mlt,*.mlp,*.mlip,*.mli.cppo,*.ml.cppo setf ocaml
|
||||
|
||||
@@ -1360,6 +1386,7 @@ au BufNewFile,BufRead pf.conf setf pf
|
||||
|
||||
" ini style config files, using # comments
|
||||
au BufNewFile,BufRead */etc/pacman.conf,mpv.conf setf confini
|
||||
au BufNewFile,BufRead */.aws/config,*/.aws/credentials setf confini
|
||||
|
||||
" Pacman hooks
|
||||
au BufNewFile,BufRead *.hook
|
||||
@@ -1391,6 +1418,9 @@ au BufNewFile,BufRead *.dpr,*.lpr setf pascal
|
||||
" Free Pascal makefile definition file
|
||||
au BufNewFile,BufRead *.fpc setf fpcmake
|
||||
|
||||
" Path of Exile item filter
|
||||
au BufNewFile,BufRead *.filter setf poefilter
|
||||
|
||||
" PDF
|
||||
au BufNewFile,BufRead *.pdf setf pdf
|
||||
|
||||
@@ -1622,6 +1652,9 @@ else
|
||||
au BufNewFile,BufRead *.rmd,*.smd setf rmd
|
||||
endif
|
||||
|
||||
" R profile file
|
||||
au BufNewFile,BufRead .Rprofile,Rprofile,Rprofile.site setf r
|
||||
|
||||
" RSS looks like XML
|
||||
au BufNewFile,BufRead *.rss setf xml
|
||||
|
||||
@@ -1747,6 +1780,9 @@ au BufNewFile,BufRead *.sed setf sed
|
||||
" SubRip
|
||||
au BufNewFile,BufRead *.srt setf srt
|
||||
|
||||
" SubStation Alpha
|
||||
au BufNewFile,BufRead *.ass,*.ssa setf ssa
|
||||
|
||||
" svelte
|
||||
au BufNewFile,BufRead *.svelte setf svelte
|
||||
|
||||
@@ -1942,6 +1978,10 @@ au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig
|
||||
au BufNewFile,BufRead sshd_config setf sshdconfig
|
||||
au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf setf sshdconfig
|
||||
|
||||
" OpenVPN configuration
|
||||
au BufNewFile,BufRead *.ovpn setf openvpn
|
||||
au BufNewFile,BufRead */openvpn/*/*.conf setf openvpn
|
||||
|
||||
" Stata
|
||||
au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata
|
||||
" Also *.class, but not when it's a Java bytecode file
|
||||
@@ -2155,6 +2195,11 @@ au BufNewFile,BufRead *.va,*.vams setf verilogams
|
||||
" SystemVerilog
|
||||
au BufNewFile,BufRead *.sv,*.svh setf systemverilog
|
||||
|
||||
" VHS tape
|
||||
" .tape is also used by TapeCalc, which we do not support ATM. If TapeCalc
|
||||
" support is needed the contents of the file needs to be inspected.
|
||||
au BufNewFile,BufRead *.tape setf vhs
|
||||
|
||||
" VHDL
|
||||
au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho setf vhdl
|
||||
|
||||
@@ -2306,6 +2351,9 @@ au BufNewFile,BufRead fglrxrc setf xml
|
||||
" Web Services Description Language (WSDL)
|
||||
au BufNewFile,BufRead *.wsdl setf xml
|
||||
|
||||
" Workflow Description Language (WDL)
|
||||
au BufNewFile,BufRead *.wdl setf wdl
|
||||
|
||||
" XLIFF (XML Localisation Interchange File Format) is also XML
|
||||
au BufNewFile,BufRead *.xlf setf xml
|
||||
au BufNewFile,BufRead *.xliff setf xml
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Abaqus finite element input file (www.abaqus.com)
|
||||
" Maintainer: Carl Osterwisch <costerwi@gmail.com>
|
||||
" Last Change: 2022 Aug 03
|
||||
" Last Change: 2022 Oct 08
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
@@ -66,25 +66,44 @@ if exists("loaded_matchit") && !exists("b:match_words")
|
||||
endif
|
||||
|
||||
if !exists("no_plugin_maps") && !exists("no_abaqus_maps")
|
||||
" Define keys used to move [count] keywords backward or forward.
|
||||
noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR>
|
||||
noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR>
|
||||
" Map [[ and ]] keys to move [count] keywords backward or forward
|
||||
nnoremap <silent><buffer> ]] :call <SID>Abaqus_NextKeyword(1)<CR>
|
||||
nnoremap <silent><buffer> [[ :call <SID>Abaqus_NextKeyword(-1)<CR>
|
||||
function! <SID>Abaqus_NextKeyword(direction)
|
||||
.mark '
|
||||
if a:direction < 0
|
||||
let flags = 'b'
|
||||
else
|
||||
let flags = ''
|
||||
endif
|
||||
let l:count = abs(a:direction) * v:count1
|
||||
while l:count > 0 && search("^\\*\\a", flags)
|
||||
let l:count -= 1
|
||||
endwhile
|
||||
endfunction
|
||||
|
||||
" Define key to toggle commenting of the current line or range
|
||||
" Map \\ to toggle commenting of the current line or range
|
||||
noremap <silent><buffer> <LocalLeader><LocalLeader>
|
||||
\ :call <SID>Abaqus_ToggleComment()<CR>j
|
||||
function! <SID>Abaqus_ToggleComment() range
|
||||
if strpart(getline(a:firstline), 0, 2) == "**"
|
||||
" Un-comment all lines in range
|
||||
silent execute a:firstline . ',' . a:lastline . 's/^\*\*//'
|
||||
else
|
||||
" Comment all lines in range
|
||||
silent execute a:firstline . ',' . a:lastline . 's/^/**/'
|
||||
endif
|
||||
if strpart(getline(a:firstline), 0, 2) == "**"
|
||||
" Un-comment all lines in range
|
||||
silent execute a:firstline . ',' . a:lastline . 's/^\*\*//'
|
||||
else
|
||||
" Comment all lines in range
|
||||
silent execute a:firstline . ',' . a:lastline . 's/^/**/'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Map \s to swap first two comma separated fields
|
||||
noremap <silent><buffer> <LocalLeader>s :call <SID>Abaqus_Swap()<CR>
|
||||
function! <SID>Abaqus_Swap() range
|
||||
silent execute a:firstline . ',' . a:lastline . 's/\([^*,]*\),\([^,]*\)/\2,\1/'
|
||||
endfunction
|
||||
|
||||
let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
|
||||
\ . "|unmap <buffer> <LocalLeader><LocalLeader>"
|
||||
\ . "|unmap <buffer> <LocalLeader>s"
|
||||
endif
|
||||
|
||||
" Undo must be done in nocompatible mode for <LocalLeader>.
|
||||
|
||||
16
runtime/ftplugin/apache.vim
Normal file
16
runtime/ftplugin/apache.vim
Normal file
@@ -0,0 +1,16 @@
|
||||
" Vim filetype plugin
|
||||
" Language: apache configuration file
|
||||
" Maintainer: Per Juchtmans <dubgeiser+vimNOSPAM@gmail.com>
|
||||
" Last Change: 2022 Oct 22
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = "setlocal comments< commentstring<"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
@@ -5,7 +5,7 @@
|
||||
" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
||||
" Eduardo Lopez (http://github.com/tapichu)
|
||||
" Arvid Bjurklint (http://github.com/slarwise)
|
||||
" Last Update: 2021-Jan-08
|
||||
" Last Update: 2021-Nov-22
|
||||
" License: Vim license
|
||||
" URL: https://github.com/vim-erlang/vim-erlang-runtime
|
||||
|
||||
@@ -30,6 +30,28 @@ setlocal commentstring=%%s
|
||||
|
||||
setlocal formatoptions+=ro
|
||||
|
||||
if get(g:, 'erlang_extend_path', 1)
|
||||
" typical erlang.mk paths
|
||||
let &l:path = join([
|
||||
\ 'deps/*/include',
|
||||
\ 'deps/*/src',
|
||||
\ 'deps/*/test',
|
||||
\ 'deps/*/apps/*/include',
|
||||
\ 'deps/*/apps/*/src',
|
||||
\ &g:path], ',')
|
||||
" typical rebar3 paths
|
||||
let &l:path = join([
|
||||
\ 'apps/*/include',
|
||||
\ 'apps/*/src',
|
||||
\ '_build/default/lib/*/src',
|
||||
\ '_build/default/*/include',
|
||||
\ &l:path], ',')
|
||||
" typical erlang paths
|
||||
let &l:path = join(['include', 'src', 'test', &l:path], ',')
|
||||
|
||||
set wildignore+=*/.erlang.mk/*,*.beam
|
||||
endif
|
||||
|
||||
setlocal suffixesadd=.erl,.hrl
|
||||
|
||||
let &l:include = '^\s*-\%(include\|include_lib\)\s*("\zs\f*\ze")'
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Max Ischenko <mfi@ukr.net>
|
||||
" Contributor: Dorai Sitaram <ds26@gte.com>
|
||||
" Last Change: 2022 Sep 05
|
||||
" C.D. MacEachern <craig.daniel.maceachern@gmail.com>
|
||||
" Last Change: 2022 Nov 19
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -19,9 +20,11 @@ setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &l:define = '\<function\|\<local\%(\s\+function\)\='
|
||||
|
||||
" TODO: handle init.lua
|
||||
setlocal includeexpr=tr(v:fname,'.','/')
|
||||
setlocal suffixesadd=.lua
|
||||
|
||||
let b:undo_ftplugin = "setlocal cms< com< def< fo< sua<"
|
||||
let b:undo_ftplugin = "setlocal cms< com< def< fo< inex< sua<"
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_ignorecase = 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Jason Franklin <vim@justemail.net>
|
||||
" Maintainer: SungHyun Nam <goweol@gmail.com>
|
||||
" Autoload Split: Bram Moolenaar
|
||||
" Last Change: 2022 Jun 18
|
||||
" Last Change: 2022 Sep 30
|
||||
|
||||
" To make the ":Man" command available before editing a manual page, source
|
||||
" this script from your startup vimrc file.
|
||||
@@ -23,8 +23,9 @@ let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
if &filetype == "man"
|
||||
" allow dot and dash in manual page name.
|
||||
setlocal iskeyword+=\.,-
|
||||
" Allow hyphen, plus, colon, dot, and commercial at in manual page name.
|
||||
" Allow parentheses for references.
|
||||
setlocal iskeyword=48-57,_,a-z,A-Z,-,+,:,.,@-@,(,)
|
||||
let b:undo_ftplugin = "setlocal iskeyword<"
|
||||
|
||||
" Add mappings, unless the user didn't want this.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Markdown
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Last Change: 2019 Dec 05
|
||||
" Language: Markdown
|
||||
" Maintainer: Tim Pope <https://github.com/tpope/vim-markdown>
|
||||
" Last Change: 2022 Oct 13
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -9,18 +9,33 @@ endif
|
||||
|
||||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=<!--%s-->
|
||||
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
|
||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:\\&^.\\{4\\}
|
||||
|
||||
if exists('b:undo_ftplugin')
|
||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
|
||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp< et< ts< sts< sw<"
|
||||
else
|
||||
let b:undo_ftplugin = "setl cms< com< fo< flp<"
|
||||
let b:undo_ftplugin = "setl cms< com< fo< flp< et< ts< sts< sw<"
|
||||
endif
|
||||
|
||||
if get(g:, 'markdown_recommended_style', 1)
|
||||
setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4
|
||||
endif
|
||||
|
||||
if !exists("g:no_plugin_maps") && !exists("g:no_markdown_maps")
|
||||
nnoremap <silent><buffer> [[ :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
|
||||
nnoremap <silent><buffer> ]] :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
|
||||
xnoremap <silent><buffer> [[ :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
|
||||
xnoremap <silent><buffer> ]] :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
|
||||
let b:undo_ftplugin .= '|sil! nunmap <buffer> [[|sil! nunmap <buffer> ]]|sil! xunmap <buffer> [[|sil! xunmap <buffer> ]]'
|
||||
endif
|
||||
|
||||
function! s:NotCodeBlock(lnum) abort
|
||||
return synIDattr(synID(v:lnum, 1, 1), 'name') !=# 'markdownCode'
|
||||
return synIDattr(synID(a:lnum, 1, 1), 'name') !=# 'markdownCode'
|
||||
endfunction
|
||||
|
||||
function! MarkdownFold() abort
|
||||
@@ -64,11 +79,14 @@ function! MarkdownFoldText() abort
|
||||
return hash_indent.' '.title.' '.linecount
|
||||
endfunction
|
||||
|
||||
if has("folding") && exists("g:markdown_folding")
|
||||
if has("folding") && get(g:, "markdown_folding", 0)
|
||||
setlocal foldexpr=MarkdownFold()
|
||||
setlocal foldmethod=expr
|
||||
setlocal foldtext=MarkdownFoldText()
|
||||
let b:undo_ftplugin .= " foldexpr< foldmethod< foldtext<"
|
||||
let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
|
||||
endif
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
|
||||
" vim:set sw=2:
|
||||
|
||||
49
runtime/ftplugin/mermaid.vim
Normal file
49
runtime/ftplugin/mermaid.vim
Normal file
@@ -0,0 +1,49 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Mermaid
|
||||
" Maintainer: Craig MacEachern <https://github.com/craigmac/vim-mermaid>
|
||||
" Last Change: 2022 Oct 13
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Use mermaid live editor's style
|
||||
setlocal expandtab
|
||||
setlocal shiftwidth=2
|
||||
setlocal softtabstop=-1
|
||||
setlocal tabstop=4
|
||||
|
||||
" TODO: comments, formatlist stuff, based on what?
|
||||
setlocal comments=b:#,fb:-
|
||||
setlocal commentstring=#\ %s
|
||||
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:\\&^.\\{4\\}
|
||||
|
||||
if exists('b:undo_ftplugin')
|
||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp< et< ts< sts< sw<"
|
||||
else
|
||||
let b:undo_ftplugin = "setl cms< com< fo< flp< et< ts< sts< sw<"
|
||||
endif
|
||||
|
||||
if !exists("g:no_plugin_maps") && !exists("g:no_markdown_maps")
|
||||
nnoremap <silent><buffer> [[ :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
|
||||
nnoremap <silent><buffer> ]] :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
|
||||
xnoremap <silent><buffer> [[ :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
|
||||
xnoremap <silent><buffer> ]] :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
|
||||
let b:undo_ftplugin .= '|sil! nunmap <buffer> [[|sil! nunmap <buffer> ]]|sil! xunmap <buffer> [[|sil! xunmap <buffer> ]]'
|
||||
endif
|
||||
|
||||
" if has("folding") && get(g:, "markdown_folding", 0)
|
||||
" setlocal foldexpr=MarkdownFold()
|
||||
" setlocal foldmethod=expr
|
||||
" setlocal foldtext=MarkdownFoldText()
|
||||
" let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
|
||||
" endif
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
|
||||
" vim:set sw=2:
|
||||
70
runtime/ftplugin/obse.vim
Normal file
70
runtime/ftplugin/obse.vim
Normal file
@@ -0,0 +1,70 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Oblivion Language (obl)
|
||||
" Original Creator: Kat <katisntgood@gmail.com>
|
||||
" Maintainer: Kat <katisntgood@gmail.com>
|
||||
" Created: August 08, 2021
|
||||
" Last Change: 13 November 2022
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms<"
|
||||
|
||||
noremap <script> <buffer> <silent> [[ <nop>
|
||||
noremap <script> <buffer> <silent> ]] <nop>
|
||||
|
||||
noremap <script> <buffer> <silent> [] <nop>
|
||||
noremap <script> <buffer> <silent> ][ <nop>
|
||||
|
||||
setlocal commentstring=;%s
|
||||
setlocal comments=:;
|
||||
|
||||
function s:NextSection(type, backwards, visual)
|
||||
if a:visual
|
||||
normal! gv
|
||||
endif
|
||||
|
||||
if a:type == 1
|
||||
let pattern = '\v(\n\n^\S|%^)'
|
||||
let flags = 'e'
|
||||
elseif a:type == 2
|
||||
let pattern = '\v^\S.*'
|
||||
let flags = ''
|
||||
endif
|
||||
|
||||
if a:backwards
|
||||
let dir = '?'
|
||||
else
|
||||
let dir = '/'
|
||||
endif
|
||||
|
||||
execute 'silent normal! ' . dir . pattern . dir . flags . "\r"
|
||||
endfunction
|
||||
|
||||
noremap <script> <buffer> <silent> ]]
|
||||
\ :call <SID>NextSection(1, 0, 0)<cr>
|
||||
|
||||
noremap <script> <buffer> <silent> [[
|
||||
\ :call <SID>NextSection(1, 1, 0)<cr>
|
||||
|
||||
noremap <script> <buffer> <silent> ][
|
||||
\ :call <SID>NextSection(2, 0, 0)<cr>
|
||||
|
||||
noremap <script> <buffer> <silent> []
|
||||
\ :call <SID>NextSection(2, 1, 0)<cr>
|
||||
|
||||
vnoremap <script> <buffer> <silent> ]]
|
||||
\ :<c-u>call <SID>NextSection(1, 0, 1)<cr>
|
||||
vnoremap <script> <buffer> <silent> [[
|
||||
\ :<c-u>call <SID>NextSection(1, 1, 1)<cr>
|
||||
vnoremap <script> <buffer> <silent> ][
|
||||
\ :<c-u>call <SID>NextSection(2, 0, 1)<cr>
|
||||
vnoremap <script> <buffer> <silent> []
|
||||
\ :<c-u>call <SID>NextSection(2, 1, 1)<cr>
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
14
runtime/ftplugin/openvpn.vim
Normal file
14
runtime/ftplugin/openvpn.vim
Normal file
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin
|
||||
" Language: OpenVPN
|
||||
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
|
||||
" Last Change: 2022 Oct 16
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal iskeyword+=-,.,/
|
||||
setlocal comments=:#,:; commentstring=#%s
|
||||
|
||||
let b:undo_ftplugin = 'setl isk< com< cms<'
|
||||
13
runtime/ftplugin/poefilter.vim
Normal file
13
runtime/ftplugin/poefilter.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" Vim filetype plugin
|
||||
" Language: PoE item filter
|
||||
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
|
||||
" Last Change: 2022 Oct 07
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:# commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms<'
|
||||
13
runtime/ftplugin/ssa.vim
Normal file
13
runtime/ftplugin/ssa.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" Vim filetype plugin
|
||||
" Language: SubStation Alpha
|
||||
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
|
||||
" Last Change: 2022 Oct 10
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:;,:!: commentstring=;\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms<'
|
||||
@@ -4,7 +4,7 @@
|
||||
" Contributors: Edwin Fine <efine145_nospam01 at usa dot net>
|
||||
" Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
||||
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
||||
" Last Update: 2020-Jun-11
|
||||
" Last Update: 2022-Sep-06
|
||||
" License: Vim license
|
||||
" URL: https://github.com/vim-erlang/vim-erlang-runtime
|
||||
|
||||
@@ -30,7 +30,9 @@ else
|
||||
endif
|
||||
|
||||
setlocal indentexpr=ErlangIndent()
|
||||
setlocal indentkeys+=0=end,0=of,0=catch,0=after,0=when,0=),0=],0=},0=>>
|
||||
setlocal indentkeys+=0=end,0=of,0=catch,0=after,0=else,0=when,0=),0=],0=},0=>>
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
" Only define the functions once
|
||||
if exists("*ErlangIndent")
|
||||
@@ -235,8 +237,8 @@ function! s:GetTokensFromLine(line, string_continuation, atom_continuation,
|
||||
|
||||
" Two-character tokens
|
||||
elseif i + 1 < linelen &&
|
||||
\ index(['->', '<<', '>>', '||', '==', '/=', '=<', '>=', '++', '--',
|
||||
\ '::'],
|
||||
\ index(['->', '<<', '>>', '||', '==', '/=', '=<', '>=', '?=', '++',
|
||||
\ '--', '::'],
|
||||
\ a:line[i : i + 1]) != -1
|
||||
call add(indtokens, [a:line[i : i + 1], vcol, i])
|
||||
let next_i = i + 2
|
||||
@@ -558,8 +560,8 @@ function! s:IsCatchStandalone(lnum, i)
|
||||
let is_standalone = 0
|
||||
elseif prev_token =~# '[a-z]'
|
||||
if index(['after', 'and', 'andalso', 'band', 'begin', 'bnot', 'bor', 'bsl',
|
||||
\ 'bsr', 'bxor', 'case', 'catch', 'div', 'not', 'or', 'orelse',
|
||||
\ 'rem', 'try', 'xor'], prev_token) != -1
|
||||
\ 'bsr', 'bxor', 'case', 'catch', 'div', 'maybe', 'not', 'or',
|
||||
\ 'orelse', 'rem', 'try', 'xor'], prev_token) != -1
|
||||
" If catch is after these keywords, it is standalone
|
||||
let is_standalone = 1
|
||||
else
|
||||
@@ -568,7 +570,7 @@ function! s:IsCatchStandalone(lnum, i)
|
||||
"
|
||||
" Keywords:
|
||||
" - may precede 'catch': end
|
||||
" - may not precede 'catch': fun if of receive when
|
||||
" - may not precede 'catch': else fun if of receive when
|
||||
" - unused: cond let query
|
||||
let is_standalone = 0
|
||||
endif
|
||||
@@ -577,7 +579,7 @@ function! s:IsCatchStandalone(lnum, i)
|
||||
let is_standalone = 0
|
||||
else
|
||||
" This 'else' branch includes the following tokens:
|
||||
" -> == /= =< < >= > =:= =/= + - * / ++ -- :: < > ; ( [ { ? = ! . |
|
||||
" -> == /= =< < >= > ?= =:= =/= + - * / ++ -- :: < > ; ( [ { ? = ! . |
|
||||
let is_standalone = 1
|
||||
endif
|
||||
|
||||
@@ -590,6 +592,7 @@ endfunction
|
||||
" Purpose:
|
||||
" This function is called when a begin-type element ('begin', 'case',
|
||||
" '[', '<<', etc.) is found. It asks the caller to return if the stack
|
||||
" if already empty.
|
||||
" Parameters:
|
||||
" stack: [token]
|
||||
" token: string
|
||||
@@ -758,7 +761,7 @@ endfunction
|
||||
function! s:SearchEndPair(lnum, curr_col)
|
||||
return s:SearchPair(
|
||||
\ a:lnum, a:curr_col,
|
||||
\ '\C\<\%(case\|try\|begin\|receive\|if\)\>\|' .
|
||||
\ '\C\<\%(case\|try\|begin\|receive\|if\|maybe\)\>\|' .
|
||||
\ '\<fun\>\%(\s\|\n\|%.*$\|[A-Z_@][a-zA-Z_@]*\)*(',
|
||||
\ '',
|
||||
\ '\<end\>')
|
||||
@@ -847,6 +850,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
if ret | return res | endif
|
||||
|
||||
" case EXPR of BRANCHES end
|
||||
" if BRANCHES end
|
||||
" try EXPR catch BRANCHES end
|
||||
" try EXPR after BODY end
|
||||
" try EXPR catch BRANCHES after BODY end
|
||||
@@ -855,15 +859,17 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" try EXPR of BRANCHES catch BRANCHES after BODY end
|
||||
" receive BRANCHES end
|
||||
" receive BRANCHES after BRANCHES end
|
||||
" maybe EXPR end
|
||||
" maybe EXPR else BRANCHES end
|
||||
|
||||
" This branch is not Emacs-compatible
|
||||
elseif (index(['of', 'receive', 'after', 'if'], token) != -1 ||
|
||||
elseif (index(['of', 'receive', 'after', 'if', 'else'], token) != -1 ||
|
||||
\ (token ==# 'catch' && !s:IsCatchStandalone(lnum, i))) &&
|
||||
\ !last_token_of_line &&
|
||||
\ (empty(stack) || stack ==# ['when'] || stack ==# ['->'] ||
|
||||
\ stack ==# ['->', ';'])
|
||||
|
||||
" If we are after of/receive, but these are not the last
|
||||
" If we are after of/receive/etc, but these are not the last
|
||||
" tokens of the line, we want to indent like this:
|
||||
"
|
||||
" % stack == []
|
||||
@@ -889,21 +895,21 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" stack = ['when'] => LTI is a guard
|
||||
if empty(stack) || stack == ['->', ';']
|
||||
call s:Log(' LTI is in a condition after ' .
|
||||
\'"of/receive/after/if/catch" -> return')
|
||||
\'"of/receive/after/if/else/catch" -> return')
|
||||
return stored_vcol
|
||||
elseif stack == ['->']
|
||||
call s:Log(' LTI is in a branch after ' .
|
||||
\'"of/receive/after/if/catch" -> return')
|
||||
\'"of/receive/after/if/else/catch" -> return')
|
||||
return stored_vcol + shiftwidth()
|
||||
elseif stack == ['when']
|
||||
call s:Log(' LTI is in a guard after ' .
|
||||
\'"of/receive/after/if/catch" -> return')
|
||||
\'"of/receive/after/if/else/catch" -> return')
|
||||
return stored_vcol + shiftwidth()
|
||||
else
|
||||
return s:UnexpectedToken(token, stack)
|
||||
endif
|
||||
|
||||
elseif index(['case', 'if', 'try', 'receive'], token) != -1
|
||||
elseif index(['case', 'if', 'try', 'receive', 'maybe'], token) != -1
|
||||
|
||||
" stack = [] => LTI is a condition
|
||||
" stack = ['->'] => LTI is a branch
|
||||
@@ -913,45 +919,47 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" pass
|
||||
elseif (token ==# 'case' && stack[0] ==# 'of') ||
|
||||
\ (token ==# 'if') ||
|
||||
\ (token ==# 'maybe' && stack[0] ==# 'else') ||
|
||||
\ (token ==# 'try' && (stack[0] ==# 'of' ||
|
||||
\ stack[0] ==# 'catch' ||
|
||||
\ stack[0] ==# 'after')) ||
|
||||
\ (token ==# 'receive')
|
||||
|
||||
" From the indentation point of view, the keyword
|
||||
" (of/catch/after/end) before the LTI is what counts, so
|
||||
" (of/catch/after/else/end) before the LTI is what counts, so
|
||||
" when we reached these tokens, and the stack already had
|
||||
" a catch/after/end, we didn't modify it.
|
||||
" a catch/after/else/end, we didn't modify it.
|
||||
"
|
||||
" This way when we reach case/try/receive (i.e. now),
|
||||
" there is at most one of/catch/after/end token in the
|
||||
" This way when we reach case/try/receive/maybe (i.e. now),
|
||||
" there is at most one of/catch/after/else/end token in the
|
||||
" stack.
|
||||
if token ==# 'case' || token ==# 'try' ||
|
||||
\ (token ==# 'receive' && stack[0] ==# 'after')
|
||||
\ (token ==# 'receive' && stack[0] ==# 'after') ||
|
||||
\ (token ==# 'maybe' && stack[0] ==# 'else')
|
||||
call s:Pop(stack)
|
||||
endif
|
||||
|
||||
if empty(stack)
|
||||
call s:Log(' LTI is in a condition; matching ' .
|
||||
\'"case/if/try/receive" found')
|
||||
\'"case/if/try/receive/maybe" found')
|
||||
let stored_vcol = curr_vcol + shiftwidth()
|
||||
elseif stack[0] ==# 'align_to_begin_element'
|
||||
call s:Pop(stack)
|
||||
let stored_vcol = curr_vcol
|
||||
elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';'
|
||||
call s:Log(' LTI is in a condition; matching ' .
|
||||
\'"case/if/try/receive" found')
|
||||
\'"case/if/try/receive/maybe" found')
|
||||
call s:Pop(stack)
|
||||
call s:Pop(stack)
|
||||
let stored_vcol = curr_vcol + shiftwidth()
|
||||
elseif stack[0] ==# '->'
|
||||
call s:Log(' LTI is in a branch; matching ' .
|
||||
\'"case/if/try/receive" found')
|
||||
\'"case/if/try/receive/maybe" found')
|
||||
call s:Pop(stack)
|
||||
let stored_vcol = curr_vcol + 2 * shiftwidth()
|
||||
elseif stack[0] ==# 'when'
|
||||
call s:Log(' LTI is in a guard; matching ' .
|
||||
\'"case/if/try/receive" found')
|
||||
\'"case/if/try/receive/maybe" found')
|
||||
call s:Pop(stack)
|
||||
let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
|
||||
endif
|
||||
@@ -1213,7 +1221,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
|
||||
if empty(stack)
|
||||
call s:Push(stack, ';')
|
||||
elseif index([';', '->', 'when', 'end', 'after', 'catch'],
|
||||
elseif index([';', '->', 'when', 'end', 'after', 'catch', 'else'],
|
||||
\stack[0]) != -1
|
||||
" Pass:
|
||||
"
|
||||
@@ -1223,10 +1231,10 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" should keep that, because they signify the type of the
|
||||
" LTI (branch, condition or guard).
|
||||
" - From the indentation point of view, the keyword
|
||||
" (of/catch/after/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/end, we don't
|
||||
" modify it. This way when we reach case/try/receive,
|
||||
" there will be at most one of/catch/after/end token in
|
||||
" (of/catch/after/else/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/else/end, we don't
|
||||
" modify it. This way when we reach case/try/receive/maybe,
|
||||
" there will be at most one of/catch/after/else/end token in
|
||||
" the stack.
|
||||
else
|
||||
return s:UnexpectedToken(token, stack)
|
||||
@@ -1242,7 +1250,8 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" stack = ['->'] -> LTI is a condition
|
||||
" stack = ['->', ';'] -> LTI is a branch
|
||||
call s:Push(stack, '->')
|
||||
elseif index(['->', 'when', 'end', 'after', 'catch'], stack[0]) != -1
|
||||
elseif index(['->', 'when', 'end', 'after', 'catch', 'else'],
|
||||
\stack[0]) != -1
|
||||
" Pass:
|
||||
"
|
||||
" - If the stack top is another '->', then one '->' is
|
||||
@@ -1250,10 +1259,10 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" - If the stack top is a 'when', then we should keep
|
||||
" that, because this signifies that LTI is a in a guard.
|
||||
" - From the indentation point of view, the keyword
|
||||
" (of/catch/after/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/end, we don't
|
||||
" modify it. This way when we reach case/try/receive,
|
||||
" there will be at most one of/catch/after/end token in
|
||||
" (of/catch/after/else/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/else/end, we don't
|
||||
" modify it. This way when we reach case/try/receive/maybe,
|
||||
" there will be at most one of/catch/after/else/end token in
|
||||
" the stack.
|
||||
else
|
||||
return s:UnexpectedToken(token, stack)
|
||||
@@ -1283,7 +1292,8 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" LTI
|
||||
call s:Push(stack, token)
|
||||
endif
|
||||
elseif index(['->', 'when', 'end', 'after', 'catch'], stack[0]) != -1
|
||||
elseif index(['->', 'when', 'end', 'after', 'catch', 'else'],
|
||||
\stack[0]) != -1
|
||||
" Pass:
|
||||
" - If the stack top is another 'when', then one 'when' is
|
||||
" enough.
|
||||
@@ -1291,21 +1301,63 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
" should keep that, because they signify the type of the
|
||||
" LTI (branch, condition or guard).
|
||||
" - From the indentation point of view, the keyword
|
||||
" (of/catch/after/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/end, we don't
|
||||
" modify it. This way when we reach case/try/receive,
|
||||
" there will be at most one of/catch/after/end token in
|
||||
" (of/catch/after/else/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/else/end, we don't
|
||||
" modify it. This way when we reach case/try/receive/maybe,
|
||||
" there will be at most one of/catch/after/else/end token in
|
||||
" the stack.
|
||||
else
|
||||
return s:UnexpectedToken(token, stack)
|
||||
endif
|
||||
|
||||
elseif token ==# 'of' || token ==# 'after' ||
|
||||
elseif token ==# 'of' || token ==# 'after' || token ==# 'else' ||
|
||||
\ (token ==# 'catch' && !s:IsCatchStandalone(lnum, i))
|
||||
|
||||
if token ==# 'after'
|
||||
" If LTI is between an 'after' and the corresponding
|
||||
" 'end', then let's return
|
||||
if token ==# 'after' || token ==# 'else'
|
||||
" If LTI is between an after/else and the corresponding 'end', then
|
||||
" let's return because calculating the indentation based on
|
||||
" after/else is enough.
|
||||
"
|
||||
" Example:
|
||||
" receive A after
|
||||
" LTI
|
||||
" maybe A else
|
||||
" LTI
|
||||
"
|
||||
" Note about Emacs compabitility {{{
|
||||
"
|
||||
" It would be fine to indent the examples above the following way:
|
||||
"
|
||||
" receive A after
|
||||
" LTI
|
||||
" maybe A else
|
||||
" LTI
|
||||
"
|
||||
" We intend it the way above because that is how Emacs does it.
|
||||
" Also, this is a bit faster.
|
||||
"
|
||||
" We are still not 100% Emacs compatible because of placing the
|
||||
" 'end' after the indented blocks.
|
||||
"
|
||||
" Emacs example:
|
||||
"
|
||||
" receive A after
|
||||
" LTI
|
||||
" end,
|
||||
" maybe A else
|
||||
" LTI
|
||||
" end % Yes, it's here (in OTP 25.0, might change
|
||||
" % later)
|
||||
"
|
||||
" vim-erlang example:
|
||||
"
|
||||
" receive A after
|
||||
" LTI
|
||||
" end,
|
||||
" maybe A else
|
||||
" LTI
|
||||
" end
|
||||
" }}}
|
||||
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
|
||||
\stored_vcol, shiftwidth())
|
||||
if ret | return res | endif
|
||||
@@ -1313,7 +1365,8 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
||||
|
||||
if empty(stack) || stack[0] ==# '->' || stack[0] ==# 'when'
|
||||
call s:Push(stack, token)
|
||||
elseif stack[0] ==# 'catch' || stack[0] ==# 'after' || stack[0] ==# 'end'
|
||||
elseif stack[0] ==# 'catch' || stack[0] ==# 'after' ||
|
||||
\stack[0] ==# 'else' || stack[0] ==# 'end'
|
||||
" Pass: From the indentation point of view, the keyword
|
||||
" (of/catch/after/end) before the LTI is what counts, so
|
||||
" if the stack already has a catch/after/end, we don't
|
||||
@@ -1403,7 +1456,7 @@ function! ErlangIndent()
|
||||
endif
|
||||
|
||||
let ml = matchlist(currline,
|
||||
\'^\(\s*\)\(\%(end\|of\|catch\|after\)\>\|[)\]}]\|>>\)')
|
||||
\'^\(\s*\)\(\%(end\|of\|catch\|after\|else\)\>\|[)\]}]\|>>\)')
|
||||
|
||||
" If the line has a special beginning, but not a standalone catch
|
||||
if !empty(ml) && !(ml[2] ==# 'catch' && s:IsCatchStandalone(v:lnum, 0))
|
||||
|
||||
55
runtime/indent/obse.vim
Normal file
55
runtime/indent/obse.vim
Normal file
@@ -0,0 +1,55 @@
|
||||
" Vim indent file
|
||||
" Language: Oblivion Language (obl)
|
||||
" Original Creator: Kat <katisntgood@gmail.com>
|
||||
" Maintainer: Kat <katisntgood@gmail.com>
|
||||
" Created: 01 November 2021
|
||||
" Last Change: 13 November 2022
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
let b:undo_indent = 'setlocal indentkeys< indentexpr<'
|
||||
|
||||
setlocal indentexpr=GetOblIndent()
|
||||
setlocal indentkeys+==~endif,=~else,=~loop,=~end
|
||||
|
||||
if exists("*GetOblIndent")
|
||||
finish
|
||||
endif
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let s:SKIP_LINES = '^\s*\(;.*\)'
|
||||
function! GetOblIndent()
|
||||
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
let cur_text = getline(v:lnum)
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
let prev_text = getline(lnum)
|
||||
let found_cont = 0
|
||||
let ind = indent(lnum)
|
||||
|
||||
" indent next line on start terms
|
||||
let i = match(prev_text, '\c^\s*\(\s\+\)\?\(\(if\|while\|foreach\|begin\|else\%[if]\)\>\)')
|
||||
if i >= 0
|
||||
let ind += shiftwidth()
|
||||
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
|
||||
\ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$'
|
||||
let ind -= shiftwidth()
|
||||
endif
|
||||
endif
|
||||
" indent current line on end/else terms
|
||||
if cur_text =~ '\c^\s*\(\s\+\)\?\(\(loop\|endif\|else\%[if]\)\>\)'
|
||||
let ind = ind - shiftwidth()
|
||||
" if we are at a begin block just go to column 0
|
||||
elseif cur_text =~ '\c^\s*\(\s\+\)\?\(\(begin\|end\)\>\)'
|
||||
let ind = 0
|
||||
endif
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
@@ -857,3 +857,33 @@ b: 2}]
|
||||
silent! argdel *
|
||||
edit file
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
def Foo()
|
||||
Bar(1,
|
||||
[]->filter((_, v) => {
|
||||
return true
|
||||
}),
|
||||
() => {
|
||||
echo
|
||||
})
|
||||
enddef
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
echo {
|
||||
k: () => {
|
||||
if true
|
||||
echo
|
||||
popup_setoptions(id,
|
||||
{title: 'title'})
|
||||
endif
|
||||
}
|
||||
}
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
if true
|
||||
elseif
|
||||
endif
|
||||
" END_INDENT
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user