mirror of
https://github.com/zoriya/vim.git
synced 2025-12-25 16:45:26 +00:00
Compare commits
224 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a77670726e | ||
|
|
ceff9cd1bb | ||
|
|
657b31fa3b | ||
|
|
732d69e191 | ||
|
|
7e5fe38efc | ||
|
|
b49dfd0cf2 | ||
|
|
b7f6f93475 | ||
|
|
aa7f25ebf1 | ||
|
|
08210f8def | ||
|
|
ff6c230051 | ||
|
|
d76670fc0d | ||
|
|
474891bc89 | ||
|
|
5299c0933f | ||
|
|
01967f5b10 | ||
|
|
ac6cd31afc | ||
|
|
05a627c3d4 | ||
|
|
bfc7cbd1d4 | ||
|
|
b6ebe5af74 | ||
|
|
23a971da50 | ||
|
|
cde8de0345 | ||
|
|
065088d554 | ||
|
|
3cdd799951 | ||
|
|
2ed57ac367 | ||
|
|
38d867f041 | ||
|
|
39c9ec16ea | ||
|
|
869113f376 | ||
|
|
6ac2e4392a | ||
|
|
2d68b722e3 | ||
|
|
6400203517 | ||
|
|
1a08a3e2a5 | ||
|
|
c174c2e58c | ||
|
|
1f76138ff1 | ||
|
|
99e4ab2a1e | ||
|
|
3ea62381c5 | ||
|
|
7ac36130e0 | ||
|
|
890c772036 | ||
|
|
d0639d717b | ||
|
|
8aa2a37f89 | ||
|
|
aa26153b6c | ||
|
|
4a5c39fc52 | ||
|
|
5fedb8a5ab | ||
|
|
a1fa8b3ac2 | ||
|
|
e6d40dcdc7 | ||
|
|
7c4516fe93 | ||
|
|
ea83c19462 | ||
|
|
2a003177eb | ||
|
|
6e377eca8d | ||
|
|
076de79ad8 | ||
|
|
16110ccf11 | ||
|
|
d11ac403db | ||
|
|
1505bef5c4 | ||
|
|
b8ef029ee4 | ||
|
|
e202ec8a0c | ||
|
|
14338024c1 | ||
|
|
e638acc927 | ||
|
|
e764d1b421 | ||
|
|
d13dd30240 | ||
|
|
c481ad38f0 | ||
|
|
5145c9a829 | ||
|
|
4df0772a41 | ||
|
|
c0bdbfb2ee | ||
|
|
6a7c774920 | ||
|
|
be19d78c3d | ||
|
|
638388b8ef | ||
|
|
cde1f8714e | ||
|
|
ff226d49fe | ||
|
|
7ac5023a5f | ||
|
|
960dcbd098 | ||
|
|
14113fdf9c | ||
|
|
663ee88a82 | ||
|
|
f06c4a7a1d | ||
|
|
cf3c1ca276 | ||
|
|
30585e03a7 | ||
|
|
f86dea8119 | ||
|
|
b0b6b8b07e | ||
|
|
4390d872b6 | ||
|
|
c142d6513e | ||
|
|
d8742476d1 | ||
|
|
5fb78c3fa5 | ||
|
|
5284b23e14 | ||
|
|
c99cbf8f28 | ||
|
|
5c6a3c9bad | ||
|
|
1c73b65229 | ||
|
|
f77a7f704f | ||
|
|
c727b19e9f | ||
|
|
194555c001 | ||
|
|
db1887ce40 | ||
|
|
440d4cb55b | ||
|
|
c3f971f289 | ||
|
|
c6ff21e876 | ||
|
|
4ed914b18a | ||
|
|
e0f8691969 | ||
|
|
ad60898aa4 | ||
|
|
f0300fc7b8 | ||
|
|
da77693b17 | ||
|
|
3f45d67a15 | ||
|
|
99ad3a8bb9 | ||
|
|
dd60c365cd | ||
|
|
341f3876b3 | ||
|
|
80c5b2c0f7 | ||
|
|
5da901bb68 | ||
|
|
30a8447715 | ||
|
|
c4e1b86cb0 | ||
|
|
4f026ea9f1 | ||
|
|
83ae6150bf | ||
|
|
d6a4ea3aa0 | ||
|
|
6d611de58c | ||
|
|
a63fd82328 | ||
|
|
def5521752 | ||
|
|
c2254764bc | ||
|
|
3ddb1182b7 | ||
|
|
44e08c1cf8 | ||
|
|
2824d1ee32 | ||
|
|
ca06b30073 | ||
|
|
8ad862a1f9 | ||
|
|
a8f0835a6b | ||
|
|
3451789f58 | ||
|
|
3e2d5385ed | ||
|
|
4ee083e7f9 | ||
|
|
666cb9c530 | ||
|
|
38f1ab31fa | ||
|
|
99a7c0d89c | ||
|
|
cfce5cf542 | ||
|
|
a23a11b5bf | ||
|
|
d950984489 | ||
|
|
b1e32ac0c9 | ||
|
|
938ae280c7 | ||
|
|
6b066c6d8f | ||
|
|
b444ee761a | ||
|
|
e1121b1394 | ||
|
|
af93691b53 | ||
|
|
997b8a015c | ||
|
|
5b9f57262f | ||
|
|
ea62cee85e | ||
|
|
a572b936ce | ||
|
|
f53e065bce | ||
|
|
441a7a9448 | ||
|
|
3e1ac1443a | ||
|
|
2c1c803c7e | ||
|
|
d114975b9b | ||
|
|
0917e86763 | ||
|
|
9de960ace0 | ||
|
|
f2017f255d | ||
|
|
552bdca781 | ||
|
|
eea0a00811 | ||
|
|
c3a26c6bff | ||
|
|
1d87e11a1e | ||
|
|
ce3189d56e | ||
|
|
bc3dc298b3 | ||
|
|
339e114d70 | ||
|
|
fdbd14e892 | ||
|
|
1d6539cf36 | ||
|
|
1a6476428f | ||
|
|
32ff96ef01 | ||
|
|
5ceb8157bc | ||
|
|
55a27d8ea7 | ||
|
|
234c3fab28 | ||
|
|
094b8473ed | ||
|
|
aab2ead008 | ||
|
|
9d9a20ee87 | ||
|
|
3ec78f973f | ||
|
|
412e0e4ed9 | ||
|
|
c4b7dec382 | ||
|
|
962d916435 | ||
|
|
094cf9f4d5 | ||
|
|
6c41bedeed | ||
|
|
80b817b749 | ||
|
|
0caaf1e465 | ||
|
|
313e4724c3 | ||
|
|
6642982bea | ||
|
|
af9e28a5b8 | ||
|
|
43e234e8b4 | ||
|
|
91deac4539 | ||
|
|
0261e3978e | ||
|
|
546933f497 | ||
|
|
a9a6b0323e | ||
|
|
40b4872966 | ||
|
|
c72078b631 | ||
|
|
c8ef30bc2e | ||
|
|
cb626a4692 | ||
|
|
7a1bdaecf2 | ||
|
|
61fdbfa1e3 | ||
|
|
4ad8ae8465 | ||
|
|
49f0524fb5 | ||
|
|
4be18e77ff | ||
|
|
78012f55fa | ||
|
|
be4e01637e | ||
|
|
685bf83b73 | ||
|
|
8f531662e2 | ||
|
|
e8d4ae0d11 | ||
|
|
1b438a8228 | ||
|
|
a7d36b7320 | ||
|
|
b40c1de384 | ||
|
|
9c51798a1f | ||
|
|
d6e4c75af2 | ||
|
|
ce93d162da | ||
|
|
b8bebd0cd7 | ||
|
|
eb45ad25ab | ||
|
|
907349a743 | ||
|
|
f2e30d0c44 | ||
|
|
2a99fe6c41 | ||
|
|
836137d89a | ||
|
|
492324e588 | ||
|
|
755bf2b3d2 | ||
|
|
94722c5107 | ||
|
|
04e4f1d985 | ||
|
|
8fe5b9c8c1 | ||
|
|
d0200c8631 | ||
|
|
192e24d974 | ||
|
|
f75a2cb3c7 | ||
|
|
fadc02a2a5 | ||
|
|
8dbab1d8ce | ||
|
|
657aea7fc4 | ||
|
|
53f54e49b7 | ||
|
|
870219c58c | ||
|
|
142ed77898 | ||
|
|
032713f829 | ||
|
|
0f843ef091 | ||
|
|
01d4efe2e8 | ||
|
|
b0d45ec67f | ||
|
|
b582010350 | ||
|
|
62a6923470 | ||
|
|
b149d22796 | ||
|
|
5c8771bc5a |
@@ -36,7 +36,7 @@ macos_task:
|
||||
timeout_in: 20m
|
||||
install_script:
|
||||
- brew update
|
||||
- brew install gettext libtool
|
||||
- brew install gettext libtool diffutils
|
||||
build_script:
|
||||
- NPROC=$(getconf _NPROCESSORS_ONLN)
|
||||
- ./configure --with-features=${FEATURES}
|
||||
|
||||
17
.github/workflows/ci.yml
vendored
17
.github/workflows/ci.yml
vendored
@@ -96,22 +96,21 @@ jobs:
|
||||
- name: Install gcc-11
|
||||
if: matrix.compiler == 'gcc'
|
||||
run: |
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
sudo apt install -y gcc-11
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
|
||||
sudo update-alternatives --set gcc /usr/bin/gcc-11
|
||||
|
||||
- name: Install clang-15
|
||||
- name: Install clang-16
|
||||
if: matrix.compiler == 'clang'
|
||||
run: |
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
. /etc/lsb-release
|
||||
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-15 main"
|
||||
sudo apt install -y clang-15 llvm-15
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 100
|
||||
sudo update-alternatives --set clang /usr/bin/clang-15
|
||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-15 100
|
||||
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-15 100
|
||||
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-16 main"
|
||||
sudo apt install -y clang-16 llvm-16
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 100
|
||||
sudo update-alternatives --set clang /usr/bin/clang-16
|
||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-16 100
|
||||
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-16 100
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
@@ -300,8 +299,6 @@ jobs:
|
||||
|
||||
- name: Install packages
|
||||
if: matrix.features == 'huge'
|
||||
env:
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
run: |
|
||||
brew install lua
|
||||
echo "LUA_PREFIX=/usr/local" >> $GITHUB_ENV
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -68,6 +68,7 @@ src/tags
|
||||
/GPATH
|
||||
/GTAGS
|
||||
/GRTAGS
|
||||
nsis/tags
|
||||
|
||||
# Generated by "make test"
|
||||
src/po/*.ck
|
||||
|
||||
22
.hgignore
22
.hgignore
@@ -7,9 +7,9 @@ src/xxd/xxd
|
||||
src/auto/if_perl.c
|
||||
src/auto/gui_gtk_gresources.c
|
||||
src/auto/gui_gtk_gresources.h
|
||||
src/auto/os_haiku.rdef
|
||||
src/objects/.dirstamp
|
||||
src/objects
|
||||
src/tags
|
||||
src/types.vim
|
||||
|
||||
# We do need src/auto/configure.
|
||||
@@ -46,12 +46,15 @@ gvimext.lib
|
||||
gvim.lib
|
||||
runtime/doc/uganda.nsis.txt
|
||||
nsis/icons/*
|
||||
/vim90/
|
||||
.vscode/
|
||||
|
||||
# NetBeans
|
||||
nbproject/*
|
||||
|
||||
# Mac OSX
|
||||
src/xxd/xxd.dSYM
|
||||
.DS_Store
|
||||
|
||||
# All platforms
|
||||
*.rej
|
||||
@@ -62,6 +65,12 @@ src/xxd/xxd.dSYM
|
||||
*.pyc
|
||||
*.log
|
||||
src/po/vim.pot
|
||||
src/tags
|
||||
/tags
|
||||
/GPATH
|
||||
/GTAGS
|
||||
/GRTAGS
|
||||
nsis/tags
|
||||
|
||||
# Generated by "make test"
|
||||
src/po/*.ck
|
||||
@@ -78,14 +87,16 @@ src/testdir/dostmp/*
|
||||
src/testdir/messages
|
||||
src/testdir/viminfo
|
||||
src/testdir/opt_test.vim
|
||||
src/testdir/failed
|
||||
src/testdir/starttime
|
||||
runtime/indent/testdir/*.out
|
||||
runtime/indent/testdir/*.fail
|
||||
src/memfile_test
|
||||
src/json_test
|
||||
src/message_test
|
||||
src/kword_test
|
||||
|
||||
# Generated by "make install"
|
||||
runtime/doc/tags
|
||||
runtime/doc/doctags
|
||||
|
||||
# Generated by "make shadow". The directory names could be anything but we
|
||||
@@ -95,5 +106,10 @@ src/shadow-*
|
||||
src/runtime
|
||||
src/pixmaps
|
||||
|
||||
# other possible files build by tools
|
||||
# other files possibly created by tools
|
||||
src/cscope.out
|
||||
|
||||
# Linter/language server files
|
||||
/.cache/clangd/
|
||||
/.ccls-cache/
|
||||
/compile_commands.json
|
||||
|
||||
@@ -2,18 +2,17 @@
|
||||
|
||||
# What is Vim9?
|
||||
|
||||
This is an experimental side of [Vim](https://github.com/vim/vim).
|
||||
It explores ways of making Vim script faster and better.
|
||||
This is a new syntax for Vim script that was introduced with Vim 9.0.
|
||||
It intends making Vim script faster and better.
|
||||
|
||||
WARNING: The Vim9 script features are still under development, anything can
|
||||
break!
|
||||
|
||||
# Why Vim9?
|
||||
|
||||
## 1. FASTER VIM SCRIPT
|
||||
|
||||
The third item on the poll results of 2018, after popup windows and text
|
||||
properties, is faster Vim script. So how do we do that?
|
||||
properties, both of which have been implemented, is faster Vim script.
|
||||
So how do we do that?
|
||||
|
||||
I have been throwing some ideas around, and soon came to the conclusion
|
||||
that the current way functions are called and executed, with
|
||||
@@ -53,7 +52,7 @@ we can gain, and also that Vim script can be faster than builtin
|
||||
interfaces.
|
||||
|
||||
LuaJit is much faster at Lua-only instructions. In practice the script would
|
||||
not do something useless as counting but change the text. For example,
|
||||
not do something useless counting, but change the text. For example,
|
||||
reindent all the lines:
|
||||
|
||||
``` vim
|
||||
|
||||
@@ -228,6 +228,28 @@ FunctionEnd
|
||||
!insertmacro GetParent ""
|
||||
!insertmacro GetParent "un."
|
||||
|
||||
# Get home directory
|
||||
!macro GetHomeDir un
|
||||
Function ${un}GetHomeDir
|
||||
Push $0
|
||||
Push $1
|
||||
ReadEnvStr $0 "HOME"
|
||||
${If} $0 == ""
|
||||
ReadEnvStr $0 "HOMEDRIVE"
|
||||
ReadEnvStr $1 "HOMEPATH"
|
||||
StrCpy $0 "$0$1"
|
||||
${If} $0 == ""
|
||||
ReadEnvStr $0 "USERPROFILE"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
Pop $1
|
||||
Exch $0 # put $0 on top of stack, restore $0 to original value
|
||||
FunctionEnd
|
||||
!macroend
|
||||
|
||||
!insertmacro GetHomeDir ""
|
||||
!insertmacro GetHomeDir "un."
|
||||
|
||||
# Check if Vim is already installed.
|
||||
# return: Installed directory. If not found, it will be empty.
|
||||
Function CheckOldVim
|
||||
@@ -520,7 +542,8 @@ SectionGroup $(str_group_plugin) id_group_plugin
|
||||
Section "$(str_section_plugin_home)" id_section_pluginhome
|
||||
SectionIn 1 3
|
||||
|
||||
StrCpy $1 "$1 -create-directories home"
|
||||
# use ShellExecAsUser below instead
|
||||
# StrCpy $1 "$1 -create-directories home"
|
||||
SectionEnd
|
||||
|
||||
Section "$(str_section_plugin_vim)" id_section_pluginvim
|
||||
@@ -594,6 +617,13 @@ Section -call_install_exe
|
||||
DetailPrint "$(str_msg_registering)"
|
||||
nsExec::Exec "$0\install.exe $1"
|
||||
Pop $3
|
||||
|
||||
${If} ${SectionIsSelected} ${id_section_pluginhome}
|
||||
ReadEnvStr $3 "COMSPEC"
|
||||
Call GetHomeDir
|
||||
Pop $4
|
||||
ShellExecAsUser::ShellExecAsUser "" "$3" '/c "cd /d "$4" & mkdir vimfiles & cd vimfiles & mkdir colors compiler doc ftdetect ftplugin indent keymap plugin syntax"' SW_HIDE
|
||||
${EndIf}
|
||||
SectionEnd
|
||||
|
||||
##########################################################
|
||||
@@ -1042,15 +1072,8 @@ SectionEnd
|
||||
SectionGroup "un.$(str_ungroup_plugin)" id_ungroup_plugin
|
||||
Section /o "un.$(str_unsection_plugin_home)" id_unsection_plugin_home
|
||||
# get the home dir
|
||||
ReadEnvStr $0 "HOME"
|
||||
${If} $0 == ""
|
||||
ReadEnvStr $0 "HOMEDRIVE"
|
||||
ReadEnvStr $1 "HOMEPATH"
|
||||
StrCpy $0 "$0$1"
|
||||
${If} $0 == ""
|
||||
ReadEnvStr $0 "USERPROFILE"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
Call un.GetHomeDir
|
||||
Pop $0
|
||||
|
||||
${If} $0 != ""
|
||||
!insertmacro RemoveVimfiles $0
|
||||
|
||||
18
runtime/autoload/dist/ft.vim
vendored
18
runtime/autoload/dist/ft.vim
vendored
@@ -307,14 +307,16 @@ export def FTfs()
|
||||
if exists("g:filetype_fs")
|
||||
exe "setf " .. g:filetype_fs
|
||||
else
|
||||
var line = getline(nextnonblank(1))
|
||||
# comments and colon definitions
|
||||
if line =~ '^\s*\.\=( ' || line =~ '^\s*\\G\= ' || line =~ '^\\$'
|
||||
\ || line =~ '^\s*: \S'
|
||||
setf forth
|
||||
else
|
||||
setf fsharp
|
||||
endif
|
||||
var n = 1
|
||||
while n < 100 && n <= line("$")
|
||||
# Forth comments and colon definitions
|
||||
if getline(n) =~ "^[:(\\\\] "
|
||||
setf forth
|
||||
return
|
||||
endif
|
||||
n += 1
|
||||
endwhile
|
||||
setf fsharp
|
||||
endif
|
||||
enddef
|
||||
|
||||
|
||||
323
runtime/autoload/dist/vimindent.vim
vendored
323
runtime/autoload/dist/vimindent.vim
vendored
@@ -2,12 +2,12 @@ vim9script
|
||||
|
||||
# Language: Vim script
|
||||
# Maintainer: github user lacygoill
|
||||
# Last Change: 2023 Jan 03
|
||||
# Last Change: 2023 Feb 01
|
||||
|
||||
# NOTE: Whenever you change the code, make sure the tests are still passing:
|
||||
#
|
||||
# $ cd runtime/indent/
|
||||
# $ make clean; make test || vimdiff testdir/vim.{fail,ok}
|
||||
# $ make clean; make test || vimdiff testdir/vim.{ok,fail}
|
||||
|
||||
# Config {{{1
|
||||
|
||||
@@ -112,6 +112,10 @@ const DICT_KEY: string = '^\s*\%('
|
||||
.. '\)'
|
||||
.. ':\%(\s\|$\)'
|
||||
|
||||
# NOT_A_DICT_KEY {{{3
|
||||
|
||||
const NOT_A_DICT_KEY: string = ':\@!'
|
||||
|
||||
# END_OF_COMMAND {{{3
|
||||
|
||||
const END_OF_COMMAND: string = $'\s*\%($\|||\@!\|{INLINE_COMMENT}\)'
|
||||
@@ -144,19 +148,43 @@ const HEREDOC_OPERATOR: string = '\s=<<\s\@=\%(\s\+\%(trim\|eval\)\)\{,2}'
|
||||
#
|
||||
# But sometimes, it can be too costly and cause `E363` to be given.
|
||||
const PATTERN_DELIMITER: string = '[-+*/%]\%(=\s\)\@!'
|
||||
|
||||
# QUOTE {{{3
|
||||
|
||||
const QUOTE: string = '["'']'
|
||||
# }}}2
|
||||
# Syntaxes {{{2
|
||||
# ASSIGNS_HEREDOC {{{3
|
||||
# BLOCKS {{{3
|
||||
|
||||
const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\+\zs[A-Z]\+{END_OF_LINE}'
|
||||
const BLOCKS: list<list<string>> = [
|
||||
['if', 'el\%[se]', 'elseif\=', 'en\%[dif]'],
|
||||
['for', 'endfor\='],
|
||||
['wh\%[ile]', 'endw\%[hile]'],
|
||||
['try', 'cat\%[ch]', 'fina\|finally\=', 'endt\%[ry]'],
|
||||
['def', 'enddef'],
|
||||
['fu\%[nction](\@!', 'endf\%[unction]'],
|
||||
['class', 'endclass'],
|
||||
['interface', 'endinterface'],
|
||||
['enum', 'endenum'],
|
||||
['aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+', 'aug\%[roup]\s\+[eE][nN][dD]'],
|
||||
]
|
||||
|
||||
# CD_COMMAND {{{3
|
||||
# MODIFIERS {{{3
|
||||
|
||||
const CD_COMMAND: string = $'\<[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
|
||||
# some keywords can be prefixed by modifiers (e.g. `def` can be prefixed by `export`)
|
||||
const MODIFIERS: dict<string> = {
|
||||
def: ['export', 'static'],
|
||||
class: ['export', 'abstract', 'export abstract'],
|
||||
interface: ['export'],
|
||||
}
|
||||
# ...
|
||||
# class: ['export', 'abstract', 'export abstract'],
|
||||
# ...
|
||||
# →
|
||||
# ...
|
||||
# class: '\%(export\|abstract\|export\s\+abstract\)\s\+',
|
||||
# ...
|
||||
->map((_, mods: list<string>): string =>
|
||||
'\%(' .. mods
|
||||
->join('\|')
|
||||
->substitute('\s\+', '\\s\\+', 'g')
|
||||
.. '\)' .. '\s\+')
|
||||
|
||||
# HIGHER_ORDER_COMMAND {{{3
|
||||
|
||||
@@ -174,58 +202,102 @@ patterns =<< trim eval END
|
||||
g\%[lobal]!\={PATTERN_DELIMITER}.*
|
||||
v\%[global]!\={PATTERN_DELIMITER}.*
|
||||
END
|
||||
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%(' .. patterns->join('\|') .. '\):\@!'
|
||||
|
||||
# MAPPING_COMMAND {{{3
|
||||
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\){NOT_A_DICT_KEY}'
|
||||
|
||||
const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s'
|
||||
# START_MIDDLE_END {{{3
|
||||
|
||||
# NORMAL_COMMAND {{{3
|
||||
# Let's derive this constant from `BLOCKS`:
|
||||
#
|
||||
# [['if', 'el\%[se]', 'elseif\=', 'en\%[dif]'],
|
||||
# ['for', 'endfor\='],
|
||||
# ...,
|
||||
# [...]]
|
||||
# →
|
||||
# {
|
||||
# 'for': ['for', '', 'endfor\='],
|
||||
# 'endfor': ['for', '', 'endfor\='],
|
||||
# 'if': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
# 'else': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
# 'elseif': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
# 'endif': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
# ...
|
||||
# }
|
||||
var START_MIDDLE_END: dict<list<string>>
|
||||
|
||||
const NORMAL_COMMAND: string = '\<norm\%[al]!\=\s*\S\+$'
|
||||
def Unshorten(kwd: string): string
|
||||
return BlockStartKeyword(kwd)
|
||||
enddef
|
||||
|
||||
# PLUS_MINUS_COMMAND {{{3
|
||||
def BlockStartKeyword(line: string): string
|
||||
var kwd: string = line->matchstr('\l\+')
|
||||
return fullcommand(kwd, false)
|
||||
enddef
|
||||
|
||||
# In legacy, the `:+` and `:-` commands are not required to be preceded by a colon.
|
||||
# As a result, when `+` or `-` is alone on a line, there is ambiguity.
|
||||
# It might be an operator or a command.
|
||||
# To not break the indentation in legacy scripts, we might need to consider such
|
||||
# lines as commands.
|
||||
const PLUS_MINUS_COMMAND: string = '^\s*[+-]\s*$'
|
||||
{
|
||||
for kwds: list<string> in BLOCKS
|
||||
var [start: string, middle: string, end: string] = [kwds[0], '', kwds[-1]]
|
||||
if MODIFIERS->has_key(start->Unshorten())
|
||||
start = $'\%({MODIFIERS[start]}\)\={start}'
|
||||
endif
|
||||
if kwds->len() > 2
|
||||
middle = kwds[1 : -2]->join('\|')
|
||||
endif
|
||||
for kwd: string in kwds
|
||||
START_MIDDLE_END->extend({[kwd->Unshorten()]: [start, middle, end]})
|
||||
endfor
|
||||
endfor
|
||||
}
|
||||
|
||||
START_MIDDLE_END = START_MIDDLE_END
|
||||
->map((_, kwds: list<string>) =>
|
||||
kwds->map((_, kwd: string) => kwd == ''
|
||||
? ''
|
||||
: $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
|
||||
.. $'\<\%({kwd}\)\>\%(\s*{OPERATOR}\)\@!'))
|
||||
|
||||
lockvar! START_MIDDLE_END
|
||||
|
||||
# ENDS_BLOCK {{{3
|
||||
|
||||
const ENDS_BLOCK: string = '^\s*\%('
|
||||
.. 'en\%[dif]'
|
||||
.. '\|' .. 'endfor\='
|
||||
.. '\|' .. 'endw\%[hile]'
|
||||
.. '\|' .. 'endt\%[ry]'
|
||||
.. '\|' .. 'enddef'
|
||||
.. '\|' .. 'endclass'
|
||||
.. '\|' .. 'endf\%[unction]'
|
||||
.. '\|' .. 'aug\%[roup]\s\+[eE][nN][dD]'
|
||||
.. BLOCKS
|
||||
->copy()
|
||||
->map((_, kwds: list<string>): string => kwds[-1])
|
||||
->join('\|')
|
||||
.. '\|' .. CLOSING_BRACKET
|
||||
.. $'\){END_OF_COMMAND}'
|
||||
|
||||
# ENDS_BLOCK_OR_CLAUSE {{{3
|
||||
|
||||
patterns =<< trim END
|
||||
en\%[dif]
|
||||
el\%[se]
|
||||
endfor\=
|
||||
endclass
|
||||
endw\%[hile]
|
||||
endt\%[ry]
|
||||
fina\|finally\=
|
||||
enddef
|
||||
endf\%[unction]
|
||||
aug\%[roup]\s\+[eE][nN][dD]
|
||||
END
|
||||
patterns = BLOCKS
|
||||
->copy()
|
||||
->map((_, kwds: list<string>) => kwds[1 :])
|
||||
->flattennew()
|
||||
# `catch` and `elseif` need to be handled as special cases
|
||||
->filter((_, pat: string): bool => pat->Unshorten() !~ '^\%(catch\|elseif\)\>')
|
||||
|
||||
const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
|
||||
.. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
|
||||
.. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
|
||||
|
||||
# STARTS_NAMED_BLOCK {{{3
|
||||
|
||||
patterns = []
|
||||
{
|
||||
for kwds: list<string> in BLOCKS
|
||||
for kwd: string in kwds[0 : -2]
|
||||
if MODIFIERS->has_key(kwd->Unshorten())
|
||||
patterns += [$'\%({MODIFIERS[kwd]}\)\={kwd}']
|
||||
else
|
||||
patterns += [kwd]
|
||||
endif
|
||||
endfor
|
||||
endfor
|
||||
}
|
||||
|
||||
const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>{NOT_A_DICT_KEY}'
|
||||
|
||||
# STARTS_CURLY_BLOCK {{{3
|
||||
|
||||
# TODO: `{` alone on a line is not necessarily the start of a block.
|
||||
@@ -238,73 +310,57 @@ const STARTS_CURLY_BLOCK: string = '\%('
|
||||
.. '\|' .. $'^\%(\s*\|.*{BAR_SEPARATION}\s*\)\%(com\%[mand]\|au\%[tocmd]\).*\zs\s{{'
|
||||
.. '\)' .. END_OF_COMMAND
|
||||
|
||||
# STARTS_NAMED_BLOCK {{{3
|
||||
|
||||
# All of these will be used at the start of a line (or after a bar).
|
||||
# NOTE: Don't replace `\%x28` with `(`.{{{
|
||||
#
|
||||
# Otherwise, the paren would be unbalanced which might cause syntax highlighting
|
||||
# issues much later in the code of the current script (sometimes, the syntax
|
||||
# highlighting plugin fails to correctly recognize a heredoc which is far away
|
||||
# and/or not displayed because inside a fold).
|
||||
# }}}
|
||||
patterns =<< trim END
|
||||
if
|
||||
el\%[se]
|
||||
elseif\=
|
||||
for
|
||||
class
|
||||
wh\%[ile]
|
||||
try
|
||||
cat\%[ch]
|
||||
fina\|finally\=
|
||||
fu\%[nction]\%x28\@!
|
||||
\%(export\s\+\)\=def
|
||||
aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+
|
||||
END
|
||||
const STARTS_NAMED_BLOCK: string = '^\s*\%(sil\%[ent]\s\+\)\=\%(' .. patterns->join('\|') .. '\)\>:\@!'
|
||||
|
||||
# STARTS_FUNCTION {{{3
|
||||
|
||||
const STARTS_FUNCTION: string = '^\s*\%(export\s\+\)\=def\>:\@!'
|
||||
const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>{NOT_A_DICT_KEY}'
|
||||
|
||||
# ENDS_FUNCTION {{{3
|
||||
|
||||
const ENDS_FUNCTION: string = $'^\s*enddef\>:\@!{END_OF_COMMAND}'
|
||||
const ENDS_FUNCTION: string = $'^\s*enddef\>{END_OF_COMMAND}'
|
||||
|
||||
# START_MIDDLE_END {{{3
|
||||
# ASSIGNS_HEREDOC {{{3
|
||||
|
||||
const START_MIDDLE_END: dict<list<string>> = {
|
||||
if: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
else: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
elseif: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
endif: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
|
||||
for: ['for', '', 'endfor\='],
|
||||
endfor: ['for', '', 'endfor\='],
|
||||
class: ['class', '', 'endclass'],
|
||||
endclass: ['class', '', 'endclass'],
|
||||
while: ['wh\%[ile]', '', 'endw\%[hile]'],
|
||||
endwhile: ['wh\%[ile]', '', 'endw\%[hile]'],
|
||||
try: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
|
||||
catch: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
|
||||
finally: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
|
||||
endtry: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
|
||||
def: ['\%(export\s\+\)\=def', '', 'enddef'],
|
||||
enddef: ['\%(export\s\+\)\=def', '', 'enddef'],
|
||||
function: ['fu\%[nction]', '', 'endf\%[unction]'],
|
||||
endfunction: ['fu\%[nction]', '', 'endf\%[unction]'],
|
||||
augroup: ['aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+', '', 'aug\%[roup]\s\+[eE][nN][dD]'],
|
||||
}->map((_, kwds: list<string>) =>
|
||||
kwds->map((_, kwd: string) => kwd == ''
|
||||
? ''
|
||||
: $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
|
||||
.. $'\%({printf('\C\<\%%(%s\)\>:\@!\%%(\s*%s\)\@!', kwd, OPERATOR)}\)'))
|
||||
const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\+\zs[A-Z]\+{END_OF_LINE}'
|
||||
|
||||
# PLUS_MINUS_COMMAND {{{3
|
||||
|
||||
# In legacy, the `:+` and `:-` commands are not required to be preceded by a colon.
|
||||
# As a result, when `+` or `-` is alone on a line, there is ambiguity.
|
||||
# It might be an operator or a command.
|
||||
# To not break the indentation in legacy scripts, we might need to consider such
|
||||
# lines as commands.
|
||||
const PLUS_MINUS_COMMAND: string = '^\s*[+-]\s*$'
|
||||
|
||||
# TRICKY_COMMANDS {{{3
|
||||
|
||||
# Some commands are tricky because they accept an argument which can be
|
||||
# conflated with an operator. Examples:
|
||||
#
|
||||
# argdelete *
|
||||
# cd -
|
||||
# normal! ==
|
||||
# nunmap <buffer> (
|
||||
#
|
||||
# TODO: Other commands might accept operators as argument. Handle them too.
|
||||
patterns =<< trim eval END
|
||||
{'\'}<argd\%[elete]\s\+\*\s*$
|
||||
\<[lt]\=cd!\=\s\+-\s*$
|
||||
\<norm\%[al]!\=\s*\S\+$
|
||||
\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s
|
||||
{PLUS_MINUS_COMMAND}
|
||||
END
|
||||
|
||||
const TRICKY_COMMANDS: string = patterns->join('\|')
|
||||
# }}}2
|
||||
# EOL {{{2
|
||||
# OPENING_BRACKET_AT_EOL {{{3
|
||||
|
||||
const OPENING_BRACKET_AT_EOL: string = OPENING_BRACKET .. END_OF_VIM9_LINE
|
||||
|
||||
# CLOSING_BRACKET_AT_EOL {{{3
|
||||
|
||||
const CLOSING_BRACKET_AT_EOL: string = CLOSING_BRACKET .. END_OF_VIM9_LINE
|
||||
|
||||
# COMMA_AT_EOL {{{3
|
||||
|
||||
const COMMA_AT_EOL: string = $',{END_OF_VIM9_LINE}'
|
||||
@@ -392,6 +448,7 @@ export def Expr(lnum = v:lnum): number # {{{2
|
||||
endif
|
||||
|
||||
if line_A->AtStartOf('FuncHeader')
|
||||
&& !IsInInterface()
|
||||
line_A.lnum->CacheFuncHeader()
|
||||
elseif line_A.lnum->IsInside('FuncHeader')
|
||||
return b:vimindent.startindent + 2 * shiftwidth()
|
||||
@@ -430,6 +487,7 @@ export def Expr(lnum = v:lnum): number # {{{2
|
||||
if line_A.text->ContinuesBelowBracketBlock(line_B, past_bracket_block)
|
||||
&& line_A.text !~ CLOSING_BRACKET_AT_SOL
|
||||
return past_bracket_block.startindent
|
||||
+ (past_bracket_block.startline =~ STARTS_NAMED_BLOCK ? 2 * shiftwidth() : 0)
|
||||
endif
|
||||
|
||||
# Problem: If we press `==` on the line right below the start of a multiline
|
||||
@@ -438,6 +496,18 @@ export def Expr(lnum = v:lnum): number # {{{2
|
||||
if line_B->EndsWithLambdaArrow()
|
||||
return Indent(line_B.lnum) + shiftwidth() + IndentMoreInBracketBlock()
|
||||
endif
|
||||
# FIXME: Similar issue here:
|
||||
#
|
||||
# var x = []
|
||||
# ->filter((_, _) =>
|
||||
# true)
|
||||
# ->items()
|
||||
#
|
||||
# Press `==` on last line.
|
||||
# Expected: The `->items()` line is indented like `->filter(...)`.
|
||||
# Actual: It's indented like `true)`.
|
||||
# Is it worth fixing? `=ip` gives the correct indentation, because then the
|
||||
# cache is used.
|
||||
|
||||
# Don't move this block before the heredoc one.{{{
|
||||
#
|
||||
@@ -536,8 +606,13 @@ def Offset( # {{{2
|
||||
line_B: dict<any>,
|
||||
): number
|
||||
|
||||
if line_B->AtStartOf('FuncHeader')
|
||||
&& IsInInterface()
|
||||
return 0
|
||||
|
||||
# increase indentation inside a block
|
||||
if line_B.text =~ STARTS_NAMED_BLOCK || line_B->EndsWithCurlyBlock()
|
||||
elseif line_B.text =~ STARTS_NAMED_BLOCK
|
||||
|| line_B->EndsWithCurlyBlock()
|
||||
# But don't indent if the line starting the block also closes it.
|
||||
if line_B->AlsoClosesBlock()
|
||||
return 0
|
||||
@@ -807,11 +882,6 @@ def Indent(lnum: number): number # {{{3
|
||||
return indent(lnum)
|
||||
enddef
|
||||
|
||||
def BlockStartKeyword(line: string): string # {{{3
|
||||
var kwd: string = line->matchstr('\l\+')
|
||||
return fullcommand(kwd, false)
|
||||
enddef
|
||||
|
||||
def MatchingOpenBracket(line: dict<any>): number # {{{3
|
||||
var end: string = line.text->matchstr(CLOSING_BRACKET)
|
||||
var start: string = {']': '[', '}': '{', ')': '('}[end]
|
||||
@@ -908,7 +978,8 @@ def SearchPair( # {{{3
|
||||
if end == '[' || end == ']'
|
||||
e = e->escape('[]')
|
||||
endif
|
||||
return searchpair(s, middle, e, flags, (): bool => InCommentOrString(), stopline, TIMEOUT)
|
||||
return searchpair('\C' .. s, (middle == '' ? '' : '\C' .. middle), '\C' .. e,
|
||||
flags, (): bool => InCommentOrString(), stopline, TIMEOUT)
|
||||
enddef
|
||||
|
||||
def SearchPairStart( # {{{3
|
||||
@@ -1016,6 +1087,10 @@ def IsInThisBlock(line_A: dict<any>, lnum: number): bool # {{{3
|
||||
return line_A.lnum <= end
|
||||
enddef
|
||||
|
||||
def IsInInterface(): bool # {{{3
|
||||
return SearchPair('interface', '', 'endinterface', 'nW') > 0
|
||||
enddef
|
||||
|
||||
def IsFirstLineOfCommand(line_1: dict<any>, line_2: dict<any>): bool # {{{3
|
||||
if line_1.text->Is_IN_KeywordForLoop(line_2.text)
|
||||
return false
|
||||
@@ -1046,13 +1121,8 @@ def Is_IN_KeywordForLoop(line_1: string, line_2: string): bool # {{{3
|
||||
enddef
|
||||
|
||||
def InCommentOrString(): bool # {{{3
|
||||
for synID: number in synstack('.', col('.'))
|
||||
if synIDattr(synID, 'name') =~ '\ccomment\|string\|heredoc'
|
||||
return true
|
||||
endif
|
||||
endfor
|
||||
|
||||
return false
|
||||
return synstack('.', col('.'))
|
||||
->indexof((_, id: number): bool => synIDattr(id, 'name') =~ '\ccomment\|string\|heredoc') >= 0
|
||||
enddef
|
||||
|
||||
def AlsoClosesBlock(line_B: dict<any>): bool # {{{3
|
||||
@@ -1096,6 +1166,10 @@ def EndsWithOpeningBracket(line: dict<any>): bool # {{{3
|
||||
return NonCommentedMatch(line, OPENING_BRACKET_AT_EOL)
|
||||
enddef
|
||||
|
||||
def EndsWithClosingBracket(line: dict<any>): bool # {{{3
|
||||
return NonCommentedMatch(line, CLOSING_BRACKET_AT_EOL)
|
||||
enddef
|
||||
|
||||
def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
|
||||
# Could happen if there is no code above us, and we're not on the 1st line.
|
||||
# In that case, `PrevCodeLine()` returns `{lnum: 0, line: ''}`.
|
||||
@@ -1103,16 +1177,6 @@ def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
|
||||
return false
|
||||
endif
|
||||
|
||||
if line.text =~ PLUS_MINUS_COMMAND
|
||||
return false
|
||||
endif
|
||||
|
||||
# In `argdelete *`, `*` is not a multiplication operator.
|
||||
# TODO: Other commands can accept `*` as an argument. Handle them too.
|
||||
if line.text =~ '\<argd\%[elete]\s\+\*\s*$'
|
||||
return false
|
||||
endif
|
||||
|
||||
# Technically, that's wrong. A line might start with a range and end with a
|
||||
# line continuation symbol. But it's unlikely. And it's useful to assume the
|
||||
# opposite because it prevents us from conflating a mark with an operator or
|
||||
@@ -1179,24 +1243,7 @@ def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
|
||||
return false
|
||||
endif
|
||||
|
||||
# `:help cd-`
|
||||
if line.text =~ CD_COMMAND
|
||||
return false
|
||||
endif
|
||||
|
||||
# At the end of a mapping, any character might appear; e.g. a paren:
|
||||
#
|
||||
# nunmap <buffer> (
|
||||
#
|
||||
# Don't conflate this with a line continuation symbol.
|
||||
if line.text =~ MAPPING_COMMAND
|
||||
return false
|
||||
endif
|
||||
|
||||
# not a comparison operator
|
||||
# vv
|
||||
# normal! ==
|
||||
if line.text =~ NORMAL_COMMAND
|
||||
if line.text =~ TRICKY_COMMANDS
|
||||
return false
|
||||
endif
|
||||
|
||||
|
||||
@@ -22,8 +22,7 @@ let s:maxoff = 50 " maximum number of lines to look backwards for ()
|
||||
function s:SearchBracket(fromlnum, flags)
|
||||
return searchpairpos('[[({]', '', '[])}]', a:flags,
|
||||
\ {-> synstack('.', col('.'))
|
||||
\ ->map({_, id -> id->synIDattr('name')})
|
||||
\ ->match('\%(Comment\|Todo\|String\)$') >= 0},
|
||||
\ ->indexof({_, id -> synIDattr(id, 'name') =~ '\%(Comment\|Todo\|String\)$'}) >= 0},
|
||||
\ [0, a:fromlnum - s:maxoff]->max(), g:python_indent.searchpair_timeout)
|
||||
endfunction
|
||||
|
||||
@@ -157,15 +156,13 @@ function python#GetIndent(lnum, ...)
|
||||
" the start of the comment. synID() is slow, a linear search would take
|
||||
" too long on a long line.
|
||||
if synstack(plnum, pline_len)
|
||||
\ ->map({_, id -> id->synIDattr('name')})
|
||||
\ ->match('\%(Comment\|Todo\)$') >= 0
|
||||
\ ->indexof({_, id -> synIDattr(id, 'name') =~ '\%(Comment\|Todo\)$'}) >= 0
|
||||
let min = 1
|
||||
let max = pline_len
|
||||
while min < max
|
||||
let col = (min + max) / 2
|
||||
if synstack(plnum, col)
|
||||
\ ->map({_, id -> id->synIDattr('name')})
|
||||
\ ->match('\%(Comment\|Todo\)$') >= 0
|
||||
\ ->indexof({_, id -> synIDattr(id, 'name') =~ '\%(Comment\|Todo\)$'}) >= 0
|
||||
let max = col
|
||||
else
|
||||
let min = col + 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim autoload file for the tohtml plugin.
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2019 Aug 16
|
||||
" Last Change: 2023 Jan 01
|
||||
"
|
||||
" Additional contributors:
|
||||
"
|
||||
@@ -351,63 +351,65 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
|
||||
let s:old_magic = &magic
|
||||
set magic
|
||||
|
||||
if s:settings.use_xhtml
|
||||
if s:settings.encoding != ""
|
||||
let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
|
||||
else
|
||||
let xml_line = "<?xml version=\"1.0\"?>"
|
||||
endif
|
||||
let tag_close = ' />'
|
||||
endif
|
||||
|
||||
let style = [s:settings.use_xhtml ? "" : '-->']
|
||||
let body_line = ''
|
||||
|
||||
let html = []
|
||||
let s:html5 = 0
|
||||
if s:settings.use_xhtml
|
||||
call add(html, xml_line)
|
||||
endif
|
||||
if s:settings.use_xhtml
|
||||
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
|
||||
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
|
||||
elseif s:settings.use_css && !s:settings.no_pre
|
||||
call add(html, "<!DOCTYPE html>")
|
||||
call add(html, '<html>')
|
||||
let s:html5 = 1
|
||||
else
|
||||
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
|
||||
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
|
||||
call add(html, '<html>')
|
||||
endif
|
||||
call add(html, '<head>')
|
||||
|
||||
" include encoding as close to the top as possible, but only if not already
|
||||
" contained in XML information
|
||||
if s:settings.encoding != "" && !s:settings.use_xhtml
|
||||
if s:html5
|
||||
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
|
||||
else
|
||||
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
|
||||
if !s:settings.no_doc
|
||||
if s:settings.use_xhtml
|
||||
if s:settings.encoding != ""
|
||||
let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
|
||||
else
|
||||
let xml_line = "<?xml version=\"1.0\"?>"
|
||||
endif
|
||||
let tag_close = ' />'
|
||||
endif
|
||||
|
||||
let style = [s:settings.use_xhtml ? "" : '-->']
|
||||
let body_line = ''
|
||||
|
||||
let s:html5 = 0
|
||||
if s:settings.use_xhtml
|
||||
call add(html, xml_line)
|
||||
endif
|
||||
if s:settings.use_xhtml
|
||||
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
|
||||
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
|
||||
elseif s:settings.use_css && !s:settings.no_pre
|
||||
call add(html, "<!DOCTYPE html>")
|
||||
call add(html, '<html>')
|
||||
let s:html5 = 1
|
||||
else
|
||||
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
|
||||
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
|
||||
call add(html, '<html>')
|
||||
endif
|
||||
call add(html, '<head>')
|
||||
|
||||
" include encoding as close to the top as possible, but only if not already
|
||||
" contained in XML information
|
||||
if s:settings.encoding != "" && !s:settings.use_xhtml
|
||||
if s:html5
|
||||
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
|
||||
else
|
||||
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
|
||||
endif
|
||||
endif
|
||||
|
||||
call add(html, '<title>diff</title>')
|
||||
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
|
||||
call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
|
||||
call add(html, '<meta name="settings" content="'.
|
||||
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
|
||||
\ ',prevent_copy='.s:settings.prevent_copy.
|
||||
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
|
||||
\ '"'.tag_close)
|
||||
call add(html, '<meta name="colorscheme" content="'.
|
||||
\ (exists('g:colors_name')
|
||||
\ ? g:colors_name
|
||||
\ : 'none'). '"'.tag_close)
|
||||
|
||||
call add(html, '</head>')
|
||||
let body_line_num = len(html)
|
||||
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
|
||||
endif
|
||||
|
||||
call add(html, '<title>diff</title>')
|
||||
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
|
||||
call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
|
||||
call add(html, '<meta name="settings" content="'.
|
||||
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
|
||||
\ ',prevent_copy='.s:settings.prevent_copy.
|
||||
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
|
||||
\ '"'.tag_close)
|
||||
call add(html, '<meta name="colorscheme" content="'.
|
||||
\ (exists('g:colors_name')
|
||||
\ ? g:colors_name
|
||||
\ : 'none'). '"'.tag_close)
|
||||
|
||||
call add(html, '</head>')
|
||||
let body_line_num = len(html)
|
||||
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
|
||||
call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
|
||||
|
||||
call add(html, '<tr>')
|
||||
@@ -430,47 +432,53 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
|
||||
" When not using CSS or when using xhtml, the <body> line can be important.
|
||||
" Assume it will be the same for all buffers and grab it from the first
|
||||
" buffer. Similarly, need to grab the body end line as well.
|
||||
if body_line == ''
|
||||
if !s:settings.no_doc
|
||||
if body_line == ''
|
||||
1
|
||||
call search('<body')
|
||||
let body_line = getline('.')
|
||||
$
|
||||
call search('</body>', 'b')
|
||||
let s:body_end_line = getline('.')
|
||||
endif
|
||||
|
||||
" Grab the style information. Some of this will be duplicated so only insert
|
||||
" it if it's not already there. {{{
|
||||
1
|
||||
call search('<body')
|
||||
let body_line = getline('.')
|
||||
$
|
||||
call search('</body>', 'b')
|
||||
let s:body_end_line = getline('.')
|
||||
endif
|
||||
|
||||
" Grab the style information. Some of this will be duplicated so only insert
|
||||
" it if it's not already there. {{{
|
||||
1
|
||||
let style_start = search('^<style\( type="text/css"\)\?>')
|
||||
1
|
||||
let style_end = search('^</style>')
|
||||
if style_start > 0 && style_end > 0
|
||||
let buf_styles = getline(style_start + 1, style_end - 1)
|
||||
for a_style in buf_styles
|
||||
if index(style, a_style) == -1
|
||||
if diff_style_start == 0
|
||||
if a_style =~ '\<Diff\(Change\|Text\|Add\|Delete\)'
|
||||
let diff_style_start = len(style)-1
|
||||
let style_start = search('^<style\( type="text/css"\)\?>')
|
||||
1
|
||||
let style_end = search('^</style>')
|
||||
if style_start > 0 && style_end > 0
|
||||
let buf_styles = getline(style_start + 1, style_end - 1)
|
||||
for a_style in buf_styles
|
||||
if index(style, a_style) == -1
|
||||
if diff_style_start == 0
|
||||
if a_style =~ '\<Diff\(Change\|Text\|Add\|Delete\)'
|
||||
let diff_style_start = len(style)-1
|
||||
endif
|
||||
endif
|
||||
call insert(style, a_style, insert_index)
|
||||
let insert_index += 1
|
||||
endif
|
||||
call insert(style, a_style, insert_index)
|
||||
let insert_index += 1
|
||||
endif
|
||||
endfor
|
||||
endif " }}}
|
||||
endfor
|
||||
endif " }}}
|
||||
|
||||
" everything new will get added before the diff styles so diff highlight
|
||||
" properly overrides normal highlight
|
||||
if diff_style_start != 0
|
||||
let insert_index = diff_style_start
|
||||
" everything new will get added before the diff styles so diff highlight
|
||||
" properly overrides normal highlight
|
||||
if diff_style_start != 0
|
||||
let insert_index = diff_style_start
|
||||
endif
|
||||
|
||||
" Delete those parts that are not needed so we can include the rest into the
|
||||
" resulting table.
|
||||
1,/^<body.*\%(\n<!--.*-->\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_
|
||||
$
|
||||
?</body>?,$d_
|
||||
elseif !s:settings.no_modeline
|
||||
" remove modeline from source files if it is included and we haven't deleted
|
||||
" due to removing html footer already
|
||||
$d
|
||||
endif
|
||||
|
||||
" Delete those parts that are not needed so we can include the rest into the
|
||||
" resulting table.
|
||||
1,/^<body.*\%(\n<!--.*-->\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_
|
||||
$
|
||||
?</body>?,$d_
|
||||
let temp = getline(1,'$')
|
||||
" clean out id on the main content container because we already set it on
|
||||
" the table
|
||||
@@ -478,7 +486,11 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
|
||||
" undo deletion of start and end part
|
||||
" so we can later save the file as valid html
|
||||
" TODO: restore using grabbed lines if undolevel is 1?
|
||||
normal! 2u
|
||||
if !s:settings.no_doc
|
||||
normal! 2u
|
||||
elseif !s:settings.no_modeline
|
||||
normal! u
|
||||
endif
|
||||
if s:settings.use_css
|
||||
call add(html, '<td><div>')
|
||||
elseif s:settings.use_xhtml
|
||||
@@ -495,17 +507,23 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
|
||||
quit!
|
||||
endfor
|
||||
|
||||
let html[body_line_num] = body_line
|
||||
if !s:settings.no_doc
|
||||
let html[body_line_num] = body_line
|
||||
endif
|
||||
|
||||
call add(html, '</tr>')
|
||||
call add(html, '</table>')
|
||||
call add(html, s:body_end_line)
|
||||
call add(html, '</html>')
|
||||
if !s:settings.no_doc
|
||||
call add(html, s:body_end_line)
|
||||
call add(html, '</html>')
|
||||
endif
|
||||
|
||||
" The generated HTML is admittedly ugly and takes a LONG time to fold.
|
||||
" Make sure the user doesn't do syntax folding when loading a generated file,
|
||||
" using a modeline.
|
||||
call add(html, '<!-- vim: set foldmethod=manual : -->')
|
||||
if !s:settings.no_modeline
|
||||
call add(html, '<!-- vim: set foldmethod=manual : -->')
|
||||
endif
|
||||
|
||||
let i = 1
|
||||
let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html")
|
||||
@@ -542,129 +560,131 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
|
||||
|
||||
call append(0, html)
|
||||
|
||||
if len(style) > 0
|
||||
1
|
||||
let style_start = search('^</head>')-1
|
||||
if !s:settings.no_doc
|
||||
if len(style) > 0
|
||||
1
|
||||
let style_start = search('^</head>')-1
|
||||
|
||||
" add required javascript in reverse order so we can just call append again
|
||||
" and again without adjusting {{{
|
||||
" add required javascript in reverse order so we can just call append again
|
||||
" and again without adjusting {{{
|
||||
|
||||
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
|
||||
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
|
||||
|
||||
" insert script closing tag if needed
|
||||
if s:uses_script
|
||||
call append(style_start, [
|
||||
\ '',
|
||||
\ s:settings.use_xhtml ? '//]]>' : '-->',
|
||||
\ "</script>"
|
||||
\ ])
|
||||
endif
|
||||
|
||||
" insert javascript to get IDs from line numbers, and to open a fold before
|
||||
" jumping to any lines contained therein
|
||||
if s:settings.line_ids
|
||||
call append(style_start, [
|
||||
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
|
||||
\ " * we corrected the raw number to a line ID.",
|
||||
\ " */",
|
||||
\ " if (lineElem) {",
|
||||
\ " lineElem.scrollIntoView(true);",
|
||||
\ " }",
|
||||
\ " return true;",
|
||||
\ "}",
|
||||
\ "if ('onhashchange' in window) {",
|
||||
\ " window.onhashchange = JumpToLine;",
|
||||
\ "}"
|
||||
\ ])
|
||||
|
||||
if s:settings.dynamic_folds
|
||||
" insert script closing tag if needed
|
||||
if s:uses_script
|
||||
call append(style_start, [
|
||||
\ "",
|
||||
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
|
||||
\ " var node = lineElem;",
|
||||
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
|
||||
\ " {",
|
||||
\ " if (node.className == 'closed-fold')",
|
||||
\ " {",
|
||||
\ " /* toggle open the fold ID (remove window ID) */",
|
||||
\ " toggleFold(node.id.substr(4));",
|
||||
\ " }",
|
||||
\ " node = node.parentNode;",
|
||||
\ " }",
|
||||
\ '',
|
||||
\ s:settings.use_xhtml ? '//]]>' : '-->',
|
||||
\ "</script>"
|
||||
\ ])
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:settings.line_ids
|
||||
call append(style_start, [
|
||||
\ "",
|
||||
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
|
||||
\ "function JumpToLine()",
|
||||
\ "{",
|
||||
\ " var lineNum;",
|
||||
\ " lineNum = window.location.hash;",
|
||||
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
|
||||
\ "",
|
||||
\ " if (lineNum.indexOf('L') == -1) {",
|
||||
\ " lineNum = 'L'+lineNum;",
|
||||
\ " }",
|
||||
\ " if (lineNum.indexOf('W') == -1) {",
|
||||
\ " lineNum = 'W1'+lineNum;",
|
||||
\ " }",
|
||||
\ " var lineElem = document.getElementById(lineNum);"
|
||||
\ ])
|
||||
endif
|
||||
" insert javascript to get IDs from line numbers, and to open a fold before
|
||||
" jumping to any lines contained therein
|
||||
if s:settings.line_ids
|
||||
call append(style_start, [
|
||||
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
|
||||
\ " * we corrected the raw number to a line ID.",
|
||||
\ " */",
|
||||
\ " if (lineElem) {",
|
||||
\ " lineElem.scrollIntoView(true);",
|
||||
\ " }",
|
||||
\ " return true;",
|
||||
\ "}",
|
||||
\ "if ('onhashchange' in window) {",
|
||||
\ " window.onhashchange = JumpToLine;",
|
||||
\ "}"
|
||||
\ ])
|
||||
|
||||
" Insert javascript to toggle matching folds open and closed in all windows,
|
||||
" if dynamic folding is active.
|
||||
if s:settings.dynamic_folds
|
||||
call append(style_start, [
|
||||
\ " function toggleFold(objID)",
|
||||
\ " {",
|
||||
\ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
|
||||
\ " {",
|
||||
\ " var fold;",
|
||||
\ ' fold = document.getElementById("win"+win_num+objID);',
|
||||
\ " if(fold.className == 'closed-fold')",
|
||||
\ " {",
|
||||
\ " fold.className = 'open-fold';",
|
||||
\ " }",
|
||||
\ " else if (fold.className == 'open-fold')",
|
||||
\ " {",
|
||||
\ " fold.className = 'closed-fold';",
|
||||
\ " }",
|
||||
\ " }",
|
||||
\ " }",
|
||||
\ ])
|
||||
endif
|
||||
if s:settings.dynamic_folds
|
||||
call append(style_start, [
|
||||
\ "",
|
||||
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
|
||||
\ " var node = lineElem;",
|
||||
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
|
||||
\ " {",
|
||||
\ " if (node.className == 'closed-fold')",
|
||||
\ " {",
|
||||
\ " /* toggle open the fold ID (remove window ID) */",
|
||||
\ " toggleFold(node.id.substr(4));",
|
||||
\ " }",
|
||||
\ " node = node.parentNode;",
|
||||
\ " }",
|
||||
\ ])
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:uses_script
|
||||
" insert script tag if needed
|
||||
call append(style_start, [
|
||||
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
|
||||
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
|
||||
endif
|
||||
if s:settings.line_ids
|
||||
call append(style_start, [
|
||||
\ "",
|
||||
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
|
||||
\ "function JumpToLine()",
|
||||
\ "{",
|
||||
\ " var lineNum;",
|
||||
\ " lineNum = window.location.hash;",
|
||||
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
|
||||
\ "",
|
||||
\ " if (lineNum.indexOf('L') == -1) {",
|
||||
\ " lineNum = 'L'+lineNum;",
|
||||
\ " }",
|
||||
\ " if (lineNum.indexOf('W') == -1) {",
|
||||
\ " lineNum = 'W1'+lineNum;",
|
||||
\ " }",
|
||||
\ " var lineElem = document.getElementById(lineNum);"
|
||||
\ ])
|
||||
endif
|
||||
|
||||
" Insert styles from all the generated html documents and additional styles
|
||||
" for the table-based layout of the side-by-side diff. The diff should take
|
||||
" up the full browser window (but not more), and be static in size,
|
||||
" horizontally scrollable when the lines are too long. Otherwise, the diff
|
||||
" is pretty useless for really long lines. {{{
|
||||
if s:settings.use_css
|
||||
call append(style_start,
|
||||
\ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
|
||||
\ style+
|
||||
\ [ s:settings.use_xhtml ? '' : '<!--',
|
||||
\ 'table { table-layout: fixed; }',
|
||||
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
|
||||
\ 'table, td, th { border: 1px solid; }',
|
||||
\ 'td { vertical-align: top; }',
|
||||
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
|
||||
\ 'td div { overflow: auto; }',
|
||||
\ s:settings.use_xhtml ? '' : '-->',
|
||||
\ '</style>'
|
||||
\])
|
||||
endif "}}}
|
||||
" Insert javascript to toggle matching folds open and closed in all windows,
|
||||
" if dynamic folding is active.
|
||||
if s:settings.dynamic_folds
|
||||
call append(style_start, [
|
||||
\ " function toggleFold(objID)",
|
||||
\ " {",
|
||||
\ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
|
||||
\ " {",
|
||||
\ " var fold;",
|
||||
\ ' fold = document.getElementById("win"+win_num+objID);',
|
||||
\ " if(fold.className == 'closed-fold')",
|
||||
\ " {",
|
||||
\ " fold.className = 'open-fold';",
|
||||
\ " }",
|
||||
\ " else if (fold.className == 'open-fold')",
|
||||
\ " {",
|
||||
\ " fold.className = 'closed-fold';",
|
||||
\ " }",
|
||||
\ " }",
|
||||
\ " }",
|
||||
\ ])
|
||||
endif
|
||||
|
||||
if s:uses_script
|
||||
" insert script tag if needed
|
||||
call append(style_start, [
|
||||
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
|
||||
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
|
||||
endif
|
||||
|
||||
" Insert styles from all the generated html documents and additional styles
|
||||
" for the table-based layout of the side-by-side diff. The diff should take
|
||||
" up the full browser window (but not more), and be static in size,
|
||||
" horizontally scrollable when the lines are too long. Otherwise, the diff
|
||||
" is pretty useless for really long lines. {{{
|
||||
if s:settings.use_css
|
||||
call append(style_start,
|
||||
\ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
|
||||
\ style+
|
||||
\ [ s:settings.use_xhtml ? '' : '<!--',
|
||||
\ 'table { table-layout: fixed; }',
|
||||
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
|
||||
\ 'table, td, th { border: 1px solid; }',
|
||||
\ 'td { vertical-align: top; }',
|
||||
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
|
||||
\ 'td div { overflow: auto; }',
|
||||
\ s:settings.use_xhtml ? '' : '-->',
|
||||
\ '</style>'
|
||||
\])
|
||||
endif "}}}
|
||||
endif
|
||||
endif
|
||||
|
||||
let &paste = s:old_paste
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 9.0. Last change: 2022 Dec 12
|
||||
*autocmd.txt* For Vim version 9.0. Last change: 2023 Feb 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -64,7 +64,7 @@ Example in Vim9 script: >
|
||||
In legacy script: >
|
||||
call autocmd_add(#{replace: v:true,
|
||||
\ group: 'DemoGroup',
|
||||
\ event: 'BufEnter',
|
||||
\ event: 'BufEnter',
|
||||
\ pattern: '*.txt',
|
||||
\ cmd: 'call DemoBufEnter()'
|
||||
\ })
|
||||
@@ -398,7 +398,7 @@ Name triggered by ~
|
||||
|InsertEnter| starting Insert mode
|
||||
|InsertChange| when typing <Insert> while in Insert or Replace mode
|
||||
|InsertLeave| when leaving Insert mode
|
||||
|InsertLeavePre| just before leaving Insert mode
|
||||
|InsertLeavePre| just before leaving Insert mode
|
||||
|InsertCharPre| when a character was typed in Insert mode, before
|
||||
inserting it
|
||||
|
||||
@@ -611,9 +611,11 @@ CmdlineEnter After moving the cursor to the command line,
|
||||
where the user can type a command or search
|
||||
string; including non-interactive use of ":"
|
||||
in a mapping, but not when using |<Cmd>|.
|
||||
The pattern is matched against the character
|
||||
representing the type of command-line.
|
||||
|cmdwin-char|
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdlineLeave*
|
||||
CmdlineLeave Before leaving the command line; including
|
||||
non-interactive use of ":" in a mapping, but
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*builtin.txt* For Vim version 9.0. Last change: 2022 Dec 23
|
||||
*builtin.txt* For Vim version 9.0. Last change: 2023 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -266,7 +266,7 @@ gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
|
||||
gettagstack([{nr}]) Dict get the tag stack of window {nr}
|
||||
gettext({text}) String lookup translation of {text}
|
||||
getwininfo([{winid}]) List list of info about each window
|
||||
getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
|
||||
getwinpos([{timeout}]) List X and Y coord in pixels of Vim window
|
||||
getwinposx() Number X coord in pixels of the Vim window
|
||||
getwinposy() Number Y coord in pixels of the Vim window
|
||||
getwinvar({nr}, {varname} [, {def}])
|
||||
@@ -382,7 +382,7 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]])
|
||||
max({expr}) Number maximum value of items in {expr}
|
||||
menu_info({name} [, {mode}]) Dict get menu item information
|
||||
min({expr}) Number minimum value of items in {expr}
|
||||
mkdir({name} [, {path} [, {prot}]])
|
||||
mkdir({name} [, {flags} [, {prot}]])
|
||||
Number create directory {name}
|
||||
mode([expr]) String current editing mode
|
||||
mzeval({expr}) any evaluate |MzScheme| expression
|
||||
@@ -2569,8 +2569,7 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
|
||||
extendnew({expr1}, {expr2} [, {expr3}]) *extendnew()*
|
||||
Like |extend()| but instead of adding items to {expr1} a new
|
||||
List or Dictionary is created and returned. {expr1} remains
|
||||
unchanged. Items can still be changed by {expr2}, if you
|
||||
don't want that use |deepcopy()| first.
|
||||
unchanged.
|
||||
|
||||
|
||||
feedkeys({string} [, {mode}]) *feedkeys()*
|
||||
@@ -2995,7 +2994,7 @@ funcref({name} [, {arglist}] [, {dict}])
|
||||
Can also be used as a |method|: >
|
||||
GetFuncname()->funcref([arg])
|
||||
<
|
||||
*function()* *partial* *E700* *E922* *E923*
|
||||
*function()* *partial* *E700* *E923*
|
||||
function({name} [, {arglist}] [, {dict}])
|
||||
Return a |Funcref| variable that refers to function {name}.
|
||||
{name} can be the name of a user defined function or an
|
||||
@@ -3528,7 +3527,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
||||
messages |:messages| suboptions
|
||||
option options
|
||||
packadd optional package |pack-add| names
|
||||
runtime runtime file names |:runtime|
|
||||
runtime |:runtime| completion
|
||||
scriptnames sourced script names |:scriptnames|
|
||||
shellcmd Shell command
|
||||
sign |:sign| suboptions
|
||||
@@ -6261,17 +6260,20 @@ min({expr}) Return the minimum value of all items in {expr}. Example: >
|
||||
mylist->min()
|
||||
|
||||
< *mkdir()* *E739*
|
||||
mkdir({name} [, {path} [, {prot}]])
|
||||
mkdir({name} [, {flags} [, {prot}]])
|
||||
Create directory {name}.
|
||||
|
||||
If {path} contains "p" then intermediate directories are
|
||||
created as necessary. Otherwise it must be "".
|
||||
When {flags} is present it must be a string. An empty string
|
||||
has no effect.
|
||||
|
||||
If {path} contains "D" then {name} is deleted at the end of
|
||||
If {flags} contains "p" then intermediate directories are
|
||||
created as necessary.
|
||||
|
||||
If {flags} contains "D" then {name} is deleted at the end of
|
||||
the current function, as with: >
|
||||
defer delete({name}, 'd')
|
||||
<
|
||||
If {path} contains "R" then {name} is deleted recursively at
|
||||
If {flags} contains "R" then {name} is deleted recursively at
|
||||
the end of the current function, as with: >
|
||||
defer delete({name}, 'rf')
|
||||
< Note that when {name} has more than one part and "p" is used
|
||||
@@ -7148,7 +7150,8 @@ reltimestr({time}) *reltimestr()*
|
||||
call MyFunction()
|
||||
echo reltimestr(reltime(start))
|
||||
< Note that overhead for the commands will be added to the time.
|
||||
The accuracy depends on the system.
|
||||
The accuracy depends on the system. Use reltimefloat() for the
|
||||
greatest accuracy which is nanoseconds on some systems.
|
||||
Leading spaces are used to make the string align nicely. You
|
||||
can use split() to remove it. >
|
||||
echo split(reltimestr(reltime(start)))[0]
|
||||
@@ -7958,7 +7961,7 @@ setcellwidths({list}) *setcellwidths()*
|
||||
terminal, counted in screen cells. The values override
|
||||
'ambiwidth'. Example: >
|
||||
call setcellwidths([
|
||||
\ [0x111, 0x111, 1],
|
||||
\ [0x111, 0x111, 1],
|
||||
\ [0x2194, 0x2199, 2],
|
||||
\ ])
|
||||
|
||||
@@ -7972,7 +7975,7 @@ setcellwidths({list}) *setcellwidths()*
|
||||
{width} must be either 1 or 2, indicating the character width
|
||||
in screen cells. *E1112*
|
||||
An error is given if the argument is invalid, also when a
|
||||
range overlaps with another. *E1113*
|
||||
range overlaps with another. *E1113*
|
||||
|
||||
If the new value causes 'fillchars' or 'listchars' to become
|
||||
invalid it is rejected and an error is given.
|
||||
@@ -8639,8 +8642,9 @@ sort({list} [, {how} [, {dict}]]) *sort()* *E702*
|
||||
|
||||
When {how} is given and it is 'n' then all items will be
|
||||
sorted numerical (Implementation detail: this uses the
|
||||
strtod() function to parse numbers, Strings, Lists, Dicts and
|
||||
Funcrefs will be considered as being 0).
|
||||
strtod() function to parse numbers. Strings, Lists, Dicts and
|
||||
Funcrefs will be considered as being 0). Note that this won't
|
||||
sort a list of strings with numbers!
|
||||
|
||||
When {how} is given and it is 'N' then all items will be
|
||||
sorted numerical. This is like 'n' but a string containing
|
||||
@@ -9808,6 +9812,8 @@ timer_start({time}, {callback} [, {options}])
|
||||
{time} is the waiting time in milliseconds. This is the
|
||||
minimum time before invoking the callback. When the system is
|
||||
busy or Vim is not waiting for input the time will be longer.
|
||||
Zero can be used to execute the callback when Vim is back in
|
||||
the main loop.
|
||||
|
||||
{callback} is the function to call. It can be the name of a
|
||||
function or a |Funcref|. It is called with one argument, which
|
||||
@@ -10551,7 +10557,7 @@ writefile({object}, {fname} [, {flags}])
|
||||
<
|
||||
'D' Delete the file when the current function ends. This
|
||||
works like: >
|
||||
:defer delete({fname})
|
||||
:defer delete({fname})
|
||||
< Fails when not in a function. Also see |:defer|.
|
||||
|
||||
's' fsync() is called after writing the file. This flushes
|
||||
@@ -10748,6 +10754,7 @@ persistent_undo Compiled with support for persistent undo history.
|
||||
postscript Compiled with PostScript file printing.
|
||||
printer Compiled with |:hardcopy| support.
|
||||
profile Compiled with |:profile| support.
|
||||
prof_nsec Profile results are in nano seconds.
|
||||
python Python 2.x interface available. |has-python|
|
||||
python_compiled Compiled with Python 2.x interface. |has-python|
|
||||
python_dynamic Python 2.x interface is dynamically loaded. |has-python|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 9.0. Last change: 2022 Nov 20
|
||||
*change.txt* For Vim version 9.0. Last change: 2023 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -296,7 +296,9 @@ gr{char} Replace the virtual characters under the cursor with
|
||||
{char}. This replaces in screen space, not file
|
||||
space. See |gR| and |Virtual-Replace-mode| for more
|
||||
details. As with |r| a count may be given.
|
||||
{char} can be entered like with |r|.
|
||||
{char} can be entered like with |r|, but characters
|
||||
that have a special meaning in Insert mode, such as
|
||||
most CTRL-keys, cannot be used.
|
||||
|
||||
*digraph-arg*
|
||||
The argument for Normal mode commands like |r| and |t| is a single character.
|
||||
@@ -1033,7 +1035,7 @@ inside of strings can change! Also see 'softtabstop' option. >
|
||||
< to display registers '1' and 'a'. Spaces are allowed
|
||||
in {arg}.
|
||||
|
||||
*:di* *:display*
|
||||
*:di* *:dis* *:display*
|
||||
:di[splay] [arg] Same as :registers.
|
||||
|
||||
*y* *yank*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 9.0. Last change: 2022 Nov 11
|
||||
*cmdline.txt* For Vim version 9.0. Last change: 2023 Feb 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -617,6 +617,7 @@ followed by another Vim command:
|
||||
:read !
|
||||
:scscope
|
||||
:sign
|
||||
:tabdo
|
||||
:tcl
|
||||
:tcldo
|
||||
:tclfile
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 9.0. Last change: 2022 Dec 24
|
||||
*diff.txt* For Vim version 9.0. Last change: 2023 Jan 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -136,7 +136,7 @@ file for a moment and come back to the same file and be in diff mode again.
|
||||
buffers.
|
||||
|
||||
The `:diffoff` command resets the relevant options to the values they had when
|
||||
using `:diffsplit`, `:diffpatch` , `:diffthis`. or starting Vim in diff mode.
|
||||
using `:diffsplit`, `:diffpatch`, `:diffthis`. or starting Vim in diff mode.
|
||||
When using `:diffoff` twice the last saved values are restored.
|
||||
Otherwise they are set to their default value:
|
||||
|
||||
@@ -181,7 +181,7 @@ possible to view the changes you have made to a buffer since the file was
|
||||
loaded. Since Vim doesn't allow having two buffers for the same file, you
|
||||
need another buffer. This command is useful: >
|
||||
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_
|
||||
\ | diffthis | wincmd p | diffthis
|
||||
\ | diffthis | wincmd p | diffthis
|
||||
(this is in |defaults.vim|). Use ":DiffOrig" to see the differences between
|
||||
the current buffer and the file it was loaded from.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 9.0. Last change: 2023 Jan 03
|
||||
*eval.txt* For Vim version 9.0. Last change: 2023 Feb 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1372,7 +1372,7 @@ Note that the dot is also used for String concatenation. To avoid confusion
|
||||
always put spaces around the dot for String concatenation.
|
||||
|
||||
|
||||
expr10(expr1, ...) |Funcref| function call *E1085*
|
||||
expr10(expr1, ...) |Funcref| function call *E1085*
|
||||
|
||||
When expr10 is a |Funcref| type variable, invoke the function it refers to.
|
||||
|
||||
@@ -1654,7 +1654,7 @@ See below |functions|.
|
||||
|
||||
lambda expression *expr-lambda* *lambda*
|
||||
-----------------
|
||||
{args -> expr1} legacy lambda expression *E451*
|
||||
{args -> expr1} legacy lambda expression *E451*
|
||||
(args) => expr1 |Vim9| lambda expression
|
||||
|
||||
A lambda expression creates a new unnamed function which returns the result of
|
||||
@@ -4581,10 +4581,10 @@ The input is in the variable "line", the results in the variables "file",
|
||||
|
||||
getting the scriptnames in a Dictionary ~
|
||||
*scriptnames-dictionary*
|
||||
The |:scriptnames| command can be used to get a list of all script files that
|
||||
have been sourced. There is no equivalent function or variable for this
|
||||
(because it's rarely needed). In case you need to manipulate the list this
|
||||
code can be used: >
|
||||
The `:scriptnames` command can be used to get a list of all script files that
|
||||
have been sourced. There is also the `getscriptinfo()` function, but the
|
||||
information returned is not exactly the same. In case you need to manipulate
|
||||
the output of `scriptnames` this code can be used: >
|
||||
" Get the output of ":scriptnames" in the scriptnames_output variable.
|
||||
let scriptnames_output = ''
|
||||
redir => scriptnames_output
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 9.0. Last change: 2022 Apr 09
|
||||
*filetype.txt* For Vim version 9.0. Last change: 2023 Feb 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -679,7 +679,10 @@ MARKDOWN *ft-markdown-plugin*
|
||||
|
||||
To enable folding use this: >
|
||||
let g:markdown_folding = 1
|
||||
<
|
||||
|
||||
'expandtab' will be set by default. If you do not want that use this: >
|
||||
let g:markdown_recommended_style = 0
|
||||
|
||||
|
||||
PDF *ft-pdf-plugin*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*fold.txt* For Vim version 9.0. Last change: 2022 Nov 26
|
||||
*fold.txt* For Vim version 9.0. Last change: 2023 Jan 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -202,7 +202,7 @@ non-matching marker pairs. Example: >
|
||||
|
||||
/* funcB() {{{2 */
|
||||
void funcB() {}
|
||||
|
||||
< *{{{* *}}}*
|
||||
A fold starts at a "{{{" marker. The following number specifies the fold
|
||||
level. What happens depends on the difference between the current fold level
|
||||
and the level given by the marker:
|
||||
|
||||
@@ -48,7 +48,7 @@ typesetting command. That must be a function that takes a path and returns the
|
||||
command as a List. For example:
|
||||
>
|
||||
def ConTeXtCustomCommand(path: string): list<string>
|
||||
return ['mtxrun', '--script', 'context', '--nonstopmode, path]
|
||||
return ['mtxrun', '--script', 'context', '--nonstopmode', path]
|
||||
enddef
|
||||
|
||||
context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
|
||||
|
||||
@@ -84,7 +84,7 @@ METAFONT buffers, and it is set to 0 by default in MetaPost buffers.
|
||||
Define additional keywords that end indented blocks. For instance, if you
|
||||
define:
|
||||
>
|
||||
g:mp_end_tag = ['\<endfoo\>']
|
||||
g:mp_close_tag = ['\<endfoo\>']
|
||||
<
|
||||
any line starting with `endfoo` will be de-indented compared to its previous
|
||||
line.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 9.0. Last change: 2022 Nov 17
|
||||
*gui.txt* For Vim version 9.0. Last change: 2023 Feb 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -95,11 +95,11 @@ terminal version.
|
||||
|
||||
Recommended place for your personal GUI initializations:
|
||||
Unix $HOME/.gvimrc or $HOME/.vim/gvimrc
|
||||
Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc
|
||||
Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc
|
||||
or $VIM/_gvimrc
|
||||
Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc
|
||||
or $VIM/.gvimrc
|
||||
Haiku $HOME/config/settings/vim/gvimrc
|
||||
Haiku $HOME/config/settings/vim/gvimrc
|
||||
|
||||
The personal initialization files are searched in the order specified above
|
||||
and only the first one that is found is read.
|
||||
@@ -856,7 +856,7 @@ Example for debugger tools: >
|
||||
nnoremenu 1.20 WinBar.Next :Next<CR>
|
||||
nnoremenu 1.30 WinBar.Finish :Finish<CR>
|
||||
nnoremenu 1.40 WinBar.Cont :Continue<CR>
|
||||
<
|
||||
< *hl-ToolbarLine* *hl-ToolbarButton*
|
||||
The window toolbar uses the ToolbarLine and ToolbarButton highlight groups.
|
||||
|
||||
When splitting the window the window toolbar is not copied to the new window.
|
||||
@@ -1181,7 +1181,7 @@ When 'guifont' is set and a valid font is found in it and 'guifontwide' is
|
||||
empty Vim will attempt to find a matching double-width font and set
|
||||
'guifontwide' to it.
|
||||
|
||||
GTK+ GUI only: *guifontwide_gtk*
|
||||
GTK+ GUI only: *guifontwide_gtk*
|
||||
|
||||
If set and valid, 'guifontwide' is always used for double width characters,
|
||||
even if 'encoding' is not set to "utf-8".
|
||||
|
||||
@@ -17,7 +17,7 @@ Vim's Win32 Graphical User Interface *gui-w32* *win32-gui*
|
||||
|
||||
Other relevant documentation:
|
||||
|gui.txt| For generic items of the GUI.
|
||||
|os_win32.txt| For Win32 specific items.
|
||||
|os_win32.txt| For Win32 specific items.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -101,7 +101,7 @@ Help on help files *helphelp*
|
||||
find a tag in a file with the same language as the
|
||||
current file. See |help-translated|.
|
||||
|
||||
*:helpc* *:helpclose*
|
||||
*:helpc* *:helpclose*
|
||||
:helpc[lose] Close one help window, if there is one.
|
||||
Vim will try to restore the window layout (including
|
||||
cursor position) to the same layout it was before
|
||||
|
||||
@@ -857,7 +857,7 @@ You can test what Python version is available with: >
|
||||
if has('python')
|
||||
echo 'there is Python 2.x'
|
||||
endif
|
||||
if has('python3')
|
||||
if has('python3')
|
||||
echo 'there is Python 3.x'
|
||||
endif
|
||||
|
||||
@@ -874,7 +874,7 @@ python support: >
|
||||
echo 'Python 2.x dynamically loaded'
|
||||
endif
|
||||
endif
|
||||
if has('python3_compiled')
|
||||
if has('python3_compiled')
|
||||
echo 'compiled with Python 3.x support'
|
||||
if has('python3_dynamic')
|
||||
echo 'Python 3.x dynamically loaded'
|
||||
|
||||
@@ -236,7 +236,7 @@ tag char note action in Normal mode ~
|
||||
|CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode (no-op)
|
||||
|CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode'
|
||||
CTRL-\ a - z reserved for extensions
|
||||
CTRL-\ others not used
|
||||
CTRL-\ others not used
|
||||
|CTRL-]| CTRL-] :ta to ident under cursor
|
||||
|CTRL-^| CTRL-^ edit Nth alternate file (equivalent to
|
||||
":e #N")
|
||||
@@ -247,7 +247,7 @@ tag char note action in Normal mode ~
|
||||
2 filter Nmove text through the {filter}
|
||||
command
|
||||
|!!| !!{filter} 2 filter N lines through the {filter} command
|
||||
|quote| "{register} use {register} for next delete, yank or put
|
||||
|quote| "{register} use {register} for next delete, yank or put
|
||||
({.%#:} only work with put)
|
||||
|#| # 1 search backward for the Nth occurrence of
|
||||
the ident under the cursor
|
||||
|
||||
@@ -877,7 +877,7 @@ Groß): >
|
||||
|
||||
func Thesaur(findstart, base)
|
||||
if a:findstart
|
||||
return searchpos('\<', 'bnW', line('.'))[1] - 1
|
||||
return searchpos('\<', 'bnW', line('.'))[1] - 1
|
||||
endif
|
||||
let res = []
|
||||
let h = ''
|
||||
@@ -1118,8 +1118,8 @@ cursor column will be replaced with the matches. If the returned value is
|
||||
larger than the cursor column, the cursor column is used.
|
||||
|
||||
Negative return values:
|
||||
-2 To cancel silently and stay in completion mode.
|
||||
-3 To cancel silently and leave completion mode.
|
||||
-2 To cancel silently and stay in completion mode.
|
||||
-3 To cancel silently and leave completion mode.
|
||||
Another negative value: completion starts at the cursor column
|
||||
|
||||
On the second invocation the arguments are:
|
||||
@@ -1176,7 +1176,7 @@ items:
|
||||
item with the same word is already present.
|
||||
empty when non-zero this match will be added even when it is
|
||||
an empty string
|
||||
user_data custom data which is associated with the item and
|
||||
user_data custom data which is associated with the item and
|
||||
available in |v:completed_item|; it can be any type;
|
||||
defaults to an empty string
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 9.0. Last change: 2023 Jan 09
|
||||
*map.txt* For Vim version 9.0. Last change: 2023 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -20,9 +20,10 @@ manual.
|
||||
1.8 Examples |map-examples|
|
||||
1.9 Using mappings |map-typing|
|
||||
1.10 Mapping alt-keys |:map-alt-keys|
|
||||
1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
|
||||
1.12 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol|
|
||||
1.13 Mapping an operator |:map-operator|
|
||||
1.11 Mapping meta-keys |:map-meta-keys|
|
||||
1.12 Mapping in modifyOtherKeys mode |modifyOtherKeys|
|
||||
1.13 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol|
|
||||
1.14 Mapping an operator |:map-operator|
|
||||
2. Abbreviations |abbreviations|
|
||||
3. Local mappings and functions |script-local|
|
||||
4. User-defined commands |user-commands|
|
||||
@@ -794,8 +795,8 @@ otherwise you would not be able to use those commands anymore. Here are a few
|
||||
suggestions:
|
||||
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>,
|
||||
<S-F2>, etc. Note that <F1> is already used for the help command.
|
||||
- Meta-keys (with the ALT key pressed). Depending on your keyboard accented
|
||||
characters may be used as well. |:map-alt-keys|
|
||||
- Any key with the Alt or Meta key pressed. Depending on your keyboard
|
||||
accented characters may be used as well. |:map-alt-keys|
|
||||
- Use the '_' or ',' character and then any other character. The "_" and ","
|
||||
commands do exist in Vim (see |_| and |,|), but you probably never use them.
|
||||
- Use a key that is a synonym for another command. For example: CTRL-P and
|
||||
@@ -844,7 +845,7 @@ option). After that it assumes that the 'q' is to be interpreted as such. If
|
||||
you type slowly, or your system is slow, reset the 'timeout' option. Then you
|
||||
might want to set the 'ttimeout' option.
|
||||
|
||||
*map-precedence*
|
||||
*map-precedence*
|
||||
Buffer-local mappings (defined using |:map-<buffer>|) take precedence over
|
||||
global mappings. When a buffer-local mapping is the same as a global mapping,
|
||||
Vim will use the buffer-local mapping. In addition, Vim will use a complete
|
||||
@@ -922,12 +923,19 @@ in the original Vi, you would get back the text before the first undo).
|
||||
|
||||
1.10 MAPPING ALT-KEYS *:map-alt-keys*
|
||||
|
||||
For a readable mapping command the <A-k> form can be used. Note that <A-k>
|
||||
and <A-K> are different, the latter will use an upper case letter. Actually,
|
||||
<A-K> and <A-S-K> are the same. Instead of "A" you can use "M". If you have
|
||||
an actual Meta modifier key, please see |:map-meta-keys|.
|
||||
|
||||
In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should
|
||||
always work. But in a terminal Vim gets a sequence of bytes and has to figure
|
||||
out whether ALT was pressed or not.
|
||||
|
||||
If the terminal supports the modifyOtherKeys mode and it has been enabled,
|
||||
then Vim can recognize more key combinations, see |modifyOtherKeys| below.
|
||||
The Kitty keyboard protocol works in a similar way, see
|
||||
|kitty-keyboard-protocol|.
|
||||
|
||||
By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
|
||||
character. Most decent terminals can work that way, such as xterm, aterm and
|
||||
@@ -966,7 +974,21 @@ on the terminal; that's a good last resource in case you want to send ESC when
|
||||
using other applications but not when inside Vim.
|
||||
|
||||
|
||||
1.11 MAPPING IN modifyOtherKeys mode *modifyOtherKeys*
|
||||
1.11 MAPPING META-KEYS *:map-meta-keys*
|
||||
|
||||
Mapping keys with the Meta modifier works very similar to using the Alt key.
|
||||
What key on your keyboard produces the Meta modifier depends on your keyboard
|
||||
and configuration.
|
||||
|
||||
Note that mapping <M-a> actually is for using the Alt key. That can be
|
||||
confusing! It cannot be changed, it would not be backwards compatible.
|
||||
|
||||
For the Meta modifier the "T" character is used. For example, to map Meta-b
|
||||
in Insert mode: >
|
||||
:imap <T-b> terrible
|
||||
|
||||
|
||||
1.12 MAPPING IN modifyOtherKeys mode *modifyOtherKeys*
|
||||
|
||||
Xterm and a few other terminals can be put in a mode where keys with modifiers
|
||||
are sent with a special escape code. Vim recognizes these codes and can then
|
||||
@@ -1011,7 +1033,7 @@ enabled when it spots an escape sequence that must have been created by it.
|
||||
To see if Vim detected such an escape sequence use `:verbose map`, the first
|
||||
line will then show "Seen modifyOtherKeys: true" (possibly translated).
|
||||
|
||||
This automatic detection depends on receiving an escape code starting with
|
||||
This automatic detection depends on receiving an escape code starting with
|
||||
"<1b>[27;". This is the normal way xterm sends these key codes. However, if
|
||||
the *formatOtherKeys* resource is set another form is used that is not
|
||||
recognized, therefore you must not set formatOtherKeys.
|
||||
@@ -1028,7 +1050,7 @@ When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
|
||||
Insert mode to avoid every key with a modifier causing Insert mode to end.
|
||||
|
||||
|
||||
1.12 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol*
|
||||
1.13 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol*
|
||||
|
||||
If the value of 'term' contains "kitty" then Vim will send out an escape
|
||||
sequence to enable the Kitty keyboard protocol. This can be changed with the
|
||||
@@ -1051,11 +1073,11 @@ translated). The meaning of {value}:
|
||||
On protocol is used
|
||||
Disabled protocol was used but expected to have been disabled
|
||||
by 't_TE'
|
||||
Cleared protocol expected to have beeen disabled by 't_TE',
|
||||
previous state is unknown
|
||||
Cleared protocol expected to have been disabled by 't_TE',
|
||||
previous state is unknown
|
||||
|
||||
|
||||
1.13 MAPPING AN OPERATOR *:map-operator*
|
||||
1.14 MAPPING AN OPERATOR *:map-operator*
|
||||
|
||||
An operator is used before a {motion} command. To define your own operator
|
||||
you must create a mapping that first sets the 'operatorfunc' option and then
|
||||
@@ -1195,7 +1217,7 @@ non-id The "non-id" type ends in a non-keyword character, the other
|
||||
Examples of strings that cannot be abbreviations: "a.b", "#def", "a b", "_$r"
|
||||
|
||||
An abbreviation is only recognized when you type a non-keyword character.
|
||||
This can also be the <Esc> that ends insert mode or the <CR> that ends a
|
||||
This can also be the <Esc> that ends Insert mode or the <CR> that ends a
|
||||
command. The non-keyword character which ends the abbreviation is inserted
|
||||
after the expanded abbreviation. An exception to this is the character <C-]>,
|
||||
which is used to expand an abbreviation without inserting any extra
|
||||
@@ -1399,12 +1421,13 @@ this, they can be made local to the script.
|
||||
|
||||
*<SID>* *<SNR>* *E81*
|
||||
The string "<SID>" can be used in a mapping or menu. This requires that the
|
||||
'<' flag is not present in 'cpoptions'.
|
||||
'<' flag is not present in 'cpoptions'. This is useful if you have a
|
||||
script-local function that you want to call from a mapping in the same script.
|
||||
When executing the map command, Vim will replace "<SID>" with the special
|
||||
key code <SNR>, followed by a number that's unique for the script, and an
|
||||
underscore. Example: >
|
||||
:map <SID>Add
|
||||
could define a mapping "<SNR>23_Add".
|
||||
would define a mapping "<SNR>23_Add".
|
||||
|
||||
When defining a function in a script, "s:" can be prepended to the name to
|
||||
make it local to the script (in |Vim9| script functions without a prefix are
|
||||
@@ -1706,7 +1729,7 @@ by default correspond to the current line, last line and the whole buffer,
|
||||
relate to arguments, (loaded) buffers, windows or tab pages.
|
||||
|
||||
Possible values are (second column is the short name used in listing):
|
||||
-addr=lines Range of lines (this is the default for -range)
|
||||
-addr=lines Range of lines (this is the default for -range)
|
||||
-addr=arguments arg Range for arguments
|
||||
-addr=buffers buf Range for buffers (also not loaded buffers)
|
||||
-addr=loaded_buffers load Range for loaded buffers
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.0. Last change: 2023 Jan 02
|
||||
*options.txt* For Vim version 9.0. Last change: 2023 Feb 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1547,7 +1547,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
case mapping, the current locale is not effective.
|
||||
This probably only matters for Turkish.
|
||||
|
||||
*'cdhome'* *'cdh'*
|
||||
*'cdhome'* *'cdh'* *'nocdhome'* *'nocdh'*
|
||||
'cdhome' 'cdh' boolean (default: off)
|
||||
global
|
||||
When on, |:cd|, |:tcd| and |:lcd| without an argument changes the
|
||||
@@ -1899,7 +1899,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
'allowrevins' + off no CTRL-_ command
|
||||
'antialias' + off don't use antialiased fonts
|
||||
'arabic' + off reset arabic-related options
|
||||
'arabic' + off reset arabic-related options
|
||||
'arabicshape' + on correct character shapes
|
||||
'backspace' + "" normal backspace
|
||||
'backup' + off no backup file
|
||||
@@ -4198,6 +4198,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
T:DiffText,>:SignColumn,-:Conceal,
|
||||
B:SpellBad,P:SpellCap,R:SpellRare,
|
||||
L:SpellLocal,+:Pmenu,=:PmenuSel,
|
||||
[:PmenuKind,]:PmenuKindSel,
|
||||
{:PmenuExtra,}:PmenuExtraSel,
|
||||
x:PmenuSbar,X:PmenuThumb,*:TabLine,
|
||||
#:TabLineSel,_:TabLineFill,!:CursorColumn,
|
||||
.:CursorLine,o:ColorColumn,q:QuickFixLine,
|
||||
@@ -4254,6 +4256,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|hl-SpellLocal| L word from other region |spell|
|
||||
|hl-Pmenu| + popup menu normal line
|
||||
|hl-PmenuSel| = popup menu selected line
|
||||
|hl-PmenuKind| [ popup menu "kind" normal line
|
||||
|hl-PmenuKindSel| ] popup menu "kind" selected line
|
||||
|hl-PmenuExtra| { popup menu "kind" normal line
|
||||
|hl-PmenuExtraSel| } popup menu "kind" selected line
|
||||
|hl-PmenuSbar| x popup menu scrollbar
|
||||
|hl-PmenuThumb| X popup menu scrollbar thumb
|
||||
|
||||
@@ -4911,7 +4917,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
< This means that when 'term' contains "kitty, "foot" or "wezterm"
|
||||
somewhere then the "kitty" protocol is used. When 'term' contains
|
||||
"xterm" somewhere, then the "mok2" protocol is used.
|
||||
"xterm" somewhere, then the "mok2" protocol is used.
|
||||
|
||||
The first match is used, thus if you want to have "kitty" use the
|
||||
kitty protocol, but "badkitty" not, then you should match "badkitty"
|
||||
@@ -4943,7 +4949,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
empty. Then set the 'term' option to have it take effect: >
|
||||
set keyprotocol=
|
||||
let &term = &term
|
||||
|
||||
<
|
||||
|
||||
*'keywordprg'* *'kp'*
|
||||
'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help",
|
||||
@@ -5201,8 +5207,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
are left blank.
|
||||
*lcs-multispace*
|
||||
multispace:c...
|
||||
One or more characters to use cyclically to show for
|
||||
multiple consecutive spaces. Overrides the "space"
|
||||
One or more characters to use cyclically to show for
|
||||
multiple consecutive spaces. Overrides the "space"
|
||||
setting, except for single spaces. When omitted, the
|
||||
"space" setting is used. For example,
|
||||
`:set listchars=multispace:---+` shows ten consecutive
|
||||
@@ -5665,7 +5671,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
The 'mousemodel' option is set by the |:behave| command.
|
||||
|
||||
*'mousemoveevent'* *'mousemev'*
|
||||
*'mousemoveevent'* *'mousemev'* *'nomousemoveevent'* *'nomousemev'*
|
||||
'mousemoveevent' 'mousemev' boolean (default off)
|
||||
global
|
||||
{only works in the GUI}
|
||||
@@ -7157,7 +7163,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
A don't give the "ATTENTION" message when an existing *shm-A*
|
||||
swap file is found
|
||||
I don't give the intro message when starting Vim, *shm-I*
|
||||
see |:intro|
|
||||
see |:intro|
|
||||
c don't give |ins-completion-menu| messages; for *shm-c*
|
||||
example, "-- XXX completion (YYY)", "match 1 of 2", "The only
|
||||
match", "Pattern not found", "Back at original", etc.
|
||||
@@ -7167,8 +7173,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
F don't give the file info when editing a file, like *shm-F*
|
||||
`:silent` was used for the command; note that this also
|
||||
affects messages from autocommands
|
||||
S do not show search count message when searching, e.g. *shm-S*
|
||||
"[1/5]"
|
||||
S do not show search count message when searching, e.g. *shm-S*
|
||||
"[1/5]"
|
||||
|
||||
This gives you the opportunity to avoid that a change between buffers
|
||||
requires you to hit <Enter>, but still gives as useful a message as
|
||||
@@ -7345,9 +7351,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not available when compiled without the |+signs|
|
||||
feature}
|
||||
Whether or not to draw the signcolumn. Valid values are:
|
||||
"auto" only when there is a sign to display
|
||||
"no" never
|
||||
"yes" always
|
||||
"auto" only when there is a sign to display
|
||||
"no" never
|
||||
"yes" always
|
||||
"number" display signs in the 'number' column. If the number
|
||||
column is not present, then behaves like "auto".
|
||||
|
||||
@@ -7776,7 +7782,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
mark. This information is used for mouse clicks.
|
||||
< - Where to truncate line if too long. Default is at the start.
|
||||
No width fields allowed.
|
||||
= - Separation point between left and right aligned items.
|
||||
= - Separation point between alignment sections. Each section will
|
||||
be separated by an equal number of spaces. With one %= what
|
||||
comes after it will be right-aligned. With two %= there is a
|
||||
middle part, with white space left and right of it.
|
||||
No width fields allowed.
|
||||
# - Set highlight group. The name must follow and then a # again.
|
||||
Thus use %#HLname# for highlight group HLname. The same
|
||||
@@ -7784,8 +7793,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
windows.
|
||||
* - Set highlight group to User{N}, where {N} is taken from the
|
||||
minwid field, e.g. %1*. Restore normal highlight with %* or %0*.
|
||||
The difference between User{N} and StatusLine will be applied
|
||||
to StatusLineNC for the statusline of non-current windows.
|
||||
The difference between User{N} and StatusLine will be applied to
|
||||
StatusLineNC for the statusline of non-current windows.
|
||||
The number N must be between 1 and 9. See |hl-User1..9|
|
||||
|
||||
When displaying a flag, Vim removes the leading comma, if any, when
|
||||
@@ -8231,7 +8240,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:set encoding=utf-8
|
||||
< You need to do this when your system has no locale support for UTF-8.
|
||||
|
||||
*'termguicolors'* *'tgc'* *E954*
|
||||
*'termguicolors'* *'tgc'* *'notermguicolors'* *'notgc'* *E954*
|
||||
'termguicolors' 'tgc' boolean (default off)
|
||||
global
|
||||
{not available when compiled without the
|
||||
|
||||
@@ -10,7 +10,7 @@ This file contains the particulars for the z/OS UNIX version of Vim.
|
||||
2. Putty and Colors |zOS-PuTTY|
|
||||
3. Motif Problems |zOS-Motif|
|
||||
4. Bugs |zOS-Bugs|
|
||||
5. Limitations |zOS-limitations|
|
||||
5. Limitations |zOS-limitations|
|
||||
6. Open source on z/OS UNIX |zOS-open-source|
|
||||
|
||||
Contributors: ~
|
||||
@@ -75,7 +75,7 @@ There is no solution for this yet.
|
||||
this occurs in both the terminal and gui versions.
|
||||
|
||||
==============================================================================
|
||||
5. Limitations *OS390-limitations* *zOS-limitations*
|
||||
5. Limitations *OS390-limitations* *zOS-limitations*
|
||||
|
||||
- No binary search in tag files.
|
||||
The program /bin/sort sorts by ASCII value by default. This program is
|
||||
|
||||
@@ -203,7 +203,7 @@ You can check that everything is at the right place with the :version command.
|
||||
|
||||
Example LOGIN.COM: >
|
||||
|
||||
$ define/nolog VIM DKA0:[UTIL.VIM81]
|
||||
$ define/nolog VIM DKA0:[UTIL.VIM81]
|
||||
$ vi*m :== mcr VIM:VIM.EXE
|
||||
$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
|
||||
$ set disp/create/node=192.168.10.202/trans=tcpip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 9.0. Last change: 2022 Sep 24
|
||||
*pattern.txt* For Vim version 9.0. Last change: 2023 Feb 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -101,6 +101,8 @@ g# Like "#", but don't put "\<" and "\>" around the word.
|
||||
*gd*
|
||||
gd Goto local Declaration. When the cursor is on a local
|
||||
variable, this command will jump to its declaration.
|
||||
This was made to work for C code, in other languages
|
||||
it may not work well.
|
||||
First Vim searches for the start of the current
|
||||
function, just like "[[". If it is not found the
|
||||
search stops in line 1. If it is found, Vim goes back
|
||||
@@ -1142,21 +1144,21 @@ x A single character, with no special meaning, matches itself
|
||||
are supported:
|
||||
Name Func Contents ~
|
||||
*[:alnum:]* [:alnum:] isalnum ASCII letters and digits
|
||||
*[:alpha:]* [:alpha:] isalpha ASCII letters
|
||||
*[:blank:]* [:blank:] space and tab
|
||||
*[:cntrl:]* [:cntrl:] iscntrl ASCII control characters
|
||||
*[:digit:]* [:digit:] decimal digits '0' to '9'
|
||||
*[:alpha:]* [:alpha:] isalpha ASCII letters
|
||||
*[:blank:]* [:blank:] space and tab
|
||||
*[:cntrl:]* [:cntrl:] iscntrl ASCII control characters
|
||||
*[:digit:]* [:digit:] decimal digits '0' to '9'
|
||||
*[:graph:]* [:graph:] isgraph ASCII printable characters excluding
|
||||
space
|
||||
*[:lower:]* [:lower:] (1) lowercase letters (all letters when
|
||||
'ignorecase' is used)
|
||||
*[:print:]* [:print:] (2) printable characters including space
|
||||
*[:print:]* [:print:] (2) printable characters including space
|
||||
*[:punct:]* [:punct:] ispunct ASCII punctuation characters
|
||||
*[:space:]* [:space:] whitespace characters: space, tab, CR,
|
||||
*[:space:]* [:space:] whitespace characters: space, tab, CR,
|
||||
NL, vertical tab, form feed
|
||||
*[:upper:]* [:upper:] (3) uppercase letters (all letters when
|
||||
'ignorecase' is used)
|
||||
*[:xdigit:]* [:xdigit:] hexadecimal digits: 0-9, a-f, A-F
|
||||
*[:xdigit:]* [:xdigit:] hexadecimal digits: 0-9, a-f, A-F
|
||||
*[:return:]* [:return:] the <CR> character
|
||||
*[:tab:]* [:tab:] the <Tab> character
|
||||
*[:escape:]* [:escape:] the <Esc> character
|
||||
|
||||
@@ -24,7 +24,7 @@ get the latest versions of scripts listed therein from http://vim.sf.net/.
|
||||
|
||||
==============================================================================
|
||||
1. Contents *glvs-contents* *glvs* *getscript*
|
||||
*GetLatestVimScripts*
|
||||
*GetLatestVimScripts*
|
||||
|
||||
1. Contents........................................: |glvs-contents|
|
||||
2. GetLatestVimScripts -- Getting Started..........: |glvs-install|
|
||||
@@ -116,7 +116,7 @@ reflect the latest version of script(s) so downloaded.
|
||||
|
||||
==============================================================================
|
||||
4. GetLatestVimScripts Data File *getscript-data* *glvs-data*
|
||||
*:GetLatestVimScripts_dat*
|
||||
*:GetLatestVimScripts_dat*
|
||||
The data file <GetLatestVimScripts.dat> must have for its first two lines
|
||||
the following text:
|
||||
>
|
||||
@@ -330,7 +330,7 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim.
|
||||
This variable holds the options to be used with the
|
||||
g:GetLatestVimScripts_wget command.
|
||||
>
|
||||
g:GetLatestVimScripts_allowautoinstall
|
||||
g:GetLatestVimScripts_allowautoinstall
|
||||
< default= 1
|
||||
This variable indicates whether GetLatestVimScripts is allowed
|
||||
to attempt to automatically install scripts. Furthermore, the
|
||||
|
||||
@@ -1085,8 +1085,8 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
|
||||
<c-tab> Shrink/expand a netrw/explore window |netrw-c-tab|
|
||||
- Makes Netrw go up one directory |netrw--|
|
||||
a Cycles between normal display, |netrw-a|
|
||||
hiding (suppress display of files matching g:netrw_list_hide)
|
||||
and showing (display only files which match g:netrw_list_hide)
|
||||
hiding (suppress display of files matching g:netrw_list_hide)
|
||||
and showing (display only files which match g:netrw_list_hide)
|
||||
cd Make browsing directory the current directory |netrw-cd|
|
||||
C Setting the editing window |netrw-C|
|
||||
d Make a directory |netrw-d|
|
||||
@@ -1118,7 +1118,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
|
||||
mX Apply arbitrary shell command to marked files en bloc|netrw-mX|
|
||||
mz Compress/decompress marked files |netrw-mz|
|
||||
o Enter the file/directory under the cursor in a new |netrw-o|
|
||||
browser window. A horizontal split is used.
|
||||
browser window. A horizontal split is used.
|
||||
O Obtain a file specified by cursor |netrw-O|
|
||||
p Preview the file |netrw-p|
|
||||
P Browse in the previously used window |netrw-P|
|
||||
@@ -1134,7 +1134,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
|
||||
u Change to recently-visited directory |netrw-u|
|
||||
U Change to subsequently-visited directory |netrw-U|
|
||||
v Enter the file/directory under the cursor in a new |netrw-v|
|
||||
browser window. A vertical split is used.
|
||||
browser window. A vertical split is used.
|
||||
x View file with an associated program |netrw-x|
|
||||
X Execute filename under cursor via |system()| |netrw-X|
|
||||
|
||||
@@ -2271,7 +2271,7 @@ Example:
|
||||
...
|
||||
|
||||
|
||||
MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2
|
||||
MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2
|
||||
(See |netrw-mf| and |netrw-mr| for how to mark files)
|
||||
(uses the global marked-file list)
|
||||
|
||||
@@ -2620,7 +2620,7 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
Used to change access permission for a file.
|
||||
|
||||
*g:netrw_clipboard* =1
|
||||
By default, netrw will attempt to insure that
|
||||
By default, netrw will attempt to insure that
|
||||
the clipboard's values will remain unchanged.
|
||||
However, some users report that they have
|
||||
speed problems with this; consequently, this
|
||||
@@ -2768,7 +2768,7 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
escaped before applying glob()
|
||||
|
||||
*g:netrw_gx* ="<cfile>"
|
||||
This option controls how gx (|netrw-gx|) picks
|
||||
This option controls how gx (|netrw-gx|) picks
|
||||
up the text under the cursor. See |expand()|
|
||||
for possibilities.
|
||||
|
||||
@@ -2834,11 +2834,11 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
directory (|netrw-mt|, |netrw-mc|)
|
||||
|
||||
*g:netrw_localcopycmdopt* ='' Linux/Unix/MacOS/Cygwin
|
||||
=' \c copy' Windows
|
||||
=' \c copy' Windows
|
||||
Options for the |g:netrw_localcopycmd|
|
||||
|
||||
*g:netrw_localcopydircmd* ="cp" Linux/Unix/MacOS/Cygwin
|
||||
=expand("$COMSPEC") Windows
|
||||
=expand("$COMSPEC") Windows
|
||||
Copies directories to target directory.
|
||||
(|netrw-mc|, |netrw-mt|)
|
||||
|
||||
@@ -2864,7 +2864,7 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
Options for |g:netrw_localmovecmd|
|
||||
|
||||
*g:netrw_localrmdir* ="rmdir" Linux/Unix/MacOS/Cygwin
|
||||
=expand("$COMSPEC") Windows
|
||||
=expand("$COMSPEC") Windows
|
||||
Remove directory command (rmdir)
|
||||
This variable is only used if your vim is
|
||||
earlier than 7.4 or if your vim doesn't
|
||||
@@ -2900,10 +2900,10 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
(see |'ballooneval'|)
|
||||
|
||||
*g:netrw_sizestyle* not defined: actual bytes (default)
|
||||
="b" : actual bytes (default)
|
||||
="h" : human-readable (ex. 5k, 4m, 3g)
|
||||
="b" : actual bytes (default)
|
||||
="h" : human-readable (ex. 5k, 4m, 3g)
|
||||
uses 1000 base
|
||||
="H" : human-readable (ex. 5K, 4M, 3G)
|
||||
="H" : human-readable (ex. 5K, 4M, 3G)
|
||||
uses 1024 base
|
||||
The long listing (|netrw-i|) and query-file
|
||||
maps (|netrw-qf|) will display file size
|
||||
@@ -2951,7 +2951,7 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
default: "NETRWSERVER"
|
||||
|
||||
*g:netrw_sort_by* sort by "name", "time", "size", or
|
||||
"exten".
|
||||
"exten".
|
||||
default: "name"
|
||||
|
||||
*g:netrw_sort_direction* sorting direction: "normal" or "reverse"
|
||||
@@ -3008,7 +3008,7 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
.vim/after/syntax/netrw.vim.
|
||||
< The netrwGray highlighting is set up by
|
||||
netrw when >
|
||||
* netrwGray has not been previously
|
||||
* netrwGray has not been previously
|
||||
defined
|
||||
* the gui is running
|
||||
< As an example, I myself use a dark-background
|
||||
@@ -3266,7 +3266,7 @@ If there are marked files: (see |netrw-mf|)
|
||||
name, applying that substitute, and renaming each file to the result.
|
||||
As an example : >
|
||||
|
||||
mr [query: reply with *.c]
|
||||
mr [query: reply with *.c]
|
||||
R [query: reply with s/^\(.*\)\.c$/\1.cpp/]
|
||||
<
|
||||
This example will mark all *.c files and then rename them to *.cpp
|
||||
@@ -3275,7 +3275,7 @@ If there are marked files: (see |netrw-mf|)
|
||||
|
||||
The ctrl-X character has special meaning for renaming files: >
|
||||
|
||||
<c-x> : a single ctrl-x tells netrw to ignore the portion of the response
|
||||
<c-x> : a single ctrl-x tells netrw to ignore the portion of the response
|
||||
lying between the last '/' and the ctrl-x.
|
||||
|
||||
<c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any
|
||||
@@ -3843,7 +3843,7 @@ netrw:
|
||||
Decho.vim is provided as a "vimball"; see |vimball-intro|. You
|
||||
should edit the Decho.vba.gz file and source it in: >
|
||||
|
||||
vim Decho.vba.gz
|
||||
vim Decho.vba.gz
|
||||
:so %
|
||||
:q
|
||||
<
|
||||
@@ -3885,7 +3885,7 @@ netrw:
|
||||
To save the file: under linux, the output will be in a separate
|
||||
remote server window; in it, just save the file with >
|
||||
|
||||
:w! DBG
|
||||
:w! DBG
|
||||
|
||||
< Under a vim that doesn't support clientserver, your debugging
|
||||
output will appear in another tab: >
|
||||
|
||||
@@ -770,7 +770,7 @@ The second argument of |popup_create()| is a dictionary with options:
|
||||
cursorline TRUE: Highlight the cursor line. Also scrolls the
|
||||
text to show this line (only works properly
|
||||
when 'wrap' is off).
|
||||
zero: Do not highlight the cursor line.
|
||||
zero: Do not highlight the cursor line.
|
||||
Default is zero, except for |popup_menu()|.
|
||||
filter A callback that can filter typed characters, see
|
||||
|popup-filter|.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 9.0. Last change: 2022 Sep 26
|
||||
*quickfix.txt* For Vim version 9.0. Last change: 2023 Jan 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -365,8 +365,6 @@ processing a quickfix or location list command, it will be aborted.
|
||||
If numbers [from] and/or [to] are given, the respective
|
||||
range of errors is listed. A negative number counts
|
||||
from the last error backwards, -1 being the last error.
|
||||
The 'switchbuf' settings are respected when jumping
|
||||
to a buffer.
|
||||
The |:filter| command can be used to display only the
|
||||
quickfix entries matching a supplied pattern. The
|
||||
pattern is matched against the filename, module name,
|
||||
@@ -1279,7 +1277,7 @@ The .NET CLI compiler outputs both errors and warnings by default. The output
|
||||
may be limited to include only errors, by setting the g:dotnet_errors_only
|
||||
variable to |v:true|.
|
||||
|
||||
The associated project name is included in each error and warning. To supress
|
||||
The associated project name is included in each error and warning. To suppress
|
||||
the project name, set the g:dotnet_show_project_file variable to |v:false|.
|
||||
|
||||
Example: limit output to only display errors, and suppress the project name: >
|
||||
|
||||
@@ -64,7 +64,7 @@ The following command line arguments are available:
|
||||
below). The name used will be uppercase.
|
||||
*--remote-send*
|
||||
--remote-send {keys} Send {keys} to server and exit. The {keys}
|
||||
are not mapped. Special key names are
|
||||
are not mapped. Special key names are
|
||||
recognized, e.g., "<CR>" results in a CR
|
||||
character.
|
||||
*--remote-expr*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*repeat.txt* For Vim version 9.0. Last change: 2022 Sep 22
|
||||
*repeat.txt* For Vim version 9.0. Last change: 2023 Feb 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -267,7 +267,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
When [where] is omitted only 'runtimepath' is used.
|
||||
Other values:
|
||||
START search under "start" in 'packpath'
|
||||
OPT search under "opt" in 'packpath'
|
||||
OPT search under "opt" in 'packpath'
|
||||
PACK search under "start" and "opt" in
|
||||
'packpath'
|
||||
ALL first use 'runtimepath', then search
|
||||
@@ -423,6 +423,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
after resolving symbolic links got sourced with
|
||||
another name the other script is after "->". E.g.
|
||||
"20->22" means script 20 was sourced as script 22.
|
||||
Also see `getscriptinfo()`.
|
||||
{not available when compiled without the |+eval|
|
||||
feature}
|
||||
|
||||
@@ -729,15 +730,15 @@ up-to-date easily, but it requires a program like "git" to be available.
|
||||
You can do both, github can automatically create an archive for a release.
|
||||
|
||||
Your directory layout would be like this:
|
||||
start/foobar/plugin/foo.vim " always loaded, defines commands
|
||||
start/foobar/plugin/bar.vim " always loaded, defines commands
|
||||
start/foobar/autoload/foo.vim " loaded when foo command used
|
||||
start/foobar/doc/foo.txt " help for foo.vim
|
||||
start/foobar/doc/tags " help tags
|
||||
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
|
||||
opt/fooextra/autoload/extra.vim " loaded when extra command used
|
||||
opt/fooextra/doc/extra.txt " help for extra.vim
|
||||
opt/fooextra/doc/tags " help tags
|
||||
start/foobar/plugin/foo.vim " always loaded, defines commands
|
||||
start/foobar/plugin/bar.vim " always loaded, defines commands
|
||||
start/foobar/autoload/foo.vim " loaded when foo command used
|
||||
start/foobar/doc/foo.txt " help for foo.vim
|
||||
start/foobar/doc/tags " help tags
|
||||
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
|
||||
opt/fooextra/autoload/extra.vim " loaded when extra command used
|
||||
opt/fooextra/doc/extra.txt " help for extra.vim
|
||||
opt/fooextra/doc/tags " help tags
|
||||
|
||||
This allows for the user to do: >
|
||||
mkdir ~/.vim/pack
|
||||
@@ -1147,9 +1148,10 @@ long you take to respond to the input() prompt is irrelevant.
|
||||
Profiling should give a good indication of where time is spent, but keep in
|
||||
mind there are various things that may clobber the results:
|
||||
|
||||
- The accuracy of the time measured depends on the gettimeofday() system
|
||||
function. It may only be as accurate as 1/100 second, even though the times
|
||||
are displayed in micro seconds.
|
||||
- The accuracy of the time measured depends on the gettimeofday(), or
|
||||
clock_gettime if available, system function. The accuracy ranges from 1/100
|
||||
second to nano seconds. With clock_gettime the times are displayed in nano
|
||||
seconds, otherwise micro seconds. You can use `has("prof_nsec")`.
|
||||
|
||||
- Real elapsed time is measured, if other processes are busy they may cause
|
||||
delays at unpredictable moments. You may want to run the profiling several
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*sign.txt* For Vim version 9.0. Last change: 2022 Dec 20
|
||||
*sign.txt* For Vim version 9.0. Last change: 2023 Feb 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur
|
||||
@@ -614,23 +614,23 @@ sign_placelist({list})
|
||||
|sign_place()| function. The {list} argument specifies the
|
||||
List of signs to place. Each list item is a dict with the
|
||||
following sign attributes:
|
||||
buffer buffer name or number. For the accepted
|
||||
buffer Buffer name or number. For the accepted
|
||||
values, see |bufname()|.
|
||||
group sign group. {group} functions as a namespace
|
||||
group Sign group. {group} functions as a namespace
|
||||
for {id}, thus two groups can use the same
|
||||
IDs. If not specified or set to an empty
|
||||
string, then the global group is used. See
|
||||
|sign-group| for more information.
|
||||
id sign identifier. If not specified or zero,
|
||||
id Sign identifier. If not specified or zero,
|
||||
then a new unique identifier is allocated.
|
||||
Otherwise the specified number is used. See
|
||||
|sign-identifier| for more information.
|
||||
lnum line number in the buffer where the sign is to
|
||||
lnum Line number in the buffer where the sign is to
|
||||
be placed. For the accepted values, see
|
||||
|line()|.
|
||||
name name of the sign to place. See |sign_define()|
|
||||
for more information.
|
||||
priority priority of the sign. When multiple signs are
|
||||
name Name of the sign to place. See |sign_define()|
|
||||
for more information.
|
||||
priority Priority of the sign. When multiple signs are
|
||||
placed on a line, the sign with the highest
|
||||
priority is used. If not specified, the
|
||||
default value of 10 is used. See
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 9.0. Last change: 2022 Dec 26
|
||||
*syntax.txt* For Vim version 9.0. Last change: 2023 Feb 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1307,18 +1307,32 @@ When not set 4 is used.
|
||||
|
||||
DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax*
|
||||
|
||||
There is one option with highlighting DOS batch files. This covers new
|
||||
extensions to the Command Interpreter introduced with Windows 2000 and
|
||||
is controlled by the variable dosbatch_cmdextversion. For Windows NT
|
||||
this should have the value 1, and for Windows 2000 it should be 2.
|
||||
Select the set of Windows Command interpreter extensions that should be
|
||||
supported with the variable dosbatch_cmdextversion. For versions of Windows
|
||||
NT (before Windows 2000) this should have the value of 1. For Windows 2000
|
||||
and later it should be 2.
|
||||
Select the version you want with the following line: >
|
||||
|
||||
:let dosbatch_cmdextversion = 1
|
||||
|
||||
If this variable is not defined it defaults to a value of 2 to support
|
||||
Windows 2000.
|
||||
Windows 2000 and later.
|
||||
|
||||
A second option covers whether *.btm files should be detected as type
|
||||
The original MS-DOS supports an idiom of using a double colon (::) as an
|
||||
alternative way to enter a comment line. This idiom can be used with the
|
||||
current Windows Command Interpreter, but it can lead to problems when used
|
||||
inside ( ... ) command blocks. You can find a discussion about this on
|
||||
Stack Overflow -
|
||||
|
||||
https://stackoverflow.com/questions/12407800/which-comment-style-should-i-use-in-batch-files
|
||||
|
||||
To allow the use of the :: idiom for comments in the Windows Command
|
||||
Interpreter or working with MS-DOS bat files, set the
|
||||
dosbatch_colons_comment variable to anything: >
|
||||
|
||||
:let dosbatch_colons_comment = 1
|
||||
|
||||
There is an option that covers whether *.btm files should be detected as type
|
||||
"dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files). The latter
|
||||
is used by default. You may select the former with the following line: >
|
||||
|
||||
@@ -2777,17 +2791,25 @@ For highlighted doctests and code inside: >
|
||||
:let python_no_doctest_highlight = 1
|
||||
or >
|
||||
:let python_no_doctest_code_highlight = 1
|
||||
(first option implies second one).
|
||||
The first option implies the second one.
|
||||
|
||||
For highlighted trailing whitespace and mix of spaces and tabs: >
|
||||
:let python_space_error_highlight = 1
|
||||
|
||||
If you want all possible Python highlighting (the same as setting the
|
||||
preceding last option and unsetting all other ones): >
|
||||
If you want all possible Python highlighting:
|
||||
:let python_highlight_all = 1
|
||||
This has the same effect as setting python_space_error_highlight and
|
||||
unsetting all the other ones.
|
||||
|
||||
If you use Python 2 or straddling code (Python 2 and 3 compatible),
|
||||
you can enforce the use of an older syntax file with support for
|
||||
Python 2 and up to Python 3.5.
|
||||
: let python_use_python2_syntax = 1
|
||||
This option will exclude all modern Python 3.6 or higher features.
|
||||
|
||||
Note: Only existence of these options matters, not their value.
|
||||
You can replace 1 above with anything.
|
||||
|
||||
Note: Only existence of these options matter, not their value. You can replace
|
||||
1 above with anything.
|
||||
|
||||
QUAKE *quake.vim* *ft-quake-syntax*
|
||||
|
||||
@@ -3836,7 +3858,7 @@ SYNTAX ISKEYWORD SETTING *:syn-iskeyword*
|
||||
|
||||
clear: Syntax specific iskeyword setting is disabled and the
|
||||
buffer-local 'iskeyword' setting is used.
|
||||
{option} Set the syntax 'iskeyword' option to a new value.
|
||||
{option} Set the syntax 'iskeyword' option to a new value.
|
||||
|
||||
Example: >
|
||||
:syntax iskeyword @,48-57,192-255,$,_
|
||||
@@ -5283,7 +5305,7 @@ guisp={color-name} *highlight-guisp*
|
||||
(guisp) color to use in the GUI. "guisp" is used for undercurl and
|
||||
strikethrough.
|
||||
There are a few special names:
|
||||
NONE no color (transparent)
|
||||
NONE no color (transparent) *E1361*
|
||||
bg use normal background color
|
||||
background use normal background color
|
||||
fg use normal foreground color
|
||||
@@ -5356,7 +5378,7 @@ ColorColumn Used for the columns set with 'colorcolumn'.
|
||||
*hl-Conceal*
|
||||
Conceal Placeholder characters substituted for concealed
|
||||
text (see 'conceallevel').
|
||||
*hl-Cursor*
|
||||
*hl-Cursor* *hl-lCursor*
|
||||
Cursor Character under the cursor.
|
||||
lCursor Character under the cursor when |language-mapping|
|
||||
is used (see 'guicursor').
|
||||
@@ -5430,6 +5452,14 @@ Normal Normal text.
|
||||
Pmenu Popup menu: Normal item.
|
||||
*hl-PmenuSel*
|
||||
PmenuSel Popup menu: Selected item.
|
||||
*hl-PmenuKind*
|
||||
PmenuKind Popup menu: Normal item "kind".
|
||||
*hl-PmenuKindSel*
|
||||
PmenuKindSel Popup menu: Selected item "kind".
|
||||
*hl-PmenuExtra*
|
||||
PmenuExtra Popup menu: Normal item "extra text".
|
||||
*hl-PmenuExtraSel*
|
||||
PmenuExtraSel Popup menu: Selected item "extra text".
|
||||
*hl-PmenuSbar*
|
||||
PmenuSbar Popup menu: Scrollbar.
|
||||
*hl-PmenuThumb*
|
||||
|
||||
@@ -438,8 +438,10 @@ $quote eval.txt /*$quote*
|
||||
'keymap' options.txt /*'keymap'*
|
||||
'keymodel' options.txt /*'keymodel'*
|
||||
'keyprotocol' options.txt /*'keyprotocol'*
|
||||
'keywordprg' options.txt /*'keywordprg'*
|
||||
'km' options.txt /*'km'*
|
||||
'kmp' options.txt /*'kmp'*
|
||||
'kp' options.txt /*'kp'*
|
||||
'kpc' options.txt /*'kpc'*
|
||||
'langmap' options.txt /*'langmap'*
|
||||
'langmenu' options.txt /*'langmenu'*
|
||||
@@ -566,6 +568,8 @@ $quote eval.txt /*$quote*
|
||||
'nobreakindent' options.txt /*'nobreakindent'*
|
||||
'nobri' options.txt /*'nobri'*
|
||||
'nobuflisted' options.txt /*'nobuflisted'*
|
||||
'nocdh' options.txt /*'nocdh'*
|
||||
'nocdhome' options.txt /*'nocdhome'*
|
||||
'nocf' options.txt /*'nocf'*
|
||||
'noci' options.txt /*'noci'*
|
||||
'nocin' options.txt /*'nocin'*
|
||||
@@ -674,6 +678,8 @@ $quote eval.txt /*$quote*
|
||||
'nomousef' options.txt /*'nomousef'*
|
||||
'nomousefocus' options.txt /*'nomousefocus'*
|
||||
'nomousehide' options.txt /*'nomousehide'*
|
||||
'nomousemev' options.txt /*'nomousemev'*
|
||||
'nomousemoveevent' options.txt /*'nomousemoveevent'*
|
||||
'nonu' options.txt /*'nonu'*
|
||||
'nonumber' options.txt /*'nonumber'*
|
||||
'noodev' options.txt /*'noodev'*
|
||||
@@ -743,10 +749,12 @@ $quote eval.txt /*$quote*
|
||||
'notbidi' options.txt /*'notbidi'*
|
||||
'notbs' options.txt /*'notbs'*
|
||||
'notermbidi' options.txt /*'notermbidi'*
|
||||
'notermguicolors' options.txt /*'notermguicolors'*
|
||||
'noterse' options.txt /*'noterse'*
|
||||
'notextauto' options.txt /*'notextauto'*
|
||||
'notextmode' options.txt /*'notextmode'*
|
||||
'notf' options.txt /*'notf'*
|
||||
'notgc' options.txt /*'notgc'*
|
||||
'notgst' options.txt /*'notgst'*
|
||||
'notildeop' options.txt /*'notildeop'*
|
||||
'notimeout' options.txt /*'notimeout'*
|
||||
@@ -2451,6 +2459,7 @@ $quote eval.txt /*$quote*
|
||||
:diffupdate diff.txt /*:diffupdate*
|
||||
:dig digraph.txt /*:dig*
|
||||
:digraphs digraph.txt /*:digraphs*
|
||||
:dis change.txt /*:dis*
|
||||
:disa vim9.txt /*:disa*
|
||||
:disassemble vim9.txt /*:disassemble*
|
||||
:display change.txt /*:display*
|
||||
@@ -2840,6 +2849,7 @@ $quote eval.txt /*$quote*
|
||||
:map-commands map.txt /*:map-commands*
|
||||
:map-expression map.txt /*:map-expression*
|
||||
:map-local map.txt /*:map-local*
|
||||
:map-meta-keys map.txt /*:map-meta-keys*
|
||||
:map-modes map.txt /*:map-modes*
|
||||
:map-nowait map.txt /*:map-nowait*
|
||||
:map-operator map.txt /*:map-operator*
|
||||
@@ -4416,7 +4426,15 @@ E1351 vim9class.txt /*E1351*
|
||||
E1352 vim9class.txt /*E1352*
|
||||
E1353 vim9class.txt /*E1353*
|
||||
E1354 vim9class.txt /*E1354*
|
||||
E1355 vim9class.txt /*E1355*
|
||||
E1356 vim9class.txt /*E1356*
|
||||
E1357 vim9class.txt /*E1357*
|
||||
E1358 vim9class.txt /*E1358*
|
||||
E1359 vim9class.txt /*E1359*
|
||||
E136 starting.txt /*E136*
|
||||
E1360 vim9class.txt /*E1360*
|
||||
E1361 syntax.txt /*E1361*
|
||||
E1362 vim9class.txt /*E1362*
|
||||
E137 starting.txt /*E137*
|
||||
E138 starting.txt /*E138*
|
||||
E139 message.txt /*E139*
|
||||
@@ -5633,6 +5651,7 @@ View starting.txt /*View*
|
||||
Vim9 vim9.txt /*Vim9*
|
||||
Vim9-abstract-class vim9class.txt /*Vim9-abstract-class*
|
||||
Vim9-class vim9class.txt /*Vim9-class*
|
||||
Vim9-class-member vim9class.txt /*Vim9-class-member*
|
||||
Vim9-class-overview vim9class.txt /*Vim9-class-overview*
|
||||
Vim9-enum vim9class.txt /*Vim9-enum*
|
||||
Vim9-script vim9.txt /*Vim9-script*
|
||||
@@ -6311,7 +6330,6 @@ cino-} indent.txt /*cino-}*
|
||||
cinoptions-values indent.txt /*cinoptions-values*
|
||||
class vim9class.txt /*class*
|
||||
class-function vim9class.txt /*class-function*
|
||||
class-member vim9class.txt /*class-member*
|
||||
clear-undo undo.txt /*clear-undo*
|
||||
clearmatches() builtin.txt /*clearmatches()*
|
||||
client-server remote.txt /*client-server*
|
||||
@@ -7558,6 +7576,7 @@ getbufinfo() builtin.txt /*getbufinfo()*
|
||||
getbufline() builtin.txt /*getbufline()*
|
||||
getbufoneline() builtin.txt /*getbufoneline()*
|
||||
getbufvar() builtin.txt /*getbufvar()*
|
||||
getcellwidths() builtin.txt /*getcellwidths()*
|
||||
getchangelist() builtin.txt /*getchangelist()*
|
||||
getchar() builtin.txt /*getchar()*
|
||||
getcharmod() builtin.txt /*getcharmod()*
|
||||
@@ -7881,6 +7900,8 @@ hl-TabLineFill syntax.txt /*hl-TabLineFill*
|
||||
hl-TabLineSel syntax.txt /*hl-TabLineSel*
|
||||
hl-Terminal syntax.txt /*hl-Terminal*
|
||||
hl-Title syntax.txt /*hl-Title*
|
||||
hl-ToolbarButton gui.txt /*hl-ToolbarButton*
|
||||
hl-ToolbarLine gui.txt /*hl-ToolbarLine*
|
||||
hl-Tooltip syntax.txt /*hl-Tooltip*
|
||||
hl-User1 syntax.txt /*hl-User1*
|
||||
hl-User1..9 syntax.txt /*hl-User1..9*
|
||||
@@ -7892,6 +7913,7 @@ hl-WarningMsg syntax.txt /*hl-WarningMsg*
|
||||
hl-WildMenu syntax.txt /*hl-WildMenu*
|
||||
hl-debugBreakpoint terminal.txt /*hl-debugBreakpoint*
|
||||
hl-debugPC terminal.txt /*hl-debugPC*
|
||||
hl-lCursor syntax.txt /*hl-lCursor*
|
||||
hlID() builtin.txt /*hlID()*
|
||||
hlexists() builtin.txt /*hlexists()*
|
||||
hlget() builtin.txt /*hlget()*
|
||||
@@ -10042,6 +10064,7 @@ t_channel-variable eval.txt /*t_channel-variable*
|
||||
t_ci version4.txt /*t_ci*
|
||||
t_cil version4.txt /*t_cil*
|
||||
t_cl term.txt /*t_cl*
|
||||
t_class-variable eval.txt /*t_class-variable*
|
||||
t_cm term.txt /*t_cm*
|
||||
t_cri version4.txt /*t_cri*
|
||||
t_cs term.txt /*t_cs*
|
||||
@@ -10106,6 +10129,7 @@ t_ms term.txt /*t_ms*
|
||||
t_nd term.txt /*t_nd*
|
||||
t_none-variable eval.txt /*t_none-variable*
|
||||
t_number-variable eval.txt /*t_number-variable*
|
||||
t_object-variable eval.txt /*t_object-variable*
|
||||
t_op term.txt /*t_op*
|
||||
t_se term.txt /*t_se*
|
||||
t_sf1 version4.txt /*t_sf1*
|
||||
@@ -10614,6 +10638,7 @@ v:t_TYPE eval.txt /*v:t_TYPE*
|
||||
v:t_blob eval.txt /*v:t_blob*
|
||||
v:t_bool eval.txt /*v:t_bool*
|
||||
v:t_channel eval.txt /*v:t_channel*
|
||||
v:t_class eval.txt /*v:t_class*
|
||||
v:t_dict eval.txt /*v:t_dict*
|
||||
v:t_float eval.txt /*v:t_float*
|
||||
v:t_func eval.txt /*v:t_func*
|
||||
@@ -10621,6 +10646,7 @@ v:t_job eval.txt /*v:t_job*
|
||||
v:t_list eval.txt /*v:t_list*
|
||||
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:termblinkresp eval.txt /*v:termblinkresp*
|
||||
v:termrbgresp eval.txt /*v:termrbgresp*
|
||||
@@ -11208,6 +11234,8 @@ zz scroll.txt /*zz*
|
||||
{rhs} map.txt /*{rhs}*
|
||||
{server} remote.txt /*{server}*
|
||||
{subject} helphelp.txt /*{subject}*
|
||||
{{{ fold.txt /*{{{*
|
||||
{} intro.txt /*{}*
|
||||
} motion.txt /*}*
|
||||
}}} fold.txt /*}}}*
|
||||
~ change.txt /*~*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*tagsrch.txt* For Vim version 9.0. Last change: 2020 Dec 19
|
||||
*tagsrch.txt* For Vim version 9.0. Last change: 2023 Feb 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -98,7 +98,7 @@ The ignore-case matches are found when:
|
||||
- when 'tagcase' is "followscs" and 'ignorecase' is on or the 'smartcase'
|
||||
option is on and the pattern does not contain an upper case character
|
||||
- when 'tagcase' is "ignore"
|
||||
- when 'tagcase' is "smart" and the patter does not contain an upper case
|
||||
- when 'tagcase' is "smart" and the pattern does not contain an upper case
|
||||
character
|
||||
|
||||
Note that using ignore-case tag searching disables binary searching in the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*term.txt* For Vim version 9.0. Last change: 2023 Jan 09
|
||||
*term.txt* For Vim version 9.0. Last change: 2023 Jan 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -322,9 +322,14 @@ using the "xterm" workaround. These are the relevant entries (so far):
|
||||
PS "\033[200~" pasted text start |t_PS|
|
||||
PE "\033[201~" pasted text end |t_PE|
|
||||
|
||||
XM "\033[?1006;1000%?%p1%{1}%=%th%el%;"
|
||||
XM "\033[?1006;1004;1000%?%p1%{1}%=%th%el%;"
|
||||
mouse enable / disable |t_XM|
|
||||
|
||||
The "XM" entry includes "1006" to enable SGR style mouse reporting. This
|
||||
supports columns above 223. It also includes "1004" which enables focus
|
||||
reporting. The t_fe and t_fd entries can be left empty (they don't have
|
||||
entries in terminfo/termcap anyway).
|
||||
|
||||
*xterm-kitty* *kitty-terminal*
|
||||
The Kitty terminal is a special case. Mainly because it works differently
|
||||
from most other terminals, but also because, instead of trying the fit in and
|
||||
|
||||
@@ -30,9 +30,9 @@ If the result is "1" you have it.
|
||||
Using the client-server feature |terminal-client-server|
|
||||
4. Remote testing |terminal-testing|
|
||||
5. Diffing screen dumps |terminal-diff|
|
||||
Writing a screen dump test for Vim |terminal-dumptest|
|
||||
Creating a screen dump |terminal-screendump|
|
||||
Comparing screen dumps |terminal-diffscreendump|
|
||||
Writing a screen dump test for Vim |terminal-dumptest|
|
||||
Creating a screen dump |terminal-screendump|
|
||||
Comparing screen dumps |terminal-diffscreendump|
|
||||
6. Debugging |terminal-debug|
|
||||
Starting |termdebug-starting|
|
||||
Example session |termdebug-example|
|
||||
@@ -240,7 +240,7 @@ Command syntax ~
|
||||
in a session file.
|
||||
++shell Instead of executing {command}
|
||||
directly, use a shell, like with
|
||||
`:!command` *E279*
|
||||
`:!command` *E279*
|
||||
{only works on Unix and MS-Windows}
|
||||
++kill={how} When trying to close the terminal
|
||||
window kill the job with {how}. See
|
||||
|
||||
@@ -197,7 +197,7 @@ test_gui_event({event}, {args})
|
||||
Inject an event to select a tabline menu entry. The
|
||||
supported items in {args} are:
|
||||
tabnr: tab page number
|
||||
item: tab page menu item number. 1 for the first
|
||||
item: tab page menu item number. 1 for the first
|
||||
menu item, 2 for the second item and so on.
|
||||
|
||||
After injecting the GUI events you probably should call
|
||||
@@ -223,12 +223,12 @@ test_ignore_error({expr}) *test_ignore_error()*
|
||||
Can also be used as a |method|: >
|
||||
GetErrorText()->test_ignore_error()
|
||||
|
||||
|
||||
|
||||
test_mswin_event({event}, {args}) *test_mswin_event()*
|
||||
Generate a low-level MS-Windows {event} with arguments {args}
|
||||
for testing Vim functionality. It works for MS-Windows GUI
|
||||
for testing Vim functionality. It works for MS-Windows GUI
|
||||
and for the console.
|
||||
|
||||
|
||||
{event} is a String and the supported values are:
|
||||
"mouse" mouse event.
|
||||
"key" keyboard event.
|
||||
@@ -369,7 +369,7 @@ test_override({name}, {val}) *test_override()*
|
||||
string is detected
|
||||
ui_delay time in msec to use in ui_delay(); overrules a
|
||||
wait time of up to 3 seconds for messages
|
||||
uptime overrules sysinfo.uptime
|
||||
uptime overrules sysinfo.uptime
|
||||
vterm_title setting the window title by a job running in a
|
||||
terminal window
|
||||
ALL clear all overrides, except alloc_lines ({val} is
|
||||
|
||||
@@ -56,7 +56,7 @@ how to highlight the text. The property type can have these entries:
|
||||
priority will be used.
|
||||
"start_incl" when TRUE inserts at the start position will be
|
||||
included in the text property
|
||||
"end_incl" when TRUE inserts at the end position will be
|
||||
"end_incl" when TRUE inserts at the end position will be
|
||||
included in the text property
|
||||
|
||||
|
||||
@@ -107,14 +107,14 @@ prop_type_list([{props}]) get list of property types
|
||||
|
||||
Manipulating text properties:
|
||||
|
||||
prop_add({lnum}, {col}, {props}) add a text property
|
||||
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
||||
prop_add({lnum}, {col}, {props}) add a text property
|
||||
prop_add_list({props}, [{item}, ...])
|
||||
add a text property at multiple
|
||||
positions.
|
||||
prop_clear({lnum} [, {lnum-end} [, {bufnr}]])
|
||||
remove all text properties
|
||||
prop_find({props} [, {direction}]) search for a text property
|
||||
prop_list({lnum} [, {props}]) text properties in {lnum}
|
||||
prop_list({lnum} [, {props}]) text properties in {lnum}
|
||||
prop_remove({props} [, {lnum} [, {lnum-end}]])
|
||||
remove a text property
|
||||
|
||||
@@ -149,7 +149,7 @@ prop_add({lnum}, {col}, {props})
|
||||
highlighting; cannot be used with "length",
|
||||
"end_lnum" and "end_col"
|
||||
See |virtual-text| for more information.
|
||||
*E1294*
|
||||
*E1294*
|
||||
text_align when "text" is present and {col} is zero;
|
||||
specifies where to display the text:
|
||||
after after the end of the line
|
||||
@@ -172,7 +172,7 @@ prop_add({lnum}, {col}, {props})
|
||||
fit:
|
||||
wrap wrap the text to the next line
|
||||
truncate truncate the text to make it fit
|
||||
When omitted "truncate" is used.
|
||||
When omitted "truncate" is used.
|
||||
Note that this applies to the individual text
|
||||
property, the 'wrap' option sets the overall
|
||||
behavior
|
||||
@@ -263,12 +263,12 @@ prop_add_list({props}, [{item}, ...])
|
||||
It is not possible to add a text property with a "text" field
|
||||
here.
|
||||
|
||||
Example:
|
||||
Example: >
|
||||
call prop_add_list(#{type: 'MyProp', id: 2},
|
||||
\ [[1, 4, 1, 7],
|
||||
\ [1, 15, 1, 20],
|
||||
\ [2, 30, 3, 30]]
|
||||
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetProp()->prop_add_list([[1, 1, 1, 2], [1, 4, 1, 8]])
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 9.0. Last change: 2023 Jan 09
|
||||
*todo.txt* For Vim version 9.0. Last change: 2023 Feb 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -38,6 +38,25 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Crash when splitting window: #11961. Set RedrawingDisabled in
|
||||
win_split_ins().
|
||||
|
||||
CI: include #12008 end of February.
|
||||
|
||||
In runtime/autoload/dist/script.vim change "set ft=" to "setlocal ft=" ?
|
||||
|
||||
CTRL-J mapping is not used if halfway another mapping. #12002
|
||||
Is simplified mapping not used but escape code has been simplified?
|
||||
|
||||
Include #11952 after a runtime files update.
|
||||
|
||||
Errors when running tests with valgrind:
|
||||
- test_codestyle.vim: e.g.:
|
||||
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 6: keycode_check.vim: space before tab: Expected 0 but got 7
|
||||
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 10: setup.vim: trailing white space: Expected 0 but got 23
|
||||
- test_gui.vim:
|
||||
Found errors in Test_gui_mouse_event():
|
||||
|
||||
Upcoming larger works:
|
||||
- Make spell checking work with recent .dic/.aff files, e.g. French. #4916
|
||||
Make Vim understand the format somehow? Search for "spell" below.
|
||||
@@ -53,18 +72,36 @@ Upcoming larger works:
|
||||
|
||||
|
||||
Further Vim9 improvements, possibly after launch:
|
||||
- implement :class and :interface: See |vim9-classes| #11544
|
||||
inheritance: how about super()?
|
||||
inheritance: new() method from parent used in child?
|
||||
import/export of a class
|
||||
type() should return different type for each class?
|
||||
give error for shadowing (variable and argument) when defining a class or
|
||||
interface, not later when compiling it.
|
||||
object empty(), len() - can class define a method to be used for them?
|
||||
how about lock/unlock?
|
||||
When checking "implements" also check types of members and function args.
|
||||
- implement :class and :interface: See |vim9-classes
|
||||
- Change access: public by default, private by prefixing "_".
|
||||
Check for error: can't have same name twice (ignoring "_" prefix).
|
||||
- Make ":defcompile ClassName" compile all functions and methods in the
|
||||
class.
|
||||
- Private methods?
|
||||
either: private def Func()
|
||||
or: def _Func()
|
||||
Perhaps use "private" keyword instead of "_" prefix?
|
||||
- "final" object members - can only be set in the constructor.
|
||||
- accept line breaks in member initialization. #11957
|
||||
- object empty(), len() - can class define a method to be used for them?
|
||||
- add to help: when using a default new() method then reordering object
|
||||
members may cause trouble. Can define new() without arguments to avoid.
|
||||
- TODO items: check types for "implements" - members and methods
|
||||
- how about lock/unlock?
|
||||
- When checking "implements" also check types of members and function args.
|
||||
- For chaining, allow using the class name as type for function return
|
||||
value.
|
||||
- Implement generics
|
||||
- Add "instanceof" (exact class name). And "assignable" (class or child)?
|
||||
- More efficient way for interface member index than iterating over list?
|
||||
- a variant of type() that returns a different type for each class?
|
||||
list<number> and list<string> should also differ.
|
||||
- Issue #11822: any.Func() can be a dict or an object call, need to handle
|
||||
this at runtime.
|
||||
- implement :type
|
||||
- implement :enum
|
||||
- Promise class, could be used to wait on a popup close callback?
|
||||
- class local to a function
|
||||
- Use Vim9 for more runtime files.
|
||||
- Inline call to map() and filter(), better type checking.
|
||||
- When evaluating constants for script variables, some functions could work:
|
||||
@@ -72,16 +109,20 @@ Further Vim9 improvements, possibly after launch:
|
||||
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
|
||||
|
||||
Information missing in terminfo:
|
||||
Priority:
|
||||
- Accept "hyper" and "meta" modifiers (16 and 32) from Kitty like Meta?
|
||||
8 is actually "super".
|
||||
- t_RV request terminal version string; xterm: "\033[>c"
|
||||
change in terminfo for "RV" uses the wrong escape sequence... ?
|
||||
Mouse support:
|
||||
on/off: hard coded in mch_setmouse() - use "XM" terminfo/termcap entry;
|
||||
If it starts with "\E[?1006;1000%" then set 'ttymouse' to "sgr".
|
||||
change in terminfo for "RV" uses the wrong escape sequence 7 - 14 Jan only
|
||||
Codes used for focus gained and lost (currently using use_xterm_like_mouse())
|
||||
termcodes are hard-coded in set_termname(), not named.
|
||||
Use the XF flag? enables recognizing the focus in/out events.
|
||||
Check if t_fe is not empty.
|
||||
Check for "1004" in t_XM. (disadvantage: only focus events when mouse is
|
||||
used)
|
||||
- t_fe enable focus-event tracking
|
||||
- t_fd disable focus-event tracking
|
||||
Modifiers for various keys
|
||||
- flag to indicate "xterm compatible modifiers" ?
|
||||
Underline and similar:
|
||||
- t_AU - Set underline color: like "AF" and "AB" entries.
|
||||
- t_Ce undercurl and underline end
|
||||
@@ -278,11 +319,15 @@ Can we not request XT key sequences, or reduce them drastically?
|
||||
Issue #10512: Dynamic loading broken with Perl 5.36
|
||||
Damien has a patch (2022 Dec 4)
|
||||
|
||||
Request #11965: Allow severaql "%=" items in 'statusline', makes it possible
|
||||
to have text in the center.
|
||||
|
||||
Add some kind of ":whathappend" command and functions to make visible what the
|
||||
last few typed keys and executed commands are. To be used when the user
|
||||
wonders what went wrong.
|
||||
wonders what went wrong. Could also be used for statistics #12046.
|
||||
- typed keys - Normal mode command - like what is recorded in a register and
|
||||
displayed by 'showcmd'.
|
||||
- register used - #12063
|
||||
- executed command lines
|
||||
- with more verbosity: what scripts/functions/autocommands were executed
|
||||
|
||||
@@ -317,7 +362,7 @@ Better terminal emulator support:
|
||||
"xterm" and then add "kitty" entries.
|
||||
|
||||
Using "A" and "o" in manually created fold (in empty buffer) does not behave
|
||||
consistenly (James McCoy, #10698)
|
||||
consistently (James McCoy, #10698)
|
||||
|
||||
In a timer callback, when using ":echo" and then input() the message is
|
||||
overwritten. Could use ":echowin" and call redraw_cmd() in get_user_input().
|
||||
@@ -362,8 +407,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[].
|
||||
|
||||
MS-Windows: did path modifier :p:8 stop working? #8600
|
||||
|
||||
Version of getchar() that does not move the cursor - #10603 Use a separate
|
||||
argument for the new flag.
|
||||
|
||||
@@ -445,6 +488,9 @@ Any way to convert "$" back by using a special value? (#6901)
|
||||
Can we detect true color support? https://gist.github.com/XVilka/8346728
|
||||
Try setting a color then request the current color, like using t_u7.
|
||||
|
||||
Add a v:register_used variable, which has the name of the register used for
|
||||
the last command, e.g. put. #12003
|
||||
|
||||
Make the jumplist behave like a tag stack. (#7738) Should there be a more
|
||||
time bound navigation, like with undo?
|
||||
|
||||
@@ -660,6 +706,7 @@ Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
|
||||
|
||||
Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use
|
||||
t:diffexpr_option t:diffopt_option? (#4782)
|
||||
Also make 'scrollopt' tab-local, remove "hor" only for the current tab page.
|
||||
|
||||
Internal diff doesn't handle binary file like external diff does. (Mike
|
||||
Williams, 2018 Oct 30)
|
||||
@@ -1150,9 +1197,6 @@ Avoids exceptions, e.g. when using the b: namespace as a dict.
|
||||
Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27)
|
||||
Useful to restore it. Is there another solution?
|
||||
|
||||
"ci[" does not look for next [ like ci" does look for next ".
|
||||
(J.F. 2017 Jan 7)
|
||||
|
||||
Patch for wrong cursor position on wrapped line, involving breakindent.
|
||||
(Ozaki Kiichi, 2016 Nov 25)
|
||||
|
||||
@@ -1176,9 +1220,6 @@ Should :vmap in matchit.vim be :xmap? (Tony Mechelynck)
|
||||
|
||||
Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
|
||||
|
||||
Add "unicode true" to NSIS installer. Doesn't work with Windows 95, which we
|
||||
no longer support.
|
||||
|
||||
Support sort(l, 'F'), convert strings to float. (#7857)
|
||||
|
||||
sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
|
||||
@@ -1364,9 +1405,6 @@ Do not include the linebreak at the start?
|
||||
Feature request: add the "al" text object, to manipulate a screen line.
|
||||
Especially useful when using 'linebreak'
|
||||
|
||||
":cd C:\Windows\System32\drivers\etc*" does not work, even though the
|
||||
directory exists. (Sergio Gallelli, 2013 Dec 29)
|
||||
|
||||
Patch to avoid redrawing tabline when the popup menu is visible.
|
||||
(Christian Brabandt, 2016 Jan 28)
|
||||
|
||||
@@ -2951,10 +2989,6 @@ Win32 GUI known bugs:
|
||||
console, go back to Vim and click "reload" in the dialog for the changed
|
||||
file: Window moves with the cursor!
|
||||
Put focus event in input buffer and let generic Vim code handle it?
|
||||
8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
|
||||
comes available. (Poucet) It works OK on Win 98 but doesn't work on Win
|
||||
NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also
|
||||
doesn't work properly.
|
||||
8 When Vim is minimized and when maximizing it a file-changed dialog pops
|
||||
up, Vim isn't maximized. It should be done before the dialog, so that it
|
||||
appears in the right position. (Webb)
|
||||
@@ -3478,8 +3512,6 @@ Problems that will (probably) not be solved:
|
||||
input method called from GDK code. Without Perl it doesn't crash.
|
||||
- VMS: Vimdiff doesn't work with the VMS diff, because the output looks
|
||||
different. This makes test 47 fail. Install a Unix-compatible diff.
|
||||
- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive
|
||||
in Vim as if the rightmost scrollbar was used.
|
||||
- GTK with Gnome: Produces an error message when starting up:
|
||||
Gdk-WARNING **: locale not supported by C library
|
||||
This is caused by the gnome library gnome_init() setting $LC_CTYPE to
|
||||
@@ -4436,8 +4468,6 @@ Tags:
|
||||
Win32 GUI:
|
||||
8 Make debug mode work while starting up (vim -D). Open console window for
|
||||
the message and input?
|
||||
7 GvimExt: when there are several existing Vims, move the list to a submenu.
|
||||
(Mike McCollister)
|
||||
8 When using "Edit with Vim" for one file it changes directory, when several
|
||||
files are selected and using "Edit with single Vim" the directory isn't
|
||||
changed. At least change directory when the path is the same for all
|
||||
@@ -5982,7 +6012,7 @@ Various improvements:
|
||||
many percent down the windows).
|
||||
- Make it possible for the 'showbreak' to be displayed at the end of the
|
||||
line. Use a comma to separate the part at the end and the start of the
|
||||
line? Highlight the linebreak characters, add flag in 'highlight'.
|
||||
line? #754 Highlight the linebreak characters, add flag in 'highlight'.
|
||||
Make 'showbreak' local to a window.
|
||||
- Some string options should be expanded if they have wildcards, e.g.
|
||||
'dictionary' when it is "*.h".
|
||||
|
||||
@@ -250,7 +250,7 @@ Credit Card: You can use PayPal to send money with a Credit card. This is
|
||||
Bram@iccf-holland.org
|
||||
|
||||
Others: Transfer to this account if possible:
|
||||
ING bank: IBAN: NL95 INGB 0004 5487 74
|
||||
ING bank: IBAN: NL95 INGB 0004 5487 74
|
||||
Swift code: INGBNL2A
|
||||
under the name "stichting ICCF Holland", Amersfoort
|
||||
Checks are not accepted.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*userfunc.txt* For Vim version 9.0. Last change: 2023 Jan 09
|
||||
*userfunc.txt* For Vim version 9.0. Last change: 2023 Feb 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -211,7 +211,8 @@ See |:verbose-cmd| for more information.
|
||||
|
||||
*function-argument* *a:var*
|
||||
An argument can be defined by giving its name. In the function this can then
|
||||
be used as "a:name" ("a:" for argument).
|
||||
be used as "a:name" ("a:" for argument) (in a `:def` function "a:" is not
|
||||
used).
|
||||
*a:0* *a:1* *a:000* *E740* *...*
|
||||
Up to 20 arguments can be given, separated by commas. After the named
|
||||
arguments an argument "..." can be specified, which means that more arguments
|
||||
@@ -246,9 +247,10 @@ Example: >
|
||||
call Something('key', 20) "key: 20"
|
||||
|
||||
The argument default expressions are evaluated at the time of the function
|
||||
call, not definition. Thus it is possible to use an expression which is
|
||||
invalid the moment the function is defined. The expressions are also only
|
||||
evaluated when arguments are not specified during a call.
|
||||
call, not when the function is defined. Thus it is possible to use an
|
||||
expression which is invalid the moment the function is defined. The
|
||||
expressions are also only evaluated when arguments are not specified during a
|
||||
call.
|
||||
*none-function_argument*
|
||||
You can pass |v:none| to use the default expression. Note that this means you
|
||||
cannot pass v:none as an ordinary value when an argument has a default
|
||||
|
||||
@@ -505,7 +505,7 @@ You can use the error ID at the start to find help about it: >
|
||||
:help E37
|
||||
|
||||
|
||||
Summary: *help-summary* >
|
||||
Summary: *help-summary* >
|
||||
|
||||
1) Use Ctrl-D after typing a topic and let Vim show all available topics.
|
||||
Or press Tab to complete: >
|
||||
|
||||
@@ -409,7 +409,7 @@ an archive or as a repository. For an archive you can follow these steps:
|
||||
package.
|
||||
2. unpack the archive in that directory. This assumes the top
|
||||
directory in the archive is "start": >
|
||||
cd ~/.vim/pack/fancy
|
||||
cd ~/.vim/pack/fancy
|
||||
unzip /tmp/fancy.zip
|
||||
< If the archive layout is different make sure that you end up with a
|
||||
path like this:
|
||||
|
||||
@@ -77,25 +77,25 @@ browser. This is what you get: >
|
||||
9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help
|
||||
|
||||
MAPS netrw-maps
|
||||
<F1>.............Help.......................................|netrw-help|
|
||||
<cr>.............Browsing...................................|netrw-cr|
|
||||
<del>............Deleting Files or Directories..............|netrw-delete|
|
||||
-................Going Up...................................|netrw--|
|
||||
a................Hiding Files or Directories................|netrw-a|
|
||||
mb...............Bookmarking a Directory....................|netrw-mb|
|
||||
gb...............Changing to a Bookmarked Directory.........|netrw-gb|
|
||||
cd...............Make Browsing Directory The Current Dir....|netrw-c|
|
||||
d................Make A New Directory.......................|netrw-d|
|
||||
D................Deleting Files or Directories..............|netrw-D|
|
||||
<c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
|
||||
i................Change Listing Style.......................|netrw-i|
|
||||
<c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
|
||||
o................Browsing with a Horizontal Split...........|netrw-o|
|
||||
p................Use Preview Window.........................|netrw-p|
|
||||
P................Edit in Previous Window....................|netrw-p|
|
||||
q................Listing Bookmarks and History..............|netrw-qb|
|
||||
r................Reversing Sorting Order....................|netrw-r|
|
||||
< (etc)
|
||||
<F1>.............Help.......................................|netrw-help|
|
||||
<cr>.............Browsing...................................|netrw-cr|
|
||||
<del>............Deleting Files or Directories..............|netrw-delete|
|
||||
-................Going Up...................................|netrw--|
|
||||
a................Hiding Files or Directories................|netrw-a|
|
||||
mb...............Bookmarking a Directory....................|netrw-mb|
|
||||
gb...............Changing to a Bookmarked Directory.........|netrw-gb|
|
||||
cd...............Make Browsing Directory The Current Dir....|netrw-c|
|
||||
d................Make A New Directory.......................|netrw-d|
|
||||
D................Deleting Files or Directories..............|netrw-D|
|
||||
<c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
|
||||
i................Change Listing Style.......................|netrw-i|
|
||||
<c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
|
||||
o................Browsing with a Horizontal Split...........|netrw-o|
|
||||
p................Use Preview Window.........................|netrw-p|
|
||||
P................Edit in Previous Window....................|netrw-p|
|
||||
q................Listing Bookmarks and History..............|netrw-qb|
|
||||
r................Reversing Sorting Order....................|netrw-r|
|
||||
< (etc)
|
||||
|
||||
The <F1> key thus brings you to a netrw directory browsing contents help page.
|
||||
It's a regular help page; use the usual |CTRL-]| to jump to tagged help items
|
||||
@@ -106,7 +106,7 @@ To select files for display and editing: (with the cursor is atop a filename)
|
||||
<enter> Open the file in the current window. |netrw-cr|
|
||||
o Horizontally split window and display file |netrw-o|
|
||||
v Vertically split window and display file |netrw-v|
|
||||
p Use the |preview-window| |netrw-p|
|
||||
p Use the |preview-window| |netrw-p|
|
||||
P Edit in the previous window |netrw-P|
|
||||
t Open file in a new tab |netrw-t|
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 9.0. Last change: 2022 Dec 20
|
||||
*usr_41.txt* For Vim version 9.0. Last change: 2023 Jan 17
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
|
||||
@@ -8123,7 +8123,7 @@ Files: src/message.c
|
||||
|
||||
Patch 7.2.119
|
||||
Problem: Status line is redrawn too often.
|
||||
Solution: Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira)
|
||||
Solution: Check ScreenLinesUC[] properly. (Yukihiro Nakadaira)
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 7.2.120
|
||||
@@ -9782,8 +9782,8 @@ Files: src/syntax.c
|
||||
|
||||
Patch 7.2.406
|
||||
Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle)
|
||||
Solution: Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro
|
||||
Nakadaira) Also clear ScreeenLinesC when allocating.
|
||||
Solution: Only used ScreenLinesC when ScreenLinesUC is not zero. (Yukihiro
|
||||
Nakadaira) Also clear ScreenLinesC when allocating.
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 7.2.407
|
||||
|
||||
@@ -342,11 +342,11 @@ New Vim variables: ~
|
||||
|v:mouse_winid| Window ID for a mouse click obtained with |getchar()|
|
||||
|v:none| an empty String, used for JSON
|
||||
|v:null| an empty String, used for JSON
|
||||
|v:option_new| new value of the option, used by |OptionSet|
|
||||
|v:option_old| old value of the option, used by |OptionSet|
|
||||
|v:option_new| new value of the option, used by |OptionSet|
|
||||
|v:option_old| old value of the option, used by |OptionSet|
|
||||
|v:option_oldlocal| old local value of the option, used by |OptionSet|
|
||||
|v:option_oldglobal| old global value of the option, used by |OptionSet|
|
||||
|v:option_type| scope of the set command, used by |OptionSet|
|
||||
|v:option_type| scope of the set command, used by |OptionSet|
|
||||
|v:option_command| command used to set the option, used by |OptionSet|
|
||||
|v:progpath| the command with which Vim was invoked
|
||||
|v:t_bool| value of Boolean type
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 9.0. Last change: 2022 Dec 08
|
||||
*vim9.txt* For Vim version 9.0. Last change: 2023 Feb 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -105,7 +105,7 @@ script and `:def` functions; details are below:
|
||||
`:open`
|
||||
`:s` with only flags
|
||||
`:t`
|
||||
`:xit`
|
||||
`:xit`
|
||||
- Some commands, especially those used for flow control, cannot be shortened.
|
||||
E.g., `:throw` cannot be written as `:th`. *vim9-no-shorten*
|
||||
- You cannot use curly-braces names.
|
||||
@@ -113,7 +113,7 @@ script and `:def` functions; details are below:
|
||||
:%s/this/that
|
||||
- Executing a register with "@r" does not work, you can prepend a colon or use
|
||||
`:exe`: >
|
||||
:exe @a
|
||||
:exe @a
|
||||
- Unless mentioned specifically, the highest |scriptversion| is used.
|
||||
- When defining an expression mapping, the expression will be evaluated in the
|
||||
context of the script where it was defined.
|
||||
@@ -265,7 +265,7 @@ Detail: this is because "Inner" will actually become a function reference to a
|
||||
function with a generated name.
|
||||
|
||||
It is not possible to define a script-local function in a function. You can
|
||||
define a local function and assign it to a script-local funcref (it must have
|
||||
define a local function and assign it to a script-local Funcref (it must have
|
||||
been declared at the script level). It is possible to define a global
|
||||
function by using the "g:" prefix.
|
||||
|
||||
@@ -340,7 +340,7 @@ function, the function does not need to be defined more than once: >
|
||||
|
||||
Variable declarations with :var, :final and :const ~
|
||||
*vim9-declaration* *:var* *E1079*
|
||||
*E1017* *E1020* *E1054* *E1087* *E1108* *E1124*
|
||||
*E1017* *E1020* *E1054* *E1087* *E1124*
|
||||
Local variables need to be declared with `:var`. Local constants need to be
|
||||
declared with `:final` or `:const`. We refer to both as "variables" in this
|
||||
section.
|
||||
@@ -388,7 +388,6 @@ used: >
|
||||
echo temp # Error!
|
||||
|
||||
This is especially useful in a user command: >
|
||||
|
||||
command -range Rename {
|
||||
var save = @a
|
||||
@a = 'some expression'
|
||||
@@ -397,7 +396,6 @@ This is especially useful in a user command: >
|
||||
}
|
||||
|
||||
And with autocommands: >
|
||||
|
||||
au BufWritePre *.go {
|
||||
var save = winsaveview()
|
||||
silent! exe ':%! some formatting command'
|
||||
@@ -624,7 +622,7 @@ Additionally, a lambda can contain statements in {}: >
|
||||
}
|
||||
This can be useful for a timer, for example: >
|
||||
var count = 0
|
||||
var timer = timer_start(500, (_) => {
|
||||
var timer = timer_start(500, (_) => {
|
||||
count += 1
|
||||
echom 'Handler called ' .. count
|
||||
}, {repeat: 3})
|
||||
@@ -746,7 +744,7 @@ continuation is used without a backslash and a line starts with a bar: >
|
||||
*E1050*
|
||||
To make it possible for the operator at the start of the line to be
|
||||
recognized, it is required to put a colon before a range. This example will
|
||||
add "start" and print: >
|
||||
add "start" and "print": >
|
||||
var result = start
|
||||
+ print
|
||||
Like this: >
|
||||
@@ -805,7 +803,7 @@ Notes:
|
||||
echo [1, 2]
|
||||
[3, 4]
|
||||
- In some cases it is difficult for Vim to parse a command, especially when
|
||||
commands are used as an argument to another command, such as `windo`. In
|
||||
commands are used as an argument to another command, such as `:windo`. In
|
||||
those cases the line continuation with a backslash has to be used.
|
||||
|
||||
|
||||
@@ -826,7 +824,7 @@ White space is required around most operators.
|
||||
|
||||
White space is required in a sublist (list slice) around the ":", except at
|
||||
the start and end: >
|
||||
otherlist = mylist[v : count] # v:count has a different meaning
|
||||
otherlist = mylist[v : count] # v:count has a different meaning
|
||||
otherlist = mylist[:] # make a copy of the List
|
||||
otherlist = mylist[v :]
|
||||
otherlist = mylist[: v]
|
||||
@@ -881,7 +879,7 @@ This works for alphanumeric characters, underscore and dash. If you want to
|
||||
use another character, use a single or double quoted string: >
|
||||
var dict = {'key with space': value}
|
||||
var dict = {"key\twith\ttabs": value}
|
||||
var dict = {'': value} # empty key
|
||||
var dict = {'': value} # empty key
|
||||
< *E1139*
|
||||
In case the key needs to be an expression, square brackets can be used, just
|
||||
like in JavaScript: >
|
||||
@@ -1256,6 +1254,7 @@ level. They cannot be created in a function, also not in a legacy function.
|
||||
:defc[ompile] Compile functions defined in the current script that
|
||||
were not compiled yet.
|
||||
This will report any errors found during compilation.
|
||||
This excludes functions defined inside a class.
|
||||
|
||||
:defc[ompile] {func}
|
||||
:defc[ompile] debug {func}
|
||||
@@ -1263,6 +1262,10 @@ level. They cannot be created in a function, also not in a legacy function.
|
||||
Compile function {func}, if needed. Use "debug" and
|
||||
"profile" to specify the compilation mode.
|
||||
This will report any errors found during compilation.
|
||||
{func} call also be "ClassName.functionName" to
|
||||
compile a function or method in a class.
|
||||
{func} call also be "ClassName" to compile all
|
||||
functions and methods in a class.
|
||||
|
||||
*:disa* *:disassemble*
|
||||
:disa[ssemble] {func} Show the instructions generated for {func}.
|
||||
@@ -1311,7 +1314,7 @@ Closures defined in a loop will share the same context. For example: >
|
||||
< *E1271*
|
||||
A closure must be compiled in the context that it is defined in, so that
|
||||
variables in that context can be found. This mostly happens correctly, except
|
||||
when a function is marked for debugging with `breakadd` after it was compiled.
|
||||
when a function is marked for debugging with `:breakadd` after it was compiled.
|
||||
Make sure to define the breakpoint before compiling the outer function.
|
||||
|
||||
The "inloop" variable will exist only once, all closures put in the list refer
|
||||
@@ -1353,7 +1356,7 @@ closure: >
|
||||
}
|
||||
endfor
|
||||
|
||||
Using `echowindow` is useful in a timer, the messages go into a popup and will
|
||||
Using `:echowindow` is useful in a timer, the messages go into a popup and will
|
||||
not interfere with what the user is doing when it triggers.
|
||||
|
||||
|
||||
@@ -1404,7 +1407,7 @@ to a Vim9 function:
|
||||
echo line(1) .. line(2)
|
||||
|
||||
- line continuation does not always require a backslash: >
|
||||
echo ['one',
|
||||
echo ['one',
|
||||
\ 'two',
|
||||
\ 'three'
|
||||
\ ]
|
||||
@@ -1594,7 +1597,7 @@ That is because the declaration looks like a list of numbers, thus is
|
||||
equivalent to: >
|
||||
var ll: list<number> = [1, 2, 3]
|
||||
If you do want a more permissive list you need to declare the type: >
|
||||
var ll: list<any = [1, 2, 3]
|
||||
var ll: list<any> = [1, 2, 3]
|
||||
ll->extend(['x']) # OK
|
||||
|
||||
|
||||
@@ -1661,8 +1664,8 @@ type, it can not be used in Vim9 script.
|
||||
|
||||
*E1211* *E1217* *E1218* *E1219* *E1220* *E1221*
|
||||
*E1222* *E1223* *E1224* *E1225* *E1226* *E1227*
|
||||
*E1228* *E1238* *E1250* *E1251* *E1252* *E1253*
|
||||
*E1256* *E1297* *E1298* *E1301*
|
||||
*E1228* *E1238* *E1250* *E1251* *E1252* *E1256*
|
||||
*E1297* *E1298* *E1301*
|
||||
Types are checked for most builtin functions to make it easier to spot
|
||||
mistakes.
|
||||
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
*vim9class.txt* For Vim version 9.0. Last change: 2023 Jan 09
|
||||
*vim9class.txt* For Vim version 9.0. Last change: 2023 Feb 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
NOTE - This is under development, anything can still change! - NOTE
|
||||
NOTE - This is not finished yet, anything can still change! - NOTE
|
||||
|
||||
|
||||
Vim9 classes, objects, interfaces, types and enums.
|
||||
|
||||
1. Overview |Vim9-class-overview|
|
||||
2. A simple class |Vim9-simple-class|
|
||||
3. Using an abstract class |Vim9-abstract-class|
|
||||
4. Using an interface |Vim9-using-interface|
|
||||
5. More class details |Vim9-class|
|
||||
6. Type definition |Vim9-type|
|
||||
7. Enum |Vim9-enum|
|
||||
3. Class members and functions |Vim9-class-member|
|
||||
4. Using an abstract class |Vim9-abstract-class|
|
||||
5. Using an interface |Vim9-using-interface|
|
||||
6. More class details |Vim9-class|
|
||||
7. Type definition |Vim9-type|
|
||||
8. Enum |Vim9-enum|
|
||||
|
||||
9. Rationale
|
||||
10. To be done later
|
||||
@@ -25,25 +26,25 @@ Vim9 classes, objects, interfaces, types and enums.
|
||||
1. Overview *Vim9-class-overview*
|
||||
|
||||
The fancy term is "object-oriented programming". You can find lots of study
|
||||
material about this subject. Here we document what |Vim9| script provides,
|
||||
assuming you know the basics already. Added are helpful hints about how
|
||||
to use this functionality effectively.
|
||||
material on this subject. Here we document what |Vim9| script provides,
|
||||
assuming you know the basics already. Added are helpful hints about how to
|
||||
use this functionality effectively.
|
||||
|
||||
The basic item is an object:
|
||||
- An object stores state. It contains one or more variables that can each
|
||||
have a value.
|
||||
- An object usually provides functions that manipulate its state. These
|
||||
- An object provides functions that use and manipulate its state. These
|
||||
functions are invoked "on the object", which is what sets it apart from the
|
||||
traditional separation of data and code that manipulates the data.
|
||||
- An object has a well defined interface, with typed member variables and
|
||||
member functions.
|
||||
- Objects are created by a class and all objects have the same interface.
|
||||
This never changes, it is not dynamic.
|
||||
- Objects are created from a class and all objects have the same interface.
|
||||
This does not change at runtime, it is not dynamic.
|
||||
|
||||
An object can only be created by a class. A class provides:
|
||||
- A new() method, the constructor, which returns an object for the class.
|
||||
This method is invoked on the class name: MyClass.new().
|
||||
- State shared by all objects of the class: class variables and constants.
|
||||
- State shared by all objects of the class: class variables (class members).
|
||||
- A hierarchy of classes, with super-classes and sub-classes, inheritance.
|
||||
|
||||
An interface is used to specify properties of an object:
|
||||
@@ -62,17 +63,18 @@ teachers use real-world objects to explain class relations and you might think
|
||||
your model should therefore reflect the real world. It doesn't! The model
|
||||
should match your purpose.
|
||||
|
||||
You will soon find that composition is often better than inheritance. Don't
|
||||
waste time trying to find the optimal class model. Or waste time discussing
|
||||
whether a square is a rectangle or that a rectangle is a square. It doesn't
|
||||
matter.
|
||||
Keep in mind that composition (an object contains other objects) is often
|
||||
better than inheritance (an object extends another object). Don't waste time
|
||||
trying to find the optimal class model. Or waste time discussing whether a
|
||||
square is a rectangle or that a rectangle is a square. It doesn't matter.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
2. A simple class *Vim9-simple-class*
|
||||
|
||||
Let's start with a simple example: a class that stores a text position: >
|
||||
Let's start with a simple example: a class that stores a text position (see
|
||||
below for how to do this more efficiently): >
|
||||
|
||||
class TextPosition
|
||||
this.lnum: number
|
||||
@@ -107,7 +109,7 @@ The object members "lnum" and "col" can be accessed directly: >
|
||||
< *E1317* *E1327*
|
||||
If you have been using other object-oriented languages you will notice that
|
||||
in Vim the object members are consistently referred to with the "this."
|
||||
prefix. This is different from languages like Java and TypeScript. This
|
||||
prefix. This is different from languages like Java and TypeScript. The
|
||||
naming convention makes the object members easy to spot. Also, when a
|
||||
variable does not have the "this." prefix you know it is not an object member.
|
||||
|
||||
@@ -117,9 +119,9 @@ Member write access ~
|
||||
Now try to change an object member directly: >
|
||||
|
||||
pos.lnum = 9
|
||||
< *E1335*
|
||||
< *E1335*
|
||||
This will give you an error! That is because by default object members can be
|
||||
read but not set. That's why the class provides a method for it: >
|
||||
read but not set. That's why the TextPosition class provides a method for it: >
|
||||
|
||||
pos.SetLnum(9)
|
||||
|
||||
@@ -128,12 +130,12 @@ way. Most often there is no problem using a value, while setting a value may
|
||||
have side effects that need to be taken care of. In this case, the SetLnum()
|
||||
method could check if the line number is valid and either give an error or use
|
||||
the closest valid value.
|
||||
*:public* *E1331*
|
||||
*:public* *E1331*
|
||||
If you don't care about side effects and want to allow the object member to be
|
||||
changed at any time, you can make it public: >
|
||||
|
||||
public this.lnum: number
|
||||
public this.col number
|
||||
public this.col: number
|
||||
|
||||
Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting
|
||||
"pos.lnum" directly above will no longer give an error.
|
||||
@@ -153,7 +155,7 @@ name: >
|
||||
this._col number
|
||||
|
||||
Now you need to provide methods to get the value of the private members.
|
||||
These are commonly call getters. We recommend using a name that starts with
|
||||
These are commonly called getters. We recommend using a name that starts with
|
||||
"Get": >
|
||||
|
||||
def GetLnum(): number
|
||||
@@ -181,6 +183,7 @@ Simplifying the new() method ~
|
||||
Many constructors take values for the object members. Thus you very often see
|
||||
this pattern: >
|
||||
|
||||
class SomeClass
|
||||
this.lnum: number
|
||||
this.col: number
|
||||
|
||||
@@ -188,6 +191,7 @@ this pattern: >
|
||||
this.lnum = lnum
|
||||
this.col = col
|
||||
enddef
|
||||
endclass
|
||||
|
||||
Not only is this text you need to write, it also has the type of each member
|
||||
twice. Since this is so common a shorter way to write new() is provided: >
|
||||
@@ -197,8 +201,24 @@ twice. Since this is so common a shorter way to write new() is provided: >
|
||||
|
||||
The semantics are easy to understand: Providing the object member name,
|
||||
including "this.", as the argument to new() means the value provided in the
|
||||
new() call is assigned to that object member. This mechanism is coming from
|
||||
the Dart language.
|
||||
new() call is assigned to that object member. This mechanism comes from the
|
||||
Dart language.
|
||||
|
||||
Putting together this way of using new() and making the members public results
|
||||
in a much shorter class definition as what we started with: >
|
||||
|
||||
class TextPosition
|
||||
public this.lnum: number
|
||||
public this.col: number
|
||||
|
||||
def new(this.lnum, this.col)
|
||||
enddef
|
||||
|
||||
def SetPosition(lnum: number, col: number)
|
||||
this.lnum = lnum
|
||||
this.col = col
|
||||
enddef
|
||||
endclass
|
||||
|
||||
The sequence of constructing a new object is:
|
||||
1. Memory is allocated and cleared. All values are zero/false/empty.
|
||||
@@ -208,22 +228,69 @@ The sequence of constructing a new object is:
|
||||
3. Arguments in the new() method in the "this.name" form are assigned.
|
||||
4. The body of the new() method is executed.
|
||||
|
||||
TODO: for a sub-class the constructor of the parent class will be invoked
|
||||
somewhere.
|
||||
|
||||
If the class extends a parent class, the same thing happens. In the second
|
||||
step the members of the parent class are done first. There is no need to call
|
||||
"super()" or "new()" on the parent.
|
||||
|
||||
==============================================================================
|
||||
|
||||
3. Using an abstract class *Vim9-abstract-class*
|
||||
3. class members and functions *Vim9-class-member*
|
||||
|
||||
*:static* *E1337* *E1338*
|
||||
Class members are declared with "static". They are used by the name without a
|
||||
prefix: >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
def new(this.size)
|
||||
totalSize += this.size
|
||||
enddef
|
||||
endclass
|
||||
< *E1340* *E1341*
|
||||
Since the name is used as-is, shadowing the name by a function argument name
|
||||
or local variable name is not allowed.
|
||||
|
||||
Just like object members the access can be made private by using an underscore
|
||||
as the first character in the name, and it can be made public by prefixing
|
||||
"public": >
|
||||
|
||||
class OtherThing
|
||||
static total: number # anybody can read, only class can write
|
||||
static _sum: number # only class can read and write
|
||||
public static result: number # anybody can read and write
|
||||
endclass
|
||||
<
|
||||
*class-function*
|
||||
Class functions are also declared with "static". They have no access to
|
||||
object members, they cannot use the "this" keyword. >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
# Clear the total size and return the value it had before.
|
||||
static def ClearTotalSize(): number
|
||||
var prev = totalSize
|
||||
totalSize = 0
|
||||
return prev
|
||||
enddef
|
||||
endclass
|
||||
|
||||
Inside the class the function can be called by name directly, outside the
|
||||
class the class name must be prefixed: `OtherThing.ClearTotalSize()`.
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Using an abstract class *Vim9-abstract-class*
|
||||
|
||||
An abstract class forms the base for at least one sub-class. In the class
|
||||
model one often finds that a few classes have the same properties that can be
|
||||
shared, but a class with those properties does not have enough state to create
|
||||
shared, but a class with these properties does not have enough state to create
|
||||
an object from. A sub-class must extend the abstract class and add the
|
||||
missing state and/or methods before it can be used to create objects for.
|
||||
|
||||
An abstract class does not have a new() method.
|
||||
|
||||
For example, a Shape class could store a color and thickness. You cannot
|
||||
create a Shape object, it is missing the information about what kind of shape
|
||||
it is. The Shape class functions as the base for a Square and a Triangle
|
||||
@@ -249,51 +316,13 @@ class, for which objects can be created. Example: >
|
||||
enddef
|
||||
endclass
|
||||
<
|
||||
*class-member* *:static* *E1337* *E1338*
|
||||
Class members are declared with "static". They are used by the name without a
|
||||
prefix: >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
def new(this.size)
|
||||
totalSize += this.size
|
||||
enddef
|
||||
endclass
|
||||
< *E1340* *E1341*
|
||||
Since the name is used as-is, shadowing the name by a function argument name
|
||||
or variable name is not allowed.
|
||||
|
||||
Just like object members the access can be made private by using an underscore
|
||||
as the first character in the name, and it can be made public by prefixing
|
||||
"public": >
|
||||
class OtherThing
|
||||
static total: number # anybody can read, only class can write
|
||||
static _sum: number # only class can read and write
|
||||
public static result: number # anybody can read and write
|
||||
endclass
|
||||
<
|
||||
*class-function*
|
||||
Class functions are also declared with "static". They have no access to
|
||||
object members, they cannot use the "this" keyword. >
|
||||
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
" Clear the total size and return the value it had before.
|
||||
static def ClearTotalSize(): number
|
||||
var prev = totalSize
|
||||
totalSize = 0
|
||||
return prev
|
||||
enddef
|
||||
endclass
|
||||
An abstract class is defined the same way as a normal class, except that it
|
||||
does not have any new() method. *E1359*
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
4. Using an interface *Vim9-using-interface*
|
||||
5. Using an interface *Vim9-using-interface*
|
||||
|
||||
The example above with Shape, Square and Triangle can be made more useful if
|
||||
we add a method to compute the surface of the object. For that we create the
|
||||
@@ -348,7 +377,7 @@ The interface name can be used as a type: >
|
||||
|
||||
==============================================================================
|
||||
|
||||
5. More class details *Vim9-class* *Class* *class*
|
||||
6. More class details *Vim9-class* *Class* *class*
|
||||
|
||||
Defining a class ~
|
||||
*:class* *:endclass* *:abstract*
|
||||
@@ -386,12 +415,52 @@ once. They can appear in any order, although this order is recommended: >
|
||||
extends ClassName
|
||||
implements InterfaceName, OtherInterface
|
||||
specifies SomeInterface
|
||||
< *extends*
|
||||
< *E1355*
|
||||
Each member and function name can be used only once. It is not possible to
|
||||
define a function with the same name and different type of arguments.
|
||||
|
||||
|
||||
Extending a class ~
|
||||
*extends*
|
||||
A class can extend one other class. *E1352* *E1353* *E1354*
|
||||
The basic idea is to build on top of an existing class, add properties to it.
|
||||
|
||||
The extended class is called the "base class" or "super class". The new class
|
||||
is called the "child class".
|
||||
|
||||
Object members from the base class are all taken over by the child class. It
|
||||
is not possible to override them (unlike some other languages).
|
||||
|
||||
*E1356* *E1357* *E1358*
|
||||
Object methods of the base class can be overruled. The signature (arguments,
|
||||
argument types and return type) must be exactly the same. The method of the
|
||||
base class can be called by prefixing "super.".
|
||||
|
||||
Other object methods of the base class are taken over by the child class.
|
||||
|
||||
Class functions, including functions starting with "new", can be overruled,
|
||||
like with object methods. The function on the base class can be called by
|
||||
prefixing the name of the class (for class functions) or "super.".
|
||||
|
||||
Unlike other languages, the constructor of the base class does not need to be
|
||||
invoked. In fact, it cannot be invoked. If some initialization from the base
|
||||
class also needs to be done in a child class, put it in an object method and
|
||||
call that method from every constructor().
|
||||
|
||||
If the base class did not specify a new() function then one was automatically
|
||||
created. This function will not be taken over by the child class. The child
|
||||
class can define its own new() function, or, if there isn't one, a new()
|
||||
function will be added automatically.
|
||||
|
||||
|
||||
A class implementing an interface ~
|
||||
*implements* *E1346* *E1347*
|
||||
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 members and methods, with a
|
||||
named interface. This avoids the need for separately specifying the
|
||||
@@ -400,16 +469,16 @@ interface, which is often done in many languages, especially Java.
|
||||
|
||||
Items in a class ~
|
||||
*E1318* *E1325* *E1326*
|
||||
Inside a class, in betweeen `:class` and `:endclass`, these items can appear:
|
||||
Inside a class, in between `:class` and `:endclass`, these items can appear:
|
||||
- An object member declaration: >
|
||||
this._memberName: memberType
|
||||
this.memberName: memberType
|
||||
this._memberName: memberType
|
||||
this.memberName: memberType
|
||||
public this.memberName: memberType
|
||||
- A constructor method: >
|
||||
def new(arguments)
|
||||
def newName(arguments)
|
||||
def new(arguments)
|
||||
def newName(arguments)
|
||||
- An object method: >
|
||||
def SomeMethod(arguments)
|
||||
def SomeMethod(arguments)
|
||||
< *E1329*
|
||||
For the object member the type must be specified. The best way is to do this
|
||||
explicitly with ": {type}". For simple types you can also use an initializer,
|
||||
@@ -451,6 +520,15 @@ name, with a hint about what it provides.
|
||||
An interface can only be defined in a |Vim9| script file. *E1342*
|
||||
|
||||
|
||||
null object ~
|
||||
|
||||
When a variable is declared to have the type of an object, but it is not
|
||||
initialized, the value is null. When trying to use this null object Vim often
|
||||
does not know what class was supposed to be used. Vim then cannot check if
|
||||
a member name is correct and you will get an "Using a null object" error,
|
||||
even when the member name is invalid. *E1360* *E1362*
|
||||
|
||||
|
||||
Default constructor ~
|
||||
|
||||
In case you define a class without a new() method, one will be automatically
|
||||
@@ -528,7 +606,7 @@ constructor methods.
|
||||
|
||||
==============================================================================
|
||||
|
||||
6. Type definition *Vim9-type* *:type*
|
||||
7. Type definition *Vim9-type* *:type*
|
||||
|
||||
A type definition is giving a name to a type specification. For Example: >
|
||||
|
||||
@@ -539,7 +617,7 @@ TODO: more explanation
|
||||
|
||||
==============================================================================
|
||||
|
||||
7. Enum *Vim9-enum* *:enum* *:endenum*
|
||||
8. Enum *Vim9-enum* *:enum* *:endenum*
|
||||
|
||||
An enum is a type that can have one of a list of values. Example: >
|
||||
|
||||
@@ -639,7 +717,7 @@ Some languages support multiple inheritance. Although that can be useful in
|
||||
some cases, it makes the rules of how a class works quite complicated.
|
||||
Instead, using interfaces to declare what is supported is much simpler. The
|
||||
very popular Java language does it this way, and it should be good enough for
|
||||
Vim. The "keep it simple" rule applies here.
|
||||
Vim. The "keep it simple" rule applies here.
|
||||
|
||||
Explicitly declaring that a class supports an interface makes it easy to see
|
||||
what a class is intended for. It also makes it possible to do proper type
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2022 Dec 19
|
||||
" Last Change: 2023 Feb 25
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -205,6 +205,9 @@ au BufNewFile,BufRead *.mch,*.ref,*.imp setf b
|
||||
au BufNewFile,BufRead *.bas call dist#ft#FTbas()
|
||||
au BufNewFile,BufRead *.bi,*.bm call dist#ft#FTbas()
|
||||
|
||||
" Bass
|
||||
au BufNewFile,BufRead *.bass setf bass
|
||||
|
||||
" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
|
||||
au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb
|
||||
|
||||
@@ -274,6 +277,9 @@ endif
|
||||
au BufNewFile,BufRead *.c call dist#ft#FTlpc()
|
||||
au BufNewFile,BufRead *.lpc,*.ulpc setf lpc
|
||||
|
||||
" Cairo
|
||||
au BufNewFile,BufRead *.cairo setf cairo
|
||||
|
||||
" Calendar
|
||||
au BufNewFile,BufRead calendar setf calendar
|
||||
|
||||
@@ -310,6 +316,9 @@ au BufNewFile,BufRead *.cdl setf cdl
|
||||
" Conary Recipe
|
||||
au BufNewFile,BufRead *.recipe setf conaryrecipe
|
||||
|
||||
" ChainPack Object Notation (CPON)
|
||||
au BufNewFile,BufRead *.cpon setf cpon
|
||||
|
||||
" Controllable Regex Mutilator
|
||||
au BufNewFile,BufRead *.crm setf crm
|
||||
|
||||
@@ -329,6 +338,10 @@ if has("fname_case")
|
||||
au BufNewFile,BufRead *.C,*.H setf cpp
|
||||
endif
|
||||
|
||||
" C++ 20 modules (clang)
|
||||
" https://clang.llvm.org/docs/StandardCPlusPlusModules.html#file-name-requirement
|
||||
au BufNewFile,BufRead *.cppm,*.ccm,*.cxxm,*.c++m setf cpp
|
||||
|
||||
" .h files can be C, Ch C++, ObjC or ObjC++.
|
||||
" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
|
||||
" detected automatically.
|
||||
@@ -371,6 +384,9 @@ au BufNewFile,BufRead *.ch call dist#ft#FTchange()
|
||||
" ChordPro
|
||||
au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro
|
||||
|
||||
" Clangd
|
||||
au BufNewFile,BufRead .clangd setf yaml
|
||||
|
||||
" Clang-format
|
||||
au BufNewFile,BufRead .clang-format setf yaml
|
||||
|
||||
@@ -427,12 +443,18 @@ au BufNewFile,BufRead *.cook setf cook
|
||||
" needs to be inspected.
|
||||
au BufNewFile,BufRead *.cql setf cqlang
|
||||
|
||||
" Crystal
|
||||
au BufNewFile,BufRead *.cr setf crystal
|
||||
|
||||
" CSV Files
|
||||
au BufNewFile,BufRead *.csv setf csv
|
||||
|
||||
" CUDA Compute Unified Device Architecture
|
||||
au BufNewFile,BufRead *.cu,*.cuh setf cuda
|
||||
|
||||
" Cue
|
||||
au BufNewFile,BufRead *.cue setf cue
|
||||
|
||||
" Dockerfile; Podman uses the same syntax with name Containerfile
|
||||
" Also see Dockerfile.* below.
|
||||
au BufNewFile,BufRead Containerfile,Dockerfile,dockerfile,*.[dD]ockerfile setf dockerfile
|
||||
@@ -516,6 +538,9 @@ au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources
|
||||
" Deny hosts
|
||||
au BufNewFile,BufRead denyhosts.conf setf denyhosts
|
||||
|
||||
" Dhall
|
||||
au BufNewFile,BufRead *.dhall setf dhall
|
||||
|
||||
" dnsmasq(8) configuration files
|
||||
au BufNewFile,BufRead */etc/dnsmasq.conf setf dnsmasq
|
||||
|
||||
@@ -629,6 +654,12 @@ au BufNewFile,BufRead *.elm setf elm
|
||||
" Elm Filter Rules file
|
||||
au BufNewFile,BufRead filter-rules setf elmfilt
|
||||
|
||||
" Elsa - https://github.com/ucsd-progsys/elsa
|
||||
au BufNewFile,BufRead *.lc setf elsa
|
||||
|
||||
" EdgeDB Schema Definition Language
|
||||
au BufNewFile,BufRead *.esdl setf esdl
|
||||
|
||||
" ESMTP rc file
|
||||
au BufNewFile,BufRead *esmtprc setf esmtprc
|
||||
|
||||
@@ -665,6 +696,9 @@ autocmd BufRead,BufNewFile *.fnl setf fennel
|
||||
" Fetchmail RC file
|
||||
au BufNewFile,BufRead .fetchmailrc setf fetchmail
|
||||
|
||||
" FIRRTL - Flexible Internal Representation for RTL
|
||||
au BufNewFile,BufRead *.fir setf firrtl
|
||||
|
||||
" Fish shell
|
||||
au BufNewFile,BufRead *.fish setf fish
|
||||
|
||||
@@ -697,6 +731,9 @@ au BufNewFile,BufRead *.fsl setf framescript
|
||||
" FStab
|
||||
au BufNewFile,BufRead fstab,mtab setf fstab
|
||||
|
||||
" Func
|
||||
au BufNewFile,BufRead *.fc setf func
|
||||
|
||||
" Fusion
|
||||
au BufRead,BufNewFile *.fusion setf fusion
|
||||
|
||||
@@ -853,7 +890,7 @@ au BufNewFile,BufRead *.htpp setf hastepreproc
|
||||
au BufRead,BufNewFile *.hcl setf hcl
|
||||
|
||||
" Go checksum file (must be before *.sum Hercules)
|
||||
au BufNewFile,BufRead go.sum setf gosum
|
||||
au BufNewFile,BufRead go.sum,go.work.sum setf gosum
|
||||
|
||||
" Hercules
|
||||
au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum setf hercules
|
||||
@@ -1014,11 +1051,11 @@ au BufNewFile,BufRead *.json-patch setf json
|
||||
au BufNewFile,BufRead *.ipynb setf json
|
||||
|
||||
" Other files that look like json
|
||||
au BufNewFile,BufRead .prettierrc,.firebaserc setf json
|
||||
au BufNewFile,BufRead .prettierrc,.firebaserc,.stylelintrc setf json
|
||||
|
||||
" JSONC (JSON with comments)
|
||||
au BufNewFile,BufRead *.jsonc,.babelrc,.eslintrc,.jsfmtrc setf jsonc
|
||||
au BufNewFile,BufRead .jshintc,.hintrc,.swrc,[jt]sconfig*.json setf jsonc
|
||||
au BufNewFile,BufRead *.jsonc,.babelrc,.eslintrc,.jsfmtrc setf jsonc
|
||||
au BufNewFile,BufRead .jshintrc,.hintrc,.swrc,[jt]sconfig*.json setf jsonc
|
||||
|
||||
" JSON
|
||||
au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest setf json
|
||||
@@ -1029,6 +1066,9 @@ au BufNewFile,BufRead *.jsonnet,*.libsonnet setf jsonnet
|
||||
" Julia
|
||||
au BufNewFile,BufRead *.jl setf julia
|
||||
|
||||
" KDL
|
||||
au BufNewFile,BufRead *.kdl setf kdl
|
||||
|
||||
" Kixtart
|
||||
au BufNewFile,BufRead *.kix setf kix
|
||||
|
||||
@@ -1076,6 +1116,9 @@ au BufNewFile,BufRead *.ldif setf ldif
|
||||
" Ld loader
|
||||
au BufNewFile,BufRead *.ld setf ld
|
||||
|
||||
" Lean
|
||||
au BufNewFile,BufRead *.lean setf lean
|
||||
|
||||
" Ledger
|
||||
au BufRead,BufNewFile *.ldg,*.ledger,*.journal setf ledger
|
||||
|
||||
@@ -1123,6 +1166,9 @@ au BufNewFile,BufRead *.lite,*.lt setf lite
|
||||
" LiteStep RC files
|
||||
au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep
|
||||
|
||||
" Livebook
|
||||
au BufNewFile,BufRead *.livemd setf livebook
|
||||
|
||||
" Login access
|
||||
au BufNewFile,BufRead */etc/login.access setf loginaccess
|
||||
|
||||
@@ -1252,6 +1298,9 @@ au BufNewFile,BufRead *.[mi][3g] setf modula3
|
||||
" Larch/Modula-3
|
||||
au BufNewFile,BufRead *.lm3 setf modula3
|
||||
|
||||
" Modconf
|
||||
au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
|
||||
|
||||
" Monk
|
||||
au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk
|
||||
|
||||
@@ -1261,8 +1310,8 @@ au BufNewFile,BufRead *.moo setf moo
|
||||
" Moonscript
|
||||
au BufNewFile,BufRead *.moon setf moonscript
|
||||
|
||||
" Modconf
|
||||
au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
|
||||
" Move language
|
||||
au BufNewFile,BufRead *.move setf move
|
||||
|
||||
" MPD is based on XML
|
||||
au BufNewFile,BufRead *.mpd setf xml
|
||||
@@ -1357,6 +1406,9 @@ au BufNewFile,BufRead *.nse setf lua
|
||||
" NSIS
|
||||
au BufNewFile,BufRead *.nsi,*.nsh setf nsis
|
||||
|
||||
" Nu
|
||||
au BufNewFile,BufRead {env,config}.nu setf nu
|
||||
|
||||
" Oblivion Language and Oblivion Script Extender
|
||||
au BufNewFile,BufRead *.obl,*.obse,*.oblivion,*.obscript setf obse
|
||||
|
||||
@@ -1369,6 +1421,9 @@ au BufNewFile,BufRead *.occ setf occam
|
||||
" Octave
|
||||
au BufNewFile,BufRead octave.conf,.octaverc,octaverc setf octave
|
||||
|
||||
" Odin
|
||||
au BufNewFile,BufRead *.odin setf odin
|
||||
|
||||
" Omnimark
|
||||
au BufNewFile,BufRead *.xom,*.xin setf omnimark
|
||||
|
||||
@@ -1399,6 +1454,7 @@ au BufNewFile,BufRead pf.conf setf pf
|
||||
" ini style config files, using # comments
|
||||
au BufNewFile,BufRead */etc/pacman.conf,mpv.conf setf confini
|
||||
au BufNewFile,BufRead */.aws/config,*/.aws/credentials setf confini
|
||||
au BufNewFile,BufRead *.nmconnection setf confini
|
||||
|
||||
" Pacman hooks
|
||||
au BufNewFile,BufRead *.hook
|
||||
@@ -1502,6 +1558,9 @@ au BufNewFile,BufRead *.plp setf plp
|
||||
" PO and PO template (GNU gettext)
|
||||
au BufNewFile,BufRead *.po,*.pot setf po
|
||||
|
||||
" Pony
|
||||
au BufNewFile,BufRead *.pony setf pony
|
||||
|
||||
" Postfix main config
|
||||
au BufNewFile,BufRead main.cf,main.cf.proto setf pfmain
|
||||
|
||||
@@ -1612,8 +1671,14 @@ au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
|
||||
" QL
|
||||
au BufRead,BufNewFile *.ql,*.qll setf ql
|
||||
|
||||
" QMLdir
|
||||
au BufRead,BufNewFile qmldir setf qmldir
|
||||
|
||||
" Quarto
|
||||
au BufRead,BufNewFile *.qmd setf quarto
|
||||
au BufRead,BufNewFile *.qmd setf quarto
|
||||
|
||||
" Racket (formerly detected as "scheme")
|
||||
au BufNewFile,BufRead *.rkt,*.rktd,*.rktl setf racket
|
||||
|
||||
" Radiance
|
||||
au BufNewFile,BufRead *.rad,*.mat setf radiance
|
||||
@@ -1695,6 +1760,9 @@ au BufNewFile,BufRead *.rnc setf rnc
|
||||
" Relax NG XML
|
||||
au BufNewFile,BufRead *.rng setf rng
|
||||
|
||||
" ILE RPG
|
||||
au BufNewFile,BufRead *.rpgle,*.rpgleinc setf rpgle
|
||||
|
||||
" RPL/2
|
||||
au BufNewFile,BufRead *.rpl setf rpl
|
||||
|
||||
@@ -1704,12 +1772,15 @@ au BufNewFile,BufRead *.robot,*.resource setf robot
|
||||
" Robots.txt
|
||||
au BufNewFile,BufRead robots.txt setf robots
|
||||
|
||||
" Rpcgen
|
||||
au BufNewFile,BufRead *.x setf rpcgen
|
||||
" RON (Rusty Object Notation)
|
||||
au BufNewFile,BufRead *.ron setf ron
|
||||
|
||||
" MikroTik RouterOS script
|
||||
au BufRead,BufNewFile *.rsc setf routeros
|
||||
|
||||
" Rpcgen
|
||||
au BufNewFile,BufRead *.x setf rpcgen
|
||||
|
||||
" reStructuredText Documentation Format
|
||||
au BufNewFile,BufRead *.rst setf rst
|
||||
|
||||
@@ -1747,6 +1818,9 @@ au BufNewFile,BufRead Cargo.lock,*/.cargo/config,*/.cargo/credentials setf toml
|
||||
" S-lang (or shader language, or SmallLisp)
|
||||
au BufNewFile,BufRead *.sl setf slang
|
||||
|
||||
" Sage
|
||||
au BufNewFile,BufRead *.sage setf sage
|
||||
|
||||
" Samba config
|
||||
au BufNewFile,BufRead smb.conf setf samba
|
||||
|
||||
@@ -1876,8 +1950,8 @@ au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks setf zsh
|
||||
au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh
|
||||
au BufNewFile,BufRead *.zsh setf zsh
|
||||
|
||||
" Scheme
|
||||
au BufNewFile,BufRead *.scm,*.ss,*.sld,*.rkt,*.rktd,*.rktl setf scheme
|
||||
" Scheme ("racket" patterns are now separate, see above)
|
||||
au BufNewFile,BufRead *.scm,*.ss,*.sld setf scheme
|
||||
|
||||
" Screen RC
|
||||
au BufNewFile,BufRead .screenrc,screenrc setf screen
|
||||
@@ -1898,6 +1972,9 @@ au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
|
||||
" SKILL
|
||||
au BufNewFile,BufRead *.il,*.ils,*.cdf setf skill
|
||||
|
||||
" Cadence
|
||||
au BufNewFile,BufRead *.cdc setf cdc
|
||||
|
||||
" SLRN
|
||||
au BufNewFile,BufRead .slrnrc setf slrnrc
|
||||
au BufNewFile,BufRead *.score setf slrnsc
|
||||
@@ -1983,6 +2060,9 @@ au BufNewFile,BufRead *.sql call dist#ft#SQL()
|
||||
" SQLJ
|
||||
au BufNewFile,BufRead *.sqlj setf sqlj
|
||||
|
||||
" PRQL
|
||||
au BufNewFile,BufRead *.prql setf prql
|
||||
|
||||
" SQR
|
||||
au BufNewFile,BufRead *.sqr,*.sqi setf sqr
|
||||
|
||||
@@ -1997,6 +2077,9 @@ au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig
|
||||
au BufNewFile,BufRead sshd_config setf sshdconfig
|
||||
au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf setf sshdconfig
|
||||
|
||||
" Starlark
|
||||
au BufNewFile,BufRead *.ipd,*.star,*.starlark setf starlark
|
||||
|
||||
" OpenVPN configuration
|
||||
au BufNewFile,BufRead *.ovpn setf openvpn
|
||||
au BufNewFile,BufRead */openvpn/*/*.conf setf openvpn
|
||||
@@ -2053,6 +2136,9 @@ au BufNewFile,BufRead *.svg setf svg
|
||||
" Surface
|
||||
au BufRead,BufNewFile *.sface setf surface
|
||||
|
||||
" LLVM TableGen
|
||||
au BufNewFile,BufRead *.td setf tablegen
|
||||
|
||||
" Tads (or Nroff or Perl test file)
|
||||
au BufNewFile,BufRead *.t
|
||||
\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
|
||||
@@ -2063,6 +2149,9 @@ au BufNewFile,BufRead tags setf tags
|
||||
" TAK
|
||||
au BufNewFile,BufRead *.tak setf tak
|
||||
|
||||
" Unx Tal
|
||||
au BufNewFile,BufRead *.tal setf tal
|
||||
|
||||
" Task
|
||||
au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata
|
||||
au BufRead,BufNewFile *.task setf taskedit
|
||||
@@ -2177,6 +2266,9 @@ au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
|
||||
" Udev symlinks config
|
||||
au BufNewFile,BufRead */etc/udev/cdsymlinks.conf setf sh
|
||||
|
||||
" Ungrammar, AKA Un-grammar
|
||||
au BufNewFile,BufRead *.ungram setf ungrammar
|
||||
|
||||
" UnrealScript
|
||||
au BufNewFile,BufRead *.uc setf uc
|
||||
|
||||
@@ -2258,7 +2350,11 @@ au BufNewFile,BufRead *.vroom setf vroom
|
||||
au BufNewFile,BufRead *.vue setf vue
|
||||
|
||||
" WebAssembly
|
||||
au BufNewFile,BufRead *.wast,*.wat setf wast
|
||||
au BufNewFile,BufRead *.wat setf wat
|
||||
au BufNewFile,BufRead *.wast setf wast
|
||||
|
||||
" WebAssembly Interface Type (WIT)
|
||||
au BufNewFile,BufRead *.wit setf wit
|
||||
|
||||
" Webmacro
|
||||
au BufNewFile,BufRead *.wm setf webmacro
|
||||
@@ -2413,6 +2509,9 @@ au BufNewFile,BufRead */etc/yum.conf setf dosini
|
||||
" YANG
|
||||
au BufRead,BufNewFile *.yang setf yang
|
||||
|
||||
" Yuck
|
||||
au BufNewFile,BufRead *.yuck setf yuck
|
||||
|
||||
" Zimbu
|
||||
au BufNewFile,BufRead *.zu setf zimbu
|
||||
" Zimbu Templates
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
" Maintainer: Debian Vim Maintainers <team+vim@tracker.debian.org>
|
||||
" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
|
||||
" Stefano Zacchiroli <zack@debian.org>
|
||||
" Last Change: 2022 Jul 25
|
||||
" Last Change: 2023 Jan 16
|
||||
" License: Vim License
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/debchangelog.vim
|
||||
|
||||
" Bug completion requires apt-listbugs installed for Debian packages or
|
||||
" python-launchpadlib installed for Ubuntu packages
|
||||
@@ -35,14 +35,14 @@ if exists('g:did_changelog_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Don't load another plugin (this is global)
|
||||
let g:did_changelog_ftplugin = 1
|
||||
|
||||
" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
|
||||
" <CR> would not be recognized. See ":help 'cpoptions'".
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Don't load another plugin (this is global)
|
||||
let g:did_changelog_ftplugin = 1
|
||||
|
||||
" {{{1 GUI menu
|
||||
|
||||
" Helper functions returning various data.
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: Debian control files
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainer: Pierre Habouzit <madcoder@debian.org>
|
||||
" Last Change: 2018-01-28
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/debcontrol.vim
|
||||
|
||||
" Do these settings once per buffer
|
||||
if exists('b:did_ftplugin')
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: MS-DOS .bat files
|
||||
" Maintainer: Mike Williams <mrw@eandem.co.uk>
|
||||
" Last Change: 7th May 2020
|
||||
" Language: MS-DOS/Windows .bat files
|
||||
" Maintainer: Mike Williams <mrmrdubya@gmail.com>
|
||||
" Last Change: 12th February 2023
|
||||
"
|
||||
" Options Flags:
|
||||
" dosbatch_colons_comment - any value to treat :: as comment line
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -15,8 +18,13 @@ let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" BAT comment formatting
|
||||
setlocal comments=b:rem,b:@rem,b:REM,b:@REM,:::
|
||||
setlocal commentstring=::\ %s
|
||||
setlocal comments=b:rem,b:@rem,b:REM,b:@REM
|
||||
if exists("dosbatch_colons_comment")
|
||||
setlocal comments+=:::
|
||||
setlocal commentstring=::\ %s
|
||||
else
|
||||
setlocal commentstring=REM\ %s
|
||||
endif
|
||||
setlocal formatoptions-=t formatoptions+=rol
|
||||
|
||||
" Lookup DOS keywords using Windows command help.
|
||||
|
||||
15
runtime/ftplugin/fish.vim
Normal file
15
runtime/ftplugin/fish.vim
Normal file
@@ -0,0 +1,15 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: fish
|
||||
" Maintainer: Nicholas Boyle (github.com/nickeb96)
|
||||
" Repository: https://github.com/nickeb96/fish.vim
|
||||
" Last Change: February 1, 2023
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal iskeyword=@,48-57,_,192-255,-,.
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#%s
|
||||
setlocal formatoptions+=crjq
|
||||
@@ -1,9 +1,9 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Logcheck
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Last Change: 2018 Dec 27
|
||||
" Last Change: 2023 Jan 16
|
||||
" License: Vim License
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/logcheck.vim
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/logcheck.vim
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
|
||||
1
runtime/ftplugin/quarto.vim
Normal file
1
runtime/ftplugin/quarto.vim
Normal file
@@ -0,0 +1 @@
|
||||
runtime ftplugin/rmd.vim
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Aug 15, 2020 11:37AM
|
||||
" Last Change: Sun Apr 24, 2022 09:14AM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -22,7 +22,7 @@ setlocal comments=:#',:###,:##,:#
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R)\t*.R\n" .
|
||||
\ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R help file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Aug 15, 2020 12:01PM
|
||||
" Last Change: Sun Apr 24, 2022 09:12AM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -18,7 +18,7 @@ set cpo&vim
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R Markdown file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Aug 15, 2020 12:03PM
|
||||
" Last Change: Sun Apr 24, 2022 09:12AM
|
||||
" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
@@ -32,13 +32,24 @@ function! FormatRmd()
|
||||
return 1
|
||||
endfunction
|
||||
|
||||
" If you do not want 'comments' dynamically defined, put in your vimrc:
|
||||
" let g:rmd_dynamic_comments = 0
|
||||
function! SetRmdCommentStr()
|
||||
if (search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")) || ((search('^---$', 'Wn') || search('^\.\.\.$', 'Wn')) && search('^---$', 'bnW'))
|
||||
set commentstring=#\ %s
|
||||
else
|
||||
set commentstring=<!--\ %s\ -->
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" If you do not want both 'comments' and 'commentstring' dynamically defined,
|
||||
" put in your vimrc: let g:rmd_dynamic_comments = 0
|
||||
if !exists("g:rmd_dynamic_comments") || (exists("g:rmd_dynamic_comments") && g:rmd_dynamic_comments == 1)
|
||||
setlocal formatexpr=FormatRmd()
|
||||
augroup RmdCStr
|
||||
autocmd!
|
||||
autocmd CursorMoved <buffer> call SetRmdCommentStr()
|
||||
augroup END
|
||||
endif
|
||||
|
||||
|
||||
" Enables pandoc if it is installed
|
||||
unlet! b:did_ftplugin
|
||||
runtime ftplugin/pandoc.vim
|
||||
@@ -47,7 +58,7 @@ runtime ftplugin/pandoc.vim
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rnoweb
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Aug 15, 2020 12:02PM
|
||||
" Last Change: Sun Apr 24, 2022 09:13AM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -25,10 +25,27 @@ setlocal suffixesadd=.bib,.tex
|
||||
setlocal comments=b:%,b:#,b:##,b:###,b:#'
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
function! SetRnwCommentStr()
|
||||
if (search("^\s*<<.*>>=", "bncW") > search("^@", "bncW"))
|
||||
set commentstring=#\ %s
|
||||
else
|
||||
set commentstring=%\ %s
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" If you do not want both 'comments' and 'commentstring' dynamically defined,
|
||||
" put in your vimrc: let g:rnw_dynamic_comments = 0
|
||||
if !exists("g:rnw_dynamic_comments") || (exists("g:rnw_dynamic_comments") && g:rnw_dynamic_comments == 1)
|
||||
augroup RnwCStr
|
||||
autocmd!
|
||||
autocmd CursorMoved <buffer> call SetRnwCommentStr()
|
||||
augroup END
|
||||
endif
|
||||
|
||||
if exists('b:undo_ftplugin')
|
||||
let b:undo_ftplugin .= " | setl isk< sua< com< | unlet! b:browsefilter"
|
||||
else
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: reStructuredText documentation format with R code
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sat Aug 15, 2020 12:02PM
|
||||
" Last Change: Sun Apr 24, 2022 09:13AM
|
||||
" Original work by Alex Zvoleff
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
@@ -38,7 +38,7 @@ if !exists("g:rrst_dynamic_comments") || (exists("g:rrst_dynamic_comments") && g
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Vim
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2022 Nov 27
|
||||
" Last Change: 2023 Feb 07
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -99,18 +99,23 @@ 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\>,'
|
||||
\ '\<\%(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\>,' ..
|
||||
\ '\<inte\%[rface]\>:\<endinterface\>,' ..
|
||||
\ '\<enu\%[m]\>:\<endenum\>,'
|
||||
|
||||
" Ignore syntax region commands and settings, any 'en*' would clobber
|
||||
" if-endif.
|
||||
" - set spl=de,en
|
||||
" - au! FileType javascript syntax region foldBraces start=/{/ end=/}/ …
|
||||
let b:match_skip = 'synIDattr(synID(line("."),col("."),1),"name")
|
||||
\ =~? "comment\\|string\\|vimLetHereDoc\\|vimSynReg\\|vimSet"'
|
||||
" Also ignore here-doc and dictionary keys (vimVar).
|
||||
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
|
||||
\ =~? "comment\\|string\\|vimSynReg\\|vimSet\\|vimLetHereDoc\\|vimVar"'
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
119
runtime/import/dist/vimhighlight.vim
vendored
Normal file
119
runtime/import/dist/vimhighlight.vim
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
vim9script
|
||||
|
||||
# Maintainer: github user lacygoill
|
||||
# Last Change: 2023 Mar 08
|
||||
|
||||
# Init {{{1
|
||||
|
||||
const LINK: string = '->'
|
||||
|
||||
# Interface {{{1
|
||||
export def HighlightTest() # {{{2
|
||||
# Open a new window if the current one isn't empty
|
||||
if line('$') != 1 || getline(1) != ''
|
||||
new
|
||||
endif
|
||||
|
||||
edit Highlight\ test
|
||||
|
||||
# `:help scratch-buffer`
|
||||
&l:bufhidden = 'hide'
|
||||
&l:buftype = 'nofile'
|
||||
&l:swapfile = false
|
||||
|
||||
var report: list<string> =<< trim END
|
||||
Highlighting groups for various occasions
|
||||
-----------------------------------------
|
||||
END
|
||||
|
||||
var various_groups: list<string> = GetVariousGroups()
|
||||
->filter((_, group: string): bool => group->hlexists() && !group->IsCleared())
|
||||
->sort()
|
||||
->uniq()
|
||||
|
||||
report->extend(various_groups->FollowChains())
|
||||
|
||||
var language_section: list<string> =<< trim END
|
||||
|
||||
Highlighting groups for language syntaxes
|
||||
-----------------------------------------
|
||||
END
|
||||
report->extend(language_section)
|
||||
|
||||
var syntax_groups: list<string> = getcompletion('', 'highlight')
|
||||
->filter((_, group: string): bool =>
|
||||
various_groups->index(group) == -1
|
||||
&& !group->IsCleared()
|
||||
&& group !~ '^HighlightTest')
|
||||
|
||||
# put the report
|
||||
report
|
||||
->extend(syntax_groups->FollowChains())
|
||||
->setline(1)
|
||||
|
||||
# highlight the group names
|
||||
execute $'silent! global /^\w\+\%(\%(\s*{LINK}\s*\)\w\+\)*$/ Highlight({bufnr('%')})'
|
||||
|
||||
cursor(1, 1)
|
||||
enddef
|
||||
# }}}1
|
||||
# Core {{{1
|
||||
def Highlight(buf: number) # {{{2
|
||||
var lnum: number = line('.')
|
||||
for group: string in getline('.')->split($'\s*{LINK}\s*')
|
||||
silent! prop_type_add($'highlight-test-{group}', {
|
||||
bufnr: buf,
|
||||
highlight: group,
|
||||
combine: false,
|
||||
})
|
||||
prop_add(lnum, col('.'), {
|
||||
length: group->strlen(),
|
||||
type: $'highlight-test-{group}'
|
||||
})
|
||||
search('\<\w\+\>', '', lnum)
|
||||
endfor
|
||||
enddef
|
||||
# }}}1
|
||||
# Util {{{1
|
||||
def IsCleared(name: string): bool # {{{2
|
||||
return name
|
||||
->hlget()
|
||||
->get(0, {})
|
||||
->get('cleared')
|
||||
enddef
|
||||
|
||||
def FollowChains(groups: list<string>): list<string> # {{{2
|
||||
# A group might be linked to another, which itself might be linked...
|
||||
# We want the whole chain, for every group.
|
||||
var chains: list<string>
|
||||
for group: string in groups
|
||||
var target: string = group->LinksTo()
|
||||
var chain: string = group
|
||||
while !target->empty()
|
||||
chain ..= $' {LINK} {target}'
|
||||
target = target->LinksTo()
|
||||
endwhile
|
||||
var a_link_is_cleared: bool = chain
|
||||
->split($'\s*{LINK}\s*')
|
||||
->indexof((_, g: string): bool => g->IsCleared()) >= 0
|
||||
if a_link_is_cleared
|
||||
continue
|
||||
endif
|
||||
chains->add(chain)
|
||||
endfor
|
||||
return chains
|
||||
enddef
|
||||
|
||||
def LinksTo(group: string): string # {{{2
|
||||
return group
|
||||
->hlget()
|
||||
->get(0, {})
|
||||
->get('linksto', '')
|
||||
enddef
|
||||
|
||||
def GetVariousGroups(): list<string> # {{{2
|
||||
return getcompletion('hl-', 'help')
|
||||
->filter((_, helptag: string): bool => helptag =~ '^hl-\w\+$')
|
||||
->map((_, helptag: string) => helptag->substitute('^hl-', '', ''))
|
||||
->extend(range(1, 9)->map((_, n: number) => $'User{n}'))
|
||||
enddef
|
||||
82
runtime/indent/fish.vim
Normal file
82
runtime/indent/fish.vim
Normal file
@@ -0,0 +1,82 @@
|
||||
" Vim indent file
|
||||
" Language: fish
|
||||
" Maintainer: Nicholas Boyle (github.com/nickeb96)
|
||||
" Repository: https://github.com/nickeb96/fish.vim
|
||||
" Last Change: February 4, 2023
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetFishIndent(v:lnum)
|
||||
setlocal indentkeys+==end,=else,=case
|
||||
|
||||
function s:PrevCmdStart(linenum)
|
||||
let l:linenum = a:linenum
|
||||
" look for the first line that isn't a line continuation
|
||||
while l:linenum > 1 && getline(l:linenum - 1) =~# '\\$'
|
||||
let l:linenum = l:linenum - 1
|
||||
endwhile
|
||||
return l:linenum
|
||||
endfunction
|
||||
|
||||
function GetFishIndent(lnum)
|
||||
let l:shiftwidth = shiftwidth()
|
||||
|
||||
let l:prevlnum = prevnonblank(a:lnum - 1)
|
||||
if l:prevlnum ==# 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
" if the previous line ended with a line continuation
|
||||
if getline(a:lnum - 1) =~# '\\$'
|
||||
if a:lnum ==# 0 || getline(a:lnum - 2) !~# '\\$'
|
||||
" this is the first line continuation in a chain, so indent it
|
||||
return indent(a:lnum - 1) + l:shiftwidth
|
||||
else
|
||||
" use the same indentation as the previous continued line
|
||||
return indent(a:lnum - 1)
|
||||
endif
|
||||
endif
|
||||
|
||||
let l:prevlnum = s:PrevCmdStart(l:prevlnum)
|
||||
|
||||
let l:prevline = getline(l:prevlnum)
|
||||
if l:prevline =~# '^\s*\(begin\|if\|else\|while\|for\|function\|case\|switch\)\>'
|
||||
let l:indent = l:shiftwidth
|
||||
else
|
||||
let l:indent = 0
|
||||
endif
|
||||
|
||||
let l:line = getline(a:lnum)
|
||||
if l:line =~# '^\s*end\>'
|
||||
" find end's matching start
|
||||
let l:depth = 1
|
||||
let l:currentlnum = a:lnum
|
||||
while l:depth > 0 && l:currentlnum > 0
|
||||
let l:currentlnum = s:PrevCmdStart(prevnonblank(l:currentlnum - 1))
|
||||
let l:currentline = getline(l:currentlnum)
|
||||
if l:currentline =~# '^\s*end\>'
|
||||
let l:depth = l:depth + 1
|
||||
elseif l:currentline =~# '^\s*\(begin\|if\|while\|for\|function\|switch\)\>'
|
||||
let l:depth = l:depth - 1
|
||||
endif
|
||||
endwhile
|
||||
if l:currentline =~# '^\s*switch\>'
|
||||
return indent(l:currentlnum)
|
||||
else
|
||||
return indent(l:prevlnum) + l:indent - l:shiftwidth
|
||||
endif
|
||||
elseif l:line =~# '^\s*else\>'
|
||||
return indent(l:prevlnum) + l:indent - l:shiftwidth
|
||||
elseif l:line =~# '^\s*case\>'
|
||||
if getline(l:prevlnum) =~# '^\s*switch\>'
|
||||
return indent(l:prevlnum) + l:indent
|
||||
else
|
||||
return indent(l:prevlnum) + l:indent - l:shiftwidth
|
||||
endif
|
||||
else
|
||||
return indent(l:prevlnum) + l:indent
|
||||
endif
|
||||
endfunction
|
||||
1
runtime/indent/quarto.vim
Normal file
1
runtime/indent/quarto.vim
Normal file
@@ -0,0 +1 @@
|
||||
runtime indent/rmd.vim
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sun Aug 19, 2018 09:13PM
|
||||
" Last Change: Wed Oct 26, 2022 12:04PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -14,6 +14,8 @@ let b:did_indent = 1
|
||||
setlocal indentkeys=0{,0},:,!^F,o,O,e
|
||||
setlocal indentexpr=GetRIndent()
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
" Only define the function once.
|
||||
if exists("*GetRIndent")
|
||||
finish
|
||||
@@ -28,7 +30,7 @@ let g:r_indent_ess_comments = get(g:, 'r_indent_ess_comments', 0)
|
||||
let g:r_indent_comment_column = get(g:, 'r_indent_comment_column', 40)
|
||||
let g:r_indent_ess_compatible = get(g:, 'r_indent_ess_compatible', 0)
|
||||
let g:r_indent_op_pattern = get(g:, 'r_indent_op_pattern',
|
||||
\ '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$')
|
||||
\ '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\||>\)\s*$')
|
||||
|
||||
function s:RDelete_quotes(line)
|
||||
let i = 0
|
||||
@@ -359,17 +361,19 @@ function GetRIndent()
|
||||
let olnum = s:Get_prev_line(lnum)
|
||||
let oline = getline(olnum)
|
||||
if olnum > 0
|
||||
if line =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
if substitute(line, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
if substitute(oline, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum)
|
||||
else
|
||||
return indent(lnum) + shiftwidth()
|
||||
endif
|
||||
else
|
||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
if substitute(oline, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum) - shiftwidth()
|
||||
endif
|
||||
endif
|
||||
elseif substitute(line, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum) + shiftwidth()
|
||||
endif
|
||||
|
||||
let post_fun = 0
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R Documentation (Help), *.Rd
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
" Last Change: Feb 25, 2023
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -20,6 +20,8 @@ setlocal nolisp
|
||||
setlocal indentkeys=0{,0},:,!^F,o,O,e
|
||||
setlocal indentexpr=GetCorrectRHelpIndent()
|
||||
|
||||
let b:undo_indent = "setl ai< cin< inde< indk< <lisp <si"
|
||||
|
||||
" Only define the functions once.
|
||||
if exists("*GetRHelpIndent")
|
||||
finish
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rmd
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sun Mar 28, 2021 08:05PM
|
||||
" Last Change: Wed Nov 09, 2022 09:44PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -16,6 +16,8 @@ let b:did_indent = 1
|
||||
setlocal indentkeys=0{,0},<:>,!^F,o,O,e
|
||||
setlocal indentexpr=GetRmdIndent()
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
if exists("*GetRmdIndent")
|
||||
finish
|
||||
endif
|
||||
@@ -47,6 +49,8 @@ function s:GetMdIndent()
|
||||
return indent(v:lnum - 1) + 2
|
||||
elseif pline =~ '^\s*\d\+\.\s\+'
|
||||
return indent(v:lnum - 1) + 3
|
||||
elseif pline =~ '^\[\^\S\+\]: '
|
||||
return indent(v:lnum - 1) + shiftwidth()
|
||||
endif
|
||||
return indent(prevnonblank(v:lnum - 1))
|
||||
endfunction
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rnoweb
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Fri Apr 15, 2016 10:58PM
|
||||
" Last Change: Feb 25, 2023
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -29,6 +29,8 @@ let b:did_indent = 1
|
||||
setlocal indentkeys=0{,0},!^F,o,O,e,},=\bibitem,=\item
|
||||
setlocal indentexpr=GetRnowebIndent()
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
if exists("*GetRnowebIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rrst
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
" Last Change: Feb 25, 2023
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -16,6 +16,8 @@ let b:did_indent = 1
|
||||
setlocal indentkeys=0{,0},:,!^F,o,O,e
|
||||
setlocal indentexpr=GetRrstIndent()
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
if exists("*GetRrstIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
@@ -887,3 +887,55 @@ if true
|
||||
elseif
|
||||
endif
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
if (
|
||||
true)
|
||||
&& true
|
||||
echo
|
||||
endif
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
abstract class Shape
|
||||
this.color = Color.Black
|
||||
this.thickness = 10
|
||||
endclass
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
static def ClearTotalSize(): number
|
||||
var prev = totalSize
|
||||
totalSize = 0
|
||||
return prev
|
||||
enddef
|
||||
endclass
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
interface HasSurface
|
||||
this.size: number
|
||||
def Surface(): number
|
||||
endinterface
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
interface EnterExit
|
||||
def Enter(): void
|
||||
def Exit(): void
|
||||
endinterface
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
enum Color
|
||||
White
|
||||
Red
|
||||
Green
|
||||
Blue
|
||||
Black
|
||||
endenum
|
||||
" END_INDENT
|
||||
|
||||
@@ -887,3 +887,55 @@ if true
|
||||
elseif
|
||||
endif
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
if (
|
||||
true)
|
||||
&& true
|
||||
echo
|
||||
endif
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
abstract class Shape
|
||||
this.color = Color.Black
|
||||
this.thickness = 10
|
||||
endclass
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
class OtherThing
|
||||
this.size: number
|
||||
static totalSize: number
|
||||
|
||||
static def ClearTotalSize(): number
|
||||
var prev = totalSize
|
||||
totalSize = 0
|
||||
return prev
|
||||
enddef
|
||||
endclass
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
interface HasSurface
|
||||
this.size: number
|
||||
def Surface(): number
|
||||
endinterface
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
interface EnterExit
|
||||
def Enter(): void
|
||||
def Exit(): void
|
||||
endinterface
|
||||
" END_INDENT
|
||||
|
||||
" START_INDENT
|
||||
enum Color
|
||||
White
|
||||
Red
|
||||
Green
|
||||
Blue
|
||||
Black
|
||||
endenum
|
||||
" END_INDENT
|
||||
|
||||
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim indent file
|
||||
# Language: Vim script
|
||||
# Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
# Last Change: 2022 Oct 5
|
||||
# Last Change: 2023 Feb 02
|
||||
|
||||
# Only load this indent file when no other was loaded.
|
||||
if exists('b:did_indent')
|
||||
@@ -16,7 +16,7 @@ b:undo_indent = 'setlocal indentkeys< indentexpr<'
|
||||
import autoload '../autoload/dist/vimindent.vim'
|
||||
|
||||
setlocal indentexpr=vimindent.Expr()
|
||||
setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=},=else,=cat,=finall,=END,0\\
|
||||
setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=endclass,=endinterface,=endenum,=},=else,=cat,=finall,=END,0\\
|
||||
execute('setlocal indentkeys+=0=\"\\\ ,0=#\\\ ')
|
||||
setlocal indentkeys-=0#
|
||||
setlocal indentkeys-=:
|
||||
|
||||
@@ -25,24 +25,25 @@ all: \
|
||||
menu_hu_hu.iso_8859-2.vim \
|
||||
menu_sk_sk.iso_8859-2.vim \
|
||||
|
||||
SED = LANG=C sed
|
||||
|
||||
# Convert menu_zh_cn.utf-8.vim to create menu_chinese_gb.936.vim.
|
||||
menu_chinese_gb.936.vim: menu_zh_cn.utf-8.vim
|
||||
rm -f menu_chinese_gb.936.vim
|
||||
iconv -f utf-8 -t cp936 menu_zh_cn.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp936/' -e 's/" Original translations/" Generated from menu_zh_cn.utf-8.vim, DO NOT EDIT/' > menu_chinese_gb.936.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp936/' -e 's/" Original translations/" Generated from menu_zh_cn.utf-8.vim, DO NOT EDIT/' > menu_chinese_gb.936.vim
|
||||
|
||||
# Convert menu_zh_tw.utf-8.vim to create menu_chinese_taiwan.950.vim.
|
||||
menu_chinese_taiwan.950.vim: menu_zh_tw.utf-8.vim
|
||||
rm -f menu_chinese_taiwan.950.vim
|
||||
iconv -f utf-8 -t cp950 menu_zh_tw.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp950/' -e 's/" Original translations/" Generated from menu_zh_tw.utf-8.vim, DO NOT EDIT/' > menu_chinese_taiwan.950.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp950/' -e 's/" Original translations/" Generated from menu_zh_tw.utf-8.vim, DO NOT EDIT/' > menu_chinese_taiwan.950.vim
|
||||
|
||||
# Convert menu_cs_cz.utf-8.vim to create menu_cs_cz.iso_8859-2.vim.
|
||||
menu_cs_cz.iso_8859-2.vim: menu_cs_cz.utf-8.vim
|
||||
rm -f menu_cs_cz.iso_8859-2.vim
|
||||
iconv -f utf-8 -t iso8859-2 menu_cs_cz.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
|
||||
-e 's/" Original translations/" Generated from menu_cs_cz.utf-8.vim, DO NOT EDIT/' \
|
||||
-e 's/\(" Menu Translations:.*\)(.*)/\1(ISO8859-2)/' \
|
||||
> menu_cs_cz.iso_8859-2.vim
|
||||
@@ -51,7 +52,7 @@ menu_cs_cz.iso_8859-2.vim: menu_cs_cz.utf-8.vim
|
||||
menu_czech_czech_republic.1250.vim: menu_cs_cz.utf-8.vim
|
||||
rm -f menu_czech_czech_republic.1250.vim
|
||||
iconv -f utf-8 -t cp1250 menu_cs_cz.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
|
||||
-e 's/" Original translations/" Generated from menu_cs_cz.utf-8.vim, DO NOT EDIT/' \
|
||||
-e 's/\(" Menu Translations:.*\)(.*)/\1(CP1250)/' \
|
||||
> menu_czech_czech_republic.1250.vim
|
||||
@@ -59,7 +60,7 @@ menu_czech_czech_republic.1250.vim: menu_cs_cz.utf-8.vim
|
||||
# Convert menu_cs_cz.utf-8.vim to create menu_czech_czech_republic.ascii.vim.
|
||||
menu_czech_czech_republic.ascii.vim: menu_cs_cz.utf-8.vim
|
||||
rm -f menu_czech_czech_republic.ascii.vim
|
||||
sed -e 's/Á/A/g' -e 's/á/a/g' -e 's/Č/C/g' -e 's/č/c/g' -e 's/Ď/D/g' \
|
||||
$(SED) -e 's/Á/A/g' -e 's/á/a/g' -e 's/Č/C/g' -e 's/č/c/g' -e 's/Ď/D/g' \
|
||||
-e 's/ď/d/g' -e 's/É/E/g' -e 's/é/e/g' -e 's/Ě/E/g' -e 's/ě/e/g' \
|
||||
-e 's/Í/I/g' -e 's/í/i/g' -e 's/Ň/N/g' -e 's/ň/n/g' -e 's/Ó/O/g' \
|
||||
-e 's/ó/o/g' -e 's/Ř/R/g' -e 's/ř/r/g' -e 's/Š/S/g' -e 's/š/s/g' \
|
||||
@@ -74,7 +75,7 @@ menu_czech_czech_republic.ascii.vim: menu_cs_cz.utf-8.vim
|
||||
menu_ja_jp.euc-jp.vim: menu_ja_jp.utf-8.vim
|
||||
rm -f menu_ja_jp.euc-jp.vim
|
||||
iconv -f utf-8 -t euc-jp menu_ja_jp.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding euc-jp/' \
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding euc-jp/' \
|
||||
-e 's/" Original translations/" Generated from menu_ja_jp.utf-8.vim, DO NOT EDIT/' \
|
||||
-e 's/\(" Menu Translations:.*\)(.*)/\1(EUC-JP)/' \
|
||||
> menu_ja_jp.euc-jp.vim
|
||||
@@ -83,7 +84,7 @@ menu_ja_jp.euc-jp.vim: menu_ja_jp.utf-8.vim
|
||||
menu_japanese_japan.932.vim: menu_ja_jp.utf-8.vim
|
||||
rm -f menu_japanese_japan.932.vim
|
||||
iconv -f utf-8 -t cp932 menu_ja_jp.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp932/' \
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp932/' \
|
||||
-e 's/" Original translations/" Generated from menu_ja_jp.utf-8.vim, DO NOT EDIT/' \
|
||||
-e 's/\(" Menu Translations:.*\)(.*)/\1(CP932)/' \
|
||||
> menu_japanese_japan.932.vim
|
||||
@@ -92,67 +93,67 @@ menu_japanese_japan.932.vim: menu_ja_jp.utf-8.vim
|
||||
menu_ko_kr.euckr.vim: menu_ko_kr.utf-8.vim
|
||||
rm -f menu_ko_kr.euckr.vim
|
||||
iconv -f utf-8 -t euc-kr menu_ko_kr.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding euc-kr/' -e 's/" Original translations/" Generated from menu_ko_kr.utf-8.vim, DO NOT EDIT/' > menu_ko_kr.euckr.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding euc-kr/' -e 's/" Original translations/" Generated from menu_ko_kr.utf-8.vim, DO NOT EDIT/' > menu_ko_kr.euckr.vim
|
||||
|
||||
# Convert menu_pl_pl.utf-8.vim to create menu_pl_pl.iso_8859-2.vim.
|
||||
menu_pl_pl.iso_8859-2.vim: menu_pl_pl.utf-8.vim
|
||||
rm -f menu_pl_pl.iso_8859-2.vim
|
||||
iconv -f utf-8 -t iso8859-2 menu_pl_pl.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_pl_pl.iso_8859-2.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_pl_pl.iso_8859-2.vim
|
||||
|
||||
# Convert menu_pl_pl.utf-8.vim to create menu_polish_poland.1250.vim.
|
||||
menu_polish_poland.1250.vim: menu_pl_pl.utf-8.vim
|
||||
rm -f menu_polish_poland.1250.vim
|
||||
iconv -f utf-8 -t cp1250 menu_pl_pl.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1250/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_polish_poland.1250.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_polish_poland.1250.vim
|
||||
|
||||
# Convert menu_ru_ru.utf-8.vim to create menu_ru_ru.koi8-r.vim.
|
||||
menu_ru_ru.koi8-r.vim: menu_ru_ru.utf-8.vim
|
||||
rm -f menu_ru_ru.koi8-r.vim
|
||||
iconv -f utf-8 -t koi8-r menu_ru_ru.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding koi8-r/' -e 's/" Original translations/" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT/' > menu_ru_ru.koi8-r.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding koi8-r/' -e 's/" Original translations/" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT/' > menu_ru_ru.koi8-r.vim
|
||||
|
||||
# Convert menu_sl_si.utf-8.vim to create menu_sl_si.cp1250.vim.
|
||||
menu_sl_si.cp1250.vim: menu_sl_si.utf-8.vim
|
||||
rm -f menu_sl_si.cp1250.vim
|
||||
iconv -f utf-8 -t cp1250 menu_sl_si.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' \
|
||||
-e 's/" Original translations/" Generated from menu_sl_si.utf-8.vim, DO NOT EDIT/' > menu_sl_si.cp1250.vim
|
||||
|
||||
# Convert menu_uk_ua.utf-8.vim to create menu_sl_si.latin2.vim.
|
||||
menu_sl_si.latin2.vim: menu_sl_si.utf-8.vim
|
||||
rm -f menu_sl_si.latin2.vim
|
||||
iconv -f utf-8 -t latin2 menu_sl_si.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding latin2/' -e 's/" Original translations/" Generated from menu_sl_si.utf-8.vim, DO NOT EDIT/' > menu_sl_si.latin2.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding latin2/' -e 's/" Original translations/" Generated from menu_sl_si.utf-8.vim, DO NOT EDIT/' > menu_sl_si.latin2.vim
|
||||
|
||||
# Convert menu_uk_ua.utf-8.vim to create menu_slovak_slovak_republic.1250.vim.
|
||||
menu_slovak_slovak_republic.1250.vim: menu_sl_si.utf-8.vim
|
||||
rm -f menu_slovak_slovak_republic.1250.vim
|
||||
iconv -f utf-8 -t cp1250 menu_sl_si.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1250/' -e 's/" Original translations/" Generated from menu_sl_si.utf-8.vim, DO NOT EDIT/' > menu_slovak_slovak_republic.1250.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1250/' -e 's/" Original translations/" Generated from menu_sl_si.utf-8.vim, DO NOT EDIT/' > menu_slovak_slovak_republic.1250.vim
|
||||
|
||||
# Convert menu_tr_tr.utf-8.vim to create menu_tr_tr.cp1254.vim.
|
||||
menu_tr_tr.cp1254.vim: menu_tr_tr.utf-8.vim
|
||||
rm -f menu_tr_tr.cp1254.vim
|
||||
iconv -f utf-8 -t cp1254 menu_tr_tr.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1254/' -e 's/" Original translations/" Generated from menu_tr_tr.utf-8.vim, DO NOT EDIT/' > menu_tr_tr.cp1254.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1254/' -e 's/" Original translations/" Generated from menu_tr_tr.utf-8.vim, DO NOT EDIT/' > menu_tr_tr.cp1254.vim
|
||||
|
||||
# Convert menu_tr_tr.utf-8.vim to create menu_tr_tr.iso_8859-9.vim.
|
||||
menu_tr_tr.iso_8859-9.vim: menu_tr_tr.utf-8.vim
|
||||
rm -f menu_tr_tr.iso_8859-9.vim
|
||||
iconv -f utf-8 -t iso8859-9 menu_tr_tr.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding iso8859-9/' -e 's/" Original translations/" Generated from menu_tr_tr.utf-8.vim, DO NOT EDIT/' > menu_tr_tr.iso_8859-9.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso8859-9/' -e 's/" Original translations/" Generated from menu_tr_tr.utf-8.vim, DO NOT EDIT/' > menu_tr_tr.iso_8859-9.vim
|
||||
|
||||
# Convert menu_sr_rs.utf-8.vim to create menu_sr_rs.iso_8859-5.vim.
|
||||
menu_sr_rs.iso_8859-5.vim: menu_sr_rs.utf-8.vim
|
||||
rm -f menu_sr_rs.iso_8859-5.vim
|
||||
iconv -f utf-8 -t iso8859-5 menu_sr_rs.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding iso8859-5/' -e 's/" Original translations/" Generated from menu_sr_rs.utf-8.vim, DO NOT EDIT/' > menu_sr_rs.iso_8859-5.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso8859-5/' -e 's/" Original translations/" Generated from menu_sr_rs.utf-8.vim, DO NOT EDIT/' > menu_sr_rs.iso_8859-5.vim
|
||||
|
||||
# Convert menu_sr_rs.utf-8.vim to create menu_sr_rs.iso_8859-2.vim.
|
||||
menu_sr_rs.iso_8859-2.vim: menu_sr_rs.utf-8.vim
|
||||
rm -f menu_sr_rs.iso_8859-2.vim
|
||||
sed -e 's/а/a/g' -e 's/б/b/g' -e 's/в/v/g' -e 's/г/g/g' -e 's/д/d/g' \
|
||||
$(SED) -e 's/а/a/g' -e 's/б/b/g' -e 's/в/v/g' -e 's/г/g/g' -e 's/д/d/g' \
|
||||
-e 's/ђ/đ/g' -e 's/е/e/g' -e 's/ж/ž/g' -e 's/з/z/g' -e 's/и/i/g' \
|
||||
-e 's/ј/j/g' -e 's/к/k/g' -e 's/л/l/g' -e 's/љ/lj/g' -e 's/м/m/g' \
|
||||
-e 's/н/n/g' -e 's/њ/nj/g' -e 's/о/o/g' -e 's/п/p/g' -e 's/р/r/g' \
|
||||
@@ -171,7 +172,7 @@ menu_sr_rs.iso_8859-2.vim: menu_sr_rs.utf-8.vim
|
||||
# Convert menu_sr_rs.utf-8.vim to create menu_sr_rs.ascii.vim.
|
||||
menu_sr_rs.ascii.vim: menu_sr_rs.utf-8.vim
|
||||
rm -f menu_sr_rs.ascii.vim
|
||||
sed -e 's/а/a/g' -e 's/б/b/g' -e 's/в/v/g' -e 's/г/g/g' -e 's/д/d/g' \
|
||||
$(SED) -e 's/а/a/g' -e 's/б/b/g' -e 's/в/v/g' -e 's/г/g/g' -e 's/д/d/g' \
|
||||
-e 's/ђ/dj/g' -e 's/е/e/g' -e 's/ж/z/g' -e 's/з/z/g' -e 's/и/i/g' \
|
||||
-e 's/ј/j/g' -e 's/к/k/g' -e 's/л/l/g' -e 's/љ/lj/g' -e 's/м/m/g' \
|
||||
-e 's/н/n/g' -e 's/њ/nj/g' -e 's/о/o/g' -e 's/п/p/g' -e 's/р/r/g' \
|
||||
@@ -190,22 +191,22 @@ menu_sr_rs.ascii.vim: menu_sr_rs.utf-8.vim
|
||||
menu_uk_ua.cp1251.vim: menu_uk_ua.utf-8.vim
|
||||
rm -f menu_uk_ua.cp1251.vim
|
||||
iconv -f utf-8 -t cp1251 menu_uk_ua.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding cp1251/' -e 's/" Original translations/" Generated from menu_uk_ua.utf-8.vim, DO NOT EDIT/' > menu_uk_ua.cp1251.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1251/' -e 's/" Original translations/" Generated from menu_uk_ua.utf-8.vim, DO NOT EDIT/' > menu_uk_ua.cp1251.vim
|
||||
|
||||
# Convert menu_uk_ua.utf-8.vim to create menu_uk_ua.koi8-u.vim.
|
||||
menu_uk_ua.koi8-u.vim: menu_uk_ua.utf-8.vim
|
||||
rm -f menu_uk_ua.koi8-u.vim
|
||||
iconv -f utf-8 -t koi8-u menu_uk_ua.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding koi8-u/' -e 's/" Original translations/" Generated from menu_uk_ua.utf-8.vim, DO NOT EDIT/' > menu_uk_ua.koi8-u.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding koi8-u/' -e 's/" Original translations/" Generated from menu_uk_ua.utf-8.vim, DO NOT EDIT/' > menu_uk_ua.koi8-u.vim
|
||||
|
||||
# Convert menu_hu_hu.utf-8.vim to create menu_hu_hu.iso_8859-2.vim.
|
||||
menu_hu_hu.iso_8859-2.vim: menu_hu_hu.utf-8.vim
|
||||
rm -f menu_hu_hu.iso_8859-2.vim
|
||||
iconv -f utf-8 -t iso8859-2 menu_hu_hu.utf-8.vim | \
|
||||
sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_hu_hu.utf-8.vim, DO NOT EDIT/' > menu_hu_hu.iso_8859-2.vim
|
||||
$(SED) -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_hu_hu.utf-8.vim, DO NOT EDIT/' > menu_hu_hu.iso_8859-2.vim
|
||||
|
||||
# Convert menu_slovak_slovak_republic.1250.vim to create menu_sk_sk.iso_8859-2.vim.
|
||||
menu_sk_sk.iso_8859-2.vim: menu_slovak_slovak_republic.1250.vim
|
||||
rm -f menu_sk_sk.iso_8859-2.vim
|
||||
iconv -f cp1250 -t iso8859-2 menu_slovak_slovak_republic.1250.vim | \
|
||||
sed -e 's/scriptencoding cp1250/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_slovak_slovak_republic.1250.vim, DO NOT EDIT/' > menu_sk_sk.iso_8859-2.vim
|
||||
$(SED) -e 's/scriptencoding cp1250/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_slovak_slovak_republic.1250.vim, DO NOT EDIT/' > menu_sk_sk.iso_8859-2.vim
|
||||
|
||||
@@ -108,8 +108,9 @@ func s:Highlight_Matching_Pair()
|
||||
" searchpairpos()'s skip argument.
|
||||
" We match "escape" for special items, such as lispEscapeSpecial, and
|
||||
" match "symbol" for lispBarSymbol.
|
||||
let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' .
|
||||
\ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|symbol\\|comment"''))'
|
||||
let s_skip = 'synstack(".", col("."))'
|
||||
\ . '->indexof({_, id -> synIDattr(id, "name") =~? '
|
||||
\ . '"string\\|character\\|singlequote\\|escape\\|symbol\\|comment"}) >= 0'
|
||||
" If executing the expression determines that the cursor is currently in
|
||||
" one of the syntax types, then we want searchpairpos() to find the pair
|
||||
" within those syntax types (i.e., not skip). Otherwise, the cursor is
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim plugin for converting a syntax highlighted file to HTML.
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2019 Nov 13
|
||||
" Last Change: 2023 Jan 01
|
||||
"
|
||||
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
|
||||
" $VIMRUNTIME/syntax/2html.vim
|
||||
@@ -8,11 +8,23 @@
|
||||
if exists('g:loaded_2html_plugin')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_2html_plugin = 'vim8.1_v2'
|
||||
let g:loaded_2html_plugin = 'vim9.0_v1'
|
||||
|
||||
"
|
||||
" Changelog: {{{
|
||||
" 8.1_v2 (this version): - Fix Bitbucket issue #19: fix calculation of tab
|
||||
" 9.0_v1 (this version): - Implement g:html_no_doc and g:html_no_modeline
|
||||
" for diff mode. Add tests.
|
||||
" (Vim 9.0.1122): NOTE: no version string update for this version!
|
||||
" - Bugfix for variable name in g:html_no_doc
|
||||
" (Vim 9.0.0819): NOTE: no version string update for this version!
|
||||
" - Add options g:html_no_doc, g:html_no_lines,
|
||||
" and g:html_no_modeline (partially included in Vim
|
||||
" runtime prior to version string update).
|
||||
" - Updates for new Vim9 string append style (i.e. use
|
||||
" ".." instead of ".")
|
||||
"
|
||||
" 8.1 updates: {{{
|
||||
" 8.1_v2 (Vim 8.1.2312): - Fix SourceForge issue #19: fix calculation of tab
|
||||
" stop position to use in expanding a tab, when that
|
||||
" tab occurs after a syntax match which in turn
|
||||
" comes after previously expanded tabs.
|
||||
@@ -20,17 +32,17 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
|
||||
" destination file to ignore FileType events;
|
||||
" speeds up processing when the destination file
|
||||
" already exists and HTML highlight takes too long.
|
||||
" - Fix Bitbucket issue #20: progress bar could not be
|
||||
" - Fix SourceForge issue #20: progress bar could not be
|
||||
" seen when DiffDelete background color matched
|
||||
" StatusLine background color. Added TOhtmlProgress
|
||||
" highlight group for manual user override, but
|
||||
" calculate it to be visible compared to StatusLine
|
||||
" by default.
|
||||
" - Fix Bitbucket issue #1: Remove workaround for old
|
||||
" - Fix SourceForge issue #1: Remove workaround for old
|
||||
" browsers which don't support 'ch' CSS unit, since
|
||||
" all modern browsers, including IE>=9, support it.
|
||||
" - Fix Bitbucket issue #10: support termguicolors
|
||||
" - Fix Bitbucket issue #21: default to using
|
||||
" - Fix SourceForge issue #10: support termguicolors
|
||||
" - Fix SourceForge issue #21: default to using
|
||||
" generated content instead of <input> tags for
|
||||
" uncopyable text, so that text is correctly
|
||||
" prevented from being copied in chrome. Use
|
||||
@@ -41,13 +53,14 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
|
||||
" - Fix fallback sizing of <input> tags for browsers
|
||||
" without "ch" support.
|
||||
" - Fix cursor on unselectable diff filler text.
|
||||
" 8.1_v1 (Vim 8.1.0528): - Fix Bitbucket issue #6: Don't generate empty
|
||||
" 8.1_v1 (Vim 8.1.0528): - Fix SourceForge issue #6: Don't generate empty
|
||||
" script tag.
|
||||
" - Fix Bitbucket issue #5: javascript should
|
||||
" - Fix SourceForge issue #5: javascript should
|
||||
" declare variables with "var".
|
||||
" - Fix Bitbucket issue #13: errors thrown sourcing
|
||||
" - Fix SourceForge issue #13: errors thrown sourcing
|
||||
" 2html.vim directly when plugins not loaded.
|
||||
" - Fix Bitbucket issue #16: support 'vartabstop'.
|
||||
" - Fix SourceForge issue #16: support 'vartabstop'.
|
||||
"}}}
|
||||
"
|
||||
" 7.4 updates: {{{
|
||||
" 7.4_v2 (Vim 7.4.0899): Fix error raised when converting a diff containing
|
||||
@@ -152,7 +165,7 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
|
||||
|
||||
" TODO: {{{
|
||||
" * Check the issue tracker:
|
||||
" https://bitbucket.org/fritzophrenic/vim-tohtml/issues?status=new&status=open
|
||||
" https://sourceforge.net/p/vim-tohtml/issues/search/?q=%21status%3Aclosed
|
||||
" * Options for generating the CSS in external style sheets. New :TOcss
|
||||
" command to convert the current color scheme into a (mostly) generic CSS
|
||||
" stylesheet which can be re-used. Alternate stylesheet support? Good start
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim syntax support file
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2022 Dec 26
|
||||
" Last Change: 2023 Jan 01
|
||||
"
|
||||
" Additional contributors:
|
||||
"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: automake Makefile.am
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainer: John Williams <jrw@pobox.com>
|
||||
" Last Change: 2018 Dec 27
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/automake.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/automake.vim
|
||||
"
|
||||
" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
|
||||
" it only because patches have been submitted for it by Debian users and the
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2022 Oct 29
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debchangelog.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if exists('b:current_syntax')
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2022 May 11
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcontrol.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if exists('b:current_syntax')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Debian copyright file
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Last Change: 2019 Sep 07
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcopyright.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcopyright.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if exists('b:current_syntax')
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: Debian sources.list
|
||||
" Maintainer: Debian Vim Maintainers
|
||||
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
|
||||
" Last Change: 2022 Oct 29
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
|
||||
" Last Change: 2023 Feb 06
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debsources.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if exists('b:current_syntax')
|
||||
@@ -14,7 +14,9 @@ endif
|
||||
syn case match
|
||||
|
||||
" A bunch of useful keywords
|
||||
syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/
|
||||
syn match debsourcesType /\(deb-src\|deb\)/
|
||||
syn match debsourcesFreeComponent /\(main\|universe\)/
|
||||
syn match debsourcesNonFreeComponent /\(contrib\|non-free-firmware\|non-free\|restricted\|multiverse\)/
|
||||
|
||||
" Match comments
|
||||
syn match debsourcesComment /#.*/ contains=@Spell
|
||||
@@ -48,7 +50,9 @@ exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\<\('. join
|
||||
|
||||
" Associate our matches and regions with pretty colours
|
||||
hi def link debsourcesLine Error
|
||||
hi def link debsourcesKeyword Statement
|
||||
hi def link debsourcesType Statement
|
||||
hi def link debsourcesFreeComponent Statement
|
||||
hi def link debsourcesNonFreeComponent Statement
|
||||
hi def link debsourcesDistrKeyword Type
|
||||
hi def link debsourcesUnsupportedDistrKeyword WarningMsg
|
||||
hi def link debsourcesComment Comment
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Debian DEP3 Patch headers
|
||||
" Maintainer: Gabriel Filion <gabster@lelutin.ca>
|
||||
" Last Change: 2022 Apr 06
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/dep3patch.vim
|
||||
" Last Change: 2023 Jan 16
|
||||
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/dep3patch.vim
|
||||
"
|
||||
" Specification of the DEP3 patch header format is available at:
|
||||
" https://dep-team.pages.debian.net/deps/dep3/
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
" Vim syntax file
|
||||
" Language: MS-DOS batch file (with NT command extensions)
|
||||
" Maintainer: Mike Williams <mrw@eandem.co.uk>
|
||||
" Language: MS-DOS/Windows batch file (with NT command extensions)
|
||||
" Maintainer: Mike Williams <mrmrdubya@gmail.com>
|
||||
" Filenames: *.bat
|
||||
" Last Change: 6th September 2009
|
||||
" Web Page: http://www.eandem.co.uk/mrw/vim
|
||||
" Last Change: 12th February 2023
|
||||
"
|
||||
" Options Flags:
|
||||
" dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default]
|
||||
" dosbatch_colons_comment - any value to treat :: as comment line
|
||||
"
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
@@ -92,7 +92,11 @@ syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchS
|
||||
syn match dosbatchComment "^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
syn match dosbatchComment "\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
if exists("dosbatch_colons_comment")
|
||||
syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
else
|
||||
syn match dosbatchError "\s*:\s*:.*$"
|
||||
endif
|
||||
|
||||
" Comments in ()'s - still to handle spaces before rem
|
||||
syn match dosbatchComment "(rem\([^)]\|\^\@<=)\)*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
|
||||
@@ -110,34 +114,35 @@ syn keyword dosbatchImplicit vol xcopy
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
hi def link dosbatchTodo Todo
|
||||
hi def link dosbatchTodo Todo
|
||||
hi def link dosbatchError Error
|
||||
|
||||
hi def link dosbatchStatement Statement
|
||||
hi def link dosbatchCommands dosbatchStatement
|
||||
hi def link dosbatchLabel Label
|
||||
hi def link dosbatchLabel Label
|
||||
hi def link dosbatchConditional Conditional
|
||||
hi def link dosbatchRepeat Repeat
|
||||
hi def link dosbatchRepeat Repeat
|
||||
|
||||
hi def link dosbatchOperator Operator
|
||||
hi def link dosbatchEchoOperator dosbatchOperator
|
||||
hi def link dosbatchIfOperator dosbatchOperator
|
||||
hi def link dosbatchOperator Operator
|
||||
hi def link dosbatchEchoOperator dosbatchOperator
|
||||
hi def link dosbatchIfOperator dosbatchOperator
|
||||
|
||||
hi def link dosbatchArgument Identifier
|
||||
hi def link dosbatchIdentifier Identifier
|
||||
hi def link dosbatchIdentifier Identifier
|
||||
hi def link dosbatchVariable dosbatchIdentifier
|
||||
|
||||
hi def link dosbatchSpecialChar SpecialChar
|
||||
hi def link dosbatchString String
|
||||
hi def link dosbatchNumber Number
|
||||
hi def link dosbatchString String
|
||||
hi def link dosbatchNumber Number
|
||||
hi def link dosbatchInteger dosbatchNumber
|
||||
hi def link dosbatchHex dosbatchNumber
|
||||
hi def link dosbatchBinary dosbatchNumber
|
||||
hi def link dosbatchOctal dosbatchNumber
|
||||
hi def link dosbatchBinary dosbatchNumber
|
||||
hi def link dosbatchOctal dosbatchNumber
|
||||
|
||||
hi def link dosbatchComment Comment
|
||||
hi def link dosbatchImplicit Function
|
||||
|
||||
hi def link dosbatchSwitch Special
|
||||
hi def link dosbatchSwitch Special
|
||||
|
||||
hi def link dosbatchCmd PreProc
|
||||
|
||||
|
||||
225
runtime/syntax/fish.vim
Normal file
225
runtime/syntax/fish.vim
Normal file
@@ -0,0 +1,225 @@
|
||||
" Vim syntax file
|
||||
" Language: fish
|
||||
" Maintainer: Nicholas Boyle (github.com/nickeb96)
|
||||
" Repository: https://github.com/nickeb96/fish.vim
|
||||
" Last Change: February 1, 2023
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
|
||||
" Statements
|
||||
syn cluster fishStatement contains=fishKeywordAndOr,fishNot,fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand,fishVariable
|
||||
|
||||
syn keyword fishKeywordAndOr and or nextgroup=fishNot,fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
|
||||
hi def link fishKeywordAndOr fishOperator
|
||||
|
||||
syn keyword fishNot not skipwhite nextgroup=fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
|
||||
syn match fishNot /!/ skipwhite nextgroup=fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
|
||||
hi def link fishNot fishOperator
|
||||
|
||||
syn keyword fishSelectStatement command builtin skipwhite nextgroup=fishKeyword,fishKeywordIf,fishCommand,fishOption
|
||||
hi def link fishSelectStatement fishKeyword
|
||||
|
||||
syn keyword fishKeyword end skipwhite nextgroup=@fishTerminator
|
||||
|
||||
syn keyword fishKeywordIf if skipwhite nextgroup=@fishStatement
|
||||
syn keyword fishKeyword else skipwhite nextgroup=fishKeywordIf,fishSemicolon
|
||||
hi def link fishKeywordIf fishKeyword
|
||||
|
||||
syn keyword fishKeyword switch skipwhite nextgroup=@fishArgument
|
||||
syn keyword fishKeyword case skipwhite nextgroup=@fishArgument
|
||||
|
||||
syn keyword fishKeyword while skipwhite nextgroup=@fishStatement
|
||||
|
||||
syn keyword fishKeyword for skipwhite nextgroup=fishForVariable
|
||||
syn match fishForVariable /[[:alnum:]_]\+/ contained skipwhite nextgroup=fishKeywordIn
|
||||
syn keyword fishKeywordIn in contained skipwhite nextgroup=@fishArgument
|
||||
hi def link fishForVariable fishParameter
|
||||
hi def link fishKeywordIn fishKeyword
|
||||
|
||||
syn keyword fishKeyword _ abbr argparse begin bg bind block break breakpoint cd commandline
|
||||
\ complete continue count disown echo emit eval exec exit false fg function functions
|
||||
\ history jobs math printf pwd random read realpath return set set_color source status
|
||||
\ string test time true type ulimit wait
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
syn match fishKeyword /\<contains\>/ skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishCommand /[[:alnum:]_\/[][[:alnum:]+._-]*/ skipwhite nextgroup=@fishNext
|
||||
|
||||
|
||||
" Internally Nested Arguments
|
||||
|
||||
syn cluster fishSubscriptArgs contains=fishInnerVariable,fishIndexNum,fishIndexRange,fishInnerCommandSub
|
||||
|
||||
syn match fishInnerVariable /\$\+[[:alnum:]_]\+/ contained
|
||||
syn match fishInnerVariable /\$\+[[:alnum:]_]\+\[/me=e-1,he=e-1 contained nextgroup=fishInnerSubscript
|
||||
hi def link fishInnerVariable fishVariable
|
||||
|
||||
syn region fishInnerSubscript matchgroup=fishVariable start=/\[/ end=/]/ contained
|
||||
\ keepend contains=@fishSubscriptArgs
|
||||
hi def link fishInnerSubscript fishSubscript
|
||||
|
||||
syn match fishIndexNum /[+-]?[[:digit:]]\+/ contained
|
||||
hi def link fishIndexNum fishParameter
|
||||
|
||||
syn match fishIndexRange /\.\./ contained
|
||||
hi def link fishIndexRange fishParameter
|
||||
|
||||
syn region fishInnerCommandSub matchgroup=fishOperator start=/(/ start=/\$(/ end=/)/ contained
|
||||
\ contains=@fishStatement
|
||||
hi def link fishInnerCommandSub fishCommandSub
|
||||
|
||||
syn region fishQuotedCommandSub matchgroup=fishOperator start=/\$(/ end=/)/ contained
|
||||
\ contains=@fishStatement
|
||||
hi def link fishQuotedCommandSub fishCommandSub
|
||||
|
||||
syn match fishBraceExpansionComma /,/ contained
|
||||
hi def link fishBraceExpansionComma fishOperator
|
||||
|
||||
syn match fishBracedParameter '[[:alnum:]\u5b\u5d@:=+.%/!_-]\+' contained contains=fishInnerPathGlob
|
||||
hi def link fishBracedParameter fishParameter
|
||||
|
||||
syn region fishBracedQuote start=/'/ skip=/\\'/ end=/'/ contained
|
||||
\ contains=fishEscapedEscape,fishEscapedSQuote
|
||||
syn region fishBracedQuote start=/"/ skip=/\\"/ end=/"/ contained
|
||||
\ contains=fishEscapedEscape,fishEscapedDQuote,fishEscapedDollar,fishInnerVariable,fishInnerCommandSub
|
||||
hi def link fishBracedQuote fishQuote
|
||||
|
||||
|
||||
" Arguments
|
||||
|
||||
syn cluster fishArgument contains=fishParameter,fishOption,fishVariable,fishPathGlob,fishBraceExpansion,fishQuote,fishCharacter,fishCommandSub,fishRedirection,fishSelfPid
|
||||
|
||||
syn match fishParameter '[[:alnum:]\u5b\u5d@:=+.,%/!_-]\+' contained skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishOption /-[[:alnum:]=_-]*/ contained skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishPathGlob /\(\~\|*\|?\)/ contained skipwhite nextgroup=@fishNext
|
||||
|
||||
syn region fishBraceExpansion matchgroup=fishOperator start=/{/ end=/}/ contained
|
||||
\ contains=fishBraceExpansionComma,fishInnerVariable,fishInnerCommandSub,fishBracedParameter,fishBracedQuote
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishVariable /\$\+[[:alnum:]_]\+/ skipwhite nextgroup=@fishNext
|
||||
syn match fishVariable /\$\+[[:alnum:]_]\+\[/me=e-1,he=e-1 nextgroup=fishSubscript
|
||||
|
||||
syn region fishSubscript matchgroup=fishVariable start=/\[/ end=/]/ contained
|
||||
\ keepend contains=@fishSubscriptArgs
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
|
||||
syn region fishCommandSub matchgroup=fishOperator start=/(/ start=/\$(/ end=/)/ contained
|
||||
\ contains=@fishStatement
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
|
||||
syn region fishQuote start=/'/ skip=/\\'/ end=/'/ contained
|
||||
\ contains=fishEscapedEscape,fishEscapedSQuote
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
syn region fishQuote start=/"/ skip=/\\"/ end=/"/ contained
|
||||
\ contains=fishEscapedEscape,fishEscapedDQuote,fishEscapedDollar,fishInnerVariable,fishQuotedCommandSub
|
||||
\ skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishEscapedEscape /\\\\/ contained
|
||||
syn match fishEscapedSQuote /\\'/ contained
|
||||
syn match fishEscapedDQuote /\\"/ contained
|
||||
syn match fishEscapedDollar /\\\$/ contained
|
||||
hi def link fishEscapedEscape fishCharacter
|
||||
hi def link fishEscapedSQuote fishCharacter
|
||||
hi def link fishEscapedDQuote fishCharacter
|
||||
hi def link fishEscapedDollar fishCharacter
|
||||
|
||||
syn match fishCharacter /\\[0-7]\{1,3}/ contained skipwhite nextgroup=@fishNext
|
||||
syn match fishCharacter /\\u[0-9a-fA-F]\{4}/ contained skipwhite nextgroup=@fishNext
|
||||
syn match fishCharacter /\\U[0-9a-fA-F]\{8}/ contained skipwhite nextgroup=@fishNext
|
||||
syn match fishCharacter /\\x[0-7][0-9a-fA-F]\|\\x[0-9a-fA-F]/ contained skipwhite nextgroup=@fishNext
|
||||
syn match fishCharacter /\\X[0-9a-fA-F]\{1,2}/ contained skipwhite nextgroup=@fishNext
|
||||
syn match fishCharacter /\\[abcefnrtv[\](){}<>\\*?~%#$|&;'" ]/ contained skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishRedirection /</ contained skipwhite nextgroup=fishRedirectionTarget
|
||||
syn match fishRedirection /[0-9&]\?>[>?]\?/ contained skipwhite nextgroup=fishRedirectionTarget
|
||||
syn match fishRedirection /[0-9&]\?>&[0-9-]/ contained skipwhite nextgroup=@fishNext
|
||||
|
||||
syn match fishRedirectionTarget /[[:alnum:]$~*?{,}"'\/._-]\+/ contained contains=fishInnerVariable skipwhite nextgroup=@fishNext
|
||||
hi def link fishRedirectionTarget fishRedirection
|
||||
|
||||
syn match fishSelfPid /%self\>/ contained nextgroup=@fishNext
|
||||
hi def link fishSelfPid fishOperator
|
||||
|
||||
|
||||
" Terminators
|
||||
|
||||
syn cluster fishTerminator contains=fishPipe,fishBackgroundJob,fishSemicolon,fishSymbolicAndOr
|
||||
|
||||
syn match fishPipe /\(1>\|2>\|&\)\?|/ contained skipwhite nextgroup=@fishStatement
|
||||
hi def link fishPipe fishEnd
|
||||
|
||||
syn match fishBackgroundJob /&$/ contained skipwhite nextgroup=@fishStatement
|
||||
syn match fishBackgroundJob /&[^<>&|]/me=s+1,he=s+1 contained skipwhite nextgroup=@fishStatement
|
||||
hi def link fishBackgroundJob fishEnd
|
||||
|
||||
syn match fishSemicolon /;/ skipwhite nextgroup=@fishStatement
|
||||
hi def link fishSemicolon fishEnd
|
||||
|
||||
syn match fishSymbolicAndOr /\(&&\|||\)/ contained skipwhite skipempty nextgroup=@fishStatement
|
||||
hi def link fishSymbolicAndOr fishOperator
|
||||
|
||||
|
||||
" Other
|
||||
|
||||
syn cluster fishNext contains=fishEscapedNl,@fishArgument,@fishTerminator
|
||||
|
||||
syn match fishEscapedNl /\\$/ skipnl skipwhite contained nextgroup=@fishNext
|
||||
|
||||
syn match fishComment /#.*/ contains=fishTodo,@Spell
|
||||
|
||||
syn keyword fishTodo TODO contained
|
||||
|
||||
|
||||
|
||||
syn sync minlines=200
|
||||
syn sync maxlines=300
|
||||
|
||||
|
||||
" Intermediate highlight groups matching $fish_color_* variables
|
||||
|
||||
hi def link fishCommand fish_color_command
|
||||
hi def link fishComment fish_color_comment
|
||||
hi def link fishEnd fish_color_end
|
||||
hi def link fishCharacter fish_color_escape
|
||||
hi def link fishKeyword fish_color_keyword
|
||||
hi def link fishEscapedNl fish_color_normal
|
||||
hi def link fishOperator fish_color_operator
|
||||
hi def link fishVariable fish_color_operator
|
||||
hi def link fishInnerVariable fish_color_operator
|
||||
hi def link fishPathGlob fish_color_operator
|
||||
hi def link fishOption fish_color_option
|
||||
hi def link fishParameter fish_color_param
|
||||
hi def link fishQuote fish_color_quote
|
||||
hi def link fishRedirection fish_color_redirection
|
||||
|
||||
|
||||
" Default highlight groups
|
||||
|
||||
hi def link fish_color_param Normal
|
||||
hi def link fish_color_normal Normal
|
||||
hi def link fish_color_option Normal
|
||||
hi def link fish_color_command Function
|
||||
hi def link fish_color_keyword Keyword
|
||||
hi def link fish_color_end Delimiter
|
||||
hi def link fish_color_operator Operator
|
||||
hi def link fish_color_redirection Type
|
||||
hi def link fish_color_quote String
|
||||
hi def link fish_color_escape Character
|
||||
hi def link fish_color_comment Comment
|
||||
|
||||
hi def link fishTodo Todo
|
||||
|
||||
|
||||
let b:current_syntax = 'fish'
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: FORTH
|
||||
" Current Maintainer: Johan Kotlinski <kotlinski@gmail.com>
|
||||
" Previous Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
|
||||
" Last Change: 2018-03-29
|
||||
" Previous Maintainer: Christian V. J. Br<EFBFBD>ssow <cvjb@cvjb.de>
|
||||
" Last Change: 2023-01-12
|
||||
" Filenames: *.fs,*.ft
|
||||
" URL: https://github.com/jkotlinski/forth.vim
|
||||
|
||||
@@ -23,7 +23,6 @@ syn case ignore
|
||||
|
||||
" Some special, non-FORTH keywords
|
||||
syn keyword forthTodo contained TODO FIXME XXX
|
||||
syn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\='
|
||||
|
||||
" Characters allowed in keywords
|
||||
" I don't know if 128-255 are allowed in ANS-FORTH
|
||||
@@ -98,13 +97,16 @@ syn keyword forthEndOfColonDef ; ;M ;m
|
||||
syn keyword forthEndOfClassDef ;class
|
||||
syn keyword forthEndOfObjectDef ;object
|
||||
syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
|
||||
syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE
|
||||
syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS <BUILDS DOES> IMMEDIATE
|
||||
syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
|
||||
syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
|
||||
syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
|
||||
syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
|
||||
syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER
|
||||
syn keyword forthDefine , 2, F, C, COMPILE,
|
||||
syn match forthDefine "\[DEFINED]"
|
||||
syn match forthDefine "\[UNDEFINED]"
|
||||
syn match forthDefine "\[IF]"
|
||||
syn match forthDefine "\[IFDEF]"
|
||||
syn match forthDefine "\[IFUNDEF]"
|
||||
syn match forthDefine "\[THEN]"
|
||||
@@ -180,6 +182,7 @@ syn keyword forthBlocks BLOCK-INCLUDED BLK
|
||||
syn keyword forthMath DECIMAL HEX BASE
|
||||
syn match forthInteger '\<-\=[0-9]\+.\=\>'
|
||||
syn match forthInteger '\<&-\=[0-9]\+.\=\>'
|
||||
syn match forthInteger '\<#-\=[0-9]\+.\=\>'
|
||||
" recognize hex and binary numbers, the '$' and '%' notation is for gforth
|
||||
syn match forthInteger '\<\$\x*\x\+\>' " *1* --- don't mess
|
||||
syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order!
|
||||
@@ -192,18 +195,18 @@ syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
|
||||
syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
|
||||
|
||||
" Strings
|
||||
syn region forthString start=+\.*\"+ end=+"+ end=+$+
|
||||
syn region forthString start=+\.*\"+ end=+"+ end=+$+ contains=@Spell
|
||||
" XXX
|
||||
syn region forthString start=+s\"+ end=+"+ end=+$+
|
||||
syn region forthString start=+s\\\"+ end=+"+ end=+$+
|
||||
syn region forthString start=+c\"+ end=+"+ end=+$+
|
||||
syn region forthString start=+s\"+ end=+"+ end=+$+ contains=@Spell
|
||||
syn region forthString start=+s\\\"+ end=+"+ end=+$+ contains=@Spell
|
||||
syn region forthString start=+c\"+ end=+"+ end=+$+ contains=@Spell
|
||||
|
||||
" Comments
|
||||
syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
|
||||
syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
|
||||
syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
|
||||
syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
|
||||
syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
|
||||
syn match forthComment '\\\%(\s.*\)\=$' contains=@Spell,forthTodo,forthSpaceError
|
||||
syn region forthComment start='\\S\s' end='.*' contains=@Spell,forthTodo,forthSpaceError
|
||||
syn match forthComment '\.(\s[^)]*)' contains=@Spell,forthTodo,forthSpaceError
|
||||
syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=@Spell,forthTodo,forthSpaceError
|
||||
syn region forthComment start='/\*' end='\*/' contains=@Spell,forthTodo,forthSpaceError
|
||||
|
||||
" Include files
|
||||
syn match forthInclude '^INCLUDE\s\+\k\+'
|
||||
@@ -260,3 +263,4 @@ let b:current_syntax = "forth"
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
" vim:ts=8:sw=4:nocindent:smartindent:
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: fstab file
|
||||
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
|
||||
" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
|
||||
" Last Change: 2022 Dec 11
|
||||
" Version: 1.6.2
|
||||
" Last Change: 2023 Feb 19
|
||||
" Version: 1.6.3
|
||||
"
|
||||
" Credits:
|
||||
" David Necas (Yeti) <yeti@physics.muni.cz>
|
||||
@@ -389,7 +389,7 @@ syn match fsFreqPassNumber /\d\+\s\+[012]\s*/ contained
|
||||
syn match fsDevice /^\s*\zs.\{-1,}\s/me=e-1 nextgroup=fsMountPoint contains=@fsDeviceCluster,@fsGeneralCluster
|
||||
syn match fsMountPoint /\s\+.\{-}\s/me=e-1 nextgroup=fsType contains=@fsMountPointCluster,@fsGeneralCluster contained
|
||||
syn match fsType /\s\+.\{-}\s/me=e-1 nextgroup=fsOptions contains=@fsTypeCluster,@fsGeneralCluster contained
|
||||
syn match fsOptions /\s\+.\{-}\s/me=e-1 nextgroup=fsFreqPass contains=@fsOptionsCluster,@fsGeneralCluster contained
|
||||
syn match fsOptions /\s\+.\{-}\%(\s\|$\)/ nextgroup=fsFreqPass contains=@fsOptionsCluster,@fsGeneralCluster contained
|
||||
syn match fsFreqPass /\s\+.\{-}$/ contains=@fsFreqPassCluster,@fsGeneralCluster contained
|
||||
|
||||
" Whole line comments
|
||||
@@ -491,4 +491,4 @@ let b:current_syntax = "fstab"
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: ts=8 ft=vim
|
||||
" vim: ts=8 noet ft=vim
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
" go.vim: Vim syntax file for Go.
|
||||
" Language: Go
|
||||
" Maintainer: Billie Cleek <bhcleek@gmail.com>
|
||||
" Latest Revision: 2022-11-17
|
||||
" Latest Revision: 2023-02-19
|
||||
" License: BSD-style. See LICENSE file in source repository.
|
||||
" Repository: https://github.com/fatih/vim-go
|
||||
|
||||
@@ -136,8 +136,11 @@ syn keyword goBoolean true false
|
||||
syn keyword goPredefinedIdentifiers nil iota
|
||||
|
||||
hi def link goBuiltins Identifier
|
||||
hi def link goPredefinedIdentifiers Constant
|
||||
" Boolean links to Constant by default by vim: goBoolean and goPredefinedIdentifiers
|
||||
" will be highlighted the same, but having the separate groups allows users to
|
||||
" have separate highlighting for them if they desire.
|
||||
hi def link goBoolean Boolean
|
||||
hi def link goPredefinedIdentifiers goBoolean
|
||||
|
||||
" Comments; their contents
|
||||
syn keyword goTodo contained TODO FIXME XXX BUG
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: gpg(1) configuration file
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-10-14
|
||||
" Language: gpg(1) configuration file
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-10-14
|
||||
" Updated: 2023-01-23 @ObserverOfTime: added a couple of keywords
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -12,91 +13,92 @@ set cpo&vim
|
||||
|
||||
setlocal iskeyword+=-
|
||||
|
||||
syn keyword gpgTodo contained FIXME TODO XXX NOTE
|
||||
syn keyword gpgTodo contained FIXME TODO XXX NOTE
|
||||
|
||||
syn region gpgComment contained display oneline start='#' end='$'
|
||||
\ contains=gpgTodo,gpgID,@Spell
|
||||
syn region gpgComment contained display oneline start='#' end='$'
|
||||
\ contains=gpgTodo,gpgID,@Spell
|
||||
|
||||
syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>'
|
||||
syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>'
|
||||
|
||||
syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
|
||||
syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
|
||||
|
||||
syn keyword gpgCommand contained skipwhite nextgroup=gpgArg
|
||||
\ check-sigs decrypt decrypt-files delete-key
|
||||
\ delete-secret-and-public-key delete-secret-key
|
||||
\ edit-key encrypt-files export export-all
|
||||
\ export-ownertrust export-secret-keys
|
||||
\ export-secret-subkeys fast-import fingerprint
|
||||
\ gen-prime gen-random import import-ownertrust
|
||||
\ list-keys list-public-keys list-secret-keys
|
||||
\ list-sigs lsign-key nrsign-key print-md print-mds
|
||||
\ recv-keys search-keys send-keys sign-key verify
|
||||
\ verify-files
|
||||
syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError
|
||||
\ check-trustdb clearsign desig-revoke detach-sign
|
||||
\ encrypt gen-key gen-revoke help list-packets
|
||||
\ rebuild-keydb-caches sign store symmetric
|
||||
\ update-trustdb version warranty
|
||||
syn keyword gpgCommand contained skipwhite nextgroup=gpgArg
|
||||
\ check-sigs decrypt decrypt-files delete-key
|
||||
\ delete-secret-and-public-key delete-secret-key
|
||||
\ edit-key encrypt-files export export-all
|
||||
\ export-ownertrust export-secret-keys
|
||||
\ export-secret-subkeys fast-import fingerprint
|
||||
\ gen-prime gen-random import import-ownertrust
|
||||
\ list-keys list-public-keys list-secret-keys
|
||||
\ list-sigs lsign-key nrsign-key print-md print-mds
|
||||
\ recv-keys search-keys send-keys sign-key verify
|
||||
\ verify-files
|
||||
syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError
|
||||
\ check-trustdb clearsign desig-revoke detach-sign
|
||||
\ encrypt gen-key gen-revoke help list-packets
|
||||
\ rebuild-keydb-caches sign store symmetric
|
||||
\ update-trustdb version warranty
|
||||
|
||||
syn keyword gpgOption contained skipwhite nextgroup=gpgArg
|
||||
\ attribute-fd cert-digest-algo charset cipher-algo
|
||||
\ command-fd comment completes-needed compress
|
||||
\ compress-algo debug default-cert-check-level
|
||||
\ default-key default-preference-list
|
||||
\ default-recipient digest-algo disable-cipher-algo
|
||||
\ disable-pubkey-algo encrypt-to exec-path
|
||||
\ export-options group homedir import-options
|
||||
\ keyring keyserver keyserver-options load-extension
|
||||
\ local-user logger-fd marginals-needed max-cert-depth
|
||||
\ notation-data options output override-session-key
|
||||
\ passphrase-fd personal-cipher-preferences
|
||||
\ personal-compress-preferences
|
||||
\ personal-digest-preferences photo-viewer
|
||||
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
|
||||
\ secret-keyring set-filename set-policy-url status-fd
|
||||
\ trusted-key verify-options keyid-format list-options
|
||||
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
|
||||
\ allow-freeform-uid allow-non-selfsigned-uid
|
||||
\ allow-secret-key-import always-trust
|
||||
\ armor ask-cert-expire ask-sig-expire
|
||||
\ auto-check-trustdb batch debug-all default-comment
|
||||
\ default-recipient-self dry-run emit-version
|
||||
\ emulate-md-encode-bug enable-special-filenames
|
||||
\ escape-from-lines expert fast-list-mode
|
||||
\ fixed-list-mode for-your-eyes-only
|
||||
\ force-mdc force-v3-sigs force-v4-certs
|
||||
\ gpg-agent-info ignore-crc-error ignore-mdc-error
|
||||
\ ignore-time-conflict ignore-valid-from interactive
|
||||
\ list-only lock-multiple lock-never lock-once
|
||||
\ merge-only no no-allow-non-selfsigned-uid
|
||||
\ no-armor no-ask-cert-expire no-ask-sig-expire
|
||||
\ no-auto-check-trustdb no-batch no-comment
|
||||
\ no-default-keyring no-default-recipient
|
||||
\ no-encrypt-to no-expensive-trust-checks
|
||||
\ no-expert no-for-your-eyes-only no-force-v3-sigs
|
||||
\ no-force-v4-certs no-greeting no-literal
|
||||
\ no-mdc-warning no-options no-permission-warning
|
||||
\ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
|
||||
\ no-secmem-warning no-show-notation no-show-photos
|
||||
\ no-show-policy-url no-sig-cache no-sig-create-check
|
||||
\ no-sk-comments no-tty no-utf8-strings no-verbose
|
||||
\ no-version not-dash-escaped openpgp pgp2
|
||||
\ pgp6 pgp7 preserve-permissions quiet rfc1991
|
||||
\ set-filesize show-keyring show-notation show-photos
|
||||
\ show-policy-url show-session-key simple-sk-checksum
|
||||
\ sk-comments skip-verify textmode throw-keyid
|
||||
\ try-all-secrets use-agent use-embedded-filename
|
||||
\ utf8-strings verbose with-colons with-fingerprint
|
||||
\ with-key-data yes
|
||||
syn keyword gpgOption contained skipwhite nextgroup=gpgArg
|
||||
\ attribute-fd cert-digest-algo charset cipher-algo
|
||||
\ command-fd comment completes-needed compress
|
||||
\ compress-algo debug default-cert-check-level
|
||||
\ default-key default-preference-list
|
||||
\ default-recipient digest-algo disable-cipher-algo
|
||||
\ disable-pubkey-algo encrypt-to exec-path
|
||||
\ export-options group homedir import-options
|
||||
\ keyring keyserver keyserver-options load-extension
|
||||
\ local-user logger-fd marginals-needed max-cert-depth
|
||||
\ notation-data options output override-session-key
|
||||
\ passphrase-fd personal-cipher-preferences
|
||||
\ personal-compress-preferences
|
||||
\ personal-digest-preferences photo-viewer
|
||||
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
|
||||
\ secret-keyring set-filename set-policy-url status-fd
|
||||
\ trusted-key verify-options keyid-format list-options
|
||||
\ default-new-key-algo weak-digest
|
||||
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
|
||||
\ allow-freeform-uid allow-non-selfsigned-uid
|
||||
\ allow-secret-key-import always-trust
|
||||
\ armor ask-cert-expire ask-sig-expire
|
||||
\ auto-check-trustdb batch debug-all default-comment
|
||||
\ default-recipient-self dry-run emit-version
|
||||
\ emulate-md-encode-bug enable-special-filenames
|
||||
\ escape-from-lines expert fast-list-mode
|
||||
\ fixed-list-mode for-your-eyes-only
|
||||
\ force-mdc force-v3-sigs force-v4-certs
|
||||
\ gpg-agent-info ignore-crc-error ignore-mdc-error
|
||||
\ ignore-time-conflict ignore-valid-from interactive
|
||||
\ list-only lock-multiple lock-never lock-once
|
||||
\ merge-only no no-allow-non-selfsigned-uid
|
||||
\ no-armor no-ask-cert-expire no-ask-sig-expire
|
||||
\ no-auto-check-trustdb no-batch no-comment
|
||||
\ no-default-keyring no-default-recipient
|
||||
\ no-encrypt-to no-expensive-trust-checks
|
||||
\ no-expert no-for-your-eyes-only no-force-v3-sigs
|
||||
\ no-force-v4-certs no-greeting no-literal
|
||||
\ no-mdc-warning no-options no-permission-warning
|
||||
\ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
|
||||
\ no-secmem-warning no-show-notation no-show-photos
|
||||
\ no-show-policy-url no-sig-cache no-sig-create-check
|
||||
\ no-sk-comments no-tty no-utf8-strings no-verbose
|
||||
\ no-version not-dash-escaped openpgp pgp2
|
||||
\ pgp6 pgp7 preserve-permissions quiet rfc1991
|
||||
\ set-filesize show-keyring show-notation show-photos
|
||||
\ show-policy-url show-session-key simple-sk-checksum
|
||||
\ sk-comments skip-verify textmode throw-keyid
|
||||
\ try-all-secrets use-agent use-embedded-filename
|
||||
\ utf8-strings verbose with-colons with-fingerprint
|
||||
\ with-key-data yes
|
||||
|
||||
syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
|
||||
syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
|
||||
syn match gpgArgError contained display '\S\+\(\s\+\S\+\)*'
|
||||
|
||||
hi def link gpgComment Comment
|
||||
hi def link gpgTodo Todo
|
||||
hi def link gpgID Number
|
||||
hi def link gpgOption Keyword
|
||||
hi def link gpgCommand Error
|
||||
hi def link gpgComment Comment
|
||||
hi def link gpgTodo Todo
|
||||
hi def link gpgID Number
|
||||
hi def link gpgOption Keyword
|
||||
hi def link gpgCommand Error
|
||||
hi def link gpgArgError Error
|
||||
|
||||
let b:current_syntax = "gpg"
|
||||
|
||||
@@ -1,149 +1,10 @@
|
||||
" Vim syntax file
|
||||
" Language: none; used to see highlighting
|
||||
" Maintainer: Ronald Schild <rs@scutum.de>
|
||||
" Last Change: 2019 Jun 06
|
||||
" Version: 5.4n.1
|
||||
" Additional Changes By: Lifepillar, Bram
|
||||
" Maintainer: github user lacygoill
|
||||
" Last Change: 2023 Mar 08
|
||||
|
||||
" To see your current highlight settings, do
|
||||
" :so $VIMRUNTIME/syntax/hitest.vim
|
||||
|
||||
" save global options and registers
|
||||
let s:hidden = &hidden
|
||||
let s:lazyredraw = &lazyredraw
|
||||
let s:more = &more
|
||||
let s:report = &report
|
||||
let s:whichwrap = &whichwrap
|
||||
let s:shortmess = &shortmess
|
||||
let s:wrapscan = &wrapscan
|
||||
let s:register_a = @a
|
||||
let s:register_se = @/
|
||||
|
||||
" set global options
|
||||
set hidden lazyredraw nomore report=99999 shortmess=aoOstTW wrapscan
|
||||
set whichwrap&
|
||||
|
||||
" print current highlight settings into register a
|
||||
redir @a
|
||||
silent highlight
|
||||
redir END
|
||||
|
||||
" Open a new window if the current one isn't empty
|
||||
if line("$") != 1 || getline(1) != ""
|
||||
new
|
||||
endif
|
||||
|
||||
" edit temporary file
|
||||
edit Highlight\ test
|
||||
|
||||
" set local options
|
||||
setlocal autoindent noexpandtab formatoptions=t shiftwidth=18 noswapfile tabstop=18
|
||||
let &textwidth=&columns
|
||||
|
||||
" insert highlight settings
|
||||
% delete
|
||||
put a
|
||||
|
||||
" remove cleared groups
|
||||
silent! g/ cleared$/d
|
||||
|
||||
" remove the colored xxx items
|
||||
g/xxx /s///e
|
||||
|
||||
" remove color settings (not needed here)
|
||||
global! /links to/ substitute /\s.*$//e
|
||||
|
||||
" Move split 'links to' lines to the same line
|
||||
% substitute /^\(\w\+\)\n\s*\(links to.*\)/\1\t\2/e
|
||||
|
||||
" move linked groups to the end of file
|
||||
global /links to/ move $
|
||||
|
||||
" move linked group names to the matching preferred groups
|
||||
" TODO: this fails if the group linked to isn't defined
|
||||
% substitute /^\(\w\+\)\s*\(links to\)\s*\(\w\+\)$/\3\t\2 \1/e
|
||||
silent! global /links to/ normal mz3ElD0#$p'zdd
|
||||
|
||||
" delete empty lines
|
||||
global /^ *$/ delete
|
||||
|
||||
" precede syntax command
|
||||
% substitute /^[^ ]*/syn keyword &\t&/
|
||||
|
||||
" execute syntax commands
|
||||
syntax clear
|
||||
% yank a
|
||||
@a
|
||||
|
||||
" remove syntax commands again
|
||||
% substitute /^syn keyword //
|
||||
|
||||
" pretty formatting
|
||||
global /^/ exe "normal Wi\<CR>\t\eAA\ex"
|
||||
global /^\S/ join
|
||||
|
||||
" find out first syntax highlighting
|
||||
let b:various = &highlight.',:Normal,:Cursor,:,'
|
||||
let b:i = 1
|
||||
while b:various =~ ':'.substitute(getline(b:i), '\s.*$', ',', '')
|
||||
let b:i = b:i + 1
|
||||
if b:i > line("$") | break | endif
|
||||
endwhile
|
||||
|
||||
" insert headlines
|
||||
call append(0, "Highlighting groups for various occasions")
|
||||
call append(1, "-----------------------------------------")
|
||||
|
||||
if b:i < line("$")-1
|
||||
let b:synhead = "Syntax highlighting groups"
|
||||
if exists("hitest_filetypes")
|
||||
redir @a
|
||||
let
|
||||
redir END
|
||||
let @a = substitute(@a, 'did_\(\w\+\)_syn\w*_inits\s*#1', ', \1', 'g')
|
||||
let @a = substitute(@a, "\n\\w[^\n]*", '', 'g')
|
||||
let @a = substitute(@a, "\n", '', 'g')
|
||||
let @a = substitute(@a, '^,', '', 'g')
|
||||
if @a != ""
|
||||
let b:synhead = b:synhead." - filetype"
|
||||
if @a =~ ','
|
||||
let b:synhead = b:synhead."s"
|
||||
endif
|
||||
let b:synhead = b:synhead.":".@a
|
||||
endif
|
||||
endif
|
||||
call append(b:i+1, "")
|
||||
call append(b:i+2, b:synhead)
|
||||
call append(b:i+3, substitute(b:synhead, '.', '-', 'g'))
|
||||
endif
|
||||
|
||||
" remove 'hls' highlighting
|
||||
nohlsearch
|
||||
normal 0
|
||||
|
||||
" we don't want to save this temporary file
|
||||
set nomodified
|
||||
|
||||
" the following trick avoids the "Press RETURN ..." prompt
|
||||
0 append
|
||||
.
|
||||
|
||||
" restore global options and registers
|
||||
let &hidden = s:hidden
|
||||
let &lazyredraw = s:lazyredraw
|
||||
let &more = s:more
|
||||
let &report = s:report
|
||||
let &shortmess = s:shortmess
|
||||
let &whichwrap = s:whichwrap
|
||||
let &wrapscan = s:wrapscan
|
||||
let @a = s:register_a
|
||||
|
||||
" restore last search pattern
|
||||
call histdel("search", -1)
|
||||
let @/ = s:register_se
|
||||
|
||||
" remove variables
|
||||
unlet s:hidden s:lazyredraw s:more s:report s:shortmess
|
||||
unlet s:whichwrap s:wrapscan s:register_a s:register_se
|
||||
|
||||
" vim: ts=8
|
||||
import 'dist/vimhighlight.vim'
|
||||
call vimhighlight.HighlightTest()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
|
||||
" Claudio Fleiner <claudio@fleiner.com>
|
||||
" Last Change: 2022 Nov 18
|
||||
" Last Change: 2023 Feb 20
|
||||
|
||||
" Please check :help html.vim for some comments and a description of the options
|
||||
|
||||
@@ -221,7 +221,7 @@ if main_syntax != 'java' || exists("java_javascript")
|
||||
" JAVA SCRIPT
|
||||
syn include @htmlJavaScript syntax/javascript.vim
|
||||
unlet b:current_syntax
|
||||
syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
|
||||
syn region javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
|
||||
syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
|
||||
hi def link htmlScriptTag htmlTag
|
||||
|
||||
|
||||
31
runtime/syntax/lc.vim
Normal file
31
runtime/syntax/lc.vim
Normal file
@@ -0,0 +1,31 @@
|
||||
" Vim syntax file
|
||||
" Language: Elsa
|
||||
" Maintainer: Miles Glapa-Grossklag <miles@glapa-grossklag.com>
|
||||
" Last Change: 2023-01-29
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Keywords
|
||||
syntax keyword elsaKeyword let eval
|
||||
syntax match elsaKeyword "\v:"
|
||||
highlight link elsaKeyword Keyword
|
||||
|
||||
" Comments
|
||||
setlocal commentstring=--%s
|
||||
syntax match elsaComment "\v--.*$"
|
||||
highlight link elsaComment Comment
|
||||
|
||||
" Operators
|
||||
syntax match elsaOperator "\v\="
|
||||
syntax match elsaOperator "\v\=[abd*~]\>"
|
||||
syntax match elsaOperator "\v-\>"
|
||||
syntax match elsaOperator "\v\\"
|
||||
highlight link elsaOperator Operator
|
||||
|
||||
" Definitions
|
||||
syntax match elsaConstant "\v[A-Z]+[A-Z_0-9]*"
|
||||
highlight link elsaConstant Constant
|
||||
|
||||
let b:current_syntax = 'elsa'
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: nginx.conf
|
||||
" Maintainer: Chris Aumann <me@chr4.org>
|
||||
" Last Change: Apr 15, 2017
|
||||
" Last Change: Jan 25, 2023
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -84,6 +84,8 @@ syn keyword ngxListenOptions default_server contained
|
||||
syn keyword ngxListenOptions ssl contained
|
||||
syn keyword ngxListenOptions http2 contained
|
||||
syn keyword ngxListenOptions spdy contained
|
||||
syn keyword ngxListenOptions http3 contained
|
||||
syn keyword ngxListenOptions quic contained
|
||||
syn keyword ngxListenOptions proxy_protocol contained
|
||||
syn keyword ngxListenOptions setfib contained
|
||||
syn keyword ngxListenOptions fastopen contained
|
||||
@@ -265,8 +267,16 @@ syn keyword ngxDirective http2_max_concurrent_streams
|
||||
syn keyword ngxDirective http2_max_field_size
|
||||
syn keyword ngxDirective http2_max_header_size
|
||||
syn keyword ngxDirective http2_max_requests
|
||||
syn keyword ngxDirective http2_push
|
||||
syn keyword ngxDirective http2_push_preload
|
||||
syn keyword ngxDirective http2_recv_buffer_size
|
||||
syn keyword ngxDirective http2_recv_timeout
|
||||
syn keyword ngxDirective http3_hq
|
||||
syn keyword ngxDirective http3_max_concurrent_pushes
|
||||
syn keyword ngxDirective http3_max_concurrent_streams
|
||||
syn keyword ngxDirective http3_push
|
||||
syn keyword ngxDirective http3_push_preload
|
||||
syn keyword ngxDirective http3_stream_buffer_size
|
||||
syn keyword ngxDirective if_modified_since
|
||||
syn keyword ngxDirective ignore_invalid_headers
|
||||
syn keyword ngxDirective image_filter
|
||||
@@ -444,6 +454,10 @@ syn keyword ngxDirective proxy_temp_path
|
||||
syn keyword ngxDirective proxy_timeout
|
||||
syn keyword ngxDirective proxy_upload_rate
|
||||
syn keyword ngxDirective queue
|
||||
syn keyword ngxDirective quic_gso
|
||||
syn keyword ngxDirective quic_host_key
|
||||
syn keyword ngxDirective quic_mtu
|
||||
syn keyword ngxDirective quic_retry
|
||||
syn keyword ngxDirective random_index
|
||||
syn keyword ngxDirective read_ahead
|
||||
syn keyword ngxDirective real_ip_header
|
||||
@@ -545,8 +559,10 @@ syn keyword ngxDirective ssl_certificate
|
||||
syn keyword ngxDirective ssl_certificate_key
|
||||
syn keyword ngxDirective ssl_ciphers
|
||||
syn keyword ngxDirective ssl_client_certificate
|
||||
syn keyword ngxDirective ssl_conf_command
|
||||
syn keyword ngxDirective ssl_crl
|
||||
syn keyword ngxDirective ssl_dhparam
|
||||
syn keyword ngxDirective ssl_early_data
|
||||
syn keyword ngxDirective ssl_ecdh_curve
|
||||
syn keyword ngxDirective ssl_engine
|
||||
syn keyword ngxDirective ssl_handshake_timeout
|
||||
@@ -556,6 +572,7 @@ syn keyword ngxSSLPreferServerCiphersOn on contained
|
||||
syn keyword ngxSSLPreferServerCiphersOff off contained
|
||||
syn keyword ngxDirective ssl_preread
|
||||
syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
|
||||
syn keyword ngxDirective ssl_reject_handshake
|
||||
syn match ngxSSLProtocol 'TLSv1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
|
||||
syn match ngxSSLProtocol 'TLSv1\.1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
|
||||
syn match ngxSSLProtocol 'TLSv1\.2' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
|
||||
@@ -622,6 +639,7 @@ syn keyword ngxDirective uwsgi_buffering
|
||||
syn keyword ngxDirective uwsgi_buffers
|
||||
syn keyword ngxDirective uwsgi_busy_buffers_size
|
||||
syn keyword ngxDirective uwsgi_cache
|
||||
syn keyword ngxDirective uwsgi_cache_background_update
|
||||
syn keyword ngxDirective uwsgi_cache_bypass
|
||||
syn keyword ngxDirective uwsgi_cache_key
|
||||
syn keyword ngxDirective uwsgi_cache_lock
|
||||
@@ -2225,6 +2243,19 @@ syn keyword ngxDirectiveThirdParty xss_override_status
|
||||
syn keyword ngxDirectiveThirdParty xss_check_status
|
||||
syn keyword ngxDirectiveThirdParty xss_input_types
|
||||
|
||||
" CT Module <https://github.com/grahamedgecombe/nginx-ct>
|
||||
" Certificate Transparency module for nginx
|
||||
syn keyword ngxDirectiveThirdParty ssl_ct
|
||||
syn keyword ngxDirectiveThirdParty ssl_ct_static_scts
|
||||
|
||||
" Dynamic TLS records patch <https://github.com/cloudflare/sslconfig/blob/master/patches/nginx__dynamic_tls_records.patch>
|
||||
" TLS Dynamic Record Resizing
|
||||
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_enable
|
||||
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_hi
|
||||
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_lo
|
||||
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_threshold
|
||||
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_timeout
|
||||
|
||||
" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
|
||||
" ZIP archiver for nginx
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user