mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-02 11:19:22 +02:00
Compare commits
386 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a4466fe3b6 | |||
| 08f49ae8e9 | |||
| 7cb3ab5058 | |||
| b2c10a6c0d | |||
| 3d76744ff4 | |||
| 6b809a4c94 | |||
| c77b2b3bab | |||
| e06b2aea43 | |||
| 88d75934c3 | |||
| 757c37da6d | |||
| 29d11a8326 | |||
| 45377e2096 | |||
| 7d8e7df551 | |||
| 4f9b1243e3 | |||
| d9b82cfe84 | |||
| 35cb38d34b | |||
| 14dec7b204 | |||
| 9943d4790e | |||
| 06774a271a | |||
| 4dd17a90ee | |||
| 08283b28af | |||
| f9f4e27ad7 | |||
| 052b86ba63 | |||
| 721be7fd0b | |||
| 038be2701d | |||
| 9d5487f6fd | |||
| 20e46fa65b | |||
| 7746348c5d | |||
| 2726821d38 | |||
| 35cb03648f | |||
| d2232d70c8 | |||
| 7cedae3ec3 | |||
| b42b9fc41f | |||
| 92e109fc13 | |||
| 9cb865e95b | |||
| adb703e1b9 | |||
| b5459ee104 | |||
| 4e7b4308fb | |||
| 932a535bfa | |||
| e14aa3c035 | |||
| 19d4f99a34 | |||
| 8a63529a2f | |||
| 9712a2534f | |||
| 51a06ecee0 | |||
| 5753084042 | |||
| 83d74404bb | |||
| 51ff18e319 | |||
| 7a5115ce50 | |||
| e4e0a2468c | |||
| 40ab82b974 | |||
| 711f4a07f3 | |||
| e08f10a55c | |||
| 11ab02c819 | |||
| d5afc74403 | |||
| 8ac0f73eb1 | |||
| a3a7d10bfb | |||
| 18a6853a76 | |||
| c4815c157b | |||
| c00729824d | |||
| 85627732e0 | |||
| 61b3544424 | |||
| ad2f6b6662 | |||
| dd3f1c0dda | |||
| 762a79e15c | |||
| 28e40a7b55 | |||
| 250739d442 | |||
| 7ceca3eb00 | |||
| 34954972c2 | |||
| 20d23ce93b | |||
| 3c7d9b11c8 | |||
| bcf66e0141 | |||
| 21ac3a49b5 | |||
| 2c9f49b200 | |||
| ab281f8b34 | |||
| 1064426d15 | |||
| 8322923b40 | |||
| 13dcea2df1 | |||
| 63a885b650 | |||
| 5f2a959553 | |||
| 84a7503e29 | |||
| 8021830827 | |||
| 00a749bd90 | |||
| 96395e1512 | |||
| 47071c6076 | |||
| 2329bd427a | |||
| 3ca914ec74 | |||
| b55f0221cc | |||
| f22580e57c | |||
| 5606ca5349 | |||
| 587601671c | |||
| 1dc731a49f | |||
| 4d2c4b90fb | |||
| c1c1019fa3 | |||
| 6b01f02712 | |||
| 1830e787f6 | |||
| 0adbe639a5 | |||
| 54c88d0cf8 | |||
| f209dcd3de | |||
| 53b14578e0 | |||
| 7546afbf52 | |||
| c1c3b5d6a0 | |||
| 2d18789aa6 | |||
| 7db96134c2 | |||
| 23473303b7 | |||
| 4fa2dd2405 | |||
| a8aeeeb9aa | |||
| 0a336ccb57 | |||
| 6763b0ee95 | |||
| c2623824a7 | |||
| 969e11a18b | |||
| 835bc014c0 | |||
| 8d67cbfa1f | |||
| 0fab89117f | |||
| e671b1b6d1 | |||
| 3dca512939 | |||
| 42e498d9c4 | |||
| d6c7913e24 | |||
| f4d87ff888 | |||
| ccf2731fd1 | |||
| d49ba7b92a | |||
| 0a825bdde8 | |||
| 14da0fb2d8 | |||
| 9102ac11ab | |||
| d89770eb98 | |||
| 16d6fff98e | |||
| ce4f9d2a10 | |||
| 3d1a437f1b | |||
| f63c3467b1 | |||
| dd42b05f8a | |||
| af05694900 | |||
| b7dc5d3b61 | |||
| 62f19541f4 | |||
| 62e822808e | |||
| 6852e5c597 | |||
| 53d59ecc1d | |||
| 4422de6316 | |||
| b3a9127494 | |||
| 6bdfeb099a | |||
| 4a1e6dacbb | |||
| f31cfa29bf | |||
| 25e833f4ec | |||
| 5daaf23268 | |||
| ec6e82af04 | |||
| 2323f225ca | |||
| 34a7d82aae | |||
| 2e18facede | |||
| 273926e5c0 | |||
| de4b244bfc | |||
| c8cce711dd | |||
| b34ce3e205 | |||
| 08a410f674 | |||
| f7087cbec7 | |||
| 4783a2c073 | |||
| 9f827ec587 | |||
| 3ed6659549 | |||
| a95085e0fc | |||
| 4ec46f3210 | |||
| 29d596c80a | |||
| 659cb28c25 | |||
| 0b5fe42071 | |||
| d2219d547d | |||
| 360a39ae6c | |||
| fb792374cf | |||
| 15cd80a6d4 | |||
| 117efc784e | |||
| 597b39d5f6 | |||
| 2bacc3e5fb | |||
| a250738303 | |||
| bc08ceb755 | |||
| 334a13bff7 | |||
| 8872012e5f | |||
| 8ac975d97e | |||
| 1a741d3cb8 | |||
| 7003a5d63f | |||
| ff159253eb | |||
| 94a045ed56 | |||
| 56957ed410 | |||
| a2c5559f29 | |||
| 3e2affc324 | |||
| 5e8b2268e1 | |||
| da53af57a7 | |||
| 3255af850e | |||
| 85a50fe825 | |||
| 4be1ab80be | |||
| fce1fa5b61 | |||
| 0b8205484b | |||
| 60bd140256 | |||
| e9ae35f265 | |||
| 3d75ec7401 | |||
| dbedc0924d | |||
| 18bacc811c | |||
| 397700e507 | |||
| b2bd8de154 | |||
| d3c4b7e946 | |||
| 580e457a2a | |||
| 9b41e8f766 | |||
| aa8345a968 | |||
| 6c0128385e | |||
| 00a00f5d3f | |||
| 12b1eb58ab | |||
| f877040a04 | |||
| 25b16d64a0 | |||
| 16f2d3a465 | |||
| 5090a1fecb | |||
| 5b97947bbd | |||
| b3854bfc54 | |||
| e0029daa35 | |||
| 28155d0855 | |||
| 094494bf2e | |||
| 025dc48e88 | |||
| b7717d5706 | |||
| b8989fb860 | |||
| ed7d8e55ac | |||
| f1c3134ee1 | |||
| a7b8120820 | |||
| f4b36417e8 | |||
| 066a5340e3 | |||
| 95a3120b40 | |||
| 4af6e9a3c7 | |||
| 61af587f26 | |||
| d15114c148 | |||
| 14e8208d84 | |||
| 7bbb0f357e | |||
| bf595ae4ac | |||
| 51eefba1d6 | |||
| 6a15942bc2 | |||
| 41a6026f00 | |||
| b62bf81488 | |||
| 060e6556e2 | |||
| b79fa3d9c8 | |||
| a48693c6c2 | |||
| 13f100e932 | |||
| 8e7808c296 | |||
| 3710248dbc | |||
| af567e9eb0 | |||
| 3cb41489dc | |||
| fbe2dd7b4c | |||
| 08e946fa19 | |||
| 27f5136761 | |||
| e3fed4828c | |||
| 106899eb21 | |||
| 52fd867f5e | |||
| 4418041698 | |||
| 3af0a8d8f5 | |||
| 08a83a033a | |||
| e700ddeea4 | |||
| 911742a975 | |||
| d5218a81b4 | |||
| 7402362114 | |||
| 7861c788f0 | |||
| f4680b8f79 | |||
| 9b30caf13d | |||
| 460dffeb9f | |||
| 4af622dfd6 | |||
| d6e3c9048d | |||
| 07f0dbe3aa | |||
| ee1a24b21d | |||
| 44c1c04ddb | |||
| 5647c91355 | |||
| 778ada48fb | |||
| b34a688ba0 | |||
| 68ba6c2c6c | |||
| 5887cce1d7 | |||
| b5f463ce4f | |||
| 44831e4bea | |||
| c0f0e2380e | |||
| 27822a0441 | |||
| 8969ff8787 | |||
| 25b448f236 | |||
| 3f60114236 | |||
| 8bac9064f7 | |||
| aaf55031bf | |||
| e67eff2e24 | |||
| b6c900be9c | |||
| faf4112cdc | |||
| 73d8222b31 | |||
| 961c25235b | |||
| fa4f21c122 | |||
| d4f3eca4ee | |||
| 0b82a98ba9 | |||
| 347d8c7327 | |||
| dd1a253df4 | |||
| e2f0b2421e | |||
| bf7c88d852 | |||
| e70587dbdb | |||
| 977561a719 | |||
| d7deeffe11 | |||
| 407319fe89 | |||
| 2c47ab8fcd | |||
| c0b7ca406b | |||
| 4f010c90bd | |||
| 8f3277fbbe | |||
| a9c06429ac | |||
| 6eea0b8931 | |||
| b6dbf0540a | |||
| 712e067015 | |||
| 88ce0c546b | |||
| 7e89800988 | |||
| f0ed0e6f63 | |||
| db26a3b1ac | |||
| 5881828104 | |||
| 8cc725e927 | |||
| bfc7719e48 | |||
| 40891bac5d | |||
| 35e02af7bf | |||
| 1aa287e048 | |||
| 54d7f18c38 | |||
| e3647c8bf5 | |||
| c5654b8448 | |||
| 97baa1cfe8 | |||
| 7de6b1bb56 | |||
| 68d0858892 | |||
| f30eb4a170 | |||
| 3cfac59f92 | |||
| 2e4361bd40 | |||
| ec7a4e4d69 | |||
| aae1bfbdb9 | |||
| 6f14ef4b0b | |||
| 934d9ab3a2 | |||
| 645a4288e2 | |||
| 76bdb82527 | |||
| 746fe54d4f | |||
| b7147f8236 | |||
| a35040f795 | |||
| a17f8bfb28 | |||
| a6d5778d9b | |||
| 252a1330da | |||
| 16b2af7aa7 | |||
| a3a185c309 | |||
| 024706611d | |||
| a41dfcd55b | |||
| 9c8f9b10fc | |||
| a5e03f68a8 | |||
| b69cd52447 | |||
| cde8ff63e2 | |||
| f50d5364d7 | |||
| dc49d725a7 | |||
| 767ffc4eef | |||
| 5c462e7cbc | |||
| 34e1e8de91 | |||
| f7cb9f9280 | |||
| 9162e2c802 | |||
| 4a530a632b | |||
| 449c2e5454 | |||
| 23da16d3d0 | |||
| ccd7f454fc | |||
| 04d2a3fdc0 | |||
| edf0f7db28 | |||
| 001c26cd61 | |||
| e0a2ab397f | |||
| cbc1f409c1 | |||
| 44a21351a8 | |||
| 2101230f40 | |||
| ac134634d3 | |||
| d04d99de73 | |||
| 7b4df97ece | |||
| 1ca0a976db | |||
| dbdc27d0f8 | |||
| 3a621188ee | |||
| c078675ac7 | |||
| b32800f7c5 | |||
| 3219da514c | |||
| 7c930eb61a | |||
| 195fcc90d0 | |||
| c22b4df9e7 | |||
| 85e3f24bea | |||
| d7f5854fcc | |||
| bfb4eea786 | |||
| fe0a9a3269 | |||
| 8297e2cee3 | |||
| 6d6ec2ee05 | |||
| edd4ac3e89 | |||
| ec961b05dc | |||
| 766801295d | |||
| a5d19aa44d | |||
| 04cc897593 | |||
| db23436b92 | |||
| 279dd703e1 | |||
| bd913cea83 | |||
| fb49e3cde7 | |||
| c729d6d154 | |||
| d65aa1bbdb | |||
| 509a8d58f9 | |||
| 99181205c5 | |||
| 3acfbb4b54 | |||
| 08ea2e1fb0 |
@@ -24,6 +24,14 @@ indent_size = 2
|
||||
# https://spec.commonmark.org/0.31.2/#hard-line-breaks
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.vim]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[runtime/pack/dist/opt/{comment,nohlsearch}/**.vim]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[runtime/doc/**.txt]
|
||||
# It can mess up some documentation by trying to strip trailing whitespaces
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
@@ -98,6 +98,7 @@ runtime/compiler/se.vim @dkearns
|
||||
runtime/compiler/shellcheck.vim @dkearns
|
||||
runtime/compiler/sml.vim @dkearns
|
||||
runtime/compiler/spectral.vim @romainl
|
||||
runtime/compiler/svelte-check.vim @Konfekt
|
||||
runtime/compiler/stylelint.vim @dkearns
|
||||
runtime/compiler/tcl.vim @dkearns
|
||||
runtime/compiler/tidy.vim @dkearns
|
||||
@@ -153,6 +154,7 @@ runtime/ftplugin/debchangelog.vim @jamessan
|
||||
runtime/ftplugin/debcontrol.vim @jamessan
|
||||
runtime/ftplugin/debsources.vim @jamessan
|
||||
runtime/ftplugin/desktop.vim @e-kwsm
|
||||
runtime/ftplugin/dnsmasq.vim @dringsim
|
||||
runtime/ftplugin/dosbatch.vim @mrdubya
|
||||
runtime/ftplugin/editorconfig.vim @ribru17
|
||||
runtime/ftplugin/eiffel.vim @dkearns
|
||||
@@ -160,6 +162,7 @@ runtime/ftplugin/elixir.vim @mhanberg
|
||||
runtime/ftplugin/erlang.vim @hcs42
|
||||
runtime/ftplugin/eruby.vim @tpope @dkearns
|
||||
runtime/ftplugin/expect.vim @dkearns
|
||||
runtime/ftplugin/exports.vim @mperry2
|
||||
runtime/ftplugin/fennel.vim @gpanders
|
||||
runtime/ftplugin/fetchmail.vim @dkearns
|
||||
runtime/ftplugin/forth.vim @jkotlinski
|
||||
@@ -222,6 +225,7 @@ runtime/ftplugin/liquid.vim @tpope
|
||||
runtime/ftplugin/lua.vim @dkearns
|
||||
runtime/ftplugin/lc.vim @ribru17
|
||||
runtime/ftplugin/lynx.vim @dkearns
|
||||
runtime/ftplugin/m17ndb.vim @dseomn
|
||||
runtime/ftplugin/m3build.vim @dkearns
|
||||
runtime/ftplugin/m3quake.vim @dkearns
|
||||
runtime/ftplugin/markdown.vim @tpope
|
||||
@@ -246,6 +250,7 @@ runtime/ftplugin/pbtxt.vim @lakshayg
|
||||
runtime/ftplugin/pdf.vim @tpope
|
||||
runtime/ftplugin/perl.vim @petdance @dkearns
|
||||
runtime/ftplugin/php.vim @dkearns
|
||||
runtime/ftplugin/plsql.vim @lee-lindley
|
||||
runtime/ftplugin/pod.vim @petdance @dkearns
|
||||
runtime/ftplugin/poefilter.vim @ObserverOfTime
|
||||
runtime/ftplugin/postscr.vim @mrdubya
|
||||
@@ -267,6 +272,7 @@ runtime/ftplugin/routeros.vim @zainin
|
||||
runtime/ftplugin/rst.vim @marshallward
|
||||
runtime/ftplugin/ruby.vim @tpope @dkearns
|
||||
runtime/ftplugin/rust.vim @lilyball
|
||||
runtime/ftplugin/samba.vim @mperry2
|
||||
runtime/ftplugin/sass.vim @tpope
|
||||
runtime/ftplugin/scala.vim @derekwyatt
|
||||
runtime/ftplugin/scheme.vim @evhan
|
||||
@@ -279,6 +285,7 @@ runtime/ftplugin/slint.vim @ribru17
|
||||
runtime/ftplugin/snakemake.vim @ribru17
|
||||
runtime/ftplugin/solidity.vim @cothi
|
||||
runtime/ftplugin/solution.vim @dkearns
|
||||
runtime/ftplugin/spajson.vim @dseomn
|
||||
runtime/ftplugin/spec.vim @ignatenkobrain
|
||||
runtime/ftplugin/squirrel.vim @ribru17
|
||||
runtime/ftplugin/ssa.vim @ObserverOfTime
|
||||
@@ -290,6 +297,7 @@ runtime/ftplugin/systemverilog.vim @Kocha
|
||||
runtime/ftplugin/swig.vim @jmarrec
|
||||
runtime/ftplugin/tap.vim @petdance
|
||||
runtime/ftplugin/tcsh.vim @dkearns
|
||||
runtime/ftplugin/tera.vim @MuntasirSZN
|
||||
runtime/ftplugin/terraform.vim @JannoTjarks
|
||||
runtime/ftplugin/tf.vim @ribru17
|
||||
runtime/ftplugin/thrift.vim @jiangyinzuo
|
||||
@@ -363,6 +371,7 @@ runtime/indent/ld.vim @dkearns
|
||||
runtime/indent/less.vim @genoma
|
||||
runtime/indent/liquid.vim @tpope
|
||||
runtime/indent/lua.vim @marcuscf
|
||||
runtime/indent/m17ndb.vim @dseomn
|
||||
runtime/indent/make.vim @dkearns
|
||||
runtime/indent/meson.vim @Liambeguin
|
||||
runtime/indent/mma.vim @dkearns
|
||||
@@ -388,6 +397,7 @@ runtime/indent/scheme.vim @evhan
|
||||
runtime/indent/scss.vim @tpope
|
||||
runtime/indent/sh.vim @chrisbra
|
||||
runtime/indent/solidity.vim @cothi
|
||||
runtime/indent/spajson.vim @dseomn
|
||||
runtime/indent/systemverilog.vim @Kocha
|
||||
runtime/indent/tcl.vim @dkearns
|
||||
runtime/indent/tcsh.vim @dkearns
|
||||
@@ -404,6 +414,7 @@ runtime/keymap/armenian-eastern_utf-8.vim @blinskey
|
||||
runtime/keymap/armenian-western_utf-8.vim @blinskey
|
||||
runtime/keymap/russian-typograph.vim @RestorerZ
|
||||
runtime/keymap/tamil_tscii.vim @yegappan
|
||||
runtime/keymap/ukrainian-enhanced.vim @Dolfost
|
||||
runtime/lang/menu_en_gb.latin1.vim @mrdubya
|
||||
runtime/lang/menu_ru_ru.cp1251.vim @RestorerZ
|
||||
runtime/lang/menu_ru_ru.koi8-r.vim @RestorerZ
|
||||
@@ -415,6 +426,7 @@ runtime/pack/dist/opt/nohlsearch/ @habamax
|
||||
runtime/plugin/manpager.vim @Konfekt
|
||||
runtime/syntax/shared/hgcommitDiff.vim @vegerot
|
||||
runtime/syntax/abaqus.vim @costerwi
|
||||
runtime/syntax/abnf.vim @A4-Tacks
|
||||
runtime/syntax/aidl.vim @dpelle
|
||||
runtime/syntax/ant.vim @dkearns
|
||||
runtime/syntax/antlr4.vim @jiangyinzuo
|
||||
@@ -528,6 +540,7 @@ runtime/syntax/liquid.vim @tpope
|
||||
runtime/syntax/lua.vim @marcuscf
|
||||
runtime/syntax/lyrics.vim @ObserverOfTime
|
||||
runtime/syntax/lynx.vim @dkearns
|
||||
runtime/syntax/m17ndb.vim @dseomn
|
||||
runtime/syntax/m3build.vim @dkearns
|
||||
runtime/syntax/m3quake.vim @dkearns
|
||||
runtime/syntax/mailcap.vim @dkearns
|
||||
@@ -549,6 +562,7 @@ runtime/syntax/ninja.vim @nico
|
||||
runtime/syntax/nix.vim @equill
|
||||
runtime/syntax/nroff.vim @jmarshall
|
||||
runtime/syntax/nsis.vim @k-takata
|
||||
runtime/syntax/omnimark.vim @kennypete
|
||||
runtime/syntax/ondir.vim @jparise
|
||||
runtime/syntax/opencl.vim @Freed-Wu
|
||||
runtime/syntax/openvpn.vim @ObserverOfTime
|
||||
@@ -566,6 +580,7 @@ runtime/syntax/postscr.vim @mrdubya
|
||||
runtime/syntax/privoxy.vim @dkearns
|
||||
runtime/syntax/progress.vim @rdnlsmith
|
||||
runtime/syntax/prolog.vim @XVilka
|
||||
runtime/syntax/prql.vim @vanillajonathan
|
||||
runtime/syntax/ps1.vim @heaths
|
||||
runtime/syntax/ps1xml.vim @heaths
|
||||
runtime/syntax/psl.vim @danielkho
|
||||
@@ -597,6 +612,7 @@ runtime/syntax/sed.vim @dkearns
|
||||
runtime/syntax/shared/debversions.vim @jamessan
|
||||
runtime/syntax/shaderslang.vim @mTvare6
|
||||
runtime/syntax/solidity.vim @cothi
|
||||
runtime/syntax/spajson.vim @dseomn
|
||||
runtime/syntax/spec.vim @ignatenkobrain
|
||||
runtime/syntax/sqloracle.vim @chrisbra
|
||||
runtime/syntax/squirrel.vim @zenmatic
|
||||
@@ -611,6 +627,7 @@ runtime/syntax/swig.vim @jmarrec
|
||||
runtime/syntax/systemverilog.vim @Kocha
|
||||
runtime/syntax/tap.vim @petdance
|
||||
runtime/syntax/tcsh.vim @dkearns
|
||||
runtime/syntax/tera.vim @MuntasirSZN
|
||||
runtime/syntax/teraterm.vim @k-takata
|
||||
runtime/syntax/terraform.vim @gpanders
|
||||
runtime/syntax/thrift.vim @jiangyinzuo
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
name: MacVim GitHub CI
|
||||
|
||||
# Main CI workflow for MacVim. Will build and test MacVim on different platforms.
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
@@ -11,60 +13,21 @@ concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: '10.13'
|
||||
MACOSX_DEPLOYMENT_TARGET_LEGACY: '10.9'
|
||||
|
||||
MACVIM_ARCHS: "x86_64 arm64" # Universal app for Intel/Apple Silicon
|
||||
MACVIM_ARCHS_LEGACY: "x86_64" # Legacy builds only need to build x86-64 because Apple Silicon can't run on these old OSes
|
||||
|
||||
CC: clang
|
||||
|
||||
MAKE_BUILD_ARGS: LINK_AS_NEEDED=yes # In macOS we never over-specify link dependencies and we already check against external deps in smoketest. With LTO, linking takes a while, so we want to avoid using link.sh.
|
||||
|
||||
VERSIONER_PERL_VERSION: '5.34' # macOS default Perl installation uses this to determine which one to use
|
||||
|
||||
vi_cv_path_python: /Library/Frameworks/Python.framework/Versions/2.7/bin/python
|
||||
vi_cv_path_python3: "%s/bin/python3"
|
||||
vi_cv_path_plain_lua: "%s/bin/lua"
|
||||
vi_cv_path_ruby: "%s/opt/ruby/bin/ruby"
|
||||
vi_cv_dll_name_perl: /System/Library/Perl/%s/darwin-thread-multi-2level/CORE/libperl.dylib
|
||||
vi_cv_dll_name_python: /Library/Frameworks/Python.framework/Versions/2.7/Python
|
||||
vi_cv_dll_name_python3: /usr/local/Frameworks/Python.framework/Versions/Current/Python
|
||||
vi_cv_dll_name_python3_arm64: /opt/homebrew/Frameworks/Python.framework/Versions/Current/Python
|
||||
vi_cv_dll_name_ruby: /usr/local/opt/ruby/lib/libruby.dylib
|
||||
vi_cv_dll_name_ruby_arm64: /opt/homebrew/opt/ruby/lib/libruby.dylib
|
||||
vi_cv_dll_name_lua: /usr/local/lib/liblua.dylib
|
||||
vi_cv_dll_name_lua_arm64: /opt/homebrew/lib/liblua.dylib
|
||||
|
||||
MACVIM_APP: src/MacVim/build/Release/MacVim.app
|
||||
VIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
||||
MACVIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/MacVim
|
||||
|
||||
TERM: xterm
|
||||
BASH_SILENCE_DEPRECATION_WARNING: 1
|
||||
|
||||
jobs:
|
||||
# Builds and test MacVim
|
||||
build-and-test:
|
||||
|
||||
# Test on macOS 11.x / 12.x, and also older versions of Xcode for compatibility testing.
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# # Oldest version of Xcode supported on GitHub Action to test source code backwards compatibility
|
||||
# # This version of Xcode can run on macOS 11 where as 13.3 has to run on macOS 12.
|
||||
# - os: macos-12
|
||||
# xcode: '13.2.1'
|
||||
# extra: [vimtags, check-xcodeproj-compat]
|
||||
#
|
||||
# # Older version of Xcode, and used to publish legacy builds (for macOS 10.9 - 10.12)
|
||||
# - os: macos-12
|
||||
# xcode: '14.0' # last version of Xcode that uses the macOS 12 SDK, which still supports deploying to macOS 10.9
|
||||
# publish: true
|
||||
# legacy: true
|
||||
# publish_postfix: '_10.9'
|
||||
# Self-hosted runner with old enough software (Xcode 14.0.1) to be
|
||||
# able to make legacy builds. We only run this when making a full
|
||||
# release build.
|
||||
- os: macos-13-xcode14-self-hosted
|
||||
publish: true
|
||||
publish_postfix: '_10.9'
|
||||
skip: ${{ ! startswith(github.ref, 'refs/tags/release') }}
|
||||
legacy: true
|
||||
|
||||
- os: macos-13
|
||||
xcode: '15.2'
|
||||
@@ -75,7 +38,6 @@ jobs:
|
||||
- os: macos-14
|
||||
xcode: '15.4'
|
||||
testgui: false
|
||||
optimized: true
|
||||
|
||||
# Most up to date OS and Xcode. Used to publish release for the main build.
|
||||
- os: macos-15
|
||||
@@ -84,346 +46,15 @@ jobs:
|
||||
publish: true
|
||||
optimized: true
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up legacy build
|
||||
if: matrix.legacy
|
||||
run: |
|
||||
# Set the correct build env vars to target the correct architectures and min OS targets.
|
||||
echo "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET_LEGACY" >> $GITHUB_ENV
|
||||
echo "MACVIM_ARCHS=$MACVIM_ARCHS_LEGACY" >> $GITHUB_ENV
|
||||
|
||||
# Use Sparkle 1 because Sparkle 2 requires newer OS version than our legacy build.
|
||||
# Later, we pass the --enable-sparkle_1 flag to configure to set the corresponding ifdef.
|
||||
ln -fhs Sparkle_1.framework src/MacVim/Sparkle.framework
|
||||
|
||||
# Sparkle shows a dialog asking if the user wants to check for updates on 2nd launch of
|
||||
# MacVim. On Sparkle 1 this is annoyingly a modal dialog box and interferes with tests.
|
||||
# Just disable it by pre-setting to not check for updates.
|
||||
defaults write org.vim.MacVim SUEnableAutomaticChecks 0
|
||||
|
||||
- name: Set up Xcode
|
||||
if: matrix.xcode != ''
|
||||
run: |
|
||||
sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
||||
xcode-select -p
|
||||
xcodebuild -version
|
||||
|
||||
# Set up, install, and cache gettext library for localization.
|
||||
#
|
||||
- name: Set up gettext
|
||||
if: matrix.publish
|
||||
uses: ./.github/actions/universal-package
|
||||
with:
|
||||
formula: gettext
|
||||
contents: lib/libintl.a,lib/libintl.dylib
|
||||
|
||||
# Set up, install, and cache libsodium library for encryption.
|
||||
|
||||
- name: Set up libsodium
|
||||
if: matrix.publish
|
||||
uses: ./.github/actions/universal-package
|
||||
with:
|
||||
formula: libsodium
|
||||
contents: lib/libsodium.a,lib/libsodium.dylib
|
||||
|
||||
# Set up remaining packages and tools
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
brew install --quiet libtool
|
||||
|
||||
- name: Install packages for testing
|
||||
run: |
|
||||
# Apple diff is broken. Use GNU diff instead. See http://github.com/vim/vim/issues/14056.
|
||||
brew install --quiet diffutils
|
||||
|
||||
- name: Grant microphone access for macos-14
|
||||
if: matrix.os == 'macos-14'
|
||||
run: |
|
||||
# Temporary fix to fix microphone permission issues for macos-14 when playing sound.
|
||||
sqlite3 $HOME/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR IGNORE INTO access VALUES ('kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159,NULL,NULL,'UNUSED',1687786159);"
|
||||
|
||||
- name: Install scripting runtimes
|
||||
if: matrix.publish
|
||||
run: |
|
||||
# We no longer need to install/update Python 3, as it's guaranteed to
|
||||
# be installed on runners. Since we use stable ABI, the exact version
|
||||
# on CI does not matter.
|
||||
|
||||
brew install --quiet ruby
|
||||
brew install --quiet lua
|
||||
|
||||
if [[ -d $(brew --prefix)/Cellar/perl ]]; then
|
||||
# We just use system perl to reduce dependencies
|
||||
brew unlink perl
|
||||
fi
|
||||
|
||||
echo "vi_cv_path_python3=$(printf $vi_cv_path_python3 $(brew --prefix))" >> $GITHUB_ENV
|
||||
echo "vi_cv_path_plain_lua=$(printf $vi_cv_path_plain_lua $(brew --prefix))" >> $GITHUB_ENV
|
||||
echo "vi_cv_path_ruby=$(printf $vi_cv_path_ruby $(brew --prefix))" >> $GITHUB_ENV
|
||||
|
||||
# With Perl, we need to manually specify the version number because the dylib path depends on it.
|
||||
echo "vi_cv_dll_name_perl=$(printf $vi_cv_dll_name_perl $VERSIONER_PERL_VERSION)" >> $GITHUB_ENV
|
||||
|
||||
# New runner images (macos-13) no longer have Python2 installed. We
|
||||
# need to install Python2 manually. Installing from the official
|
||||
# installer is the easiest way as Homebrew no longer ships python@2
|
||||
# and this way does not invole manual building from source. We
|
||||
# mostly only need the headers to build a dynamic build anyway.
|
||||
#
|
||||
# This will be removed in the future as Python2 has been completely
|
||||
# unsupported for years.
|
||||
curl https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg -o ~/Downloads/python-2.7.18-macosx10.9.pkg
|
||||
sudo installer -pkg ~/Downloads/python-2.7.18-macosx10.9.pkg -target /
|
||||
|
||||
# All set up steps are done. Build and test MacVim below.
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
CONFOPT=(
|
||||
--with-local-dir=$(brew --prefix)
|
||||
--with-features=huge
|
||||
--enable-netbeans
|
||||
--with-tlib=ncurses
|
||||
--enable-cscope
|
||||
--enable-gui=macvim
|
||||
--with-compiledby="GitHub Actions"
|
||||
)
|
||||
if ${{ matrix.publish == true }}; then
|
||||
CONFOPT+=(
|
||||
--enable-perlinterp=dynamic
|
||||
--enable-pythoninterp=dynamic
|
||||
--enable-python3interp=dynamic
|
||||
--with-python3-stable-abi=3.9 # macOS and Xcode currently ships 3.9, so we don't want go higher than that.
|
||||
--enable-rubyinterp=dynamic
|
||||
--enable-luainterp=dynamic
|
||||
--with-lua-prefix=$(brew --prefix)
|
||||
--with-macarchs="$MACVIM_ARCHS"
|
||||
)
|
||||
else
|
||||
CONFOPT+=(
|
||||
--disable-sparkle # Disable Sparkle for testing that this flag builds and works
|
||||
--enable-nls=no --enable-libsodium=no # Disable gettext and libsodium unless we built them ourselves for publish
|
||||
)
|
||||
fi
|
||||
if ${{ matrix.legacy == true }}; then
|
||||
CONFOPT+=(
|
||||
--enable-sparkle_1
|
||||
)
|
||||
fi
|
||||
echo "CONFOPT: ${CONFOPT[@]}"
|
||||
|
||||
./configure "${CONFOPT[@]}" --enable-fail-if-missing
|
||||
|
||||
sed -i.bak -f ci/config.mk.sed -f ci/config.mk.clang.sed -f ci/config.mk.xcode.sed src/auto/config.mk
|
||||
if clang --version | grep -qs '^Apple clang version \(1[3-9]\|[2-9]\d\)\.'; then
|
||||
sed -i.bak -f ci/config.mk.clang-12.sed src/auto/config.mk
|
||||
fi
|
||||
|
||||
if ${{ matrix.optimized == true }}; then
|
||||
# Additional optimizations like link-time optimizations that are a bit slower to build.
|
||||
sed -i.bak -f ci/config.mk.optimized.sed src/auto/config.mk
|
||||
fi
|
||||
|
||||
- name: Modify configure result
|
||||
if: matrix.publish
|
||||
run: |
|
||||
# Ruby is keg-only in Homebrew, so need to manually link in the path so Vim will know where to look for the binaries.
|
||||
perl -p -i -e "s#(?<=-DDYNAMIC_RUBY_DLL=\\\\\").*?(?=\\\\\")#${vi_cv_dll_name_ruby}#" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PERL_DLL=\\\\\"${vi_cv_dll_name_perl}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PYTHON_DLL=\\\\\"${vi_cv_dll_name_python}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"${vi_cv_dll_name_python3}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_RUBY_DLL=\\\\\"${vi_cv_dll_name_ruby}\\\\\"" src/auto/config.mk
|
||||
|
||||
# Also search for the arm64 overrides for the default library locations, which are different from x86_64
|
||||
# because Homebrew puts them at a different place.
|
||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL_ARM64=\\\\\"${vi_cv_dll_name_python3_arm64}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_RUBY_DLL_ARM64=\\\\\"${vi_cv_dll_name_ruby_arm64}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_LUA_DLL_ARM64=\\\\\"${vi_cv_dll_name_lua_arm64}\\\\\"" src/auto/config.mk
|
||||
|
||||
- name: Show configure output
|
||||
run: |
|
||||
cat src/auto/config.mk
|
||||
cat src/auto/config.h
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
LC_ALL: C
|
||||
run: |
|
||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
echo "Building MacVim with ${NPROC} cores"
|
||||
|
||||
set -o verbose
|
||||
make ${MAKE_BUILD_ARGS} -j${NPROC}
|
||||
|
||||
- name: Check version
|
||||
run: |
|
||||
${VIM_BIN} --version
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -c 'echo "\nprof_nsec:" .. has("prof_nsec") .. "\n"' -c quit
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
|
||||
- name: Smoketest
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
# Make sure there isn't any dynamic linkage to third-party dependencies in the built binary, as we should only use
|
||||
# static linkage to avoid dependency hell. Test that all those dylib's are in /usr/lib which is bundled with macOS and not third-party.
|
||||
if otool -L ${VIM_BIN} | grep '\.dylib\s' | grep -v '^\s*/usr/lib/'; then
|
||||
echo 'Found external dynamic linkage!'; false
|
||||
fi
|
||||
|
||||
# Make sure that --disable-sparkle flag will properly exclude all references to Sparkle symbols. This is
|
||||
# necessary because we still use weak linking to Sparkle when that flag is set and so references to Sparkle
|
||||
# wouldn't fail the build (we just remove Sparkle.framework from the built app after the fact).
|
||||
if ${{ matrix.publish == false }}; then
|
||||
# Currently we pass --disable-sparkle flag when publish==false
|
||||
if objdump -t ${MACVIM_BIN} | grep "_SPU\|_SUUpdate"; then
|
||||
echo 'Found references to Sparkle even when using --disable-sparkle'; false
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make sure man pages were bundled
|
||||
man -M `pwd`/${MACVIM_APP}/Contents/man -w mvim
|
||||
|
||||
# Make sure xxd was bundled
|
||||
echo "AB" | ${MACVIM_APP}/Contents/bin/xxd | grep "4142"
|
||||
|
||||
- name: Smoketest (publish)
|
||||
if: matrix.publish
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
macvim_excmd() {
|
||||
${VIM_BIN} -u NONE -i NONE -g -f -X -V1 -es "$@" -c 'echo ""' -c 'qall!' 2>&1
|
||||
}
|
||||
|
||||
# Smoketest scripting languages
|
||||
macvim_excmd -c 'lua print("Test")' | grep Test
|
||||
macvim_excmd -c 'perl VIM::Msg("Test")' | grep Test
|
||||
macvim_excmd -c 'py3 print("Test")' | grep Test
|
||||
macvim_excmd -c 'ruby puts("Test")' | grep Test
|
||||
|
||||
if [[ "$(uname -m)" == "x86_64" ]]; then
|
||||
macvim_excmd -c 'py print "x86 Test"' | grep Test
|
||||
else
|
||||
# Python2 doesn't work in Apple Silicon, test under Rosetta
|
||||
(VIM_BIN="arch -x86_64 ${VIM_BIN}"; macvim_excmd -c 'py print "rosetta Test"' | grep Test)
|
||||
fi
|
||||
|
||||
# Check that localized messages work by printing ':version' and checking against localized word
|
||||
macvim_excmd -c 'lang es_ES' -c 'version' | grep Enlazado
|
||||
|
||||
# Check that libsodium is working
|
||||
macvim_excmd -c 'set cryptmethod=xchacha20v2'
|
||||
|
||||
# Make sure we are building universal x86_64 / arm64 builds and didn't accidentally create a thin app.
|
||||
check_arch() {
|
||||
local archs=($(lipo -archs "$1"))
|
||||
if [[ ${archs[@]} != "$MACVIM_ARCHS" ]]; then
|
||||
echo "Wrong arch(s) in $1: ${archs[@]}"; false
|
||||
else
|
||||
lipo -info "$1"
|
||||
fi
|
||||
}
|
||||
check_arch "${VIM_BIN}"
|
||||
check_arch "${MACVIM_BIN}"
|
||||
|
||||
- name: Check Vim help tags
|
||||
if: contains(matrix.extra, 'vimtags')
|
||||
run: |
|
||||
# Confirm that we can build the help tags, and they match what's in source.
|
||||
make -C runtime/doc vimtags VIMEXE=../../${VIM_BIN}
|
||||
git diff --exit-code -- runtime/doc/tags
|
||||
|
||||
- name: Check Xcode project compatibility version
|
||||
if: contains(matrix.extra, 'check-xcodeproj-compat')
|
||||
run: |
|
||||
# Confirm that the compatibility version of xcodeproj is correct and not outdated.
|
||||
rm -rf src/MacVim/MacVim_xcode8.xcodeproj
|
||||
make -C src macvim-xcodeproj-compat
|
||||
if ! git diff --exit-code -- src/MacVim/MacVim_xcode8.xcodeproj; then
|
||||
echo 'MacVim_xcode8.xcodeproj is outdated. Run "make -C src macvim-xcodeproj-compat" to re-generate it.'; false
|
||||
fi
|
||||
|
||||
- name: Test MacVim
|
||||
id: test_macvim
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
make ${MAKE_BUILD_ARGS} -C src macvim-tests
|
||||
|
||||
- name: Upload failed MacVim test results
|
||||
if: ${{ !cancelled() && failure() && steps.test_macvim.conclusion == 'failure' }}
|
||||
uses: ./.github/actions/test_macvim_artifacts
|
||||
|
||||
- name: Build Vim test binaries
|
||||
run: |
|
||||
# Build the unit test binaries first. With link-time-optimization they take some time to link. Running them
|
||||
# separately de-couples them from the timeout in tests, and allow us to build in parallel jobs (since tests
|
||||
# can't run in parallel).
|
||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
|
||||
set -o verbose
|
||||
make ${MAKE_BUILD_ARGS} -j${NPROC} -C src unittesttargets
|
||||
|
||||
- name: Test Vim
|
||||
if: startsWith(github.ref, 'refs/tags/') || !matrix.testgui
|
||||
timeout-minutes: 30
|
||||
run: |
|
||||
defaults delete org.vim.MacVim # Clean up stale states
|
||||
# Currently we don't run any non-src tests, as syntax tests are fragile and prone to spamming escape codes.
|
||||
# This needs to be investigated and fixed upstream.
|
||||
# MacVim is unlikely to introduce breaking changes in runtime files anyway.
|
||||
make ${MAKE_BUILD_ARGS} -C src test
|
||||
|
||||
- name: Test Vim (GUI)
|
||||
if: startsWith(github.ref, 'refs/tags/') || matrix.testgui
|
||||
timeout-minutes: 30
|
||||
run: |
|
||||
defaults delete org.vim.MacVim # Clean up stale states
|
||||
make ${MAKE_BUILD_ARGS} -C src/testdir clean
|
||||
make ${MAKE_BUILD_ARGS} -C src testgui
|
||||
|
||||
- name: Upload failed test files
|
||||
if: ${{ !cancelled() && failure() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
- name: Build MacVim dmg image
|
||||
if: matrix.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
||||
run: |
|
||||
# Use the --skip-jenkins flag to skip the prettify osascript calls which could fail due to permission issues in
|
||||
# CI environment.
|
||||
if ${{ matrix.legacy == true }}; then
|
||||
make -C src macvim-dmg-legacy
|
||||
else
|
||||
make -C src macvim-dmg
|
||||
fi
|
||||
|
||||
if ${{ matrix.publish_postfix != '' }}; then
|
||||
mv src/MacVim/build/Release/MacVim.dmg src/MacVim/build/Release/MacVim${{ matrix.publish_postfix }}.dmg
|
||||
fi
|
||||
|
||||
# Upload the dmg installer only when making tagged release or making a dev build from a master branch.
|
||||
# Note that this doesn't create a GitHub release for us, because we would prefer to do it manually, for two
|
||||
# reasons: 1) signing / notarization are currently done out of CI, 2) we want to manually format our release notes
|
||||
# and add pictures to make them look nice.
|
||||
- name: Upload MacVim image
|
||||
if: matrix.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MacVim${{ matrix.publish_postfix }}.dmg
|
||||
path: src/MacVim/build/Release/MacVim${{ matrix.publish_postfix }}.dmg
|
||||
|
||||
# If doing a tagged release, use repository-specified number of retention days (usually 90 days) to make it
|
||||
# easier to audit. (specify "0" to indicate using repository settings)
|
||||
#
|
||||
# Otherwise, we are just doing a dev build for potential testing, just use a maximum of 21 days as we don't
|
||||
# tend to need these for long.
|
||||
retention-days: ${{ startsWith(github.ref, 'refs/tags/') && 0 || (github.retention_days > 21 && 21 || 0) }}
|
||||
uses: ./.github/workflows/macvim-buildtest.yaml
|
||||
with:
|
||||
skip: ${{ matrix.skip && true || false }}
|
||||
os: ${{ matrix.os }}
|
||||
legacy: ${{ matrix.legacy && true || false }}
|
||||
xcode: ${{ matrix.xcode }}
|
||||
testgui: ${{ matrix.testgui && true || false }}
|
||||
publish: ${{ matrix.publish && true || false }}
|
||||
publish_postfix: ${{ matrix.publish_postfix }}
|
||||
optimized: ${{ matrix.optimized && true || false }}
|
||||
vimtags: ${{ contains(matrix.extra, 'vimtags') }}
|
||||
check-xcodeproj-compat: ${{ contains(matrix.extra, 'check-xcodeproj-compat') }}
|
||||
|
||||
@@ -0,0 +1,418 @@
|
||||
name: MacVim Build and Test
|
||||
|
||||
# Child workflow to be called by other workflows for building/testing MacVim
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
skip:
|
||||
type: boolean
|
||||
os:
|
||||
type: string
|
||||
legacy:
|
||||
type: boolean
|
||||
xcode:
|
||||
type: string
|
||||
testgui:
|
||||
type: boolean
|
||||
publish:
|
||||
type: boolean
|
||||
publish_postfix:
|
||||
type: string
|
||||
optimized:
|
||||
type: boolean
|
||||
vimtags:
|
||||
type: boolean
|
||||
check-xcodeproj-compat:
|
||||
type: boolean
|
||||
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: '10.13'
|
||||
MACOSX_DEPLOYMENT_TARGET_LEGACY: '10.9'
|
||||
|
||||
MACVIM_ARCHS: "x86_64 arm64" # Universal app for Intel/Apple Silicon
|
||||
MACVIM_ARCHS_LEGACY: "x86_64 arm64" # Build universal for legacy too, mostly just to make building/testing on Apple Silicon CI work. In reality all Apple Silicon Macs shoud use non-legacy.
|
||||
|
||||
CC: clang
|
||||
|
||||
MAKE_BUILD_ARGS: LINK_AS_NEEDED=yes # In macOS we never over-specify link dependencies and we already check against external deps in smoketest. With LTO, linking takes a while, so we want to avoid using link.sh.
|
||||
|
||||
vi_cv_path_python: /Library/Frameworks/Python.framework/Versions/2.7/bin/python
|
||||
vi_cv_path_python3: "%s/bin/python3"
|
||||
vi_cv_path_plain_lua: "%s/bin/lua"
|
||||
vi_cv_path_ruby: "%s/opt/ruby/bin/ruby"
|
||||
vi_cv_dll_name_perl: /System/Library/Perl/%s/darwin-thread-multi-2level/CORE/libperl.dylib
|
||||
vi_cv_dll_name_python: /Library/Frameworks/Python.framework/Versions/2.7/Python
|
||||
vi_cv_dll_name_python3: /usr/local/Frameworks/Python.framework/Versions/Current/Python
|
||||
vi_cv_dll_name_python3_arm64: /opt/homebrew/Frameworks/Python.framework/Versions/Current/Python
|
||||
vi_cv_dll_name_ruby: /usr/local/opt/ruby/lib/libruby.dylib
|
||||
vi_cv_dll_name_ruby_arm64: /opt/homebrew/opt/ruby/lib/libruby.dylib
|
||||
vi_cv_dll_name_lua: /usr/local/lib/liblua.dylib
|
||||
vi_cv_dll_name_lua_arm64: /opt/homebrew/lib/liblua.dylib
|
||||
|
||||
MACVIM_APP: src/MacVim/build/Release/MacVim.app
|
||||
VIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
||||
MACVIM_BIN: src/MacVim/build/Release/MacVim.app/Contents/MacOS/MacVim
|
||||
|
||||
TERM: xterm
|
||||
BASH_SILENCE_DEPRECATION_WARNING: 1
|
||||
|
||||
jobs:
|
||||
# Builds and test MacVim
|
||||
build-and-test:
|
||||
if: ${{ !inputs.skip }}
|
||||
runs-on: ${{ inputs.os }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up legacy build
|
||||
if: inputs.legacy
|
||||
run: |
|
||||
# Set the correct build env vars to target the correct architectures and min OS targets.
|
||||
echo "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET_LEGACY" >> $GITHUB_ENV
|
||||
echo "MACVIM_ARCHS=$MACVIM_ARCHS_LEGACY" >> $GITHUB_ENV
|
||||
|
||||
# Use Sparkle 1 because Sparkle 2 requires newer OS version than our legacy build.
|
||||
# Later, we pass the --enable-sparkle_1 flag to configure to set the corresponding ifdef.
|
||||
ln -fhs Sparkle_1.framework src/MacVim/Sparkle.framework
|
||||
|
||||
# Sparkle shows a dialog asking if the user wants to check for updates on 2nd launch of
|
||||
# MacVim. On Sparkle 1 this is annoyingly a modal dialog box and interferes with tests.
|
||||
# Just disable it by pre-setting to not check for updates.
|
||||
defaults write org.vim.MacVim SUEnableAutomaticChecks 0
|
||||
|
||||
- name: Set up Xcode
|
||||
if: inputs.xcode != ''
|
||||
run: |
|
||||
sudo xcode-select -s /Applications/Xcode_${{ inputs.xcode }}.app/Contents/Developer
|
||||
xcode-select -p
|
||||
xcodebuild -version
|
||||
|
||||
# Set up, install, and cache gettext library for localization.
|
||||
|
||||
- name: Set up gettext
|
||||
if: inputs.publish
|
||||
uses: ./.github/actions/universal-package
|
||||
with:
|
||||
formula: gettext
|
||||
contents: lib/libintl.a,lib/libintl.dylib
|
||||
|
||||
# Set up, install, and cache libsodium library for encryption.
|
||||
|
||||
- name: Set up libsodium
|
||||
if: inputs.publish
|
||||
uses: ./.github/actions/universal-package
|
||||
with:
|
||||
formula: libsodium
|
||||
contents: lib/libsodium.a,lib/libsodium.dylib
|
||||
|
||||
# Set up remaining packages and tools
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
brew install --quiet libtool
|
||||
|
||||
- name: Install packages for testing
|
||||
run: |
|
||||
# Apple diff is broken. Use GNU diff instead. See http://github.com/vim/vim/issues/14056.
|
||||
brew install --quiet diffutils
|
||||
|
||||
# Cache Python 2 to avoid downloading the installer every time. This cache shouldn't change
|
||||
# over time as Python 2.7 is legacy. Can't directly cache to
|
||||
# /Library/Frameworks/Python.framework due to permission issues.
|
||||
#
|
||||
# Note: Legacy self-hosted runner already has this installed and doesn't need this.
|
||||
- name: Cache Python 2
|
||||
if: inputs.publish && !inputs.legacy
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: python27-cache
|
||||
key: ${{ inputs.os }}-python27
|
||||
|
||||
- name: Install scripting runtimes
|
||||
if: inputs.publish
|
||||
run: |
|
||||
# We no longer need to install/update Python 3, as it's guaranteed to
|
||||
# be installed on runners. Since we use stable ABI, the exact version
|
||||
# on CI does not matter.
|
||||
|
||||
brew install --quiet ruby
|
||||
brew install --quiet lua
|
||||
|
||||
if [[ -d $(brew --prefix)/Cellar/perl ]]; then
|
||||
# We just use system perl to reduce dependencies
|
||||
brew unlink perl
|
||||
fi
|
||||
|
||||
echo "vi_cv_path_python3=$(printf $vi_cv_path_python3 $(brew --prefix))" >> $GITHUB_ENV
|
||||
echo "vi_cv_path_plain_lua=$(printf $vi_cv_path_plain_lua $(brew --prefix))" >> $GITHUB_ENV
|
||||
echo "vi_cv_path_ruby=$(printf $vi_cv_path_ruby $(brew --prefix))" >> $GITHUB_ENV
|
||||
|
||||
# With Perl, we need to manually specify the version number because the dylib path depends on it.
|
||||
export PERL_VERSION=$(perl -e 'print $^V =~ s/v(\d\.\d+).*/\1/r')
|
||||
echo "vi_cv_dll_name_perl=$(printf $vi_cv_dll_name_perl $PERL_VERSION)" >> $GITHUB_ENV
|
||||
|
||||
# New runner images (macos-13) no longer have Python2 installed. We
|
||||
# need to install Python2 manually. Installing from the official
|
||||
# installer is the easiest way as Homebrew no longer ships python@2
|
||||
# and this way does not invole manual building from source. We
|
||||
# mostly only need the headers to build a dynamic build anyway.
|
||||
#
|
||||
# This will be removed in the future as Python2 has been completely
|
||||
# unsupported for years.
|
||||
if [ -d /Library/Frameworks/Python.framework/Versions/2.7 ]; then
|
||||
echo "Python 2.7 already installed"
|
||||
elif [ -d python27-cache ]; then
|
||||
sudo cp -R python27-cache /Library/Frameworks/Python.framework/Versions/2.7
|
||||
else
|
||||
curl https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg -o ~/Downloads/python-2.7.18-macosx10.9.pkg
|
||||
sudo installer -pkg ~/Downloads/python-2.7.18-macosx10.9.pkg -target /
|
||||
cp -R /Library/Frameworks/Python.framework/Versions/2.7 python27-cache # Allow this to be cached
|
||||
fi
|
||||
|
||||
# All set up steps are done. Build and test MacVim below.
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
CONFOPT=(
|
||||
--with-local-dir=$(brew --prefix)
|
||||
--with-features=huge
|
||||
--enable-netbeans
|
||||
--with-tlib=ncurses
|
||||
--enable-cscope
|
||||
--enable-gui=macvim
|
||||
--with-compiledby="GitHub Actions"
|
||||
)
|
||||
if ${{ inputs.publish == true }}; then
|
||||
CONFOPT+=(
|
||||
--enable-perlinterp=dynamic
|
||||
--enable-pythoninterp=dynamic
|
||||
--enable-python3interp=dynamic
|
||||
--with-python3-stable-abi=3.9 # macOS and Xcode currently ships 3.9, so we don't want go higher than that.
|
||||
--enable-rubyinterp=dynamic
|
||||
--enable-luainterp=dynamic
|
||||
--with-lua-prefix=$(brew --prefix)
|
||||
--with-macarchs="$MACVIM_ARCHS"
|
||||
)
|
||||
else
|
||||
CONFOPT+=(
|
||||
--disable-sparkle # Disable Sparkle for testing that this flag builds and works
|
||||
--enable-nls=no --enable-libsodium=no # Disable gettext and libsodium unless we built them ourselves for publish
|
||||
)
|
||||
fi
|
||||
if ${{ inputs.legacy == true }}; then
|
||||
CONFOPT+=(
|
||||
--enable-sparkle_1
|
||||
)
|
||||
fi
|
||||
echo "CONFOPT: ${CONFOPT[@]}"
|
||||
|
||||
./configure "${CONFOPT[@]}" --enable-fail-if-missing
|
||||
|
||||
sed -i.bak -f ci/config.mk.sed -f ci/config.mk.clang.sed -f ci/config.mk.xcode.sed src/auto/config.mk
|
||||
if clang --version | grep -qs '^Apple clang version \(1[3-9]\|[2-9]\d\)\.'; then
|
||||
sed -i.bak -f ci/config.mk.clang-12.sed src/auto/config.mk
|
||||
fi
|
||||
|
||||
if ${{ inputs.optimized == true }}; then
|
||||
# Additional optimizations like link-time optimizations that are a bit slower to build.
|
||||
sed -i.bak -f ci/config.mk.optimized.sed src/auto/config.mk
|
||||
fi
|
||||
|
||||
- name: Modify configure result
|
||||
if: inputs.publish
|
||||
run: |
|
||||
set -o verbose
|
||||
# Ruby is keg-only in Homebrew, so need to manually link in the path so Vim will know where to look for the binaries.
|
||||
perl -p -i -e "s#(?<=-DDYNAMIC_RUBY_DLL=\\\\\").*?(?=\\\\\")#${vi_cv_dll_name_ruby}#" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PERL_DLL=\\\\\"${vi_cv_dll_name_perl}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PYTHON_DLL=\\\\\"${vi_cv_dll_name_python}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"${vi_cv_dll_name_python3}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_RUBY_DLL=\\\\\"${vi_cv_dll_name_ruby}\\\\\"" src/auto/config.mk
|
||||
|
||||
# Also search for the arm64 overrides for the default library locations, which are different from x86_64
|
||||
# because Homebrew puts them at a different place.
|
||||
grep -q -- "-DDYNAMIC_PYTHON3_DLL_ARM64=\\\\\"${vi_cv_dll_name_python3_arm64}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_RUBY_DLL_ARM64=\\\\\"${vi_cv_dll_name_ruby_arm64}\\\\\"" src/auto/config.mk
|
||||
grep -q -- "-DDYNAMIC_LUA_DLL_ARM64=\\\\\"${vi_cv_dll_name_lua_arm64}\\\\\"" src/auto/config.mk
|
||||
|
||||
- name: Show configure output
|
||||
run: |
|
||||
cat src/auto/config.mk
|
||||
cat src/auto/config.h
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
LC_ALL: C
|
||||
run: |
|
||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
echo "Building MacVim with ${NPROC} cores"
|
||||
|
||||
set -o verbose
|
||||
make ${MAKE_BUILD_ARGS} -j${NPROC}
|
||||
|
||||
- name: Check version
|
||||
run: |
|
||||
${VIM_BIN} --version
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -c 'echo "\nprof_nsec:" .. has("prof_nsec") .. "\n"' -c quit
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
${VIM_BIN} -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
|
||||
- name: Smoketest
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
# Make sure there isn't any dynamic linkage to third-party dependencies in the built binary, as we should only use
|
||||
# static linkage to avoid dependency hell. Test that all those dylib's are in /usr/lib which is bundled with macOS and not third-party.
|
||||
if otool -L ${VIM_BIN} | grep '\.dylib\s' | grep -v '^\s*/usr/lib/'; then
|
||||
echo 'Found external dynamic linkage!'; false
|
||||
fi
|
||||
|
||||
# Make sure that --disable-sparkle flag will properly exclude all references to Sparkle symbols. This is
|
||||
# necessary because we still use weak linking to Sparkle when that flag is set and so references to Sparkle
|
||||
# wouldn't fail the build (we just remove Sparkle.framework from the built app after the fact).
|
||||
if ${{ inputs.publish == false }}; then
|
||||
# Currently we pass --disable-sparkle flag when publish==false
|
||||
if objdump -t ${MACVIM_BIN} | grep "_SPU\|_SUUpdate"; then
|
||||
echo 'Found references to Sparkle even when using --disable-sparkle'; false
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make sure man pages were bundled
|
||||
man -M `pwd`/${MACVIM_APP}/Contents/man -w mvim
|
||||
|
||||
# Make sure xxd was bundled
|
||||
echo "AB" | ${MACVIM_APP}/Contents/bin/xxd | grep "4142"
|
||||
|
||||
- name: Smoketest (publish)
|
||||
if: inputs.publish
|
||||
run: |
|
||||
set -o verbose
|
||||
|
||||
macvim_excmd() {
|
||||
${VIM_BIN} -u NONE -i NONE -g -f -X -V1 -es "$@" -c 'echo ""' -c 'qall!' 2>&1
|
||||
}
|
||||
|
||||
# Smoketest scripting languages
|
||||
macvim_excmd -c 'lua print("Test")' | grep Test
|
||||
macvim_excmd -c 'perl VIM::Msg("Test")' | grep Test
|
||||
macvim_excmd -c 'py3 print("Test")' | grep Test
|
||||
macvim_excmd -c 'ruby puts("Test")' | grep Test
|
||||
|
||||
if [[ "$(uname -m)" == "x86_64" ]]; then
|
||||
macvim_excmd -c 'py print "x86 Test"' | grep Test
|
||||
else
|
||||
# Python2 doesn't work in Apple Silicon, test under Rosetta
|
||||
(VIM_BIN="arch -x86_64 ${VIM_BIN}"; macvim_excmd -c 'py print "rosetta Test"' | grep Test)
|
||||
fi
|
||||
|
||||
# Check that localized messages work by printing ':version' and checking against localized word
|
||||
macvim_excmd -c 'lang es_ES' -c 'version' | grep Enlazado
|
||||
|
||||
# Check that libsodium is working
|
||||
macvim_excmd -c 'set cryptmethod=xchacha20v2'
|
||||
|
||||
# Make sure we are building universal x86_64 / arm64 builds and didn't accidentally create a thin app.
|
||||
check_arch() {
|
||||
local archs=($(lipo -archs "$1"))
|
||||
if [[ ${archs[@]} != "$MACVIM_ARCHS" ]]; then
|
||||
echo "Wrong arch(s) in $1: ${archs[@]}"; false
|
||||
else
|
||||
lipo -info "$1"
|
||||
fi
|
||||
}
|
||||
check_arch "${VIM_BIN}"
|
||||
check_arch "${MACVIM_BIN}"
|
||||
|
||||
- name: Check Vim help tags
|
||||
if: inputs.vimtags
|
||||
run: |
|
||||
# Confirm that we can build the help tags, and they match what's in source.
|
||||
make -C runtime/doc vimtags VIMEXE=../../${VIM_BIN}
|
||||
git diff --exit-code -- runtime/doc/tags
|
||||
|
||||
- name: Check Xcode project compatibility version
|
||||
if: inputs['check-xcodeproj-compat']
|
||||
run: |
|
||||
# Confirm that the compatibility version of xcodeproj is correct and not outdated.
|
||||
rm -rf src/MacVim/MacVim_xcode8.xcodeproj
|
||||
make -C src macvim-xcodeproj-compat
|
||||
if ! git diff --exit-code -- src/MacVim/MacVim_xcode8.xcodeproj; then
|
||||
echo 'MacVim_xcode8.xcodeproj is outdated. Run "make -C src macvim-xcodeproj-compat" to re-generate it.'; false
|
||||
fi
|
||||
|
||||
- name: Test MacVim
|
||||
id: test_macvim
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
make ${MAKE_BUILD_ARGS} -C src macvim-tests
|
||||
|
||||
- name: Upload failed MacVim test results
|
||||
if: ${{ !cancelled() && failure() && steps.test_macvim.conclusion == 'failure' }}
|
||||
uses: ./.github/actions/test_macvim_artifacts
|
||||
|
||||
- name: Build Vim test binaries
|
||||
run: |
|
||||
# Build the unit test binaries first. With link-time-optimization they take some time to link. Running them
|
||||
# separately de-couples them from the timeout in tests, and allow us to build in parallel jobs (since tests
|
||||
# can't run in parallel).
|
||||
NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
|
||||
set -o verbose
|
||||
make ${MAKE_BUILD_ARGS} -j${NPROC} -C src unittesttargets
|
||||
|
||||
- name: Test Vim
|
||||
if: startsWith(github.ref, 'refs/tags/') || !inputs.testgui
|
||||
timeout-minutes: 30
|
||||
run: |
|
||||
defaults delete org.vim.MacVim # Clean up stale states
|
||||
# Currently we don't run any non-src tests, as syntax tests are fragile and prone to spamming escape codes.
|
||||
# This needs to be investigated and fixed upstream.
|
||||
# MacVim is unlikely to introduce breaking changes in runtime files anyway.
|
||||
make ${MAKE_BUILD_ARGS} -C src test
|
||||
|
||||
- name: Test Vim (GUI)
|
||||
if: startsWith(github.ref, 'refs/tags/') || inputs.testgui
|
||||
timeout-minutes: 30
|
||||
run: |
|
||||
defaults delete org.vim.MacVim # Clean up stale states
|
||||
make ${MAKE_BUILD_ARGS} -C src/testdir clean
|
||||
make ${MAKE_BUILD_ARGS} -C src testgui
|
||||
|
||||
- name: Upload failed test files
|
||||
if: ${{ !cancelled() && failure() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
- name: Build MacVim dmg image
|
||||
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
||||
run: |
|
||||
if ${{ inputs.legacy == true }}; then
|
||||
make -C src macvim-dmg-legacy
|
||||
else
|
||||
make -C src macvim-dmg
|
||||
fi
|
||||
|
||||
if ${{ inputs.publish_postfix != '' }}; then
|
||||
mv src/MacVim/build/Release/MacVim.dmg src/MacVim/build/Release/MacVim${{ inputs.publish_postfix }}.dmg
|
||||
fi
|
||||
|
||||
# Upload the dmg installer only when making tagged release or making a dev build from a master branch.
|
||||
# Note that this doesn't create a GitHub release for us, because we would prefer to do it manually, for two
|
||||
# reasons: 1) signing / notarization are currently done out of CI, 2) we want to manually format our release notes
|
||||
# and add pictures to make them look nice.
|
||||
- name: Upload MacVim image
|
||||
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MacVim${{ inputs.publish_postfix }}.dmg
|
||||
path: src/MacVim/build/Release/MacVim${{ inputs.publish_postfix }}.dmg
|
||||
|
||||
# If doing a tagged release, use repository-specified number of retention days (usually 90 days) to make it
|
||||
# easier to audit. (specify "0" to indicate using repository settings)
|
||||
#
|
||||
# Otherwise, we are just doing a dev build for potential testing, just use a maximum of 21 days as we don't
|
||||
# tend to need these for long.
|
||||
retention-days: ${{ startsWith(github.ref, 'refs/tags/') && 0 || (github.retention_days > 21 && 21 || 0) }}
|
||||
@@ -148,6 +148,11 @@ src/xxd/xxd
|
||||
src/xxd/xxd.dSYM
|
||||
src/a.out.dSYM
|
||||
|
||||
runtime/syntax/testdir/done/
|
||||
runtime/syntax/testdir/messages
|
||||
runtime/syntax/testdir/testdeps.mk
|
||||
runtime/syntax/testdir/vimcmd
|
||||
|
||||
# Generated by "make install"
|
||||
runtime/doc/doctags
|
||||
runtime/doc/tags-*
|
||||
|
||||
@@ -98,21 +98,33 @@ src/json_test
|
||||
src/message_test
|
||||
src/kword_test
|
||||
|
||||
runtime/syntax/testdir/done/
|
||||
runtime/syntax/testdir/messages
|
||||
runtime/syntax/testdir/testdeps.mk
|
||||
runtime/syntax/testdir/vimcmd
|
||||
|
||||
# Generated by "make install"
|
||||
runtime/doc/doctags
|
||||
runtime/doc/tags-*
|
||||
|
||||
# Temporarily generated by "runtime/syntax/generator/make"
|
||||
runtime/syntax/generator/generator.err
|
||||
runtime/syntax/generator/sanity_check.err
|
||||
runtime/syntax/generator/vim.vim.rc
|
||||
|
||||
# Generated by "make shadow". The directory names could be anything but we
|
||||
# restrict them to shadow (the default) or shadow-*
|
||||
src/shadow
|
||||
src/shadow-*
|
||||
src/runtime
|
||||
src/pixmaps
|
||||
src/LICENSE
|
||||
src/README.txt
|
||||
|
||||
# other files possibly created by tools
|
||||
src/cscope.out
|
||||
|
||||
# Linter/language server files
|
||||
/.cache/clangd/
|
||||
/.ccls-cache/
|
||||
/compile_commands.json
|
||||
.cache/clangd/
|
||||
.ccls-cache/
|
||||
compile_commands.json
|
||||
|
||||
@@ -21,6 +21,31 @@ Contributions will be distributed with Vim under the Vim license. Providing a
|
||||
change to be included implies that you agree with this and your contribution
|
||||
does not cause us trouble with trademarks or patents. There is no CLA to sign.
|
||||
|
||||
## Signing-off commits
|
||||
|
||||
While not required, it's recommended to use **Signed-off commits** to ensure
|
||||
transparency, accountability, and compliance with open-source best practices.
|
||||
Signed-off commits follow the [Developer Certificate of Origin (DCO)][15],
|
||||
which confirms that contributors have the right to submit their changes under
|
||||
the project's license. This process adds a `Signed-off-by` line to commit
|
||||
messages, verifying that the contributor agrees to the project's licensing
|
||||
terms. To sign off a commit, simply use the -s flag when committing:
|
||||
|
||||
```sh
|
||||
git commit -s
|
||||
```
|
||||
|
||||
This ensures that every contribution is properly documented and traceable,
|
||||
aligning with industry standards used in projects like the Linux Kernel or
|
||||
the git project. By making Signed-off commits a standard practice, we help
|
||||
maintain a legally compliant and well-governed codebase while fostering trust
|
||||
within our contributor community.
|
||||
|
||||
When merging PRs into Vim, the current maintainer @chrisbra usually adds missing
|
||||
`Signed-off-by` trailers for the author user name and email address as well for
|
||||
anybody that explicitly *ACK*s a pull request as a statement that those
|
||||
approvers are happy with that particular change.
|
||||
|
||||
# Reporting issues
|
||||
|
||||
We use GitHub issues, but that is not a requirement. Writing to the Vim
|
||||
@@ -113,3 +138,4 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website,
|
||||
[12]: https://github.com/vim/vim/blob/master/src/testdir/test_filetype.vim
|
||||
[13]: https://github.com/vim/vim/blob/master/runtime/doc/filetype.txt
|
||||
[14]: https://github.com/vim/vim/blob/master/runtime/doc/syntax.txt
|
||||
[15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin
|
||||
|
||||
@@ -157,6 +157,7 @@ SRC_ALL = \
|
||||
src/textobject.c \
|
||||
src/textprop.c \
|
||||
src/time.c \
|
||||
src/tuple.c \
|
||||
src/typval.c \
|
||||
src/ui.c \
|
||||
src/undo.c \
|
||||
@@ -223,6 +224,7 @@ SRC_ALL = \
|
||||
src/testdir/samples/*.html \
|
||||
src/testdir/samples/*.txt \
|
||||
src/testdir/samples/*.vim \
|
||||
src/testdir/samples/poc.zip \
|
||||
src/testdir/samples/test000 \
|
||||
src/testdir/samples/test.zip \
|
||||
src/testdir/samples/test_undo.txt.undo \
|
||||
@@ -231,6 +233,8 @@ SRC_ALL = \
|
||||
src/testdir/silent.wav \
|
||||
src/testdir/popupbounce.vim \
|
||||
src/testdir/crash/* \
|
||||
src/testdir/ru_RU/LC_MESSAGES/Makefile \
|
||||
src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \
|
||||
src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.mo \
|
||||
src/proto.h \
|
||||
src/protodef.h \
|
||||
@@ -336,6 +340,7 @@ SRC_ALL = \
|
||||
src/proto/textobject.pro \
|
||||
src/proto/textprop.pro \
|
||||
src/proto/time.pro \
|
||||
src/proto/tuple.pro \
|
||||
src/proto/typval.pro \
|
||||
src/proto/ui.pro \
|
||||
src/proto/undo.pro \
|
||||
@@ -769,14 +774,16 @@ RT_ALL = \
|
||||
runtime/tools/[a-z]*[a-z0-9] \
|
||||
runtime/tutor/README.txt \
|
||||
runtime/tutor/tutor1 \
|
||||
runtime/tutor/tutor1.utf-8 \
|
||||
runtime/tutor/en/vim-01-beginner.tutor \
|
||||
runtime/tutor/en/vim-01-beginner.tutor.json \
|
||||
runtime/tutor/it/vim-01-beginner.tutor \
|
||||
runtime/tutor/it/vim-01-beginner.tutor.json \
|
||||
runtime/tutor/en/vim-02-beginner.tutor \
|
||||
runtime/tutor/en/vim-02-beginner.tutor.json \
|
||||
runtime/tutor/tutor.tutor \
|
||||
runtime/tutor/tutor.tutor.json \
|
||||
runtime/tutor/tutor.vim \
|
||||
runtime/tutor/tutor2 \
|
||||
runtime/tutor/tutor2.utf-8 \
|
||||
runtime/vimrc_example.vim \
|
||||
runtime/pack/dist/opt/cfilter/plugin/cfilter.vim \
|
||||
runtime/pack/dist/opt/comment/plugin/comment.vim \
|
||||
@@ -800,6 +807,7 @@ RT_ALL = \
|
||||
runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim \
|
||||
runtime/pack/dist/opt/helptoc/autoload/helptoc.vim \
|
||||
runtime/pack/dist/opt/helptoc/plugin/helptoc.vim \
|
||||
runtime/pack/dist/opt/hlyank/plugin/hlyank.vim \
|
||||
runtime/pack/dist/opt/justify/plugin/justify.vim \
|
||||
runtime/pack/dist/opt/matchit/plugin/matchit.vim \
|
||||
runtime/pack/dist/opt/matchit/doc/matchit.txt \
|
||||
@@ -812,6 +820,9 @@ RT_ALL = \
|
||||
runtime/pack/dist/opt/netrw/LICENSE.txt \
|
||||
runtime/pack/dist/opt/netrw/README.md \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/os.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw_gitignore.vim \
|
||||
runtime/pack/dist/opt/netrw/doc/netrw.txt \
|
||||
@@ -871,6 +882,7 @@ RT_SCRIPTS = \
|
||||
runtime/syntax/testdir/input/setup/*.* \
|
||||
runtime/syntax/testdir/dumps/*.dump \
|
||||
runtime/syntax/testdir/dumps/*.vim \
|
||||
runtime/syntax/testdir/tools/* \
|
||||
runtime/syntax/generator/Makefile \
|
||||
runtime/syntax/generator/README.md \
|
||||
runtime/syntax/generator/gen_syntax_vim.vim \
|
||||
@@ -1069,7 +1081,16 @@ LANG_GEN = \
|
||||
runtime/tutor/README.*.txt \
|
||||
runtime/tutor/Makefile \
|
||||
runtime/tutor/Make_all.mak \
|
||||
runtime/tutor/tutor1.utf-8 \
|
||||
runtime/tutor/it/vim-01-beginner.tutor \
|
||||
runtime/tutor/it/vim-01-beginner.tutor.json \
|
||||
runtime/tutor/ru/vim-01-beginner.tutor \
|
||||
runtime/tutor/ru/vim-01-beginner.tutor.json \
|
||||
runtime/tutor/ru/vim-02-beginner.tutor \
|
||||
runtime/tutor/ru/vim-02-beginner.tutor.json \
|
||||
runtime/tutor/sr/vim-01-beginner.tutor \
|
||||
runtime/tutor/sr/vim-01-beginner.tutor.json \
|
||||
runtime/tutor/sr/vim-02-beginner.tutor \
|
||||
runtime/tutor/sr/vim-02-beginner.tutor.json \
|
||||
runtime/tutor/tutor1.?? \
|
||||
runtime/tutor/tutor1.??.utf-8 \
|
||||
runtime/tutor/tutor1.??.euc \
|
||||
@@ -1082,7 +1103,6 @@ LANG_GEN = \
|
||||
runtime/tutor/tutor1.??_??.utf-8 \
|
||||
runtime/tutor/tutor1.bar \
|
||||
runtime/tutor/tutor1.bar.utf-8 \
|
||||
runtime/tutor/tutor2.utf-8 \
|
||||
runtime/tutor/tutor2.?? \
|
||||
runtime/tutor/tutor2.??.utf-8 \
|
||||
runtime/spell/README.txt \
|
||||
@@ -1143,6 +1163,8 @@ IGNORE = \
|
||||
.github/workflows/label.yml \
|
||||
SECURITY.md \
|
||||
ci/unlisted.make \
|
||||
ci/hlgroups.make \
|
||||
ci/hlgroups.ignore \
|
||||
src/libvterm/CODE-MAP \
|
||||
runtime/syntax/testdir/input/html_html \
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ VIM_FOR_SYNTAXTEST = ../../src/vim
|
||||
|
||||
# (For local testing only with GNU Make.)
|
||||
VIM_SYNTAX_TEST_FILTER =
|
||||
VIM_SYNTAX_TEST_WAIT_TIME =
|
||||
|
||||
syntaxtest:
|
||||
cd runtime/syntax && \
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
ColorColumn
|
||||
ComplMatchIns
|
||||
Conceal
|
||||
Cursor
|
||||
CursorColumn
|
||||
CursorIM
|
||||
CursorLine
|
||||
CursorLineNr
|
||||
debugBreakpoint
|
||||
debugPC
|
||||
DiffAdd
|
||||
DiffChange
|
||||
DiffDelete
|
||||
DiffText
|
||||
Directory
|
||||
ErrorMsg
|
||||
FoldColumn
|
||||
Folded
|
||||
Ignore
|
||||
IncSearch
|
||||
lCursor
|
||||
LineNr
|
||||
LineNrAbove
|
||||
LineNrBelow
|
||||
MatchParen
|
||||
Menu
|
||||
ModeMsg
|
||||
MoreMsg
|
||||
MsgArea
|
||||
NonText
|
||||
Normal
|
||||
Pmenu
|
||||
PmenuSbar
|
||||
PmenuSel
|
||||
PmenuThumb
|
||||
Question
|
||||
Scrollbar
|
||||
Search
|
||||
SignColumn
|
||||
SpecialKey
|
||||
SpellBad
|
||||
SpellCap
|
||||
SpellLocal
|
||||
SpellRare
|
||||
StatusLine
|
||||
StatusLineNC
|
||||
StatusLineTerm
|
||||
StatusLineTermNC
|
||||
TabLine
|
||||
TabLineFill
|
||||
TabLineSel
|
||||
Terminal
|
||||
Title
|
||||
TOhtmlProgress
|
||||
TOhtml-progress-color
|
||||
ToolbarButton
|
||||
ToolbarLine
|
||||
Tooltip
|
||||
User1
|
||||
User1..9
|
||||
User9
|
||||
VertSplit
|
||||
Visual
|
||||
VisualNOS
|
||||
WarningMsg
|
||||
WildMenu
|
||||
@@ -0,0 +1,18 @@
|
||||
# vim: ft=make
|
||||
SHELL = /bin/bash
|
||||
|
||||
# Default target to actually run the comparison:
|
||||
.PHONY: check
|
||||
.INTERMEDIATE: hlgroups deflinks hlgroups.stripped
|
||||
|
||||
check: hlgroups.stripped deflinks
|
||||
diff hlgroups.stripped deflinks
|
||||
|
||||
hlgroups:
|
||||
grep '\*hl-' ../runtime/doc/*txt | sed -E -e 's/.*:<?\s*//' -e 's/hl-//g' -e 's/\*//g' -e 's/ /\n/g' | sort > hlgroups
|
||||
|
||||
deflinks: ../src/highlight.c
|
||||
grep '"default link' $< | sed 's/.*default link\s*\(.*\)\s.*/\1/' | sort > deflinks
|
||||
|
||||
hlgroups.stripped: hlgroups.ignore hlgroups
|
||||
grep -v -x -F -f hlgroups.ignore hlgroups > hlgroups.stripped
|
||||
+1
-1
@@ -21,7 +21,7 @@ $(eval all_patterns := $(shell \
|
||||
p; \
|
||||
}'))
|
||||
|
||||
# In Makefile's `prepeare` target, all the IN_README_DIR files are moved from
|
||||
# In Makefile's `prepare` target, all the IN_README_DIR files are moved from
|
||||
# READMEdir to the root, so add those files in their Git-tracked location:
|
||||
all_patterns := $(all_patterns) \
|
||||
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
LICENÇA DO VIM
|
||||
|
||||
I) Não há restrições para distribuir cópias não modificadas do Vim, exceto
|
||||
que elas devem incluir este texto de licença. Você também pode distribuir
|
||||
partes não modificadas do Vim, igualmente irrestritas, exceto que elas
|
||||
devem incluir este texto de licença. Você também tem permissão para incluir
|
||||
executáveis que você fez a partir das fontes não modificadas do Vim, além
|
||||
de seus próprios exemplos de uso e scripts do Vim.
|
||||
|
||||
II) É permitido distribuir uma versão modificada (ou estendida) do Vim,
|
||||
incluindo executáveis e/ou código-fonte, quando as quatro
|
||||
condições a seguir forem atendidas:
|
||||
1) Este texto de licença deve ser incluído sem modificações.
|
||||
2) O Vim modificado deve ser distribuído de uma das cinco formas a seguir:
|
||||
a) Se você fizer alterações no Vim, deverá descrever claramente na
|
||||
distribuição como entrar em contato com você. Quando o mantenedor
|
||||
solicitar a você (de qualquer forma) uma cópia do Vim modificado que
|
||||
você distribuiu, você deverá disponibilizar suas alterações,
|
||||
incluindo o código-fonte, ao mantenedor sem taxa. O mantenedor
|
||||
reserva o direito de incluir suas alterações na versão oficial
|
||||
do Vim. O que o mantenedor fará com suas alterações e sob qual
|
||||
licença elas serão distribuídas é negociável. Se não houve negociação
|
||||
então esta licença, ou uma versão posterior, também se aplica às suas
|
||||
alterações. Os mantenedores atuais estão listados aqui:
|
||||
https://github.com/orgs/vim/people. Se isso mudar, será anunciado em
|
||||
lugares apropriados (provavelmente vim.sf.net, www.vim.org e/ou
|
||||
comp.editors). Quando for completamente impossível contatar o
|
||||
mantenedor, a obrigação de enviar a ele suas alterações cessa.
|
||||
Uma vez que o mantenedor tenha confirmado que ele recebeu suas
|
||||
alterações, elas não precisarão ser enviadas novamente.
|
||||
b) Se você recebeu um Vim modificado que foi distribuído como
|
||||
mencionado em a), você tem permissão para distribuí-lo sem
|
||||
modificações, como mencionado em I). Se você fizer alterações
|
||||
adicionais, o texto em a) se aplica a essas alterações.
|
||||
c) Forneça todas as alterações, incluindo o código-fonte, com cada cópia
|
||||
do Vim modificado que você distribuir. Isso pode ser feito na forma
|
||||
de um diff de contexto. Você pode escolher qual licença usar para o
|
||||
novo código que você adicionar. As alterações e sua licença não devem
|
||||
restringir outros de fazer suas próprias alterações na versão oficial
|
||||
do Vim.
|
||||
d) Quando você tem um Vim modificado que inclui alterações conforme
|
||||
mencionado em c), você pode distribuí-lo sem o código-fonte para as
|
||||
alterações se as três condições a seguir forem atendidas:
|
||||
- A licença que se aplica às alterações permite que você distribua
|
||||
as alterações para o mantenedor do Vim sem taxa ou restrição, e
|
||||
permite que o mantenedor do Vim inclua as alterações na
|
||||
versão oficial do Vim sem taxa ou restrição.
|
||||
- Você mantém as alterações por pelo menos três anos após a última
|
||||
distribuição do Vim modificado correspondente. Quando o mantenedor
|
||||
ou alguém para quem você distribuiu o Vim modificado solicitar a
|
||||
você (de qualquer forma) as alterações dentro deste período, você
|
||||
deve disponibilizá-las a ele.
|
||||
- Você descreve claramente na distribuição como entrar em contato
|
||||
com você. Estas informações de contato devem permanecer válidas por
|
||||
pelo menos três anos após a última distribuição do Vim modificado
|
||||
correspondente, ou pelo maior tempo possível.
|
||||
e) Quando a Licença Pública Geral GNU (GPL) se aplica às alterações,
|
||||
você pode distribuir o Vim modificado sob a GNU GPL versão 2 ou
|
||||
qualquer versão posterior.
|
||||
3) Uma mensagem deve ser adicionada, no mínimo na saída do comando
|
||||
":version" e na tela de introdução, de modo que o usuário do Vim
|
||||
modificado seja capaz de ver que ele foi modificado. Ao distribuir
|
||||
conforme mencionado em 2)e), só é necessário adicionar a mensagem
|
||||
na medida em que isso não entre em conflito com a licença usada para
|
||||
as alterações.
|
||||
4) As informações de contato conforme exigido em 2)a) e 2)d) não devem ser
|
||||
removidas ou alteradas, exceto que a própria pessoa pode fazer
|
||||
correções.
|
||||
|
||||
III) Se você distribuir uma versão modificada do Vim, encorajamos que use
|
||||
a licença do Vim para suas alterações e disponibilizá-las ao
|
||||
mantenedor, incluindo o código-fonte. A maneira preferida de fazer isso é
|
||||
por e-mail ou enviando os arquivos para um servidor e enviando a URL por
|
||||
e-mail. Se o número de alterações for pequeno (por exemplo, um Makefile
|
||||
modificado), enviar um diff de contexto por e-mail será suficiente.
|
||||
O endereço de e-mail a ser usado é <maintainer@vim.org>
|
||||
|
||||
IV) Não é permitido remover esta licença da distribuição das fontes do Vim,
|
||||
partes dela ou de uma versão modificada. Você pode usar esta licença
|
||||
para versões anteriores do Vim em vez da licença com a qual elas vieram,
|
||||
a seu critério.
|
||||
@@ -0,0 +1,131 @@
|
||||
README.txt para a versão 9.1 do Vim: Vi IMproved.
|
||||
|
||||
O QUE É VIM?
|
||||
|
||||
Vim é uma versão muito melhorada do bom e velho editor UNIX Vi. Muitos novos
|
||||
recursos foram adicionados: desfazer multinível, destaque de sintaxe, histórico
|
||||
de linha de comando, ajuda on-line, verificação ortográfica, completar
|
||||
nome de arquivo, operações de bloco, linguagem de script, etc. Há também uma
|
||||
interface gráfica (GUI) disponível. Ainda assim, a compatibilidade com Vi é
|
||||
mantida, aqueles que têm Vi "nos dedos" se sentirão em casa.
|
||||
Veja "runtime/doc/vi_diff.txt" para diferenças com Vi.
|
||||
|
||||
Este editor é muito útil para editar programas e outros arquivos de texto
|
||||
simples. Todos os comandos são fornecidos com caracteres normais do teclado,
|
||||
então aqueles que podem digitar com dez dedos podem trabalhar muito rápido.
|
||||
Além disso, as teclas de função podem ser mapeadas para comandos pelo usuário,
|
||||
e o mouse pode ser usado.
|
||||
|
||||
O Vim funciona em MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS e quase todos
|
||||
os sabores do UNIX. A portabilidade para outros sistemas não deve ser difícil.
|
||||
Versões mais antigas do Vim rodam em MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
|
||||
Amiga DOS, Atari MiNT, BeOS, RISC OS e OS/2. Eles não são mais mantidos.
|
||||
|
||||
DISTRIBUIÇÃO
|
||||
|
||||
Você pode frequentemente usar seu gerenciador de pacotes favorito para
|
||||
instalar o Vim. No Mac e Linux, uma pequena versão do Vim é pré-instalada,
|
||||
você ainda precisa instalar o Vim se quiser mais recursos.
|
||||
|
||||
Existem distribuições separadas para Unix, PC, Amiga e alguns outros sistemas.
|
||||
Este arquivo README.txt vem com o arquivo de tempo de execução. Ele inclui a
|
||||
documentação, arquivos de sintaxe e outros arquivos que são usados em
|
||||
tempo de execução. Para executar o Vim, você deve obter um dos arquivos
|
||||
binários ou um arquivo fonte. Qual deles você precisa depende do sistema em
|
||||
que deseja executá-lo e se você deseja ou deve compilá-lo você mesmo.
|
||||
Verifique "https://www.vim.org/download.php" para uma visão geral das
|
||||
distribuições disponíveis atualmente.
|
||||
|
||||
Alguns lugares populares para obter o Vim mais recente:
|
||||
* Confira o repositório git do github: https://github.com/vim/vim.
|
||||
* Obtenha o código-fonte como um arquivo: https://github.com/vim/vim/tags.
|
||||
* Obtenha um executável do Windows do repositório vim-win32-installer:
|
||||
https://github.com/vim/vim-win32-installer/releases.
|
||||
|
||||
COMPILAR
|
||||
|
||||
Se você obteve uma distribuição binária, não precisa compilar o Vim. Se você
|
||||
obteve uma distribuição de origem, todo o material para compilar o Vim está no
|
||||
diretório "src". Veja src/INSTALL para instruções.
|
||||
|
||||
INSTALAÇÃO
|
||||
|
||||
Veja um desses arquivos para instruções específicas do sistema. No diretório
|
||||
READMEdir (no repositório) ou no diretório superior (se você descompactar um
|
||||
arquivo):
|
||||
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
README_dos.txt MS-DOS e MS-Windows
|
||||
README_mac.txt Macintosh
|
||||
README_haiku.txt Haiku
|
||||
README_vms.txt VMS
|
||||
|
||||
Existem outros arquivos README_*.txt, dependendo da distribuição que você usou.
|
||||
|
||||
DOCUMENTAÇÃO
|
||||
|
||||
O tutor do Vim é um curso de treinamento de uma hora para iniciantes.
|
||||
Frequentemente, ele pode ser iniciado como "vimtutor". Veja ":help tutor"
|
||||
para mais informações.
|
||||
|
||||
O melhor é usar ":help" no Vim. Se você ainda não tem um executável, leia
|
||||
"runtime/doc/help.txt". Ele contém direcionamentos para os outros arquivos
|
||||
de documentação. O Manual do Usuário é lido como um livro e é recomendado
|
||||
para aprender a usar o Vim. Veja ":help user-manual".
|
||||
|
||||
CÓPIA
|
||||
|
||||
O Vim é um Charityware. Você pode usá-lo e copiá-lo o quanto quiser, mas
|
||||
encorajamos que faça uma doação para ajudar órfãos em Uganda. Leia o arquivo
|
||||
"runtime/doc/uganda.txt" para detalhes (execute ":help uganda" dentro do Vim).
|
||||
|
||||
Resumo da licença: Não há restrições quanto ao uso ou distribuição de uma
|
||||
cópia não modificada do Vim. Partes do Vim também podem ser distribuídas, mas
|
||||
o texto da licença deve sempre ser incluído. Para versões modificadas, algumas
|
||||
restrições se aplicam. A licença é compatível com GPL, você pode compilar o Vim
|
||||
com bibliotecas GPL e distribuí-lo.
|
||||
|
||||
PATROCÍNIO
|
||||
|
||||
Corrigir bugs e adicionar novos recursos exige muito tempo e esforço.
|
||||
Para mostrar seu apreço pelo trabalho e motivar os desenvolvedores a continuar
|
||||
trabalhando no Vim, envie uma doação.
|
||||
|
||||
O dinheiro que você doou será usado principalmente para ajudar crianças em
|
||||
Uganda. Veja "runtime/doc/uganda.txt". Mas, ao mesmo tempo, as doações aumentam
|
||||
a motivação da equipe de desenvolvimento para continuar trabalhando no Vim!
|
||||
|
||||
Para as informações mais recentes sobre patrocínio, consulte o site do Vim:
|
||||
https://www.vim.org/sponsor/
|
||||
|
||||
CONTRIBUIÇÕES
|
||||
|
||||
Se você gostaria de ajudar a tornar o Vim melhor, veja o arquivo CONTRIBUTING.md.
|
||||
|
||||
INFORMAÇÕES
|
||||
|
||||
Se você estiver no macOS, pode usar o MacVim: https://macvim.org
|
||||
|
||||
As últimas notícias sobre o Vim podem ser encontradas na página inicial do Vim:
|
||||
https://www.vim.org/
|
||||
|
||||
Se você tiver problemas, dê uma olhada na documentação ou dicas do Vim:
|
||||
https://www.vim.org/docs.php
|
||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
||||
|
||||
Se você ainda tiver problemas ou quaisquer outras perguntas, use uma das listas
|
||||
de discussão para discuti-las com usuários e desenvolvedores do Vim:
|
||||
https://www.vim.org/maillist.php
|
||||
|
||||
Se nada mais funcionar, relate os bugs diretamente para a lista de discussão
|
||||
vim-dev:
|
||||
<vim-dev@vim.org>
|
||||
|
||||
AUTOR PRINCIPAL
|
||||
|
||||
A maior parte do Vim foi criada por Bram Moolenaar <Bram@vim.org>,
|
||||
":help Bram-Moolenaar"
|
||||
|
||||
Envie quaisquer outros comentários, patches, flores e sugestões para
|
||||
a lista de discussão vim-dev: <vim-dev@vim.org>
|
||||
+4
-2
@@ -1,6 +1,6 @@
|
||||
# NSIS file to create a self-installing exe for Vim.
|
||||
# It requires NSIS version 3.0 or later.
|
||||
# Last Change: 2025 Jan 05
|
||||
# Last Change: 2025 Feb 24
|
||||
|
||||
Unicode true
|
||||
|
||||
@@ -216,6 +216,7 @@ Page custom SetCustom ValidateCustom
|
||||
|
||||
# Include support for other languages:
|
||||
!if ${HAVE_MULTI_LANG}
|
||||
!include "lang\portuguesebr.nsi"
|
||||
!include "lang\danish.nsi"
|
||||
!include "lang\dutch.nsi"
|
||||
!include "lang\german.nsi"
|
||||
@@ -806,7 +807,8 @@ Function .onInit
|
||||
ClearErrors
|
||||
System::Call 'kernel32::GetUserDefaultLocaleName(t.r19, *i${NSIS_MAX_STRLEN})'
|
||||
StrCmp $R9 "zh-cn" coincide 0
|
||||
StrCmp $R9 "zh-tw" 0 part
|
||||
StrCmp $R9 "zh-tw" coincide 0
|
||||
StrCmp $R9 "pt-br" 0 part
|
||||
coincide:
|
||||
System::Call 'User32::CharLower(t r19 r19)*i${NSIS_MAX_STRLEN}'
|
||||
${StrRep} $lng_usr "$R9" "-" "_"
|
||||
|
||||
@@ -18,6 +18,13 @@ allowable length of strings. For example:
|
||||
drop-down lists on the .vimrc page - 55 characters.
|
||||
Characters in this case mean characters of the English alphabet.
|
||||
|
||||
Once the message translation file is ready, it must be included in the
|
||||
"gvim.nsi" file.
|
||||
Find the line "# Include support for other languages:" in the file "gvim.nsi"
|
||||
and specify the name of the file with your translation below the line
|
||||
!if ${HAVE_MULTI_LANG}, similar to the entries already there. File names are
|
||||
specified in alphabetical order.
|
||||
|
||||
If you do not yet have a translated "LICENSE" file and/or a main "README.txt"
|
||||
file, set the following values:
|
||||
|
||||
@@ -32,3 +39,25 @@ variables similarly to what is done in the other translation files.
|
||||
Translation files should be located in the "lang" subdirectory of the root
|
||||
directory. The name of the files is as follows: "README.xx.txt", where xx is the
|
||||
language code according to ISO639.
|
||||
|
||||
|
||||
There are two ways to test the installer in different languages:
|
||||
|
||||
1. Find and uncomment the "!define MUI_LANGDLL_ALWAYSSHOW" line in the
|
||||
"gvim.nsi" file and rebuild the installer.
|
||||
Now every time you run it, you will see a dialog box with the possibility to
|
||||
select the language of the installer.
|
||||
|
||||
2. If the Vim editor is already installed in your system, delete the
|
||||
"Installer Language" parameter in the Windows registry under
|
||||
"HKEY_CURRENT_USER\Software\Vim".
|
||||
Or you can create a file "NoLangInstallerVim.reg" with the following content:
|
||||
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CURRENT_USER\Software\Vim]
|
||||
"Installer Language"=-
|
||||
|
||||
and apply it by double-clicking on it.
|
||||
After these steps, when you start the installer, a window with the installer
|
||||
language selection will also be displayed.
|
||||
|
||||
@@ -0,0 +1,291 @@
|
||||
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
|
||||
#
|
||||
# portuguesebr.nsi: Brazilian Portuguese strings for gvim NSIS installer.
|
||||
#
|
||||
# Locale ID : 1046
|
||||
# Locale Name : pt-BR
|
||||
# fileencoding : UTF-8
|
||||
# Author : Rafael Fontenelle
|
||||
|
||||
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||
|
||||
|
||||
# Overwrite the default translation.
|
||||
# These strings should be always English. Otherwise dosinst.c fails.
|
||||
LangString ^SetupCaption ${LANG_PORTUGUESEBR} \
|
||||
"Configuração do $(^Name)"
|
||||
LangString ^UninstallCaption ${LANG_PORTUGUESEBR} \
|
||||
"Desinstalação do $(^Name)"
|
||||
|
||||
##############################################################################
|
||||
# License file for the license page {{{1
|
||||
##############################################################################
|
||||
|
||||
LicenseLangString page_lic_file ${LANG_PORTUGUESEBR} "..\lang\LICENSE.pt_br.nsis.txt"
|
||||
|
||||
##############################################################################
|
||||
# README.txt file, which is opened after installation {{{1
|
||||
##############################################################################
|
||||
|
||||
LangString vim_readme_file ${LANG_PORTUGUESEBR} "README.pt_br.txt"
|
||||
|
||||
##############################################################################
|
||||
# MUI Configuration Strings {{{1
|
||||
##############################################################################
|
||||
|
||||
#LangString str_dest_folder ${LANG_PORTUGUESEBR} \
|
||||
# "Pasta de destino (Deve terminar com $\"vim$\")"
|
||||
|
||||
LangString str_show_readme ${LANG_PORTUGUESEBR} \
|
||||
"Mostrar o README ao concluir a instalação"
|
||||
|
||||
# Install types:
|
||||
LangString str_type_typical ${LANG_PORTUGUESEBR} \
|
||||
"Típica"
|
||||
|
||||
LangString str_type_minimal ${LANG_PORTUGUESEBR} \
|
||||
"Mínima"
|
||||
|
||||
LangString str_type_full ${LANG_PORTUGUESEBR} \
|
||||
"Completa"
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Section Titles & Description {{{1
|
||||
##############################################################################
|
||||
|
||||
LangString str_section_old_ver ${LANG_PORTUGUESEBR} \
|
||||
"Desinstalar versões existentes"
|
||||
LangString str_desc_old_ver ${LANG_PORTUGUESEBR} \
|
||||
"Desinstala versões do Vim existentes no seu sistema."
|
||||
|
||||
LangString str_section_exe ${LANG_PORTUGUESEBR} \
|
||||
"Vim GUI e arquivos de runtime"
|
||||
LangString str_desc_exe ${LANG_PORTUGUESEBR} \
|
||||
"Executáveis e arquivos de runtime do Vim GUI. Este componente \
|
||||
é obrigatório."
|
||||
|
||||
LangString str_section_console ${LANG_PORTUGUESEBR} \
|
||||
"Programa de console do Vim"
|
||||
LangString str_desc_console ${LANG_PORTUGUESEBR} \
|
||||
"Versão de console do Vim (vim.exe)."
|
||||
|
||||
LangString str_section_batch ${LANG_PORTUGUESEBR} \
|
||||
"Criar arquivos .bat"
|
||||
LangString str_desc_batch ${LANG_PORTUGUESEBR} \
|
||||
"Cria arquivos .bat para variantes do Vim no diretório Windows para \
|
||||
usar na linha de comando."
|
||||
|
||||
LangString str_group_icons ${LANG_PORTUGUESEBR} \
|
||||
"Criar ícones para o Vim"
|
||||
LangString str_desc_icons ${LANG_PORTUGUESEBR} \
|
||||
"Cria ícones para Vim em vários locais para facilitar o acesso rápido."
|
||||
|
||||
LangString str_section_desktop ${LANG_PORTUGUESEBR} \
|
||||
"Na área de trabalho"
|
||||
LangString str_desc_desktop ${LANG_PORTUGUESEBR} \
|
||||
"Cria ícones para executáveis do gVim na área de trabalho."
|
||||
|
||||
LangString str_section_start_menu ${LANG_PORTUGUESEBR} \
|
||||
"Na pasta Programas do Menu Iniciar"
|
||||
LangString str_desc_start_menu ${LANG_PORTUGUESEBR} \
|
||||
"Adiciona Vim na pasta de programas do menu iniciar."
|
||||
|
||||
#LangString str_section_quick_launch ${LANG_PORTUGUESEBR} \
|
||||
# "Na barra de Inicialização Rápida"
|
||||
#LangString str_desc_quick_launch ${LANG_PORTUGUESEBR} \
|
||||
# "Adiciona um atalho para o Vim na barra de inicialização rápida."
|
||||
|
||||
LangString str_section_edit_with ${LANG_PORTUGUESEBR} \
|
||||
"Adicionar menu de contexto do Vim"
|
||||
LangString str_desc_edit_with ${LANG_PORTUGUESEBR} \
|
||||
"Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto."
|
||||
|
||||
#LangString str_section_edit_with32 ${LANG_PORTUGUESEBR} \
|
||||
# "Versão 32 bits"
|
||||
#LangString str_desc_edit_with32 ${LANG_PORTUGUESEBR} \
|
||||
# "Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto \
|
||||
# para aplicativos 32 bits."
|
||||
|
||||
#LangString str_section_edit_with64 ${LANG_PORTUGUESEBR} \
|
||||
# "Versão 64 bits"
|
||||
#LangString str_desc_edit_with64 ${LANG_PORTUGUESEBR} \
|
||||
# "Adiciona o Vim à lista $\"Abrir com...$\" do menu de contexto \
|
||||
# para aplicativos 64 bits."
|
||||
|
||||
LangString str_section_vim_rc ${LANG_PORTUGUESEBR} \
|
||||
"Criar configuração padrão"
|
||||
LangString str_desc_vim_rc ${LANG_PORTUGUESEBR} \
|
||||
"Cria um arquivo de configuração padrão (_vimrc) se não já existir."
|
||||
|
||||
LangString str_group_plugin ${LANG_PORTUGUESEBR} \
|
||||
"Criar diretórios de plugins"
|
||||
LangString str_desc_plugin ${LANG_PORTUGUESEBR} \
|
||||
"Cria diretórios de plugins. Diretórios de plugins permitem estender \
|
||||
o Vim adicionando um arquivo a um direótrio."
|
||||
|
||||
LangString str_section_plugin_home ${LANG_PORTUGUESEBR} \
|
||||
"Privados"
|
||||
LangString str_desc_plugin_home ${LANG_PORTUGUESEBR} \
|
||||
"Cria diretórios de plugins no diretório HOME."
|
||||
|
||||
LangString str_section_plugin_vim ${LANG_PORTUGUESEBR} \
|
||||
"Compartilhados"
|
||||
LangString str_desc_plugin_vim ${LANG_PORTUGUESEBR} \
|
||||
"Cria diretórios de plugins no diretório de instalação do Vim, \
|
||||
o qual é usado por todos os usuários do sistema."
|
||||
|
||||
LangString str_section_nls ${LANG_PORTUGUESEBR} \
|
||||
"Suporte ao idioma nativo"
|
||||
LangString str_desc_nls ${LANG_PORTUGUESEBR} \
|
||||
"Instala arquivos para suporte ao idioma nativo."
|
||||
|
||||
LangString str_unsection_register ${LANG_PORTUGUESEBR} \
|
||||
"Desregistrar Vim"
|
||||
LangString str_desc_unregister ${LANG_PORTUGUESEBR} \
|
||||
"Remove os registras do Vim do sistema."
|
||||
|
||||
LangString str_unsection_exe ${LANG_PORTUGUESEBR} \
|
||||
"Remover arquivos executáveis/runtime do Vim"
|
||||
LangString str_desc_rm_exe ${LANG_PORTUGUESEBR} \
|
||||
"Remove todos os arquivos executáveis e de runtime do Vim."
|
||||
|
||||
LangString str_ungroup_plugin ${LANG_PORTUGUESEBR} \
|
||||
"Remover diretórios de plugins"
|
||||
LangString str_desc_rm_plugin ${LANG_PORTUGUESEBR} \
|
||||
"Remove os diretórios de plugins se eles estiverem vazios."
|
||||
|
||||
LangString str_unsection_plugin_home ${LANG_PORTUGUESEBR} \
|
||||
"Privados"
|
||||
LangString str_desc_rm_plugin_home ${LANG_PORTUGUESEBR} \
|
||||
"Remove os diretórios de plugins do diretório HOME."
|
||||
|
||||
LangString str_unsection_plugin_vim ${LANG_PORTUGUESEBR} \
|
||||
"Compartilhados"
|
||||
LangString str_desc_rm_plugin_vim ${LANG_PORTUGUESEBR} \
|
||||
"Remove os diretórios de plugins do diretório de instalação do Vim."
|
||||
|
||||
LangString str_unsection_rootdir ${LANG_PORTUGUESEBR} \
|
||||
"Remover diretório raiz do Vim"
|
||||
LangString str_desc_rm_rootdir ${LANG_PORTUGUESEBR} \
|
||||
"Remove o diretório raiz do Vim. Ele contém seus \
|
||||
arquivos de configuração do Vim!"
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Messages {{{1
|
||||
##############################################################################
|
||||
|
||||
#LangString str_msg_too_many_ver ${LANG_PORTUGUESEBR} \
|
||||
# "Encontradas $vim_old_ver_count versões do Vim em seu sistema.$\r$\n\
|
||||
# Este instalador só consegue lidar com ${VIM_MAX_OLD_VER} versões\
|
||||
# no máximo.$\r$\n\
|
||||
# Por favor, remova algumas versões e comece novamente."
|
||||
|
||||
#LangString str_msg_invalid_root ${LANG_PORTUGUESEBR} \
|
||||
# "Caminho de instalação inválido: $vim_install_root!$\r$\n\
|
||||
# Ele deve terminar com $\"vim$\"."
|
||||
|
||||
#LangString str_msg_bin_mismatch ${LANG_PORTUGUESEBR} \
|
||||
# "Incompatibilidade de caminho de binários!$\r$\n$\r$\n\
|
||||
# Esperava que o caminho de binários fosse $\"$vim_bin_path$\",$\r$\n\
|
||||
# mas o sistema indica que o caminho de binários é $\"$INSTDIR$\"."
|
||||
|
||||
#LangString str_msg_vim_running ${LANG_PORTUGUESEBR} \
|
||||
# "Vim ainda está em execução em seu sistema.$\r$\n\
|
||||
# Por favor, feche todas as instâncias do Vim para poder continuar."
|
||||
|
||||
#LangString str_msg_register_ole ${LANG_PORTUGUESEBR} \
|
||||
# "Tentativa de registrar o Vim com OLE. \
|
||||
# Não há mensagem que indique se isso funciona ou não."
|
||||
|
||||
#LangString str_msg_unreg_ole ${LANG_PORTUGUESEBR} \
|
||||
# "Tentando desregistrar o Vim com OLE. \
|
||||
# Não há mensagem que indique se isso funciona ou não."
|
||||
|
||||
#LangString str_msg_rm_start ${LANG_PORTUGUESEBR} \
|
||||
# "Desinstalando a seguinte versão:"
|
||||
|
||||
#LangString str_msg_rm_fail ${LANG_PORTUGUESEBR} \
|
||||
# "Falha ao desinstalar a seguinte versão:"
|
||||
|
||||
#LangString str_msg_no_rm_key ${LANG_PORTUGUESEBR} \
|
||||
# "Não foi possível encontrar a chave de registro do desinstalador."
|
||||
|
||||
#LangString str_msg_no_rm_reg ${LANG_PORTUGUESEBR} \
|
||||
# "Não foi possível encontrar o desinstalador a partir do registro."
|
||||
|
||||
#LangString str_msg_no_rm_exe ${LANG_PORTUGUESEBR} \
|
||||
# "Não foi possível acessar o desinstalador."
|
||||
|
||||
#LangString str_msg_rm_copy_fail ${LANG_PORTUGUESEBR} \
|
||||
# "Falha ao copiar o desinstalador para um diretório temporário."
|
||||
|
||||
#LangString str_msg_rm_run_fail ${LANG_PORTUGUESEBR} \
|
||||
# "Falha ao executar o desinstalador."
|
||||
|
||||
#LangString str_msg_abort_install ${LANG_PORTUGUESEBR} \
|
||||
# "Instalador será interrompido."
|
||||
|
||||
LangString str_msg_install_fail ${LANG_PORTUGUESEBR} \
|
||||
"A instalação falhou. Mais sorte na próxima vez."
|
||||
|
||||
LangString str_msg_rm_exe_fail ${LANG_PORTUGUESEBR} \
|
||||
"Alguns arquivos em $0 não foram excluídos!$\r$\n\
|
||||
Você deve fazê-lo manualmente."
|
||||
|
||||
#LangString str_msg_rm_root_fail ${LANG_PORTUGUESEBR} \
|
||||
# "AVISO: Não foi possível remover $\"$vim_install_root$\", \
|
||||
# pois não está vazio!"
|
||||
|
||||
LangString str_msg_uninstalling ${LANG_PORTUGUESEBR} \
|
||||
"Desinstalando a versão antiga..."
|
||||
|
||||
LangString str_msg_registering ${LANG_PORTUGUESEBR} \
|
||||
"Registrando..."
|
||||
|
||||
LangString str_msg_unregistering ${LANG_PORTUGUESEBR} \
|
||||
"Desregistrando..."
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Dialog Box {{{1
|
||||
##############################################################################
|
||||
|
||||
LangString str_vimrc_page_title ${LANG_PORTUGUESEBR} \
|
||||
"Escolher configurações do _vimrc"
|
||||
LangString str_vimrc_page_subtitle ${LANG_PORTUGUESEBR} \
|
||||
"Escolha as configurações para melhorias, teclado e mouse."
|
||||
|
||||
LangString str_msg_compat_title ${LANG_PORTUGUESEBR} \
|
||||
" Comportamento Vi / Vim "
|
||||
LangString str_msg_compat_desc ${LANG_PORTUGUESEBR} \
|
||||
"&Compatibilidade e melhorias"
|
||||
LangString str_msg_compat_vi ${LANG_PORTUGUESEBR} \
|
||||
"Compatível com Vi"
|
||||
LangString str_msg_compat_vim ${LANG_PORTUGUESEBR} \
|
||||
"Vim original"
|
||||
LangString str_msg_compat_defaults ${LANG_PORTUGUESEBR} \
|
||||
"Vim com algumas melhorias (carrega defaults.vim)"
|
||||
LangString str_msg_compat_all ${LANG_PORTUGUESEBR} \
|
||||
"Vim com todas as melhorias (carrega vimrc_example.vim) (Padrão)"
|
||||
|
||||
LangString str_msg_keymap_title ${LANG_PORTUGUESEBR} \
|
||||
" Mapeamentos "
|
||||
LangString str_msg_keymap_desc ${LANG_PORTUGUESEBR} \
|
||||
"&Remapear algumas teclas para o Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
|
||||
LangString str_msg_keymap_default ${LANG_PORTUGUESEBR} \
|
||||
"Não remapear teclas (Padrão)"
|
||||
LangString str_msg_keymap_windows ${LANG_PORTUGUESEBR} \
|
||||
"Remapear algumas teclas"
|
||||
|
||||
LangString str_msg_mouse_title ${LANG_PORTUGUESEBR} \
|
||||
" Mouse "
|
||||
LangString str_msg_mouse_desc ${LANG_PORTUGUESEBR} \
|
||||
"&Comportamento de botões direito e esquerdo"
|
||||
LangString str_msg_mouse_default ${LANG_PORTUGUESEBR} \
|
||||
"Direito: menu popup, Esquerdo: modo visual (Padrão)"
|
||||
LangString str_msg_mouse_windows ${LANG_PORTUGUESEBR} \
|
||||
"Direito: menu popup, Esquerdo: modo de seleção (Windows)"
|
||||
LangString str_msg_mouse_unix ${LANG_PORTUGUESEBR} \
|
||||
"Direito: estende seleção, Esquerdo: modo visual (Unix)"
|
||||
Vendored
+5
-4
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim functions for file type detection
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Jan 11
|
||||
# Last Change: 2025 Jan 25
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# These functions are moved here from runtime/filetype.vim to make startup
|
||||
@@ -1384,7 +1384,7 @@ export def FTdsp()
|
||||
setf faust
|
||||
enddef
|
||||
|
||||
# Set the filetype of a *.v file to Verilog, V or Cog based on the first 200
|
||||
# Set the filetype of a *.v file to Verilog, V or Cog based on the first 500
|
||||
# lines.
|
||||
export def FTv()
|
||||
if did_filetype()
|
||||
@@ -1397,7 +1397,7 @@ export def FTv()
|
||||
endif
|
||||
|
||||
var in_comment = 0
|
||||
for lnum in range(1, min([line("$"), 200]))
|
||||
for lnum in range(1, min([line("$"), 500]))
|
||||
var line = getline(lnum)
|
||||
# Skip Verilog and V comments (lines and blocks).
|
||||
if line =~ '^\s*/\*'
|
||||
@@ -1429,7 +1429,8 @@ export def FTv()
|
||||
# Verilog: line ends with ';' followed by an optional variable number of
|
||||
# spaces and an optional start of a comment.
|
||||
# Example: " b <= a + 1; // Add 1".
|
||||
if line =~ ';\s*\(/[/*].*\)\?$'
|
||||
# Alternatively: a module is defined: " module MyModule ( input )"
|
||||
if line =~ ';\s*\(/[/*].*\)\?$' || line =~ '\C^\s*module\s\+\w\+\s*('
|
||||
setf verilog
|
||||
return
|
||||
endif
|
||||
|
||||
Vendored
+87
-3
@@ -5,6 +5,8 @@
|
||||
" Autoload Split: Bram Moolenaar
|
||||
" Last Change: 2024 Jan 17 (make it work on AIX, see #13847)
|
||||
" 2024 Jul 06 (honor command modifiers, #15117)
|
||||
" 2025 Mar 05 (add :keepjumps, #16791)
|
||||
" 2025 Mar 09 (improve :Man completion for man-db, #16843)
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
@@ -34,6 +36,88 @@ endtry
|
||||
|
||||
unlet! uname_s
|
||||
|
||||
let s:man_db_pages_by_section = v:null
|
||||
func! s:ManDbPagesBySection() abort
|
||||
if s:man_db_pages_by_section isnot v:null
|
||||
return s:man_db_pages_by_section
|
||||
endif
|
||||
let s:man_db_pages_by_section = {}
|
||||
let list_command = 'apropos --long .'
|
||||
let unparsed_lines = []
|
||||
for line in systemlist(list_command)
|
||||
" Typical lines:
|
||||
" vim (1) - Vi IMproved, a programmer's text editor
|
||||
"
|
||||
" Unusual lines:
|
||||
" pgm_read_ T _ (3avr) - (unknown subject)
|
||||
"
|
||||
" Code that shows the line's format:
|
||||
" https://gitlab.com/man-db/man-db/-/blob/2607d203472efb036d888e9e7997724a41a53876/src/whatis.c#L409
|
||||
let match = matchlist(line, '^\(.\{-1,}\) (\(\S\+\)) ')
|
||||
if empty(match)
|
||||
call add(unparsed_lines, line)
|
||||
continue
|
||||
endif
|
||||
let [page, section] = match[1:2]
|
||||
if !has_key(s:man_db_pages_by_section, section)
|
||||
let s:man_db_pages_by_section[section] = []
|
||||
endif
|
||||
call add(s:man_db_pages_by_section[section], page)
|
||||
endfor
|
||||
if !empty(unparsed_lines)
|
||||
echomsg 'Unable to parse ' .. string(len(unparsed_lines)) .. ' lines ' ..
|
||||
\ 'from the output of `' .. list_command .. '`. Example lines:'
|
||||
for line in unparsed_lines[:9]
|
||||
echomsg line
|
||||
endfor
|
||||
endif
|
||||
return s:man_db_pages_by_section
|
||||
endfunc
|
||||
|
||||
func! dist#man#Reload() abort
|
||||
if g:ft_man_implementation ==# 'man-db'
|
||||
let s:man_db_pages_by_section = v:null
|
||||
call s:ManDbPagesBySection()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func! s:StartsWithCaseInsensitive(haystack, needle) abort
|
||||
if empty(a:needle)
|
||||
return v:true
|
||||
endif
|
||||
return a:haystack[:len(a:needle)-1] ==? a:needle
|
||||
endfunc
|
||||
|
||||
func! dist#man#ManDbComplete(arg_lead, cmd_line, cursor_pos) abort
|
||||
let args = split(trim(a:cmd_line[: a:cursor_pos - 1], '', 1), '', v:true)
|
||||
let pages_by_section = s:ManDbPagesBySection()
|
||||
if len(args) > 2
|
||||
" Page in the section args[1]. At least on Debian testing as of
|
||||
" 2025-03-06, man seems to match sections case-insensitively and match any
|
||||
" prefix of the section. E.g., `man 3 sigprocmask` and `man 3PoSi
|
||||
" sigprocmask` with both load sigprocmask(3posix) even though the 3 in the
|
||||
" first command is also the name of a different section.
|
||||
let results = []
|
||||
for [section, pages] in items(pages_by_section)
|
||||
if s:StartsWithCaseInsensitive(section, args[1])
|
||||
call extend(results, pages)
|
||||
endif
|
||||
endfor
|
||||
else
|
||||
" Could be a section, or a page in any section. Add space after sections
|
||||
" since there has to be a second argument in that case.
|
||||
let results = flattennew(values(pages_by_section), 1)
|
||||
for section in keys(pages_by_section)
|
||||
call add(results, section .. ' ')
|
||||
endfor
|
||||
endif
|
||||
call sort(results)
|
||||
call uniq(results)
|
||||
call filter(results,
|
||||
\ {_, val -> s:StartsWithCaseInsensitive(val, a:arg_lead)})
|
||||
return results
|
||||
endfunc
|
||||
|
||||
func s:ParseIntoPageAndSection()
|
||||
" Accommodate a reference that terminates in a hyphen.
|
||||
"
|
||||
@@ -188,7 +272,7 @@ func dist#man#GetPage(cmdmods, ...)
|
||||
setl buftype=nofile noswapfile
|
||||
|
||||
setl fdc=0 ma nofen nonu nornu
|
||||
%delete _
|
||||
keepjumps %delete _
|
||||
let unsetwidth = 0
|
||||
if empty($MANWIDTH)
|
||||
let $MANWIDTH = winwidth(0)
|
||||
@@ -218,10 +302,10 @@ func dist#man#GetPage(cmdmods, ...)
|
||||
endif
|
||||
" Remove blank lines from top and bottom.
|
||||
while line('$') > 1 && getline(1) =~ '^\s*$'
|
||||
1delete _
|
||||
keepjumps 1delete _
|
||||
endwhile
|
||||
while line('$') > 1 && getline('$') =~ '^\s*$'
|
||||
$delete _
|
||||
keepjumps $delete _
|
||||
endwhile
|
||||
1
|
||||
setl ft=man nomod
|
||||
|
||||
Vendored
+119
-9
@@ -2,19 +2,129 @@ vim9script
|
||||
|
||||
# Vim runtime support library
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2023 Oct 25
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Jan 29
|
||||
|
||||
export def IsSafeExecutable(filetype: string, executable: string): bool
|
||||
if empty(exepath(executable))
|
||||
return v:false
|
||||
if empty(exepath(executable))
|
||||
return v:false
|
||||
endif
|
||||
var cwd = getcwd()
|
||||
return get(g:, filetype .. '_exec', get(g:, 'plugin_exec', 0))
|
||||
&& (fnamemodify(exepath(executable), ':p:h') !=# cwd
|
||||
|| (split($PATH, has('win32') ? ';' : ':')->index(cwd) != -1
|
||||
&& cwd != '.'))
|
||||
enddef
|
||||
|
||||
def Redir(): string
|
||||
if get(g:, 'netrw_suppress_gx_mesg', true)
|
||||
if &srr =~# "%s"
|
||||
return printf(&srr, has("win32") ? "nul" : "/dev/null")
|
||||
elseif &srr =~# '>&\?$'
|
||||
return &srr .. (has("win32") ? "nul" : "/dev/null")
|
||||
else
|
||||
return &srr .. (has("win32") ? "> nul" : "> /dev/null")
|
||||
endif
|
||||
var cwd = getcwd()
|
||||
return get(g:, filetype .. '_exec', get(g:, 'plugin_exec', 0))
|
||||
&& (fnamemodify(exepath(executable), ':p:h') !=# cwd
|
||||
|| (split($PATH, has('win32') ? ';' : ':')->index(cwd) != -1
|
||||
&& cwd != '.'))
|
||||
endif
|
||||
return ''
|
||||
enddef
|
||||
|
||||
if has('unix')
|
||||
if has('win32unix')
|
||||
# Cygwin provides cygstart
|
||||
if executable('cygstart')
|
||||
export def Launch(args: string)
|
||||
execute $'silent ! cygstart --hide {args} {Redir()}' | redraw!
|
||||
enddef
|
||||
elseif !empty($MSYSTEM) && executable('start')
|
||||
# MSYS2/Git Bash comes by default without cygstart; see
|
||||
# https://www.msys2.org/wiki/How-does-MSYS2-differ-from-Cygwin
|
||||
# Instead it provides /usr/bin/start script running `cmd.exe //c start`
|
||||
# Adding "" //b` sets void title, hides cmd window and blocks path conversion
|
||||
# of /b to \b\ " by MSYS2; see https://www.msys2.org/docs/filesystem-paths/
|
||||
export def Launch(args: string)
|
||||
execute $'silent !start "" //b {args} {Redir()}' | redraw!
|
||||
enddef
|
||||
else
|
||||
# imitate /usr/bin/start script for other environments and hope for the best
|
||||
export def Launch(args: string)
|
||||
execute $'silent !cmd /c start "" /b {args} {Redir()}' | redraw!
|
||||
enddef
|
||||
endif
|
||||
elseif exists('$WSL_DISTRO_NAME') # use cmd.exe to start GUI apps in WSL
|
||||
export def Launch(args: string)
|
||||
const command = (args =~? '\v<\f+\.(exe|com|bat|cmd)>')
|
||||
? $'cmd.exe /c start /b {args} {Redir()}'
|
||||
: $'nohup {args} {Redir()} &'
|
||||
execute $'silent ! {command}' | redraw!
|
||||
enddef
|
||||
else
|
||||
export def Launch(args: string)
|
||||
const fork = has('gui_running') ? '' : '&'
|
||||
execute $':silent ! nohup {args} {Redir()} {fork}' | redraw!
|
||||
enddef
|
||||
endif
|
||||
elseif has('win32')
|
||||
export def Launch(args: string)
|
||||
const shell = (&shell =~? '\<cmd\.exe\>') ? '' : 'cmd.exe /c'
|
||||
const quotes = empty(shell) ? '' : '""'
|
||||
execute $'silent ! {shell} start {quotes} /b {args} {Redir()}' | redraw!
|
||||
enddef
|
||||
else
|
||||
export def Launch(dummy: string)
|
||||
echom 'No common launcher found'
|
||||
enddef
|
||||
endif
|
||||
|
||||
var os_viewer = null_string
|
||||
# Git Bash
|
||||
if has('win32unix')
|
||||
# (cyg)start suffices
|
||||
os_viewer = ''
|
||||
# Windows / WSL
|
||||
elseif executable('explorer.exe')
|
||||
os_viewer = 'explorer.exe'
|
||||
# Linux / BSD
|
||||
elseif executable('xdg-open')
|
||||
os_viewer = 'xdg-open'
|
||||
# MacOS
|
||||
elseif executable('open')
|
||||
os_viewer = 'open'
|
||||
endif
|
||||
|
||||
def Viewer(): string
|
||||
# g:Openprg could be a string of program + its arguments, test if first
|
||||
# argument is executable
|
||||
var user_viewer = get(g:, "Openprg", get(g:, "netrw_browsex_viewer", ""))
|
||||
|
||||
# Take care of an off-by-one check for "for" too
|
||||
if executable(trim(user_viewer))
|
||||
return user_viewer
|
||||
endif
|
||||
|
||||
var args = split(user_viewer, '\s\+\zs')
|
||||
var viewer = get(args, 0, '')
|
||||
|
||||
for arg in args[1 :]
|
||||
if executable(trim(viewer))
|
||||
return user_viewer
|
||||
endif
|
||||
|
||||
viewer ..= arg
|
||||
endfor
|
||||
|
||||
if os_viewer == null
|
||||
echoerr "No program to open this path found. See :help Open for more information."
|
||||
endif
|
||||
|
||||
return os_viewer
|
||||
enddef
|
||||
|
||||
export def Open(file: string)
|
||||
Launch($"{Viewer()} {shellescape(file, 1)}")
|
||||
enddef
|
||||
|
||||
# Uncomment this line to check for compilation errors early
|
||||
# defcompile
|
||||
|
||||
# vim: ts=8 sts=2 sw=2 et
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
" autoloading search path fix
|
||||
" substitution of hardcoded commands with global variables
|
||||
" 2024 Nov 12 by Vim Project: fix problems on Windows (#16036)
|
||||
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
|
||||
" }}}
|
||||
"
|
||||
" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
|
||||
@@ -100,6 +101,10 @@ if !exists("g:GetLatestVimScripts_bunzip2")
|
||||
let g:GetLatestVimScripts_bunzip2= "bunzip2"
|
||||
endif
|
||||
|
||||
if !exists("g:GetLatestVimScripts_bunzip3")
|
||||
let g:GetLatestVimScripts_bunzip3= "bunzip3"
|
||||
endif
|
||||
|
||||
if !exists("g:GetLatestVimScripts_gunzip")
|
||||
let g:GetLatestVimScripts_gunzip= "gunzip"
|
||||
endif
|
||||
@@ -565,73 +570,55 @@ fun! s:GetOneScript(...)
|
||||
" --------------------------------------------------------------------------
|
||||
" call Decho("checking if plugin requested autoinstall: doautoinstall=".doautoinstall)
|
||||
if doautoinstall
|
||||
" call Decho(" ")
|
||||
" call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
|
||||
if filereadable(sname)
|
||||
" call Decho("<".sname."> is readable")
|
||||
" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall))
|
||||
exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)
|
||||
let curdir = fnameescape(substitute(getcwd(),'\','/','ge'))
|
||||
let installdir= curdir."/Installed"
|
||||
if !isdirectory(installdir)
|
||||
call mkdir(installdir)
|
||||
endif
|
||||
" call Decho("curdir<".curdir."> installdir<".installdir.">")
|
||||
" call Decho("exe cd ".fnameescape(s:autoinstall))
|
||||
exe "cd ".fnameescape(s:autoinstall)
|
||||
|
||||
" determine target directory for moves
|
||||
let firstdir= substitute(&rtp,',.*$','','')
|
||||
let pname = substitute(sname,'\..*','.vim','')
|
||||
" call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?")
|
||||
if filereadable(firstdir.'/AsNeeded/'.pname)
|
||||
let tgtdir= "AsNeeded"
|
||||
else
|
||||
let tgtdir= "plugin"
|
||||
endif
|
||||
" call Decho("tgtdir<".tgtdir."> pname<".pname.">")
|
||||
|
||||
|
||||
" decompress
|
||||
if sname =~ '\.bz2$'
|
||||
" call Decho("decompress: attempt to bunzip2 ".sname)
|
||||
exe "sil !".g:GetLatestVimScripts_bunzip2." ".shellescape(sname)
|
||||
let sname= substitute(sname,'\.bz2$','','')
|
||||
" call Decho("decompress: new sname<".sname."> after bunzip2")
|
||||
elseif sname =~ '\.bz3$'
|
||||
exe "sil !".g:GetLatestVimScripts_bunzip3." ".shellescape(sname)
|
||||
let sname= substitute(sname,'\.bz3$','','')
|
||||
elseif sname =~ '\.gz$'
|
||||
" call Decho("decompress: attempt to gunzip ".sname)
|
||||
exe "sil !".g:GetLatestVimScripts_gunzip." ".shellescape(sname)
|
||||
let sname= substitute(sname,'\.gz$','','')
|
||||
" call Decho("decompress: new sname<".sname."> after gunzip")
|
||||
elseif sname =~ '\.xz$'
|
||||
" call Decho("decompress: attempt to unxz ".sname)
|
||||
exe "sil !".g:GetLatestVimScripts_unxz." ".shellescape(sname)
|
||||
let sname= substitute(sname,'\.xz$','','')
|
||||
" call Decho("decompress: new sname<".sname."> after unxz")
|
||||
else
|
||||
" call Decho("no decompression needed")
|
||||
endif
|
||||
|
||||
|
||||
" distribute archive(.zip, .tar, .vba, .vmb, ...) contents
|
||||
if sname =~ '\.zip$'
|
||||
" call Decho("dearchive: attempt to unzip ".sname)
|
||||
exe "silent !".g:GetLatestVimScripts_unzip." -o ".shellescape(sname)
|
||||
elseif sname =~ '\.tar$'
|
||||
" call Decho("dearchive: attempt to untar ".sname)
|
||||
exe "silent !tar -xvf ".shellescape(sname)
|
||||
elseif sname =~ '\.tgz$'
|
||||
" call Decho("dearchive: attempt to untar+gunzip ".sname)
|
||||
exe "silent !tar -zxvf ".shellescape(sname)
|
||||
elseif sname =~ '\.taz$'
|
||||
" call Decho("dearchive: attempt to untar+uncompress ".sname)
|
||||
exe "silent !tar -Zxvf ".shellescape(sname)
|
||||
elseif sname =~ '\.tbz$'
|
||||
" call Decho("dearchive: attempt to untar+bunzip2 ".sname)
|
||||
exe "silent !tar -jxvf ".shellescape(sname)
|
||||
elseif sname =~ '\.txz$'
|
||||
" call Decho("dearchive: attempt to untar+xz ".sname)
|
||||
exe "silent !tar -Jxvf ".shellescape(sname)
|
||||
elseif sname =~ '\.vba$\|\.vmb$'
|
||||
" call Decho("dearchive: attempt to handle a vimball: ".sname)
|
||||
silent 1split
|
||||
if exists("g:vimball_home")
|
||||
let oldvimballhome= g:vimball_home
|
||||
@@ -648,25 +635,21 @@ fun! s:GetOneScript(...)
|
||||
else
|
||||
" call Decho("no dearchiving needed")
|
||||
endif
|
||||
|
||||
|
||||
" ---------------------------------------------
|
||||
" move plugin to plugin/ or AsNeeded/ directory
|
||||
" ---------------------------------------------
|
||||
if sname =~ '.vim$'
|
||||
" call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir)
|
||||
exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir
|
||||
else
|
||||
" call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
|
||||
exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir
|
||||
endif
|
||||
if tgtdir != "plugin"
|
||||
" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir)
|
||||
exe "silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir
|
||||
endif
|
||||
|
||||
|
||||
" helptags step
|
||||
let docdir= substitute(&rtp,',.*','','e')."/doc"
|
||||
" call Decho("helptags: docdir<".docdir.">")
|
||||
exe "helptags ".fnameescape(docdir)
|
||||
exe "cd ".fnameescape(curdir)
|
||||
endif
|
||||
@@ -681,13 +664,8 @@ fun! s:GetOneScript(...)
|
||||
|
||||
" update the data in the <GetLatestVimScripts.dat> file
|
||||
call setline(line("."),modline)
|
||||
" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
|
||||
" else " Decho
|
||||
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
|
||||
endif
|
||||
|
||||
" call Dredir("BUFFER TEST (GetOneScript)","ls!")
|
||||
" call Dret("GetOneScript")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
|
||||
+120
-134
@@ -1,10 +1,19 @@
|
||||
" tar.vim: Handles browsing tarfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Nov 11, 2024
|
||||
" tar.vim: Handles browsing tarfiles - AUTOLOAD PORTION
|
||||
" Date: Mar 01, 2025
|
||||
" Version: 32b (with modifications from the Vim Project)
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Former Maintainer: Charles E Campbell
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Last Change:
|
||||
" 2024 Jan 08 by Vim Project: fix a few problems (#138331, #12637, #8109)
|
||||
" 2024 Feb 19 by Vim Project: announce adoption
|
||||
" 2024 Nov 11 by Vim Project: support permissions (#7379)
|
||||
" 2025 Feb 06 by Vim Project: add support for lz4 (#16591)
|
||||
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
|
||||
" 2025 Mar 01 by Vim Project: fix syntax error in tar#Read()
|
||||
" 2025 Mar 02 by Vim Project: escape the filename before using :read
|
||||
" 2025 Mar 02 by Vim Project: determine the compression using readblob()
|
||||
" instead of shelling out to file(1)
|
||||
"
|
||||
" Contains many ideas from Michael Toren's <tar.vim>
|
||||
"
|
||||
@@ -17,7 +26,6 @@
|
||||
" By using this plugin, you agree that in no event will the
|
||||
" copyright holder be liable for any damages resulting from
|
||||
" the use of this software.
|
||||
" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
" ---------------------------------------------------------------------
|
||||
" Load Once: {{{1
|
||||
if &cp || exists("g:loaded_tar")
|
||||
@@ -32,8 +40,6 @@ if v:version < 702
|
||||
endif
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
"DechoTabOn
|
||||
"call Decho("loading autoload/tar.vim")
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Default Settings: {{{1
|
||||
@@ -96,7 +102,6 @@ if !exists("g:tar_shq")
|
||||
else
|
||||
let g:tar_shq= "'"
|
||||
endif
|
||||
" call Decho("g:tar_shq<".g:tar_shq.">")
|
||||
endif
|
||||
|
||||
" ----------------
|
||||
@@ -106,29 +111,23 @@ endif
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Browse: {{{2
|
||||
fun! tar#Browse(tarfile)
|
||||
" call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
" sanity checks
|
||||
if !executable(g:tar_cmd)
|
||||
redraw!
|
||||
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
|
||||
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse")
|
||||
return
|
||||
endif
|
||||
if !filereadable(a:tarfile)
|
||||
" call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
|
||||
if a:tarfile !~# '^\a\+://'
|
||||
" if it's an url, don't complain, let url-handlers such as vim do its thing
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">")
|
||||
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
|
||||
endif
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse : file<".a:tarfile."> not readable")
|
||||
return
|
||||
endif
|
||||
if &ma != 1
|
||||
@@ -144,7 +143,6 @@ fun! tar#Browse(tarfile)
|
||||
set ft=tar
|
||||
|
||||
" give header
|
||||
" call Decho("printing header")
|
||||
let lastline= line("$")
|
||||
call setline(lastline+1,'" tar.vim version '.g:loaded_tar)
|
||||
call setline(lastline+2,'" Browsing tarfile '.a:tarfile)
|
||||
@@ -161,52 +159,50 @@ fun! tar#Browse(tarfile)
|
||||
let curlast= line("$")
|
||||
|
||||
if tarfile =~# '\.\(gz\)$'
|
||||
" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
|
||||
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzst\)$'
|
||||
if has("unix") && executable("file")
|
||||
let filekind= system("file ".shellescape(tarfile,1))
|
||||
else
|
||||
let filekind= ""
|
||||
endif
|
||||
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' ||
|
||||
\ tarfile =~# '\.\(tzst\)$' || tarfile =~# '\.\(tlz4\)$'
|
||||
let header= s:Header(tarfile)
|
||||
|
||||
if filekind =~ "bzip2"
|
||||
if header =~? 'bzip2'
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif filekind =~ "XZ"
|
||||
elseif header =~? 'bzip3'
|
||||
exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif header =~? 'xz'
|
||||
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif filekind =~ "Zstandard"
|
||||
elseif header =~? 'zstd'
|
||||
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
else
|
||||
elseif header =~? 'lz4'
|
||||
exe "sil! r! lz4 --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif header =~? 'gzip'
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
endif
|
||||
|
||||
elseif tarfile =~# '\.lrp'
|
||||
" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$'
|
||||
" call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(bz3\|tb3\)$'
|
||||
exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(lzma\|tlz\)$'
|
||||
" call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(xz\|txz\)$'
|
||||
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
|
||||
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(zst\|tzst\)$'
|
||||
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
elseif tarfile =~# '\.\(lz4\|tlz4\)$'
|
||||
exe "sil! r! lz4 --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
|
||||
else
|
||||
if tarfile =~ '^\s*-'
|
||||
" A file name starting with a dash is taken as an option. Prepend ./ to avoid that.
|
||||
let tarfile = substitute(tarfile, '-', './-', '')
|
||||
endif
|
||||
" call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0))
|
||||
exe "sil! r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1)
|
||||
endif
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
|
||||
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
|
||||
return
|
||||
endif
|
||||
"
|
||||
@@ -237,29 +233,24 @@ fun! tar#Browse(tarfile)
|
||||
endif
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse : b:tarfile<".b:tarfile.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" TarBrowseSelect: {{{2
|
||||
fun! s:TarBrowseSelect()
|
||||
" call Dfunc("TarBrowseSelect() b:tarfile<".b:tarfile."> curfile<".expand("%").">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let fname= getline(".")
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
|
||||
redraw!
|
||||
echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
|
||||
" call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
|
||||
return
|
||||
endif
|
||||
|
||||
" sanity check
|
||||
if fname =~ '^"'
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -283,19 +274,19 @@ fun! s:TarBrowseSelect()
|
||||
exe 'com! -buffer -nargs=? -complete=file TarDiff :call tar#Diff(<q-args>,"'.fnameescape(fname).'")'
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Read: {{{2
|
||||
fun! tar#Read(fname,mode)
|
||||
" call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','')
|
||||
let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','')
|
||||
" be careful not to execute special crafted files
|
||||
let escape_file = fname->fnameescape()
|
||||
|
||||
" changing the directory to the temporary earlier to allow tar to extract the file with permissions intact
|
||||
" changing the directory to the temporary earlier to allow tar to extract the file with permissions intact
|
||||
if !exists("*mkdir")
|
||||
redraw!
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
|
||||
@@ -333,12 +324,13 @@ fun! tar#Read(fname,mode)
|
||||
" assuming cygwin
|
||||
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
|
||||
endif
|
||||
" call Decho("tarfile<".tarfile.">")
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
if fname =~ '\.bz2$' && executable("bzcat")
|
||||
let decmp= "|bzcat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.bz3$' && executable("bz3cat")
|
||||
let decmp= "|bz3cat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.t\=gz$' && executable("zcat")
|
||||
let decmp= "|zcat"
|
||||
let doro = 1
|
||||
@@ -351,10 +343,13 @@ fun! tar#Read(fname,mode)
|
||||
elseif fname =~ '\.zst$' && executable("zstdcat")
|
||||
let decmp= "|zstdcat"
|
||||
let doro = 1
|
||||
elseif fname =~ '\.lz4$' && executable("lz4cat")
|
||||
let decmp= "|lz4cat"
|
||||
let doro = 1
|
||||
else
|
||||
let decmp=""
|
||||
let doro = 0
|
||||
if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$'
|
||||
if fname =~ '\.bz2$\|\.bz3$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$'
|
||||
setlocal bin
|
||||
endif
|
||||
endif
|
||||
@@ -367,47 +362,51 @@ fun! tar#Read(fname,mode)
|
||||
|
||||
if tarfile =~# '\.bz2$'
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\.bz3$'
|
||||
exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\.\(gz\)$'
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)'
|
||||
if has("unix") && executable("file")
|
||||
let filekind= system("file ".shellescape(tarfile,1))
|
||||
else
|
||||
let filekind= ""
|
||||
endif
|
||||
if filekind =~ "bzip2"
|
||||
let filekind= s:Header(tarfile)
|
||||
if filekind =~? "bzip2"
|
||||
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
elseif filekind =~ "XZ"
|
||||
exe "read ".escape_file
|
||||
elseif filekind =~ "bzip3"
|
||||
exe "sil! r! bzip3 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".escape_file
|
||||
elseif filekind =~? "xz"
|
||||
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
elseif filekind =~ "Zstandard"
|
||||
exe "read ".escape_file
|
||||
elseif filekind =~? "zstd"
|
||||
exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
else
|
||||
exe "read ".escape_file
|
||||
elseif filekind =~? "gzip"
|
||||
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
endif
|
||||
|
||||
elseif tarfile =~# '\.lrp$'
|
||||
exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\.lzma$'
|
||||
exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\.\(xz\|txz\)$'
|
||||
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
elseif tarfile =~# '\.\(lz4\|tlz4\)$'
|
||||
exe "sil! r! lz4 --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".escape_file
|
||||
else
|
||||
if tarfile =~ '^\s*-'
|
||||
" A file name starting with a dash is taken as an option. Prepend ./ to avoid that.
|
||||
let tarfile = substitute(tarfile, '-', './-', '')
|
||||
endif
|
||||
" call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp)
|
||||
exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp
|
||||
exe "read ".fname
|
||||
exe "read ".escape_file
|
||||
endif
|
||||
|
||||
redraw!
|
||||
@@ -432,16 +431,13 @@ if v:shell_error != 0
|
||||
set nomod
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Read : b:tarfile<".b:tarfile.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Write: {{{2
|
||||
fun! tar#Write(fname)
|
||||
" call Dfunc("tar#Write(fname<".a:fname.">) b:tarfile<".b:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
" temporary buffer variable workaround because too fucking tired. but it works now
|
||||
let curdir= b:curdir
|
||||
let tmpdir= b:tmpdir
|
||||
@@ -449,16 +445,13 @@ fun! tar#Write(fname)
|
||||
if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-'
|
||||
redraw!
|
||||
echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"'
|
||||
" call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"')
|
||||
return
|
||||
endif
|
||||
|
||||
" sanity checks
|
||||
if !executable(g:tar_cmd)
|
||||
redraw!
|
||||
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -470,43 +463,43 @@ fun! tar#Write(fname)
|
||||
call system("bzip2 -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.bz2','','e')
|
||||
let compress= "bzip2 -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.bz3'
|
||||
call system("bzip3 -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.bz3','','e')
|
||||
let compress= "bzip3 -- ".shellescape(tarfile,0)
|
||||
elseif tarfile =~# '\.gz'
|
||||
call system("gzip -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.gz','','e')
|
||||
let compress= "gzip -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.tgz'
|
||||
call system("gzip -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.tgz','.tar','e')
|
||||
let compress= "gzip -- ".shellescape(tarfile,0)
|
||||
let tgz = 1
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.xz'
|
||||
call system("xz -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.xz','','e')
|
||||
let compress= "xz -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
elseif tarfile =~# '\.zst'
|
||||
call system("zstd --decompress --rm -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.zst','','e')
|
||||
let compress= "zstd --rm -- ".shellescape(tarfile,0)
|
||||
elseif tarfile =~# '\.lz4'
|
||||
call system("lz4 --decompress --rm -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.lz4','','e')
|
||||
let compress= "lz4 --rm -- ".shellescape(tarfile,0)
|
||||
elseif tarfile =~# '\.lzma'
|
||||
call system("lzma -d -- ".shellescape(tarfile,0))
|
||||
let tarfile = substitute(tarfile,'\.lzma','','e')
|
||||
let compress= "lzma -- ".shellescape(tarfile,0)
|
||||
" call Decho("compress<".compress.">")
|
||||
endif
|
||||
" call Decho("tarfile<".tarfile.">")
|
||||
" Note: no support for name.tar.tbz/.txz/.tgz/.tlz4/.tzst
|
||||
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname)
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
|
||||
else
|
||||
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
if fname =~ '/'
|
||||
let dirpath = substitute(fname,'/[^/]\+$','','e')
|
||||
if has("win32unix") && executable("cygpath")
|
||||
@@ -521,7 +514,6 @@ fun! tar#Write(fname)
|
||||
" A file name starting with a dash may be taken as an option. Prepend ./ to avoid that.
|
||||
let tarfile = substitute(tarfile, '-', './-', '')
|
||||
endif
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
if exists("g:tar_secure")
|
||||
let tar_secure= " -- "
|
||||
@@ -534,26 +526,20 @@ fun! tar#Write(fname)
|
||||
endif
|
||||
|
||||
" delete old file from tarfile
|
||||
" call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
|
||||
call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
|
||||
else
|
||||
|
||||
" update tarfile with new file
|
||||
" call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
|
||||
if v:shell_error != 0
|
||||
redraw!
|
||||
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
|
||||
elseif exists("compress")
|
||||
" call Decho("call system(".compress.")")
|
||||
call system(compress)
|
||||
if exists("tgz")
|
||||
" call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
|
||||
call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
|
||||
endif
|
||||
endif
|
||||
@@ -561,7 +547,6 @@ fun! tar#Write(fname)
|
||||
|
||||
" support writing tarfiles across a network
|
||||
if s:tblfile_{winnr()} =~ '^\a\+://'
|
||||
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
|
||||
let tblfile= s:tblfile_{winnr()}
|
||||
1split|noswapfile enew
|
||||
let binkeep= &l:binary
|
||||
@@ -583,13 +568,11 @@ fun! tar#Write(fname)
|
||||
setlocal nomod
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Diff: {{{2
|
||||
fun! tar#Diff(userfname,fname)
|
||||
" call Dfunc("tar#Diff(userfname<".a:userfname."> fname<".a:fname.")")
|
||||
let fname= a:fname
|
||||
if a:userfname != ""
|
||||
let fname= a:userfname
|
||||
@@ -607,133 +590,135 @@ fun! tar#Diff(userfname,fname)
|
||||
redraw!
|
||||
echo "***warning*** unable to read file<".fname.">"
|
||||
endif
|
||||
" call Dret("tar#Diff")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Extract: extract a file from a (possibly compressed) tar archive {{{2
|
||||
fun! tar#Extract()
|
||||
" call Dfunc("tar#Extract()")
|
||||
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let fname= getline(".")
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
|
||||
redraw!
|
||||
echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
|
||||
" call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
|
||||
return
|
||||
endif
|
||||
|
||||
" sanity check
|
||||
if fname =~ '^"'
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect")
|
||||
return
|
||||
endif
|
||||
|
||||
let tarball = expand("%")
|
||||
" call Decho("tarball<".tarball.">")
|
||||
let tarbase = substitute(tarball,'\..*$','','')
|
||||
" call Decho("tarbase<".tarbase.">")
|
||||
|
||||
let extractcmd= netrw#WinPath(g:tar_extractcmd)
|
||||
if filereadable(tarbase.".tar")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tgz")
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tgz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."t ".tarbase.".tgz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.gz")
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tbz")
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.bz2")
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.bz3")
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.bz3 ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz3 ".fname.": failed!" | echohl NONE
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".txz")
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.xz")
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tzst")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.zst")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE
|
||||
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tlz4")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tlz4 ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tlz4 ".fname.": failed!" | echohl NONE
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.lz4")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.lz4".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.lz4 ".fname.": failed!" | echohl NONE
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
@@ -741,14 +726,11 @@ fun! tar#Extract()
|
||||
|
||||
" restore option
|
||||
let &report= repkeep
|
||||
|
||||
" call Dret("tar#Extract")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" s:Rmdir: {{{2
|
||||
fun! s:Rmdir(fname)
|
||||
" call Dfunc("Rmdir(fname<".a:fname.">)")
|
||||
if has("unix")
|
||||
call system("/bin/rm -rf -- ".shellescape(a:fname,0))
|
||||
elseif has("win32") || has("win95") || has("win64") || has("win16")
|
||||
@@ -758,44 +740,55 @@ fun! s:Rmdir(fname)
|
||||
call system("del /S ".shellescape(a:fname,0))
|
||||
endif
|
||||
endif
|
||||
" call Dret("Rmdir")
|
||||
endfun
|
||||
|
||||
" s:FileHeader: {{{2
|
||||
fun! s:Header(fname)
|
||||
let header= readblob(a:fname, 0, 6)
|
||||
if header[0:2] == str2blob(['BZh']) " bzip2 header
|
||||
return "bzip2"
|
||||
elseif header[0:2] == str2blob(['BZ3']) " bzip3 header
|
||||
return "bzip3"
|
||||
elseif header == str2blob(["\3757zXZ\n"]) " xz header
|
||||
return "xz"
|
||||
elseif header[0:3] == str2blob(["\x28\xB5\x2F\xFD"]) " zstd header
|
||||
return "zstd"
|
||||
elseif header[0:3] == str2blob(["\004\"M\030"]) " lz4 header
|
||||
return "lz4"
|
||||
elseif (header[0:1] == str2blob(["\037\235"]) ||
|
||||
\ header[0:1] == str2blob(["\037\213"]) ||
|
||||
\ header[0:1] == str2blob(["\037\236"]) ||
|
||||
\ header[0:1] == str2blob(["\037\240"]) ||
|
||||
\ header[0:1] == str2blob(["\037\036"]))
|
||||
return "gzip"
|
||||
endif
|
||||
return "unknown"
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2
|
||||
fun! tar#Vimuntar(...)
|
||||
" call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">")
|
||||
let tarball = expand("%")
|
||||
" call Decho("tarball<".tarball.">")
|
||||
let tarbase = substitute(tarball,'\..*$','','')
|
||||
" call Decho("tarbase<".tarbase.">")
|
||||
let tarhome = expand("%:p")
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
let tarhome= substitute(tarhome,'\\','/','g')
|
||||
endif
|
||||
let tarhome= substitute(tarhome,'/[^/]*$','','')
|
||||
" call Decho("tarhome<".tarhome.">")
|
||||
let tartail = expand("%:t")
|
||||
" call Decho("tartail<".tartail.">")
|
||||
let curdir = getcwd()
|
||||
" call Decho("curdir <".curdir.">")
|
||||
" set up vimhome
|
||||
if a:0 > 0 && a:1 != ""
|
||||
let vimhome= a:1
|
||||
else
|
||||
let vimhome= vimball#VimballHome()
|
||||
endif
|
||||
" call Decho("vimhome<".vimhome.">")
|
||||
|
||||
" call Decho("curdir<".curdir."> vimhome<".vimhome.">")
|
||||
if simplify(curdir) != simplify(vimhome)
|
||||
" copy (possibly compressed) tarball to .vim/vimfiles
|
||||
" call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
|
||||
call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
|
||||
" call Decho("exe cd ".fnameescape(vimhome))
|
||||
exe "cd ".fnameescape(vimhome)
|
||||
endif
|
||||
" call Decho("getcwd<".getcwd().">")
|
||||
|
||||
" if necessary, decompress the tarball; then, extract it
|
||||
if tartail =~ '\.tgz'
|
||||
@@ -807,24 +800,19 @@ fun! tar#Vimuntar(...)
|
||||
echoerr "unable to decompress<".tartail."> on this system"
|
||||
if simplify(curdir) != simplify(tarhome)
|
||||
" remove decompressed tarball, restore directory
|
||||
" call Decho("delete(".tartail.".tar)")
|
||||
call delete(tartail.".tar")
|
||||
" call Decho("exe cd ".fnameescape(curdir))
|
||||
exe "cd ".fnameescape(curdir)
|
||||
endif
|
||||
" call Dret("tar#Vimuntar")
|
||||
return
|
||||
endif
|
||||
else
|
||||
call vimball#Decompress(tartail,0)
|
||||
endif
|
||||
let extractcmd= netrw#WinPath(g:tar_extractcmd)
|
||||
" call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")")
|
||||
call system(extractcmd." ".shellescape(tarbase.".tar"))
|
||||
|
||||
" set up help
|
||||
if filereadable("doc/".tarbase.".txt")
|
||||
" call Decho("exe helptags ".getcwd()."/doc")
|
||||
exe "helptags ".getcwd()."/doc"
|
||||
endif
|
||||
|
||||
@@ -833,8 +821,6 @@ fun! tar#Vimuntar(...)
|
||||
call delete(vimhome."/".tarbase.".tar")
|
||||
exe "cd ".fnameescape(curdir)
|
||||
endif
|
||||
|
||||
" call Dret("tar#Vimuntar")
|
||||
endfun
|
||||
|
||||
" =====================================================================
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Original Author: Charles E. Campbell
|
||||
" Date: Apr 11, 2016
|
||||
" Version: 37
|
||||
" Version: 37 (with modifications from the Vim Project)
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
" Last Change:
|
||||
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
@@ -530,6 +532,26 @@ fun! vimball#Decompress(fname,...)
|
||||
exe "e ".escape(fname,' \')
|
||||
if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
|
||||
|
||||
elseif expand("%") =~ '.*\.bz3' && executable("bunzip3")
|
||||
" handle *.bz3 with bunzip3
|
||||
silent exe "!bunzip3 ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz3$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
|
||||
|
||||
elseif expand("%") =~ '.*\.bz3' && executable("bzip3")
|
||||
" handle *.bz3 with bzip3 -d
|
||||
silent exe "!bzip3 -d ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz3$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
|
||||
|
||||
elseif expand("%") =~ '.*\.zip' && executable("unzip")
|
||||
" handle *.zip with unzip
|
||||
silent exe "!unzip ".shellescape(a:fname)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
" 2024 Aug 05 by Vim Project: clean-up and make it work with shellslash on Windows
|
||||
" 2024 Aug 18 by Vim Project: correctly handle special globbing chars
|
||||
" 2024 Aug 21 by Vim Project: simplify condition to detect MS-Windows
|
||||
" 2025 Mar 11 by Vim Project: handle filenames with leading '-' correctly
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -343,6 +344,11 @@ fun! zip#Extract()
|
||||
return
|
||||
endif
|
||||
let target = fname->substitute('\[', '[[]', 'g')
|
||||
" unzip 6.0 does not support -- to denote end-of-arguments
|
||||
" unzip 6.1 (2010) apparently supports, it, but hasn't been released
|
||||
" so the workaround is to use glob '[-]' so that it won't be considered an argument
|
||||
" else, it would be possible to use 'unzip -o <file.zip> '-d/tmp' to extract the whole archive
|
||||
let target = target->substitute('^-', '[&]', '')
|
||||
if &shell =~ 'cmd' && has("win32")
|
||||
let target = target
|
||||
\ ->substitute('[?*]', '[&]', 'g')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
" Maintainer: Maxim Kim <habamax@gmail.com>, ported from gruvbox8 of Lifepillar <lifepillar@lifepillar.me>
|
||||
" Website: https://www.github.com/vim/colorschemes
|
||||
" License: Vim License (see `:help license`)
|
||||
" Last Change: 2025 Jan 07
|
||||
" Last Change: 2025 Feb 15
|
||||
|
||||
" Generated by Colortemplate v2.2.3
|
||||
|
||||
@@ -150,7 +150,7 @@ else
|
||||
hi StatusLine guifg=#bdae93 guibg=#3c3836 gui=bold,reverse cterm=bold,reverse
|
||||
hi StatusLineNC guifg=#ebdbb2 guibg=#3c3836 gui=reverse cterm=reverse
|
||||
hi TabLine guifg=#665c54 guibg=#ebdbb2 gui=NONE cterm=NONE
|
||||
hi TabLineFill guifg=#ebdbb2 guibg=#ebdbb2 gui=NONE cterm=NONE
|
||||
hi TabLineFill guifg=#3c3836 guibg=#ebdbb2 gui=NONE cterm=NONE
|
||||
hi TabLineSel guifg=#282828 guibg=#fbf1c7 gui=bold cterm=bold
|
||||
hi ToolbarButton guifg=#282828 guibg=#bdae93 gui=bold cterm=bold
|
||||
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
|
||||
@@ -332,7 +332,7 @@ if s:t_Co >= 256
|
||||
hi StatusLine ctermfg=144 ctermbg=237 cterm=bold,reverse
|
||||
hi StatusLineNC ctermfg=187 ctermbg=237 cterm=reverse
|
||||
hi TabLine ctermfg=59 ctermbg=187 cterm=NONE
|
||||
hi TabLineFill ctermfg=187 ctermbg=187 cterm=NONE
|
||||
hi TabLineFill ctermfg=237 ctermbg=187 cterm=NONE
|
||||
hi TabLineSel ctermfg=235 ctermbg=230 cterm=bold
|
||||
hi ToolbarButton ctermfg=235 ctermbg=144 cterm=bold
|
||||
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
|
||||
|
||||
@@ -6,6 +6,7 @@ vim9script
|
||||
# Contributors: Enno Nagel
|
||||
# Last Change: 2024 Mar 29
|
||||
# 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
|
||||
# 2025 Mar 11 by The Vim Project (add comment for Dispatch)
|
||||
|
||||
if exists("g:current_compiler")
|
||||
finish
|
||||
@@ -15,6 +16,7 @@ import autoload '../autoload/context.vim'
|
||||
|
||||
g:current_compiler = 'context'
|
||||
|
||||
# CompilerSet makeprg=context
|
||||
if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
|
||||
(!filereadable('Makefile') && !filereadable('makefile'))
|
||||
var makeprg = join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Compiler: Java Development Kit Compiler
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2024 Nov 19 (enable local javac_makeprg_params)
|
||||
" 2025 Mar 11 (add comment for Dispatch)
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -11,6 +12,7 @@ let current_compiler = "javac"
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" CompilerSet makeprg=javac
|
||||
execute $'CompilerSet makeprg=javac\ {escape(get(b:, 'javac_makeprg_params', get(g:, 'javac_makeprg_params', '')), ' \|"')}'
|
||||
|
||||
CompilerSet errorformat=%E%f:%l:\ error:\ %m,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
" 2024 Apr 03 by the Vim Project (removed :CompilerSet definition)
|
||||
" 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg)
|
||||
" 2024 Nov 19 by the Vim Project (properly escape makeprg setting)
|
||||
" 2025 Mar 11 by the Vim Project (add comment for Dispatch)
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -50,6 +51,8 @@ let s:makeprg = g:ps1_makeprg_cmd .. ' %:p:S'
|
||||
" + CategoryInfo : ObjectNotFound: (Write-Ouput:String) [], CommandNotFoundException
|
||||
" + FullyQualifiedErrorId : CommandNotFoundException
|
||||
|
||||
" CompilerSet makeprg=pwsh
|
||||
" CompilerSet makeprg=powershell
|
||||
execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"')
|
||||
|
||||
" Showing error in context with underlining.
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
" Vim compiler file
|
||||
" Compiler: svelte-check
|
||||
" Maintainer: @Konfekt
|
||||
" Last Change: 2025 Feb 27
|
||||
|
||||
if exists("current_compiler") | finish | endif
|
||||
let current_compiler = "svelte-check"
|
||||
|
||||
CompilerSet makeprg=npx\ svelte-check\ --output\ machine
|
||||
CompilerSet errorformat=%*\\d\ %t%*\\a\ \"%f\"\ %l:%c\ \"%m\",
|
||||
CompilerSet errorformat+=%-G%*\\d\ START\ %.%#,
|
||||
CompilerSet errorformat+=%-G%*\\d\ COMPLETED\ %.%#,
|
||||
CompilerSet errorformat+=%-G%.%#
|
||||
|
||||
" " Fall-back for versions of svelte-check that don't support --output machine
|
||||
" " before May 2020 https://github.com/sveltejs/language-tools/commit/9f7a90379d287a41621a5e78af5b010a8ab810c3
|
||||
" " which is before the first production release 1.1.31 of Svelte-Check
|
||||
" CompilerSet makeprg=npx\ svelte-check
|
||||
" CompilerSet errorformat=%A%f:%l:%c,
|
||||
" CompilerSet errorformat+=%C%t%*\\a\\:\ %m,
|
||||
" CompilerSet errorformat+=%-G%.%#,
|
||||
@@ -6,6 +6,7 @@
|
||||
" 2024 Apr 03 by the Vim Project (removed :CompilerSet definition)
|
||||
" 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg)
|
||||
" 2024 Nov 19 by the Vim Project (properly escape makeprg setting)
|
||||
" 2025 Mar 11 by the Vim Project (add comment for Dispatch)
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -28,6 +29,7 @@ if exists('b:tex_ignore_makefile') || exists('g:tex_ignore_makefile') ||
|
||||
let current_compiler = "latex"
|
||||
endif
|
||||
let s:makeprg=current_compiler .. ' -interaction=nonstopmode'
|
||||
" CompilerSet makeprg=latex
|
||||
execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"')
|
||||
else
|
||||
let current_compiler = 'make'
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Compiler: TypeScript Compiler
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2024 Apr 03
|
||||
" 2025 Mar 11 by The Vim Project (add comment for Dispatch, add tsc_makeprg variable)
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -11,9 +12,9 @@ let current_compiler = "tsc"
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" CompilerSet makeprg=tsc
|
||||
" CompilerSet makeprg=npx\ tsc
|
||||
|
||||
CompilerSet makeprg=tsc
|
||||
execute $'CompilerSet makeprg={escape(get(b:, 'tsc_makeprg', get(g:, 'tsc_makeprg', 'tsc')), ' \|"')}'
|
||||
CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
|
||||
\%trror\ TS%n:\ %m,
|
||||
\%-G%.%#
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
" Language: Typst
|
||||
" Previous Maintainer: Gregory Anders
|
||||
" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
|
||||
" Based On: https://github.com/kaarmu/typst.vim
|
||||
" Last Change: 2024 Dec 09
|
||||
" Based on: https://github.com/kaarmu/typst.vim
|
||||
" 2025 Mar 11 by the Vim Project (add comment for Dispatch)
|
||||
|
||||
if exists('current_compiler')
|
||||
finish
|
||||
@@ -13,4 +14,5 @@ let current_compiler = get(g:, 'typst_cmd', 'typst')
|
||||
" With `--diagnostic-format` we can use the default errorformat
|
||||
let s:makeprg = [current_compiler, 'compile', '--diagnostic-format', 'short', '%:S']
|
||||
|
||||
" CompilerSet makeprg=typst
|
||||
execute 'CompilerSet makeprg=' . join(s:makeprg, '\ ')
|
||||
|
||||
@@ -141,6 +141,11 @@ os_risc.txt:
|
||||
os_win32.txt:
|
||||
touch $@
|
||||
|
||||
pi_netrw.txt: ../pack/dist/opt/netrw/doc/netrw.txt
|
||||
cp ../pack/dist/opt/netrw/doc/netrw.txt $@.tmp
|
||||
sed -e '1s/\(.*\)/\1 *pi_netrw.txt*/' $@.tmp > $@ && \
|
||||
rm -f $@.tmp
|
||||
|
||||
vietnamese.txt:
|
||||
touch $@
|
||||
|
||||
|
||||
+18
-2
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 9.1. Last change: 2024 Dec 04
|
||||
*autocmd.txt* For Vim version 9.1. Last change: 2025 Mar 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -389,6 +389,7 @@ Name triggered by ~
|
||||
|TabNew| after creating a new tab page
|
||||
|WinClosed| after closing a window
|
||||
|TabClosed| after closing a tab page
|
||||
|TabClosedPre| before closing a tab page
|
||||
|WinEnter| after entering another window
|
||||
|WinLeave| before leaving a window
|
||||
|TabEnter| after entering another tab page
|
||||
@@ -605,6 +606,8 @@ CmdUndefined When a user command is used but it isn't
|
||||
when it's used. The pattern is matched
|
||||
against the command name. Both <amatch> and
|
||||
<afile> are set to the name of the command.
|
||||
This is triggered even when inside an
|
||||
autocommand defined without |autocmd-nested|.
|
||||
NOTE: Autocompletion won't work until the
|
||||
command is defined. An alternative is to
|
||||
always define the user command and have it
|
||||
@@ -936,7 +939,9 @@ FuncUndefined When a user function is used but it isn't
|
||||
when it's used. The pattern is matched
|
||||
against the function name. Both <amatch> and
|
||||
<afile> are set to the name of the function.
|
||||
Not triggered when compiling a |Vim9|
|
||||
This is triggered even when inside an
|
||||
autocommand defined without |autocmd-nested|,
|
||||
but not triggered when compiling a |Vim9|
|
||||
function.
|
||||
NOTE: When writing Vim scripts a better
|
||||
alternative is to use an autoloaded function.
|
||||
@@ -1236,6 +1241,10 @@ Syntax When the 'syntax' option has been set. The
|
||||
See |:syn-on|.
|
||||
*TabClosed*
|
||||
TabClosed After closing a tab page.
|
||||
*TabClosedPre*
|
||||
TabClosedPre Before closing a tab page. The window layout
|
||||
is locked, thus opening and closing of windows
|
||||
is prohibited.
|
||||
*TabEnter*
|
||||
TabEnter Just after entering a tab page. |tab-page|
|
||||
After triggering the WinEnter and before
|
||||
@@ -1350,6 +1359,10 @@ TextYankPost After text has been yanked or deleted in the
|
||||
called recursively.
|
||||
It is not allowed to change the buffer text,
|
||||
see |textlock|. *E1064*
|
||||
Also triggered indirectly when Vim tries to
|
||||
become owner of the Visual selection because
|
||||
of setting "autoselect" for 'guioptions' or
|
||||
'clipboard'.
|
||||
{only when compiled with the +eval feature}
|
||||
|
||||
*User*
|
||||
@@ -2000,6 +2013,9 @@ To disable autocommands for some time use the 'eventignore' option. Note that
|
||||
this may cause unexpected behavior, make sure you restore 'eventignore'
|
||||
afterwards, using a |:try| block with |:finally|.
|
||||
|
||||
To disable autocmds indefinitely in a specific window use the 'eventignorewin'
|
||||
option. This can only be used to ignore window and buffer related events.
|
||||
|
||||
*:noautocmd* *:noa*
|
||||
To disable autocommands for just one command use the ":noautocmd" command
|
||||
modifier. This will set 'eventignore' to "all" for the duration of the
|
||||
|
||||
+225
-109
@@ -1,4 +1,4 @@
|
||||
*builtin.txt* For Vim version 9.1. Last change: 2025 Jan 17
|
||||
*builtin.txt* For Vim version 9.1. Last change: 2025 Mar 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -207,7 +207,7 @@ foldclosedend({lnum}) Number last line of fold at {lnum} if closed
|
||||
foldlevel({lnum}) Number fold level at {lnum}
|
||||
foldtext() String line displayed for closed fold
|
||||
foldtextresult({lnum}) String text for closed fold at {lnum}
|
||||
foreach({expr1}, {expr2}) List/Dict/Blob/String
|
||||
foreach({expr1}, {expr2}) List/Tuple/Dict/Blob/String
|
||||
for each item in {expr1} call {expr2}
|
||||
foreground() Number bring the Vim window to the foreground
|
||||
fullcommand({name} [, {vim9}]) String get full command from {name}
|
||||
@@ -228,12 +228,12 @@ getbufvar({buf}, {varname} [, {def}])
|
||||
getcellpixels() List get character cell pixel size
|
||||
getcellwidths() List get character cell width overrides
|
||||
getchangelist([{buf}]) List list of change list items
|
||||
getchar([{expr}]) Number or String
|
||||
getchar([{expr} [, {opts}]]) Number or String
|
||||
get one character from the user
|
||||
getcharmod() Number modifiers for the last typed character
|
||||
getcharpos({expr}) List position of cursor, mark, etc.
|
||||
getcharsearch() Dict last character search
|
||||
getcharstr([{expr}]) String get one character from the user
|
||||
getcharstr([{expr} [, {opts}]]) String get one character from the user
|
||||
getcmdcomplpat() String return the completion pattern of the
|
||||
current command-line completion
|
||||
getcmdcompltype() String return the type of the current
|
||||
@@ -348,7 +348,7 @@ job_start({command} [, {options}])
|
||||
Job start a job
|
||||
job_status({job}) String get the status of {job}
|
||||
job_stop({job} [, {how}]) Number stop {job}
|
||||
join({list} [, {sep}]) String join {list} items into one String
|
||||
join({expr} [, {sep}]) String join items in {expr} into one String
|
||||
js_decode({string}) any decode JS style JSON
|
||||
js_encode({expr}) String encode JS style JSON
|
||||
json_decode({string}) any decode JSON
|
||||
@@ -364,6 +364,7 @@ line2byte({lnum}) Number byte count of line {lnum}
|
||||
lispindent({lnum}) Number Lisp indent for line {lnum}
|
||||
list2blob({list}) Blob turn {list} of numbers into a Blob
|
||||
list2str({list} [, {utf8}]) String turn {list} of numbers into a String
|
||||
list2tuple({list}) Tuple turn {list} of items into a tuple
|
||||
listener_add({callback} [, {buf}])
|
||||
Number add a callback to listen to changes
|
||||
listener_flush([{buf}]) none invoke listener callbacks
|
||||
@@ -416,6 +417,8 @@ mkdir({name} [, {flags} [, {prot}]])
|
||||
mode([{expr}]) String current editing mode
|
||||
mzeval({expr}) any evaluate |MzScheme| expression
|
||||
nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
|
||||
ngettext({single}, {plural}, {number}[, {domain}])
|
||||
String translate text based on {number}
|
||||
nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr}
|
||||
or({expr}, {expr}) Number bitwise OR
|
||||
pathshorten({expr} [, {len}]) String shorten directory names in a path
|
||||
@@ -509,10 +512,10 @@ remove({blob}, {idx} [, {end}]) Number/Blob
|
||||
remove bytes {idx}-{end} from {blob}
|
||||
remove({dict}, {key}) any remove entry {key} from {dict}
|
||||
rename({from}, {to}) Number rename (move) file from {from} to {to}
|
||||
repeat({expr}, {count}) List/Blob/String
|
||||
repeat({expr}, {count}) List/Tuple/Blob/String
|
||||
repeat {expr} {count} times
|
||||
resolve({filename}) String get filename a shortcut points to
|
||||
reverse({obj}) List/Blob/String
|
||||
reverse({obj}) List/Tuple/Blob/String
|
||||
reverse {obj}
|
||||
round({expr}) Float round off {expr}
|
||||
rubyeval({expr}) any evaluate |Ruby| expression
|
||||
@@ -612,8 +615,7 @@ split({expr} [, {pat} [, {keepempty}]])
|
||||
sqrt({expr}) Float square root of {expr}
|
||||
srand([{expr}]) List get seed for |rand()|
|
||||
state([{what}]) String current state of Vim
|
||||
str2blob({list} [, {options}])
|
||||
Blob convert list of strings into a Blob
|
||||
str2blob({list} [, {options}]) Blob convert list of strings into a Blob
|
||||
str2float({expr} [, {quoted}]) Float convert String to Float
|
||||
str2list({expr} [, {utf8}]) List convert each character of {expr} to
|
||||
ASCII/UTF-8 value
|
||||
@@ -714,6 +716,7 @@ test_null_job() Job null value for testing
|
||||
test_null_list() List null value for testing
|
||||
test_null_partial() Funcref null value for testing
|
||||
test_null_string() String null value for testing
|
||||
test_null_tuple() Tuple null value for testing
|
||||
test_option_not_set({name}) none reset flag indicating option was set
|
||||
test_override({expr}, {val}) none test with Vim internal overrides
|
||||
test_refcount({expr}) Number get the reference count of {expr}
|
||||
@@ -735,6 +738,7 @@ tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
|
||||
trim({text} [, {mask} [, {dir}]])
|
||||
String trim characters in {mask} from {text}
|
||||
trunc({expr}) Float truncate Float {expr}
|
||||
tuple2list({tuple}) List turn {tuple} of items into a list
|
||||
type({expr}) Number type of value {expr}
|
||||
typename({expr}) String representation of the type of {expr}
|
||||
undofile({name}) String undo file name for {name}
|
||||
@@ -1310,19 +1314,25 @@ blob2str({blob} [, {options}]) *blob2str()*
|
||||
items:
|
||||
encoding Decode the bytes in {blob} using this
|
||||
encoding. The value is a |String|. See
|
||||
|encoding-names| for the supported values.
|
||||
*E1515*
|
||||
An error is given and an empty List is returned if
|
||||
an invalid byte sequence is encountered in {blob},
|
||||
|encoding-names| for the supported values
|
||||
(plus the special value "none").
|
||||
*E1515* *E1516*
|
||||
When current 'encoding' is "utf-8", an error is given and an
|
||||
empty List is returned if an invalid byte sequence is
|
||||
encountered in {blob}. To suppress this validation and get
|
||||
potentially invalid string, set "encoding" in {options} to
|
||||
"none".
|
||||
|
||||
Returns an empty List if blob is empty.
|
||||
|
||||
See also |str2blob()|
|
||||
|
||||
Examples: >
|
||||
blob2str(0z6162) returns ["ab"]
|
||||
blob2str(0zC2ABC2BB) returns ["«»"]
|
||||
blob2str(0zABBB, {'encoding': 'latin1'}) returns ["«»"]
|
||||
blob2str(0z6162) returns ['ab']
|
||||
blob2str(0zC2ABC2BB) returns ['«»']
|
||||
blob2str(0z610A62) returns ['a', 'b']
|
||||
blob2str(0z610062) returns ['a\nb']
|
||||
blob2str(0zABBB, {'encoding': 'latin1'}) returns ['«»']
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetBlob()->blob2str()
|
||||
@@ -2068,7 +2078,8 @@ copy({expr}) *copy()*
|
||||
that the original |List| can be changed without changing the
|
||||
copy, and vice versa. But the items are identical, thus
|
||||
changing an item changes the contents of both |Lists|.
|
||||
A |Dictionary| is copied in a similar way as a |List|.
|
||||
A |Tuple| or |Dictionary| is copied in a similar way as a
|
||||
|List|.
|
||||
Also see |deepcopy()|.
|
||||
Can also be used as a |method|: >
|
||||
mylist->copy()
|
||||
@@ -2111,10 +2122,10 @@ cosh({expr}) *cosh()*
|
||||
|
||||
count({comp}, {expr} [, {ic} [, {start}]]) *count()* *E706*
|
||||
Return the number of times an item with value {expr} appears
|
||||
in |String|, |List| or |Dictionary| {comp}.
|
||||
in |String|, |List|, |Tuple| or |Dictionary| {comp}.
|
||||
|
||||
If {start} is given then start with the item with this index.
|
||||
{start} can only be used with a |List|.
|
||||
{start} can only be used with a |List| or a |Tuple|.
|
||||
|
||||
When {ic} is given and it's |TRUE| then case is ignored.
|
||||
|
||||
@@ -2234,7 +2245,8 @@ deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
|
||||
|Dictionary|, a copy for it is made, recursively. Thus
|
||||
changing an item in the copy does not change the contents of
|
||||
the original |List|.
|
||||
A |Dictionary| is copied in a similar way as a |List|.
|
||||
A |Tuple| or |Dictionary| is copied in a similar way as a
|
||||
|List|.
|
||||
|
||||
When {noref} is omitted or zero a contained |List| or
|
||||
|Dictionary| is only copied once. All references point to
|
||||
@@ -2542,8 +2554,8 @@ echoraw({string}) *echoraw()*
|
||||
|
||||
empty({expr}) *empty()*
|
||||
Return the Number 1 if {expr} is empty, zero otherwise.
|
||||
- A |List| or |Dictionary| is empty when it does not have any
|
||||
items.
|
||||
- A |List|, |Tuple| or |Dictionary| is empty when it does
|
||||
not have any items.
|
||||
- A |String| is empty when its length is zero.
|
||||
- A |Number| and |Float| are empty when their value is zero.
|
||||
- |v:false|, |v:none| and |v:null| are empty, |v:true| is not.
|
||||
@@ -3007,7 +3019,8 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
|
||||
When {expr3} is omitted then "force" is assumed.
|
||||
|
||||
{expr1} is changed when {expr2} is not empty. If necessary
|
||||
make a copy of {expr1} first.
|
||||
make a copy of {expr1} first or use |extendnew()| to return a
|
||||
new List/Dictionary.
|
||||
{expr2} remains unchanged.
|
||||
When {expr1} is locked and {expr2} is not empty the operation
|
||||
fails.
|
||||
@@ -3469,8 +3482,9 @@ foldtextresult({lnum}) *foldtextresult()*
|
||||
Return type: |String|
|
||||
|
||||
|
||||
foreach({expr1}, {expr2}) *foreach()*
|
||||
{expr1} must be a |List|, |String|, |Blob| or |Dictionary|.
|
||||
foreach({expr1}, {expr2}) *foreach()* *E1525*
|
||||
{expr1} must be a |List|, |Tuple|, |String|, |Blob| or
|
||||
|Dictionary|.
|
||||
For each item in {expr1} execute {expr2}. {expr1} is not
|
||||
modified; its values may be, as with |:lockvar| 1. |E741|
|
||||
See |map()| and |filter()| to modify {expr1}.
|
||||
@@ -3479,10 +3493,10 @@ foreach({expr1}, {expr2}) *foreach()*
|
||||
|
||||
If {expr2} is a |string|, inside {expr2} |v:val| has the value
|
||||
of the current item. For a |Dictionary| |v:key| has the key
|
||||
of the current item and for a |List| |v:key| has the index of
|
||||
the current item. For a |Blob| |v:key| has the index of the
|
||||
current byte. For a |String| |v:key| has the index of the
|
||||
current character.
|
||||
of the current item and for a |List| or a |Tuple| |v:key| has
|
||||
the index of the current item. For a |Blob| |v:key| has the
|
||||
index of the current byte. For a |String| |v:key| has the
|
||||
index of the current character.
|
||||
Examples: >
|
||||
call foreach(mylist, 'used[v:val] = true')
|
||||
< This records the items that are in the {expr1} list.
|
||||
@@ -3508,8 +3522,8 @@ foreach({expr1}, {expr2}) *foreach()*
|
||||
Can also be used as a |method|: >
|
||||
mylist->foreach(expr2)
|
||||
<
|
||||
Return type: |String|, |Blob| list<{type}> or dict<{type}>
|
||||
depending on {expr1}
|
||||
Return type: |String|, |Blob|, list<{type}>, tuple<{type}> or
|
||||
dict<{type}> depending on {expr1}
|
||||
|
||||
*foreground()*
|
||||
foreground() Move the Vim window to the foreground. Useful when sent from
|
||||
@@ -3682,6 +3696,15 @@ get({list}, {idx} [, {default}]) *get()* *get()-list*
|
||||
<
|
||||
Return type: any, depending on {list}
|
||||
|
||||
get({tuple}, {idx} [, {default}]) *get()-tuple*
|
||||
Get item {idx} from |Tuple| {tuple}. When this item is not
|
||||
available return {default}. Return zero when {default} is
|
||||
omitted.
|
||||
Preferably used as a |method|: >
|
||||
mytuple->get(idx)
|
||||
<
|
||||
Return type: any, depending on {tuple}
|
||||
|
||||
get({blob}, {idx} [, {default}]) *get()-blob*
|
||||
Get byte {idx} from |Blob| {blob}. When this byte is not
|
||||
available return {default}. Return -1 when {default} is
|
||||
@@ -3884,6 +3907,8 @@ getcellpixels() *getcellpixels()*
|
||||
On macOS, system Terminal.app returns sizes in points (before
|
||||
Retina scaling), whereas third-party terminals return raw pixel
|
||||
sizes (post Retina scaling).
|
||||
In MacVim, there is a small delay after startup or changing
|
||||
'guifont' before this will return the updated values.
|
||||
|
||||
Return type: list<any>
|
||||
|
||||
@@ -3919,14 +3944,16 @@ getchangelist([{buf}]) *getchangelist()*
|
||||
Return type: list<any>
|
||||
|
||||
|
||||
getchar([{expr}]) *getchar()*
|
||||
getchar([{expr} [, {opts}]]) *getchar()*
|
||||
Get a single character from the user or input stream.
|
||||
If {expr} is omitted, wait until a character is available.
|
||||
If {expr} is omitted or is -1, wait until a character is
|
||||
available.
|
||||
If {expr} is 0, only get a character when one is available.
|
||||
Return zero otherwise.
|
||||
If {expr} is 1, only check if a character is available, it is
|
||||
not consumed. Return zero if no character available.
|
||||
If you prefer always getting a string use |getcharstr()|.
|
||||
If you prefer always getting a string use |getcharstr()|, or
|
||||
specify |FALSE| as "number" in {opts}.
|
||||
|
||||
Without {expr} and when {expr} is 0 a whole character or
|
||||
special key is returned. If it is a single character, the
|
||||
@@ -3936,7 +3963,8 @@ getchar([{expr}]) *getchar()*
|
||||
starting with 0x80 (decimal: 128). This is the same value as
|
||||
the String "\<Key>", e.g., "\<Left>". The returned value is
|
||||
also a String when a modifier (shift, control, alt) was used
|
||||
that is not included in the character.
|
||||
that is not included in the character. |keytrans()| can also
|
||||
be used to convert a returned String into a readable form.
|
||||
|
||||
When {expr} is 0 and Esc is typed, there will be a short delay
|
||||
while Vim waits to see if this is the start of an escape
|
||||
@@ -3948,6 +3976,31 @@ getchar([{expr}]) *getchar()*
|
||||
|
||||
Use getcharmod() to obtain any additional modifiers.
|
||||
|
||||
The optional argument {opts} is a Dict and supports the
|
||||
following items:
|
||||
|
||||
cursor A String specifying cursor behavior
|
||||
when waiting for a character.
|
||||
"hide": hide the cursor.
|
||||
"keep": keep current cursor unchanged.
|
||||
"msg": move cursor to message area.
|
||||
(default: "msg")
|
||||
|
||||
number If |TRUE|, return a Number when getting
|
||||
a single character.
|
||||
If |FALSE|, the return value is always
|
||||
converted to a String, and an empty
|
||||
String (instead of 0) is returned when
|
||||
no character is available.
|
||||
(default: |TRUE|)
|
||||
|
||||
simplify If |TRUE|, include modifiers in the
|
||||
character if possible. E.g., return
|
||||
the same value for CTRL-I and <Tab>.
|
||||
If |FALSE|, don't include modifiers in
|
||||
the character.
|
||||
(default: |TRUE|)
|
||||
|
||||
When the user clicks a mouse button, the mouse event will be
|
||||
returned. The position can then be found in |v:mouse_col|,
|
||||
|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
|
||||
@@ -4063,17 +4116,9 @@ getcharsearch() *getcharsearch()*
|
||||
Return type: dict<any>
|
||||
|
||||
|
||||
getcharstr([{expr}]) *getcharstr()*
|
||||
Get a single character from the user or input stream as a
|
||||
string.
|
||||
If {expr} is omitted, wait until a character is available.
|
||||
If {expr} is 0 or false, only get a character when one is
|
||||
available. Return an empty string otherwise.
|
||||
If {expr} is 1 or true, only check if a character is
|
||||
available, it is not consumed. Return an empty string
|
||||
if no character is available.
|
||||
Otherwise this works like |getchar()|, except that a number
|
||||
result is converted to a string.
|
||||
getcharstr([{expr} [, {opts}]]) *getcharstr()*
|
||||
The same as |getchar()|, except that this always returns a
|
||||
String, and "number" isn't allowed in {opts}.
|
||||
|
||||
Return type: |String|
|
||||
|
||||
@@ -4974,6 +5019,8 @@ getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()*
|
||||
Can also be used as a |method|: >
|
||||
getpos('.')->getregionpos(getpos("'a"))
|
||||
<
|
||||
For an example, see the highlight-yank plugin |52.6|
|
||||
|
||||
Return type: list<list<list<number>>>
|
||||
|
||||
|
||||
@@ -5793,8 +5840,8 @@ id({item}) *id()*
|
||||
< prevents {item} from being garbage collected and provides a
|
||||
way to get the {item} from the `id`.
|
||||
|
||||
{item} may be a List, Dictionary, Object, Job, Channel or
|
||||
Blob. If the item is not a permitted type, or it is a null
|
||||
{item} may be a List, Tuple, Dictionary, Object, Job, Channel
|
||||
or Blob. If the item is not a permitted type, or it is a null
|
||||
value, then an empty String is returned.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
@@ -5821,12 +5868,12 @@ index({object}, {expr} [, {start} [, {ic}]]) *index()*
|
||||
Find {expr} in {object} and return its index. See
|
||||
|indexof()| for using a lambda to select the item.
|
||||
|
||||
If {object} is a |List| return the lowest index where the item
|
||||
has a value equal to {expr}. There is no automatic
|
||||
conversion, so the String "4" is different from the Number 4.
|
||||
And the number 4 is different from the Float 4.0. The value
|
||||
of 'ignorecase' is not used here, case matters as indicated by
|
||||
the {ic} argument.
|
||||
If {object} is a |List| or a |Tuple| return the lowest index
|
||||
where the item has a value equal to {expr}. There is no
|
||||
automatic conversion, so the String "4" is different from the
|
||||
Number 4. And the number 4 is different from the Float 4.0.
|
||||
The value of 'ignorecase' is not used here, case matters as
|
||||
indicated by the {ic} argument.
|
||||
|
||||
If {object} is |Blob| return the lowest index where the byte
|
||||
value is equal to {expr}.
|
||||
@@ -5850,11 +5897,11 @@ index({object}, {expr} [, {start} [, {ic}]]) *index()*
|
||||
|
||||
indexof({object}, {expr} [, {opts}]) *indexof()*
|
||||
Returns the index of an item in {object} where {expr} is
|
||||
v:true. {object} must be a |List| or a |Blob|.
|
||||
v:true. {object} must be a |List|, a |Tuple| or a |Blob|.
|
||||
|
||||
If {object} is a |List|, evaluate {expr} for each item in the
|
||||
List until the expression is v:true and return the index of
|
||||
this item.
|
||||
If {object} is a |List| or a |Tuple|, evaluate {expr} for each
|
||||
item in the List or Tuple until the expression is v:true
|
||||
and return the index of this item.
|
||||
|
||||
If {object} is a |Blob| evaluate {expr} for each byte in the
|
||||
Blob until the expression is v:true and return the index of
|
||||
@@ -5862,11 +5909,11 @@ indexof({object}, {expr} [, {opts}]) *indexof()*
|
||||
|
||||
{expr} must be a |string| or |Funcref|.
|
||||
|
||||
If {expr} is a |string|: If {object} is a |List|, inside
|
||||
{expr} |v:key| has the index of the current List item and
|
||||
|v:val| has the value of the item. If {object} is a |Blob|,
|
||||
inside {expr} |v:key| has the index of the current byte and
|
||||
|v:val| has the byte value.
|
||||
If {expr} is a |string|: If {object} is a |List| or a |Tuple|,
|
||||
inside {expr} |v:key| has the index of the current List or
|
||||
Tuple item and |v:val| has the value of the item. If {object}
|
||||
is a |Blob|, inside {expr} |v:key| has the index of the
|
||||
current byte and |v:val| has the byte value.
|
||||
|
||||
If {expr} is a |Funcref| it must take two arguments:
|
||||
1. the key or the index of the current item.
|
||||
@@ -6176,9 +6223,9 @@ items({dict}) *items()*
|
||||
echo key .. ': ' .. value
|
||||
endfor
|
||||
<
|
||||
A List or a String argument is also supported. In these
|
||||
cases, items() returns a List with the index and the value at
|
||||
the index.
|
||||
A |List|, a |Tuple| or a |String| argument is also supported.
|
||||
In these cases, items() returns a List with the index and the
|
||||
value at the index.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mydict->items()
|
||||
@@ -6189,16 +6236,17 @@ items({dict}) *items()*
|
||||
job_ functions are documented here: |job-functions-details|
|
||||
|
||||
|
||||
join({list} [, {sep}]) *join()*
|
||||
Join the items in {list} together into one String.
|
||||
join({expr} [, {sep}]) *join()*
|
||||
Join the items in {expr} together into one String. {expr} can
|
||||
be a |List| or a |Tuple|.
|
||||
When {sep} is specified it is put in between the items. If
|
||||
{sep} is omitted a single space is used.
|
||||
Note that {sep} is not added at the end. You might want to
|
||||
add it there too: >
|
||||
let lines = join(mylist, "\n") .. "\n"
|
||||
< String items are used as-is. |Lists| and |Dictionaries| are
|
||||
converted into a string like with |string()|.
|
||||
The opposite function is |split()|.
|
||||
< String items are used as-is. |Lists|, |Tuples| and
|
||||
|Dictionaries| are converted into a string like with
|
||||
|string()|. The opposite function is |split()|.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mylist->join()
|
||||
@@ -6292,6 +6340,8 @@ json_encode({expr}) *json_encode()*
|
||||
|Funcref| not possible, error
|
||||
|List| as an array (possibly null); when
|
||||
used recursively: []
|
||||
|Tuple| as an array (possibly null); when
|
||||
used recursively: []
|
||||
|Dict| as an object (possibly null); when
|
||||
used recursively: {}
|
||||
|Blob| as an array of the individual bytes
|
||||
@@ -6340,6 +6390,8 @@ len({expr}) *len()* *E701*
|
||||
used, as with |strlen()|.
|
||||
When {expr} is a |List| the number of items in the |List| is
|
||||
returned.
|
||||
When {expr} is a |Tuple| the number of items in the |Tuple| is
|
||||
returned.
|
||||
When {expr} is a |Blob| the number of bytes is returned.
|
||||
When {expr} is a |Dictionary| the number of entries in the
|
||||
|Dictionary| is returned.
|
||||
@@ -6521,6 +6573,25 @@ list2str({list} [, {utf8}]) *list2str()*
|
||||
Return type: |String|
|
||||
|
||||
|
||||
list2tuple({list}) *list2tuple()*
|
||||
Create a Tuple from a shallow copy of the list items.
|
||||
Examples: >
|
||||
list2tuple([1, 2, 3]) returns (1, 2, 3)
|
||||
< |tuple2list()| does the opposite.
|
||||
|
||||
This function doesn't recursively convert all the List items
|
||||
in {list} to a Tuple. Note that the items are identical
|
||||
between the list and the tuple, changing an item changes the
|
||||
contents of both the tuple and the list.
|
||||
|
||||
Returns an empty tuple on error.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetList()->list2tuple()
|
||||
<
|
||||
Return type: tuple<{type}> (depending on the given |List|)
|
||||
|
||||
|
||||
listener_add({callback} [, {buf}]) *listener_add()*
|
||||
Add a callback function that will be invoked when changes have
|
||||
been made to buffer {buf}.
|
||||
@@ -7251,6 +7322,9 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
|
||||
given sequence.
|
||||
limit Maximum number of matches in {list} to be
|
||||
returned. Zero means no limit.
|
||||
camelcase Use enhanced camel case scoring making results
|
||||
better suited for completion related to
|
||||
programming languages. Defaults to v:true.
|
||||
|
||||
If {list} is a list of dictionaries, then the optional {dict}
|
||||
argument supports the following additional items:
|
||||
@@ -7433,11 +7507,12 @@ max({expr}) *max()*
|
||||
Return the maximum value of all items in {expr}. Example: >
|
||||
echo max([apples, pears, oranges])
|
||||
|
||||
< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
|
||||
it returns the maximum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
an error. An empty |List| or |Dictionary| results in zero.
|
||||
< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
|
||||
Dictionary, it returns the maximum of all values in the
|
||||
Dictionary. If {expr} is neither a List nor a Tuple nor a
|
||||
Dictionary, or one of the items in {expr} cannot be used as a
|
||||
Number this results in an error. An empty |List|, |Tuple|
|
||||
or |Dictionary| results in zero.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mylist->max()
|
||||
@@ -7524,11 +7599,12 @@ min({expr}) *min()*
|
||||
Return the minimum value of all items in {expr}. Example: >
|
||||
echo min([apples, pears, oranges])
|
||||
|
||||
< {expr} can be a |List| or a |Dictionary|. For a Dictionary,
|
||||
it returns the minimum of all values in the Dictionary.
|
||||
If {expr} is neither a List nor a Dictionary, or one of the
|
||||
items in {expr} cannot be used as a Number this results in
|
||||
an error. An empty |List| or |Dictionary| results in zero.
|
||||
< {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
|
||||
Dictionary, it returns the minimum of all values in the
|
||||
Dictionary. If {expr} is neither a List nor a Tuple nor a
|
||||
Dictionary, or one of the items in {expr} cannot be used as a
|
||||
Number this results in an error. An empty |List|, |Tuple| or
|
||||
|Dictionary| results in zero.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mylist->min()
|
||||
@@ -7563,9 +7639,8 @@ mkdir({name} [, {flags} [, {prot}]]) *mkdir()* *E739*
|
||||
If {prot} is given it is used to set the protection bits of
|
||||
the new directory. The default is 0o755 (rwxr-xr-x: r/w for
|
||||
the user, readable for others). Use 0o700 to make it
|
||||
unreadable for others. This is only used for the last part of
|
||||
{name}. Thus if you create /tmp/foo/bar then /tmp/foo will be
|
||||
created with 0o755.
|
||||
unreadable for others. This is used for the newly created
|
||||
directories. Note: umask is applied to {prot} (on Unix).
|
||||
Example: >
|
||||
:call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700)
|
||||
|
||||
@@ -7690,6 +7765,20 @@ nextnonblank({lnum}) *nextnonblank()*
|
||||
Return type: |Number|
|
||||
|
||||
|
||||
ngettext({single}, {plural}, {number}[, {domain}) *ngettext()*
|
||||
Return a string that contains the correct value for a
|
||||
message based on the rules for plural form(s) in
|
||||
a language. Examples: >
|
||||
ngettext("File", "Files", 2) # returns "Files"
|
||||
<
|
||||
Can be used as a |method|: >
|
||||
1->ngettext("File", "Files") # returns "File"
|
||||
<
|
||||
See |gettext()| for information on the domain parameter.
|
||||
|
||||
Return type: |String|
|
||||
|
||||
|
||||
nr2char({expr} [, {utf8}]) *nr2char()*
|
||||
Return a string with a single character, which has the number
|
||||
value {expr}. Examples: >
|
||||
@@ -8251,13 +8340,14 @@ py3eval({expr} [, {locals}]) *py3eval()*
|
||||
converted to Vim data structures.
|
||||
If a {locals} |Dictionary| is given, it defines set of local
|
||||
variables available in the expression. The keys are variable
|
||||
names and the values are the variable values. |Dictionary| and
|
||||
|List| values are referenced, and may be updated by the
|
||||
expression (as if |python-bindeval| was used).
|
||||
names and the values are the variable values. |Dictionary|,
|
||||
|List| and |Tuple| values are referenced, and may be updated
|
||||
by the expression (as if |python-bindeval| was used).
|
||||
Numbers and strings are returned as they are (strings are
|
||||
copied though, Unicode strings are additionally converted to
|
||||
'encoding').
|
||||
Lists are represented as Vim |List| type.
|
||||
Tuples are represented as Vim |Tuple| type.
|
||||
Dictionaries are represented as Vim |Dictionary| type with
|
||||
keys converted to strings.
|
||||
Note that in a `:def` function local variables are not visible
|
||||
@@ -8279,6 +8369,7 @@ pyeval({expr} [, {locals}]) *pyeval()*
|
||||
Numbers and strings are returned as they are (strings are
|
||||
copied though).
|
||||
Lists are represented as Vim |List| type.
|
||||
Tuples are represented as Vim |Tuple| type.
|
||||
Dictionaries are represented as Vim |Dictionary| type,
|
||||
non-string keys result in error.
|
||||
Note that in a `:def` function local variables are not visible
|
||||
@@ -8538,8 +8629,8 @@ readfile({fname} [, {type} [, {max}]])
|
||||
|
||||
reduce({object}, {func} [, {initial}]) *reduce()* *E998*
|
||||
{func} is called for every item in {object}, which can be a
|
||||
|String|, |List| or a |Blob|. {func} is called with two
|
||||
arguments: the result so far and current item. After
|
||||
|String|, |List|, |Tuple| or a |Blob|. {func} is called with
|
||||
two arguments: the result so far and current item. After
|
||||
processing all items the result is returned. *E1132*
|
||||
|
||||
{initial} is the initial result. When omitted, the first item
|
||||
@@ -8860,16 +8951,16 @@ repeat({expr}, {count}) *repeat()*
|
||||
result. Example: >
|
||||
:let separator = repeat('-', 80)
|
||||
< When {count} is zero or negative the result is empty.
|
||||
When {expr} is a |List| or a |Blob| the result is {expr}
|
||||
concatenated {count} times. Example: >
|
||||
When {expr} is a |List|, a |Tuple| or a |Blob| the result is
|
||||
{expr} concatenated {count} times. Example: >
|
||||
:let longlist = repeat(['a', 'b'], 3)
|
||||
< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
|
||||
|
||||
Can also be used as a |method|: >
|
||||
mylist->repeat(count)
|
||||
<
|
||||
Return type: |String|, |Blob| or list<{type}> depending on
|
||||
{expr}
|
||||
Return type: |String|, |Blob|, list<{type}> or tuple<{type}>
|
||||
depending on {expr}
|
||||
|
||||
|
||||
resolve({filename}) *resolve()* *E655*
|
||||
@@ -8896,18 +8987,19 @@ resolve({filename}) *resolve()* *E655*
|
||||
|
||||
reverse({object}) *reverse()*
|
||||
Reverse the order of items in {object}. {object} can be a
|
||||
|List|, a |Blob| or a |String|. For a List and a Blob the
|
||||
items are reversed in-place and {object} is returned.
|
||||
|List|, a |Tuple|, a |Blob| or a |String|. For a List and a
|
||||
Blob the items are reversed in-place and {object} is returned.
|
||||
For a Tuple, a new Tuple is returned.
|
||||
For a String a new String is returned.
|
||||
Returns zero if {object} is not a List, Blob or a String.
|
||||
If you want a List or Blob to remain unmodified make a copy
|
||||
first: >
|
||||
Returns zero if {object} is not a List, Tuple, Blob or a
|
||||
String. If you want a List or Blob to remain unmodified make
|
||||
a copy first: >
|
||||
:let revlist = reverse(copy(mylist))
|
||||
< Can also be used as a |method|: >
|
||||
mylist->reverse()
|
||||
<
|
||||
Return type: |String|, |Blob| or list<{type}> depending on
|
||||
{object}
|
||||
Return type: |String|, |Blob|, list<{type}> or tuple<{type}>
|
||||
depending on {object}
|
||||
|
||||
|
||||
round({expr}) *round()*
|
||||
@@ -10282,7 +10374,7 @@ slice({expr}, {start} [, {end}]) *slice()*
|
||||
Can also be used as a |method|: >
|
||||
GetList()->slice(offset)
|
||||
<
|
||||
Return type: list<{type}>
|
||||
Return type: list<{type}> or tuple<{type}>
|
||||
|
||||
|
||||
sort({list} [, {how} [, {dict}]]) *sort()* *E702*
|
||||
@@ -10633,7 +10725,8 @@ str2blob({list} [, {options}]) *str2blob()*
|
||||
|
||||
The argument {options} is a |Dict| and supports the following
|
||||
items:
|
||||
encoding Encode the characters using this encoding.
|
||||
encoding Convert the characters using this encoding
|
||||
before making the Blob.
|
||||
The value is a |String|. See |encoding-names|
|
||||
for the supported values.
|
||||
|
||||
@@ -10645,11 +10738,12 @@ str2blob({list} [, {options}]) *str2blob()*
|
||||
See also |blob2str()|
|
||||
|
||||
Examples: >
|
||||
str2blob(["ab"]) returns 0z6162
|
||||
str2blob(["«»"]) returns 0zC2ABC2BB
|
||||
str2blob(["a\nb"]) returns 0z610A62
|
||||
str2blob(readfile('myfile.txt'))
|
||||
str2blob(["ab"]) returns 0z6162
|
||||
str2blob(["«»"]) returns 0zC2ABC2BB
|
||||
str2blob(["a\nb"]) returns 0z610062
|
||||
str2blob(["a","b"]) returns 0z610A62
|
||||
str2blob(["«»"], {'encoding': 'latin1'}) returns 0zABBB
|
||||
str2blob(readfile('myfile.txt'))
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetListOfStrings()->str2blob()
|
||||
@@ -10892,15 +10986,16 @@ string({expr}) *string()*
|
||||
Funcref function('name')
|
||||
Blob 0z00112233.44556677.8899
|
||||
List [item, item]
|
||||
Tuple (item, item)
|
||||
Dictionary {key: value, key: value}
|
||||
Class class SomeName
|
||||
Object object of SomeName {lnum: 1, col: 3}
|
||||
Enum enum EnumName
|
||||
EnumValue enum name.value {name: str, ordinal: nr}
|
||||
|
||||
When a |List| or |Dictionary| has a recursive reference it is
|
||||
replaced by "[...]" or "{...}". Using eval() on the result
|
||||
will then fail.
|
||||
When a |List|, |Tuple| or |Dictionary| has a recursive
|
||||
reference it is replaced by "[...]" or "(...)" or "{...}".
|
||||
Using eval() on the result will then fail.
|
||||
|
||||
For an object, invokes the string() method to get a textual
|
||||
representation of the object. If the method is not present,
|
||||
@@ -11854,6 +11949,25 @@ trunc({expr}) *trunc()*
|
||||
Return type: |Float|
|
||||
|
||||
|
||||
tuple2list({list}) *tuple2list()*
|
||||
Create a List from a shallow copy of the tuple items.
|
||||
Examples: >
|
||||
tuple2list((1, 2, 3)) returns [1, 2, 3]
|
||||
< |list2tuple()| does the opposite.
|
||||
|
||||
This function doesn't recursively convert all the Tuple items
|
||||
in {tuple} to a List. Note that the items are identical
|
||||
between the list and the tuple, changing an item changes the
|
||||
contents of both the tuple and the list.
|
||||
|
||||
Returns an empty list on error.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetTuple()->tuple2list()
|
||||
<
|
||||
Return type: list<{type}> (depending on the given |Tuple|)
|
||||
|
||||
|
||||
*type()*
|
||||
type({expr}) The result is a Number representing the type of {expr}.
|
||||
Instead of using the number directly, it is better to use the
|
||||
@@ -11874,6 +11988,7 @@ type({expr}) The result is a Number representing the type of {expr}.
|
||||
Typealias: 14 |v:t_typealias|
|
||||
Enum: 15 |v:t_enum|
|
||||
EnumValue: 16 |v:t_enumvalue|
|
||||
Tuple: 17 |v:t_tuple|
|
||||
For backward compatibility, this method can be used: >
|
||||
:if type(myvar) == type(0)
|
||||
:if type(myvar) == type("")
|
||||
@@ -12739,6 +12854,7 @@ gui_win32s idem, and Win32s system being used (Windows 3.1)
|
||||
haiku Haiku version of Vim.
|
||||
hangul_input Compiled with Hangul input support. |hangul|
|
||||
hpux HP-UX version of Vim.
|
||||
hurd GNU/Hurd version of Vim
|
||||
iconv Can use iconv() for conversion.
|
||||
insert_expand Compiled with support for CTRL-X expansion commands in
|
||||
Insert mode. (always true)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 9.1. Last change: 2024 Dec 15
|
||||
*change.txt* For Vim version 9.1. Last change: 2025 Mar 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1149,6 +1149,11 @@ inside of strings can change! Also see 'softtabstop' option. >
|
||||
:[line]pu[t]! [x] Put the text [from register x] before [line] (default
|
||||
current line).
|
||||
|
||||
*:ip* *:iput*
|
||||
:[line]ip[ut] [x] like |:put|, but adjust indent to the current line
|
||||
|
||||
:[line]ip[ut]! [x] like |:put|!, but adjust indent to the current line
|
||||
|
||||
["x]]p or *]p* *]<MiddleMouse>*
|
||||
["x]]<MiddleMouse> Like "p", but adjust the indent to the current line.
|
||||
Using the mouse only works when 'mouse' contains 'n'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 9.1. Last change: 2024 Oct 05
|
||||
*cmdline.txt* For Vim version 9.1. Last change: 2025 Mar 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -88,6 +88,10 @@ CTRL-SHIFT-V *c_CTRL-SHIFT-V* *c_CTRL-SHIFT-Q*
|
||||
CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active,
|
||||
then it inserts the Escape sequence for a key with modifiers.
|
||||
In the GUI the |key-notation| is inserted without simplifying.
|
||||
Note: When CTRL-SHIFT-V is intercepted by your system (e.g.,
|
||||
to paste text) you can often use CTRL-SHIFT-Q instead.
|
||||
However, in some terminals (e.g. GNOME Terminal), CTRL-SHIFT-Q
|
||||
quits the terminal without confirmation.
|
||||
|
||||
*c_<Left>* *c_Left*
|
||||
<Left> cursor left. See 'wildmenu' for behavior during wildmenu
|
||||
|
||||
+24
-9
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 9.1. Last change: 2024 Feb 01
|
||||
*diff.txt* For Vim version 9.1. Last change: 2024 Mar 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -226,14 +226,29 @@ The diffs are highlighted with these groups:
|
||||
|hl-DiffAdd| DiffAdd Added (inserted) lines. These lines exist in
|
||||
this buffer but not in another.
|
||||
|hl-DiffChange| DiffChange Changed lines.
|
||||
|hl-DiffText| DiffText Changed text inside a Changed line. Vim
|
||||
finds the first character that is different,
|
||||
and the last character that is different
|
||||
(searching from the end of the line). The
|
||||
text in between is highlighted. This means
|
||||
that parts in the middle that are still the
|
||||
same are highlighted anyway. The 'diffopt'
|
||||
flags "iwhite" and "icase" are used here.
|
||||
|hl-DiffText| DiffText Changed text inside a Changed line. Exact
|
||||
behavior depends on the `inline:` setting in
|
||||
'diffopt'.
|
||||
With `inline:` set to "simple", Vim finds the
|
||||
first character that is different, and the
|
||||
last character that is different (searching
|
||||
from the end of the line). The text in
|
||||
between is highlighted. This means that parts
|
||||
in the middle that are still the same are
|
||||
highlighted anyway. The 'diffopt' flags
|
||||
"iwhite" and "icase" are used here.
|
||||
With `inline:` set to "char" or "word", Vim
|
||||
uses the internal diff library to perform a
|
||||
detailed diff between the changed blocks and
|
||||
highlight the exact difference between the
|
||||
two. Will respect any 'diffopt' flag that
|
||||
affects internal diff.
|
||||
Not used when `inline:` set to "none".
|
||||
|hl-DiffTextAdd| DiffTextAdd Added text inside a Changed line. Similar to
|
||||
DiffText, but used when there is no
|
||||
corresponding text in other buffers. Will not
|
||||
be used when `inline:` is set to "simple" or
|
||||
"none".
|
||||
|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines,
|
||||
because they don't really exist in this
|
||||
buffer.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*digraph.txt* For Vim version 9.1. Last change: 2023 Oct 20
|
||||
*digraph.txt* For Vim version 9.1. Last change: 2025 Feb 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -125,8 +125,8 @@ see them.
|
||||
|
||||
On most systems Vim uses the same digraphs. They work for the Unicode and
|
||||
ISO-8859-1 character sets. These default digraphs are taken from the RFC1345
|
||||
mnemonics. To make it easy to remember the mnemonic, the second character has
|
||||
a standard meaning:
|
||||
mnemonics (with some additions). To make it easy to remember the mnemonic,
|
||||
the second character has a standard meaning:
|
||||
|
||||
char name char meaning ~
|
||||
Exclamation mark ! Grave
|
||||
@@ -1075,6 +1075,7 @@ char digraph hex dec official name ~
|
||||
≅ ?= 2245 8773 APPROXIMATELY EQUAL TO
|
||||
≈ ?2 2248 8776 ALMOST EQUAL TO
|
||||
≌ =? 224C 8780 ALL EQUAL TO
|
||||
≐ .= 2250 8784 APPROACHES THE LIMIT
|
||||
≓ HI 2253 8787 IMAGE OF OR APPROXIMATELY EQUAL TO
|
||||
≠ != 2260 8800 NOT EQUAL TO
|
||||
≡ =3 2261 8801 IDENTICAL TO
|
||||
|
||||
+340
-61
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 9.1. Last change: 2025 Jan 02
|
||||
*eval.txt* For Vim version 9.1. Last change: 2025 Mar 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -21,9 +21,10 @@ a remark is given.
|
||||
1.1 Variable types
|
||||
1.2 Function references |Funcref|
|
||||
1.3 Lists |Lists|
|
||||
1.4 Dictionaries |Dictionaries|
|
||||
1.5 Blobs |Blobs|
|
||||
1.6 More about variables |more-variables|
|
||||
1.4 Tuples |Tuples|
|
||||
1.5 Dictionaries |Dictionaries|
|
||||
1.6 Blobs |Blobs|
|
||||
1.7 More about variables |more-variables|
|
||||
2. Expression syntax |expression-syntax|
|
||||
3. Internal variable |internal-variables|
|
||||
4. Builtin Functions |functions|
|
||||
@@ -46,8 +47,8 @@ Profiling is documented at |profiling|.
|
||||
|
||||
1.1 Variable types ~
|
||||
*E712* *E896* *E897* *E899* *E1098*
|
||||
*E1107* *E1135* *E1138*
|
||||
There are ten types of variables:
|
||||
*E1107* *E1135* *E1138* *E1523*
|
||||
There are eleven types of variables:
|
||||
|
||||
*Number* *Integer*
|
||||
Number A 32 or 64 bit signed number. |expr-number|
|
||||
@@ -63,6 +64,10 @@ String A NUL terminated string of 8-bit unsigned characters (bytes).
|
||||
List An ordered sequence of items, see |List| for details.
|
||||
Example: [1, 2, ['a', 'b']]
|
||||
|
||||
Tuple An ordered immutable sequence of items, see |Tuple| for
|
||||
details.
|
||||
Example: (1, 2, ('a', 'b'))
|
||||
|
||||
Dictionary An associative, unordered array: Each entry has a key and a
|
||||
value. |Dictionary|
|
||||
Examples:
|
||||
@@ -165,16 +170,17 @@ A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE.
|
||||
|
||||
*E611* *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910*
|
||||
*E913* *E974* *E975* *E976* *E1319* *E1320* *E1321* *E1322*
|
||||
*E1323* *E1324*
|
||||
|List|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class| and
|
||||
|object| types are not automatically converted.
|
||||
*E1323* *E1324* *E1520* *E1522*
|
||||
|List|, |Tuple|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class|
|
||||
and |object| types are not automatically converted.
|
||||
|
||||
*E805* *E806* *E808*
|
||||
When mixing Number and Float the Number is converted to Float. Otherwise
|
||||
there is no automatic conversion of Float. You can use str2float() for String
|
||||
to Float, printf() for Float to String and float2nr() for Float to Number.
|
||||
|
||||
*E362* *E891* *E892* *E893* *E894* *E907* *E911* *E914*
|
||||
*E362* *E891* *E892* *E893* *E894*
|
||||
*E907* *E911* *E914* *E1521*
|
||||
When expecting a Float a Number can also be used, but nothing else.
|
||||
|
||||
*no-type-checking*
|
||||
@@ -267,9 +273,9 @@ position in the sequence.
|
||||
|
||||
List creation ~
|
||||
*E696* *E697*
|
||||
A List is created with a comma-separated list of items in square brackets.
|
||||
A List is created with a comma-separated sequence of items in square brackets.
|
||||
Examples: >
|
||||
:let mylist = [1, two, 3, "four"]
|
||||
:let mylist = [1, "two", 3, "four"]
|
||||
:let emptylist = []
|
||||
|
||||
An item can be any expression. Using a List for an item creates a
|
||||
@@ -327,13 +333,13 @@ similar to -1. >
|
||||
:let otherlist = mylist[:] " make a copy of the List
|
||||
|
||||
Notice that the last index is inclusive. If you prefer using an exclusive
|
||||
index use the |slice()| method.
|
||||
index use the |slice()| function.
|
||||
|
||||
If the first index is beyond the last item of the List or the second item is
|
||||
If the first index is beyond the last item of the List or the last index is
|
||||
before the first item, the result is an empty list. There is no error
|
||||
message.
|
||||
|
||||
If the second index is equal to or greater than the length of the list the
|
||||
If the last index is equal to or greater than the length of the list the
|
||||
length minus one is used: >
|
||||
:let mylist = [0, 1, 2, 3]
|
||||
:echo mylist[2:8] " result: [2, 3]
|
||||
@@ -463,8 +469,8 @@ Changing the order of items in a list: >
|
||||
|
||||
For loop ~
|
||||
|
||||
The |:for| loop executes commands for each item in a List, String or Blob.
|
||||
A variable is set to each item in sequence. Example with a List: >
|
||||
The |:for| loop executes commands for each item in a List, Tuple, String or
|
||||
Blob. A variable is set to each item in sequence. Example with a List: >
|
||||
:for item in mylist
|
||||
: call Doit(item)
|
||||
:endfor
|
||||
@@ -497,6 +503,8 @@ It is also possible to put remaining items in a List variable: >
|
||||
: endif
|
||||
:endfor
|
||||
|
||||
For a Tuple one tuple item at a time is used.
|
||||
|
||||
For a Blob one byte at a time is used.
|
||||
|
||||
For a String one character, including any composing characters, is used as a
|
||||
@@ -527,8 +535,206 @@ Don't forget that a combination of features can make things simple. For
|
||||
example, to add up all the numbers in a list: >
|
||||
:exe 'let sum = ' .. join(nrlist, '+')
|
||||
|
||||
1.4 Tuples ~
|
||||
*tuple* *Tuple* *Tuples*
|
||||
*E1532* *E1533*
|
||||
A Tuple is an ordered sequence of items. An item can be of any type. Items
|
||||
can be accessed by their index number. A Tuple is immutable.
|
||||
|
||||
1.4 Dictionaries ~
|
||||
A Tuple uses less memory compared to a List and provides O(1) lookup time.
|
||||
|
||||
Tuple creation ~
|
||||
*E1526* *E1527*
|
||||
A Tuple is created with a comma-separated sequence of items in parentheses.
|
||||
Examples: >
|
||||
:let mytuple = (1, "two", 3, "four")
|
||||
:let tuple = (5,)
|
||||
:let emptytuple = ()
|
||||
|
||||
An item can be any expression. If there is only one item in the tuple, then
|
||||
the item must be followed by a comma.
|
||||
|
||||
Using a Tuple for an item creates a Tuple of Tuples: >
|
||||
:let nesttuple = ((11, 12), (21, 22), (31, 32))
|
||||
|
||||
|
||||
Tuple index ~
|
||||
*tuple-index* *E1519*
|
||||
An item in the Tuple can be accessed by putting the index in square brackets
|
||||
after the Tuple. Indexes are zero-based, thus the first item has index zero.
|
||||
>
|
||||
:let item = mytuple[0] " get the first item: 1
|
||||
:let item = mytuple[2] " get the third item: 3
|
||||
|
||||
When the resulting item is a tuple this can be repeated: >
|
||||
:let item = nesttuple[0][1] " get the first tuple, second item: 12
|
||||
<
|
||||
A negative index is counted from the end. Index -1 refers to the last item in
|
||||
the Tuple, -2 to the last but one item, etc. >
|
||||
:let last = mytuple[-1] " get the last item: "four"
|
||||
|
||||
To avoid an error for an invalid index use the |get()| function. When an item
|
||||
is not available it returns zero or the default value you specify: >
|
||||
:echo get(mytuple, idx)
|
||||
:echo get(mytuple, idx, "NONE")
|
||||
|
||||
|
||||
Tuple concatenation ~
|
||||
*tuple-concatenation*
|
||||
Two tuples can be concatenated with the "+" operator: >
|
||||
:let longtuple = mytuple + (5, 6)
|
||||
:let longtuple = (5, 6) + mytuple
|
||||
To prepend or append an item, turn it into a tuple by putting () around it.
|
||||
The item must be followed by a comma.
|
||||
|
||||
*E1540*
|
||||
Two variadic tuples with same item type can be concatenated but with different
|
||||
item types cannot be concatenated. Examples: >
|
||||
var a: tuple<...list<number>> = (1, 2)
|
||||
var b: tuple<...list<string>> = ('a', 'b')
|
||||
echo a + b # not allowed
|
||||
|
||||
var a: tuple<number, number> = (1, 2)
|
||||
var b: tuple<...list<string>> = ('a', 'b')
|
||||
echo a + b # allowed
|
||||
|
||||
var a: tuple<...list<number>> = (1, 2)
|
||||
var b: tuple<number, number> = (3, 4)
|
||||
echo a + b # not allowed
|
||||
|
||||
var a: tuple<...list<number>> = (1, 2)
|
||||
var b: tuple<number, ...list<number>> = (3, 4)
|
||||
echo a + b # not allowed
|
||||
<
|
||||
Note that a tuple is immutable and items cannot be added or removed from a
|
||||
tuple.
|
||||
|
||||
|
||||
Subtuple ~
|
||||
*subtuple*
|
||||
A part of the Tuple can be obtained by specifying the first and last index,
|
||||
separated by a colon in square brackets: >
|
||||
:let shorttuple = mytuple[2:-1] " get Tuple (3, "four")
|
||||
|
||||
Omitting the first index is similar to zero. Omitting the last index is
|
||||
similar to -1. >
|
||||
:let endtuple = mytuple[2:] " from item 2 to the end: (3, "four")
|
||||
:let shorttuple = mytuple[2:2] " Tuple with one item: (3,)
|
||||
:let othertuple = mytuple[:] " make a copy of the Tuple
|
||||
|
||||
Notice that the last index is inclusive. If you prefer using an exclusive
|
||||
index, use the |slice()| function.
|
||||
|
||||
If the first index is beyond the last item of the Tuple or the last index is
|
||||
before the first item, the result is an empty tuple. There is no error
|
||||
message.
|
||||
|
||||
If the last index is equal to or greater than the length of the tuple, the
|
||||
length minus one is used: >
|
||||
:let mytuple = (0, 1, 2, 3)
|
||||
:echo mytuple[2:8] " result: (2, 3)
|
||||
|
||||
NOTE: mytuple[s:e] means using the variable "s:e" as index. Watch out for
|
||||
using a single letter variable before the ":". Insert a space when needed:
|
||||
mytuple[s : e].
|
||||
|
||||
|
||||
Tuple identity ~
|
||||
*tuple-identity*
|
||||
When variable "aa" is a tuple and you assign it to another variable "bb", both
|
||||
variables refer to the same tuple: >
|
||||
:let aa = (1, 2, 3)
|
||||
:let bb = aa
|
||||
<
|
||||
|
||||
Making a copy of a tuple is done with the |copy()| function. Using [:] also
|
||||
works, as explained above. This creates a shallow copy of the tuple: For
|
||||
example, changing a list item in the tuple will also change the item in the
|
||||
copied tuple: >
|
||||
:let aa = ([1, 'a'], 2, 3)
|
||||
:let bb = copy(aa)
|
||||
:let aa[0][1] = 'aaa'
|
||||
:echo aa
|
||||
< ([1, aaa], 2, 3) >
|
||||
:echo bb
|
||||
< ([1, aaa], 2, 3)
|
||||
|
||||
To make a completely independent tuple, use |deepcopy()|. This also makes a
|
||||
copy of the values in the tuple, recursively. Up to a hundred levels deep.
|
||||
|
||||
The operator "is" can be used to check if two variables refer to the same
|
||||
Tuple. "isnot" does the opposite. In contrast, "==" compares if two tuples
|
||||
have the same value. >
|
||||
:let atuple = (1, 2, 3)
|
||||
:let btuple = (1, 2, 3)
|
||||
:echo atuple is btuple
|
||||
< 0 >
|
||||
:echo atuple == btuple
|
||||
< 1
|
||||
|
||||
Note about comparing tuples: Two tuples are considered equal if they have the
|
||||
same length and all items compare equal, as with using "==". There is one
|
||||
exception: When comparing a number with a string they are considered
|
||||
different. There is no automatic type conversion, as with using "==" on
|
||||
variables. Example: >
|
||||
echo 4 == "4"
|
||||
< 1 >
|
||||
echo (4,) == ("4",)
|
||||
< 0
|
||||
|
||||
Thus comparing Tuples is more strict than comparing numbers and strings. You
|
||||
can compare simple values this way too by putting them in a tuple: >
|
||||
|
||||
:let a = 5
|
||||
:let b = "5"
|
||||
:echo a == b
|
||||
< 1 >
|
||||
:echo (a,) == (b,)
|
||||
< 0
|
||||
|
||||
|
||||
Tuple unpack ~
|
||||
|
||||
To unpack the items in a tuple to individual variables, put the variables in
|
||||
square brackets, like list items: >
|
||||
:let [var1, var2] = mytuple
|
||||
|
||||
When the number of variables does not match the number of items in the tuple
|
||||
this produces an error. To handle any extra items from the tuple, append ";"
|
||||
and a variable name (which will then be of type tuple): >
|
||||
:let [var1, var2; rest] = mytuple
|
||||
|
||||
This works like: >
|
||||
:let var1 = mytuple[0]
|
||||
:let var2 = mytuple[1]
|
||||
:let rest = mytuple[2:]
|
||||
|
||||
Except that there is no error if there are only two items. "rest" will be an
|
||||
empty tuple then.
|
||||
|
||||
|
||||
Tuple functions ~
|
||||
*E1536*
|
||||
Functions that are useful with a Tuple: >
|
||||
:let xs = count(tuple, 'x') " count number of 'x's in tuple
|
||||
:if empty(tuple) " check if tuple is empty
|
||||
:let i = index(tuple, 'x') " index of first 'x' in tuple
|
||||
:let l = items(tuple) " list of items in a tuple
|
||||
:let string = join(tuple, ', ') " create string from tuple items
|
||||
:let l = len(tuple) " number of items in tuple
|
||||
:let big = max(tuple) " maximum value in tuple
|
||||
:let small = min(tuple) " minimum value in tuple
|
||||
:let r = repeat(tuple, n) " repeat a tuple n times
|
||||
:let r = reverse(tuple) " reverse a tuple
|
||||
:let s = slice(tuple, n1, n2) " slice a tuple
|
||||
:let s = string(tuple) " String representation of tuple
|
||||
:let l = tuple2list(tuple) " convert a tuple to list
|
||||
:let t = list2tuple(list) " convert a list to tuple
|
||||
<
|
||||
*E1524*
|
||||
A tuple cannot be used with the |map()|, |mapnew()| and |filter()| functions.
|
||||
|
||||
1.5 Dictionaries ~
|
||||
*dict* *Dict* *Dictionaries* *Dictionary*
|
||||
A Dictionary is an associative array: Each entry has a key and a value. The
|
||||
entry can be located with the key. The entries are stored without a specific
|
||||
@@ -537,10 +743,10 @@ ordering.
|
||||
|
||||
Dictionary creation ~
|
||||
*E720* *E721* *E722* *E723*
|
||||
A Dictionary is created with a comma-separated list of entries in curly
|
||||
A Dictionary is created with a comma-separated sequence of entries in curly
|
||||
braces. Each entry has a key and a value, separated by a colon. Each key can
|
||||
only appear once. Examples: >
|
||||
:let mydict = {1: 'one', 2: 'two', 3: 'three'}
|
||||
:let mydict = {'one': 1, 'two': 2, 'three': 3}
|
||||
:let emptydict = {}
|
||||
< *E713* *E716* *E717*
|
||||
A key is always a String. You can use a Number, it will be converted to a
|
||||
@@ -570,8 +776,11 @@ An extra comma after the last entry is ignored.
|
||||
Accessing entries ~
|
||||
|
||||
The normal way to access an entry is by putting the key in square brackets: >
|
||||
:let mydict = {'one': 1, 'two': 2, 'three': 3}
|
||||
:let val = mydict["one"]
|
||||
:let mydict["four"] = 4
|
||||
:let val = mydict.one
|
||||
:let mydict.four = 4
|
||||
|
||||
You can add new entries to an existing Dictionary this way, unlike Lists.
|
||||
|
||||
@@ -709,7 +918,7 @@ Functions that can be used with a Dictionary: >
|
||||
:call map(dict, '">> " .. v:val') " prepend ">> " to each item
|
||||
|
||||
|
||||
1.5 Blobs ~
|
||||
1.6 Blobs ~
|
||||
*blob* *Blob* *Blobs* *E978*
|
||||
A Blob is a binary object. It can be used to read an image from a file and
|
||||
send it over a channel, for example.
|
||||
@@ -856,7 +1065,7 @@ Making a copy of a Blob is done with the |copy()| function. Using [:] also
|
||||
works, as explained above.
|
||||
|
||||
|
||||
1.6 More about variables ~
|
||||
1.7 More about variables ~
|
||||
*more-variables*
|
||||
If you need to know the type of a variable or expression, use the |type()|
|
||||
function.
|
||||
@@ -907,16 +1116,18 @@ Expression syntax summary, from least to most significant:
|
||||
etc. As above, append ? for ignoring case, # for
|
||||
matching case
|
||||
|
||||
expr5 is expr5 same |List|, |Dictionary| or |Blob| instance
|
||||
expr5 isnot expr5 different |List|, |Dictionary| or |Blob|
|
||||
expr5 is expr5 same |List|, |Tuple|, |Dictionary| or |Blob|
|
||||
instance
|
||||
expr5 isnot expr5 different |List|, |Tuple|, |Dictionary| or
|
||||
|Blob| instance
|
||||
|
||||
|expr5| expr6
|
||||
expr6 << expr6 bitwise left shift
|
||||
expr6 >> expr6 bitwise right shift
|
||||
|
||||
|expr6| expr7
|
||||
expr7 + expr7 ... number addition, list or blob concatenation
|
||||
expr7 + expr7 ... number addition, list or tuple or blob
|
||||
concatenation
|
||||
expr7 - expr7 ... number subtraction
|
||||
expr7 . expr7 ... string concatenation
|
||||
expr7 .. expr7 ... string concatenation
|
||||
@@ -935,8 +1146,10 @@ Expression syntax summary, from least to most significant:
|
||||
+ expr9 unary plus
|
||||
|
||||
|expr10| expr11
|
||||
expr10[expr1] byte of a String or item of a |List|
|
||||
expr10[expr1] byte of a String or item of a |List| or
|
||||
|Tuple|
|
||||
expr10[expr1 : expr1] substring of a String or sublist of a |List|
|
||||
or a slice of a |Tuple|
|
||||
expr10.name entry in a |Dictionary|
|
||||
expr10(expr1, ...) function call with |Funcref| variable
|
||||
expr10->name(expr1, ...) |method| call
|
||||
@@ -945,6 +1158,7 @@ Expression syntax summary, from least to most significant:
|
||||
"string" string constant, backslash is special
|
||||
'string' string constant, ' is doubled
|
||||
[expr1, ...] |List|
|
||||
(expr1, ...) |Tuple|
|
||||
{expr1: expr1, ...} |Dictionary|
|
||||
#{key: expr1, ...} legacy |Dictionary|
|
||||
&option option value
|
||||
@@ -1101,10 +1315,11 @@ Examples:
|
||||
"abc" == "Abc" evaluates to 1 if 'ignorecase' is set, 0 otherwise
|
||||
NOTE: In |Vim9| script 'ignorecase' is not used.
|
||||
|
||||
*E691* *E692*
|
||||
*E691* *E692* *E1517* *E1518*
|
||||
A |List| can only be compared with a |List| and only "equal", "not equal",
|
||||
"is" and "isnot" can be used. This compares the values of the list,
|
||||
recursively. Ignoring case means case is ignored when comparing item values.
|
||||
Same applies for a |Tuple|.
|
||||
|
||||
*E735* *E736*
|
||||
A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not
|
||||
@@ -1124,12 +1339,13 @@ Dictionary and arguments, use |get()| to get the function name: >
|
||||
if get(Part1, 'name') == get(Part2, 'name')
|
||||
" Part1 and Part2 refer to the same function
|
||||
< *E1037*
|
||||
Using "is" or "isnot" with a |List|, |Dictionary| or |Blob| checks whether
|
||||
the expressions are referring to the same |List|, |Dictionary| or |Blob|
|
||||
instance. A copy of a |List| is different from the original |List|. When
|
||||
using "is" without a |List|, |Dictionary| or |Blob|, it is equivalent to
|
||||
using "equal", using "isnot" equivalent to using "not equal". Except that
|
||||
a different type means the values are different: >
|
||||
Using "is" or "isnot" with a |List|, |Tuple|, |Dictionary| or |Blob| checks
|
||||
whether the expressions are referring to the same |List|, |Tuple|,
|
||||
|Dictionary| or |Blob| instance. A copy of a |List| or |Tuple| is different
|
||||
from the original |List| or |Tuple|. When using "is" without a |List|,
|
||||
|Tuple|, |Dictionary| or |Blob|, it is equivalent to using "equal", using
|
||||
"isnot" is equivalent to using "not equal". Except that a different type
|
||||
means the values are different: >
|
||||
echo 4 == '4'
|
||||
1
|
||||
echo 4 is '4'
|
||||
@@ -1147,7 +1363,7 @@ that: >
|
||||
because 'x' converted to a Number is zero. However: >
|
||||
echo [0] == ['x']
|
||||
0
|
||||
Inside a List or Dictionary this conversion is not used.
|
||||
Inside a List or Tuple or Dictionary this conversion is not used.
|
||||
|
||||
In |Vim9| script the types must match.
|
||||
|
||||
@@ -1191,13 +1407,14 @@ topmost bit (sometimes called the sign bit) is cleared. If the right operand
|
||||
|
||||
expr6 and expr7 *expr6* *expr7* *E1036* *E1051*
|
||||
---------------
|
||||
expr7 + expr7 Number addition, |List| or |Blob| concatenation *expr-+*
|
||||
*expr-+*
|
||||
expr7 + expr7 Number addition, |List| or |Tuple| or |Blob| concatenation
|
||||
expr7 - expr7 Number subtraction *expr--*
|
||||
expr7 . expr7 String concatenation *expr-.*
|
||||
expr7 .. expr7 String concatenation *expr-..*
|
||||
|
||||
For |Lists| only "+" is possible and then both expr7 must be a list. The
|
||||
result is a new list with the two lists Concatenated.
|
||||
result is a new list with the two lists concatenated. Same for a |Tuple|.
|
||||
|
||||
For String concatenation ".." is preferred, since "." is ambiguous, it is also
|
||||
used for |Dict| member access and floating point numbers.
|
||||
@@ -1295,7 +1512,8 @@ in any order. E.g., these are all possible:
|
||||
expr10->(expr1, ...)[expr1]
|
||||
Evaluation is always from left to right.
|
||||
|
||||
expr10[expr1] item of String or |List| *expr-[]* *E111*
|
||||
*expr-[]* *E111*
|
||||
expr10[expr1] item of String or |List| or |Tuple|
|
||||
*E909* *subscript* *E1062*
|
||||
In legacy Vim script:
|
||||
If expr10 is a Number or String this results in a String that contains the
|
||||
@@ -1328,6 +1546,8 @@ Generally, if a |List| index is equal to or higher than the length of the
|
||||
|List|, or more negative than the length of the |List|, this results in an
|
||||
error.
|
||||
|
||||
A |Tuple| index is similar to a |List| index as explained above.
|
||||
|
||||
|
||||
expr10[expr1a : expr1b] substring or |sublist| *expr-[:]* *substring*
|
||||
|
||||
@@ -1369,6 +1589,7 @@ just above. Also see |sublist| below. Examples: >
|
||||
:let l = mylist[:3] " first four items
|
||||
:let l = mylist[4:4] " List with one item
|
||||
:let l = mylist[:] " shallow copy of a List
|
||||
A |Tuple| slice is similar to a |List| slice.
|
||||
|
||||
If expr10 is a |Blob| this results in a new |Blob| with the bytes in the
|
||||
indexes expr1a and expr1b, inclusive. Examples: >
|
||||
@@ -2081,7 +2302,7 @@ v:colornames A dictionary that maps color names to hex color strings. These
|
||||
|
||||
You can make changes to that file, but make sure to add new
|
||||
keys instead of updating existing ones, otherwise Vim will skip
|
||||
loading the file (thinking is hasn't been changed).
|
||||
loading the file (thinking it hasn't been changed).
|
||||
|
||||
*v:completed_item* *completed_item-variable*
|
||||
v:completed_item
|
||||
@@ -2630,6 +2851,8 @@ v:t_typealias Value of |typealias| type. Read-only. See: |type()|
|
||||
v:t_enum Value of |enum| type. Read-only. See: |type()|
|
||||
*v:t_enumvalue* *t_enumvalue-variable*
|
||||
v:t_enumvalue Value of |enumvalue| type. Read-only. See: |type()|
|
||||
*v:t_tuple* *t_tuple-variable*
|
||||
v:t_tuple Value of |Tuple| type. Read-only. See: |type()|
|
||||
|
||||
*v:termresponse* *termresponse-variable*
|
||||
v:termresponse The escape sequence returned by the terminal for the |t_RV|
|
||||
@@ -2949,13 +3172,13 @@ declarations and assignments do not use a command. |vim9-declaration|
|
||||
:let &g:{option-name} -= {expr1}
|
||||
Like above, but only set the global value of an option
|
||||
(if there is one). Works like |:setglobal|.
|
||||
*E1093*
|
||||
*E1093* *E1537* *E1538* *E1535*
|
||||
:let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688*
|
||||
{expr1} must evaluate to a |List|. The first item in
|
||||
the list is assigned to {name1}, the second item to
|
||||
{name2}, etc.
|
||||
{expr1} must evaluate to a |List| or a |Tuple|. The
|
||||
first item in the list or tuple is assigned to
|
||||
{name1}, the second item to {name2}, etc.
|
||||
The number of names must match the number of items in
|
||||
the |List|.
|
||||
the |List| or |Tuple|.
|
||||
Each name can be one of the items of the ":let"
|
||||
command as mentioned above.
|
||||
Example: >
|
||||
@@ -2972,16 +3195,22 @@ declarations and assignments do not use a command. |vim9-declaration|
|
||||
:let [{name1}, {name2}, ...] .= {expr1}
|
||||
:let [{name1}, {name2}, ...] += {expr1}
|
||||
:let [{name1}, {name2}, ...] -= {expr1}
|
||||
Like above, but append/add/subtract the value for each
|
||||
|List| item.
|
||||
:let [{name1}, {name2}, ...] *= {expr1}
|
||||
:let [{name1}, {name2}, ...] /= {expr1}
|
||||
:let [{name1}, {name2}, ...] %= {expr1}
|
||||
Like above, but append, add, subtract, multiply,
|
||||
divide, or modulo the value for each |List| or |Tuple|
|
||||
item.
|
||||
|
||||
:let [{name}, ..., ; {lastname}] = {expr1} *E452*
|
||||
Like |:let-unpack| above, but the |List| may have more
|
||||
items than there are names. A list of the remaining
|
||||
items is assigned to {lastname}. If there are no
|
||||
remaining items {lastname} is set to an empty list.
|
||||
Like |:let-unpack| above, but the |List| or |Tuple|
|
||||
may have more items than there are names. A list or a
|
||||
tuple of the remaining items is assigned to
|
||||
{lastname}. If there are no remaining items,
|
||||
{lastname} is set to an empty list or tuple.
|
||||
Example: >
|
||||
:let [a, b; rest] = ["aval", "bval", 3, 4]
|
||||
:let [a, b; rest] = ("aval", "bval", 3, 4)
|
||||
<
|
||||
:let [{name}, ..., ; {lastname}] .= {expr1}
|
||||
:let [{name}, ..., ; {lastname}] += {expr1}
|
||||
@@ -3176,23 +3405,26 @@ text...
|
||||
get an error message: "E940: Cannot lock or unlock
|
||||
variable {name}".
|
||||
|
||||
[depth] is relevant when locking a |List| or
|
||||
|Dictionary|. It specifies how deep the locking goes:
|
||||
[depth] is relevant when locking a |List|, a |Tuple|
|
||||
or a |Dictionary|. It specifies how deep the locking
|
||||
goes:
|
||||
0 Lock the variable {name} but not its
|
||||
value.
|
||||
1 Lock the |List| or |Dictionary| itself,
|
||||
cannot add or remove items, but can
|
||||
still change their values.
|
||||
1 Lock the |List| or |Tuple| or
|
||||
|Dictionary| itself, cannot add or
|
||||
remove items, but can still change
|
||||
their values.
|
||||
2 Also lock the values, cannot change
|
||||
the items. If an item is a |List| or
|
||||
|Dictionary|, cannot add or remove
|
||||
items, but can still change the
|
||||
|Tuple| or |Dictionary|, cannot add or
|
||||
remove items, but can still change the
|
||||
values.
|
||||
3 Like 2 but for the |List| /
|
||||
|Dictionary| in the |List| /
|
||||
3 Like 2 but for the |List| / |Tuple| /
|
||||
|Dictionary| in the |List| / |Tuple| /
|
||||
|Dictionary|, one level deeper.
|
||||
The default [depth] is 2, thus when {name} is a |List|
|
||||
or |Dictionary| the values cannot be changed.
|
||||
The default [depth] is 2, thus when {name} is a
|
||||
|List|, a |Tuple| or a |Dictionary| the values cannot
|
||||
be changed.
|
||||
|
||||
Example with [depth] 0: >
|
||||
let mylist = [1, 2, 3]
|
||||
@@ -3297,7 +3529,7 @@ text...
|
||||
:endfo[r] *:endfo* *:endfor*
|
||||
Repeat the commands between `:for` and `:endfor` for
|
||||
each item in {object}. {object} can be a |List|,
|
||||
a |Blob| or a |String|. *E1177*
|
||||
a |Tuple|, a |Blob| or a |String|. *E1177*
|
||||
|
||||
Variable {var} is set to the value of each item.
|
||||
In |Vim9| script the loop variable must not have been
|
||||
@@ -4922,5 +5154,52 @@ executable. It takes the following arguments:
|
||||
filetype string
|
||||
executable string
|
||||
|
||||
*dist#vim9#Open()* *:Open*
|
||||
*g:Openprg* *gx*
|
||||
dist#vim9#Open(file: string) ~
|
||||
|
||||
Opens `path` with the system default handler (macOS `open`, Windows
|
||||
`explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the
|
||||
string specified in the variable is used instead.
|
||||
|
||||
This function is by default called using the gx mapping. In visual mode
|
||||
tries to open the visually selected text.
|
||||
|
||||
Associated setting variables:
|
||||
`g:gx_word`: control how gx picks up the text under the cursor. Uses
|
||||
`g:netrw_gx` as a fallback for backward compatibility.
|
||||
(default: `<cfile>`)
|
||||
|
||||
`g:nogx`: disables the gx mapping. Uses `g:netrw_nogx` as a fallback for
|
||||
backward compatibility. (default: `unset`)
|
||||
|
||||
|
||||
NOTE: Escaping of the path is automatically applied.
|
||||
|
||||
Usage: >vim
|
||||
:call dist#vim9#Open(<path>)
|
||||
:Open <path>
|
||||
<
|
||||
|
||||
*dist#vim9#Launch()* *:Launch*
|
||||
dist#vim9#Launch(file: string) ~
|
||||
|
||||
Launches <args> with the appropriate system programs. Intended for launching
|
||||
GUI programs within Vim.
|
||||
|
||||
NOTE: escaping of <args> is left to the user
|
||||
|
||||
Examples: >vim
|
||||
vim9script
|
||||
|
||||
import autoload 'dist/vim9.vim'
|
||||
# Execute 'makeprg' into another xterm window
|
||||
vim9.Launch('xterm ' .. expandcmd(&makeprg))
|
||||
<
|
||||
|
||||
Usage: >vim
|
||||
:call dist#vim9#Launch(<args>)
|
||||
:Launch <app> <args>.
|
||||
<
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 9.1. Last change: 2024 Dec 04
|
||||
*filetype.txt* For Vim version 9.1. Last change: 2025 Mar 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -640,6 +640,25 @@ One command, :DiffGitCached, is provided to show a diff of the current commit
|
||||
in the preview window. It is equivalent to calling "git diff --cached" plus
|
||||
any arguments given to the command.
|
||||
|
||||
GIT REBASE *ft-gitrebase-plugin*
|
||||
|
||||
The gitrebase filetype defines the following buffer-local commands, to help
|
||||
with interactive `git rebase`: >
|
||||
|
||||
:Drop " to discard this commit
|
||||
:Edit " to stop for editing this commit
|
||||
:Fixup " to squash (but discard the message) into the previous one
|
||||
:Pick " to pick this commit (the cursor is on)
|
||||
:Reword " to pick this commit, but change the commit message
|
||||
:Squash " to squash this commit into the previous one
|
||||
|
||||
In addition, the following command can be used to cycle between the different
|
||||
possibilities: >
|
||||
|
||||
:Cycle " to cycle between the previous commands
|
||||
<
|
||||
The `:Cycle` command is also mapped to the CTRL-A and CTRL-X keys.
|
||||
For details, see `git-rebase --help`.
|
||||
|
||||
GO *ft-go-plugin*
|
||||
|
||||
@@ -744,12 +763,21 @@ Add following lines to $HOME/.vim/ftplugin/json.vim: >
|
||||
import autoload 'dist/json.vim'
|
||||
setl formatexpr=json.FormatExpr()
|
||||
|
||||
LUA *ft-lua-plugin*
|
||||
LUA *ft-lua-plugin* *g:lua_folding*
|
||||
|
||||
You can enable folding of Lua functions using |fold-expr| by: >
|
||||
|
||||
let g:lua_folding = 1
|
||||
< *g:lua_version* *g:lua_subversion*
|
||||
Lua filetype's 'includeexpr' and |ft-lua-syntax| highlighting use the global
|
||||
variables "g:lua_version" and "g:lua_subversion" to determine the version of
|
||||
Lua to use (5.3 is the default)
|
||||
|
||||
For example, to use Lua 5.1, set the variables like this: >
|
||||
|
||||
let g:lua_version = 5
|
||||
let g:lua_subversion = 1
|
||||
<
|
||||
MAIL *ft-mail-plugin*
|
||||
|
||||
Options:
|
||||
@@ -762,12 +790,12 @@ Options:
|
||||
You can also format quoted text with |gq|.
|
||||
|
||||
Local mappings:
|
||||
<LocalLeader>q or \\MailQuote
|
||||
<LocalLeader>q or \MailQuote
|
||||
Quotes the text selected in Visual mode, or from the cursor position
|
||||
to the end of the file in Normal mode. This means "> " is inserted in
|
||||
each line.
|
||||
|
||||
MAN *ft-man-plugin* *:Man* *man.vim*
|
||||
MAN *ft-man-plugin* *:Man* *:ManReload* *man.vim*
|
||||
|
||||
This plugin displays a manual page in a nice way. See |find-manpage| in the
|
||||
user manual for more information.
|
||||
@@ -784,6 +812,8 @@ Commands:
|
||||
Man {name} Display the manual page for {name} in a window.
|
||||
Man {number} {name}
|
||||
Display the manual page for {name} in a section {number}.
|
||||
ManReload Reload the cache of available man pages used for |:Man| argument
|
||||
completion.
|
||||
|
||||
Global mapping:
|
||||
<Leader>K Displays the manual page for the word under the cursor.
|
||||
@@ -814,6 +844,14 @@ desired folding style instead. For example: >
|
||||
If you would like :Man {number} {name} to behave like man {number} {name} by
|
||||
not running man {name} if no page is found, then use this: >
|
||||
let g:ft_man_no_sect_fallback = 1
|
||||
<
|
||||
*g:ft_man_implementation*
|
||||
The completion for the :Man command tries to guess which implementation of man
|
||||
the system has. If it guesses wrong, you can set g:ft_man_implementation to
|
||||
one of these values:
|
||||
'man-db' https://man-db.nongnu.org/
|
||||
'' Unknown, fall back to completing shell commands
|
||||
instead of man pages.
|
||||
|
||||
You may also want to set 'keywordprg' to make the |K| command open a manual
|
||||
page in a Vim window: >
|
||||
@@ -865,6 +903,12 @@ the PDF. The following are treated as tags:
|
||||
|
||||
These maps can be disabled with >
|
||||
:let g:no_pdf_maps = 1
|
||||
|
||||
PLSQL *ft-plsql-plugin*
|
||||
|
||||
To enable syntax folding in PL/SQL filetypes, set the following variable: >
|
||||
|
||||
:let g:plsql_fold = 1
|
||||
<
|
||||
|
||||
PYTHON *ft-python-plugin* *PEP8*
|
||||
|
||||
+25
-27
@@ -283,8 +283,6 @@ as general information regarding macOS user defaults.
|
||||
Here is a list of relevant dictionary entries:
|
||||
|
||||
KEY VALUE ~
|
||||
*MMAllowForceClickLookUp* use Force click for data lookup instead of
|
||||
<ForceClick> [bool]
|
||||
*MMCellWidthMultiplier* width of a normal glyph in em units [float]
|
||||
*MMCmdLineAlignBottom* Pin command-line to bottom of MacVim [bool]
|
||||
*MMDialogsTrackPwd* open/save dialogs track the Vim pwd [bool]
|
||||
@@ -307,7 +305,6 @@ KEY VALUE ~
|
||||
*MMTitlebarAppearsTransparent* enable a transparent titlebar [bool]
|
||||
*MMAppearanceModeSelection* dark mode selection (|macvim-dark-mode|)[bool]
|
||||
*MMRendererClipToRow* clip tall characters to the row they are on [bool]
|
||||
*MMScrollOneDirectionOnly* scroll along one axis only when using trackpad [bool]
|
||||
*MMSmoothResize* allow smooth resizing of MacVim window [bool]
|
||||
*MMShareFindPboard* share search text to Find Pasteboard [bool]
|
||||
*MMTextInsetBottom* text area offset in pixels [int]
|
||||
@@ -316,12 +313,22 @@ KEY VALUE ~
|
||||
*MMTextInsetTop* text area offset in pixels [int]
|
||||
*MMTexturedWindow* use brushed metal window (Tiger only) [bool]
|
||||
*MMTranslateCtrlClick* interpret ctrl-click as right-click [bool]
|
||||
*MMUseMouseTime* use mousetime to detect multiple clicks [bool]
|
||||
*MMVerticalSplit* files open in vertical splits [bool]
|
||||
*MMZoomBoth* zoom button maximizes both directions [bool]
|
||||
*MMUpdaterPrereleaseChannel* opt-in to pre-release software update [bool]
|
||||
*MMShowWhatsNewOnStartup* show "What's New" after updating to new version [bool]
|
||||
|
||||
Mouse / Trackpad ~
|
||||
*MMScrollOneDirectionOnly* scroll along one axis only when using trackpad [bool]
|
||||
*MMAllowForceClickLookUp* use Force click for data lookup instead of
|
||||
<ForceClick> [bool]
|
||||
*MMMouseWheelDisableAcceleration* disable OS scroll wheel acceleration [bool]
|
||||
*MMMouseWheelNumLines* how many lines to scroll when scroll wheel
|
||||
acceleration is turned off [int]
|
||||
*MMMouseWheelMinLines* min number of lines to scroll per scroll wheel
|
||||
click when acceleration is on [int]
|
||||
*MMUseMouseTime* use mousetime to detect multiple clicks [bool]
|
||||
|
||||
Tabs ~
|
||||
*MMTabColorsMode* use default/auto/colorscheme for tab colors [int]
|
||||
*MMWindowUseTabBackgroundColor* use tabs background fill color as window color [bool]
|
||||
@@ -395,32 +402,23 @@ top of the screen, you can set |MMNonNativeFullScreenShowMenu| to `NO` and
|
||||
==============================================================================
|
||||
5. Special colors *macvim-colors*
|
||||
|
||||
The colors in MacVim are defined in two dictionaries inside the "Resources"
|
||||
folder of the application bundle (MacVim.app/Contents/Resources). It is
|
||||
possible to add more colors by modifying these files. Color names are case
|
||||
insensitive when accessed from Vim, but in the dictionary they must be
|
||||
lowercase.
|
||||
MacVim mostly uses standard Vim colors. See |gui-colors| and |v:colornames|
|
||||
for how to set and override them.
|
||||
|
||||
*SystemColors.plist*
|
||||
There are only a few system colors that can be accessed from Vim. These
|
||||
colors are defined in the dictionary "SystemColors.plist". This dictionary
|
||||
stores (key, value) pairs where the key is the name of the color and the
|
||||
value is an NSColor selector name.
|
||||
There are a few additional system colors that can be used in the |:hi|
|
||||
command. These colors are defined in the dictionary "SystemColors.plist" in
|
||||
the MacVim.app bundle. These color values correspond to NSColor selectors in
|
||||
macOS. The available color names are:
|
||||
|
||||
The most useful system colors are: >
|
||||
MacSelectedTextBackgroundColor
|
||||
MacSecondarySelectedColor
|
||||
The former is the "Highlight Color" which can be changed in the "Appearance"
|
||||
section of the System Settings. The latter is the selection color used by
|
||||
a Cocoa application when it is not in focus.
|
||||
|
||||
*Colors.plist*
|
||||
Apart from the system colors, it is also possible to use the standard X11
|
||||
color names (see https://en.wikipedia.org/wiki/X11_color_names) which usually
|
||||
come in a file called "rgb.txt". MacVim does not have such a file, instead it
|
||||
keeps these colors in a dictionary called "Colors.plist". The key in this
|
||||
dictionary is the name of the color and the value is an RGB value on the form
|
||||
#rrggbb stored as an integer.
|
||||
KEY VALUE ~
|
||||
MacSecondarySelectedControlColor Selection color when app is not in
|
||||
focus.
|
||||
MacSelectedTextBackgroundColor "Highlight Color" which can be changed
|
||||
in the "Appearance" section of System
|
||||
Settings.
|
||||
MacTextBackgroundColor Normal text background color.
|
||||
MacTextColor Normal text color.
|
||||
|
||||
*macvim-colorscheme*
|
||||
MacVim ships with a custom color scheme that is used instead of the default
|
||||
|
||||
+23
-4
@@ -1,4 +1,4 @@
|
||||
*if_pyth.txt* For Vim version 9.1. Last change: 2024 Nov 09
|
||||
*if_pyth.txt* For Vim version 9.1. Last change: 2025 Mar 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Paul Moore
|
||||
@@ -184,8 +184,9 @@ vim.eval(str) *python-eval*
|
||||
evaluator (see |expression|). Returns the expression result as:
|
||||
- a string if the Vim expression evaluates to a string or number
|
||||
- a list if the Vim expression evaluates to a Vim list
|
||||
- a tuple if the Vim expression evaluates to a Vim tuple
|
||||
- a dictionary if the Vim expression evaluates to a Vim dictionary
|
||||
Dictionaries and lists are recursively expanded.
|
||||
Dictionaries, lists and tuples are recursively expanded.
|
||||
Examples: >
|
||||
:" value of the 'textwidth' option
|
||||
:py text_width = vim.eval("&tw")
|
||||
@@ -196,6 +197,8 @@ vim.eval(str) *python-eval*
|
||||
:" Result is a string! Use string.atoi() to convert to a number.
|
||||
:py str = vim.eval("12+12")
|
||||
:
|
||||
:py tuple = vim.eval('(1, 2, 3)')
|
||||
:
|
||||
:py tagList = vim.eval('taglist("eval_expr")')
|
||||
< The latter will return a python list of python dicts, for instance:
|
||||
[{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': ~
|
||||
@@ -207,8 +210,8 @@ vim.eval(str) *python-eval*
|
||||
|
||||
vim.bindeval(str) *python-bindeval*
|
||||
Like |python-eval|, but returns special objects described in
|
||||
|python-bindeval-objects|. These python objects let you modify (|List|
|
||||
or |Dictionary|) or call (|Funcref|) vim objects.
|
||||
|python-bindeval-objects|. These python objects let you modify
|
||||
(|List|, |Tuple| or |Dictionary|) or call (|Funcref|) vim objects.
|
||||
|
||||
vim.strwidth(str) *python-strwidth*
|
||||
Like |strwidth()|: returns number of display cells str occupies, tab
|
||||
@@ -688,6 +691,22 @@ vim.List object *python-List*
|
||||
print isinstance(l, vim.List) # True
|
||||
class List(vim.List): # Subclassing
|
||||
|
||||
vim.Tuple object *python-Tuple*
|
||||
Sequence-like object providing access to vim |Tuple| type.
|
||||
Supports `.locked` attribute, see |python-.locked|. Also supports the
|
||||
following methods:
|
||||
Method Description ~
|
||||
__new__(), __new__(iterable)
|
||||
You can use `vim.Tuple()` to create new vim tuples.
|
||||
Without arguments constructs empty list.
|
||||
Examples: >
|
||||
t = vim.Tuple("abc") # Constructor, result: ('a', 'b', 'c')
|
||||
print t[1:] # slicing
|
||||
print t[0] # getting item
|
||||
for i in t: # iteration
|
||||
print isinstance(t, vim.Tuple) # True
|
||||
class Tuple(vim.Tuple): # Subclassing
|
||||
|
||||
vim.Function object *python-Function*
|
||||
Function-like object, acting like vim |Funcref| object. Accepts special
|
||||
keyword argument `self`, see |Dictionary-function|. You can also use
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 9.1. Last change: 2025 Jan 03
|
||||
*index.txt* For Vim version 9.1. Last change: 2025 Mar 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -803,8 +803,6 @@ tag char note action in Normal mode ~
|
||||
|gu| gu{motion} 2 make Nmove text lowercase
|
||||
|gv| gv reselect the previous Visual area
|
||||
|gw| gw{motion} 2 format Nmove text and keep cursor
|
||||
|netrw-gx| gx execute application for file name under the
|
||||
cursor (only with |netrw| plugin)
|
||||
|g@| g@{motion} call 'operatorfunc'
|
||||
|g~| g~{motion} 2 swap case for Nmove text
|
||||
|g<Down>| g<Down> 1 same as "gj"
|
||||
@@ -1402,6 +1400,8 @@ tag command action ~
|
||||
|:inoremenu| :inoreme[nu] like ":noremenu" but for Insert mode
|
||||
|:intro| :int[ro] print the introductory message
|
||||
|:interface| :interface start of an interface declaration
|
||||
|:iput| :ip[ut] like |:put|, but adjust the indent to the
|
||||
current line
|
||||
|:isearch| :is[earch] list one line where identifier matches
|
||||
|:isplit| :isp[lit] split window and jump to definition of
|
||||
identifier
|
||||
|
||||
+10
-1
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 9.1. Last change: 2024 Dec 31
|
||||
*insert.txt* For Vim version 9.1. Last change: 2025 Mar 09
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -222,6 +222,10 @@ CTRL-Q Same as CTRL-V.
|
||||
CTRL-SHIFT-V *i_CTRL-SHIFT-V* *i_CTRL-SHIFT-Q*
|
||||
CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active,
|
||||
then it inserts the Escape sequence for a key with modifiers.
|
||||
Note: When CTRL-SHIFT-V is intercepted by your system (e.g.,
|
||||
to paste text) you can often use CTRL-SHIFT-Q instead.
|
||||
However, in some terminals (e.g. GNOME Terminal), CTRL-SHIFT-Q
|
||||
quits the terminal without confirmation.
|
||||
|
||||
CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
|
||||
be given to complete words or scroll the window. See
|
||||
@@ -657,6 +661,11 @@ CTRL-N (next), and CTRL-P (previous).
|
||||
To get the current completion information, |complete_info()| can be used.
|
||||
Also see the 'infercase' option if you want to adjust the case of the match.
|
||||
|
||||
When inserting a selected candidate word from the |popup-menu|, the part of
|
||||
the candidate word that does not match the query is highlighted using
|
||||
|hl-ComplMatchIns|. If fuzzy is enabled in 'completeopt', highlighting will
|
||||
not be applied.
|
||||
|
||||
*complete_CTRL-E*
|
||||
When completion is active you can use CTRL-E to stop it and go back to the
|
||||
originally typed text. The CTRL-E will not be inserted.
|
||||
|
||||
+112
-38
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Jan 23
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Mar 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -2119,13 +2119,35 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
*'completefuzzycollect'* *'cfc'*
|
||||
'completefuzzycollect' 'cfc' string (default: empty)
|
||||
global
|
||||
A comma-separated list of strings to enable fuzzy collection for
|
||||
specific |ins-completion| modes, affecting how matches are gathered
|
||||
during completion. For specified modes, fuzzy matching is used to
|
||||
find completion candidates instead of the standard prefix-based
|
||||
matching. This option can contain the following values:
|
||||
|
||||
keyword keywords in the current file |i_CTRL-X_CTRL-N|
|
||||
keywords with flags ".", "w", |i_CTRL-N| |i_CTRL-P|
|
||||
"b", "u", "U" and "k{dict}" in 'complete'
|
||||
keywords in 'dictionary' |i_CTRL-X_CTRL-K|
|
||||
|
||||
files file names |i_CTRL-X_CTRL-F|
|
||||
|
||||
whole_line whole lines |i_CTRL-X_CTRL-L|
|
||||
|
||||
When using the 'completeopt' "longest" option value, fuzzy collection
|
||||
can identify the longest common string among the best fuzzy matches
|
||||
and insert it automatically.
|
||||
|
||||
*'completeitemalign'* *'cia'*
|
||||
'completeitemalign' 'cia' string (default: "abbr,kind,menu")
|
||||
global
|
||||
A comma-separated list of |complete-items| that controls the alignment
|
||||
and display order of items in the popup menu during Insert mode
|
||||
completion. The supported values are abbr, kind, and menu. These
|
||||
options allow to customize how the completion items are shown in the
|
||||
A comma-separated list of strings that controls the alignment and
|
||||
display order of items in the popup menu during Insert mode
|
||||
completion. The supported values are "abbr", "kind", and "menu".
|
||||
These values allow customizing how |complete-items| are shown in the
|
||||
popup menu. Note: must always contain those three values in any
|
||||
order.
|
||||
|
||||
@@ -2135,6 +2157,22 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
A comma-separated list of options for Insert mode completion
|
||||
|ins-completion|. The supported values are:
|
||||
|
||||
fuzzy Enable |fuzzy-matching| for completion candidates. This
|
||||
allows for more flexible and intuitive matching, where
|
||||
characters can be skipped and matches can be found even
|
||||
if the exact sequence is not typed. Note: This option
|
||||
does not affect the collection of candidate list, it only
|
||||
controls how completion candidates are reduced from the
|
||||
list of alternatives. If you want to use |fuzzy-matching|
|
||||
to gather more alternatives for your candidate list,
|
||||
see |'completefuzzycollect'|.
|
||||
|
||||
longest Only insert the longest common text of the matches. If
|
||||
the menu is displayed you can use CTRL-L to add more
|
||||
characters. Whether case is ignored depends on the kind
|
||||
of completion. For buffer text the 'ignorecase' option is
|
||||
used.
|
||||
|
||||
menu Use a popup menu to show the possible completions. The
|
||||
menu is only shown when there is more than one match and
|
||||
sufficient colors are available. |ins-completion-menu|
|
||||
@@ -2143,15 +2181,17 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Useful when there is additional information about the
|
||||
match, e.g., what file it comes from.
|
||||
|
||||
longest Only insert the longest common text of the matches. If
|
||||
the menu is displayed you can use CTRL-L to add more
|
||||
characters. Whether case is ignored depends on the kind
|
||||
of completion. For buffer text the 'ignorecase' option is
|
||||
used.
|
||||
noinsert Do not insert any text for a match until the user selects
|
||||
a match from the menu. Only works in combination with
|
||||
"menu" or "menuone". No effect if "longest" is present.
|
||||
|
||||
preview Show extra information about the currently selected
|
||||
completion in the preview window. Only works in
|
||||
combination with "menu" or "menuone".
|
||||
noselect Same as "noinsert", except that no menu item is
|
||||
pre-selected. If both "noinsert" and "noselect" are
|
||||
present, "noselect" has precedence.
|
||||
|
||||
nosort Disable sorting of completion candidates based on fuzzy
|
||||
scores when "fuzzy" is enabled. Candidates will appear
|
||||
in their original order.
|
||||
|
||||
popup Show extra information about the currently selected
|
||||
completion in a popup window. Only works in combination
|
||||
@@ -2166,22 +2206,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
See the example at |complete-popuphidden|.
|
||||
{only works when compiled with the |+textprop| feature}
|
||||
|
||||
noinsert Do not insert any text for a match until the user selects
|
||||
a match from the menu. Only works in combination with
|
||||
"menu" or "menuone". No effect if "longest" is present.
|
||||
preinsert
|
||||
Preinsert the portion of the first candidate word that is
|
||||
not part of the current completion leader and using the
|
||||
|hl-ComplMatchIns| highlight group. In order for it to
|
||||
work, "fuzzy" must not be set and "menuone" must be set.
|
||||
|
||||
noselect Same as "noinsert", except that no menu item is
|
||||
pre-selected. If both "noinsert" and "noselect" are
|
||||
present, "noselect" has precedence.
|
||||
|
||||
fuzzy Enable |fuzzy-matching| for completion candidates. This
|
||||
allows for more flexible and intuitive matching, where
|
||||
characters can be skipped and matches can be found even
|
||||
if the exact sequence is not typed.
|
||||
|
||||
nosort Disable sorting of completion candidates based on fuzzy
|
||||
scores when "fuzzy" is enabled. Candidates will appear
|
||||
in their original order.
|
||||
preview Show extra information about the currently selected
|
||||
completion in the preview window. Only works in
|
||||
combination with "menu" or "menuone".
|
||||
|
||||
*'completepopup'* *'cpp'*
|
||||
'completepopup' 'cpp' string (default empty)
|
||||
@@ -2892,7 +2925,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
security reasons.
|
||||
|
||||
*'dip'* *'diffopt'*
|
||||
'diffopt' 'dip' string (default "internal,filler,closeoff")
|
||||
'diffopt' 'dip' string (default
|
||||
"internal,filler,closeoff,inline:simple")
|
||||
global
|
||||
{not available when compiled without the |+diff|
|
||||
feature}
|
||||
@@ -2957,6 +2991,21 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Use the indent heuristic for the internal
|
||||
diff library.
|
||||
|
||||
inline:{text} Highlight inline differences within a change.
|
||||
See |view-diffs|. Supported values are:
|
||||
|
||||
none Do not perform inline highlighting.
|
||||
simple Highlight from first different
|
||||
character to the last one in each
|
||||
line. This is the default if nothing
|
||||
is set.
|
||||
char Use internal diff to perform a
|
||||
character-wise diff and highlight the
|
||||
difference.
|
||||
word Use internal diff to perform a
|
||||
|word|-wise diff and highlight the
|
||||
difference.
|
||||
|
||||
internal Use the internal diff library. This is
|
||||
ignored when 'diffexpr' is set. *E960*
|
||||
When running out of memory when writing a
|
||||
@@ -3292,6 +3341,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Otherwise this is a comma-separated list of event names. Example: >
|
||||
:set ei=WinEnter,WinLeave
|
||||
<
|
||||
*'eventignorewin'* *'eiw'*
|
||||
'eventignorewin' 'eiw' string (default "")
|
||||
window-local
|
||||
Similar to 'eventignore' but applies to a particular window and its
|
||||
buffers, for which window and buffer related autocommands can be
|
||||
ignored indefinitely without affecting the global 'eventignore'.
|
||||
|
||||
*'expandtab'* *'et'* *'noexpandtab'* *'noet'*
|
||||
'expandtab' 'et' boolean (default off)
|
||||
local to buffer
|
||||
@@ -4451,10 +4507,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
v:Visual,V:VisualNOS,w:WarningMsg,
|
||||
W:WildMenu,f:Folded,F:FoldColumn,
|
||||
A:DiffAdd,C:DiffChange,D:DiffDelete,
|
||||
T:DiffText,>:SignColumn,-:Conceal,
|
||||
B:SpellBad,P:SpellCap,R:SpellRare,
|
||||
L:SpellLocal,+:Pmenu,=:PmenuSel,
|
||||
k:PmenuMatch,<:PmenuMatchSel,
|
||||
T:DiffText,E:DiffTextAdd,>:SignColumn,
|
||||
-:Conceal,B:SpellBad,P:SpellCap,
|
||||
R:SpellRare, L:SpellLocal,+:Pmenu,
|
||||
=:PmenuSel, k:PmenuMatch,<:PmenuMatchSel,
|
||||
[:PmenuKind,]:PmenuKindSel,
|
||||
{:PmenuExtra,}:PmenuExtraSel,
|
||||
x:PmenuSbar,X:PmenuThumb,*:TabLine,
|
||||
@@ -4506,7 +4562,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|hl-DiffAdd| A added line in diff mode
|
||||
|hl-DiffChange| C changed line in diff mode
|
||||
|hl-DiffDelete| D deleted line in diff mode
|
||||
|hl-DiffText| T inserted text in diff mode
|
||||
|hl-DiffText| T changed text in diff mode
|
||||
|hl-DiffTextAdd| E inserted text in diff mode
|
||||
|hl-SignColumn| > column used for |signs|
|
||||
|hl-Conceal| - the placeholders used for concealed characters
|
||||
(see 'conceallevel')
|
||||
@@ -5189,7 +5246,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
set keyprotocol=kitty:kitty,foot:kitty,ghostty:kitty,wezterm:kitty
|
||||
set keyprotocol+=xterm:mok2
|
||||
|
||||
< This means that when 'term' contains "kitty, "foot", "ghostty" or
|
||||
< This means that when 'term' contains "kitty, "foot", "ghostty" or
|
||||
"wezterm" somewhere, then the "kitty" protocol is used. When 'term'
|
||||
contains "xterm" somewhere, then the "mok2" protocol is used.
|
||||
|
||||
@@ -6555,6 +6612,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
Determines the maximum number of items to show in the popup menu for
|
||||
Insert mode completion. When zero as much space as available is used.
|
||||
|ins-completion-menu|.
|
||||
|
||||
*'pummaxwidth'* *'pmw'*
|
||||
'pummaxwidth' 'pmw' number (default 0)
|
||||
global
|
||||
Determines the maximum width to use for the popup menu for completion.
|
||||
When zero, there is no maximum width limit, otherwise the popup menu
|
||||
will never be wider than this value. Truncated text will be indicated
|
||||
by "..." at the end. Takes precedence over 'pumwidth'.
|
||||
|ins-completion-menu|.
|
||||
|
||||
*'pumwidth'* *'pw'*
|
||||
@@ -8631,7 +8697,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< You need to do this when your system has no locale support for UTF-8.
|
||||
|
||||
*'termguicolors'* *'tgc'* *'notermguicolors'* *'notgc'* *E954*
|
||||
'termguicolors' 'tgc' boolean (default off)
|
||||
'termguicolors' 'tgc' boolean (default off unless Vim detects that it runs
|
||||
in a capable terminal)
|
||||
global
|
||||
{not available when compiled without the
|
||||
|+termguicolors| feature}
|
||||
@@ -9701,7 +9768,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
"lastused" When completing buffer names and more than one buffer
|
||||
matches, sort buffers by time last used (other than
|
||||
the current buffer).
|
||||
When there is only a single match, it is fully completed in all cases.
|
||||
"noselect" Do not pre-select first menu item and start 'wildmenu'
|
||||
if it is enabled.
|
||||
When there is only a single match, it is fully completed in all cases
|
||||
except when "noselect" is present.
|
||||
|
||||
Examples of useful colon-separated values:
|
||||
"longest:full" Like "longest", but also start 'wildmenu' if it is
|
||||
@@ -9724,7 +9794,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:set wildmode=list,full
|
||||
< List all matches without completing, then each full match >
|
||||
:set wildmode=longest,list
|
||||
< Complete longest common string, then list alternatives.
|
||||
< Complete longest common string, then list alternatives >
|
||||
:set wildmode=noselect:full
|
||||
< Display 'wildmenu' without completing, then each full match >
|
||||
:set wildmode=noselect:lastused,full
|
||||
< Same as above, but sort buffers by time last used.
|
||||
More info here: |cmdline-completion|.
|
||||
|
||||
*'wildoptions'* *'wop'*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 9.1. Last change: 2024 Dec 26
|
||||
*pattern.txt* For Vim version 9.1. Last change: 2025 Mar 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -141,6 +141,7 @@ CTRL-C Interrupt current (search) command. Use CTRL-Break on
|
||||
help users who use "vim file | grep word" and don't
|
||||
know how to get out (blindly typing :qa<CR> would
|
||||
work).
|
||||
If a popup is open, the active popup will be closed.
|
||||
|
||||
*:noh* *:nohlsearch*
|
||||
:noh[lsearch] Stop the highlighting for the 'hlsearch' option. It
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_getscript.txt* For Vim version 9.1. Last change: 2024 Oct 05
|
||||
*pi_getscript.txt* For Vim version 9.1. Last change: 2025 Mar 15
|
||||
>
|
||||
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
|
||||
<
|
||||
@@ -348,38 +348,43 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim.
|
||||
Doesn't override vimball installation.
|
||||
>
|
||||
g:GetLatestVimScripts_scriptaddr
|
||||
< default='https://www.vim.org/scripts/script.php?script_id='
|
||||
< default='https://www.vim.org/scripts/script.php?script_id='
|
||||
Override this if your system needs
|
||||
... ='http://vim.sourceforge.net/script.php?script_id='
|
||||
>
|
||||
g:GetLatestVimScripts_downloadaddr
|
||||
< default='https://www.vim.org/scripts/download_script.php?src_id='
|
||||
< default='https://www.vim.org/scripts/download_script.php?src_id='
|
||||
Override this if your system needs
|
||||
... ='http://vim.sourceforge.net/scripts/download_script.php?src_id='
|
||||
>
|
||||
g:GetLatestVimScripts_bunzip2
|
||||
< default= bunzip2
|
||||
< default= bunzip2
|
||||
This variable holds the name of the command to decompress .bz2
|
||||
files
|
||||
>
|
||||
g:GetLatestVimScripts_bunzip3
|
||||
< default= bunzip3
|
||||
This variable holds the name of the command to decompress .bz3
|
||||
files
|
||||
>
|
||||
g:GetLatestVimScripts_gunzip
|
||||
< default= gunzip
|
||||
< default= gunzip
|
||||
This variable holds the name of the command to decompress .gz
|
||||
files
|
||||
>
|
||||
g:GetLatestVimScripts_unxz
|
||||
< default= unxz
|
||||
< default= unxz
|
||||
This variable holds the name of the command to decompress .xz
|
||||
files
|
||||
>
|
||||
g:GetLatestVimScripts_unzip
|
||||
< default= unzip
|
||||
< default= unzip
|
||||
This variable holds the name of the command to decompress .zip
|
||||
files
|
||||
|
||||
Note: The variables associated with decompression commands help workaround
|
||||
crossplatform issues. For example, on Windows is possible to delegate this
|
||||
calls into `wsl` by doing: >
|
||||
crossplatform issues. For example, on Windows is possible to delegate
|
||||
this calls into `wsl` by doing: >
|
||||
|
||||
let g:GetLatestVimScripts_bunzip2= "wsl -e bunzip2"
|
||||
let g:GetLatestVimScripts_gunzip= "wsl -e gunzip"
|
||||
@@ -409,6 +414,8 @@ The AutoInstall process will:
|
||||
Windows: $HOME\vimfiles
|
||||
if the downloaded file ends with ".bz2"
|
||||
bunzip2 it
|
||||
else if the downloaded file ends with ".bz3"
|
||||
bunzip3 it
|
||||
else if the downloaded file ends with ".gz"
|
||||
gunzip it
|
||||
if the resulting file ends with ".zip"
|
||||
@@ -422,6 +429,7 @@ The AutoInstall process will:
|
||||
==============================================================================
|
||||
9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
|
||||
|
||||
v38 Feb 25, 2025 : * handles additional decompression option for .bzip3 files.
|
||||
v37 Sep 23, 2024 : * Support for the new vimball's .vmb extension (old .vba
|
||||
extension conflicted with visual basic).
|
||||
* Support for |glvs-autoinstall| in ftplugins and packages.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_gzip.txt* For Vim version 9.1. Last change: 2023 Nov 14
|
||||
*pi_gzip.txt* For Vim version 9.1. Last change: 2025 Mar 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -28,12 +28,14 @@ The plugin installs autocommands to intercept reading and writing of files
|
||||
with these extensions:
|
||||
|
||||
extension compression ~
|
||||
*.Z compress (Lempel-Ziv)
|
||||
*.gz gzip
|
||||
*.bz2 bzip2
|
||||
*.bz3 bzip3
|
||||
*.gz gzip
|
||||
*.lz lzip
|
||||
*.lz4 lz4
|
||||
*.lzma lzma
|
||||
*.xz xz
|
||||
*.lz lzip
|
||||
*.Z compress (Lempel-Ziv)
|
||||
*.zst zstd
|
||||
|
||||
That's actually the only thing you need to know. There are no options.
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../pack/dist/opt/netrw/doc/netrw.txt
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 9.1. Last change: 2025 Jan 08
|
||||
*popup.txt* For Vim version 9.1. Last change: 2025 Feb 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -504,7 +504,7 @@ popup_menu({what}, {options}) *popup_menu()*
|
||||
\ mapping: 0,
|
||||
\ })
|
||||
< The current line is highlighted with a match using
|
||||
"PopupSelected", or "PmenuSel" if that is not defined.
|
||||
|hl-PopupSelected| which is linked to "PmenuSel" by default.
|
||||
|
||||
Use {options} to change the properties. Should at least set
|
||||
"callback" to a function that handles the selected item.
|
||||
@@ -559,7 +559,7 @@ popup_notification({what}, {options}) *popup_notification()*
|
||||
\ close: 'click',
|
||||
\ padding: [0,1,0,1],
|
||||
\ })
|
||||
< The PopupNotification highlight group is used instead of
|
||||
< The |hl-PopupNotification| highlight group is used instead of
|
||||
WarningMsg if it is defined.
|
||||
|
||||
Without the |+timers| feature the popup will not disappear
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 9.1. Last change: 2025 Jan 11
|
||||
*quickfix.txt* For Vim version 9.1. Last change: 2025 Mar 11
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1722,6 +1722,13 @@ shells and OSes and also does not allow to use other available TeX options,
|
||||
if any. If your TeX doesn't support "-interaction=nonstopmode", please
|
||||
report it with different means to express \nonstopmode from the command line.
|
||||
|
||||
TSC COMPILER *compiler-tsc*
|
||||
|
||||
The executable and compiler options can be added to 'makeprg' by setting the
|
||||
b/g:tsc_makeprg variable. For example: >
|
||||
|
||||
let b:tsc_makeprg = "npx tsc --noEmit"
|
||||
|
||||
TYPST COMPILER *compiler-typst*
|
||||
|
||||
Vim includes a compiler plugin for Typst files. This compiler is enabled
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 9.1. Last change: 2024 Nov 02
|
||||
*quickref.txt* For Vim version 9.1. Last change: 2025 Feb 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -700,6 +700,7 @@ Short explanation of each option: *option-list*
|
||||
'errorformat' 'efm' description of the lines in the error file
|
||||
'esckeys' 'ek' recognize function keys in Insert mode
|
||||
'eventignore' 'ei' autocommand events that are ignored
|
||||
'eventignorewin' 'eiw' autocommand events that are ignored in a window
|
||||
'expandtab' 'et' use spaces when <Tab> is inserted
|
||||
'exrc' 'ex' read .vimrc and .exrc in the current directory
|
||||
'fileencoding' 'fenc' file encoding for multibyte text
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 9.1. Last change: 2024 Dec 19
|
||||
*starting.txt* For Vim version 9.1. Last change: 2025 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -828,8 +828,9 @@ accordingly. Vim proceeds in this order:
|
||||
easy to copy it to another system.
|
||||
|
||||
If Vim was started with "-u filename", the file "filename" is used.
|
||||
All following initializations until 4. are skipped. $MYVIMRC and
|
||||
$MYVIMDIR are not set.
|
||||
All following initializations until 4. are skipped. `$MYVIMRC` and
|
||||
`$MYVIMDIR` are not set (but `$MYVIMDIR` will be set, if 'rtp' is
|
||||
updated).
|
||||
"vim -u NORC" can be used to skip these initializations without
|
||||
reading a file. "vim -u NONE" also skips loading plugins. |-u|
|
||||
|
||||
@@ -851,9 +852,9 @@ accordingly. Vim proceeds in this order:
|
||||
*VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc*
|
||||
*$MYVIMRC* *$MYVIMDIR*
|
||||
c. Five places are searched for initializations. The first that exists
|
||||
is used, the others are ignored. The $MYVIMRC environment variable is
|
||||
set to the file that was first found, unless $MYVIMRC was already set
|
||||
and when using VIMINIT. The $MYVIMDIR environment variable is
|
||||
is used, the others are ignored. The `$MYVIMRC` environment variable is
|
||||
set to the file that was first found, unless `$MYVIMRC` was already set
|
||||
when using VIMINIT. The `$MYVIMDIR` environment variable is
|
||||
set to the personal 'rtp' directory, however it is not verified
|
||||
that the directory actually exists.
|
||||
I The environment variable VIMINIT (see also |compatible-default|) (*)
|
||||
@@ -974,9 +975,10 @@ accordingly. Vim proceeds in this order:
|
||||
The |v:vim_did_enter| variable is set to 1.
|
||||
The |VimEnter| autocommands are executed.
|
||||
|
||||
The $MYVIMRC or $MYGVIMRC environment variable will be set to the first found
|
||||
vimrc and/or gvimrc file while $MYVIMDIR is set to the users personal runtime
|
||||
directory 'rtp' (typically the first entry in 'runtimepath').
|
||||
The `$MYVIMRC` or `$MYGVIMRC` environment variable will be set to the first found
|
||||
vimrc and/or gvimrc file while `$MYVIMDIR` is set to the users personal runtime
|
||||
directory 'rtp' (typically the first entry in 'runtimepath'). If 'rtp'
|
||||
changes, `$MYVIMDIR` will be updated.
|
||||
Note: These environment variables resolve symbolic links, but 'rtp' does not.
|
||||
|
||||
|
||||
|
||||
+61
-18
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 9.1. Last change: 2025 Jan 20
|
||||
*syntax.txt* For Vim version 9.1. Last change: 2025 Mar 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1286,6 +1286,21 @@ doesn't work for you, or you don't edit Progress at all, use this in your
|
||||
startup vimrc: >
|
||||
:let filetype_w = "cweb"
|
||||
|
||||
CSHARP *cs.vim* *ft-cs-syntax*
|
||||
|
||||
C# raw string literals may use any number of quote marks to encapsulate the
|
||||
block, and raw interpolated string literals may use any number of braces to
|
||||
encapsulate the interpolation, e.g. >
|
||||
|
||||
$$$""""Hello {{{name}}}""""
|
||||
<
|
||||
By default, Vim highlights 3-8 quote marks, and 1-8 interpolation braces.
|
||||
The maximum numbers of quotes and braces recognized can configured using the
|
||||
following variables:
|
||||
|
||||
Variable Default ~
|
||||
g:cs_raw_string_quote_count 8
|
||||
g:cs_raw_string_interpolation_brace_count 8
|
||||
|
||||
DART *dart.vim* *ft-dart-syntax*
|
||||
|
||||
@@ -2343,13 +2358,9 @@ instead, and the name of your source file should be *.pike
|
||||
|
||||
LUA *lua.vim* *ft-lua-syntax*
|
||||
|
||||
The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is
|
||||
the default). You can select one of these versions using the global variables
|
||||
lua_version and lua_subversion. For example, to activate Lua
|
||||
5.1 syntax highlighting, set the variables like this: >
|
||||
|
||||
:let lua_version = 5
|
||||
:let lua_subversion = 1
|
||||
The Lua syntax file can be used for versions 4.0, 5.0+. You can select one of
|
||||
these versions using the global variables |g:lua_version| and
|
||||
|g:lua_subversion|.
|
||||
|
||||
|
||||
MAIL *mail.vim* *ft-mail.vim*
|
||||
@@ -3501,25 +3512,25 @@ cases pertain, then the first line of the file is examined (ex. looking for
|
||||
/bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, then
|
||||
that shelltype is used. However some files (ex. .profile) are known to be
|
||||
shell files but the type is not apparent. Furthermore, on many systems sh is
|
||||
symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix).
|
||||
symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (POSIX).
|
||||
|
||||
One may specify a global default by instantiating one of the following
|
||||
variables in your <.vimrc>:
|
||||
|
||||
ksh: >
|
||||
let g:is_kornshell = 1
|
||||
< posix: (using this is nearly the same as setting g:is_kornshell to 1) >
|
||||
< posix: (default) >
|
||||
let g:is_posix = 1
|
||||
< bash: >
|
||||
let g:is_bash = 1
|
||||
< sh: (default) Bourne shell >
|
||||
< dash: >
|
||||
let g:is_dash = 1
|
||||
< sh: Bourne shell >
|
||||
let g:is_sh = 1
|
||||
|
||||
< (dash users should use posix)
|
||||
|
||||
If there's no "#! ..." line, and the user hasn't availed himself/herself of a
|
||||
default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
|
||||
the Bourne shell syntax. No need to quote RFCs or market penetration
|
||||
the POSIX shell syntax. No need to quote RFCs or market penetration
|
||||
statistics in error reports, please -- just select the default version of the
|
||||
sh your system uses and install the associated "let..." in your <.vimrc>.
|
||||
|
||||
@@ -4021,7 +4032,29 @@ highlighting is to put the following line in your |vimrc|: >
|
||||
|
||||
let g:vimsyn_noerror = 1
|
||||
<
|
||||
To suppress only specific errors, define the following variables: >
|
||||
|
||||
g:vimsyn_nobehaveerror = 1 " :behave error
|
||||
g:vimsyn_vimFTError = 1 " :filetype error
|
||||
g:vimsyn_noaugrouperror = 1 " :augroup error
|
||||
g:vimsyn_noopererror = 1 " operator error
|
||||
g:vimsyn_notypealiaserror = 1 " Vim9 type alias error
|
||||
g:vimsyn_novimfunctionerror = 1 " Vim9 method error
|
||||
g:vimsyn_nousercmderror = 1 " :com error
|
||||
g:vimsyn_novimsynerror = 1 " :syn error
|
||||
g:vimsyn_novimsyncaseerror = 1 " :syn case error
|
||||
g:vimsyn_novimsynconcealerror = 1 " :syn conceal error
|
||||
g:vimsyn_novimsynfoldlevelerror = 1 " :syn foldlevel error
|
||||
g:vimsyn_novimsynspellerror = 1 " :syn spell error
|
||||
g:vimsyn_novimsyncerror = 1 " :syn sync error
|
||||
g:vimsyn_novimhictermerror = 1 " :hi error
|
||||
g:vimsyn_vimhikeyerror = 1 " :hi key=arg error
|
||||
<
|
||||
To force highlighting of Neovim specific Vim script elements (even if not
|
||||
using Neovim), set >
|
||||
|
||||
let g:vimsyn_vim_features = ['nvim']
|
||||
<
|
||||
|
||||
WDL *wdl.vim* *wdl-syntax*
|
||||
|
||||
@@ -5432,6 +5465,10 @@ in their own color.
|
||||
See |:highlight-default| for the optional [default]
|
||||
argument.
|
||||
|
||||
:hi[ghlight][!] [default] link {from-group} {to-group}
|
||||
:hi[ghlight][!] [default] link {from-group} NONE
|
||||
See |:hi-link|.
|
||||
|
||||
Normally a highlight group is added once when starting up. This sets the
|
||||
default values for the highlighting. After that, you can use additional
|
||||
highlight commands to change the arguments that you want to set to non-default
|
||||
@@ -5795,6 +5832,9 @@ DiffChange Diff mode: Changed line. |diff.txt|
|
||||
DiffDelete Diff mode: Deleted line. |diff.txt|
|
||||
*hl-DiffText*
|
||||
DiffText Diff mode: Changed text within a changed line. |diff.txt|
|
||||
*hl-DiffTextAdd*
|
||||
DiffTextAdd Diff mode: Added text within a changed line. Linked to
|
||||
|hl-DiffText| by default. |diff.txt|
|
||||
*hl-EndOfBuffer*
|
||||
EndOfBuffer Filler lines (~) after the last line in the buffer.
|
||||
By default, this is highlighted like |hl-NonText|.
|
||||
@@ -5831,8 +5871,8 @@ CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
|
||||
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 by `:echowindow`. If not defined
|
||||
|hl-WarningMsg| is used.
|
||||
MessageWindow Messages popup window used by `:echowindow`. Linked to
|
||||
|hl-WarningMsg| by default.
|
||||
*hl-ModeMsg*
|
||||
ModeMsg 'showmode' message (e.g., "-- INSERT --").
|
||||
*hl-MsgArea*
|
||||
@@ -5872,10 +5912,13 @@ PmenuMatchSel Popup menu: Matched text in selected item. Applied in
|
||||
combination with |hl-PmenuSel|.
|
||||
*hl-ComplMatchIns*
|
||||
ComplMatchIns Matched text of the currently inserted completion.
|
||||
*hl-PopupSelected*
|
||||
PopupSelected Popup window created with |popup_menu()|. Linked to
|
||||
|hl-PmenuSel| by default.
|
||||
*hl-PopupNotification*
|
||||
PopupNotification
|
||||
Popup window created with |popup_notification()|. If not
|
||||
defined |hl-WarningMsg| is used.
|
||||
Popup window created with |popup_notification()|. Linked to
|
||||
|hl-WarningMsg| by default.
|
||||
*hl-Question*
|
||||
Question |hit-enter| prompt and yes/no questions.
|
||||
*hl-QuickFixLine*
|
||||
|
||||
+76
-13
@@ -131,6 +131,7 @@ $quote eval.txt /*$quote*
|
||||
'cdpath' options.txt /*'cdpath'*
|
||||
'cedit' options.txt /*'cedit'*
|
||||
'cf' options.txt /*'cf'*
|
||||
'cfc' options.txt /*'cfc'*
|
||||
'cfu' options.txt /*'cfu'*
|
||||
'ch' options.txt /*'ch'*
|
||||
'character' intro.txt /*'character'*
|
||||
@@ -165,6 +166,7 @@ $quote eval.txt /*$quote*
|
||||
'compatible' options.txt /*'compatible'*
|
||||
'complete' options.txt /*'complete'*
|
||||
'completefunc' options.txt /*'completefunc'*
|
||||
'completefuzzycollect' options.txt /*'completefuzzycollect'*
|
||||
'completeitemalign' options.txt /*'completeitemalign'*
|
||||
'completeopt' options.txt /*'completeopt'*
|
||||
'completepopup' options.txt /*'completepopup'*
|
||||
@@ -234,6 +236,7 @@ $quote eval.txt /*$quote*
|
||||
'ef' options.txt /*'ef'*
|
||||
'efm' options.txt /*'efm'*
|
||||
'ei' options.txt /*'ei'*
|
||||
'eiw' options.txt /*'eiw'*
|
||||
'ek' options.txt /*'ek'*
|
||||
'emo' options.txt /*'emo'*
|
||||
'emoji' options.txt /*'emoji'*
|
||||
@@ -252,6 +255,7 @@ $quote eval.txt /*$quote*
|
||||
'esckeys' options.txt /*'esckeys'*
|
||||
'et' options.txt /*'et'*
|
||||
'eventignore' options.txt /*'eventignore'*
|
||||
'eventignorewin' options.txt /*'eventignorewin'*
|
||||
'ex' options.txt /*'ex'*
|
||||
'expandtab' options.txt /*'expandtab'*
|
||||
'exrc' options.txt /*'exrc'*
|
||||
@@ -857,6 +861,7 @@ $quote eval.txt /*$quote*
|
||||
'pm' options.txt /*'pm'*
|
||||
'pmbcs' options.txt /*'pmbcs'*
|
||||
'pmbfn' options.txt /*'pmbfn'*
|
||||
'pmw' options.txt /*'pmw'*
|
||||
'popt' options.txt /*'popt'*
|
||||
'pp' options.txt /*'pp'*
|
||||
'preserveindent' options.txt /*'preserveindent'*
|
||||
@@ -874,6 +879,7 @@ $quote eval.txt /*$quote*
|
||||
'prompt' options.txt /*'prompt'*
|
||||
'pt' options.txt /*'pt'*
|
||||
'pumheight' options.txt /*'pumheight'*
|
||||
'pummaxwidth' options.txt /*'pummaxwidth'*
|
||||
'pumwidth' options.txt /*'pumwidth'*
|
||||
'pvh' options.txt /*'pvh'*
|
||||
'pvp' options.txt /*'pvp'*
|
||||
@@ -2156,14 +2162,14 @@ $quote eval.txt /*$quote*
|
||||
:LP pi_logipat.txt /*:LP*
|
||||
:LPE pi_logipat.txt /*:LPE*
|
||||
:LPF pi_logipat.txt /*:LPF*
|
||||
:Launch pi_netrw.txt /*:Launch*
|
||||
:Launch eval.txt /*:Launch*
|
||||
:Lexplore pi_netrw.txt /*:Lexplore*
|
||||
:Lfilter quickfix.txt /*:Lfilter*
|
||||
:LogiPat pi_logipat.txt /*:LogiPat*
|
||||
:Man filetype.txt /*:Man*
|
||||
:ManReload filetype.txt /*:ManReload*
|
||||
:MkVimball pi_vimball.txt /*:MkVimball*
|
||||
:N editing.txt /*:N*
|
||||
:NetrwClean pi_netrw.txt /*:NetrwClean*
|
||||
:Nexplore pi_netrw.txt /*:Nexplore*
|
||||
:Next editing.txt /*:Next*
|
||||
:NoMatchParen pi_paren.txt /*:NoMatchParen*
|
||||
@@ -2174,7 +2180,7 @@ $quote eval.txt /*$quote*
|
||||
:Ntree pi_netrw.txt /*:Ntree*
|
||||
:Nw pi_netrw.txt /*:Nw*
|
||||
:Nwrite pi_netrw.txt /*:Nwrite*
|
||||
:Open pi_netrw.txt /*:Open*
|
||||
:Open eval.txt /*:Open*
|
||||
:Over terminal.txt /*:Over*
|
||||
:P various.txt /*:P*
|
||||
:Pexplore pi_netrw.txt /*:Pexplore*
|
||||
@@ -2729,6 +2735,8 @@ $quote eval.txt /*$quote*
|
||||
:insert insert.txt /*:insert*
|
||||
:interface vim9class.txt /*:interface*
|
||||
:intro starting.txt /*:intro*
|
||||
:ip change.txt /*:ip*
|
||||
:iput change.txt /*:iput*
|
||||
:is tagsrch.txt /*:is*
|
||||
:isearch tagsrch.txt /*:isearch*
|
||||
:isp tagsrch.txt /*:isp*
|
||||
@@ -4123,7 +4131,6 @@ CmdwinEnter autocmd.txt /*CmdwinEnter*
|
||||
CmdwinLeave autocmd.txt /*CmdwinLeave*
|
||||
ColorScheme autocmd.txt /*ColorScheme*
|
||||
ColorSchemePre autocmd.txt /*ColorSchemePre*
|
||||
Colors.plist gui_mac.txt /*Colors.plist*
|
||||
Command-line cmdline.txt /*Command-line*
|
||||
Command-line-mode cmdline.txt /*Command-line-mode*
|
||||
CompleteChanged autocmd.txt /*CompleteChanged*
|
||||
@@ -4639,9 +4646,34 @@ E1512 options.txt /*E1512*
|
||||
E1513 message.txt /*E1513*
|
||||
E1514 options.txt /*E1514*
|
||||
E1515 builtin.txt /*E1515*
|
||||
E1516 builtin.txt /*E1516*
|
||||
E1517 eval.txt /*E1517*
|
||||
E1518 eval.txt /*E1518*
|
||||
E1519 eval.txt /*E1519*
|
||||
E152 helphelp.txt /*E152*
|
||||
E1520 eval.txt /*E1520*
|
||||
E1521 eval.txt /*E1521*
|
||||
E1522 eval.txt /*E1522*
|
||||
E1523 eval.txt /*E1523*
|
||||
E1524 eval.txt /*E1524*
|
||||
E1525 builtin.txt /*E1525*
|
||||
E1526 eval.txt /*E1526*
|
||||
E1527 eval.txt /*E1527*
|
||||
E1528 vim9.txt /*E1528*
|
||||
E1529 vim9.txt /*E1529*
|
||||
E153 helphelp.txt /*E153*
|
||||
E1530 vim9.txt /*E1530*
|
||||
E1531 vim9.txt /*E1531*
|
||||
E1532 eval.txt /*E1532*
|
||||
E1533 eval.txt /*E1533*
|
||||
E1534 vim9.txt /*E1534*
|
||||
E1535 eval.txt /*E1535*
|
||||
E1536 eval.txt /*E1536*
|
||||
E1537 eval.txt /*E1537*
|
||||
E1538 eval.txt /*E1538*
|
||||
E1539 vim9.txt /*E1539*
|
||||
E154 helphelp.txt /*E154*
|
||||
E1540 eval.txt /*E1540*
|
||||
E155 sign.txt /*E155*
|
||||
E156 sign.txt /*E156*
|
||||
E157 sign.txt /*E157*
|
||||
@@ -5653,6 +5685,9 @@ MMFullScreenFadeTime gui_mac.txt /*MMFullScreenFadeTime*
|
||||
MMLoginShell gui_mac.txt /*MMLoginShell*
|
||||
MMLoginShellArgument gui_mac.txt /*MMLoginShellArgument*
|
||||
MMLoginShellCommand gui_mac.txt /*MMLoginShellCommand*
|
||||
MMMouseWheelDisableAcceleration gui_mac.txt /*MMMouseWheelDisableAcceleration*
|
||||
MMMouseWheelMinLines gui_mac.txt /*MMMouseWheelMinLines*
|
||||
MMMouseWheelNumLines gui_mac.txt /*MMMouseWheelNumLines*
|
||||
MMNativeFullScreen gui_mac.txt /*MMNativeFullScreen*
|
||||
MMNoFontSubstitution gui_mac.txt /*MMNoFontSubstitution*
|
||||
MMNoTitleBarWindow gui_mac.txt /*MMNoTitleBarWindow*
|
||||
@@ -5853,6 +5888,7 @@ TSQL ft_sql.txt /*TSQL*
|
||||
TTpro-telnet syntax.txt /*TTpro-telnet*
|
||||
Tab intro.txt /*Tab*
|
||||
TabClosed autocmd.txt /*TabClosed*
|
||||
TabClosedPre autocmd.txt /*TabClosedPre*
|
||||
TabEnter autocmd.txt /*TabEnter*
|
||||
TabLeave autocmd.txt /*TabLeave*
|
||||
TabNew autocmd.txt /*TabNew*
|
||||
@@ -5875,6 +5911,8 @@ TextChangedP autocmd.txt /*TextChangedP*
|
||||
TextChangedT autocmd.txt /*TextChangedT*
|
||||
TextYankPost autocmd.txt /*TextYankPost*
|
||||
Transact-SQL ft_sql.txt /*Transact-SQL*
|
||||
Tuple eval.txt /*Tuple*
|
||||
Tuples eval.txt /*Tuples*
|
||||
U undo.txt /*U*
|
||||
UTF-8 mbyte.txt /*UTF-8*
|
||||
UTF8-xterm mbyte.txt /*UTF8-xterm*
|
||||
@@ -6688,6 +6726,7 @@ compiler-ruff quickfix.txt /*compiler-ruff*
|
||||
compiler-select quickfix.txt /*compiler-select*
|
||||
compiler-spotbugs quickfix.txt /*compiler-spotbugs*
|
||||
compiler-tex quickfix.txt /*compiler-tex*
|
||||
compiler-tsc quickfix.txt /*compiler-tsc*
|
||||
compiler-typst quickfix.txt /*compiler-typst*
|
||||
compiler-vaxada ft_ada.txt /*compiler-vaxada*
|
||||
compl-current insert.txt /*compl-current*
|
||||
@@ -6818,6 +6857,7 @@ creating-menus gui.txt /*creating-menus*
|
||||
credits intro.txt /*credits*
|
||||
crontab options.txt /*crontab*
|
||||
cs-find if_cscop.txt /*cs-find*
|
||||
cs.vim syntax.txt /*cs.vim*
|
||||
cs7-problem term.txt /*cs7-problem*
|
||||
cscope if_cscop.txt /*cscope*
|
||||
cscope-commands if_cscop.txt /*cscope-commands*
|
||||
@@ -6981,6 +7021,8 @@ disable-menus gui.txt /*disable-menus*
|
||||
discard editing.txt /*discard*
|
||||
dist#vim eval.txt /*dist#vim*
|
||||
dist#vim9 eval.txt /*dist#vim9*
|
||||
dist#vim9#Launch() eval.txt /*dist#vim9#Launch()*
|
||||
dist#vim9#Open() eval.txt /*dist#vim9#Open()*
|
||||
distribute-script usr_51.txt /*distribute-script*
|
||||
distributed-plugins usr_05.txt /*distributed-plugins*
|
||||
distribution intro.txt /*distribution*
|
||||
@@ -7414,6 +7456,7 @@ ft-context-intro ft_context.txt /*ft-context-intro*
|
||||
ft-context-mappings ft_context.txt /*ft-context-mappings*
|
||||
ft-context-settings ft_context.txt /*ft-context-settings*
|
||||
ft-cpp-syntax syntax.txt /*ft-cpp-syntax*
|
||||
ft-cs-syntax syntax.txt /*ft-cs-syntax*
|
||||
ft-csh-syntax syntax.txt /*ft-csh-syntax*
|
||||
ft-css-omni insert.txt /*ft-css-omni*
|
||||
ft-csv-syntax syntax.txt /*ft-csv-syntax*
|
||||
@@ -7443,6 +7486,7 @@ ft-freebasic-syntax syntax.txt /*ft-freebasic-syntax*
|
||||
ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax*
|
||||
ft-gdscript-plugin filetype.txt /*ft-gdscript-plugin*
|
||||
ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin*
|
||||
ft-gitrebase-plugin filetype.txt /*ft-gitrebase-plugin*
|
||||
ft-go-plugin filetype.txt /*ft-go-plugin*
|
||||
ft-gprof-plugin filetype.txt /*ft-gprof-plugin*
|
||||
ft-groff-syntax syntax.txt /*ft-groff-syntax*
|
||||
@@ -7517,6 +7561,7 @@ ft-php-syntax syntax.txt /*ft-php-syntax*
|
||||
ft-php3-syntax syntax.txt /*ft-php3-syntax*
|
||||
ft-phtml-syntax syntax.txt /*ft-phtml-syntax*
|
||||
ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax*
|
||||
ft-plsql-plugin filetype.txt /*ft-plsql-plugin*
|
||||
ft-posix-syntax syntax.txt /*ft-posix-syntax*
|
||||
ft-postscr-syntax syntax.txt /*ft-postscr-syntax*
|
||||
ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax*
|
||||
@@ -7630,6 +7675,7 @@ g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu*
|
||||
g:Netrw_UserMaps pi_netrw.txt /*g:Netrw_UserMaps*
|
||||
g:Netrw_corehandler pi_netrw.txt /*g:Netrw_corehandler*
|
||||
g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref*
|
||||
g:Openprg eval.txt /*g:Openprg*
|
||||
g:actual_curbuf options.txt /*g:actual_curbuf*
|
||||
g:actual_curwin options.txt /*g:actual_curwin*
|
||||
g:ada#Comment ft_ada.txt /*g:ada#Comment*
|
||||
@@ -7677,6 +7723,7 @@ g:filetype_csh syntax.txt /*g:filetype_csh*
|
||||
g:filetype_haredoc ft_hare.txt /*g:filetype_haredoc*
|
||||
g:filetype_md syntax.txt /*g:filetype_md*
|
||||
g:filetype_r syntax.txt /*g:filetype_r*
|
||||
g:ft_man_implementation filetype.txt /*g:ft_man_implementation*
|
||||
g:ftplugin_rust_source_path ft_rust.txt /*g:ftplugin_rust_source_path*
|
||||
g:gnat ft_ada.txt /*g:gnat*
|
||||
g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format*
|
||||
@@ -7724,6 +7771,9 @@ g:html_use_input_for_pc syntax.txt /*g:html_use_input_for_pc*
|
||||
g:html_use_xhtml syntax.txt /*g:html_use_xhtml*
|
||||
g:html_whole_filler syntax.txt /*g:html_whole_filler*
|
||||
g:lf_shell_syntax syntax.txt /*g:lf_shell_syntax*
|
||||
g:lua_folding filetype.txt /*g:lua_folding*
|
||||
g:lua_subversion filetype.txt /*g:lua_subversion*
|
||||
g:lua_version filetype.txt /*g:lua_version*
|
||||
g:macvim_default_touchbar_characterpicker gui_mac.txt /*g:macvim_default_touchbar_characterpicker*
|
||||
g:macvim_default_touchbar_fullscreen gui_mac.txt /*g:macvim_default_touchbar_fullscreen*
|
||||
g:markdown_fenced_languages syntax.txt /*g:markdown_fenced_languages*
|
||||
@@ -7735,8 +7785,6 @@ g:netrw_altv pi_netrw.txt /*g:netrw_altv*
|
||||
g:netrw_banner pi_netrw.txt /*g:netrw_banner*
|
||||
g:netrw_bannerbackslash pi_netrw.txt /*g:netrw_bannerbackslash*
|
||||
g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split*
|
||||
g:netrw_browsex_support_remote pi_netrw.txt /*g:netrw_browsex_support_remote*
|
||||
g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer*
|
||||
g:netrw_bufsettings pi_netrw.txt /*g:netrw_bufsettings*
|
||||
g:netrw_chgperm pi_netrw.txt /*g:netrw_chgperm*
|
||||
g:netrw_chgwin pi_netrw.txt /*g:netrw_chgwin*
|
||||
@@ -7765,7 +7813,6 @@ g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd*
|
||||
g:netrw_ftpextracmd pi_netrw.txt /*g:netrw_ftpextracmd*
|
||||
g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode*
|
||||
g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape*
|
||||
g:netrw_gx pi_netrw.txt /*g:netrw_gx*
|
||||
g:netrw_hide pi_netrw.txt /*g:netrw_hide*
|
||||
g:netrw_home pi_netrw.txt /*g:netrw_home*
|
||||
g:netrw_http_cmd pi_netrw.txt /*g:netrw_http_cmd*
|
||||
@@ -7791,7 +7838,6 @@ g:netrw_menu pi_netrw.txt /*g:netrw_menu*
|
||||
g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd*
|
||||
g:netrw_mousemaps pi_netrw.txt /*g:netrw_mousemaps*
|
||||
g:netrw_nobeval pi_netrw.txt /*g:netrw_nobeval*
|
||||
g:netrw_nogx pi_netrw.txt /*g:netrw_nogx*
|
||||
g:netrw_preview pi_netrw.txt /*g:netrw_preview*
|
||||
g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd*
|
||||
g:netrw_remote_mkdir pi_netrw.txt /*g:netrw_remote_mkdir*
|
||||
@@ -7817,7 +7863,6 @@ g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax*
|
||||
g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject*
|
||||
g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd*
|
||||
g:netrw_sshport pi_netrw.txt /*g:netrw_sshport*
|
||||
g:netrw_suppress_gx_mesg pi_netrw.txt /*g:netrw_suppress_gx_mesg*
|
||||
g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt*
|
||||
g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape*
|
||||
g:netrw_uid pi_netrw.txt /*g:netrw_uid*
|
||||
@@ -7962,6 +8007,7 @@ get()-blob builtin.txt /*get()-blob*
|
||||
get()-dict builtin.txt /*get()-dict*
|
||||
get()-func builtin.txt /*get()-func*
|
||||
get()-list builtin.txt /*get()-list*
|
||||
get()-tuple builtin.txt /*get()-tuple*
|
||||
get-ms-debuggers debug.txt /*get-ms-debuggers*
|
||||
getbufinfo() builtin.txt /*getbufinfo()*
|
||||
getbufline() builtin.txt /*getbufline()*
|
||||
@@ -8162,6 +8208,7 @@ gvimrc gui.txt /*gvimrc*
|
||||
gw change.txt /*gw*
|
||||
gwgw change.txt /*gwgw*
|
||||
gww change.txt /*gww*
|
||||
gx eval.txt /*gx*
|
||||
gzip pi_gzip.txt /*gzip*
|
||||
gzip-autocmd pi_gzip.txt /*gzip-autocmd*
|
||||
gzip-example autocmd.txt /*gzip-example*
|
||||
@@ -8270,6 +8317,7 @@ hl-DiffAdd syntax.txt /*hl-DiffAdd*
|
||||
hl-DiffChange syntax.txt /*hl-DiffChange*
|
||||
hl-DiffDelete syntax.txt /*hl-DiffDelete*
|
||||
hl-DiffText syntax.txt /*hl-DiffText*
|
||||
hl-DiffTextAdd syntax.txt /*hl-DiffTextAdd*
|
||||
hl-Directory syntax.txt /*hl-Directory*
|
||||
hl-EndOfBuffer syntax.txt /*hl-EndOfBuffer*
|
||||
hl-ErrorMsg syntax.txt /*hl-ErrorMsg*
|
||||
@@ -8299,6 +8347,7 @@ hl-PmenuSbar syntax.txt /*hl-PmenuSbar*
|
||||
hl-PmenuSel syntax.txt /*hl-PmenuSel*
|
||||
hl-PmenuThumb syntax.txt /*hl-PmenuThumb*
|
||||
hl-PopupNotification syntax.txt /*hl-PopupNotification*
|
||||
hl-PopupSelected syntax.txt /*hl-PopupSelected*
|
||||
hl-Question syntax.txt /*hl-Question*
|
||||
hl-QuickFixLine syntax.txt /*hl-QuickFixLine*
|
||||
hl-Scrollbar syntax.txt /*hl-Scrollbar*
|
||||
@@ -8338,6 +8387,7 @@ hlexists() builtin.txt /*hlexists()*
|
||||
hlget() builtin.txt /*hlget()*
|
||||
hlsearch-variable eval.txt /*hlsearch-variable*
|
||||
hlset() builtin.txt /*hlset()*
|
||||
hlyank-install usr_05.txt /*hlyank-install*
|
||||
holy-grail index.txt /*holy-grail*
|
||||
home intro.txt /*home*
|
||||
home-replace editing.txt /*home-replace*
|
||||
@@ -8742,6 +8792,7 @@ list-modification eval.txt /*list-modification*
|
||||
list-repeat windows.txt /*list-repeat*
|
||||
list2blob() builtin.txt /*list2blob()*
|
||||
list2str() builtin.txt /*list2str()*
|
||||
list2tuple() builtin.txt /*list2tuple()*
|
||||
listener_add() builtin.txt /*listener_add()*
|
||||
listener_flush() builtin.txt /*listener_flush()*
|
||||
listener_remove() builtin.txt /*listener_remove()*
|
||||
@@ -9159,7 +9210,6 @@ netrw-call pi_netrw.txt /*netrw-call*
|
||||
netrw-cb pi_netrw.txt /*netrw-cb*
|
||||
netrw-cd pi_netrw.txt /*netrw-cd*
|
||||
netrw-chgup pi_netrw.txt /*netrw-chgup*
|
||||
netrw-clean pi_netrw.txt /*netrw-clean*
|
||||
netrw-contents pi_netrw.txt /*netrw-contents*
|
||||
netrw-copyright pi_netrw.txt /*netrw-copyright*
|
||||
netrw-cr pi_netrw.txt /*netrw-cr*
|
||||
@@ -9198,8 +9248,6 @@ netrw-gitignore pi_netrw.txt /*netrw-gitignore*
|
||||
netrw-gn pi_netrw.txt /*netrw-gn*
|
||||
netrw-gp pi_netrw.txt /*netrw-gp*
|
||||
netrw-grep pi_netrw.txt /*netrw-grep*
|
||||
netrw-gx pi_netrw.txt /*netrw-gx*
|
||||
netrw-handler pi_netrw.txt /*netrw-handler*
|
||||
netrw-help pi_netrw.txt /*netrw-help*
|
||||
netrw-hexplore pi_netrw.txt /*netrw-hexplore*
|
||||
netrw-hide pi_netrw.txt /*netrw-hide*
|
||||
@@ -9328,7 +9376,6 @@ netrw-vexplore pi_netrw.txt /*netrw-vexplore*
|
||||
netrw-windows-netrc pi_netrw.txt /*netrw-windows-netrc*
|
||||
netrw-windows-s pi_netrw.txt /*netrw-windows-s*
|
||||
netrw-write pi_netrw.txt /*netrw-write*
|
||||
netrw-x pi_netrw.txt /*netrw-x*
|
||||
netrw-xfer pi_netrw.txt /*netrw-xfer*
|
||||
netrw.txt pi_netrw.txt /*netrw.txt*
|
||||
netrw.vim pi_netrw.txt /*netrw.vim*
|
||||
@@ -9434,6 +9481,7 @@ new-vimscript-8.2 version8.txt /*new-vimscript-8.2*
|
||||
new-virtedit version6.txt /*new-virtedit*
|
||||
news intro.txt /*news*
|
||||
nextnonblank() builtin.txt /*nextnonblank()*
|
||||
ngettext() builtin.txt /*ngettext()*
|
||||
no-eval-feature eval.txt /*no-eval-feature*
|
||||
no-type-checking eval.txt /*no-type-checking*
|
||||
no_buffers_menu gui.txt /*no_buffers_menu*
|
||||
@@ -9566,6 +9614,7 @@ package-doc repeat.txt /*package-doc*
|
||||
package-documentation repeat.txt /*package-documentation*
|
||||
package-editorconfig usr_05.txt /*package-editorconfig*
|
||||
package-helptoc helphelp.txt /*package-helptoc*
|
||||
package-hlyank usr_05.txt /*package-hlyank*
|
||||
package-justify usr_25.txt /*package-justify*
|
||||
package-matchit usr_05.txt /*package-matchit*
|
||||
package-nohlsearch usr_05.txt /*package-nohlsearch*
|
||||
@@ -9647,6 +9696,7 @@ phtml.vim syntax.txt /*phtml.vim*
|
||||
pi_getscript.txt pi_getscript.txt /*pi_getscript.txt*
|
||||
pi_gzip.txt pi_gzip.txt /*pi_gzip.txt*
|
||||
pi_logipat.txt pi_logipat.txt /*pi_logipat.txt*
|
||||
pi_netrw.txt pi_netrw.txt /*pi_netrw.txt*
|
||||
pi_paren.txt pi_paren.txt /*pi_paren.txt*
|
||||
pi_spec.txt pi_spec.txt /*pi_spec.txt*
|
||||
pi_tar.txt pi_tar.txt /*pi_tar.txt*
|
||||
@@ -9808,6 +9858,7 @@ python-2-and-3 if_pyth.txt /*python-2-and-3*
|
||||
python-Dictionary if_pyth.txt /*python-Dictionary*
|
||||
python-Function if_pyth.txt /*python-Function*
|
||||
python-List if_pyth.txt /*python-List*
|
||||
python-Tuple if_pyth.txt /*python-Tuple*
|
||||
python-VIM_SPECIAL_PATH if_pyth.txt /*python-VIM_SPECIAL_PATH*
|
||||
python-_get_paths if_pyth.txt /*python-_get_paths*
|
||||
python-bindeval if_pyth.txt /*python-bindeval*
|
||||
@@ -10479,6 +10530,7 @@ subscript eval.txt /*subscript*
|
||||
substitute() builtin.txt /*substitute()*
|
||||
substitute-CR version6.txt /*substitute-CR*
|
||||
substring eval.txt /*substring*
|
||||
subtuple eval.txt /*subtuple*
|
||||
suffixes cmdline.txt /*suffixes*
|
||||
suspend starting.txt /*suspend*
|
||||
swap-exists-choices usr_11.txt /*swap-exists-choices*
|
||||
@@ -10728,6 +10780,7 @@ t_ti term.txt /*t_ti*
|
||||
t_tp version4.txt /*t_tp*
|
||||
t_ts term.txt /*t_ts*
|
||||
t_ts_old version4.txt /*t_ts_old*
|
||||
t_tuple-variable eval.txt /*t_tuple-variable*
|
||||
t_typealias-variable eval.txt /*t_typealias-variable*
|
||||
t_u7 term.txt /*t_u7*
|
||||
t_ue term.txt /*t_ue*
|
||||
@@ -10964,6 +11017,7 @@ test_null_job() testing.txt /*test_null_job()*
|
||||
test_null_list() testing.txt /*test_null_list()*
|
||||
test_null_partial() testing.txt /*test_null_partial()*
|
||||
test_null_string() testing.txt /*test_null_string()*
|
||||
test_null_tuple() testing.txt /*test_null_tuple()*
|
||||
test_option_not_set() testing.txt /*test_option_not_set()*
|
||||
test_override() testing.txt /*test_override()*
|
||||
test_refcount() testing.txt /*test_refcount()*
|
||||
@@ -11049,6 +11103,13 @@ try-echoerr eval.txt /*try-echoerr*
|
||||
try-finally eval.txt /*try-finally*
|
||||
try-nested eval.txt /*try-nested*
|
||||
try-nesting eval.txt /*try-nesting*
|
||||
tuple eval.txt /*tuple*
|
||||
tuple-concatenation eval.txt /*tuple-concatenation*
|
||||
tuple-functions usr_41.txt /*tuple-functions*
|
||||
tuple-identity eval.txt /*tuple-identity*
|
||||
tuple-index eval.txt /*tuple-index*
|
||||
tuple-type vim9.txt /*tuple-type*
|
||||
tuple2list() builtin.txt /*tuple2list()*
|
||||
tutor usr_01.txt /*tutor*
|
||||
two-engines pattern.txt /*two-engines*
|
||||
type() builtin.txt /*type()*
|
||||
@@ -11246,6 +11307,7 @@ v:t_none eval.txt /*v:t_none*
|
||||
v:t_number eval.txt /*v:t_number*
|
||||
v:t_object eval.txt /*v:t_object*
|
||||
v:t_string eval.txt /*v:t_string*
|
||||
v:t_tuple eval.txt /*v:t_tuple*
|
||||
v:t_typealias eval.txt /*v:t_typealias*
|
||||
v:termblinkresp eval.txt /*v:termblinkresp*
|
||||
v:termrbgresp eval.txt /*v:termrbgresp*
|
||||
@@ -11385,6 +11447,7 @@ variable-categories vim9.txt /*variable-categories*
|
||||
variable-scope eval.txt /*variable-scope*
|
||||
variable-types vim9.txt /*variable-types*
|
||||
variables eval.txt /*variables*
|
||||
variadic-tuple vim9.txt /*variadic-tuple*
|
||||
various various.txt /*various*
|
||||
various-cmds various.txt /*various-cmds*
|
||||
various-functions usr_41.txt /*various-functions*
|
||||
|
||||
@@ -1166,7 +1166,7 @@ Mouse clicks can be mapped. The codes for mouse clicks are:
|
||||
|
||||
The X1 and X2 buttons refer to the extra buttons found on some mice. The
|
||||
'Microsoft Explorer' mouse has these buttons available to the right thumb.
|
||||
Currently X1 and X2 only work on Win32 and X11 environments.
|
||||
Currently X1 and X2 only work on MacVim, Win32, and X11 environments.
|
||||
|
||||
Examples: >
|
||||
:noremap <MiddleMouse> <LeftMouse><MiddleMouse>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 9.1. Last change: 2025 Jan 11
|
||||
*terminal.txt* For Vim version 9.1. Last change: 2025 Feb 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -999,7 +999,8 @@ term_wait({buf} [, {time}]) *term_wait()*
|
||||
Wait for pending updates of {buf} to be handled.
|
||||
{buf} is used as with |term_getsize()|.
|
||||
{time} is how long to wait for updates to arrive in msec. If
|
||||
not set then 10 msec will be used.
|
||||
not set then 10 msec will be used. Queued messages will also
|
||||
be processed similar to |:sleep|.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_wait()
|
||||
@@ -1091,11 +1092,11 @@ Currently supported commands:
|
||||
Example in JSON: >
|
||||
["drop", "path/file.txt", {"ff": "dos"}]
|
||||
|
||||
A trick to have Vim send this escape sequence: >
|
||||
exe "set t_ts=\<Esc>]51; t_fs=\x07"
|
||||
let &titlestring = '["call","Tapi_TryThis",["hello",123]]'
|
||||
redraw
|
||||
set t_ts& t_fs&
|
||||
You can use |echoraw()| to make Vim send this escape sequence: >
|
||||
call echoraw("\<ESC>]51;[\"call\", \"Tapi_TryThis\", [\"hello\", 123]]\x07")
|
||||
call echoraw("\<Esc>]51;[\"drop\", \"README.md\"]\x07")
|
||||
Note: JSON requires double quotes around string values, hence those have to be
|
||||
escaped.
|
||||
|
||||
Rationale: Why not allow for any command or expression? Because that might
|
||||
create a security problem.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*testing.txt* For Vim version 9.1. Last change: 2024 Jul 18
|
||||
*testing.txt* For Vim version 9.1. Last change: 2025 Mar 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -68,7 +68,7 @@ test_feedinput({string}) *test_feedinput()*
|
||||
|
||||
|
||||
test_garbagecollect_now() *test_garbagecollect_now()*
|
||||
Like garbagecollect(), but executed right away. This must
|
||||
Like |garbagecollect()|, but executed right away. This must
|
||||
only be called directly to avoid any structure to exist
|
||||
internally, and |v:testing| must have been set before calling
|
||||
any function. *E1142*
|
||||
@@ -364,6 +364,11 @@ test_null_string() *test_null_string()*
|
||||
|
||||
Return type: |String|
|
||||
|
||||
test_null_tuple() *test_null_tuple()*
|
||||
Return a |Tuple| that is null. Only useful for testing.
|
||||
|
||||
Return type: |Tuple|
|
||||
|
||||
test_option_not_set({name}) *test_option_not_set()*
|
||||
Reset the flag that indicates option {name} was set. Thus it
|
||||
looks like it still has the default value. Use like this: >
|
||||
|
||||
+16
-24
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 9.1. Last change: 2025 Jan 16
|
||||
*todo.txt* For Vim version 9.1. Last change: 2025 Mar 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -357,8 +357,6 @@ https://github.com/vim/vim/pull/5566
|
||||
|
||||
PR #11579 to add visualtext(), return Visually selected text.
|
||||
|
||||
PR #12032: Support Python 3 stable ABI.
|
||||
|
||||
PR #11860: Add more info to 'colorcolumn': display a character and highlight
|
||||
for each separate entry. Disadvantage: option value gets very complicated
|
||||
with multiple entries, e.g. every 8 columns.
|
||||
@@ -467,9 +465,6 @@ IDEA: when drawing the text, store the text byte index in ScreenLinesIdx[].
|
||||
When converting screen column to text position use this.
|
||||
The line number can be obtained from win->w_lines[].
|
||||
|
||||
Version of getchar() that does not move the cursor - #10603 Use a separate
|
||||
argument for the new flag.
|
||||
|
||||
test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
|
||||
|
||||
Can we add highlighting to ":echowindow"?
|
||||
@@ -709,8 +704,6 @@ find them. (Max Kukartsev, #6218)
|
||||
|
||||
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
|
||||
|
||||
Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
|
||||
|
||||
"--cleanFOO" does not result in an error. (#5537)
|
||||
|
||||
Output from assert_equalfile() doesn't give a hint about what's different.
|
||||
@@ -1493,8 +1486,6 @@ github with a URL like this:
|
||||
https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
|
||||
Diff for version.c contains more context, can't skip a patch.
|
||||
|
||||
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
|
||||
|
||||
Comparing nested structures with "==" uses a different comparator than when
|
||||
comparing individual items.
|
||||
|
||||
@@ -1517,9 +1508,6 @@ C highlighting: modern C allows: /* comment */ #ifdef
|
||||
and also line continuation after #include.
|
||||
I can't recommend it though.
|
||||
|
||||
Build with Python on Mac does not always use the right library.
|
||||
(Kazunobu Kuriyama, 2015 Mar 28)
|
||||
|
||||
To support Thai (and other languages) word boundaries, include the ICU
|
||||
library: http://userguide.icu-project.org/boundaryanalysis
|
||||
|
||||
@@ -1796,13 +1784,6 @@ Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17)
|
||||
b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan
|
||||
7)
|
||||
|
||||
Win32: The Python interface only works with one version of Python, selected at
|
||||
compile time. Can this be made to work with version 2.1 and 2.2 dynamically?
|
||||
|
||||
Python: Be able to define a Python function that can be called directly from
|
||||
Vim script. Requires converting the arguments and return value, like with
|
||||
vim.bindeval().
|
||||
|
||||
Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
|
||||
2012 Aug 4)
|
||||
|
||||
@@ -2915,6 +2896,20 @@ Quickfix/Location List:
|
||||
7 Add a command that goes back to the position from before jumping to the
|
||||
first quickfix location.
|
||||
|
||||
|
||||
Python Interface:
|
||||
- Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
|
||||
- Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
|
||||
- Build with Python on Mac does not always use the right library.
|
||||
(Kazunobu Kuriyama, 2015 Mar 28)
|
||||
- Win32: The Python interface only works with one version of Python,
|
||||
selected at compile time. Can this be made to work with version 2.1 and
|
||||
2.2 dynamically?
|
||||
- Be able to define a Python function that can be called directly from Vim
|
||||
script. Requires converting the arguments and return value, like with
|
||||
vim.bindeval().
|
||||
|
||||
|
||||
Vi incompatibility:
|
||||
- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7)
|
||||
Version 1.5 is in ~/src/posix/1.5. (Lynne Canal)
|
||||
@@ -4739,8 +4734,6 @@ Omni completion:
|
||||
Insert mode completion/expansion:
|
||||
- Is it possible to keep the complete menu open when calling complete()?
|
||||
(Prabir Shrestha, 2017 May 19, #1713)
|
||||
- When 'completeopt' has "noselect" does not insert a newline.
|
||||
(Lifepillar, 2017 Apr 23, #1653)
|
||||
- When complete() first argument is before where insert started and
|
||||
'backspace' is Vi compatible, the completion fails.
|
||||
(Hirohito Higashi, 2015 Feb 19)
|
||||
@@ -6281,5 +6274,4 @@ Far future and "big" extensions:
|
||||
are reflected in each Vim immediately. Could work with local files but
|
||||
also over the internet. See http://www.codingmonkeys.de/subethaedit/.
|
||||
|
||||
vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl:
|
||||
vim: set fo+=n :
|
||||
vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl:fo+=n:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_02.txt* For Vim version 9.1. Last change: 2025 Jan 16
|
||||
*usr_02.txt* For Vim version 9.1. Last change: 2025 Feb 01
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -698,8 +698,8 @@ Summary: *help-summary* >
|
||||
package-<name>. So >
|
||||
:help package-comment
|
||||
<
|
||||
will bring you to the help section for the included comment plugin and how to
|
||||
enable it.
|
||||
will bring you to the help section for the included comment plugin and how
|
||||
to enable it.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
+28
-3
@@ -1,4 +1,4 @@
|
||||
*usr_05.txt* For Vim version 9.1. Last change: 2025 Jan 11
|
||||
*usr_05.txt* For Vim version 9.1. Last change: 2025 Mar 22
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -437,7 +437,7 @@ After restarting your Vim, the plugin is active and you can read about it at: >
|
||||
:h editorconfig.txt
|
||||
|
||||
|
||||
Adding comment package *comment-install* *package-comment*
|
||||
Adding the comment package *comment-install* *package-comment*
|
||||
|
||||
Load the plugin with this command: >
|
||||
packadd comment
|
||||
@@ -450,7 +450,7 @@ the package loaded. Once the package is loaded, read about it at: >
|
||||
:h comment.txt
|
||||
|
||||
|
||||
Adding nohlsearch package *nohlsearch-install* *package-nohlsearch*
|
||||
Adding the nohlsearch package *nohlsearch-install* *package-nohlsearch*
|
||||
|
||||
Load the plugin with this command: >
|
||||
packadd nohlsearch
|
||||
@@ -464,6 +464,31 @@ To disable the effect of the plugin after it has been loaded: >
|
||||
au! nohlsearch
|
||||
<
|
||||
|
||||
Adding the highlight-yank package *hlyank-install* *package-hlyank*
|
||||
|
||||
Load the plugin with this command: >
|
||||
packadd hlyank
|
||||
<
|
||||
This package briefly highlights the affected region of the last |yank|
|
||||
command. See |52.6| for a simplified implementation using the
|
||||
|getregionpos()| function.
|
||||
|
||||
The plugin understands the following configuration variables (the settings
|
||||
show the default values).
|
||||
|
||||
To specify a different highlighting group, use: >
|
||||
:let g:hlyank_hlgroup = 'IncSearch'
|
||||
<
|
||||
To use a different highlighting duration, use: >
|
||||
:let g:hlyank_duration = 300
|
||||
The unit is milliseconds, and the upper limit is 3000 ms. If you set a value
|
||||
higher than this, the highlighting duration will be 3000 ms.
|
||||
|
||||
To highlight in visual mode, use: >
|
||||
:let g:hlyank_invisual = v:true
|
||||
|
||||
To disable the effect of the plugin after it has been loaded: >
|
||||
au! hlyank
|
||||
|
||||
More information about packages can be found here: |packages|.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_25.txt* For Vim version 9.1. Last change: 2025 Jan 11
|
||||
*usr_25.txt* For Vim version 9.1. Last change: 2025 Feb 01
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -190,7 +190,7 @@ This results in the following:
|
||||
story. ~
|
||||
|
||||
|
||||
JUSTIFYING TEXT *justify* *:Justify* *Justify()* *package-justify*
|
||||
JUSTIFYING TEXT *justify* *:Justify* *Justify()* *package-justify*
|
||||
|
||||
Vim has no built-in way of justifying text. However, there is a neat macro
|
||||
package that does the job. To use this package, execute the following
|
||||
|
||||
+46
-3
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 9.1. Last change: 2025 Jan 16
|
||||
*usr_41.txt* For Vim version 9.1. Last change: 2025 Mar 23
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -801,6 +801,7 @@ String manipulation: *string-functions*
|
||||
trim() trim characters from a string
|
||||
bindtextdomain() set message lookup translation base path
|
||||
gettext() lookup message translation
|
||||
ngettext() lookup single/plural message translation
|
||||
str2blob() convert a list of strings into a blob
|
||||
blob2str() convert a blob into a list of strings
|
||||
|
||||
@@ -838,6 +839,30 @@ List manipulation: *list-functions*
|
||||
repeat() repeat a List multiple times
|
||||
flatten() flatten a List
|
||||
flattennew() flatten a copy of a List
|
||||
items() get List of List index-value pairs
|
||||
|
||||
Tuple manipulation: *tuple-functions*
|
||||
copy() make a shallow copy of a Tuple
|
||||
count() count number of times a value appears in a
|
||||
Tuple
|
||||
deepcopy() make a full copy of a Tuple
|
||||
empty() check if Tuple is empty
|
||||
foreach() apply function to Tuple items
|
||||
get() get an item without error for wrong index
|
||||
index() index of a value in a Tuple
|
||||
indexof() index in a Tuple where an expression is true
|
||||
items() get List of Tuple index-value pairs
|
||||
join() join Tuple items into a String
|
||||
len() number of items in a Tuple
|
||||
list2tuple() convert a list of items into a Tuple
|
||||
max() maximum value in a Tuple
|
||||
min() minimum value in a Tuple
|
||||
reduce() reduce a Tuple to a value
|
||||
repeat() repeat a Tuple multiple times
|
||||
reverse() reverse the order of items in a Tuple
|
||||
slice() take a slice of a Tuple
|
||||
string() string representation of a Tuple
|
||||
tuple2list() convert a Tuple of items into a list
|
||||
|
||||
Dictionary manipulation: *dict-functions*
|
||||
get() get an entry without an error for a wrong key
|
||||
@@ -1233,6 +1258,7 @@ Testing: *test-functions*
|
||||
test_null_list() return a null List
|
||||
test_null_partial() return a null Partial function
|
||||
test_null_string() return a null String
|
||||
test_null_tuple() return a null Tuple
|
||||
test_settime() set the time Vim uses internally
|
||||
test_setmouse() set the mouse position
|
||||
test_feedinput() add key sequence to input buffer
|
||||
@@ -1651,8 +1677,8 @@ More information about defining your own functions here: |user-functions|.
|
||||
==============================================================================
|
||||
*41.8* Lists and Dictionaries
|
||||
|
||||
So far we have used the basic types String and Number. Vim also supports two
|
||||
composite types: List and Dictionary.
|
||||
So far we have used the basic types String and Number. Vim also supports
|
||||
three composite types: List, Tuple and Dictionary.
|
||||
|
||||
A List is an ordered sequence of items. The items can be any kind of value,
|
||||
thus you can make a List of numbers, a List of Lists and even a List of mixed
|
||||
@@ -1753,6 +1779,23 @@ This looks into lines 1 to 50 (inclusive) and echoes any date found in there.
|
||||
|
||||
For further reading see |Lists|.
|
||||
|
||||
TUPLE
|
||||
|
||||
A Tuple is an immutable ordered sequence of items. An item can be of any
|
||||
type. Items can be accessed by their index number. To create a Tuple with
|
||||
three strings: >
|
||||
|
||||
var atuple = ('one', 'two', 'three')
|
||||
|
||||
The Tuple items are enclosed in parenthesis and separated by commas. To
|
||||
create an empty Tuple: >
|
||||
|
||||
var atuple = ()
|
||||
|
||||
The |:for| loop can be used to iterate over the items in a Tuple similar to a
|
||||
List.
|
||||
|
||||
For further reading see |Tuples|.
|
||||
|
||||
DICTIONARIES
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_52.txt* For Vim version 9.1. Last change: 2024 Oct 07
|
||||
*usr_52.txt* For Vim version 9.1. Last change: 2025 Mar 17
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -346,11 +346,8 @@ Have a look at the package located at $VIMRUNTIME/pack/dist/opt/comment/
|
||||
|
||||
HIGHLIGHT YANK PLUGIN
|
||||
|
||||
Here is an example for highlighting the yanked region. It makes use of the
|
||||
|getregionpos()| function, available since Vim 9.1.0446.
|
||||
|
||||
Copy the following example into a new file and place it into your plugin directory
|
||||
and it will be active next time you start Vim. |add-plugin|: >
|
||||
Vim comes with the highlight-yank plugin, written in Vim9 script
|
||||
|hlyank-install|, here is a simplified implementation: >vim
|
||||
|
||||
vim9script
|
||||
|
||||
@@ -362,11 +359,10 @@ and it will be active next time you start Vim. |add-plugin|: >
|
||||
endif
|
||||
var [beg, end] = [getpos("'["), getpos("']")]
|
||||
var type = v:event.regtype ?? 'v'
|
||||
var pos = getregionpos(beg, end, {type: type})
|
||||
var end_offset = (type == 'V' || v:event.inclusive) ? 1 : 0
|
||||
var pos = getregionpos(beg, end, {type: type, exclusive: false})
|
||||
var m = matchaddpos(hlgroup, pos->mapnew((_, v) => {
|
||||
var col_beg = v[0][2] + v[0][3]
|
||||
var col_end = v[1][2] + v[1][3] + end_offset
|
||||
var col_end = v[1][2] + v[1][3] + 1
|
||||
return [v[0][1], col_beg, col_end - col_beg]
|
||||
}))
|
||||
var winid = win_getid()
|
||||
@@ -376,6 +372,9 @@ and it will be active next time you start Vim. |add-plugin|: >
|
||||
|
||||
autocmd TextYankPost * HighlightedYank()
|
||||
<
|
||||
For the complete example, have a look into the package located at
|
||||
`$VIMRUNTIME/pack/dist/opt/hlyank/`
|
||||
|
||||
==============================================================================
|
||||
|
||||
Next chapter: |usr_90.txt| Installing Vim
|
||||
|
||||
+20
-32
@@ -1,4 +1,4 @@
|
||||
*usr_90.txt* For Vim version 9.1. Last change: 2024 Oct 05
|
||||
*usr_90.txt* For Vim version 9.1. Last change: 2025 Mar 03
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -28,20 +28,18 @@ is installed in differs.
|
||||
used. But this may be different for your system. Try finding out where other
|
||||
packages are installed.
|
||||
When installing for a single user, you can use your home directory as the
|
||||
base. The files will be placed in subdirectories like "bin" and "shared/vim".
|
||||
base. The files will be placed in subdirectories like "bin" and "share/vim".
|
||||
|
||||
|
||||
FROM A PACKAGE
|
||||
|
||||
You can get precompiled binaries for many different UNIX systems. There is a
|
||||
long list with links on this page:
|
||||
Depending on the Unix/Linux system used, there may exist pre-compiled binary
|
||||
packages. You need to search for this. We used to keep a list for different
|
||||
UNIX systems, but that list was outdated so the list was removed.
|
||||
|
||||
http://www.vim.org/binaries.html
|
||||
|
||||
Volunteers maintain the binaries, so they are often out of date. It is a
|
||||
good idea to compile your own UNIX version from the source. Also, creating
|
||||
the editor from the source allows you to control which features are compiled.
|
||||
This does require a compiler though.
|
||||
It is a good idea to compile your own UNIX version from the source. Also,
|
||||
creating the editor from the source allows you to control which features are
|
||||
compiled. This does require a compiler though.
|
||||
|
||||
If you have a Linux distribution, the "vi" program is probably a minimal
|
||||
version of Vim. It doesn't do syntax highlighting, for example. Try finding
|
||||
@@ -52,23 +50,18 @@ FROM SOURCES
|
||||
|
||||
To compile and install Vim, you will need the following:
|
||||
|
||||
- A C compiler (GCC preferred)
|
||||
- The GZIP program (you can get it from www.gnu.org)
|
||||
- The Vim source and runtime archives
|
||||
- A C compiler (GCC or clang preferred)
|
||||
- git (optionally, only when cloning from github)
|
||||
- zip/unzip (to uncompress the archive)
|
||||
- The Vim source archives
|
||||
|
||||
To get the Vim archives, look in this file for a mirror near you, this should
|
||||
provide the fastest download:
|
||||
To download the Vim source, you can either clone it from the Github project
|
||||
page: >
|
||||
git clone https://github.com/vim/vim.git
|
||||
<
|
||||
or download the archive directly using:
|
||||
|
||||
ftp://ftp.vim.org/pub/vim/MIRRORS
|
||||
|
||||
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
|
||||
"unix" directory and you'll find a list of files there. The version number is
|
||||
embedded in the file name. You will want to get the most recent version.
|
||||
You can get the files for Unix in one big archive that contains everything:
|
||||
|
||||
vim-8.2.tar.bz2 ~
|
||||
|
||||
You need the bzip2 program to uncompress it.
|
||||
https://github.com/vim/vim/archive/refs/heads/master.zip
|
||||
|
||||
|
||||
COMPILING
|
||||
@@ -80,17 +73,12 @@ First create a top directory to work in, for example: >
|
||||
|
||||
Then unpack the archives there. You can unpack it like this: >
|
||||
|
||||
tar xf path/vim-8.2.tar.bz2
|
||||
unzip vim-master.zip
|
||||
|
||||
If your tar command doesn't support bz2 directly: >
|
||||
|
||||
bzip2 -d -c path/vim-8.2.tar.bz2 | tar xf -
|
||||
|
||||
Change "path" to where you have downloaded the file.
|
||||
If you are satisfied with getting the default features, and your environment
|
||||
is setup properly, you should be able to compile Vim with just this: >
|
||||
|
||||
cd vim82/src
|
||||
cd vim-master/src
|
||||
make
|
||||
|
||||
The make program will run configure and compile everything. Further on we
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 9.1. Last change: 2024 Dec 16
|
||||
*various.txt* For Vim version 9.1. Last change: 2025 Feb 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -768,9 +768,8 @@ K Run a program to lookup the keyword under the
|
||||
MS-Windows). "gs" stands for "goto sleep".
|
||||
While sleeping the cursor is positioned in the text,
|
||||
if at a visible position.
|
||||
Also process the received netbeans messages. {only
|
||||
available when compiled with the |+netbeans_intg|
|
||||
feature}
|
||||
Queued messages and timers (|+timers|) are processed
|
||||
during the sleep as well.
|
||||
|
||||
*:sl!* *:sleep!*
|
||||
:[N]sl[eep]! [N][m] Same as above, but hide the cursor.
|
||||
|
||||
+92
-43
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Jan 23
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Mar 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -41551,10 +41551,23 @@ Add support for internal builtin functions with vim9 objects, see
|
||||
|
||||
Enum support for Vim9 script |:enum|
|
||||
|
||||
Support for protected _new() method
|
||||
|
||||
Diff mode ~
|
||||
---------
|
||||
Include the "linematch" algorithm for the 'diffopt' setting. This aligns
|
||||
changes between buffers on similar lines improving the diff highlighting in
|
||||
Vim
|
||||
|
||||
Improve the diff highlighting for changes within a line. Configurable using
|
||||
the "inline" sub option value for the 'diffopt' setting, with "inline:simple"
|
||||
being added to the default "diffopt" value (but this does not change how diff
|
||||
mode works).
|
||||
*new-other-9.2*
|
||||
Other new features ~
|
||||
------------------
|
||||
The new plugins |comment-install| and |nohlsearch-install| are included.
|
||||
The new packages |package-comment|, |package-nohlsearch| and |package-hlyank|
|
||||
are included.
|
||||
|
||||
Support for Wayland UI.
|
||||
|
||||
@@ -41563,69 +41576,92 @@ Support for the XDG Desktop Specification |xdg-base-dir|
|
||||
Support for translating messages in Vim script plugins using the |gettext()|
|
||||
and |bindtextdomain()| functions.
|
||||
|
||||
Support highlighting the matched text and the completion kind for insert-mode
|
||||
Support highlighting the matched text and the completion kind for insert-mode
|
||||
completion and command-line completion in |ins-completion-menu|, see
|
||||
|complete-items|
|
||||
|
||||
Include the "linematch" algorithm for the 'diffopt' setting. This aligns
|
||||
changes between buffers on similar lines improving the diff highlighting in
|
||||
Vim
|
||||
Support for the |Tuple| data type in Vim script and Vim9 script.
|
||||
|
||||
*changed-9.2*
|
||||
Changed~
|
||||
-------
|
||||
- use 'smoothscroll' logic for CTRL-F and CTRL-B for pagewise scrolling
|
||||
- use 'smoothscroll' logic for CTRL-D and CTRL-U for half-pagewise scrolling
|
||||
- the default for 'commentstring' contains whitespace padding to have
|
||||
automatic comments look nicer |comment-install|
|
||||
- 'completeopt' is now a |global-local| option.
|
||||
- 'nrformats' accepts the new "blank" suboption, to determine a signed or
|
||||
unsigned number based on whitespace in front of a minus sign.
|
||||
- allow to specify a priority when defining a new sign |:sign-define|
|
||||
- provide information about function arguments using the get(func, "arity")
|
||||
function |get()-func|
|
||||
- |:bwipe| also wipes jumplist and tagstack data
|
||||
- moving in the buffer list using |:bnext| and similar commands, behaves as
|
||||
documented and skips help buffers (if not run from a help buffer, else
|
||||
moves to the next/previous help buffer).
|
||||
|
||||
Default values: ~
|
||||
- the default 'history' option value has been increased to 200 and removed
|
||||
from |defaults.vim|
|
||||
- the default 'backspace' option for Vim has been set to "indent,eol,start"
|
||||
and removed from |defaults.vim|
|
||||
- the default fontsize for the GTK builds of Vim (Windows and Unix) has been
|
||||
increased to 12pt to accomodate modern high-dpi monitors
|
||||
- the default value of the 'keyprotocol' option has been updated and support
|
||||
for the ghostty terminal emulator (using kitty protocol) has been added
|
||||
|
||||
Completion: ~
|
||||
- allow to complete directories from 'cdpath' for |:cd| and similar commands,
|
||||
add the "cd_in_path" completion type for e.g. |:command-complete| and
|
||||
|getcompletion()|
|
||||
- allow to complete shell commands and files using the new shellcmdline
|
||||
completion type using |:command-complete| and |getcmdcomplpat()|
|
||||
- add 'cpoptions' flag "z" |cpo-z|, to disable some (traditional) vi
|
||||
behaviour/inconsistency (see |d-special| and |cw|).
|
||||
- allow to specify additional attributes in the completion menu (allows to
|
||||
mark deprecated attributes from LSP server) |complete-items|
|
||||
- the regex engines match correctly case-insensitive multi-byte characters
|
||||
(and apply proper case folding)
|
||||
- the completed word and completion type are provided when handling the
|
||||
|CompleteDone| autocommand in the |v:event| dictionary
|
||||
- |complete_info()| returns the list of matches shown in the poppu menu via
|
||||
the "matches" key
|
||||
- New option value for 'completeopt':
|
||||
"nosort" - do not sort completion results
|
||||
"preinsert" - highlight to be inserted values
|
||||
- handle multi-line completion as expected
|
||||
- improved commandline completion for the |:hi| command
|
||||
- New option value for 'wildmode':
|
||||
"noselect" - do not auto select an entry in the wildmenu
|
||||
|
||||
Options: ~
|
||||
- the default for 'commentstring' contains whitespace padding to have
|
||||
automatic comments look nicer |comment-install|
|
||||
- 'completeopt' is now a |global-local| option.
|
||||
- 'nrformats' accepts the new "blank" suboption, to determine a signed or
|
||||
unsigned number based on whitespace in front of a minus sign.
|
||||
- add 'cpoptions' flag "z" |cpo-z|, to disable some (traditional) vi
|
||||
behaviour/inconsistency (see |d-special| and |cw|).
|
||||
- 'rulerformat' now supports the |stl-%!| item
|
||||
- use 'smoothscroll' logic for CTRL-F / CTRL-B for pagewise scrolling
|
||||
and CTRL-D / CTRL-U for half-pagewise scrolling
|
||||
- 'pummaxwidth' maximum width for the completion popup menu
|
||||
|
||||
Ex commands: ~
|
||||
- allow to specify a priority when defining a new sign |:sign-define|
|
||||
- |:bwipe| also wipes jumplist and tagstack data
|
||||
- moving in the buffer list using |:bnext| and similar commands, behaves as
|
||||
documented and skips help buffers (if not run from a help buffer, else
|
||||
moves to the next/previous help buffer).
|
||||
- |:keeppatterns| preserves the last substitute pattern when used with |:s|
|
||||
|
||||
Functions: ~
|
||||
- provide information about function arguments using the get(func, "arity")
|
||||
function |get()-func|
|
||||
- |setqflist()| and |setloclist()| can optionally try to preserve the current
|
||||
selection in the quickfix list with the "u" action.
|
||||
- allow to pass local Vim script variables to python interpreter |py3eval()|
|
||||
- |getwininfo()| now also returns the "leftcol" property for a window
|
||||
- |v:stacktrace| The stack trace of the exception most recently caught and
|
||||
not finished
|
||||
- Add the optional {opts} |Dict| argument to |getchar()| to control: cursor
|
||||
behaviour, return type and whether or not to simplify the returned key
|
||||
|
||||
Others: ~
|
||||
- the regex engines match correctly case-insensitive multi-byte characters
|
||||
(and apply proper case folding)
|
||||
- the putty terminal is detected using an |TermResponse| autocommand in
|
||||
|defaults.vim| and Vim switches to a dark background
|
||||
- the |help-TOC| package is included to ease navigating the documentation.
|
||||
- an interactive tutor plugin has been included |vim-tutor-mode|, can be
|
||||
started via |:Tutor|
|
||||
- improve the |vimtutor| and add a second chapter for more advanced tips
|
||||
- allow to pass local Vim script variables to python interpreter |py3eval()|
|
||||
- |getwininfo()| now also returns the "leftcol" property for a window
|
||||
- 'rulerformat' now supports the |stl-%!| item
|
||||
- the default 'history' option value has been increased to 200 and removed
|
||||
from |defaults.vim|
|
||||
- the default 'backspace' option for Vim has been set to "indent,eol,start"
|
||||
and removed from |defaults.vim|
|
||||
- the completed word and completion type are provided when handling the
|
||||
|CompleteDone| autocommand in the |v:event| dictionary
|
||||
- the default fontsize for the GTK builds of Vim (Windows and Unix) has been
|
||||
increased to 12pt to accomodate modern high-dpi monitors
|
||||
- the default value of the 'keyprotocol' option has been updated by support
|
||||
for the ghostty terminal emulator (using kitty protocol)
|
||||
- |complete_info()| returns the list of matches shown in the poppu menu via
|
||||
the "matches" key
|
||||
- |v:stacktrace| The stack trace of the exception most recently caught and
|
||||
not finished
|
||||
- New option value "nosort" for 'completeopt'
|
||||
- add |dist#vim9#Launch()| and |dist#vim9#Open()| to the |vim-script-library|
|
||||
and decouple it from |netrw|
|
||||
- new digraph "APPROACHES THE LIMIT" using ".="
|
||||
- |CTRL-C| always closes the active |popup-window|.
|
||||
|
||||
*added-9.2*
|
||||
Added ~
|
||||
@@ -41649,10 +41685,14 @@ Functions: ~
|
||||
|getstacktrace()| get current stack trace of Vim scripts
|
||||
|id()| get unique identifier for a Dict, List, Object,
|
||||
Channel or Blob variable
|
||||
|list2tuple()| turn a List of items into a Tuple
|
||||
|matchbufline()| all the matches of a pattern in a buffer
|
||||
|matchstrlist()| all the matches of a pattern in a List of strings
|
||||
|ngettext()| lookup single/plural message translation
|
||||
|popup_setbuf()| switch to a different buffer in a popup
|
||||
|str2blob()| convert a List of strings into a blob
|
||||
|test_null_tuple()| return a null tuple
|
||||
|tuple2list()| turn a Tuple of items into a List
|
||||
|
||||
|
||||
Autocommands: ~
|
||||
@@ -41660,6 +41700,7 @@ Autocommands: ~
|
||||
|CursorMovedC| after the cursor was moved in the command-line
|
||||
|KeyInputPre| before processing any key event in any mode
|
||||
|SessionWritePost| after writing the session file |:mksession|
|
||||
|TabClosedPre| before closing a |tabpage|.
|
||||
|TermResponseAll| after the terminal response to |t_RV| and others is
|
||||
received
|
||||
|WinNewPre| before creating a new window
|
||||
@@ -41667,7 +41708,8 @@ Autocommands: ~
|
||||
|
||||
Highlighting: ~
|
||||
|
||||
|hl-ComplMatchIns| matched text of the currently inserted completion.
|
||||
|hl-ComplMatchIns| matched text of the currently inserted completion
|
||||
|hl-DiffTextAdd| added text within a changed line
|
||||
|hl-MsgArea| highlighting of the Command-line and messages area
|
||||
|hl-PmenuMatch| Popup menu: highlighting of matched text
|
||||
|hl-PmenuMatchSel| Popup menu: highlighting of matched text in selected
|
||||
@@ -41676,13 +41718,20 @@ Highlighting: ~
|
||||
Commands: ~
|
||||
|
||||
|[r| and |]r| to move the cursor to previous/next rare word
|
||||
|
||||
Ex-Commands: ~
|
||||
|
||||
|:iput| like |:put| but adjust indent
|
||||
|:pbuffer| Edit buffer [N] from the buffer list in the preview
|
||||
window
|
||||
|
||||
Options: ~
|
||||
|
||||
'completefuzzycollect' Enable fuzzy collection of candiates for (some)
|
||||
|ins-completion| modes
|
||||
'completeitemalign' Order of |complete-items| in Insert mode completion
|
||||
popup
|
||||
'eventignorewin' autocommand events that are ignored in a window
|
||||
'findfunc' Vim function to obtain the results for a |:find|
|
||||
command
|
||||
'messagesopt' configure |:messages| and |hit-enter| prompt
|
||||
|
||||
+42
-6
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 9.1. Last change: 2025 Jan 21
|
||||
*vim9.txt* For Vim version 9.1. Last change: 2025 Mar 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1001,6 +1001,7 @@ empty list and dict is falsy:
|
||||
string non-empty
|
||||
blob non-empty
|
||||
list non-empty (different from JavaScript)
|
||||
tuple non-empty (different from JavaScript)
|
||||
dictionary non-empty (different from JavaScript)
|
||||
func when there is a function name
|
||||
special true or v:true
|
||||
@@ -1048,6 +1049,7 @@ In Vim9 script one can use the following predefined values: >
|
||||
null_function
|
||||
null_job
|
||||
null_list
|
||||
null_tuple
|
||||
null_object
|
||||
null_partial
|
||||
null_string
|
||||
@@ -1467,15 +1469,16 @@ The following builtin types are supported:
|
||||
dict<{type}>
|
||||
job
|
||||
channel
|
||||
tuple<{type}>
|
||||
tuple<{type}, {type}, ...>
|
||||
tuple<...list<{type}>>
|
||||
tuple<{type}, ...list<{type}>>
|
||||
func
|
||||
func: {type}
|
||||
func({type}, ...)
|
||||
func({type}, ...): {type}
|
||||
void
|
||||
|
||||
Not supported yet:
|
||||
tuple<a: {type}, b: {type}, ...>
|
||||
|
||||
These types can be used in declarations, but no simple value will actually
|
||||
have the "void" type. Trying to use a void (e.g. a function without a
|
||||
return value) results in error *E1031* *E1186* .
|
||||
@@ -1483,6 +1486,32 @@ return value) results in error *E1031* *E1186* .
|
||||
There is no array type, use list<{type}> instead. For a list constant an
|
||||
efficient implementation is used that avoids allocating a lot of small pieces
|
||||
of memory.
|
||||
*tuple-type*
|
||||
A tuple type can be declared in more or less specific ways:
|
||||
tuple<number> a tuple with a single item of type |Number|
|
||||
tuple<number, string> a tuple with two items of type |Number| and
|
||||
|String|
|
||||
tuple<number, float, bool> a tuple with three items of type |Number|,
|
||||
|Float| and |Boolean|.
|
||||
tuple<...list<number>> a variadic tuple with zero or more items of
|
||||
type |Number|.
|
||||
tuple<number, ...list<string>> a tuple with an item of type |Number| followed
|
||||
by zero or more items of type |String|.
|
||||
|
||||
Examples: >
|
||||
var myTuple: tuple<number> = (20,)
|
||||
var myTuple: tuple<number, string> = (30, 'vim')
|
||||
var myTuple: tuple<number, float, bool> = (40, 1.1, true)
|
||||
var myTuple: tuple<...list<string>> = ('a', 'b', 'c')
|
||||
var myTuple: tuple<number, ...list<string>> = (3, 'a', 'b', 'c')
|
||||
<
|
||||
*variadic-tuple* *E1539*
|
||||
A variadic tuple has zero or more items of the same type. The type of a
|
||||
variadic tuple must end with a list type. Examples: >
|
||||
var myTuple: tuple<...list<number>> = (1, 2, 3)
|
||||
var myTuple: tuple<...list<string>> = ('a', 'b', 'c')
|
||||
var myTuple: tuple<...list<bool>> = ()
|
||||
<
|
||||
*vim9-func-declaration* *E1005* *E1007*
|
||||
A partial and function can be declared in more or less specific ways:
|
||||
func any kind of function reference, no type
|
||||
@@ -1707,7 +1736,8 @@ argument type checking: >
|
||||
*E1211* *E1217* *E1218* *E1219* *E1220* *E1221*
|
||||
*E1222* *E1223* *E1224* *E1225* *E1226* *E1227*
|
||||
*E1228* *E1238* *E1250* *E1251* *E1252* *E1256*
|
||||
*E1297* *E1298* *E1301*
|
||||
*E1297* *E1298* *E1301* *E1528* *E1529* *E1530*
|
||||
*E1531* *E1534*
|
||||
Types are checked for most builtin functions to make it easier to spot
|
||||
mistakes.
|
||||
|
||||
@@ -1715,7 +1745,7 @@ Categories of variables, defaults and null handling ~
|
||||
*variable-categories* *null-variables*
|
||||
There are categories of variables:
|
||||
primitive number, float, boolean
|
||||
container string, blob, list, dict
|
||||
container string, blob, list, tuple, dict
|
||||
specialized function, job, channel, user-defined-object
|
||||
|
||||
When declaring a variable without an initializer, an explicit type must be
|
||||
@@ -1845,6 +1875,7 @@ An uninitialized variable is usually equal to null; it depends on its type:
|
||||
var s: string s == null
|
||||
var b: blob b != null ***
|
||||
var l: list<any> l != null ***
|
||||
var t: tuple<any> t != null ***
|
||||
var d: dict<any> d != null ***
|
||||
var f: func f == null
|
||||
var j: job j == null
|
||||
@@ -1855,6 +1886,7 @@ A variable initialized to empty equals null_<type>; but not null:
|
||||
var s2: string = "" == null_string != null
|
||||
var b2: blob = 0z == null_blob != null
|
||||
var l2: list<any> = [] == null_list != null
|
||||
var t2: tuple<any> = () == null_tuple != null
|
||||
var d2: dict<any> = {} == null_dict != null
|
||||
|
||||
NOTE: the specialized variables, like job, default to null value and have no
|
||||
@@ -1921,6 +1953,10 @@ There is one way to use both legacy and Vim9 syntax in one script file: >
|
||||
This allows for writing a script that takes advantage of the Vim9 script
|
||||
syntax if possible, but will also work on a Vim version without it.
|
||||
|
||||
Note that Vim9 syntax changed before Vim 9 so that scripts using the current
|
||||
syntax (such as "import from" instead of "import") might throw errors.
|
||||
To prevent these, a safer check could be for |v:version| >= 900 instead.
|
||||
|
||||
This can only work in two ways:
|
||||
1. The "if" statement evaluates to false, the commands up to `endif` are
|
||||
skipped and `vim9script` is then the first command actually executed.
|
||||
|
||||
+14
-22
@@ -1,4 +1,4 @@
|
||||
*vim9class.txt* For Vim version 9.1. Last change: 2024 Dec 29
|
||||
*vim9class.txt* For Vim version 9.1. Last change: 2025 Feb 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -52,7 +52,6 @@ An interface is used to specify properties of an object:
|
||||
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,
|
||||
@@ -122,7 +121,6 @@ using the object name followed by a dot following by the member: >
|
||||
A class name cannot be used as an expression. A class name cannot be used in
|
||||
the left-hand-side of an assignment.
|
||||
|
||||
|
||||
Object variable write access ~
|
||||
*read-only-variable*
|
||||
Now try to change an object variable directly: >
|
||||
@@ -272,6 +270,9 @@ no need to call "super()" or "new()" on the parent.
|
||||
When defining the new() method the return type should not be specified. It
|
||||
always returns an object of the class.
|
||||
|
||||
The new() method can be made a protected method by using "_new()". This can
|
||||
be used to support the singleton design pattern.
|
||||
|
||||
*E1386*
|
||||
When invoking an object method, the method name should be preceded by the
|
||||
object variable name. An object method cannot be invoked using the class
|
||||
@@ -623,13 +624,15 @@ once. They can appear in any order, although this order is recommended: >
|
||||
extends ClassName
|
||||
implements InterfaceName, OtherInterface
|
||||
specifies SomeInterface
|
||||
< *E1355* *E1369*
|
||||
<
|
||||
The "specifies" feature is currently not implemented.
|
||||
|
||||
*E1355* *E1369*
|
||||
Each variable and method name can be used only once. It is not possible to
|
||||
define a method with the same name and different type of arguments. It is not
|
||||
possible to use a public and protected member variable with the same name. An
|
||||
object variable name used in a super class cannot be reused in a child class.
|
||||
|
||||
|
||||
Object Variable Initialization ~
|
||||
|
||||
If the type of a variable is not explicitly specified in a class, then it is
|
||||
@@ -686,13 +689,12 @@ A class can implement one or more interfaces. The "implements" keyword can
|
||||
only appear once *E1350* . Multiple interfaces can be specified, separated by
|
||||
commas. Each interface name can appear only once. *E1351*
|
||||
|
||||
|
||||
A class defining an interface ~
|
||||
*specifies*
|
||||
A class can declare its interface, the object variables and methods, with a
|
||||
named interface. This avoids the need for separately specifying the
|
||||
interface, which is often done in many languages, especially Java.
|
||||
|
||||
TODO: This is currently not implemented.
|
||||
|
||||
Items in a class ~
|
||||
*E1318* *E1325* *E1388*
|
||||
@@ -733,25 +735,25 @@ Some of the builtin functions like |empty()|, |len()| and |string()| can be
|
||||
used with an object. An object can implement a method with the same name as
|
||||
these builtin functions to return an object-specific value.
|
||||
|
||||
*E1412*
|
||||
*E1412*
|
||||
The following builtin methods are supported:
|
||||
*object-empty()*
|
||||
*object-empty()*
|
||||
empty() Invoked by the |empty()| function to check whether an object is
|
||||
empty. If this method is missing, then true is returned. This
|
||||
method should not accept any arguments and must return a boolean.
|
||||
*object-len()*
|
||||
*object-len()*
|
||||
len() Invoked by the |len()| function to return the length of an
|
||||
object. If this method is missing in the class, then an error is
|
||||
given and zero is returned. This method should not accept any
|
||||
arguments and must return a number.
|
||||
*object-string()*
|
||||
*object-string()*
|
||||
string() Invoked by the |string()| function to get a textual
|
||||
representation of an object. Also used by the |:echo| command
|
||||
for an object. If this method is missing in the class, then a
|
||||
built-in default textual representation is used. This method
|
||||
should not accept any arguments and must return a string.
|
||||
|
||||
*E1413*
|
||||
*E1413*
|
||||
A class method cannot be used as a builtin method.
|
||||
|
||||
Defining an interface ~
|
||||
@@ -783,7 +785,6 @@ An interface can only be defined in a |Vim9| script file. *E1342*
|
||||
An interface cannot "implement" another interface but it can "extend" another
|
||||
interface. *E1381*
|
||||
|
||||
|
||||
null object ~
|
||||
|
||||
When a variable is declared to have the type of an object, but it is not
|
||||
@@ -792,7 +793,6 @@ does not know what class was supposed to be used. Vim then cannot check if
|
||||
a variable name is correct and you will get a "Using a null object" error,
|
||||
even when the variable name is invalid. *E1360* *E1362*
|
||||
|
||||
|
||||
Default constructor ~
|
||||
*default-constructor*
|
||||
In case you define a class without a new() method, one will be automatically
|
||||
@@ -1115,7 +1115,6 @@ 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
|
||||
@@ -1136,7 +1135,6 @@ 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
|
||||
@@ -1145,7 +1143,6 @@ 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.
|
||||
|
||||
|
||||
Single inheritance and interfaces ~
|
||||
|
||||
Some languages support multiple inheritance. Although that can be useful in
|
||||
@@ -1161,7 +1158,6 @@ 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 "this.variable" everywhere ~
|
||||
|
||||
The object variables in various programming languages can often be accessed in
|
||||
@@ -1180,7 +1176,6 @@ variables. Simple and consistent. When looking at the code inside a class
|
||||
it's also directly clear which variable references are object variables and
|
||||
which aren't.
|
||||
|
||||
|
||||
Using class variables ~
|
||||
|
||||
Using "static variable" to declare a class variable is very common, nothing
|
||||
@@ -1194,7 +1189,6 @@ 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.
|
||||
|
||||
|
||||
Declaring object and class variables ~
|
||||
|
||||
The main choice is whether to use "var" as with variable declarations.
|
||||
@@ -1248,7 +1242,6 @@ function declaration syntax for class/object variables and methods. Vim9 also
|
||||
reuses the general function declaration syntax for methods. So, for the sake
|
||||
of consistency, we require "var" in these declarations.
|
||||
|
||||
|
||||
Using "ClassName.new()" to construct an object ~
|
||||
|
||||
Many languages use the "new" operator to create an object, which is actually
|
||||
@@ -1312,7 +1305,6 @@ An alternative would have been using the "protected" keyword, just like
|
||||
"public" changes the access in the other direction. Well, that's just to
|
||||
reduce the number of keywords.
|
||||
|
||||
|
||||
No private object variables ~
|
||||
|
||||
Some languages provide several ways to control access to object variables.
|
||||
|
||||
+44
-20
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2025 Jan 21
|
||||
" Last Change: 2025 Mar 18
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
@@ -51,8 +51,11 @@ func s:StarSetf(ft)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" Vim help file
|
||||
au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help
|
||||
" Vim help file, set ft explicitly, because 'modeline' might be off
|
||||
au BufNewFile,BufRead */doc/*.txt
|
||||
\ if getline('$') =~ '\(^\|\s\)vim:.*\<\(ft\|filetype\)=help\>'
|
||||
\| setf help
|
||||
\| endif
|
||||
|
||||
" Abaqus or Trasys
|
||||
au BufNewFile,BufRead *.inp call dist#ft#Check_inp()
|
||||
@@ -75,6 +78,9 @@ au BufNewFile,BufRead *.abc setf abc
|
||||
" ABEL
|
||||
au BufNewFile,BufRead *.abl setf abel
|
||||
|
||||
" ABNF
|
||||
au BufNewFile,BufRead *.abnf setf abnf
|
||||
|
||||
" AceDB
|
||||
au BufNewFile,BufRead *.wrm setf acedb
|
||||
|
||||
@@ -341,6 +347,11 @@ au BufNewFile,BufRead *.capnp setf capnp
|
||||
" Cgdb config file
|
||||
au BufNewFile,BufRead cgdbrc setf cgdbrc
|
||||
|
||||
" m17n database files. */m17n/* matches installed files, */.m17n.d/* matches
|
||||
" per-user config files, */m17n-db/* matches the git repo. (must be before
|
||||
" *.cs)
|
||||
au BufNewFile,BufRead */{m17n,.m17n.d,m17n-db}/*.{ali,cs,dir,flt,fst,lnm,mic,mim,tbl} setf m17ndb
|
||||
|
||||
" C#
|
||||
au BufNewFile,BufRead *.cs,*.csx,*.cake setf cs
|
||||
|
||||
@@ -384,6 +395,12 @@ au BufNewFile,BufRead *.cdl setf cdl
|
||||
" Conary Recipe
|
||||
au BufNewFile,BufRead *.recipe setf conaryrecipe
|
||||
|
||||
" Containers config files
|
||||
au BufNewFile,BufRead */containers/containers.conf{,.d/*.conf} setf toml
|
||||
au BufNewFile,BufRead */containers/containers.conf.modules/*.conf setf toml
|
||||
au BufNewFile,BufRead */containers/registries.conf{,.d/*.conf} setf toml
|
||||
au BufNewFile,BufRead */containers/storage.conf setf toml
|
||||
|
||||
" Corn config file
|
||||
au BufNewFile,BufRead *.corn setf corn
|
||||
|
||||
@@ -952,7 +969,7 @@ au BufNewFile,BufRead */etc/gitattributes setf gitattributes
|
||||
au BufNewFile,BufRead .gitignore,*.git/info/exclude setf gitignore
|
||||
au BufNewFile,BufRead */.config/git/ignore,*.prettierignore setf gitignore
|
||||
au BufNewFile,BufRead */.config/fd/ignore,.fdignore,.ignore setf gitignore
|
||||
au BufNewFile,BufRead .rgignore,.dockerignore setf gitignore
|
||||
au BufNewFile,BufRead .rgignore,.dockerignore,.containerignore setf gitignore
|
||||
au BufNewFile,BufRead .npmignore,.vscodeignore setf gitignore
|
||||
au BufNewFile,BufRead git-rebase-todo setf gitrebase
|
||||
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
|
||||
@@ -1797,7 +1814,7 @@ au BufNewFile,BufRead *.hook
|
||||
au BufNewFile,BufRead {.,}makepkg.conf setf sh
|
||||
|
||||
" Pacman log
|
||||
au BufNewFile,BufRead pacman.log setf pacmanlog
|
||||
au BufRead pacman.log* call s:StarSetf('pacmanlog')
|
||||
|
||||
" Pam conf
|
||||
au BufNewFile,BufRead */etc/pam.conf setf pamconf
|
||||
@@ -2212,7 +2229,7 @@ au BufNewFile,BufRead *.sass setf sass
|
||||
au BufNewFile,BufRead *.sa call dist#ft#FTsa()
|
||||
|
||||
" Scala
|
||||
au BufNewFile,BufRead *.scala setf scala
|
||||
au BufNewFile,BufRead *.scala,*.mill setf scala
|
||||
|
||||
" SBT - Scala Build Tool
|
||||
au BufNewFile,BufRead *.sbt setf sbt
|
||||
@@ -2347,8 +2364,8 @@ au BufNewFile,BufRead *.zsh,*.zsh-theme,*.zunit setf zsh
|
||||
" Salt state files
|
||||
au BufNewFile,BufRead *.sls setf salt
|
||||
|
||||
" Scheme, Supertux configuration, Lips.js history ("racket" patterns are now separate, see above)
|
||||
au BufNewFile,BufRead *.scm,*.ss,*.sld,*.stsg,*/supertux2/config,.lips_repl_history setf scheme
|
||||
" Scheme, Supertux configuration, Lips.js history, Guile init file ("racket" patterns are now separate, see above)
|
||||
au BufNewFile,BufRead *.scm,*.ss,*.sld,*.stsg,*/supertux2/config,.lips_repl_history,.guile setf scheme
|
||||
|
||||
" Screen RC
|
||||
au BufNewFile,BufRead .screenrc,screenrc setf screen
|
||||
@@ -2498,6 +2515,10 @@ au BufNewFile,BufRead *.class
|
||||
" SMCL
|
||||
au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl
|
||||
|
||||
" SPA JSON
|
||||
au BufNewFile,BufRead */pipewire/*.conf setf spajson
|
||||
au BufNewFile,BufRead */wireplumber/*.conf setf spajson
|
||||
|
||||
" Stored Procedures
|
||||
au BufNewFile,BufRead *.stp setf stp
|
||||
|
||||
@@ -2596,6 +2617,9 @@ au BufRead,BufNewFile *.ttl
|
||||
" Terminfo
|
||||
au BufNewFile,BufRead *.ti setf terminfo
|
||||
|
||||
" Tera
|
||||
au BufRead,BufNewFile *.tera setf tera
|
||||
|
||||
" Terraform variables
|
||||
au BufRead,BufNewFile *.tfvars setf terraform-vars
|
||||
|
||||
@@ -2640,13 +2664,13 @@ au BufNewFile,BufRead *.tla setf tla
|
||||
au BufNewFile,BufRead {.,}tmux*.conf setf tmux
|
||||
|
||||
" TOML
|
||||
au BufNewFile,BufRead *.toml setf toml
|
||||
au BufNewFile,BufRead *.toml,uv.lock setf toml
|
||||
|
||||
" TPP - Text Presentation Program
|
||||
au BufNewFile,BufRead *.tpp setf tpp
|
||||
|
||||
" TRACE32 Script Language
|
||||
au BufNewFile,BufRead *.cmm,*.t32 setf trace32
|
||||
au BufNewFile,BufRead *.cmm,*.cmmt,*.t32 setf trace32
|
||||
|
||||
" Treetop
|
||||
au BufRead,BufNewFile *.treetop setf treetop
|
||||
@@ -3273,7 +3297,7 @@ au BufNewFile,BufRead XF86Config*
|
||||
\|call s:StarSetf('xf86conf')
|
||||
|
||||
" XKB
|
||||
au BufNewFile,BufRead */usr/share/X11/xkb/{compat,geometry,keycodes,symbols,types}/* call s:StarSetf('xkb')
|
||||
au BufNewFile,BufRead */{,.}xkb/{compat,geometry,keycodes,symbols,types}/* call s:StarSetf('xkb')
|
||||
|
||||
" X11 xmodmap
|
||||
au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap')
|
||||
@@ -3284,6 +3308,15 @@ au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd')
|
||||
" yum conf (close enough to dosini)
|
||||
au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini')
|
||||
|
||||
" Yarn lock
|
||||
au BufNewFile,BufRead yarn.lock setf yaml
|
||||
|
||||
" Zathurarc
|
||||
au BufNewFile,BufRead zathurarc setf zathurarc
|
||||
|
||||
" Rofi stylesheet
|
||||
au BufNewFile,BufRead *.rasi setf rasi
|
||||
|
||||
" Z-Shell script ending in a star
|
||||
au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump* call s:StarSetf('zsh')
|
||||
au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
|
||||
@@ -3329,15 +3362,6 @@ au filetypedetect BufNewFile,BufRead,StdinReadPost *
|
||||
\ setf FALLBACK conf |
|
||||
\ endif
|
||||
|
||||
" Yarn lock
|
||||
au BufNewFile,BufRead yarn.lock setf yaml
|
||||
|
||||
" Zathurarc
|
||||
au BufNewFile,BufRead zathurarc setf zathurarc
|
||||
|
||||
" Rofi stylesheet
|
||||
au BufNewFile,BufRead *.rasi setf rasi
|
||||
|
||||
" If the GUI is already running, may still need to install the Syntax menu.
|
||||
" Don't do it when the 'M' flag is included in 'guioptions'.
|
||||
if has("menu") && has("gui_running")
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
" Language: C#
|
||||
" Maintainer: Nick Jensen <nickspoon@gmail.com>
|
||||
" Former Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||
" Last Change: 2022-11-16
|
||||
" 2024 Jan 14 by Vim Project (browsefilter)
|
||||
" Last Change: 2025-03-14
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/nickspoons/vim-cs
|
||||
|
||||
@@ -21,8 +20,11 @@ setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
" Set 'comments' to format dashed lists in comments.
|
||||
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
|
||||
setlocal commentstring=//\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setl com< fo<'
|
||||
setlocal cinoptions=J1
|
||||
|
||||
let b:undo_ftplugin = 'setl com< fo< cino<'
|
||||
|
||||
if exists('loaded_matchit') && !exists('b:match_words')
|
||||
" #if/#endif support included by default
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
" Vim filetype plugin
|
||||
" Language: dnsmasq
|
||||
" Maintainer: dringsim <dringsim@qq.com>
|
||||
" Last Change: 2025-02-18
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Behaves mostly just like cfg
|
||||
runtime! ftplugin/cfg.vim
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Dockerfile
|
||||
" Maintainer: Honza Pokorny <http://honza.ca>
|
||||
" Last Change: 2024 Dec 20
|
||||
" Last Change: 2025 Feb 21
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -11,6 +11,7 @@ endif
|
||||
" Don't load another plugin for this buffer
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = "setl commentstring<"
|
||||
let b:undo_ftplugin = "setl comments< commentstring<"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Configuration File (ini file) for MS-DOS/MS Windows
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2008-07-09
|
||||
" Latest Revision: 2025 Feb 20
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -13,7 +14,7 @@ set cpo&vim
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||
|
||||
setlocal comments=:; commentstring=;\ %s formatoptions-=t formatoptions+=croql
|
||||
setlocal comments=:;,:# commentstring=;\ %s formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin
|
||||
" Language: exports(5) configuration file
|
||||
" Maintainer: Matt Perry <matt@mattperry.com>
|
||||
" Last Change: 2025 Feb 13
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:# commentstring=#\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms< fo<'
|
||||
+26
-2
@@ -1,8 +1,10 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Go
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-go)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-go is archived)
|
||||
" Last Change: 2014 Aug 16
|
||||
" 2024 Jul 16 by Vim Project (add recommended indent style)
|
||||
" 2025 Mar 07 by Vim Project (add formatprg and keywordprg option #16804)
|
||||
" 2025 Mar 18 by Vim Project (use :term for 'keywordprg' #16911)
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
@@ -10,15 +12,37 @@ endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal formatoptions-=t
|
||||
setlocal formatprg=gofmt
|
||||
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,://
|
||||
setlocal commentstring=//\ %s
|
||||
setlocal keywordprg=:GoKeywordPrg
|
||||
|
||||
let b:undo_ftplugin = 'setl fo< com< cms<'
|
||||
command! -buffer -nargs=* GoKeywordPrg call s:GoKeywordPrg()
|
||||
|
||||
let b:undo_ftplugin = 'setl fo< com< cms< fp< kp<'
|
||||
\ . '| delcommand -buffer GoKeywordPrg'
|
||||
|
||||
if get(g:, 'go_recommended_style', 1)
|
||||
setlocal noexpandtab softtabstop=0 shiftwidth=0
|
||||
let b:undo_ftplugin ..= ' | setl et< sts< sw<'
|
||||
endif
|
||||
|
||||
if !exists('*' .. expand('<SID>') .. 'GoKeywordPrg')
|
||||
func! s:GoKeywordPrg()
|
||||
let temp_isk = &l:iskeyword
|
||||
setl iskeyword+=.
|
||||
try
|
||||
let cmd = 'go doc -C ' . shellescape(expand('%:h')) . ' ' . shellescape(expand('<cword>'))
|
||||
if has('gui_running') || has('nvim')
|
||||
exe 'hor term' cmd
|
||||
else
|
||||
exe '!' . cmd
|
||||
endif
|
||||
finally
|
||||
let &l:iskeyword = temp_isk
|
||||
endtry
|
||||
endfunc
|
||||
endif
|
||||
|
||||
" vim: sw=2 sts=2 et
|
||||
|
||||
+44
-22
@@ -5,13 +5,24 @@
|
||||
" Contributor: Dorai Sitaram <ds26@gte.com>
|
||||
" C.D. MacEachern <craig.daniel.maceachern@gmail.com>
|
||||
" Tyler Miller <tmillr@proton.me>
|
||||
" Last Change: 2024 Dec 03
|
||||
" Phạm Bình An <phambinhanctb2004@gmail.com>
|
||||
" Last Change: 2025 Feb 27
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" keep in sync with syntax/lua.vim
|
||||
if !exists("lua_version")
|
||||
" Default is lua 5.3
|
||||
let lua_version = 5
|
||||
let lua_subversion = 3
|
||||
elseif !exists("lua_subversion")
|
||||
" lua_version exists, but lua_subversion doesn't. In this case set it to 0
|
||||
let lua_subversion = 0
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
@@ -21,11 +32,11 @@ setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &l:define = '\<function\|\<local\%(\s\+function\)\='
|
||||
|
||||
" TODO: handle init.lua
|
||||
setlocal includeexpr=tr(v:fname,'.','/')
|
||||
let &l:include = '\<\%(\%(do\|load\)file\|require\)\s*('
|
||||
setlocal includeexpr=s:LuaInclude(v:fname)
|
||||
setlocal suffixesadd=.lua
|
||||
|
||||
let b:undo_ftplugin = "setlocal cms< com< def< fo< inex< sua<"
|
||||
let b:undo_ftplugin = "setl cms< com< def< fo< inc< inex< sua<"
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_ignorecase = 0
|
||||
@@ -50,20 +61,31 @@ endif
|
||||
|
||||
if has("folding") && get(g:, "lua_folding", 0)
|
||||
setlocal foldmethod=expr
|
||||
setlocal foldexpr=LuaFold(v:lnum)
|
||||
setlocal foldexpr=s:LuaFold(v:lnum)
|
||||
let b:lua_lasttick = -1
|
||||
let b:undo_ftplugin ..= "|setl foldexpr< foldmethod< | unlet! b:lua_lasttick b:lua_foldlists"
|
||||
let b:undo_ftplugin ..= " | setl foldexpr< foldmethod< | unlet! b:lua_lasttick b:lua_foldlists"
|
||||
endif
|
||||
|
||||
|
||||
" The rest of the file needs to be :sourced only once per Vim session
|
||||
if exists('s:loaded_lua') || &cp
|
||||
if exists("s:loaded_lua") || &cp
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
finish
|
||||
endif
|
||||
let s:loaded_lua = 1
|
||||
|
||||
function s:LuaInclude(fname) abort
|
||||
let lua_ver = str2float(printf("%d.%02d", g:lua_version, g:lua_subversion))
|
||||
let fname = tr(a:fname, '.', '/')
|
||||
let paths = lua_ver >= 5.03 ? [fname .. ".lua", fname .. "/init.lua"] : [fname .. ".lua"]
|
||||
for path in paths
|
||||
if filereadable(path)
|
||||
return path
|
||||
endif
|
||||
endfor
|
||||
return fname
|
||||
endfunction
|
||||
|
||||
let s:patterns = [
|
||||
\ ['do', 'end'],
|
||||
\ ['if\s+.+\s+then', 'end'],
|
||||
@@ -75,35 +97,35 @@ let s:patterns = [
|
||||
\ ['local\s+function\s+.+', 'end'],
|
||||
\ ]
|
||||
|
||||
function! LuaFold(lnum) abort
|
||||
function s:LuaFold(lnum) abort
|
||||
if b:lua_lasttick == b:changedtick
|
||||
return b:lua_foldlists[a:lnum-1]
|
||||
return b:lua_foldlists[a:lnum - 1]
|
||||
endif
|
||||
let b:lua_lasttick = b:changedtick
|
||||
|
||||
let b:lua_foldlists = []
|
||||
let foldlist = []
|
||||
let buf = getline(1, '$')
|
||||
let buf = getline(1, "$")
|
||||
for line in buf
|
||||
for t in s:patterns
|
||||
let tagopen = '\v^\s*'..t[0]..'\s*$'
|
||||
let tagclose = '\v^\s*'..t[1]..'\s*$'
|
||||
let tagopen = '\v^\s*' .. t[0] ..'\s*$'
|
||||
let tagclose = '\v^\s*' .. t[1] ..'\s*$'
|
||||
if line =~# tagopen
|
||||
call add(foldlist, t)
|
||||
break
|
||||
call add(foldlist, t)
|
||||
break
|
||||
elseif line =~# tagclose
|
||||
if len(foldlist) > 0 && line =~# foldlist[-1][1]
|
||||
call remove(foldlist, -1)
|
||||
else
|
||||
let foldlist = []
|
||||
endif
|
||||
break
|
||||
if len(foldlist) > 0 && line =~# foldlist[-1][1]
|
||||
call remove(foldlist, -1)
|
||||
else
|
||||
let foldlist = []
|
||||
endif
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
call add(b:lua_foldlists, len(foldlist))
|
||||
endfor
|
||||
|
||||
return lua_foldlists[a:lnum-1]
|
||||
return lua_foldlists[a:lnum - 1]
|
||||
endfunction
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
" Vim filetype plugin
|
||||
" Language: m17n database
|
||||
" Maintainer: David Mandelberg <david@mandelberg.org>
|
||||
" Last Change: 2025 Feb 21
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:;;;,:;;,:;
|
||||
setlocal commentstring=;\ %s
|
||||
setlocal iskeyword=!-~,@,^34,^(,^),^92
|
||||
setlocal lisp
|
||||
setlocal lispwords=
|
||||
|
||||
let b:undo_ftplugin = "setlocal comments< commentstring< iskeyword< lisp< lispwords<"
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Mail
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2023 Aug 10
|
||||
" Last Change: 2025 Feb 20
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
@@ -10,7 +10,7 @@ if exists("b:did_ftplugin")
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let b:undo_ftplugin = "setl modeline< tw< fo< comments<"
|
||||
let b:undo_ftplugin = "setl modeline< tw< fo< comments< commentstring<"
|
||||
|
||||
" Don't use modelines in e-mail messages, avoid trojan horses and nasty
|
||||
" "jokes" (e.g., setting 'textwidth' to 5).
|
||||
@@ -24,6 +24,9 @@ endif
|
||||
" Set 'formatoptions' to break text lines and keep the comment leader ">".
|
||||
setlocal fo+=tcql
|
||||
|
||||
" Set commentstring to quoting sign ">" so comment shortcuts can be used to
|
||||
" edit quoted parts of mail
|
||||
setlocal commentstring=>\ %s
|
||||
" Add n:> to 'comments, in case it was removed elsewhere
|
||||
setlocal comments+=n:>
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
" Last Change: 2024 Jun 06 (disabled the q mapping, #8210)
|
||||
" 2024 Jul 06 (use nnoremap, #15130)
|
||||
" 2024 Aug 23 (improve the <Plug>ManBS mapping, #15547, #15556)
|
||||
" 2025 Mar 09 (improve :Man completion for man-db, #16843)
|
||||
|
||||
" To make the ":Man" command available before editing a manual page, source
|
||||
" this script from your startup vimrc file.
|
||||
@@ -24,6 +25,14 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
if !exists('g:ft_man_implementation')
|
||||
if executable('mandb') > 0
|
||||
let g:ft_man_implementation = 'man-db'
|
||||
else
|
||||
let g:ft_man_implementation = ''
|
||||
endif
|
||||
endif
|
||||
|
||||
if &filetype == "man"
|
||||
" Allow hyphen, plus, colon, dot, and commercial at in manual page name.
|
||||
" Parentheses are not here but in dist#man#PreGetPage()
|
||||
@@ -60,11 +69,19 @@ if &filetype == "man"
|
||||
endif
|
||||
|
||||
if exists(":Man") != 2
|
||||
com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(<q-mods>, <f-args>)
|
||||
if g:ft_man_implementation ==# 'man-db'
|
||||
com -nargs=+ -complete=customlist,dist#man#ManDbComplete Man call dist#man#GetPage(<q-mods>, <f-args>)
|
||||
else
|
||||
com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(<q-mods>, <f-args>)
|
||||
endif
|
||||
nnoremap <Leader>K :call dist#man#PreGetPage(0)<CR>
|
||||
nnoremap <Plug>ManPreGetPage :call dist#man#PreGetPage(0)<CR>
|
||||
endif
|
||||
|
||||
if exists(":ManReload") != 2
|
||||
com ManReload call dist#man#Reload()
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
" Language: roff(7)
|
||||
" Maintainer: Aman Verma
|
||||
" Homepage: https://github.com/a-vrma/vim-nroff-ftplugin
|
||||
" Document: https://www.gnu.org/software/groff/manual/groff.html
|
||||
" Previous Maintainer: Chris Spiegel <cspiegel@gmail.com>
|
||||
" 2024 May 24 by Riley Bruins <ribru17@gmail.com> ('commentstring')
|
||||
" Last Changes:
|
||||
" 2024 May 24 by Riley Bruins <ribru17@gmail.com> ('commentstring' #14843)
|
||||
" 2025 Feb 12 by Wu, Zhenyu <wuzhenyu@ustc.edu> (matchit configuration #16619)
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -13,5 +16,17 @@ let b:did_ftplugin = 1
|
||||
setlocal commentstring=.\\\"\ %s
|
||||
setlocal comments=:.\\\"
|
||||
setlocal sections+=Sh
|
||||
setlocal define=.\s*de
|
||||
|
||||
let b:undo_ftplugin = 'setlocal commentstring< comments< sections<'
|
||||
let b:undo_ftplugin = 'setlocal commentstring< comments< sections< define<'
|
||||
|
||||
if exists('loaded_matchit')
|
||||
let b:match_words = '^\.\s*ie\>:^\.\s*el\>'
|
||||
\ . ',^\.\s*LB\>:^\.\s*LI\>:^\.\s*LE\>'
|
||||
\ . ',^\.\s*TS\>:^\.\s*TE\>'
|
||||
\ . ',^\.\s*PS\>:^\.\s*P[EF]\>'
|
||||
\ . ',^\.\s*EQ\>:^\.\s*EN\>'
|
||||
\ . ',^\.\s*[\>:^\.\s*]\>'
|
||||
\ . ',^\.\s*FS\>:^\.\s*FE\>'
|
||||
let b:undo_ftplugin .= "| unlet b:match_words"
|
||||
endif
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
" Vim ftplugin file
|
||||
" Language: Oracle Procedural SQL (PL/SQL)
|
||||
" Maintainer: Lee Lindley (lee dot lindley at gmail dot com)
|
||||
" Previous Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com)
|
||||
" Previous Maintainer: C. Laurence Gonsalves (clgonsal@kami.com)
|
||||
" URL: https://github.com/lee-lindley/vim_plsql_syntax
|
||||
" Last Change: Feb 19, 2025
|
||||
" History: Enno Konfekt move handling of optional syntax folding from syntax
|
||||
" file to ftplugin
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if get(g:,"plsql_fold",0) == 1
|
||||
setlocal foldmethod=syntax
|
||||
let b:undo_ftplugin = "setl fdm< "
|
||||
endif
|
||||
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin
|
||||
" Language: smb.conf(5) configuration file
|
||||
" Maintainer: Matt Perry <matt@mattperry.com>
|
||||
" Last Change: 2025 Feb 13
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:;,:# commentstring=#\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let b:undo_ftplugin = 'setl com< cms< fo<'
|
||||
@@ -6,6 +6,7 @@
|
||||
" Eisuke Kawashima
|
||||
" Last Change: 2024 Sep 19 by Vim Project (compiler shellcheck)
|
||||
" 2024 Dec 29 by Vim Project (improve setting shellcheck compiler)
|
||||
" 2025 Mar 09 by Vim Project (set b:match_skip)
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -30,7 +31,8 @@ if exists("loaded_matchit") && !exists("b:match_words")
|
||||
\ s:sol .. '\%(for\|while\)\>:' .. s:sol .. 'done\>,' ..
|
||||
\ s:sol .. 'case\>:' .. s:sol .. 'esac\>'
|
||||
unlet s:sol
|
||||
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
|
||||
let b:match_skip = "synIDattr(synID(line('.'),col('.'),0),'name') =~ 'shSnglCase'"
|
||||
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words b:match_skip"
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Sieve filtering language input file
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2008-07-09
|
||||
" Latest Revision: 2025 Feb 20
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||
let b:undo_ftplugin = "setl com< cms< fo< ff<"
|
||||
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
" https://datatracker.ietf.org/doc/html/rfc5228#section-2.2 says
|
||||
" "newlines (CRLF, never just CR or LF)"
|
||||
setlocal fileformat=dos
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin
|
||||
" Language: SPA JSON
|
||||
" Maintainer: David Mandelberg <david@mandelberg.org>
|
||||
" Last Change: 2025 Mar 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<"
|
||||
@@ -0,0 +1,30 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Tera
|
||||
" Maintainer: Muntasir Mahmud <muntasir.joypurhat@gmail.com>
|
||||
" Last Change: 2025 Mar 08
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal autoindent
|
||||
|
||||
setlocal commentstring={#\ %s\ #}
|
||||
setlocal comments=s:{#,e:#}
|
||||
|
||||
if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 0
|
||||
let b:match_words = '{#:##\|#},{% *if:{% *else\>:{% *elif\>:{% *endif %},{% *for\>:{% *endfor %},{% *macro\>:{% *endmacro %},{% *block\>:{% *endblock %},{% *filter\>:{% *endfilter %},{% *set\>:{% *endset %},{% *raw\>:{% *endraw %},{% *with\>:{% *endwith %}'
|
||||
endif
|
||||
|
||||
setlocal includeexpr=substitute(v:fname,'\\([^.]*\\)$','\\1','g')
|
||||
setlocal suffixesadd=.tera
|
||||
|
||||
setlocal expandtab
|
||||
setlocal shiftwidth=2
|
||||
setlocal softtabstop=2
|
||||
|
||||
let b:undo_ftplugin = "setlocal autoindent< commentstring< comments< " ..
|
||||
\ "includeexpr< suffixesadd< expandtab< shiftwidth< softtabstop<"
|
||||
let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words"
|
||||
+80
-29
@@ -1,9 +1,11 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Vim
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2025 Jan 06
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Contributors: Riley Bruins <ribru17@gmail.com> ('commentstring')
|
||||
" Language: Vim
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2025 Mar 05
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Contributors: Riley Bruins <ribru17@gmail.com> ('commentstring'),
|
||||
" @Konfekt
|
||||
" @tpope (s:Help())
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -18,20 +20,21 @@ set cpo&vim
|
||||
|
||||
if !exists('*VimFtpluginUndo')
|
||||
func VimFtpluginUndo()
|
||||
setl fo< isk< com< tw< commentstring< include< define<
|
||||
setl fo< isk< com< tw< commentstring< include< define< keywordprg<
|
||||
sil! delc -buffer VimKeywordPrg
|
||||
if exists('b:did_add_maps')
|
||||
silent! nunmap <buffer> [[
|
||||
silent! vunmap <buffer> [[
|
||||
silent! xunmap <buffer> [[
|
||||
silent! nunmap <buffer> ]]
|
||||
silent! vunmap <buffer> ]]
|
||||
silent! xunmap <buffer> ]]
|
||||
silent! nunmap <buffer> []
|
||||
silent! vunmap <buffer> []
|
||||
silent! xunmap <buffer> []
|
||||
silent! nunmap <buffer> ][
|
||||
silent! vunmap <buffer> ][
|
||||
silent! xunmap <buffer> ][
|
||||
silent! nunmap <buffer> ]"
|
||||
silent! vunmap <buffer> ]"
|
||||
silent! xunmap <buffer> ]"
|
||||
silent! nunmap <buffer> ["
|
||||
silent! vunmap <buffer> ["
|
||||
silent! xunmap <buffer> ["
|
||||
endif
|
||||
unlet! b:match_ignorecase b:match_words b:match_skip b:did_add_maps
|
||||
endfunc
|
||||
@@ -48,7 +51,53 @@ setlocal fo-=t fo+=croql
|
||||
setlocal isk+=#
|
||||
|
||||
" Use :help to lookup the keyword under the cursor with K.
|
||||
setlocal keywordprg=:help
|
||||
" Distinguish between commands, options and functions.
|
||||
if !exists("*" .. expand("<SID>") .. "Help")
|
||||
function s:Help(topic) abort
|
||||
let topic = a:topic
|
||||
|
||||
if get(g:, 'syntax_on', 0)
|
||||
let syn = synIDattr(synID(line('.'), col('.'), 1), 'name')
|
||||
if syn ==# 'vimFuncName'
|
||||
return topic.'()'
|
||||
elseif syn ==# 'vimOption'
|
||||
return "'".topic."'"
|
||||
elseif syn ==# 'vimUserAttrbKey'
|
||||
return ':command-'.topic
|
||||
elseif syn =~# 'vimCommand'
|
||||
return ':'.topic
|
||||
endif
|
||||
endif
|
||||
|
||||
let col = col('.') - 1
|
||||
while col && getline('.')[col] =~# '\k'
|
||||
let col -= 1
|
||||
endwhile
|
||||
let pre = col == 0 ? '' : getline('.')[0 : col]
|
||||
|
||||
let col = col('.') - 1
|
||||
while col && getline('.')[col] =~# '\k'
|
||||
let col += 1
|
||||
endwhile
|
||||
let post = getline('.')[col : -1]
|
||||
|
||||
if pre =~# '^\s*:\=$'
|
||||
return ':'.topic
|
||||
elseif pre =~# '\<v:$'
|
||||
return 'v:'.topic
|
||||
elseif pre =~# '<$'
|
||||
return '<'.topic.'>'
|
||||
elseif pre =~# '\\$'
|
||||
return '/\'.topic
|
||||
elseif topic ==# 'v' && post =~# ':\w\+'
|
||||
return 'v'.matchstr(post, ':\w\+')
|
||||
else
|
||||
return topic
|
||||
endif
|
||||
endfunction
|
||||
endif
|
||||
command! -buffer -nargs=1 VimKeywordPrg :exe 'help' s:Help(<q-args>)
|
||||
setlocal keywordprg=:VimKeywordPrg
|
||||
|
||||
" Comments starts with # in Vim9 script. We have to guess which one to use.
|
||||
if "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
|
||||
@@ -77,19 +126,19 @@ if !exists("no_plugin_maps") && !exists("no_vim_maps")
|
||||
|
||||
" Move around functions.
|
||||
nnoremap <silent><buffer> [[ m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
xnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
nnoremap <silent><buffer> ]] m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
xnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
nnoremap <silent><buffer> [] m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
xnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
|
||||
nnoremap <silent><buffer> ][ m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
xnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
|
||||
|
||||
" Move around comments
|
||||
nnoremap <silent><buffer> ]" :call search('\%(^\s*".*\n\)\@<!\%(^\s*"\)', "W")<CR>
|
||||
vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\@<!\%(^\s*"\)', "W")<CR>
|
||||
xnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\@<!\%(^\s*"\)', "W")<CR>
|
||||
nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
|
||||
vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
|
||||
xnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
|
||||
endif
|
||||
|
||||
" Let the matchit plugin know what items can be matched.
|
||||
@@ -101,15 +150,15 @@ if exists("loaded_matchit")
|
||||
" func name
|
||||
" require a parenthesis following, then there can be an "endfunc".
|
||||
let b:match_words =
|
||||
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+\s*(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' ..
|
||||
\ '\<\%(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\<brea\%[k]\>:\%(\%(^\||\)\s*\)\@<=\<con\%[tinue]\>:\%(\%(^\||\)\s*\)\@<=\<end\%(w\%[hile]\|fo\%[r]\)\>,' ..
|
||||
\ '\<if\>:\%(\%(^\||\)\s*\)\@<=\<el\%[seif]\>:\%(\%(^\||\)\s*\)\@<=\<en\%[dif]\>,' ..
|
||||
\ '{:},' ..
|
||||
\ '\<try\>:\%(\%(^\||\)\s*\)\@<=\<cat\%[ch]\>:\%(\%(^\||\)\s*\)\@<=\<fina\%[lly]\>:\%(\%(^\||\)\s*\)\@<=\<endt\%[ry]\>,' ..
|
||||
\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' ..
|
||||
\ '\<class\>:\<endclass\>,' ..
|
||||
\ '\<interface\>:\<endinterface\>,' ..
|
||||
\ '\<enum\>:\<endenum\>'
|
||||
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+\s*(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' ..
|
||||
\ '\<\%(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\<brea\%[k]\>:\%(\%(^\||\)\s*\)\@<=\<con\%[tinue]\>:\%(\%(^\||\)\s*\)\@<=\<end\%(w\%[hile]\|fo\%[r]\)\>,' ..
|
||||
\ '\<if\>:\%(\%(^\||\)\s*\)\@<=\<el\%[seif]\>:\%(\%(^\||\)\s*\)\@<=\<en\%[dif]\>,' ..
|
||||
\ '{:},' ..
|
||||
\ '\<try\>:\%(\%(^\||\)\s*\)\@<=\<cat\%[ch]\>:\%(\%(^\||\)\s*\)\@<=\<fina\%[lly]\>:\%(\%(^\||\)\s*\)\@<=\<endt\%[ry]\>,' ..
|
||||
\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' ..
|
||||
\ '\<class\>:\<endclass\>,' ..
|
||||
\ '\<interface\>:\<endinterface\>,' ..
|
||||
\ '\<enum\>:\<endenum\>'
|
||||
|
||||
" Ignore syntax region commands and settings, any 'en*' would clobber
|
||||
" if-endif.
|
||||
@@ -117,7 +166,7 @@ if exists("loaded_matchit")
|
||||
" - au! FileType javascript syntax region foldBraces start=/{/ end=/}/ …
|
||||
" Also ignore here-doc and dictionary keys (vimVar).
|
||||
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
|
||||
\ =~? "comment\\|string\\|vimSynReg\\|vimSet\\|vimLetHereDoc\\|vimVar"'
|
||||
\ =~? "comment\\|string\\|vimSynReg\\|vimSet\\|vimLetHereDoc\\|vimVar"'
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
@@ -125,3 +174,5 @@ unlet s:cpo_save
|
||||
|
||||
" removed this, because 'cpoptions' is a global option.
|
||||
" setlocal cpo+=M " makes \%( match \)
|
||||
"
|
||||
" vim: sw=2 et
|
||||
|
||||
+10
-1
@@ -10,7 +10,16 @@ VIMRUNTIME = ..
|
||||
# If a test succeeds a testdir/*.out file will be written.
|
||||
# If a test fails a testdir/*.fail file will be written.
|
||||
test:
|
||||
VIMRUNTIME=$(VIMRUNTIME) $(VIMPROG) --clean --not-a-term -u testdir/runtest.vim
|
||||
VIMRUNTIME=$(VIMRUNTIME) $(VIMPROG) --clean --not-a-term -u testdir/runtest.vim || \
|
||||
{ \
|
||||
retval=$$?; \
|
||||
for fail in testdir/*.fail; do \
|
||||
[ -f "$$fail" ] || continue; \
|
||||
echo "$$fail:"; \
|
||||
cat "$$fail"; \
|
||||
done; \
|
||||
exit $$retval; \
|
||||
}
|
||||
@echo "INDENT TESTS: DONE"
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
" Vim indent file
|
||||
" Language: m17n database
|
||||
" Maintainer: David Mandelberg <david@mandelberg.org>
|
||||
" Last Change: 2025 Feb 21
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal autoindent
|
||||
setlocal nosmartindent
|
||||
|
||||
let b:undo_indent = "setlocal autoindent< smartindent<"
|
||||
+40
-17
@@ -7,6 +7,7 @@
|
||||
" License: Vim (see :h license)
|
||||
" Repository: https://github.com/chrisbra/vim-sh-indent
|
||||
" Changelog:
|
||||
" 20250318 - Detect local arrays in functions
|
||||
" 20241411 - Detect dash character in function keyword for
|
||||
" bash mode (issue #16049)
|
||||
" 20190726 - Correctly skip if keywords in syntax comments
|
||||
@@ -73,6 +74,8 @@ function! s:indent_value(option)
|
||||
endfunction
|
||||
|
||||
function! GetShIndent()
|
||||
let mode = mode()
|
||||
|
||||
let curline = getline(v:lnum)
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
if lnum == 0
|
||||
@@ -86,8 +89,11 @@ function! GetShIndent()
|
||||
|
||||
" Check contents of previous lines
|
||||
" should not apply to e.g. commented lines
|
||||
if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' ||
|
||||
\ (&ft is# 'zsh' && line =~ '^\s*\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>')
|
||||
|
||||
if s:start_block(line)
|
||||
let ind += s:indent_value('default')
|
||||
elseif line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>\($\|\s\)' ||
|
||||
\ (&ft is# 'zsh' && line =~ '^\s*\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>\($\|\s\)')
|
||||
if !s:is_end_expression(line)
|
||||
let ind += s:indent_value('default')
|
||||
endif
|
||||
@@ -111,7 +117,7 @@ function! GetShIndent()
|
||||
let ind += s:indent_value('continuation-line')
|
||||
endif
|
||||
elseif s:end_block(line) && !s:start_block(line)
|
||||
let ind = indent(lnum)
|
||||
let ind -= s:indent_value('default')
|
||||
elseif pnum != 0 &&
|
||||
\ s:is_continuation_line(pline) &&
|
||||
\ !s:end_block(curline) &&
|
||||
@@ -122,7 +128,7 @@ function! GetShIndent()
|
||||
while !s:is_empty(getline(i)) && i > pnum
|
||||
let i -= 1
|
||||
endw
|
||||
if i == pnum
|
||||
if i == pnum && (s:is_continuation_line(line) || pline =~ '{\s*\(#.*\)\=$')
|
||||
let ind += ind2
|
||||
else
|
||||
let ind = ind2
|
||||
@@ -136,7 +142,11 @@ function! GetShIndent()
|
||||
" TODO: should we do the same for other "end" lines?
|
||||
if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$'
|
||||
let ind = indent(v:lnum)
|
||||
let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
|
||||
" in insert mode, try to place the cursor after the fi statement
|
||||
let endp = '\<fi\>' .. (mode ==? 'i' ? '\zs' : '')
|
||||
let startp = '^\s*\<if\>'
|
||||
let previous_line = searchpair(startp, '', endp , 'bnW',
|
||||
\ 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote\\|option"')
|
||||
if previous_line > 0
|
||||
let ind = indent(previous_line)
|
||||
endif
|
||||
@@ -167,7 +177,13 @@ function! GetShIndent()
|
||||
elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1
|
||||
return indent(v:lnum)
|
||||
elseif s:is_comment(line) && s:is_empty(getline(v:lnum-1))
|
||||
return indent(v:lnum)
|
||||
if s:is_in_block(v:lnum)
|
||||
" return indent of line in same block
|
||||
return indent(lnum)
|
||||
else
|
||||
" use indent of current line
|
||||
return indent(v:lnum)
|
||||
endif
|
||||
endif
|
||||
|
||||
return ind > 0 ? ind : 0
|
||||
@@ -203,7 +219,18 @@ function! s:is_function_definition(line)
|
||||
endfunction
|
||||
|
||||
function! s:is_array(line)
|
||||
return a:line =~ '^\s*\<\k\+\>=('
|
||||
return a:line =~ '^\s*\(\(declare\|typeset\|local\)\s\+\(-[Aalrtu]\+\s\+\)\?\)\?\<\k\+\>=('
|
||||
endfunction
|
||||
|
||||
function! s:is_in_block(line)
|
||||
" checks whether a:line is whithin a
|
||||
" block e.g. a shell function
|
||||
" foo() {
|
||||
" ..
|
||||
" }
|
||||
let prevline = searchpair('{', '', '}', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
|
||||
let nextline = searchpair('{', '', '}', 'nW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
|
||||
return a:line > prevline && a:line < nextline
|
||||
endfunction
|
||||
|
||||
function! s:is_case_label(line, pnum)
|
||||
@@ -280,15 +307,7 @@ function! s:end_block(line)
|
||||
endfunction
|
||||
|
||||
function! s:start_block(line)
|
||||
return a:line =~ '{\s*\(#.*\)\?$'
|
||||
endfunction
|
||||
|
||||
function! s:find_start_block(lnum)
|
||||
let i = a:lnum
|
||||
while i > 1 && !s:start_block(getline(i))
|
||||
let i -= 1
|
||||
endwhile
|
||||
return i
|
||||
return a:line =~ '^[^#]*[{(]\s*\(#.*\)\?$'
|
||||
endfunction
|
||||
|
||||
function! s:is_comment(line)
|
||||
@@ -300,7 +319,11 @@ function! s:is_end_expression(line)
|
||||
endfunction
|
||||
|
||||
function! s:is_bash()
|
||||
return get(g:, 'is_bash', 0) || get(b:, 'is_bash', 0)
|
||||
if &ft is# 'bash' || getline(1) is# '#!/bin/bash'
|
||||
return v:true
|
||||
else
|
||||
return get(g:, 'is_bash', 0) || get(b:, 'is_bash', 0)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
" Vim indent file
|
||||
" Language: SPA JSON
|
||||
" Maintainer: David Mandelberg <david@mandelberg.org>
|
||||
" Last Change: 2025 Mar 22
|
||||
|
||||
runtime! indent/json.vim
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
" Maintainer: Artem Chuprina <ran@ran.pp.ru>
|
||||
" Last Changed: 2001 Jun 23
|
||||
" 2025 Mar 17 by The Vim Project (added /, #16912)
|
||||
|
||||
" All characters are given literally, conversion to another encoding (e.g.,
|
||||
" UTF-8) should work.
|
||||
@@ -85,3 +86,4 @@ $ ;
|
||||
& ?
|
||||
/ .
|
||||
? ,
|
||||
\| /
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
" Vim Keymap file for ukrainian characters MS Windows enhanced variant.
|
||||
" This file is based on russian-jcukenwin.vim by Artem Chuprina <ran@ran.pp.ru>.
|
||||
" Keymap has been originally created by Ivan Korneliuk <vansha@gmail.com>.
|
||||
|
||||
" Maintainer: Vladyslav Rehan <rehanvladyslav@gmail.com>
|
||||
" Last Changed: 2025 feb 13
|
||||
|
||||
scriptencoding utf-8
|
||||
|
||||
let b:keymap_name = "uk"
|
||||
|
||||
loadkeymap
|
||||
~ ’ RIGHT SINGLE QUOTATION MARK
|
||||
` ' APOSTROPHE
|
||||
F А CYRILLIC CAPITAL LETTER A
|
||||
< Б CYRILLIC CAPITAL LETTER BE
|
||||
D В CYRILLIC CAPITAL LETTER VE
|
||||
U Г CYRILLIC CAPITAL LETTER GHE
|
||||
| Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
L Д CYRILLIC CAPITAL LETTER DE
|
||||
T Е CYRILLIC CAPITAL LETTER IE
|
||||
: Ж CYRILLIC CAPITAL LETTER ZHE
|
||||
P З CYRILLIC CAPITAL LETTER ZE
|
||||
B И CYRILLIC CAPITAL LETTER I
|
||||
S І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
} Ї CYRILLIC CAPITAL LETTER YI
|
||||
Q Й CYRILLIC CAPITAL LETTER SHORT I
|
||||
R К CYRILLIC CAPITAL LETTER KA
|
||||
K Л CYRILLIC CAPITAL LETTER EL
|
||||
V М CYRILLIC CAPITAL LETTER EM
|
||||
Y Н CYRILLIC CAPITAL LETTER EN
|
||||
J О CYRILLIC CAPITAL LETTER O
|
||||
G П CYRILLIC CAPITAL LETTER PE
|
||||
H Р CYRILLIC CAPITAL LETTER ER
|
||||
C С CYRILLIC CAPITAL LETTER ES
|
||||
N Т CYRILLIC CAPITAL LETTER TE
|
||||
E У CYRILLIC CAPITAL LETTER U
|
||||
A Ф CYRILLIC CAPITAL LETTER EF
|
||||
{ Х CYRILLIC CAPITAL LETTER HA
|
||||
W Ц CYRILLIC CAPITAL LETTER TSE
|
||||
X Ч CYRILLIC CAPITAL LETTER CHE
|
||||
I Ш CYRILLIC CAPITAL LETTER SHA
|
||||
O Щ CYRILLIC CAPITAL LETTER SHCHA
|
||||
M Ь CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
\" Є CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
> Ю CYRILLIC CAPITAL LETTER YU
|
||||
Z Я CYRILLIC CAPITAL LETTER YA
|
||||
f а CYRILLIC SMALL LETTER A
|
||||
, б CYRILLIC SMALL LETTER BE
|
||||
d в CYRILLIC SMALL LETTER VE
|
||||
u г CYRILLIC SMALL LETTER GHE
|
||||
\\ ґ CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
l д CYRILLIC SMALL LETTER DE
|
||||
t е CYRILLIC SMALL LETTER IE
|
||||
; ж CYRILLIC SMALL LETTER ZHE
|
||||
p з CYRILLIC SMALL LETTER ZE
|
||||
b и CYRILLIC SMALL LETTER I
|
||||
s і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
] ї CYRILLIC SMALL LETTER YI
|
||||
q й CYRILLIC SMALL LETTER SHORT I
|
||||
r к CYRILLIC SMALL LETTER KA
|
||||
k л CYRILLIC SMALL LETTER EL
|
||||
v м CYRILLIC SMALL LETTER EM
|
||||
y н CYRILLIC SMALL LETTER EN
|
||||
j о CYRILLIC SMALL LETTER O
|
||||
g п CYRILLIC SMALL LETTER PE
|
||||
h р CYRILLIC SMALL LETTER ER
|
||||
c с CYRILLIC SMALL LETTER ES
|
||||
n т CYRILLIC SMALL LETTER TE
|
||||
e у CYRILLIC SMALL LETTER U
|
||||
a ф CYRILLIC SMALL LETTER EF
|
||||
[ х CYRILLIC SMALL LETTER HA
|
||||
w ц CYRILLIC SMALL LETTER TSE
|
||||
x ч CYRILLIC SMALL LETTER CHE
|
||||
i ш CYRILLIC SMALL LETTER SHA
|
||||
o щ CYRILLIC SMALL LETTER SHCHA
|
||||
m ь CYRILLIC SMALL LETTER SOFT SIGN
|
||||
' є CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
. ю CYRILLIC SMALL LETTER YU
|
||||
z я CYRILLIC SMALL LETTER YA
|
||||
@ " QUOTATION MARK
|
||||
# № NUMERO SIGN
|
||||
$ ; SEMICOLON
|
||||
^ : COLON
|
||||
& ? QUESTION MARK
|
||||
/ . FULL STOP
|
||||
? , COMMA
|
||||
+136
-105
@@ -1,8 +1,6 @@
|
||||
" Menu Translations: Italian / Italiano
|
||||
" Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||
" Vlad Sandrini <vlad.gently@gmail.com>
|
||||
" Luciano Montanaro <mikelima@cirulla.net>
|
||||
" Last Change: 2023 Aug 22
|
||||
" Last Change: 2025 Mar 13
|
||||
" Original translations
|
||||
|
||||
" Quit when menu translations have already been done.
|
||||
@@ -10,7 +8,7 @@ if exists("did_menu_trans")
|
||||
finish
|
||||
endif
|
||||
let did_menu_trans = 1
|
||||
let s:keepcpo= &cpo
|
||||
let s:cpo_save= &cpo
|
||||
set cpo&vim
|
||||
|
||||
scriptencoding iso-8859-1
|
||||
@@ -24,7 +22,7 @@ menut &How-To\ Links Co&Me\.\.\.
|
||||
menut &Find\.\.\. &Cerca\.\.\.
|
||||
menut &Credits Cr&Editi
|
||||
menut Co&pying C&Opie
|
||||
menut &Sponsor/Register &Sponsor/Registrazione
|
||||
menut &Sponsor/Register &Sponsor/Registrazione
|
||||
menut O&rphans O&Rfani
|
||||
menut &Version &Versione
|
||||
menut &About &Intro
|
||||
@@ -41,7 +39,7 @@ menut &New<Tab>:enew &Nuovo<Tab>:enew
|
||||
menut &Close<Tab>:close &Chiudi<Tab>:close
|
||||
menut &Save<Tab>:w &Salva<Tab>:w
|
||||
menut Save\ &As\.\.\.<Tab>:sav Salva\ &Con\ nome\.\.\.<Tab>:sav
|
||||
menut Split\ &Diff\ with\.\.\. &Differenza\ con\.\.\.
|
||||
menut Split\ &Diff\ With\.\.\. &Differenza\ con\.\.\.
|
||||
menut Split\ Patched\ &By\.\.\. Patc&H\ da\.\.\.
|
||||
menut &Print S&tampa
|
||||
menut Sa&ve-Exit<Tab>:wqa Sa&Lva\ ed\ esci<Tab>:wqa
|
||||
@@ -59,12 +57,12 @@ menut &Paste<Tab>"+gP &Incolla<Tab>"+gP
|
||||
menut Put\ &Before<Tab>[p &Metti\ davanti<Tab>[p
|
||||
menut Put\ &After<Tab>]p M&Etti\ dietro<Tab>]p
|
||||
menut &Delete<Tab>x Cance&Lla<Tab>x
|
||||
menut &Select\ all<Tab>ggVG Seleziona\ &Tutto<Tab>ggVG
|
||||
menut &Select\ All<Tab>ggVG Seleziona\ &Tutto<Tab>ggVG
|
||||
menut &Find\.\.\. &Cerca\.\.\.
|
||||
menut &Find\.\.\.<Tab>/ &Cerca\.\.\.<Tab>/
|
||||
menut &Find<Tab>/ &Cerca<Tab>/
|
||||
menut Find\ and\ Rep&lace\.\.\. &Sostituisci\.\.\.
|
||||
menut Find\ and\ Rep&lace\.\.\.<Tab>:%s &Sostituisci\.\.\.<Tab>:%s
|
||||
menut Find\ and\ Rep&lace\.\.\.<Tab>:s &Sostituisci\.\.\.<Tab>:s
|
||||
menut Find\ and\ Rep&lace<Tab>:%s &Sostituisci<Tab>:%s
|
||||
menut Find\ and\ Rep&lace<Tab>:s &Sostituisci<Tab>:s
|
||||
menut Settings\ &Window &Finestra\ Impostazioni
|
||||
menut Startup\ &Settings Impostazioni\ di\ &Avvio
|
||||
menut &Global\ Settings Impostazioni\ &Globali
|
||||
@@ -75,12 +73,20 @@ menut Toggle\ Pattern\ &Highlight<Tab>:set\ hls! &Evidenzia\ ricerche\ S
|
||||
menut Toggle\ &Ignoring\ Case<Tab>:set\ ic! &Ignora\ maiusc\.-minusc\.\ Sì/No<Tab>:set\ ic!
|
||||
menut Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! Indica\ &Corrispondenze\ Sì/No<Tab>:set\ sm!
|
||||
|
||||
menut &Context\ lines &Linee\ di\ contesto
|
||||
menut &Context\ Lines &Linee\ di\ contesto
|
||||
"menut &Context\ Lines.\ 1\ &Linee\ di\ contesto.\ 1\
|
||||
"menut &Context\ Lines.\ 2\ &Linee\ di\ contesto.\ 2\
|
||||
"menut &Context\ Lines.\ 3\ &Linee\ di\ contesto.\ 3\
|
||||
"menut &Context\ Lines.\ 4\ &Linee\ di\ contesto.\ 4\
|
||||
"menut &Context\ Lines.\ 5\ &Linee\ di\ contesto.\ 5\
|
||||
"menut &Context\ Lines.\ 7\ &Linee\ di\ contesto.\ 7\
|
||||
"menut &Context\ Lines.\ 10\ &Linee\ di\ contesto.\ 10\
|
||||
"menut &Context\ Lines.\ 100\ &Linee\ di\ contesto.\ 100\
|
||||
|
||||
menut &Virtual\ Edit &Edit\ virtuale
|
||||
menut Never Mai
|
||||
menut Block\ Selection Seleziona\ Blocco
|
||||
menut Insert\ mode Modo\ Insert
|
||||
menut Insert\ Mode Modo\ Insert
|
||||
menut Block\ and\ Insert Selezione\ Blocco\ e\ Inserimento
|
||||
menut Always Sempre
|
||||
|
||||
@@ -109,22 +115,13 @@ if has("toolbar")
|
||||
tmenu ToolBar.Cut Taglia
|
||||
tmenu ToolBar.Copy Copia
|
||||
tmenu ToolBar.Paste Incolla
|
||||
tmenu ToolBar.Find Trova...
|
||||
tmenu ToolBar.FindNext Trova seguente
|
||||
tmenu ToolBar.FindPrev Trova precedente
|
||||
tmenu ToolBar.Replace Sostituisci
|
||||
if 0 " disabled; These are in the Windows menu
|
||||
tmenu ToolBar.New Nuovo
|
||||
tmenu ToolBar.WinSplit Dividi
|
||||
tmenu ToolBar.WinMax Massimizza
|
||||
tmenu ToolBar.WinMin Minimizza
|
||||
tmenu ToolBar.WinClose Chiudi
|
||||
endif
|
||||
tmenu ToolBar.LoadSesn Carica sessione
|
||||
tmenu ToolBar.SaveSesn Salva sessione
|
||||
tmenu ToolBar.RunScript Esegui script
|
||||
tmenu ToolBar.Make Esegui make
|
||||
tmenu ToolBar.Shell Esegui shell
|
||||
tmenu ToolBar.RunCtags Esegui ctags
|
||||
tmenu ToolBar.TagJump Salta alla tag
|
||||
tmenu ToolBar.Help Aiuto
|
||||
@@ -143,24 +140,23 @@ menut Toggle\ Line\ &Numbering<Tab>:set\ nu! &Numerazione\ S
|
||||
menut Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! Numerazione\ relati&Va\ Sì/No<Tab>:set\ rnu!
|
||||
menut Toggle\ &List\ Mode<Tab>:set\ list! Modo\ &List\ Sì/No<Tab>:set\ list!
|
||||
menut Toggle\ Line\ &Wrapping<Tab>:set\ wrap! Linee\ &Continuate\ Sì/No<Tab>:set\ wrap!
|
||||
menut Toggle\ W&rapping\ at\ word<Tab>:set\ lbr! A\ capo\ alla\ &Parola\ Sì/No<Tab>:set\ lbr!
|
||||
menut Toggle\ Tab\ &expanding<Tab>:set\ et! &Espandi\ Tabulazione\ Sì/No<Tab>:set\ et!
|
||||
menut Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! A\ capo\ alla\ &Parola\ Sì/No<Tab>:set\ lbr!
|
||||
menut Toggle\ Tab\ &Expanding<Tab>:set\ et! &Espandi\ Tabulazione\ Sì/No<Tab>:set\ et!
|
||||
menut Toggle\ &Auto\ Indenting<Tab>:set\ ai! Indentazione\ &Automatica\ Sì/No<Tab>:set\ ai!
|
||||
menut Toggle\ &C-Style\ Indenting<Tab>:set\ cin! Indentazione\ stile\ &C\ Sì/No<Tab>:set\ cin!
|
||||
menut &Shiftwidth &Spazi\ rientranza
|
||||
"menut &Shiftwidth.2<Tab>:set\ sw=2\ sw?<CR> &Spazi\ rientranza.2<Tab>:set\ sw=2\ sw?<CR>
|
||||
"menut &Shiftwidth.3<Tab>:set\ sw=3\ sw?<CR> &Spazi\ rientranza.3<Tab>:set\ sw=3\ sw?<CR>
|
||||
"menut &Shiftwidth.4<Tab>:set\ sw=4\ sw?<CR> &Spazi\ rientranza.4<Tab>:set\ sw=4\ sw?<CR>
|
||||
"menut &Shiftwidth.5<Tab>:set\ sw=5\ sw?<CR> &Spazi\ rientranza.5<Tab>:set\ sw=5\ sw?<CR>
|
||||
"menut &Shiftwidth.6<Tab>:set\ sw=6\ sw?<CR> &Spazi\ rientranza.6<Tab>:set\ sw=6\ sw?<CR>
|
||||
"menut &Shiftwidth.8<Tab>:set\ sw=8\ sw?<CR> &Spazi\ rientranza.8<Tab>:set\ sw=8\ sw?<CR>
|
||||
"menut &Shiftwidth.3 &Spazi\ rientranza.3
|
||||
"menut &Shiftwidth.4 &Spazi\ rientranza.4
|
||||
"menut &Shiftwidth.5 &Spazi\ rientranza.5
|
||||
"menut &Shiftwidth.6 &Spazi\ rientranza.6
|
||||
"menut &Shiftwidth.8 &Spazi\ rientranza.8
|
||||
menut Soft\ &Tabstop &Tabulazione\ software
|
||||
"menut Soft\ &Tabstop.2<Tab>:set\ sts=2\ sts? &Tabulazione\ software.2<Tab>:set\ sts=2\ sts?
|
||||
"menut Soft\ &Tabstop.3<Tab>:set\ sts=3\ sts? &Tabulazione\ software.3<Tab>:set\ sts=3\ sts?
|
||||
"menut Soft\ &Tabstop.4<Tab>:set\ sts=4\ sts? &Tabulazione\ software.4<Tab>:set\ sts=4\ sts?
|
||||
"menut Soft\ &Tabstop.5<Tab>:set\ sts=5\ sts? &Tabulazione\ software.5<Tab>:set\ sts=5\ sts?
|
||||
"menut Soft\ &Tabstop.6<Tab>:set\ sts=6\ sts? &Tabulazione\ software.6<Tab>:set\ sts=6\ sts?
|
||||
"menut Soft\ &Tabstop.8<Tab>:set\ sts=8\ sts? &Tabulazione\ software.8<Tab>:set\ sts=8\ sts?
|
||||
"menut Soft\ &Tabstop.2 &Tabulazione\ software.2
|
||||
"menut Soft\ &Tabstop.3 &Tabulazione\ software.3
|
||||
"menut Soft\ &Tabstop.4 &Tabulazione\ software.4
|
||||
"menut Soft\ &Tabstop.5 &Tabulazione\ software.5
|
||||
"menut Soft\ &Tabstop.6 &Tabulazione\ software.6
|
||||
"menut Soft\ &Tabstop.8 &Tabulazione\ software.8
|
||||
menut Te&xt\ Width\.\.\. Lunghe&Zza\ riga\.\.\.
|
||||
menut &File\ Format\.\.\. Formato\ &File\.\.\.
|
||||
|
||||
@@ -173,37 +169,61 @@ menut C&olor\ Scheme Schema\ c&Olori
|
||||
|
||||
menut blue blù
|
||||
menut darkblue blù\ scuro
|
||||
menut default predefinito
|
||||
menut delek delek
|
||||
menut desert deserto
|
||||
menut elflord signore\ degli\ elfi
|
||||
menut evening sera
|
||||
menut habamax habamax
|
||||
menut industry industria
|
||||
menut koehler koehler
|
||||
menut lunaperche luna\ perché
|
||||
menut morning mattino
|
||||
menut murphy murphy
|
||||
menut pablo pablo
|
||||
menut peachpuff pesca
|
||||
menut quiet quieto
|
||||
menut retrobox retrobox
|
||||
menut ron ron
|
||||
menut shine brillante
|
||||
menut sorbet sorbetto
|
||||
menut slate ardesia
|
||||
menut torte torta
|
||||
menut unokai unokai
|
||||
menut wildcharm fascino\ selvaggio
|
||||
menut zaibatsu zaibatsu
|
||||
menut zellner zellner
|
||||
menut BLUE BLÙ
|
||||
menut DARKBLUE BLÙ\ SCURO
|
||||
menut DEFAULT DEFAULT
|
||||
menut DELEK DELEK
|
||||
menut DESERT DESERTO
|
||||
menut ELFLORD SIGNORE\ DEGLI\ ELFI
|
||||
menut EVENING SERA
|
||||
menut HABAMAX HABAMAX
|
||||
menut INDUSTRY INDUSTRIA
|
||||
menut KOEHLER KOEHLER
|
||||
menut LUNAPERCHE LUNA\ PERCHÉ
|
||||
menut MORNING MATTINO
|
||||
menut MURPHY MURPHY
|
||||
menut PABLO PABLO
|
||||
menut PEACHPUFF PESCA
|
||||
menut QUIET QUIETO
|
||||
menut RETROBOX RETROBOX
|
||||
menut RON RON
|
||||
menut SHINE BRILLANTE
|
||||
menut SORBET SORBETTO
|
||||
menut SLATE ARDESIA
|
||||
menut TORTE TORTA
|
||||
menut UNOKAI UNOKAI
|
||||
menut WILDCHARM FASCINO\ SELVAGGIO
|
||||
menut ZAIBATSU ZAIBATSU
|
||||
menut ZELLNER ZELLNER
|
||||
|
||||
menut Show\ &Keymaps\ in\ Menu Mostra\ Ma&ppe\ tastiera\ in\ Menù
|
||||
menut &Keymap Ma&ppa\ tastiera
|
||||
|
||||
menut None nessuna
|
||||
menut None Nessuna
|
||||
menut accents accenti
|
||||
menut arabic arabo
|
||||
menut armenian-eastern armeno-orientale
|
||||
@@ -217,10 +237,11 @@ menut czech ceco
|
||||
menut dvorak tastiera-dvorak
|
||||
menut esperanto esperanto
|
||||
menut french-azerty francese-azerty
|
||||
menut georgian-qwerty georgiano-qwerty
|
||||
menut german-qwertz tedesco-qwertz
|
||||
menut greek greco
|
||||
menut hebrew ebraico
|
||||
menut hebrewp ebraicop
|
||||
menut hebrewp ebraico-fonetico
|
||||
menut kana kana
|
||||
menut kazakh-jcuken kazako-jcuken
|
||||
menut korean coreano
|
||||
@@ -251,8 +272,9 @@ menut thaana thaana
|
||||
menut thaana-phonetic thaana-fonetico
|
||||
menut turkish-f turco-f
|
||||
menut turkish-q turco-q
|
||||
menut ukrainian-dvorak ukraino-dvorak
|
||||
menut ukrainian-jcuken ukraino-jcuken
|
||||
menut ukrainian-dvorak ucraino-dvorak
|
||||
menut ukrainian-jcuken ucraino-jcuken
|
||||
menut ukrainian-enhanced ucraino-migliorato
|
||||
menut vietnamese-telex vietnamita-telex
|
||||
menut vietnamese-viqr vietnamita-viqr
|
||||
menut vietnamese-vni vietnamita-vni
|
||||
@@ -269,10 +291,11 @@ menut CZECH CECO
|
||||
menut DVORAK TASTIERA-DVORAK
|
||||
menut ESPERANTO ESPERANTO
|
||||
menut FRENCH-AZERTY FRANCESE-AZERTY
|
||||
menut GEORGIAN-QWERTY GEORGIANO-QWERTY
|
||||
menut GERMAN-QWERTZ TEDESCO-QWERTZ
|
||||
menut GREEK GRECO
|
||||
menut HEBREW EBRAICO
|
||||
menut HEBREWP EBRAICOP
|
||||
menut HEBREWP EBRAICO-FONETICO
|
||||
menut KANA KANA
|
||||
menut KAZAKH-JCUKEN KAZAKO-JCUKEN
|
||||
menut KOREAN COREANO
|
||||
@@ -303,8 +326,9 @@ menut THAANA THAANA
|
||||
menut THAANA-PHONETIC THAANA-FONETICO
|
||||
menut TURKISH-F TURCO-F
|
||||
menut TURKISH-Q TURCO-Q
|
||||
menut UKRAINIAN-DVORAK UKRAINO-DVORAK
|
||||
menut UKRAINIAN-JCUKEN UKRAINO-JCUKEN
|
||||
menut UKRAINIAN-DVORAK UCRAINO-DVORAK
|
||||
menut UKRAINIAN-JCUKEN UCRAINO-JCUKEN
|
||||
menut UKRAINIAN-ENHANCED UCRAINO-MIGLIORATO
|
||||
menut VIETNAMESE-TELEX VIETNAMITA-TELEX
|
||||
menut VIETNAMESE-VIQR VIETNAMITA-VIQR
|
||||
menut VIETNAMESE-VNI VIETNAMITA-VNI
|
||||
@@ -314,37 +338,36 @@ menut Select\ Fo&nt\.\.\. Scegli\ &Font\.\.\.
|
||||
" Menù strumenti programmazione
|
||||
menut &Tools &Strumenti
|
||||
|
||||
menut &Jump\ to\ this\ tag<Tab>g^] &Vai\ a\ questa\ tag<Tab>g^]
|
||||
menut Jump\ &back<Tab>^T Torna\ &Indietro<Tab>^T
|
||||
menut &Jump\ to\ This\ Tag<Tab>g^] &Vai\ a\ questa\ tag<Tab>g^]
|
||||
menut Jump\ &Back<Tab>^T Torna\ &Indietro<Tab>^T
|
||||
menut Build\ &Tags\ File Costruisci\ file\ &Tag\
|
||||
" Menù ortografia / Spelling
|
||||
menut &Spelling &Ortografia
|
||||
|
||||
menut &Spell\ Check\ On Attiva\ &Controllo\ ortografico
|
||||
menut Spell\ Check\ &Off &Disattiva\ controllo\ ortografico
|
||||
menut To\ &Next\ error<Tab>]s Errore\ &Seguente<tab>]s
|
||||
menut To\ &Previous\ error<Tab>[s Errore\ &Precedente<tab>[s
|
||||
menut To\ &Next\ Error<Tab>]s Errore\ &Seguente<Tab>]s
|
||||
menut To\ &Previous\ Error<Tab>[s Errore\ &Precedente<Tab>[s
|
||||
menut Suggest\ &Corrections<Tab>z= &Suggerimenti<Tab>z=
|
||||
menut &Repeat\ correction<Tab>:spellrepall &Ripeti\ correzione<Tab>:spellrepall
|
||||
menut Set\ language\ to Imposta\ lingua\ a
|
||||
menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en"
|
||||
menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au"
|
||||
menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca"
|
||||
menut Set\ language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb"
|
||||
menut Set\ language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz"
|
||||
menut Set\ language\ to\ "en_us" Imposta\ lingua\ a\ "en_us"
|
||||
menut &Repeat\ Correction<Tab>:spellrepall &Ripeti\ correzione<Tab>:spellrepall
|
||||
menut Set\ Language\ to\ "en" Imposta\ lingua\ a\ "en"
|
||||
menut Set\ Language\ to\ "en_au" Imposta\ lingua\ a\ "en_au"
|
||||
menut Set\ Language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca"
|
||||
menut Set\ Language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb"
|
||||
menut Set\ Language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz"
|
||||
menut Set\ Language\ to\ "en_us" Imposta\ lingua\ a\ "en_us"
|
||||
menut &Find\ More\ Languages &Trova\ altre\ lingue
|
||||
|
||||
" Menù piegature / Fold
|
||||
menut &Folding &Piegature
|
||||
" apri e chiudi piegature
|
||||
menut &Enable/Disable\ folds<Tab>zi Pi&egature\ Sì/No<Tab>zi
|
||||
menut &Enable/Disable\ Folds<Tab>zi Pi&egature\ Sì/No<Tab>zi
|
||||
menut &View\ Cursor\ Line<Tab>zv &Vedi\ linea\ col\ Cursore<Tab>zv
|
||||
menut Vie&w\ Cursor\ Line\ only<Tab>zMzx Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
|
||||
menut C&lose\ More\ folds<Tab>zm C&Hiudi\ più\ piegature<Tab>zm
|
||||
menut &Close\ All\ folds<Tab>zM &Chiudi\ tutte\ le\ piegature<Tab>zM
|
||||
menut O&pen\ More\ folds<Tab>zr A&Pri\ più\ piegature<Tab>zr
|
||||
menut &Open\ All\ folds<Tab>zR &Apri\ tutte\ le\ piegature<Tab>zR
|
||||
menut Vie&w\ Cursor\ Line\ Only<Tab>zMzx Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
|
||||
menut C&lose\ More\ Folds<Tab>zm C&Hiudi\ più\ piegature<Tab>zm
|
||||
menut &Close\ All\ Folds<Tab>zM &Chiudi\ tutte\ le\ piegature<Tab>zM
|
||||
menut O&pen\ More\ Folds<Tab>zr A&Pri\ più\ piegature<Tab>zr
|
||||
menut &Open\ All\ Folds<Tab>zR &Apri\ tutte\ le\ piegature<Tab>zR
|
||||
" metodo piegatura
|
||||
menut Fold\ Met&hod Meto&Do\ piegatura
|
||||
menut M&anual &Manuale
|
||||
@@ -359,7 +382,15 @@ menut Create\ &Fold<Tab>zf Crea\ &Piegatura<Tab>zf
|
||||
menut &Delete\ Fold<Tab>zd &Togli\ piegatura<Tab>zd
|
||||
menut Delete\ &All\ Folds<Tab>zD Togli\ &Tutte\ le\ piegature<Tab>zD
|
||||
" movimenti all'interno delle piegature
|
||||
menut Fold\ col&umn\ width Larghezza\ piegat&Ure\ in\ colonne
|
||||
menut Fold\ Col&umn\ Width Larghezza\ piegat&Ure\ in\ colonne
|
||||
"menut Fold\ Col&umn\ Width.\ &0\ Larghezza\ piegat&Ure\ in\ colonne.\ &0\
|
||||
"menut Fold\ Col&umn\ Width.\ &2\ Larghezza\ piegat&Ure\ in\ colonne.\ &2\
|
||||
"menut Fold\ Col&umn\ Width.\ &3\ Larghezza\ piegat&Ure\ in\ colonne.\ &3\
|
||||
"menut Fold\ Col&umn\ Width.\ &4\ Larghezza\ piegat&Ure\ in\ colonne.\ &4\
|
||||
"menut Fold\ Col&umn\ Width.\ &5\ Larghezza\ piegat&Ure\ in\ colonne.\ &5\
|
||||
"menut Fold\ Col&umn\ Width.\ &6\ Larghezza\ piegat&Ure\ in\ colonne.\ &6\
|
||||
"menut Fold\ Col&umn\ Width.\ &7\ Larghezza\ piegat&Ure\ in\ colonne.\ &7\
|
||||
"menut Fold\ Col&umn\ Width.\ &8\ Larghezza\ piegat&Ure\ in\ colonne.\ &8\
|
||||
|
||||
menut &Diff &Differenza
|
||||
"
|
||||
@@ -383,9 +414,9 @@ menut &Open<Tab>:copen &Apri<Tab>:copen
|
||||
menut &Close<Tab>:cclose &Chiudi<Tab>:cclose
|
||||
|
||||
menut &Convert\ to\ HEX<Tab>:%!xxd &Converti\ a\ esadecimale<Tab>:%!xxd
|
||||
menut Conve&rt\ back<Tab>:%!xxd\ -r Conve&rti\ da\ esadecimale<Tab>:%!xxd\ -r
|
||||
menut Conve&rt\ Back<Tab>:%!xxd\ -r Conve&rti\ da\ esadecimale<Tab>:%!xxd\ -r
|
||||
|
||||
menut Se&T\ Compiler Impo&Sta\ Compilatore
|
||||
menut Se&t\ Compiler Impo&Sta\ Compilatore
|
||||
menut Show\ Compiler\ Se&ttings\ in\ Menu Mostra\ Impos&Tazioni\ Compilatore\ nel\ Menù
|
||||
|
||||
" Buffers / Buffer
|
||||
@@ -396,20 +427,20 @@ menut &Delete &Elimina
|
||||
menut &Alternate &Alternato
|
||||
menut &Next &Successivo
|
||||
menut &Previous &Precedente
|
||||
menut [No\ File] [Nessun\ File]
|
||||
"menut [No\ File] [Nessun\ File]
|
||||
|
||||
" Syntax / Sintassi
|
||||
menut &Syntax &Sintassi
|
||||
|
||||
menut &Show\ File\ Types\ in\ menu Mo&Stra\ tipi\ di\ file\ nel\ menù
|
||||
menut Set\ '&syntax'\ only &S\ Attiva\ solo\ \ 'syntax'
|
||||
menut Set\ '&filetype'\ too &F\ Attiva\ anche\ 'filetype'
|
||||
menut &Show\ File\ Types\ in\ Menu Mo&Stra\ tipi\ di\ file\ nel\ menù
|
||||
menut Set\ '&syntax'\ Only &S\ Attiva\ solo\ \ 'syntax'
|
||||
menut Set\ '&filetype'\ Too &F\ Attiva\ anche\ 'filetype'
|
||||
menut &Off &Disattiva
|
||||
menut &Manual &Manuale
|
||||
menut A&utomatic A&Utomatico
|
||||
menut on/off\ for\ &This\ file Attiva\ Sì/No\ su\ ques&To\ file
|
||||
menut Co&lor\ test Test\ &Colori
|
||||
menut &Highlight\ test Test\ &Evidenziamento
|
||||
menut On/Off\ for\ &This\ File Attiva\ Sì/No\ su\ ques&To\ file
|
||||
menut Co&lor\ Test Test\ &Colori
|
||||
menut &Highlight\ Test Test\ &Evidenziamento
|
||||
menut &Convert\ to\ HTML Converti\ ad\ &HTML
|
||||
|
||||
let g:menutrans_set_lang_to = "Cambia linguaggio a"
|
||||
@@ -432,15 +463,15 @@ menut Move\ &To &Muovi\ verso
|
||||
|
||||
menut &Top<Tab>^WK &Cima<Tab>^WK
|
||||
menut &Bottom<Tab>^WJ &Fondo<Tab>^WJ
|
||||
menut &Left\ side<Tab>^WH Lato\ &Sinistro<Tab>^WH
|
||||
menut &Right\ side<Tab>^WL Lato\ &Destro<Tab>^WL
|
||||
menut &Left\ Side<Tab>^WH Lato\ &Sinistro<Tab>^WH
|
||||
menut &Right\ Side<Tab>^WL Lato\ &Destro<Tab>^WL
|
||||
menut Rotate\ &Up<Tab>^WR Ruota\ verso\ l'&Alto<Tab>^WR
|
||||
menut Rotate\ &Down<Tab>^Wr Ruota\ verso\ il\ &Basso<Tab>^Wr
|
||||
menut &Equal\ Size<Tab>^W= &Uguale\ ampiezza<Tab>^W=
|
||||
menut &Max\ Height<Tab>^W_ A&Ltezza\ massima<Tab>^W_
|
||||
menut M&in\ Height<Tab>^W1_ Al&Tezza\ minima<Tab>^W1_
|
||||
menut Max\ &Width<Tab>^W\| Lar&Ghezza\ massima<Tab>^W\|
|
||||
menut Min\ Widt&h<Tab>^W1\| Larg&hhezza\ minima<Tab>^W1\|
|
||||
menut Min\ Widt&h<Tab>^W1\| Larg&Hezza\ minima<Tab>^W1\|
|
||||
|
||||
" The popup menu
|
||||
menut &Undo &Annulla
|
||||
@@ -457,43 +488,43 @@ menut Select\ &Sentence Seleziona\ &Frase
|
||||
menut Select\ Pa&ragraph Seleziona\ Para&Grafo
|
||||
|
||||
" The GUI Toolbar / Barra Strumenti
|
||||
menut Open Apri
|
||||
menut Save Salva
|
||||
menut SaveAll Salva\ Tutto
|
||||
menut Print Stampa
|
||||
menut Undo Annulla
|
||||
menut Redo Ripristina
|
||||
menut Cut Taglia
|
||||
menut Copy Copia
|
||||
menut Paste Incolla
|
||||
"menut Open Apri
|
||||
"menut Save Salva
|
||||
"menut SaveAll Salva\ Tutto
|
||||
"menut Print Stampa
|
||||
"menut Undo Annulla
|
||||
"menut Redo Ripristina
|
||||
"menut Cut Taglia
|
||||
"menut Copy Copia
|
||||
"menut Paste Incolla
|
||||
" -sep3-
|
||||
menut Find Cerca
|
||||
menut FindNext Cerca\ Successivo
|
||||
menut FindPrev Cerca\ Precedente
|
||||
menut Replace Sostituisci
|
||||
"menut Find Cerca
|
||||
"menut FindNext Cerca\ Successivo
|
||||
"menut FindPrev Cerca\ Precedente
|
||||
"menut Replace Sostituisci
|
||||
" -sep4-
|
||||
menut New Nuova\ finestra
|
||||
menut WinSplit Dividi\ finestra
|
||||
menut WinMax Massima\ ampiezza
|
||||
menut WinMin Minima\ ampiezza
|
||||
menut WinVSplit Dividi\ verticalmente
|
||||
menut WinMaxWidth Massima\ larghezza
|
||||
menut WinMinWidth Minima\ larghezza
|
||||
menut WinClose Chiudi\ finestra
|
||||
menut LoadSesn Carica\ Sessione
|
||||
menut SaveSesn Salva\ Sessione
|
||||
menut RunScript Esegui\ Script
|
||||
menut Make Make
|
||||
menut Shell Shell
|
||||
menut RunCtags Esegui\ Ctags
|
||||
menut TagJump Vai\ a\ Tag
|
||||
menut Help Aiuto
|
||||
menut FindHelp Cerca\ in\ Aiuto
|
||||
"menut New Nuova\ finestra
|
||||
"menut WinSplit Dividi\ finestra
|
||||
"menut WinMax Massima\ ampiezza
|
||||
"menut WinMin Minima\ ampiezza
|
||||
"menut WinVSplit Dividi\ verticalmente
|
||||
"menut WinMaxWidth Massima\ larghezza
|
||||
"menut WinMinWidth Minima\ larghezza
|
||||
"menut WinClose Chiudi\ finestra
|
||||
"menut LoadSesn Carica\ Sessione
|
||||
"menut SaveSesn Salva\ Sessione
|
||||
"menut RunScript Esegui\ Script
|
||||
"menut Make Make
|
||||
"menut Shell Shell
|
||||
"menut RunCtags Esegui\ Ctags
|
||||
"menut TagJump Vai\ a\ Tag
|
||||
"menut Help Aiuto
|
||||
"menut FindHelp Cerca\ in\ Aiuto
|
||||
|
||||
so $VIMRUNTIME/lang/macvim_menu/menu_it_it.latin1.apple.vim
|
||||
so $VIMRUNTIME/lang/macvim_menu/menu_it_it.latin1.custom.vim
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: set sw=2 :
|
||||
|
||||
@@ -2,7 +2,7 @@ vim9script
|
||||
|
||||
# Script to define the syntax menu in synmenu.vim
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2023 Aug 10
|
||||
# Last Change: 2025 Mar 09
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# This is used by "make menu" in the src directory.
|
||||
@@ -605,6 +605,7 @@ SynMenu T.TealInfo:tli
|
||||
SynMenu T.Telix\ Salt:tsalt
|
||||
SynMenu T.Termcap/Printcap:ptcap
|
||||
SynMenu T.Terminfo:terminfo
|
||||
SynMenu T.Tera:tera
|
||||
SynMenu T.Tera\ Term:teraterm
|
||||
SynMenu T.TeX.TeX/LaTeX:tex
|
||||
SynMenu T.TeX.plain\ TeX:plaintex
|
||||
|
||||
+7
-1
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2024 Dec 07
|
||||
" Last Change: 2025 Mar 27
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
@@ -867,6 +867,8 @@ endif
|
||||
if has("insert_expand")
|
||||
call <SID>AddOption("complete", gettext("specifies how Insert mode completion works for CTRL-N and CTRL-P"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
call <SID>OptionL("cfc")
|
||||
call <SID>AddOption("completefuzzycollect", gettext("use fuzzy collection for specific completion modes"))
|
||||
call <SID>OptionL("cpt")
|
||||
call <SID>AddOption("completeopt", gettext("whether to use a popup menu for Insert mode completion"))
|
||||
call <SID>OptionL("cot")
|
||||
@@ -880,6 +882,8 @@ if has("insert_expand")
|
||||
call <SID>OptionG("ph", &ph)
|
||||
call <SID>AddOption("pumwidth", gettext("minimum width of the popup menu"))
|
||||
call <SID>OptionG("pw", &pw)
|
||||
call <SID>AddOption("pumaxmwidth", gettext("maximum width of the popup menu"))
|
||||
call <SID>OptionG("pmw", &pmw)
|
||||
call <SID>AddOption("completefunc", gettext("user defined function for Insert mode completion"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
call <SID>OptionL("cfu")
|
||||
@@ -1362,6 +1366,8 @@ call <SID>AddOption("virtualedit", gettext("when to use virtual editing: \"block
|
||||
call <SID>OptionG("ve", &ve)
|
||||
call <SID>AddOption("eventignore", gettext("list of autocommand events which are to be ignored"))
|
||||
call <SID>OptionG("ei", &ei)
|
||||
call <SID>AddOption("eventignorewin", gettext("list of autocommand events which are to be ignored in a window"))
|
||||
call <SID>OptionG("eiw", &eiw)
|
||||
call <SID>AddOption("loadplugins", gettext("load plugin scripts when starting up"))
|
||||
call <SID>BinOptionG("lpl", &lpl)
|
||||
call <SID>AddOption("exrc", gettext("enable reading .vimrc/.exrc/.gvimrc in the current directory"))
|
||||
|
||||
+86
-1
@@ -1,7 +1,7 @@
|
||||
vim9script
|
||||
|
||||
# Maintainer: Maxim Kim <habamax@gmail.com>
|
||||
# Last Update: 2024 Oct 05
|
||||
# Last Update: 2025 Mar 21
|
||||
#
|
||||
# Toggle comments
|
||||
# Usage:
|
||||
@@ -76,3 +76,88 @@ export def Toggle(...args: list<string>): string
|
||||
noautocmd keepjumps setline(lnum1, lines)
|
||||
return ''
|
||||
enddef
|
||||
|
||||
|
||||
# Comment text object
|
||||
# Usage:
|
||||
# import autoload 'dist/comment.vim'
|
||||
# onoremap <silent>ic <scriptcmd>comment.ObjComment(v:true)<CR>
|
||||
# onoremap <silent>ac <scriptcmd>comment.ObjComment(v:false)<CR>
|
||||
# xnoremap <silent>ic <esc><scriptcmd>comment.ObjComment(v:true)<CR>
|
||||
# xnoremap <silent>ac <esc><scriptcmd>comment.ObjComment(v:false)<CR>
|
||||
export def ObjComment(inner: bool)
|
||||
def IsComment(): bool
|
||||
var stx = map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')->join()
|
||||
return stx =~? 'Comment'
|
||||
enddef
|
||||
|
||||
# requires syntax support
|
||||
if !exists("g:syntax_on")
|
||||
return
|
||||
endif
|
||||
|
||||
var pos_init = getcurpos()
|
||||
|
||||
# If not in comment, search next one,
|
||||
if !IsComment()
|
||||
if search('\v\k+', 'W', line(".") + 100, 100, () => !IsComment()) <= 0
|
||||
return
|
||||
endif
|
||||
endif
|
||||
|
||||
# Search for the beginning of the comment block
|
||||
if IsComment()
|
||||
if search('\v%(\S+)|$', 'bW', 0, 200, IsComment) > 0
|
||||
search('\v%(\S)|$', 'W', 0, 200, () => !IsComment())
|
||||
else
|
||||
cursor(1, 1)
|
||||
search('\v\S+', 'cW', 0, 200)
|
||||
endif
|
||||
endif
|
||||
|
||||
var pos_start = getcurpos()
|
||||
|
||||
if !inner
|
||||
var col = pos_start[2]
|
||||
var prefix = getline(pos_start[1])[ : col - 2]
|
||||
while col > 0 && prefix[col - 2] =~ '\s'
|
||||
col -= 1
|
||||
endwhile
|
||||
pos_start[2] = col
|
||||
endif
|
||||
|
||||
# Search for the comment end.
|
||||
if pos_init[1] > pos_start[1]
|
||||
cursor(pos_init[1], pos_init[2])
|
||||
endif
|
||||
if search('\v%(\S+)|$', 'W', 0, 200, IsComment) > 0
|
||||
search('\S', 'beW', 0, 200, () => !IsComment())
|
||||
else
|
||||
if search('\%$', 'W', 0, 200) > 0
|
||||
search('\ze\S', 'beW', 0, 200, () => !IsComment())
|
||||
endif
|
||||
endif
|
||||
|
||||
var pos_end = getcurpos()
|
||||
|
||||
if !inner
|
||||
var spaces = matchstr(getline(pos_end[1]), '\%>.c\s*')
|
||||
pos_end[2] += spaces->len()
|
||||
if getline(pos_end[1])[pos_end[2] : ] =~ '^\s*$'
|
||||
&& (pos_start[2] == 1 || getline(pos_start[1])[ : pos_start[2]] =~ '^\s*$')
|
||||
if search('\v\s*\_$(\s*\n)+', 'eW', 0, 200) > 0
|
||||
pos_end = getcurpos()
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if (pos_end[2] == (getline(pos_end[1])->len() ?? 1)) && pos_start[2] <= 1
|
||||
cursor(pos_end[1], 1)
|
||||
normal! V
|
||||
cursor(pos_start[1], 1)
|
||||
else
|
||||
cursor(pos_end[1], pos_end[2])
|
||||
normal! v
|
||||
cursor(pos_start[1], pos_start[2])
|
||||
endif
|
||||
enddef
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user