aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format2
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml5
-rw-r--r--.github/workflows/ci.yml1
-rw-r--r--.github/workflows/release.yml12
-rw-r--r--.github/workflows/squash-typos.yml5
-rw-r--r--CONTRIBUTING.md26
-rw-r--r--cmake/FindLibLUV.cmake2
-rw-r--r--contrib/flake.nix7
-rw-r--r--runtime/doc/change.txt6
-rw-r--r--runtime/doc/insert.txt6
-rw-r--r--runtime/doc/lsp.txt9
-rw-r--r--runtime/doc/options.txt6
-rw-r--r--runtime/doc/various.txt4
-rw-r--r--runtime/doc/vim_diff.txt11
-rw-r--r--runtime/filetype.vim3
-rw-r--r--runtime/ftplugin/julia.vim92
-rw-r--r--runtime/indent/julia.vim491
-rw-r--r--runtime/lua/vim/lsp.lua1
-rw-r--r--runtime/syntax/julia.vim550
-rwxr-xr-xscripts/release.sh15
-rw-r--r--scripts/squash_typos.py177
-rwxr-xr-xsrc/clint.py2
-rw-r--r--src/nvim/autocmd.c4
-rw-r--r--src/nvim/ex_getln.c4
-rw-r--r--src/nvim/generators/gen_options.lua6
-rw-r--r--src/nvim/getchar.c25
-rw-r--r--src/nvim/main.c3
-rw-r--r--src/nvim/options.lua731
-rw-r--r--src/nvim/screen.c44
-rw-r--r--src/nvim/testdir/setup.vim8
-rw-r--r--src/nvim/testdir/test_autocmd.vim2
-rw-r--r--src/nvim/testdir/test_cursorline.vim22
-rw-r--r--src/nvim/testdir/test_diffmode.vim31
-rw-r--r--src/nvim/testdir/test_filetype.vim2
-rw-r--r--src/nvim/testdir/test_quickfix.vim2
-rw-r--r--test/functional/helpers.lua8
-rw-r--r--test/functional/plugin/lsp_spec.lua2
-rw-r--r--test/functional/ui/highlight_spec.lua91
-rw-r--r--test/unit/preprocess.lua4
39 files changed, 1921 insertions, 501 deletions
diff --git a/.clang-format b/.clang-format
index ff61915aac..c86f5a3ddf 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,6 +1,6 @@
BasedOnStyle: Google
Language: Cpp
-ColumnLimit: 80
+ColumnLimit: 100
IndentWidth: 2
TabWidth: 2
UseTab: Never
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..35b9e23489
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: true
+contact_links:
+ - name: Question
+ url: https://neovim.discourse.group/
+ about: Please ask and answer questions about Neovim on Discourse.
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3b89730434..f75320048b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,6 +3,7 @@ on:
push:
branches: '**'
pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
branches:
- 'master'
- 'release-[0-9]+.[0-9]+'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ff7562bf20..c6d3eaf42b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,10 +28,14 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y autoconf automake build-essential cmake gcc-11 gettext gperf libtool-bin locales ninja-build pkg-config unzip
+ - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly')
+ run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV
+ - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
+ run: printf 'NVIM_BUILD_TYPE=RelWithDebInfo\n' >> $GITHUB_ENV
- name: Build release
id: build
run: |
- CC=gcc-11 make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH="
+ CC=gcc-11 make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH="
printf '::set-output name=version::%s\n' "$(./build/bin/nvim --version | head -n 3 | sed -z 's/\n/%0A/g')"
printf '::set-output name=release::%s\n' "$(./build/bin/nvim --version | head -n 1)"
make DESTDIR="$GITHUB_WORKSPACE/build/release/nvim-linux64" install
@@ -80,9 +84,13 @@ jobs:
brew update >/dev/null
brew upgrade
brew install automake ninja
+ - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly')
+ run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV
+ - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
+ run: printf 'NVIM_BUILD_TYPE=RelWithDebInfo\n' >> $GITHUB_ENV
- name: Build release
run: |
- make CMAKE_BUILD_TYPE=Release CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11"
+ make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11"
make DESTDIR="$GITHUB_WORKSPACE/build/release/nvim-osx64" install
- name: Create package
run: |
diff --git a/.github/workflows/squash-typos.yml b/.github/workflows/squash-typos.yml
index 6f5e24a9b6..6779589dc6 100644
--- a/.github/workflows/squash-typos.yml
+++ b/.github/workflows/squash-typos.yml
@@ -1,7 +1,7 @@
name: Squash Typo Pull Requests
on:
- pull_request:
+ pull_request_target:
types: labeled
concurrency:
group: ${{ github.workflow }}
@@ -21,7 +21,6 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- ref: master
- uses: actions/setup-python@v2
- name: Setup git config
@@ -30,3 +29,5 @@ jobs:
git config --global user.email 'marvim@users.noreply.github.com'
- run: python scripts/squash_typos.py
+ env:
+ PR_NUMBER: ${{ github.event.number }}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 56b200050f..7e362ddd82 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -42,7 +42,7 @@ Developer guidelines
Pull requests (PRs)
---------------------
-- To avoid duplicate work, create a `[WIP]` pull request as soon as possible.
+- To avoid duplicate work, create a draft pull request as soon as possible.
- Your PR must include **test coverage.** See [test/README.md][run-tests].
- Avoid cosmetic changes to unrelated files in the same commit.
- Use a [feature branch][git-feature-branch] instead of the master branch.
@@ -62,16 +62,22 @@ Pull requests (PRs)
- During a squash/fixup, use `exec make -C build unittest` between each
pick/edit/reword.
-### Stages: WIP, RFC, RDY
+### Stages: Draft and Ready for review
-Pull requests have three stages: `[WIP]` (Work In Progress), `[RFC]` (Request
-For Comment) and `[RDY]` (Ready).
+Pull requests have two stages: Draft and Ready for review.
-1. `[RFC]` is assumed by default, **do not** put "RFC" in the PR title (it adds
- noise to merge commit messages).
-2. Add `[WIP]` to the PR title if you are _not_ requesting feedback and the work
- is still in flux.
-3. Add `[RDY]` to the PR title if you are _done_ and only waiting on merge.
+1. [Create a Draft PR][pr-draft] while you are _not_ requesting feedback as
+ you are still working on the PR.
+2. [Change your PR to ready][pr-ready] when the PR is ready for review.
+
+You can convert the state of your PR back to Draft (or Ready for review) at any
+time. You can also skip the Draft stage if your PR is ready for review from the
+beginning.
+
+Do __not__ add any labels like `[RFC]` or `[WIP]` in the title to indicate the
+state of your PR: this just adds noise. Non-Draft PRs are assumed to be open
+for comments by default; if you want feedback from specific people, `@`-ping
+them in a comment.
### Commit messages
@@ -284,3 +290,5 @@ as context, use the `-W` argument as well.
[complexity:low]: https://github.com/neovim/neovim/issues?q=is%3Aopen+is%3Aissue+label%3Acomplexity%3Alow
[master error list]: https://raw.githubusercontent.com/neovim/doc/gh-pages/reports/clint/errors.json
[wiki-contribute-help]: https://github.com/neovim/neovim/wiki/contribute-%3Ahelp
+[pr-draft]: https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
+[pr-ready]: https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request
diff --git a/cmake/FindLibLUV.cmake b/cmake/FindLibLUV.cmake
index af25c2ddaa..23b62b66d3 100644
--- a/cmake/FindLibLUV.cmake
+++ b/cmake/FindLibLUV.cmake
@@ -15,7 +15,7 @@ find_path(LIBLUV_INCLUDE_DIR luv/luv.h
PATHS ${PC_LIBLUV_INCLUDEDIR} ${PC_LIBLUV_INCLUDE_DIRS})
# Explicitly look for luv.so. #10407
-list(APPEND LIBLUV_NAMES luv luv_a libluv_a luv${CMAKE_SHARED_LIBRARY_SUFFIX})
+list(APPEND LIBLUV_NAMES luv_a luv libluv_a luv${CMAKE_SHARED_LIBRARY_SUFFIX})
find_library(LIBLUV_LIBRARY NAMES ${LIBLUV_NAMES}
HINTS ${PC_LIBLUV_LIBDIR} ${PC_LIBLUV_LIBRARY_DIRS})
diff --git a/contrib/flake.nix b/contrib/flake.nix
index c601377cd0..d07067a7a1 100644
--- a/contrib/flake.nix
+++ b/contrib/flake.nix
@@ -106,9 +106,10 @@
clang-tools # for clangd to find the correct headers
];
- shellHook = ''
+ shellHook = oa.shellHook + ''
export NVIM_PYTHON_LOG_LEVEL=DEBUG
export NVIM_LOG_FILE=/tmp/nvim.log
+ export ASAN_SYMBOLIZER_PATH=${pkgs.llvm_11}/bin/llvm-symbolizer
# ASAN_OPTIONS=detect_leaks=1
export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1"
@@ -118,6 +119,10 @@
# when running the functionaltests
mkdir -p outputs/out/share/nvim/syntax
touch outputs/out/share/nvim/syntax/syntax.vim
+
+ # for treesitter functionaltests
+ mkdir -p runtime/parser
+ cp -f ${pkgs.tree-sitter.builtGrammars.tree-sitter-c}/parser runtime/parser/c.so
'';
});
});
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 6be87af8a9..aed3acab67 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -986,9 +986,9 @@ inside of strings can change! Also see 'softtabstop' option. >
*Y*
["x]Y yank [count] lines [into register x] (synonym for
- yy, |linewise|). If you like "Y" to work from the
- cursor to the end of line (which is more logical,
- but not Vi-compatible) use ":map Y y$".
+ yy, |linewise|).
+ *Y-default*
+ Mapped to "y$" by default. |default-mappings|
*zy*
["x]zy{motion} Yank {motion} text [into register x]. Only differs
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index c8a4168ab2..bb00c77ca8 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -68,12 +68,18 @@ CTRL-A Insert previously inserted text.
CTRL-W Delete the word before the cursor (see |i_backspacing| about
joining lines). See the section "word motions",
|word-motions|, for the definition of a word.
+ *i_CTRL-W-default*
+ By default, sets a new undo point before deleting.
+ |default-mappings|
*i_CTRL-U*
CTRL-U Delete all entered characters before the cursor in the current
line. If there are no newly entered characters and
'backspace' is not empty, delete all characters before the
cursor in the current line.
See |i_backspacing| about joining lines.
+ *i_CTRL-U-default*
+ By default, sets a new undo point before deleting.
+ |default-mappings|
*i_CTRL-I* *i_<Tab>* *i_Tab*
<Tab> or CTRL-I Insert a tab. If the 'expandtab' option is on, the
equivalent number of spaces is inserted (use CTRL-V <Tab> to
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt
index 7e589c095b..360c6bac75 100644
--- a/runtime/doc/lsp.txt
+++ b/runtime/doc/lsp.txt
@@ -766,15 +766,6 @@ get_log_path() *vim.lsp.get_log_path()*
Return: ~
(String) Path to logfile.
-init({client}, {bufnr}) *vim.lsp.init()*
- client_id → state
-
- state pending_change?: function that the timer starts to
- trigger didChange pending_changes: list of tables with the
- pending changesets; for incremental_sync only
- use_incremental_sync: bool buffers?: table (bufnr → lines);
- for incremental sync only timer?: uv_timer
-
omnifunc({findstart}, {base}) *vim.lsp.omnifunc()*
Implements 'omnifunc' compatible LSP completion.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index f0ce15ac0f..c3618328aa 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -3213,7 +3213,7 @@ A jump table for the options with a short description can be found at |Q_op|.
option to a valid keymap name.
*'inccommand'* *'icm'*
-'inccommand' 'icm' string (default "")
+'inccommand' 'icm' string (default "nosplit")
global
"nosplit": Shows the effects of a command incrementally, as you type.
@@ -6116,7 +6116,7 @@ A jump table for the options with a short description can be found at |Q_op|.
specify special kinds of buffers. See |special-buffers|.
*'switchbuf'* *'swb'*
-'switchbuf' 'swb' string (default "")
+'switchbuf' 'swb' string (default "uselast")
global
This option controls the behavior when switching between buffers.
Possible values (comma separated list):
@@ -6700,7 +6700,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'viewoptions'* *'vop'*
-'viewoptions' 'vop' string (default: "folds,options,cursor,curdir")
+'viewoptions' 'vop' string (default: "folds,cursor,curdir")
global
Changes the effect of the |:mkview| command. It is a comma separated
list of words. Each word enables saving and restoring something:
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index ec91b6e29a..162909ce45 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -14,6 +14,10 @@ Various commands *various*
*CTRL-L*
CTRL-L Clears and redraws the screen. The redraw may happen
later, after processing typeahead.
+ *CTRL-L-default*
+ By default, also clears search highlighting
+ |:nohlsearch| and updates diffs |:diffupdate|.
+ |default-mappings|
*:mod* *:mode*
:mod[e] Clears and redraws the screen.
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index 2c53620049..7e1bd3e087 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -56,12 +56,13 @@ the differences.
- 'sidescroll' defaults to 1
- 'smarttab' is enabled
- 'startofline' is disabled
+- 'switchbuf' defaults to "uselast"
- 'tabpagemax' defaults to 50
- 'tags' defaults to "./tags;,tags"
- 'ttimeoutlen' defaults to 50
- 'ttyfast' is always set
-- 'viewoptions' includes "unix,slash"
- 'undodir' defaults to ~/.local/share/nvim/undo (|xdg|), auto-created
+- 'viewoptions' includes "unix,slash", excludes "options"
- 'viminfo' includes "!"
- 'wildmenu' is enabled
- 'wildoptions' defaults to "pum,tagfile"
@@ -72,6 +73,14 @@ the differences.
- |g:vimsyn_embed| defaults to "l" to enable Lua highlighting
+
+Default Mappings: *default-mappings*
+
+nnoremap Y y$
+nnoremap <C-L> <Cmd>nohlsearch<Bar>diffupdate<CR><C-L>
+inoremap <C-U> <C-G>u<C-U>
+inoremap <C-W> <C-G>u<C-W>
+
==============================================================================
3. New Features *nvim-features*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index f012c7cb4b..9c75a49ac1 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -870,6 +870,9 @@ au BufNewFile,BufRead *.ipynb setf json
" JSONC
au BufNewFile,BufRead *.jsonc setf jsonc
+" Julia
+au BufNewFile,BufRead *.jl setf julia
+
" Kixtart
au BufNewFile,BufRead *.kix setf kix
diff --git a/runtime/ftplugin/julia.vim b/runtime/ftplugin/julia.vim
new file mode 100644
index 0000000000..32e364e436
--- /dev/null
+++ b/runtime/ftplugin/julia.vim
@@ -0,0 +1,92 @@
+" Vim filetype plugin file
+" Language: Julia
+" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
+" Homepage: https://github.com/JuliaEditorSupport/julia-vim
+" Last Change: 2014 may 29
+" adapted from upstream 2021 Aug 4
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:save_cpo = &cpo
+set cpo-=C
+
+setlocal include=^\\s*\\%(reload\\\|include\\)\\>
+setlocal suffixesadd=.jl
+setlocal comments=:#
+setlocal commentstring=#\ %s
+setlocal cinoptions+=#1
+setlocal define=^\\s*macro\\>
+setlocal fo-=t fo+=croql
+
+let b:julia_vim_loaded = 1
+
+let b:undo_ftplugin = "setlocal include< suffixesadd< comments< commentstring<"
+ \ . " define< fo< shiftwidth< expandtab< indentexpr< indentkeys< cinoptions< completefunc<"
+ \ . " | unlet! b:julia_vim_loaded"
+
+" MatchIt plugin support
+if exists("loaded_matchit")
+ let b:match_ignorecase = 0
+
+ " note: begin_keywords must contain all blocks, in order
+ " for nested-structures-skipping to work properly
+ " note: 'mutable struct' and 'struct' are defined separately because
+ " using \? puts the cursor on 'struct' instead of 'mutable' for some reason
+ let b:julia_begin_keywords = '\%(\.\s*\|@\)\@<!\<\%(function\|macro\|begin\|mutable\s\+struct\|\%(mutable\s\+\)\@<!struct\|\%(abstract\|primitive\)\s\+type\|let\|do\|\%(bare\)\?module\|quote\|if\|for\|while\|try\)\>'
+ " note: the following regex not only recognizes macros, but also local/global keywords.
+ " the purpose is recognizing things like `@inline myfunction()`
+ " or `global myfunction(...)` etc, for matchit and block movement functionality
+ let s:macro_regex = '\%(@\%([#(]\@!\S\)\+\|\<\%(local\|global\)\)\s\+'
+ let s:nomacro = '\%(' . s:macro_regex . '\)\@<!'
+ let s:yesmacro = s:nomacro . '\%('. s:macro_regex . '\)\+'
+ let b:julia_begin_keywordsm = '\%(' . s:yesmacro . b:julia_begin_keywords . '\)\|'
+ \ . '\%(' . s:nomacro . b:julia_begin_keywords . '\)'
+ let b:julia_end_keywords = '\<end\>'
+
+ " note: this function relies heavily on the syntax file
+ function! JuliaGetMatchWords()
+ let [l,c] = [line('.'),col('.')]
+ let attr = synIDattr(synID(l, c, 1),"name")
+ let c1 = c
+ while attr == 'juliaMacro' || expand('<cword>') =~# '\<\%(global\|local\)\>'
+ normal! W
+ if line('.') > l || col('.') == c1
+ call cursor(l, c)
+ return ''
+ endif
+ let attr = synIDattr(synID(l, col('.'), 1),"name")
+ let c1 = col('.')
+ endwhile
+ call cursor(l, c)
+ if attr == 'juliaConditional'
+ return b:julia_begin_keywordsm . ':\<\%(elseif\|else\)\>:' . b:julia_end_keywords
+ elseif attr =~# '\<\%(juliaRepeat\|juliaRepKeyword\)\>'
+ return b:julia_begin_keywordsm . ':\<\%(break\|continue\)\>:' . b:julia_end_keywords
+ elseif attr == 'juliaBlKeyword'
+ return b:julia_begin_keywordsm . ':' . b:julia_end_keywords
+ elseif attr == 'juliaException'
+ return b:julia_begin_keywordsm . ':\<\%(catch\|finally\)\>:' . b:julia_end_keywords
+ endif
+ return '\<\>:\<\>'
+ endfunction
+
+ let b:match_words = 'JuliaGetMatchWords()'
+
+ " we need to skip everything within comments, strings and
+ " the 'begin' and 'end' keywords when they are used as a range rather than as
+ " the delimiter of a block
+ let b:match_skip = 'synIDattr(synID(line("."),col("."),0),"name") =~# '
+ \ . '"\\<julia\\%(Comprehension\\%(For\\|If\\)\\|RangeKeyword\\|Comment\\%([LM]\\|Delim\\)\\|\\%([bs]\\|Shell\\|Printf\\|Doc\\)\\?String\\|StringPrefixed\\|DocStringM\\(Raw\\)\\?\\|RegEx\\|SymbolS\\?\\|Dotted\\)\\>"'
+
+ let b:undo_ftplugin = b:undo_ftplugin
+ \ . " | unlet! b:match_words b:match_skip b:match_ignorecase"
+ \ . " | unlet! b:julia_begin_keywords b:julia_end_keywords"
+ \ . " | delfunction JuliaGetMatchWords"
+
+endif
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/runtime/indent/julia.vim b/runtime/indent/julia.vim
new file mode 100644
index 0000000000..a90cff49e4
--- /dev/null
+++ b/runtime/indent/julia.vim
@@ -0,0 +1,491 @@
+" Vim indent file
+" Language: Julia
+" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
+" Homepage: https://github.com/JuliaEditorSupport/julia-vim
+" Last Change: 2016 jun 16
+" Notes: originally based on Bram Molenaar's indent file for vim
+
+setlocal autoindent
+
+setlocal indentexpr=GetJuliaIndent()
+setlocal indentkeys+==end,=else,=catch,=finally,),],}
+setlocal indentkeys-=0#
+setlocal indentkeys-=:
+setlocal indentkeys-=0{
+setlocal indentkeys-=0}
+setlocal nosmartindent
+
+" Only define the function once.
+if exists("*GetJuliaIndent")
+ finish
+endif
+
+let s:skipPatternsBasic = '\<julia\%(Comment\%([LM]\|Delim\)\)\>'
+let s:skipPatterns = '\<julia\%(Comprehension\%(For\|If\)\|RangeKeyword\|Comment\%([LM]\|Delim\)\|\%([bs]\|Shell\|Printf\|Doc\)\?String\|StringPrefixed\|DocStringM\(Raw\)\?\|RegEx\|SymbolS\?\|Macro\|Dotted\)\>'
+
+function JuliaMatch(lnum, str, regex, st, ...)
+ let s = a:st
+ let e = a:0 > 0 ? a:1 : -1
+ let basic_skip = a:0 > 1 ? a:2 : 'all'
+ let skip = basic_skip ==# 'basic' ? s:skipPatternsBasic : s:skipPatterns
+ while 1
+ let f = match(a:str, '\C' . a:regex, s)
+ if e >= 0 && f >= e
+ return -1
+ endif
+ if f >= 0
+ let attr = synIDattr(synID(a:lnum,f+1,1),"name")
+ let attrT = synIDattr(synID(a:lnum,f+1,0),"name")
+ if attr =~# skip || attrT =~# skip
+ let s = f+1
+ continue
+ endif
+ endif
+ break
+ endwhile
+ return f
+endfunction
+
+function GetJuliaNestingStruct(lnum, ...)
+ " Auxiliary function to inspect the block structure of a line
+ let line = getline(a:lnum)
+ let s = a:0 > 0 ? a:1 : 0
+ let e = a:0 > 1 ? a:2 : -1
+ let blocks_stack = []
+ let num_closed_blocks = 0
+ while 1
+ let fb = JuliaMatch(a:lnum, line, '\<\%(if\|else\%(if\)\?\|while\|for\|try\|catch\|finally\|\%(staged\)\?function\|macro\|begin\|mutable\s\+struct\|\%(mutable\s\+\)\@<!struct\|\%(abstract\|primitive\)\s\+type\|let\|\%(bare\)\?module\|quote\|do\)\>', s, e)
+ let fe = JuliaMatch(a:lnum, line, '\<end\>', s, e)
+
+ if fb < 0 && fe < 0
+ " No blocks found
+ break
+ end
+
+ if fb >= 0 && (fb < fe || fe < 0)
+ " The first occurrence is an opening block keyword
+ " Note: some keywords (elseif,else,catch,finally) are both
+ " closing blocks and opening new ones
+
+ let i = JuliaMatch(a:lnum, line, '\<if\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ call add(blocks_stack, 'if')
+ continue
+ endif
+ let i = JuliaMatch(a:lnum, line, '\<elseif\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ if len(blocks_stack) > 0 && blocks_stack[-1] == 'if'
+ let blocks_stack[-1] = 'elseif'
+ elseif (len(blocks_stack) > 0 && blocks_stack[-1] != 'elseif') || len(blocks_stack) == 0
+ call add(blocks_stack, 'elseif')
+ let num_closed_blocks += 1
+ endif
+ continue
+ endif
+ let i = JuliaMatch(a:lnum, line, '\<else\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(else\)\=if\>'
+ let blocks_stack[-1] = 'else'
+ else
+ call add(blocks_stack, 'else')
+ let num_closed_blocks += 1
+ endif
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '\<try\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ call add(blocks_stack, 'try')
+ continue
+ endif
+ let i = JuliaMatch(a:lnum, line, '\<catch\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ if len(blocks_stack) > 0 && blocks_stack[-1] == 'try'
+ let blocks_stack[-1] = 'catch'
+ else
+ call add(blocks_stack, 'catch')
+ let num_closed_blocks += 1
+ endif
+ continue
+ endif
+ let i = JuliaMatch(a:lnum, line, '\<finally\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ if len(blocks_stack) > 0 && (blocks_stack[-1] == 'try' || blocks_stack[-1] == 'catch')
+ let blocks_stack[-1] = 'finally'
+ else
+ call add(blocks_stack, 'finally')
+ let num_closed_blocks += 1
+ endif
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '\<\%(bare\)\?module\>', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ if i == 0
+ call add(blocks_stack, 'col1module')
+ else
+ call add(blocks_stack, 'other')
+ endif
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '\<\%(while\|for\|function\|macro\|begin\|\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\|let\|quote\|do\)\>', s)
+ if i >= 0 && i == fb
+ if match(line, '\C\<\%(mutable\|abstract\|primitive\)', i) != -1
+ let s = i+11
+ else
+ let s = i+1
+ endif
+ call add(blocks_stack, 'other')
+ continue
+ endif
+
+ " Note: it should be impossible to get here
+ break
+
+ else
+ " The first occurrence is an 'end'
+
+ let s = fe+1
+ if len(blocks_stack) == 0
+ let num_closed_blocks += 1
+ else
+ call remove(blocks_stack, -1)
+ endif
+ continue
+
+ endif
+
+ " Note: it should be impossible to get here
+ break
+ endwhile
+ let num_open_blocks = len(blocks_stack) - count(blocks_stack, 'col1module')
+ return [num_open_blocks, num_closed_blocks]
+endfunction
+
+function GetJuliaNestingBrackets(lnum, c)
+ " Auxiliary function to inspect the brackets structure of a line
+ let line = getline(a:lnum)[0 : (a:c - 1)]
+ let s = 0
+ let brackets_stack = []
+ let last_closed_bracket = -1
+ while 1
+ let fb = JuliaMatch(a:lnum, line, '[([{]', s)
+ let fe = JuliaMatch(a:lnum, line, '[])}]', s)
+
+ if fb < 0 && fe < 0
+ " No brackets found
+ break
+ end
+
+ if fb >= 0 && (fb < fe || fe < 0)
+ " The first occurrence is an opening bracket
+
+ let i = JuliaMatch(a:lnum, line, '(', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ call add(brackets_stack, ['par',i])
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '\[', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ call add(brackets_stack, ['sqbra',i])
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '{', s)
+ if i >= 0 && i == fb
+ let s = i+1
+ call add(brackets_stack, ['curbra',i])
+ continue
+ endif
+
+ " Note: it should be impossible to get here
+ break
+
+ else
+ " The first occurrence is a closing bracket
+
+ let i = JuliaMatch(a:lnum, line, ')', s)
+ if i >= 0 && i == fe
+ let s = i+1
+ if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'par'
+ call remove(brackets_stack, -1)
+ else
+ let last_closed_bracket = i + 1
+ endif
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, ']', s)
+ if i >= 0 && i == fe
+ let s = i+1
+ if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'sqbra'
+ call remove(brackets_stack, -1)
+ else
+ let last_closed_bracket = i + 1
+ endif
+ continue
+ endif
+
+ let i = JuliaMatch(a:lnum, line, '}', s)
+ if i >= 0 && i == fe
+ let s = i+1
+ if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'curbra'
+ call remove(brackets_stack, -1)
+ else
+ let last_closed_bracket = i + 1
+ endif
+ continue
+ endif
+
+ " Note: it should be impossible to get here
+ break
+
+ endif
+
+ " Note: it should be impossible to get here
+ break
+ endwhile
+ let first_open_bracket = -1
+ let last_open_bracket = -1
+ let infuncargs = 0
+ if len(brackets_stack) > 0
+ let first_open_bracket = brackets_stack[0][1]
+ let last_open_bracket = brackets_stack[-1][1]
+ if brackets_stack[-1][0] == 'par' && IsFunctionArgPar(a:lnum, last_open_bracket+1)
+ let infuncargs = 1
+ endif
+ endif
+ return [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs]
+endfunction
+
+let s:bracketBlocks = '\<julia\%(\%(\%(Printf\)\?Par\|SqBra\%(Idx\)\?\|CurBra\)Block\|ParBlockInRange\|StringVars\%(Par\|SqBra\|CurBra\)\|Dollar\%(Par\|SqBra\)\|QuotedParBlockS\?\)\>'
+
+function IsInBrackets(lnum, c)
+ let stack = map(synstack(a:lnum, a:c), 'synIDattr(v:val, "name")')
+ call filter(stack, 'v:val =~# s:bracketBlocks')
+ return len(stack) > 0
+endfunction
+
+function IsInDocString(lnum)
+ let stack = map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
+ call filter(stack, 'v:val =~# "\\<juliaDocString\\(Delim\\|M\\\(Raw\\)\\?\\)\\?\\>"')
+ return len(stack) > 0
+endfunction
+
+function IsInContinuationImportLine(lnum)
+ let stack = map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
+ call filter(stack, 'v:val =~# "\\<juliaImportLine\\>"')
+ if len(stack) == 0
+ return 0
+ endif
+ return JuliaMatch(a:lnum, getline(a:lnum), '\<\%(import\|using\|export\)\>', indent(a:lnum)) == -1
+endfunction
+
+function IsFunctionArgPar(lnum, c)
+ if a:c == 0
+ return 0
+ endif
+ let stack = map(synstack(a:lnum, a:c-1), 'synIDattr(v:val, "name")')
+ return len(stack) >= 2 && stack[-2] ==# 'juliaFunctionDef'
+endfunction
+
+function JumpToMatch(lnum, last_closed_bracket)
+ " we use the % command to skip back (tries to ues matchit if possible,
+ " otherwise resorts to vim's default, which is buggy but better than
+ " nothing)
+ call cursor(a:lnum, a:last_closed_bracket)
+ let percmap = maparg("%", "n")
+ if exists("g:loaded_matchit") && percmap =~# 'Match\%(it\|_wrapper\)'
+ normal %
+ else
+ normal! %
+ end
+endfunction
+
+" Auxiliary function to find a line which does not start in the middle of a
+" multiline bracketed expression, to be used as reference for block
+" indentation.
+function LastBlockIndent(lnum)
+ let lnum = a:lnum
+ let ind = 0
+ while lnum > 0
+ let ind = indent(lnum)
+ if ind == 0
+ return [lnum, 0]
+ endif
+ if !IsInBrackets(lnum, 1)
+ break
+ endif
+ let lnum = prevnonblank(lnum - 1)
+ endwhile
+ return [max([lnum,1]), ind]
+endfunction
+
+function GetJuliaIndent()
+ " Do not alter doctrings indentation
+ if IsInDocString(v:lnum)
+ return -1
+ endif
+
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " At the start of the file use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let ind = -1
+ let st = -1
+ let lim = -1
+
+ " Multiline bracketed expressions take precedence
+ let align_brackets = get(g:, "julia_indent_align_brackets", 1)
+ let align_funcargs = get(g:, "julia_indent_align_funcargs", 0)
+ let c = len(getline(lnum)) + 1
+ while IsInBrackets(lnum, c)
+ let [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs] = GetJuliaNestingBrackets(lnum, c)
+
+ " First scenario: the previous line has a hanging open bracket:
+ " set the indentation to match the opening bracket (plus an extra space)
+ " unless we're in a function arguments list or alignment is disabled, in
+ " which case we just add an extra indent
+ if last_open_bracket != -1
+ if (!infuncargs && align_brackets) || (infuncargs && align_funcargs)
+ let st = last_open_bracket
+ let ind = virtcol([lnum, st + 1])
+ else
+ let ind = indent(lnum) + shiftwidth()
+ endif
+
+ " Second scenario: some multiline bracketed expression was closed in the
+ " previous line. But since we know we are still in a bracketed expression,
+ " we need to find the line where the bracket was opened
+ elseif last_closed_bracket != -1
+ call JumpToMatch(lnum, last_closed_bracket)
+ if line(".") == lnum
+ " something wrong here, give up
+ let ind = indent(lnum)
+ else
+ let lnum = line(".")
+ let c = col(".") - 1
+ if c == 0
+ " uhm, give up
+ let ind = 0
+ else
+ " we skipped a bracket set, keep searching for an opening bracket
+ let lim = c
+ continue
+ endif
+ endif
+
+ " Third scenario: nothing special: keep the indentation
+ else
+ let ind = indent(lnum)
+ endif
+
+ " Does the current line start with a closing bracket? Then depending on
+ " the situation we align it with the opening one, or we let the rest of
+ " the code figure it out (the case in which we're closing a function
+ " argument list is special-cased)
+ if JuliaMatch(v:lnum, getline(v:lnum), '[])}]', indent(v:lnum)) == indent(v:lnum) && ind > 0
+ if !align_brackets && !align_funcargs
+ call JumpToMatch(v:lnum, indent(v:lnum))
+ return indent(line("."))
+ elseif (align_brackets && getline(v:lnum)[indent(v:lnum)] != ')') || align_funcargs
+ return ind - 1
+ else " must be a ')' and align_brackets==1 and align_funcargs==0
+ call JumpToMatch(v:lnum, indent(v:lnum))
+ if IsFunctionArgPar(line("."), col("."))
+ let ind = -1
+ else
+ return ind - 1
+ endif
+ endif
+ endif
+
+ break
+ endwhile
+
+ if ind == -1
+ " We are not in a multiline bracketed expression. Thus we look for a
+ " previous line to use as a reference
+ let [lnum,ind] = LastBlockIndent(lnum)
+ let c = len(getline(lnum)) + 1
+ if IsInBrackets(lnum, c)
+ let [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs] = GetJuliaNestingBrackets(lnum, c)
+ let lim = first_open_bracket
+ endif
+ end
+
+ " Analyse the reference line
+ let [num_open_blocks, num_closed_blocks] = GetJuliaNestingStruct(lnum, st, lim)
+ " Increase indentation for each newly opened block in the reference line
+ let ind += shiftwidth() * num_open_blocks
+
+ " Analyse the current line
+ let [num_open_blocks, num_closed_blocks] = GetJuliaNestingStruct(v:lnum)
+ " Decrease indentation for each closed block in the current line
+ let ind -= shiftwidth() * num_closed_blocks
+
+ " Additional special case: multiline import/using/export statements
+
+ let prevline = getline(lnum)
+ " Are we in a multiline import/using/export statement, right below the
+ " opening line?
+ if IsInContinuationImportLine(v:lnum) && !IsInContinuationImportLine(lnum)
+ if get(g:, 'julia_indent_align_import', 1)
+ " if the opening line has a colon followed by non-comments, use it as
+ " reference point
+ let cind = JuliaMatch(lnum, prevline, ':', indent(lnum), lim)
+ if cind >= 0
+ let nonwhiteind = JuliaMatch(lnum, prevline, '\S', cind+1, -1, 'basic')
+ if nonwhiteind >= 0
+ " return match(prevline, '\S', cind+1) " a bit overkill...
+ return cind + 2
+ endif
+ else
+ " if the opening line is not a naked import/using/export statement, use
+ " it as reference
+ let iind = JuliaMatch(lnum, prevline, '\<import\|using\|export\>', indent(lnum), lim)
+ if iind >= 0
+ " assuming whitespace after using... so no `using(XYZ)` please!
+ let nonwhiteind = JuliaMatch(lnum, prevline, '\S', iind+6, -1, 'basic')
+ if nonwhiteind >= 0
+ return match(prevline, '\S', iind+6)
+ endif
+ endif
+ endif
+ endif
+ let ind += shiftwidth()
+
+ " Or did we just close a multiline import/using/export statement?
+ elseif !IsInContinuationImportLine(v:lnum) && IsInContinuationImportLine(lnum)
+ " find the starting line of the statement
+ let ilnum = 0
+ for iln in range(lnum-1, 1, -1)
+ if !IsInContinuationImportLine(iln)
+ let ilnum = iln
+ break
+ endif
+ endfor
+ if ilnum == 0
+ " something went horribly wrong, give up
+ let ind = indent(lnum)
+ endif
+ let ind = indent(ilnum)
+ endif
+
+ return ind
+endfunction
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
index 87ecc3eeea..76d5cd1a3e 100644
--- a/runtime/lua/vim/lsp.lua
+++ b/runtime/lua/vim/lsp.lua
@@ -289,6 +289,7 @@ end
local changetracking = {}
do
+ --@private
--- client_id → state
---
--- state
diff --git a/runtime/syntax/julia.vim b/runtime/syntax/julia.vim
new file mode 100644
index 0000000000..2c2d36a97a
--- /dev/null
+++ b/runtime/syntax/julia.vim
@@ -0,0 +1,550 @@
+" Vim syntax file
+" Language: julia
+" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
+" Homepage: https://github.com/JuliaEditorSupport/julia-vim
+" Last Change: 2013 feb 11
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if version < 704
+ " this is used to disable regex syntax like `\@3<='
+ " on older vim versions
+ function! s:d(x)
+ return ''
+ endfunction
+else
+ function! s:d(x)
+ return string(a:x)
+ endfunction
+endif
+
+scriptencoding utf-8
+
+let s:julia_spellcheck_strings = get(g:, "julia_spellcheck_strings", 0)
+let s:julia_spellcheck_docstrings = get(g:, "julia_spellcheck_docstrings", 1)
+let s:julia_spellcheck_comments = get(g:, "julia_spellcheck_comments", 1)
+
+let s:julia_highlight_operators = get(g:, "julia_highlight_operators", 1)
+
+" List of characters, up to \UFF, which cannot be used in identifiers.
+" (It includes operator characters; we don't consider them identifiers.)
+" This is used mostly in lookbehinds with `\@<=`, e.g. when we need to check
+" that that we're not in the middle of an identifier.
+" It doesn't include a few characters (spaces and all closing parentheses)
+" because those may or may not be valid in the lookbehind on a case-by-case
+" basis.
+let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F'
+ \ . '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B-\U5E' . '\U60' . '\U7B\U7C'
+ \ . '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'
+
+" The complete list
+let s:nonidS_chars = '[:space:])\U5D}' . s:nonid_chars
+
+
+" List of all valid operator chars up to \UFF (NOTE: they must all be included
+" in s:nonidS_chars, so that if we include that, then this is redundant)
+" It does not include '!' since it can be used in an identifier.
+" The list contains the following characters: '%&*+-/<=>\\^|~¬±×÷'
+let s:op_chars = '\U25\U26\U2A\U2B\U2D\U2F\U3C-\U3E\U5C\U5E\U7C\U7E\UAC\UB1\UD7\UF7'
+
+" List of all valid operator chars above \UFF
+" Written with ranges for performance reasons
+" The list contains the following characters: '…⁝⅋←↑→↓↔↚↛↜↝↞↠↢↣↤↦↩↪↫↬↮↶↷↺↻↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇍⇎⇏⇐⇒⇔⇚⇛⇜⇝⇠⇢⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿∈∉∊∋∌∍∓∔∗∘∙√∛∜∝∤∥∦∧∨∩∪∷∸∺∻∽∾≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡⊢⊣⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⊻⊼⊽⋄⋅⋆⋇⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌿▷⟂⟈⟉⟑⟒⟕⟖⟗⟰⟱⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⦷⦸⦼⦾⦿⧀⧁⧡⧣⧤⧥⧴⧶⧷⧺⧻⨇⨈⨝⨟⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨰⨱⨲⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼⨽⩀⩁⩂⩃⩄⩅⩊⩋⩌⩍⩎⩏⩐⩑⩒⩓⩔⩕⩖⩗⩘⩚⩛⩜⩝⩞⩟⩠⩡⩢⩣⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫛⫷⫸⫹⫺⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←↑→↓'
+let s:op_chars_wc = '\U2026\U205D\U214B\U2190-\U2194\U219A-\U219E\U21A0\U21A2-\U21A4\U21A6\U21A9-\U21AC\U21AE\U21B6\U21B7\U21BA-\U21BD\U21C0\U21C1\U21C4\U21C6\U21C7\U21C9\U21CB-\U21D0\U21D2\U21D4\U21DA-\U21DD\U21E0\U21E2\U21F4-\U21FF\U2208-\U220D\U2213\U2214\U2217-\U221D\U2224-\U222A\U2237\U2238\U223A\U223B\U223D\U223E\U2240-\U228B\U228D-\U229C\U229E-\U22A3\U22A9\U22AC\U22AE\U22B0-\U22B7\U22BB-\U22BD\U22C4-\U22C7\U22C9-\U22D3\U22D5-\U22FF\U233F\U25B7\U27C2\U27C8\U27C9\U27D1\U27D2\U27D5-\U27D7\U27F0\U27F1\U27F5-\U27F7\U27F9-\U27FF\U2900-\U2918\U291D-\U2920\U2944-\U2970\U29B7\U29B8\U29BC\U29BE-\U29C1\U29E1\U29E3-\U29E5\U29F4\U29F6\U29F7\U29FA\U29FB\U2A07\U2A08\U2A1D\U2A1F\U2A22-\U2A2E\U2A30-\U2A3D\U2A40-\U2A45\U2A4A-\U2A58\U2A5A-\U2A63\U2A66\U2A67\U2A6A-\U2AD9\U2ADB\U2AF7-\U2AFA\U2B30-\U2B44\U2B47-\U2B4C\UFFE9-\UFFEC'
+
+" Full operators regex
+let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?=' .
+ \ '\|' . '[:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?' .
+ \ '\|' . '\.\?[!' . s:op_chars . s:op_chars_wc . ']' .
+ \ '\)'
+
+
+" Characters that can be used to start an identifier. Above \UBF we don't
+" bother checking. (If a UTF8 operator is used, it will take precedence anyway.)
+let s:id_charsH = '\%([A-Za-z_\UA2-\UA6\UA9\UAA\UAE\UB0\UB5\UBA]\|[^\U00-\UBF]\)'
+" Characters that can appear in an identifier, starting in 2nd position. Above
+" \UBF we check for operators since we need to stop the identifier if one
+" appears. We don't check for invalid characters though.
+let s:id_charsW = '\%([0-9A-Za-z_!\UA2-\UA6\UA9\UAA\UAE-\UB0\UB2-\UB5\UB8-\UBA\UBC-\UBE]\|[^\U00-\UBF]\@=[^' . s:op_chars_wc . ']\)'
+
+" A valid julia identifier, more or less
+let s:idregex = '\%(' . s:id_charsH . s:id_charsW . '*\)'
+
+
+
+syn case match
+
+syntax cluster juliaExpressions contains=@juliaParItems,@juliaStringItems,@juliaKeywordItems,@juliaBlocksItems,@juliaTypesItems,@juliaConstItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaNumberItems,@juliaCommentItems,@juliaErrorItems,@juliaSyntaxRegions
+syntax cluster juliaExprsPrintf contains=@juliaExpressions,@juliaPrintfItems
+syntax cluster juliaExprsNodot contains=@juliaParItems,@juliaStringItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaCommentItems,juliaIdSymbol
+
+syntax cluster juliaParItems contains=juliaParBlock,juliaSqBraIdxBlock,juliaSqBraBlock,juliaCurBraBlock,juliaQuotedParBlock,juliaQuotedQMarkPar
+syntax cluster juliaKeywordItems contains=juliaKeyword,juliaWhereKeyword,juliaImportLine,juliaInfixKeyword,juliaRepKeyword
+syntax cluster juliaBlocksItems contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaTypeBlock,juliaImmutableBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock
+syntax cluster juliaTypesItems contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther
+
+syntax cluster juliaConstItems contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric,juliaConstIO,juliaPossibleEuler
+
+syntax cluster juliaMacroItems contains=juliaPossibleMacro,juliaDollarVar,juliaDollarPar,juliaDollarSqBra
+syntax cluster juliaSymbolItems contains=juliaPossibleSymbol
+syntax cluster juliaNumberItems contains=juliaNumbers
+syntax cluster juliaStringItems contains=juliaChar,juliaString,juliabString,juliasString,juliaShellString,juliaDocString,juliaRegEx
+syntax cluster juliaPrintfItems contains=juliaPrintfParBlock,juliaPrintfString
+syntax cluster juliaOperatorItems contains=juliaOperator,juliaRangeOperator,juliaCTransOperator,juliaTernaryRegion,juliaColon,juliaSemicolon,juliaComma
+syntax cluster juliaCommentItems contains=juliaCommentL,juliaCommentM
+syntax cluster juliaErrorItems contains=juliaErrorPar,juliaErrorEnd,juliaErrorElse,juliaErrorCatch,juliaErrorFinally
+
+syntax cluster juliaSyntaxRegions contains=juliaIdSymbol,juliaTypeOperatorR2,juliaTypeOperatorR3,juliaWhereR,juliaDotted
+
+syntax cluster juliaSpellcheckStrings contains=@spell
+syntax cluster juliaSpellcheckDocStrings contains=@spell
+syntax cluster juliaSpellcheckComments contains=@spell
+
+if !s:julia_spellcheck_docstrings
+ syntax cluster juliaSpellcheckDocStrings remove=@spell
+endif
+if !s:julia_spellcheck_strings
+ syntax cluster juliaSpellcheckStrings remove=@spell
+endif
+if !s:julia_spellcheck_comments
+ syntax cluster juliaSpellcheckComments remove=@spell
+endif
+
+syntax match juliaSemicolon display ";"
+syntax match juliaComma display ","
+syntax match juliaColon display ":"
+
+" A dot can introduce a sort of 'environment' such that words after it are not
+" recognized as keywords. This has low precedence so that it can be overridden
+" by operators
+syntax match juliaDotted transparent "\.\s*[^])}.]" contains=@juliaExprsNodot
+syntax match juliaDottedT contained transparent "\.\s*[^])}.]" contains=@juliaExprsNodot,juliaType
+
+syntax match juliaErrorPar display "[])}]"
+syntax match juliaErrorEnd display "\<end\>"
+syntax match juliaErrorElse display "\<\%(else\|elseif\)\>"
+syntax match juliaErrorCatch display "\<catch\>"
+syntax match juliaErrorFinally display "\<finally\>"
+syntax match juliaErrorSemicol display contained ";"
+
+syntax region juliaParBlock matchgroup=juliaParDelim start="(" end=")" contains=@juliaExpressions,juliaComprehensionFor
+syntax region juliaParBlockInRange matchgroup=juliaParDelim contained start="(" end=")" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor
+syntax region juliaSqBraIdxBlock matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS
+exec 'syntax region juliaSqBraBlock matchgroup=juliaParDelim start="\%(^\|\s\|' . s:operators . '\)\@'.s:d(3).'<=\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS'
+syntax region juliaCurBraBlock matchgroup=juliaParDelim start="{" end="}" contains=juliaType,juliaDottedT,@juliaExpressions
+
+exec 'syntax match juliaType contained "\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+" This is a generic identifier followed by some symbol, either a type
+" operator (<: or >:), or an open parenthesis, or an open curly bracket.
+" It's used to recognize one of the contained regions looking for identifiers
+" only once. Once recognized, those regions no longer need to use the
+" expensive s:idregex.
+exec 'syntax match juliaIdSymbol transparent "' . s:idregex . '\%(\s*[<>]:\|\.\?(\|{\|\"\)\@=" contains=juliaFunctionCall,juliaParamType,juliaStringPrefixed,juliaTypeOperatorR1'
+
+syntax match juliaFunctionCall contained "[^{([:space:]<>\"]\+(\@=" nextgroup=juliaParBlock
+
+exec 'syntax match juliaFunctionDef contained transparent "\%(\<\%(function\|macro\)\)\@'.s:d(8).'<=\s\+\zs' . s:idregex . '\%(\.' . s:idregex . '\)*\ze\s*\%((\|\send\>\|$\)" contains=juliaFunctionName'
+exec 'syntax match juliaFunctionName contained "\%(\<\%(function\|macro\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+exec 'syntax match juliaStructR contained transparent "\%(\<\%(\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*' . s:idregex . '\>\(\s*(\)\@!" contains=juliaType'
+
+syntax match juliaKeyword display "\<\%(return\|local\|global\|const\)\>"
+syntax match juliaInfixKeyword display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!"
+
+" The import/export/using keywords introduce a sort of special parsing
+" environment with its own rules
+exec 'syntax region juliaImportLine matchgroup=juliaKeyword excludenl start="\<\%(import\|using\|export\)\>" skip="\%(\%(\<\%(import\|using\|export\)\>\)\|^\)\@'.s:d(6).'<=$" end="$" end="\%([])}]\)\@=" contains=@juliaExpressions,juliaAsKeyword,@juliaContinuationItems,juliaMacroName'
+syntax match juliaAsKeyword display contained "\<as\>"
+
+syntax match juliaRepKeyword display "\<\%(break\|continue\)\>"
+syntax region juliaConditionalBlock matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold
+syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock
+syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region juliaWhileBlock matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaForBlock matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold
+syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaStructBlock matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="\<mutable\s\+struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region juliaLetBlock matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaDoBlock matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaModuleBlock matchgroup=juliaBlKeyword start="\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaExceptionBlock matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold
+syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock
+syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="\<abstract\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="\<primitive\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+
+exec 'syntax region juliaComprehensionFor matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'
+syntax match juliaComprehensionIf contained "\<if\>"
+
+exec 'syntax match juliaOuter contained "\<outer\ze\s\+' . s:idregex . '\>"'
+
+syntax match juliaRangeKeyword contained "\<\%(begin\|end\)\>"
+
+syntax match juliaBaseTypeBasic display "\<\%(\%(N\|Named\)\?Tuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\|Nothing\|Some\|Missing\)\>"
+syntax match juliaBaseTypeNum display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|\%(Abstract\)\?Irrational\|Enum\|BigInt\|BigFloat\|MathConst\|ComplexF\%(16\|32\|64\)\)\>"
+syntax match juliaBaseTypeC display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\|void\)\)\>"
+syntax match juliaBaseTypeError display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|ReadOnlyMemory\|StringIndex\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Missing\|\%(Process\|Task\)Failed\)Exception\|DimensionMismatch\|SegmentationFault\)\>"
+syntax match juliaBaseTypeIter display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\|CartesianIndices\)\>"
+syntax match juliaBaseTypeString display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\|Substitution\)\?String\>"
+syntax match juliaBaseTypeArray display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|\%(Sparse\|Row\)Vector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>"
+syntax match juliaBaseTypeDict display "\<\%(WeakKey\|Id\|Abstract\)\?Dict\>"
+syntax match juliaBaseTypeSet display "\<\%(\%(Abstract\|Bit\)\?Set\)\>"
+syntax match juliaBaseTypeIO display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\|GenericIOBuffer\)\>"
+syntax match juliaBaseTypeProcess display "\<\%(Pipe\|Cmd\|PipeBuffer\)\>"
+syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Abstract\|Lin\|Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>"
+syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>"
+syntax match juliaBaseTypeFact display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"
+syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"
+syntax match juliaBaseTypeRound display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"
+syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>"
+syntax match juliaBaseTypeRandom display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>"
+syntax match juliaBaseTypeDisplay display "\<\%(Text\(Display\)\?\|\%(Abstract\)\?Display\|MIME\|HTML\)\>"
+syntax match juliaBaseTypeTime display "\<\%(Date\%(Time\)\?\|DateFormat\)\>"
+syntax match juliaBaseTypeOther display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"
+
+syntax match juliaConstNum display "\%(\<\%(\%(NaN\|Inf\)\%(16\|32\|64\)\?\|pi\|π\)\>\)"
+" Note: recognition of ℯ, which Vim does not consider a valid identifier, is
+" complicated. We detect possible uses by just looking for the character (for
+" performance) and then check that it's actually used by its own.
+" (This also tries to detect preceding number constants; it does so in a crude
+" way.)
+syntax match juliaPossibleEuler "ℯ" contains=juliaEuler
+exec 'syntax match juliaEuler contained "\%(\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\%(.\?[0-9][.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze[' . s:nonidS_chars . s:op_chars_wc . ']"'
+syntax match juliaConstBool display "\<\%(true\|false\)\>"
+syntax match juliaConstEnv display "\<\%(ARGS\|ENV\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|PROGRAM_FILE\|DEPOT_PATH\)\>"
+syntax match juliaConstIO display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"
+syntax match juliaConstC display "\<\%(C_NULL\)\>"
+syntax match juliaConstGeneric display "\<\%(nothing\|Main\|undef\|missing\)\>"
+
+syntax match juliaParamType contained "[^{([:space:]<>\"]\+\ze{" nextgroup=juliaCurBraBlock
+
+syntax match juliaPossibleMacro transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro,juliaDocMacro,juliaDocMacroPre
+
+exec 'syntax match juliaMacro contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+syntax match juliaMacro contained "@[!.~$%^*/\\|<>+-]\ze[^0-9]"
+exec 'syntax region juliaMacroCall contained transparent start="\(@' . s:idregex . '\%(\.' . s:idregex . '\)*\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region juliaMacroCall contained transparent start="\(@.\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region juliaMacroCallP contained transparent start="@' . s:idregex . '\%(\.' . s:idregex . '\)*(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+exec 'syntax region juliaMacroCallP contained transparent start="@.(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+
+exec 'syntax match juliaNumbers transparent "\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\@'.s:d(1).'<=\d\|\.\d\|im\>" contains=juliaNumber,juliaFloat,juliaComplexUnit'
+
+"integer regexes
+let s:dec_regex = '\d\%(_\?\d\)*\%(\>\|im\>\|\ze\D\)'
+let s:hex_regex = '0x\x\%(_\?\x\)*\%(\>\|im\>\|\ze\X\)'
+let s:bin_regex = '0b[01]\%(_\?[01]\)*\%(\>\|im\>\|\ze[^01]\)'
+let s:oct_regex = '0o\o\%(_\?\o\)*\%(\>\|im\>\|\ze\O\)'
+
+let s:int_regex = '\%(' . s:hex_regex .
+ \ '\|' . s:bin_regex .
+ \ '\|' . s:oct_regex .
+ \ '\|' . s:dec_regex .
+ \ '\)'
+
+"floating point regexes
+" starting with a dot, optional exponent
+let s:float_regex1 = '\.\d\%(_\?\d\)*\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+" with dot, optional exponent
+let s:float_regex2 = '\d\%(_\?\d\)*\.\%(\d\%(_\?\d\)*\)\?\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+" without dot, with exponent
+let s:float_regex3 = '\d\%(_\?\d\)*[eEf][-+]\?\d\+\%(\>\|im\>\|\ze\D\)'
+
+"hex floating point numbers
+" starting with a dot
+let s:hexfloat_regex1 = '0x\.\%\(\x\%(_\?\x\)*\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+" starting with a digit
+let s:hexfloat_regex2 = '0x\x\%(_\?\x\)*\%\(\.\%\(\x\%(_\?\x\)*\)\?\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+
+let s:float_regex = '\%(' . s:float_regex3 .
+ \ '\|' . s:float_regex2 .
+ \ '\|' . s:float_regex1 .
+ \ '\|' . s:hexfloat_regex2 .
+ \ '\|' . s:hexfloat_regex1 .
+ \ '\)'
+
+exec 'syntax match juliaNumber contained "' . s:int_regex . '" contains=juliaComplexUnit'
+exec 'syntax match juliaFloat contained "' . s:float_regex . '" contains=juliaComplexUnit'
+syntax match juliaComplexUnit display contained "\<im\>"
+
+syntax match juliaRangeOperator display ":"
+exec 'syntax match juliaOperator "' . s:operators . '"'
+
+exec 'syntax region juliaTernaryRegion matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol'
+
+let s:interp_dollar = '\([' . s:nonidS_chars . s:op_chars_wc . '!]\|^\)\@'.s:d(1).'<=\$'
+
+exec 'syntax match juliaDollarVar display contained "' . s:interp_dollar . s:idregex . '"'
+exec 'syntax region juliaDollarPar matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '(" end=")" contains=@juliaExpressions'
+exec 'syntax region juliaDollarSqBra matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS'
+
+syntax match juliaChar "'\\\?.'" contains=juliaSpecialChar
+syntax match juliaChar display "'\\\o\{3\}'" contains=juliaOctalEscapeChar
+syntax match juliaChar display "'\\x\x\{2\}'" contains=juliaHexEscapeChar
+syntax match juliaChar display "'\\u\x\{1,4\}'" contains=juliaUniCharSmall
+syntax match juliaChar display "'\\U\x\{1,8\}'" contains=juliaUniCharLarge
+
+exec 'syntax match juliaCTransOperator "[[:space:]}' . s:nonid_chars . s:op_chars_wc . '!]\@'.s:d(1).'<!\.\?' . "'" . 'ᵀ\?"'
+
+" TODO: some of these might be specialized; the rest could be just left to the
+" generic juliaStringPrefixed fallback
+syntax region juliaString matchgroup=juliaStringDelim start=+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckStrings
+syntax region juliaStringPrefixed contained matchgroup=juliaStringDelim start=+[^{([:space:]<>"]\+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialCharsRaw
+syntax region juliabString matchgroup=juliaStringDelim start=+\<b\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+syntax region juliasString matchgroup=juliaStringDelim start=+\<s\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+
+syntax region juliaDocString matchgroup=juliaDocStringDelim fold start=+^"""+ skip=+\%(\\\\\)*\\"+ end=+"""+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+exec 'syntax region juliaPrintfMacro contained transparent start="@s\?printf(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaPrintfParBlock'
+syntax region juliaPrintfMacro contained transparent start="@s\?printf\s\+" end="\ze\%([])};#]\|$\|\<for\>\)" contains=@juliaExprsPrintf,juliaMacro,juliaSymbolS,juliaQuotedParBlockS
+syntax region juliaPrintfParBlock contained matchgroup=juliaParDelim start="(" end=")" contains=@juliaExprsPrintf
+syntax region juliaPrintfString contained matchgroup=juliaStringDelim start=+"+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=@juliaSpecialChars,@juliaPrintfChars
+
+exec 'syntax region juliaDocMacroPre contained transparent start=+@doc\s\+\%(' . s:idregex . '\%(\.' . s:idregex . '\)*\)\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringMRaw'
+exec 'syntax region juliaDocMacro contained transparent start=+@doc\s\+\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringM'
+syntax region juliaDocStringMRaw contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpellcheckDocStrings
+syntax region juliaDocStringM contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+syntax region juliaShellString matchgroup=juliaStringDelim start=+`+ skip=+\%(\\\\\)*\\`+ end=+`+ contains=@juliaStringVars,juliaSpecialChar
+
+syntax cluster juliaStringVars contains=juliaStringVarsPar,juliaStringVarsSqBra,juliaStringVarsCurBra,juliaStringVarsPla
+syntax region juliaStringVarsPar contained matchgroup=juliaStringVarDelim start="$(" end=")" contains=@juliaExpressions
+syntax region juliaStringVarsSqBra contained matchgroup=juliaStringVarDelim start="$\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS
+syntax region juliaStringVarsCurBra contained matchgroup=juliaStringVarDelim start="${" end="}" contains=@juliaExpressions
+exec 'syntax match juliaStringVarsPla contained "\$' . s:idregex . '"'
+
+" TODO improve RegEx
+syntax region juliaRegEx matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+
+
+syntax cluster juliaSpecialChars contains=juliaSpecialChar,juliaDoubleBackslash,juliaEscapedQuote,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge
+syntax match juliaSpecialChar display contained "\\."
+syntax match juliaOctalEscapeChar display contained "\\\o\{3\}"
+syntax match juliaHexEscapeChar display contained "\\x\x\{2\}"
+syntax match juliaUniCharSmall display contained "\\u\x\{1,4\}"
+syntax match juliaUniCharLarge display contained "\\U\x\{1,8\}"
+syntax cluster juliaSpecialCharsRaw contains=juliaDoubleBackslash,juliaEscapedQuote
+syntax match juliaDoubleBackslash contained "\\\\"
+syntax match juliaEscapedQuote contained "\\\""
+
+syntax cluster juliaPrintfChars contains=juliaErrorPrintfFmt,juliaPrintfFmt
+syntax match juliaErrorPrintfFmt display contained "\\\?%."
+syntax match juliaPrintfFmt display contained "%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"
+syntax match juliaPrintfFmt display contained "%%"
+syntax match juliaPrintfFmt display contained "\\%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"hs=s+1
+syntax match juliaPrintfFmt display contained "\\%%"hs=s+1
+
+" this is used to restrict the search for Symbols to when colons appear at all
+" (for performance reasons)
+syntax match juliaPossibleSymbol transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon
+
+let s:quotable = '\%(' . s:idregex . '\|' . s:operators . '\|[?.]\|' . s:float_regex . '\|' . s:int_regex . '\)'
+let s:quoting_colon = '\%(\%(^\s*\|\s\{6,\}\|[' . s:nonid_chars . s:op_chars_wc . ']\s*\)\@'.s:d(6).'<=\|\%(\<\%(return\|if\|else\%(if\)\?\|while\|try\|begin\)\s\+\)\@'.s:d(9).'<=\)\zs:'
+let s:quoting_colonS = '\s\@'.s:d(1).'<=:'
+
+" note: juliaSymbolS only works within whitespace-sensitive contexts,
+" such as in macro calls without parentheses, or within square brackets.
+" It is used to override the recognition of expressions like `a :b` as
+" ranges rather than symbols in those contexts.
+" (Note that such `a :b` expressions only allows at most 5 spaces between
+" the identifier and the colon anyway.)
+
+exec 'syntax match juliaSymbol contained "' . s:quoting_colon . s:quotable . '"'
+exec 'syntax match juliaSymbolS contained "' . s:quoting_colonS . s:quotable . '"'
+
+" same as above for quoted expressions such as :(expr)
+exec 'syntax region juliaQuotedParBlock matchgroup=juliaQParDelim start="' . s:quoting_colon . '(" end=")" contains=@juliaExpressions'
+exec 'syntax match juliaQuotedQMarkPar "' . s:quoting_colon . '(\s*?\s*)" contains=juliaQuotedQMark'
+exec 'syntax region juliaQuotedParBlockS matchgroup=juliaQParDelim contained start="' . s:quoting_colonS . '(" end=")" contains=@juliaExpressions'
+
+
+syntax match juliaTypeOperatorR1 contained "[^{([:space:]<>\"]\+\%(\s*[<>]:\)\@="
+
+" force precedence over Symbols
+syntax match juliaTypeOperator contained "[<>:]:"
+exec 'syntax match juliaTypeOperatorR2 transparent "[<>:]:\s*\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaTypeOperator,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaTypeOperator'
+syntax match juliaIsaKeyword contained "\<isa\>"
+exec 'syntax match juliaTypeOperatorR3 transparent "\<isa\s\+\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaIsaKeyword,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaIsaKeyword'
+
+syntax match juliaWhereKeyword "\<where\>"
+exec 'syntax match juliaWhereR transparent "\<where\s\+' . s:idregex . '" contains=juliaWhereKeyword,juliaType,juliaDottedT,juliaIdSymbol'
+
+syntax region juliaCommentL matchgroup=juliaCommentDelim excludenl start="#\ze\%([^=]\|$\)" end="$" contains=juliaTodo,@juliaSpellcheckComments
+syntax region juliaCommentM matchgroup=juliaCommentDelim fold start="#=\ze\%([^#]\|$\)" end="=#" contains=juliaTodo,juliaCommentM,@juliaSpellcheckComments
+syntax keyword juliaTodo contained TODO FIXME XXX
+
+" detect an end-of-line with only whitespace or comments before it
+let s:eol = '\s*\%(\%(\%(#=\%(=#\@!\|[^=]\|\n\)\{-}=#\)\s*\)\+\)\?\%(#=\@!.*\)\?\n'
+
+" a trailing comma, or colon, or an empty line in an import/using/export
+" multi-line command. Used to recognize the as keyword, and for indentation
+" (this needs to take precedence over normal commas and colons, and comments)
+syntax cluster juliaContinuationItems contains=juliaContinuationComma,juliaContinuationColon,juliaContinuationNone
+exec 'syntax region juliaContinuationComma matchgroup=juliaComma contained start=",\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region juliaContinuationColon matchgroup=juliaColon contained start=":\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region juliaContinuationNone matchgroup=NONE contained start="\%(\<\%(import\|using\|export\)\>\|^\)\@'.s:d(6).'<=\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems,juliaAsKeyword'
+exec 'syntax match juliaMacroName contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+
+" the following are disabled by default, but
+" can be enabled by entering e.g.
+" :hi link juliaParDelim Delimiter
+hi def link juliaParDelim juliaNone
+hi def link juliaSemicolon juliaNone
+hi def link juliaComma juliaNone
+hi def link juliaFunctionCall juliaNone
+
+hi def link juliaColon juliaOperator
+
+hi def link juliaFunctionName juliaFunction
+hi def link juliaFunctionName1 juliaFunction
+hi def link juliaMacroName juliaMacro
+
+
+hi def link juliaKeyword Keyword
+hi def link juliaWhereKeyword Keyword
+hi def link juliaInfixKeyword Keyword
+hi def link juliaIsaKeyword Keyword
+hi def link juliaAsKeyword Keyword
+hi def link juliaRepKeyword Keyword
+hi def link juliaBlKeyword Keyword
+hi def link juliaConditional Conditional
+hi def link juliaRepeat Repeat
+hi def link juliaException Exception
+hi def link juliaOuter Keyword
+hi def link juliaBaseTypeBasic Type
+hi def link juliaBaseTypeNum Type
+hi def link juliaBaseTypeC Type
+hi def link juliaBaseTypeError Type
+hi def link juliaBaseTypeIter Type
+hi def link juliaBaseTypeString Type
+hi def link juliaBaseTypeArray Type
+hi def link juliaBaseTypeDict Type
+hi def link juliaBaseTypeSet Type
+hi def link juliaBaseTypeIO Type
+hi def link juliaBaseTypeProcess Type
+hi def link juliaBaseTypeRange Type
+hi def link juliaBaseTypeRegex Type
+hi def link juliaBaseTypeFact Type
+hi def link juliaBaseTypeSort Type
+hi def link juliaBaseTypeRound Type
+hi def link juliaBaseTypeSpecial Type
+hi def link juliaBaseTypeRandom Type
+hi def link juliaBaseTypeDisplay Type
+hi def link juliaBaseTypeTime Type
+hi def link juliaBaseTypeOther Type
+
+hi def link juliaType Type
+hi def link juliaParamType Type
+hi def link juliaTypeOperatorR1 Type
+
+" NOTE: deprecated constants are not highlighted as such. For once,
+" one can still legitimately use them by importing Base.MathConstants.
+" Plus, one-letter variables like `e` and `γ` can be used with other
+" meanings.
+hi def link juliaConstNum Constant
+hi def link juliaEuler Constant
+
+hi def link juliaConstEnv Constant
+hi def link juliaConstC Constant
+hi def link juliaConstLimits Constant
+hi def link juliaConstGeneric Constant
+hi def link juliaRangeKeyword Constant
+hi def link juliaConstBool Boolean
+hi def link juliaConstIO Boolean
+
+hi def link juliaComprehensionFor Keyword
+hi def link juliaComprehensionIf Keyword
+
+hi def link juliaDollarVar Identifier
+
+hi def link juliaFunction Function
+hi def link juliaMacro Macro
+hi def link juliaSymbol Identifier
+hi def link juliaSymbolS Identifier
+hi def link juliaQParDelim Identifier
+hi def link juliaQuotedQMarkPar Identifier
+hi def link juliaQuotedQMark juliaOperatorHL
+
+hi def link juliaNumber Number
+hi def link juliaFloat Float
+hi def link juliaComplexUnit Constant
+
+hi def link juliaChar Character
+
+hi def link juliaString String
+hi def link juliaStringPrefixed juliaString
+hi def link juliabString juliaString
+hi def link juliasString juliaString
+hi def link juliavString juliaString
+hi def link juliarString juliaString
+hi def link juliaipString juliaString
+hi def link juliabigString juliaString
+hi def link juliaMIMEString juliaString
+hi def link juliarawString juliaString
+hi def link juliatestString juliaString
+hi def link juliahtmlString juliaString
+hi def link juliaint128String juliaString
+hi def link juliaPrintfString juliaString
+hi def link juliaShellString juliaString
+hi def link juliaDocString juliaString
+hi def link juliaDocStringM juliaDocString
+hi def link juliaDocStringMRaw juliaDocString
+hi def link juliaStringDelim juliaString
+hi def link juliaDocStringDelim juliaDocString
+hi def link juliaStringVarsPla Identifier
+hi def link juliaStringVarDelim Identifier
+
+hi def link juliaRegEx String
+
+hi def link juliaSpecialChar SpecialChar
+hi def link juliaOctalEscapeChar SpecialChar
+hi def link juliaHexEscapeChar SpecialChar
+hi def link juliaUniCharSmall SpecialChar
+hi def link juliaUniCharLarge SpecialChar
+hi def link juliaDoubleBackslash SpecialChar
+hi def link juliaEscapedQuote SpecialChar
+
+hi def link juliaPrintfFmt SpecialChar
+
+if s:julia_highlight_operators
+ hi! def link juliaOperatorHL Operator
+else
+ hi! def link juliaOperatorHL juliaNone
+endif
+hi def link juliaOperator juliaOperatorHL
+hi def link juliaRangeOperator juliaOperatorHL
+hi def link juliaCTransOperator juliaOperatorHL
+hi def link juliaTernaryOperator juliaOperatorHL
+hi def link juliaTypeOperator juliaOperatorHL
+
+hi def link juliaCommentL Comment
+hi def link juliaCommentM Comment
+hi def link juliaCommentDelim Comment
+hi def link juliaTodo Todo
+
+hi def link juliaErrorPar juliaError
+hi def link juliaErrorEnd juliaError
+hi def link juliaErrorElse juliaError
+hi def link juliaErrorCatch juliaError
+hi def link juliaErrorFinally juliaError
+hi def link juliaErrorSemicol juliaError
+hi def link juliaErrorPrintfFmt juliaError
+
+hi def link juliaError Error
+
+syntax sync fromstart
+
+let b:current_syntax = "julia"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/scripts/release.sh b/scripts/release.sh
index 4d1484b77a..4ec959d697 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -12,6 +12,7 @@
# - CMakeLists.txt: Unset NVIM_VERSION_PRERELEASE
# - CMakeLists.txt: Unset NVIM_API_PRERELEASE
# - Create test/functional/fixtures/api_level_N.mpack
+# - Add date and version to runtime/nvim.appdata.xml
# - Tag the commit.
# Create the "version bump" commit:
# - CMakeLists.txt: Set NVIM_VERSION_PRERELEASE to "-dev"
@@ -62,6 +63,10 @@ _do_release_commit() {
git add test/functional/fixtures/api_level_$__API_LEVEL.mpack
fi
+ $__sed -i.bk 's,(<releases>),\1\
+ <release date="'"${__DATE}"'" version="'"${__VERSION}"'"/>,' runtime/nvim.appdata.xml
+ git add runtime/nvim.appdata.xml
+
if ! test "$ARG1" = '--use-current-commit' ; then
echo "Building changelog since ${__LAST_TAG}..."
@@ -75,14 +80,12 @@ _do_release_commit() {
_do_bump_commit() {
$__sed -i.bk 's/(NVIM_VERSION_PRERELEASE) ""/\1 "-dev"/' CMakeLists.txt
$__sed -i.bk 's/set\((NVIM_VERSION_PATCH) [[:digit:]]/set(\1 ?/' CMakeLists.txt
- $__sed -i.bk 's,(<releases>),\1\
- <release date="'"${__DATE}"'" version="xxx"/>,' runtime/nvim.appdata.xml
rm CMakeLists.txt.bk
rm runtime/nvim.appdata.xml.bk
nvim +'/NVIM_VERSION' +1new +'exe "norm! iUpdate version numbers!!!"' \
- -O CMakeLists.txt runtime/nvim.appdata.xml
+ -O CMakeLists.txt
- git add CMakeLists.txt runtime/nvim.appdata.xml
+ git add CMakeLists.txt
git commit -m "$__BUMP_MSG"
}
@@ -92,11 +95,7 @@ fi
_do_bump_commit
echo "
Next steps:
- - Update runtime/nvim.appdata.xml on _master_
- Run tests/CI (version_spec.lua)!
- Push the tag:
git push --follow-tags
- - Update the 'stable' tag:
- git push --force upstream HEAD^:refs/tags/stable
- git fetch --tags
- Update website: index.html"
diff --git a/scripts/squash_typos.py b/scripts/squash_typos.py
index e7ee2e24a8..26be6010a2 100644
--- a/scripts/squash_typos.py
+++ b/scripts/squash_typos.py
@@ -7,17 +7,16 @@ This script squashes a PR tagged with the "typo" label into a single, dedicated
"""
import subprocess
+import sys
import os
-import re
def get_authors_and_emails_from_pr():
"""
- For a given PR number, returns all contributing authors and their emails
- for that PR. This includes co-authors, meaning that if two authors are
- credited for a single commit, which is possible with GitHub, then both will
- get credited.
+ Return all contributing authors and their emails for the PR on current branch.
+ This includes co-authors, meaning that if two authors are credited for a
+ single commit, which is possible with GitHub, then both will get credited.
"""
@@ -33,44 +32,85 @@ def get_authors_and_emails_from_pr():
text=True,
).splitlines()
- return [(author, mail) for author, mail in zip(authors, emails)]
+ authors_and_emails_unique = {
+ (author, mail) for author, mail in zip(authors, emails)
+ }
+ return sorted(authors_and_emails_unique)
-def rebase_onto_pr(pr, squash_branch):
+
+def rebase_squash_branch_onto_pr():
"""
- Add all commits from PR into current branch. This is done by rebasing
- current branch onto the PR.
+ Rebase current branch onto the PR.
"""
# Check out the pull request.
- subprocess.call(["gh", "pr", "checkout", pr])
+ subprocess.call(["gh", "pr", "checkout", os.environ["PR_NUMBER"]])
- pr_branch_name = subprocess.check_output(
- ["git", "branch", "--show-current"], text=True
- ).strip()
+ # Rebase onto master
+ default_branch = f"{os.environ['GITHUB_BASE_REF']}"
+ subprocess.check_call(["git", "rebase", default_branch])
# Change back to the original branch.
- subprocess.call(["git", "switch", squash_branch])
+ subprocess.call(["git", "switch", "-"])
+
+ # Rebase onto the pull request, aka include the commits in the pull request
+ # in the current branch. Abort with error message if rebase fails.
- # Rebase onto the pull request, aka include the commits in the pull
- # request in the current branch.
- subprocess.call(["git", "rebase", pr_branch_name])
+ try:
+ subprocess.check_call(["git", "rebase", "-"])
+ except subprocess.CalledProcessError:
+ subprocess.call(["git", "rebase", "--abort"])
+ squash_url = subprocess.check_output(
+ ["gh", "pr", "view", "--json", "url", "--jq", ".url"], text=True
+ ).strip()
+
+ subprocess.call(
+ [
+ "gh",
+ "pr",
+ "comment",
+ os.environ["PR_NUMBER"],
+ "--body",
+ f"Your edit conflicts with an already scheduled fix \
+ ({squash_url}). Please check that batch PR whether your fix is \
+ already included; if not, then please wait until the batch PR \
+ is merged and then rebase your PR on top of master.",
+ ]
+ )
+
+ sys.exit(
+ f"\n\nERROR: Your edit conflicts with an already scheduled fix \
+{squash_url} \n\n"
+ )
+
+
+def rebase_squash_branch_onto_master():
+ """
+
+ Rebase current branch onto the master i.e. make sure current branch is up
+ to date. Abort on error.
+
+ """
+
+ default_branch = f"{os.environ['GITHUB_BASE_REF']}"
+ subprocess.check_call(["git", "rebase", default_branch])
def squash_all_commits():
"""
- Squash all commits into a single commit. Credit all authors by name and
- email.
+ Squash all commits on the PR into a single commit. Credit all authors by
+ name and email.
"""
- authors_and_emails = get_authors_and_emails_from_pr()
- subprocess.call(["git", "reset", "--soft", f"{os.environ['GITHUB_BASE_REF']}"])
+ default_branch = f"{os.environ['GITHUB_BASE_REF']}"
+ subprocess.call(["git", "reset", "--soft", default_branch])
- authors_and_emails = sorted(set(authors_and_emails))
+ authors_and_emails = get_authors_and_emails_from_pr()
commit_message_coauthors = "\n" + "\n".join(
[f"Co-authored-by: {i[0]} <{i[1]}>" for i in authors_and_emails]
)
@@ -80,6 +120,12 @@ def squash_all_commits():
def force_push(branch):
+ """
+
+ Like the name implies, force push <branch>.
+
+ """
+
gh_actor = os.environ["GITHUB_ACTOR"]
gh_token = os.environ["GITHUB_TOKEN"]
gh_repo = os.environ["GITHUB_REPOSITORY"]
@@ -94,55 +140,84 @@ def force_push(branch):
)
-def main():
- squash_branch = "marvim/squash-typos"
- all_pr_urls = ""
+def checkout_branch(branch):
+ """
+
+ Create and checkout <branch>. Check if branch exists on remote, if so then
+ sync local branch to remote.
- pr_number = re.sub(r"\D", "", os.environ["GITHUB_REF"])
+ Return True if remote branch exists, else False.
+
+ """
+
+ # FIXME I'm not sure why the local branch isn't tracking the remote branch
+ # automatically. This works but I'm pretty sure it can be done in a more
+ # "elegant" fashion
show_ref_output = subprocess.check_output(["git", "show-ref"], text=True).strip()
- if squash_branch in show_ref_output:
- subprocess.call(
- ["git", "checkout", "-b", squash_branch, f"origin/{squash_branch}"]
- )
- squash_branch_exists = True
+ if branch in show_ref_output:
+ subprocess.call(["git", "checkout", "-b", branch, f"origin/{branch}"])
+ return True
+
+ subprocess.call(["git", "checkout", "-b", branch])
+ return False
+
+
+def get_all_pr_urls(squash_branch_exists):
+ """
+
+ Return a list of URLs for the pull requests with the typo fixes. If a
+ squash branch exists then extract the URLs from the body text.
+ """
+
+ all_pr_urls = ""
+ if squash_branch_exists:
all_pr_urls += subprocess.check_output(
["gh", "pr", "view", "--json", "body", "--jq", ".body"], text=True
)
- else:
- subprocess.call(["git", "checkout", "-b", squash_branch])
- squash_branch_exists = False
all_pr_urls += subprocess.check_output(
- ["gh", "pr", "view", pr_number, "--json", "url", "--jq", ".url"], text=True
+ ["gh", "pr", "view", os.environ["PR_NUMBER"], "--json", "url", "--jq", ".url"],
+ text=True,
).strip()
- rebase_onto_pr(pr_number, squash_branch)
+ return all_pr_urls
+
+
+def main():
+ squash_branch = "marvim/squash-typos"
+
+ squash_branch_exists = checkout_branch(squash_branch)
+
+ rebase_squash_branch_onto_master()
+ force_push(squash_branch)
+
+ rebase_squash_branch_onto_pr()
force_push(squash_branch)
- subprocess.call(["gh", "pr", "close", pr_number])
+ subprocess.call(
+ [
+ "gh",
+ "pr",
+ "create",
+ "--fill",
+ "--head",
+ squash_branch,
+ "--title",
+ "chore: typo fixes (automated)",
+ ]
+ )
squash_all_commits()
force_push(squash_branch)
- if not squash_branch_exists:
- subprocess.call(
- [
- "gh",
- "pr",
- "create",
- "--fill",
- "--head",
- squash_branch,
- "--title",
- "Dedicated PR for all typo fixes.",
- ]
- )
-
+ all_pr_urls = get_all_pr_urls(squash_branch_exists)
subprocess.call(["gh", "pr", "edit", "--add-label", "typo", "--body", all_pr_urls])
+ subprocess.call(["gh", "pr", "close", os.environ["PR_NUMBER"]])
+
if __name__ == "__main__":
main()
diff --git a/src/clint.py b/src/clint.py
index 4a5e435bbd..e7d76366b0 100755
--- a/src/clint.py
+++ b/src/clint.py
@@ -264,7 +264,7 @@ _error_suppressions_2 = set()
# The allowed line length of files.
# This is set by --linelength flag.
-_line_length = 80
+_line_length = 100
# The allowed extensions for file names
# This is set by --extensions flag.
diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c
index 145f6f5601..bec9808183 100644
--- a/src/nvim/autocmd.c
+++ b/src/nvim/autocmd.c
@@ -1724,7 +1724,7 @@ BYPASS_AU:
void block_autocmds(void)
{
// Remember the value of v:termresponse.
- if (is_autocmd_blocked()) {
+ if (!is_autocmd_blocked()) {
old_termresponse = get_vim_var_str(VV_TERMRESPONSE);
}
autocmd_blocked++;
@@ -1737,7 +1737,7 @@ void unblock_autocmds(void)
// When v:termresponse was set while autocommands were blocked, trigger
// the autocommands now. Esp. useful when executing a shell command
// during startup (nvim -d).
- if (is_autocmd_blocked()
+ if (!is_autocmd_blocked()
&& get_vim_var_str(VV_TERMRESPONSE) != old_termresponse) {
apply_autocmds(EVENT_TERMRESPONSE, NULL, NULL, false, curbuf);
}
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index af8a23f5cc..7cab3eb650 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -6259,8 +6259,8 @@ static int open_cmdwin(void)
const int histtype = hist_char2type(cmdwin_type);
if (histtype == HIST_CMD || histtype == HIST_DEBUG) {
if (p_wc == TAB) {
- add_map((char_u *)"<buffer> <Tab> <C-X><C-V>", INSERT);
- add_map((char_u *)"<buffer> <Tab> a<C-X><C-V>", NORMAL);
+ add_map((char_u *)"<buffer> <Tab> <C-X><C-V>", INSERT, false);
+ add_map((char_u *)"<buffer> <Tab> a<C-X><C-V>", NORMAL, false);
}
set_option_value("ft", 0L, "vim", OPT_LOCAL);
}
diff --git a/src/nvim/generators/gen_options.lua b/src/nvim/generators/gen_options.lua
index 9f91160034..0454c54faf 100644
--- a/src/nvim/generators/gen_options.lua
+++ b/src/nvim/generators/gen_options.lua
@@ -119,10 +119,10 @@ local get_value = function(v)
end
local get_defaults = function(d,n)
- if (d.vi == nil and d.vim == nil) or (d.vi ~= nil and d.vim ~= nil) then
- error("option '"..n.."' should have one and only one default value")
+ if d == nil then
+ error("option '"..n.."' should have a default value")
end
- return get_value(d.vim or d.vi)
+ return get_value(d)
end
local defines = {}
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index 2b32662685..2b6c5b9f37 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -841,6 +841,14 @@ static void init_typebuf(void)
}
}
+void init_default_mappings(void)
+{
+ add_map((char_u *)"Y y$", NORMAL, true);
+ add_map((char_u *)"<C-L> <Cmd>nohlsearch<Bar>diffupdate<CR><C-L>", NORMAL, true);
+ add_map((char_u *)"<C-U> <C-G>u<C-U>", INSERT, true);
+ add_map((char_u *)"<C-W> <C-G>u<C-W>", INSERT, true);
+}
+
// Insert a string in position 'offset' in the typeahead buffer (for "@r"
// and ":normal" command, vgetorpeek() and check_termcode())
//
@@ -4357,18 +4365,23 @@ check_map (
}
-/*
- * Add a mapping "map" for mode "mode".
- * Need to put string in allocated memory, because do_map() will modify it.
- */
-void add_map(char_u *map, int mode)
+/// Add a mapping. Unlike @ref do_map this copies the {map} argument, so
+/// static or read-only strings can be used.
+///
+/// @param map C-string containing the arguments of the map/abbrev command,
+/// i.e. everything except the initial `:[X][nore]map`.
+/// @param mode Bitflags representing the mode in which to set the mapping.
+/// See @ref get_map_mode.
+/// @param nore If true, make a non-recursive mapping.
+void add_map(char_u *map, int mode, bool nore)
{
char_u *s;
char_u *cpo_save = p_cpo;
p_cpo = (char_u *)""; // Allow <> notation
+ // Need to put string in allocated memory, because do_map() will modify it.
s = vim_strsave(map);
- (void)do_map(0, s, mode, FALSE);
+ (void)do_map(nore ? 2 : 0, s, mode, false);
xfree(s);
p_cpo = cpo_save;
}
diff --git a/src/nvim/main.c b/src/nvim/main.c
index 252aa81825..2cdf01b146 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -314,6 +314,9 @@ int main(int argc, char **argv)
init_highlight(true, false); // Default highlight groups.
TIME_MSG("init highlight");
+ init_default_mappings(); // Default mappings.
+ TIME_MSG("init default mappings");
+
// Set the break level after the terminal is initialized.
debug_break_level = params.use_debug_break_level;
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index 8a45cb69fa..a44664d780 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -6,7 +6,7 @@
-- type='number', list=nil, scope={'global'},
-- deny_duplicates=nil,
-- enable_if=nil,
--- defaults={condition=nil, if_true={vi=224, vim=0}, if_false=nil},
+-- defaults={condition=nil, if_true=224, if_false=nil},
-- secure=nil, gettext=nil, noglob=nil, normal_fname_chars=nil,
-- pri_mkrc=nil, deny_in_modelines=nil, normal_dname_chars=nil,
-- modelineexpr=nil,
@@ -21,7 +21,6 @@
-- scopes: global, buffer, window
-- redraw options: statuslines, current_window, curent_window_only,
-- current_buffer, all_windows, everything, curswant
--- default: {vi=…[, vim=…]}
-- defaults: {condition=#if condition, if_true=default, if_false=default}
-- #if condition:
-- string: #ifdef string
@@ -57,14 +56,14 @@ return {
type='number', scope={'global'},
redraw={'curswant'},
varname='p_aleph',
- defaults={if_true={vi=224}}
+ defaults={if_true=224}
},
{
full_name='arabic', abbreviation='arab',
short_desc=N_("Arabic as a default second language"),
type='bool', scope={'window'},
redraw={'curswant'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='arabicshape', abbreviation='arshape',
@@ -73,14 +72,14 @@ return {
redraw={'all_windows', 'ui_option'},
varname='p_arshape',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='allowrevins', abbreviation='ari',
short_desc=N_("allow CTRL-_ in Insert and Command-line mode"),
type='bool', scope={'global'},
varname='p_ari',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='ambiwidth', abbreviation='ambw',
@@ -88,42 +87,42 @@ return {
type='string', scope={'global'},
redraw={'all_windows', 'ui_option'},
varname='p_ambw',
- defaults={if_true={vi="single"}}
+ defaults={if_true="single"}
},
{
full_name='autochdir', abbreviation='acd',
short_desc=N_("change directory to the file in the current window"),
type='bool', scope={'global'},
varname='p_acd',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='autoindent', abbreviation='ai',
short_desc=N_("take indent for new line from previous line"),
type='bool', scope={'buffer'},
varname='p_ai',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='autoread', abbreviation='ar',
short_desc=N_("autom. read file when changed outside of Vim"),
type='bool', scope={'global', 'buffer'},
varname='p_ar',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='autowrite', abbreviation='aw',
short_desc=N_("automatically write file if changed"),
type='bool', scope={'global'},
varname='p_aw',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='autowriteall', abbreviation='awa',
short_desc=N_("as 'autowrite', but works with more commands"),
type='bool', scope={'global'},
varname='p_awa',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='background', abbreviation='bg',
@@ -131,7 +130,7 @@ return {
type='string', scope={'global'},
redraw={'all_windows'},
varname='p_bg',
- defaults={if_true={vim="dark"}}
+ defaults={if_true="dark"}
},
{
full_name='backspace', abbreviation='bs',
@@ -139,14 +138,14 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_bs',
- defaults={if_true={vim="indent,eol,start"}}
+ defaults={if_true="indent,eol,start"}
},
{
full_name='backup', abbreviation='bk',
short_desc=N_("keep backup file after overwriting a file"),
type='bool', scope={'global'},
varname='p_bk',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='backupcopy', abbreviation='bkc',
@@ -156,8 +155,8 @@ return {
varname='p_bkc',
defaults={
condition='UNIX',
- if_true={vim="auto"},
- if_false={vim="auto"}
+ if_true="auto",
+ if_false="auto"
},
},
{
@@ -168,7 +167,7 @@ return {
secure=true,
expand='nodefault',
varname='p_bdir',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='backupext', abbreviation='bex',
@@ -176,7 +175,7 @@ return {
type='string', scope={'global'},
normal_fname_chars=true,
varname='p_bex',
- defaults={if_true={vi="~"}}
+ defaults={if_true="~"}
},
{
full_name='backupskip', abbreviation='bsk',
@@ -184,7 +183,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_bsk',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='belloff', abbreviation='bo',
@@ -192,7 +191,7 @@ return {
type='string', list='comma', scope={'global'},
deny_duplicates=true,
varname='p_bo',
- defaults={if_true={vi="all"}}
+ defaults={if_true="all"}
},
{
full_name='binary', abbreviation='bin',
@@ -200,7 +199,7 @@ return {
type='bool', scope={'buffer'},
redraw={'statuslines'},
varname='p_bin',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='bomb',
@@ -209,7 +208,7 @@ return {
no_mkrc=true,
redraw={'statuslines'},
varname='p_bomb',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='breakat', abbreviation='brk',
@@ -217,14 +216,14 @@ return {
type='string', list='flags', scope={'global'},
redraw={'all_windows'},
varname='p_breakat',
- defaults={if_true={vi=" \t!@*-+;:,./?"}}
+ defaults={if_true=" \t!@*-+;:,./?"}
},
{
full_name='breakindent', abbreviation='bri',
short_desc=N_("wrapped line repeats indent"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='breakindentopt', abbreviation='briopt',
@@ -233,7 +232,7 @@ return {
deny_duplicates=true,
alloced=true,
redraw={'current_buffer'},
- defaults={if_true={vi=""}},
+ defaults={if_true=""},
},
{
full_name='browsedir', abbreviation='bsdir',
@@ -248,7 +247,7 @@ return {
noglob=true,
alloced=true,
varname='p_bh',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='buflisted', abbreviation='bl',
@@ -256,7 +255,7 @@ return {
type='bool', scope={'buffer'},
noglob=true,
varname='p_bl',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='buftype', abbreviation='bt',
@@ -265,7 +264,7 @@ return {
noglob=true,
alloced=true,
varname='p_bt',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='casemap', abbreviation='cmp',
@@ -273,7 +272,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_cmp',
- defaults={if_true={vi="internal,keepascii"}}
+ defaults={if_true="internal,keepascii"}
},
{
full_name='cdpath', abbreviation='cd',
@@ -283,14 +282,14 @@ return {
expand=true,
secure=true,
varname='p_cdpath',
- defaults={if_true={vi=",,"}}
+ defaults={if_true=",,"}
},
{
full_name='cedit',
short_desc=N_("used to open the command-line window"),
type='string', scope={'global'},
varname='p_cedit',
- defaults={if_true={vim=macros('CTRL_F_STR')}}
+ defaults={if_true=macros('CTRL_F_STR')}
},
{
full_name='channel',
@@ -299,7 +298,7 @@ return {
no_mkrc=true,
nodefault=true,
varname='p_channel',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='charconvert', abbreviation='ccv',
@@ -307,14 +306,14 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_ccv',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='cindent', abbreviation='cin',
short_desc=N_("do C program indenting"),
type='bool', scope={'buffer'},
varname='p_cin',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='cinkeys', abbreviation='cink',
@@ -323,7 +322,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_cink',
- defaults={if_true={vi=indentkeys_default}}
+ defaults={if_true=indentkeys_default}
},
{
full_name='cinoptions', abbreviation='cino',
@@ -332,7 +331,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_cino',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='cinwords', abbreviation='cinw',
@@ -341,7 +340,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_cinw',
- defaults={if_true={vi="if,else,while,do,for,switch"}}
+ defaults={if_true="if,else,while,do,for,switch"}
},
{
full_name='clipboard', abbreviation='cb',
@@ -349,7 +348,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_cb',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='cmdheight', abbreviation='ch',
@@ -357,14 +356,14 @@ return {
type='number', scope={'global'},
redraw={'all_windows'},
varname='p_ch',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='cmdwinheight', abbreviation='cwh',
short_desc=N_("height of the command-line window"),
type='number', scope={'global'},
varname='p_cwh',
- defaults={if_true={vi=7}}
+ defaults={if_true=7}
},
{
full_name='colorcolumn', abbreviation='cc',
@@ -372,7 +371,7 @@ return {
type='string', list='onecomma', scope={'window'},
deny_duplicates=true,
redraw={'current_window'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='columns', abbreviation='co',
@@ -381,7 +380,7 @@ return {
no_mkrc=true,
redraw={'everything'},
varname='p_columns',
- defaults={if_true={vi=macros('DFLT_COLS')}}
+ defaults={if_true=macros('DFLT_COLS')}
},
{
full_name='comments', abbreviation='com',
@@ -391,7 +390,7 @@ return {
alloced=true,
redraw={'curswant'},
varname='p_com',
- defaults={if_true={vi="s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-"}}
+ defaults={if_true="s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-"}
},
{
full_name='commentstring', abbreviation='cms',
@@ -400,7 +399,7 @@ return {
alloced=true,
redraw={'curswant'},
varname='p_cms',
- defaults={if_true={vi="/*%s*/"}}
+ defaults={if_true="/*%s*/"}
},
{
full_name='compatible', abbreviation='cp',
@@ -410,7 +409,7 @@ return {
varname='p_force_off',
-- pri_mkrc isn't needed here, optval_default()
-- always returns TRUE for 'compatible'
- defaults={if_true={vim=false}}
+ defaults={if_true=false}
},
{
full_name='complete', abbreviation='cpt',
@@ -419,7 +418,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_cpt',
- defaults={if_true={vim=".,w,b,u,t"}}
+ defaults={if_true=".,w,b,u,t"}
},
{
full_name='concealcursor', abbreviation='cocu',
@@ -427,14 +426,14 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='conceallevel', abbreviation='cole',
short_desc=N_("whether concealable text is shown or hidden"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='completefunc', abbreviation='cfu',
@@ -443,7 +442,7 @@ return {
secure=true,
alloced=true,
varname='p_cfu',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='completeopt', abbreviation='cot',
@@ -451,28 +450,28 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_cot',
- defaults={if_true={vi="menu,preview"}}
+ defaults={if_true="menu,preview"}
},
{
full_name='completeslash', abbreviation='csl',
type='string', scope={'buffer'},
varname='p_csl',
enable_if='BACKSLASH_IN_FILENAME',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='confirm', abbreviation='cf',
short_desc=N_("ask what to do about unsaved/read-only files"),
type='bool', scope={'global'},
varname='p_confirm',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='copyindent', abbreviation='ci',
short_desc=N_("make 'autoindent' use existing indent structure"),
type='bool', scope={'buffer'},
varname='p_ci',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='cpoptions', abbreviation='cpo',
@@ -480,14 +479,14 @@ return {
type='string', list='flags', scope={'global'},
redraw={'all_windows'},
varname='p_cpo',
- defaults={if_true={vim=macros('CPO_VIM')}}
+ defaults={if_true=macros('CPO_VIM')}
},
{
full_name='cscopepathcomp', abbreviation='cspc',
short_desc=N_("how many components of the path to show"),
type='number', scope={'global'},
varname='p_cspc',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='cscopeprg', abbreviation='csprg',
@@ -496,7 +495,7 @@ return {
secure=true,
expand=true,
varname='p_csprg',
- defaults={if_true={vi="cscope"}}
+ defaults={if_true="cscope"}
},
{
full_name='cscopequickfix', abbreviation='csqf',
@@ -504,56 +503,56 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_csqf',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='cscoperelative', abbreviation='csre',
short_desc=N_("Use cscope.out path basename as prefix"),
type='bool', scope={'global'},
varname='p_csre',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='cscopetag', abbreviation='cst',
short_desc=N_("use cscope for tag commands"),
type='bool', scope={'global'},
varname='p_cst',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='cscopetagorder', abbreviation='csto',
short_desc=N_("determines \":cstag\" search order"),
type='number', scope={'global'},
varname='p_csto',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='cscopeverbose', abbreviation='csverb',
short_desc=N_("give messages when adding a cscope database"),
type='bool', scope={'global'},
varname='p_csverbose',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='cursorbind', abbreviation='crb',
short_desc=N_("move cursor in window as it moves in other windows"),
type='bool', scope={'window'},
pv_name='p_crbind',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='cursorcolumn', abbreviation='cuc',
short_desc=N_("highlight the screen column of the cursor"),
type='bool', scope={'window'},
redraw={'current_window_only'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='cursorline', abbreviation='cul',
short_desc=N_("highlight the screen line of the cursor"),
type='bool', scope={'window'},
redraw={'current_window_only'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='cursorlineopt', abbreviation='culopt',
@@ -561,14 +560,14 @@ return {
type='string', list='onecomma', scope={'window'},
deny_duplicates=true,
redraw={'current_window_only'},
- defaults={if_true={vi="both"}}
+ defaults={if_true="both"}
},
{
full_name='debug',
short_desc=N_("to \"msg\" to see all error messages"),
type='string', scope={'global'},
varname='p_debug',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='define', abbreviation='def',
@@ -577,14 +576,14 @@ return {
alloced=true,
redraw={'curswant'},
varname='p_def',
- defaults={if_true={vi="^\\s*#\\s*define"}}
+ defaults={if_true="^\\s*#\\s*define"}
},
{
full_name='delcombine', abbreviation='deco',
short_desc=N_("delete combining characters on their own"),
type='bool', scope={'global'},
varname='p_deco',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='dictionary', abbreviation='dict',
@@ -594,7 +593,7 @@ return {
normal_dname_chars=true,
expand=true,
varname='p_dict',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='diff',
@@ -602,7 +601,7 @@ return {
type='bool', scope={'window'},
noglob=true,
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='diffexpr', abbreviation='dex',
@@ -611,7 +610,7 @@ return {
secure=true,
redraw={'curswant'},
varname='p_dex',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='diffopt', abbreviation='dip',
@@ -621,14 +620,14 @@ return {
alloced=true,
redraw={'current_window'},
varname='p_dip',
- defaults={if_true={vi="internal,filler,closeoff"}}
+ defaults={if_true="internal,filler,closeoff"}
},
{
full_name='digraph', abbreviation='dg',
short_desc=N_("enable the entering of digraphs in Insert mode"),
type='bool', scope={'global'},
varname='p_dg',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='directory', abbreviation='dir',
@@ -638,7 +637,7 @@ return {
secure=true,
expand='nodefault',
varname='p_dir',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='display', abbreviation='dy',
@@ -647,21 +646,21 @@ return {
deny_duplicates=true,
redraw={'all_windows'},
varname='p_dy',
- defaults={if_true={vim="lastline,msgsep"}}
+ defaults={if_true="lastline,msgsep"}
},
{
full_name='eadirection', abbreviation='ead',
short_desc=N_("in which direction 'equalalways' works"),
type='string', scope={'global'},
varname='p_ead',
- defaults={if_true={vi="both"}}
+ defaults={if_true="both"}
},
{
full_name='edcompatible', abbreviation='ed',
short_desc=N_("No description"),
type='bool', scope={'global'},
varname='p_force_off',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='emoji', abbreviation='emo',
@@ -669,7 +668,7 @@ return {
type='bool', scope={'global'},
redraw={'all_windows', 'ui_option'},
varname='p_emoji',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='encoding', abbreviation='enc',
@@ -677,7 +676,7 @@ return {
type='string', scope={'global'},
deny_in_modelines=true,
varname='p_enc',
- defaults={if_true={vi=macros('ENC_DFLT')}}
+ defaults={if_true=macros('ENC_DFLT')}
},
{
full_name='endofline', abbreviation='eol',
@@ -686,7 +685,7 @@ return {
no_mkrc=true,
redraw={'statuslines'},
varname='p_eol',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='equalalways', abbreviation='ea',
@@ -694,7 +693,7 @@ return {
type='bool', scope={'global'},
redraw={'all_windows'},
varname='p_ea',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='equalprg', abbreviation='ep',
@@ -703,14 +702,14 @@ return {
secure=true,
expand=true,
varname='p_ep',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='errorbells', abbreviation='eb',
short_desc=N_("ring the bell for error messages"),
type='bool', scope={'global'},
varname='p_eb',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='errorfile', abbreviation='ef',
@@ -719,7 +718,7 @@ return {
secure=true,
expand=true,
varname='p_ef',
- defaults={if_true={vi=macros('DFLT_ERRORFILE')}}
+ defaults={if_true=macros('DFLT_ERRORFILE')}
},
{
full_name='errorformat', abbreviation='efm',
@@ -727,7 +726,7 @@ return {
type='string', list='onecomma', scope={'global', 'buffer'},
deny_duplicates=true,
varname='p_efm',
- defaults={if_true={vi=macros('DFLT_EFM')}}
+ defaults={if_true=macros('DFLT_EFM')}
},
{
full_name='eventignore', abbreviation='ei',
@@ -735,14 +734,14 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_ei',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='expandtab', abbreviation='et',
short_desc=N_("use spaces when <Tab> is inserted"),
type='bool', scope={'buffer'},
varname='p_et',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='exrc', abbreviation='ex',
@@ -750,7 +749,7 @@ return {
type='bool', scope={'global'},
secure=true,
varname='p_exrc',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='fileencoding', abbreviation='fenc',
@@ -760,7 +759,7 @@ return {
alloced=true,
redraw={'statuslines', 'current_buffer'},
varname='p_fenc',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='fileencodings', abbreviation='fencs',
@@ -768,7 +767,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_fencs',
- defaults={if_true={vi="ucs-bom,utf-8,default,latin1"}}
+ defaults={if_true="ucs-bom,utf-8,default,latin1"}
},
{
full_name='fileformat', abbreviation='ff',
@@ -778,7 +777,7 @@ return {
alloced=true,
redraw={'curswant', 'statuslines'},
varname='p_ff',
- defaults={if_true={vi=macros('DFLT_FF')}}
+ defaults={if_true=macros('DFLT_FF')}
},
{
full_name='fileformats', abbreviation='ffs',
@@ -786,7 +785,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_ffs',
- defaults={if_true={vim=macros('DFLT_FFS_VIM')}}
+ defaults={if_true=macros('DFLT_FFS_VIM')}
},
{
full_name='fileignorecase', abbreviation='fic',
@@ -795,8 +794,8 @@ return {
varname='p_fic',
defaults={
condition='CASE_INSENSITIVE_FILENAME',
- if_true={vi=true},
- if_false={vi=false},
+ if_true=true,
+ if_false=false,
}
},
{
@@ -808,7 +807,7 @@ return {
alloced=true,
expand=true,
varname='p_ft',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='fillchars', abbreviation='fcs',
@@ -818,7 +817,7 @@ return {
alloced=true,
redraw={'current_window'},
varname='p_fcs',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='fixendofline', abbreviation='fixeol',
@@ -826,7 +825,7 @@ return {
type='bool', scope={'buffer'},
redraw={'statuslines'},
varname='p_fixeol',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='foldclose', abbreviation='fcl',
@@ -835,7 +834,7 @@ return {
deny_duplicates=true,
redraw={'current_window'},
varname='p_fcl',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='foldcolumn', abbreviation='fdc',
@@ -843,14 +842,14 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="0"}}
+ defaults={if_true="0"}
},
{
full_name='foldenable', abbreviation='fen',
short_desc=N_("set to display all folds open"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='foldexpr', abbreviation='fde',
@@ -859,7 +858,7 @@ return {
modelineexpr=true,
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="0"}}
+ defaults={if_true="0"}
},
{
full_name='foldignore', abbreviation='fdi',
@@ -867,14 +866,14 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="#"}}
+ defaults={if_true="#"}
},
{
full_name='foldlevel', abbreviation='fdl',
short_desc=N_("close folds with a level higher than this"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='foldlevelstart', abbreviation='fdls',
@@ -882,7 +881,7 @@ return {
type='number', scope={'global'},
redraw={'curswant'},
varname='p_fdls',
- defaults={if_true={vi=-1}}
+ defaults={if_true=-1}
},
{
full_name='foldmarker', abbreviation='fmr',
@@ -891,7 +890,7 @@ return {
deny_duplicates=true,
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="{{{,}}}"}}
+ defaults={if_true="{{{,}}}"}
},
{
full_name='foldmethod', abbreviation='fdm',
@@ -899,21 +898,21 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="manual"}}
+ defaults={if_true="manual"}
},
{
full_name='foldminlines', abbreviation='fml',
short_desc=N_("minimum number of lines for a fold to be closed"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='foldnestmax', abbreviation='fdn',
short_desc=N_("maximum fold depth"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=20}}
+ defaults={if_true=20}
},
{
full_name='foldopen', abbreviation='fdo',
@@ -922,7 +921,7 @@ return {
deny_duplicates=true,
redraw={'curswant'},
varname='p_fdo',
- defaults={if_true={vi="block,hor,mark,percent,quickfix,search,tag,undo"}}
+ defaults={if_true="block,hor,mark,percent,quickfix,search,tag,undo"}
},
{
full_name='foldtext', abbreviation='fdt',
@@ -931,7 +930,7 @@ return {
modelineexpr=true,
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="foldtext()"}}
+ defaults={if_true="foldtext()"}
},
{
full_name='formatexpr', abbreviation='fex',
@@ -940,7 +939,7 @@ return {
modelineexpr=true,
alloced=true,
varname='p_fex',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='formatoptions', abbreviation='fo',
@@ -948,7 +947,7 @@ return {
type='string', list='flags', scope={'buffer'},
alloced=true,
varname='p_fo',
- defaults={if_true={vim=macros('DFLT_FO_VIM')}}
+ defaults={if_true=macros('DFLT_FO_VIM')}
},
{
full_name='formatlistpat', abbreviation='flp',
@@ -956,7 +955,7 @@ return {
type='string', scope={'buffer'},
alloced=true,
varname='p_flp',
- defaults={if_true={vi="^\\s*\\d\\+[\\]:.)}\\t ]\\s*"}}
+ defaults={if_true="^\\s*\\d\\+[\\]:.)}\\t ]\\s*"}
},
{
full_name='formatprg', abbreviation='fp',
@@ -965,7 +964,7 @@ return {
secure=true,
expand=true,
varname='p_fp',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='fsync', abbreviation='fs',
@@ -973,14 +972,14 @@ return {
type='bool', scope={'global'},
secure=true,
varname='p_fs',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='gdefault', abbreviation='gd',
short_desc=N_("the \":substitute\" flag 'g' is default on"),
type='bool', scope={'global'},
varname='p_gd',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='grepformat', abbreviation='gfm',
@@ -988,7 +987,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_gefm',
- defaults={if_true={vi=macros('DFLT_GREPFORMAT')}}
+ defaults={if_true=macros('DFLT_GREPFORMAT')}
},
{
full_name='grepprg', abbreviation='gp',
@@ -1001,8 +1000,8 @@ return {
condition='WIN32',
-- Add an extra file name so that grep will always
-- insert a file name in the match line. */
- if_true={vi="findstr /n $* nul"},
- if_false={vi="grep -n $* /dev/null"}
+ if_true="findstr /n $* nul",
+ if_false="grep -n $* /dev/null"
}
},
{
@@ -1011,7 +1010,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_guicursor',
- defaults={if_true={vi="n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20"}}
+ defaults={if_true="n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20"}
},
{
full_name='guifont', abbreviation='gfn',
@@ -1020,7 +1019,7 @@ return {
deny_duplicates=true,
varname='p_guifont',
redraw={'ui_option'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='guifontwide', abbreviation='gfw',
@@ -1029,7 +1028,7 @@ return {
deny_duplicates=true,
redraw={'ui_option'},
varname='p_guifontwide',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='guioptions', abbreviation='go',
@@ -1060,14 +1059,14 @@ return {
secure=true,
expand=true,
varname='p_hf',
- defaults={if_true={vi=macros('DFLT_HELPFILE')}}
+ defaults={if_true=macros('DFLT_HELPFILE')}
},
{
full_name='helpheight', abbreviation='hh',
short_desc=N_("minimum height of a new help window"),
type='number', scope={'global'},
varname='p_hh',
- defaults={if_true={vi=20}}
+ defaults={if_true=20}
},
{
full_name='helplang', abbreviation='hlg',
@@ -1075,14 +1074,14 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_hlg',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='hidden', abbreviation='hid',
short_desc=N_("don't unload buffer when it is |abandon|ed"),
type='bool', scope={'global'},
varname='p_hid',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='highlight', abbreviation='hl',
@@ -1090,28 +1089,28 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_hl',
- defaults={if_true={vi=macros('HIGHLIGHT_INIT')}}
+ defaults={if_true=macros('HIGHLIGHT_INIT')}
},
{
full_name='history', abbreviation='hi',
short_desc=N_("number of command-lines that are remembered"),
type='number', scope={'global'},
varname='p_hi',
- defaults={if_true={vim=10000}}
+ defaults={if_true=10000}
},
{
full_name='hkmap', abbreviation='hk',
short_desc=N_("Hebrew keyboard mapping"),
type='bool', scope={'global'},
varname='p_hkmap',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='hkmapp', abbreviation='hkp',
short_desc=N_("phonetic Hebrew keyboard mapping"),
type='bool', scope={'global'},
varname='p_hkmapp',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='hlsearch', abbreviation='hls',
@@ -1119,14 +1118,14 @@ return {
type='bool', scope={'global'},
redraw={'all_windows'},
varname='p_hls',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='icon',
short_desc=N_("Vim set the text of the window icon"),
type='bool', scope={'global'},
varname='p_icon',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='iconstring',
@@ -1134,28 +1133,28 @@ return {
type='string', scope={'global'},
modelineexpr=true,
varname='p_iconstring',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='ignorecase', abbreviation='ic',
short_desc=N_("ignore case in search patterns"),
type='bool', scope={'global'},
varname='p_ic',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='imcmdline', abbreviation='imc',
short_desc=N_("use IM when starting to edit a command line"),
type='bool', scope={'global'},
enable_if=false,
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='imdisable', abbreviation='imd',
short_desc=N_("do not use the IM in any mode"),
type='bool', scope={'global'},
enable_if=false,
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='iminsert', abbreviation='imi',
@@ -1163,7 +1162,7 @@ return {
type='number', scope={'buffer'},
varname='p_iminsert', pv_name='p_imi',
defaults={
- if_true={vi=macros('B_IMODE_NONE')},
+ if_true=macros('B_IMODE_NONE'),
}
},
{
@@ -1172,7 +1171,7 @@ return {
type='number', scope={'buffer'},
varname='p_imsearch', pv_name='p_ims',
defaults={
- if_true={vi=macros('B_IMODE_USE_INSERT')},
+ if_true=macros('B_IMODE_USE_INSERT'),
}
},
{
@@ -1181,7 +1180,7 @@ return {
type='string', scope={'global'},
redraw={'all_windows'},
varname='p_icm',
- defaults={if_true={vi=""}}
+ defaults={if_true="nosplit"}
},
{
full_name='include', abbreviation='inc',
@@ -1189,7 +1188,7 @@ return {
type='string', scope={'global', 'buffer'},
alloced=true,
varname='p_inc',
- defaults={if_true={vi="^\\s*#\\s*include"}}
+ defaults={if_true="^\\s*#\\s*include"}
},
{
full_name='includeexpr', abbreviation='inex',
@@ -1198,14 +1197,14 @@ return {
modelineexpr=true,
alloced=true,
varname='p_inex',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='incsearch', abbreviation='is',
short_desc=N_("highlight match while typing search pattern"),
type='bool', scope={'global'},
varname='p_is',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='indentexpr', abbreviation='inde',
@@ -1214,7 +1213,7 @@ return {
modelineexpr=true,
alloced=true,
varname='p_inde',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='indentkeys', abbreviation='indk',
@@ -1223,21 +1222,21 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_indk',
- defaults={if_true={vi=indentkeys_default}}
+ defaults={if_true=indentkeys_default}
},
{
full_name='infercase', abbreviation='inf',
short_desc=N_("adjust case of match for keyword completion"),
type='bool', scope={'buffer'},
varname='p_inf',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='insertmode', abbreviation='im',
short_desc=N_("start the edit of a file in Insert mode"),
type='bool', scope={'global'},
varname='p_im',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='isfname', abbreviation='isf',
@@ -1249,8 +1248,8 @@ return {
condition='BACKSLASH_IN_FILENAME',
-- Excluded are: & and ^ are special in cmd.exe
-- ( and ) are used in text separating fnames */
- if_true={vi="@,48-57,/,\\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="},
- if_false={vi="@,48-57,/,.,-,_,+,,,#,$,%,~,="}
+ if_true="@,48-57,/,\\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,=",
+ if_false="@,48-57,/,.,-,_,+,,,#,$,%,~,="
}
},
{
@@ -1261,8 +1260,8 @@ return {
varname='p_isi',
defaults={
condition='WIN32',
- if_true={vi="@,48-57,_,128-167,224-235"},
- if_false={vi="@,48-57,_,192-255"}
+ if_true="@,48-57,_,128-167,224-235",
+ if_false="@,48-57,_,192-255"
}
},
{
@@ -1272,7 +1271,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_isk',
- defaults={if_true={vim="@,48-57,_,192-255"}}
+ defaults={if_true="@,48-57,_,192-255"}
},
{
full_name='isprint', abbreviation='isp',
@@ -1281,7 +1280,7 @@ return {
deny_duplicates=true,
redraw={'all_windows'},
varname='p_isp',
- defaults={if_true={vi="@,161-255"}
+ defaults={if_true="@,161-255"
}
},
{
@@ -1289,7 +1288,7 @@ return {
short_desc=N_("two spaces after a period with a join command"),
type='bool', scope={'global'},
varname='p_js',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='jumpoptions', abbreviation='jop',
@@ -1297,7 +1296,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_jop',
- defaults={if_true={vim=''}}
+ defaults={if_true=''}
},
{
full_name='keymap', abbreviation='kmp',
@@ -1308,7 +1307,7 @@ return {
alloced=true,
redraw={'statuslines', 'current_buffer'},
varname='p_keymap', pv_name='p_kmap',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='keymodel', abbreviation='km',
@@ -1316,7 +1315,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_km',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='keywordprg', abbreviation='kp',
@@ -1326,7 +1325,7 @@ return {
expand=true,
varname='p_kp',
defaults={
- if_true={vi=":Man"},
+ if_true=":Man",
}
},
{
@@ -1336,7 +1335,7 @@ return {
deny_duplicates=true,
secure=true,
varname='p_langmap',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='langmenu', abbreviation='lm',
@@ -1344,21 +1343,21 @@ return {
type='string', scope={'global'},
normal_fname_chars=true,
varname='p_lm',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='langnoremap', abbreviation='lnr',
short_desc=N_("do not apply 'langmap' to mapped characters"),
type='bool', scope={'global'},
varname='p_lnr',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='langremap', abbreviation='lrm',
short_desc=N_('No description'),
type='bool', scope={'global'},
varname='p_lrm',
- defaults={if_true={vim=false}}
+ defaults={if_true=false}
},
{
full_name='laststatus', abbreviation='ls',
@@ -1366,21 +1365,21 @@ return {
type='number', scope={'global'},
redraw={'all_windows'},
varname='p_ls',
- defaults={if_true={vim=2}}
+ defaults={if_true=2}
},
{
full_name='lazyredraw', abbreviation='lz',
short_desc=N_("don't redraw while executing macros"),
type='bool', scope={'global'},
varname='p_lz',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='linebreak', abbreviation='lbr',
short_desc=N_("wrap long lines at a blank"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='lines',
@@ -1389,7 +1388,7 @@ return {
no_mkrc=true,
redraw={'everything'},
varname='p_lines',
- defaults={if_true={vi=macros('DFLT_ROWS')}}
+ defaults={if_true=macros('DFLT_ROWS')}
},
{
full_name='linespace', abbreviation='lsp',
@@ -1397,14 +1396,14 @@ return {
type='number', scope={'global'},
redraw={'ui_option'},
varname='p_linespace',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='lisp',
short_desc=N_("indenting for Lisp"),
type='bool', scope={'buffer'},
varname='p_lisp',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='lispwords', abbreviation='lw',
@@ -1412,14 +1411,14 @@ return {
type='string', list='onecomma', scope={'global', 'buffer'},
deny_duplicates=true,
varname='p_lispwords', pv_name='p_lw',
- defaults={if_true={vi=macros('LISPWORD_VALUE')}}
+ defaults={if_true=macros('LISPWORD_VALUE')}
},
{
full_name='list',
short_desc=N_("<Tab> and <EOL>"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='listchars', abbreviation='lcs',
@@ -1429,21 +1428,21 @@ return {
alloced=true,
redraw={'current_window'},
varname='p_lcs',
- defaults={if_true={vim="tab:> ,trail:-,nbsp:+"}}
+ defaults={if_true="tab:> ,trail:-,nbsp:+"}
},
{
full_name='loadplugins', abbreviation='lpl',
short_desc=N_("load plugin scripts when starting up"),
type='bool', scope={'global'},
varname='p_lpl',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='magic',
short_desc=N_("special characters in search patterns"),
type='bool', scope={'global'},
varname='p_magic',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='makeef', abbreviation='mef',
@@ -1452,14 +1451,14 @@ return {
secure=true,
expand=true,
varname='p_mef',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='makeencoding', abbreviation='menc',
short_desc=N_("Converts the output of external commands"),
type='string', scope={'global', 'buffer'},
varname='p_menc',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='makeprg', abbreviation='mp',
@@ -1468,7 +1467,7 @@ return {
secure=true,
expand=true,
varname='p_mp',
- defaults={if_true={vi="make"}}
+ defaults={if_true="make"}
},
{
full_name='matchpairs', abbreviation='mps',
@@ -1477,49 +1476,49 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_mps',
- defaults={if_true={vi="(:),{:},[:]"}}
+ defaults={if_true="(:),{:},[:]"}
},
{
full_name='matchtime', abbreviation='mat',
short_desc=N_("tenths of a second to show matching paren"),
type='number', scope={'global'},
varname='p_mat',
- defaults={if_true={vi=5}}
+ defaults={if_true=5}
},
{
full_name='maxcombine', abbreviation='mco',
short_desc=N_("maximum nr of combining characters displayed"),
type='number', scope={'global'},
varname='p_mco',
- defaults={if_true={vi=6}}
+ defaults={if_true=6}
},
{
full_name='maxfuncdepth', abbreviation='mfd',
short_desc=N_("maximum recursive depth for user functions"),
type='number', scope={'global'},
varname='p_mfd',
- defaults={if_true={vi=100}}
+ defaults={if_true=100}
},
{
full_name='maxmapdepth', abbreviation='mmd',
short_desc=N_("maximum recursive depth for mapping"),
type='number', scope={'global'},
varname='p_mmd',
- defaults={if_true={vi=1000}}
+ defaults={if_true=1000}
},
{
full_name='maxmempattern', abbreviation='mmp',
short_desc=N_("maximum memory (in Kbyte) used for pattern search"),
type='number', scope={'global'},
varname='p_mmp',
- defaults={if_true={vi=1000}}
+ defaults={if_true=1000}
},
{
full_name='menuitems', abbreviation='mis',
short_desc=N_("maximum number of items in a menu"),
type='number', scope={'global'},
varname='p_mis',
- defaults={if_true={vi=25}}
+ defaults={if_true=25}
},
{
full_name='mkspellmem', abbreviation='msm',
@@ -1528,14 +1527,14 @@ return {
secure=true,
expand=true,
varname='p_msm',
- defaults={if_true={vi="460000,2000,500"}}
+ defaults={if_true="460000,2000,500"}
},
{
full_name='modeline', abbreviation='ml',
short_desc=N_("recognize modelines at start or end of file"),
type='bool', scope={'buffer'},
varname='p_ml',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='modelineexpr', abbreviation='mle',
@@ -1543,14 +1542,14 @@ return {
type='bool', scope={'global'},
secure=true,
varname='p_mle',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='modelines', abbreviation='mls',
short_desc=N_("number of lines checked for modelines"),
type='number', scope={'global'},
varname='p_mls',
- defaults={if_true={vi=5}}
+ defaults={if_true=5}
},
{
full_name='modifiable', abbreviation='ma',
@@ -1558,7 +1557,7 @@ return {
type='bool', scope={'buffer'},
noglob=true,
varname='p_ma',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='modified', abbreviation='mod',
@@ -1567,21 +1566,21 @@ return {
no_mkrc=true,
redraw={'statuslines'},
varname='p_mod',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='more',
short_desc=N_("listings when the whole screen is filled"),
type='bool', scope={'global'},
varname='p_more',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='mouse',
short_desc=N_("the use of mouse clicks"),
type='string', list='flags', scope={'global'},
varname='p_mouse',
- defaults={if_true={vim=""}}
+ defaults={if_true=""}
},
{
full_name='mousefocus', abbreviation='mousef',
@@ -1589,21 +1588,21 @@ return {
type='bool', scope={'global'},
redraw={'ui_option'},
varname='p_mousef',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='mousehide', abbreviation='mh',
short_desc=N_("hide mouse pointer while typing"),
type='bool', scope={'global'},
enable_if=false,
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='mousemodel', abbreviation='mousem',
short_desc=N_("changes meaning of mouse buttons"),
type='string', scope={'global'},
varname='p_mousem',
- defaults={if_true={vi="extend"}}
+ defaults={if_true="extend"}
},
{
full_name='mouseshape', abbreviation='mouses',
@@ -1617,7 +1616,7 @@ return {
short_desc=N_("max time between mouse double-click"),
type='number', scope={'global'},
varname='p_mouset',
- defaults={if_true={vi=500}}
+ defaults={if_true=500}
},
{
full_name='nrformats', abbreviation='nf',
@@ -1626,21 +1625,21 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_nf',
- defaults={if_true={vim="bin,hex"}}
+ defaults={if_true="bin,hex"}
},
{
full_name='number', abbreviation='nu',
short_desc=N_("print the line number in front of each line"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='numberwidth', abbreviation='nuw',
short_desc=N_("number of columns used for the line number"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vim=4}}
+ defaults={if_true=4}
},
{
full_name='omnifunc', abbreviation='ofu',
@@ -1649,14 +1648,14 @@ return {
secure=true,
alloced=true,
varname='p_ofu',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='opendevice', abbreviation='odev',
short_desc=N_("allow reading/writing devices on MS-Windows"),
type='bool', scope={'global'},
enable_if=false,
- defaults={if_true={vim=false}}
+ defaults={if_true=false}
},
{
full_name='operatorfunc', abbreviation='opfunc',
@@ -1664,7 +1663,7 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_opfunc',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='packpath', abbreviation='pp',
@@ -1674,14 +1673,14 @@ return {
secure=true,
expand=true,
varname='p_pp',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='paragraphs', abbreviation='para',
short_desc=N_("nroff macros that separate paragraphs"),
type='string', scope={'global'},
varname='p_para',
- defaults={if_true={vi="IPLPPPQPP TPHPLIPpLpItpplpipbp"}}
+ defaults={if_true="IPLPPPQPP TPHPLIPpLpItpplpipbp"}
},
{
full_name='paste',
@@ -1689,14 +1688,14 @@ return {
type='bool', scope={'global'},
pri_mkrc=true,
varname='p_paste',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='pastetoggle', abbreviation='pt',
short_desc=N_("key code that causes 'paste' to toggle"),
type='string', scope={'global'},
varname='p_pt',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='patchexpr', abbreviation='pex',
@@ -1704,7 +1703,7 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_pex',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='patchmode', abbreviation='pm',
@@ -1712,7 +1711,7 @@ return {
type='string', scope={'global'},
normal_fname_chars=true,
varname='p_pm',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='path', abbreviation='pa',
@@ -1721,21 +1720,21 @@ return {
deny_duplicates=true,
expand=true,
varname='p_path',
- defaults={if_true={vi=".,/usr/include,,"}}
+ defaults={if_true=".,/usr/include,,"}
},
{
full_name='preserveindent', abbreviation='pi',
short_desc=N_("preserve the indent structure when reindenting"),
type='bool', scope={'buffer'},
varname='p_pi',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='previewheight', abbreviation='pvh',
short_desc=N_("height of the preview window"),
type='number', scope={'global'},
varname='p_pvh',
- defaults={if_true={vi=12}}
+ defaults={if_true=12}
},
{
full_name='previewwindow', abbreviation='pvw',
@@ -1743,7 +1742,7 @@ return {
type='bool', scope={'window'},
noglob=true,
redraw={'statuslines'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='printdevice', abbreviation='pdev',
@@ -1751,14 +1750,14 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_pdev',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='printencoding', abbreviation='penc',
short_desc=N_("encoding to be used for printing"),
type='string', scope={'global'},
varname='p_penc',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='printexpr', abbreviation='pexpr',
@@ -1766,35 +1765,35 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_pexpr',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='printfont', abbreviation='pfn',
short_desc=N_("name of the font to be used for :hardcopy"),
type='string', scope={'global'},
varname='p_pfn',
- defaults={if_true={vi="courier"}}
+ defaults={if_true="courier"}
},
{
full_name='printheader', abbreviation='pheader',
short_desc=N_("format of the header used for :hardcopy"),
type='string', scope={'global'},
varname='p_header',
- defaults={if_true={vi="%<%f%h%m%=Page %N"}}
+ defaults={if_true="%<%f%h%m%=Page %N"}
},
{
full_name='printmbcharset', abbreviation='pmbcs',
short_desc=N_("CJK character set to be used for :hardcopy"),
type='string', scope={'global'},
varname='p_pmcs',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='printmbfont', abbreviation='pmbfn',
short_desc=N_("font names to be used for CJK output of :hardcopy"),
type='string', scope={'global'},
varname='p_pmfn',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='printoptions', abbreviation='popt',
@@ -1802,14 +1801,14 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_popt',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='prompt',
short_desc=N_("enable prompt in Ex mode"),
type='bool', scope={'global'},
varname='p_force_on',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='pumblend', abbreviation='pb',
@@ -1817,21 +1816,21 @@ return {
type='number', scope={'global'},
redraw={'ui_option'},
varname='p_pb',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='pumheight', abbreviation='ph',
short_desc=N_("maximum height of the popup menu"),
type='number', scope={'global'},
varname='p_ph',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='pumwidth', abbreviation='pw',
short_desc=N_("minimum width of the popup menu"),
type='number', scope={'global'},
varname='p_pw',
- defaults={if_true={vi=15}}
+ defaults={if_true=15}
},
{
full_name='pyxversion', abbreviation='pyx',
@@ -1839,14 +1838,14 @@ return {
type='number', scope={'global'},
secure=true,
varname='p_pyx',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='quickfixtextfunc', abbreviation='qftf',
short_desc=N_("customize the quickfix window"),
type='string', scope={'global'},
varname='p_qftf',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='quoteescape', abbreviation='qe',
@@ -1854,7 +1853,7 @@ return {
type='string', scope={'buffer'},
alloced=true,
varname='p_qe',
- defaults={if_true={vi="\\"}}
+ defaults={if_true="\\"}
},
{
full_name='readonly', abbreviation='ro',
@@ -1863,63 +1862,63 @@ return {
noglob=true,
redraw={'statuslines'},
varname='p_ro',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='redrawdebug', abbreviation='rdb',
short_desc=N_("Changes the way redrawing works (debug)"),
type='string', list='onecomma', scope={'global'},
varname='p_rdb',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='redrawtime', abbreviation='rdt',
short_desc=N_("timeout for 'hlsearch' and |:match| highlighting"),
type='number', scope={'global'},
varname='p_rdt',
- defaults={if_true={vi=2000}}
+ defaults={if_true=2000}
},
{
full_name='regexpengine', abbreviation='re',
short_desc=N_("default regexp engine to use"),
type='number', scope={'global'},
varname='p_re',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='relativenumber', abbreviation='rnu',
short_desc=N_("show relative line number in front of each line"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='remap',
short_desc=N_("mappings to work recursively"),
type='bool', scope={'global'},
varname='p_remap',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='report',
short_desc=N_("for reporting nr. of lines changed"),
type='number', scope={'global'},
varname='p_report',
- defaults={if_true={vi=2}}
+ defaults={if_true=2}
},
{
full_name='revins', abbreviation='ri',
short_desc=N_("inserting characters will work backwards"),
type='bool', scope={'global'},
varname='p_ri',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='rightleft', abbreviation='rl',
short_desc=N_("window is right-to-left oriented"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='rightleftcmd', abbreviation='rlc',
@@ -1927,7 +1926,7 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="search"}}
+ defaults={if_true="search"}
},
{
full_name='ruler', abbreviation='ru',
@@ -1935,7 +1934,7 @@ return {
type='bool', scope={'global'},
redraw={'statuslines'},
varname='p_ru',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='rulerformat', abbreviation='ruf',
@@ -1945,7 +1944,7 @@ return {
modelineexpr=true,
redraw={'statuslines'},
varname='p_ruf',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='runtimepath', abbreviation='rtp',
@@ -1955,7 +1954,7 @@ return {
secure=true,
expand='nodefault',
varname='p_rtp',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='scroll', abbreviation='scr',
@@ -1963,7 +1962,7 @@ return {
type='number', scope={'window'},
no_mkrc=true,
pv_name='p_scroll',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='scrollback', abbreviation='scbk',
@@ -1971,21 +1970,21 @@ return {
type='number', scope={'buffer'},
varname='p_scbk',
redraw={'current_buffer'},
- defaults={if_true={vi=-1}}
+ defaults={if_true=-1}
},
{
full_name='scrollbind', abbreviation='scb',
short_desc=N_("scroll in window as other windows scroll"),
type='bool', scope={'window'},
pv_name='p_scbind',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='scrolljump', abbreviation='sj',
short_desc=N_("minimum number of lines to scroll"),
type='number', scope={'global'},
varname='p_sj',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='scrolloff', abbreviation='so',
@@ -1993,7 +1992,7 @@ return {
type='number', scope={'global', 'window'},
redraw={'all_windows'},
varname='p_so',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='scrollopt', abbreviation='sbo',
@@ -2001,14 +2000,14 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_sbo',
- defaults={if_true={vi="ver,jump"}}
+ defaults={if_true="ver,jump"}
},
{
full_name='sections', abbreviation='sect',
short_desc=N_("nroff macros that separate sections"),
type='string', scope={'global'},
varname='p_sections',
- defaults={if_true={vi="SHNHH HUnhsh"}}
+ defaults={if_true="SHNHH HUnhsh"}
},
{
full_name='secure',
@@ -2016,14 +2015,14 @@ return {
type='bool', scope={'global'},
secure=true,
varname='p_secure',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='selection', abbreviation='sel',
short_desc=N_("what type of selection to use"),
type='string', scope={'global'},
varname='p_sel',
- defaults={if_true={vi="inclusive"}}
+ defaults={if_true="inclusive"}
},
{
full_name='selectmode', abbreviation='slm',
@@ -2031,7 +2030,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_slm',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='sessionoptions', abbreviation='ssop',
@@ -2039,9 +2038,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_ssop',
- defaults={if_true={
- vim="blank,buffers,curdir,folds,help,tabpages,winsize"
- }}
+ defaults={if_true="blank,buffers,curdir,folds,help,tabpages,winsize"}
},
{
full_name='shada', abbreviation='sd',
@@ -2050,7 +2047,7 @@ return {
deny_duplicates=true,
secure=true,
varname='p_shada',
- defaults={if_true={vim="!,'100,<50,s10,h"}}
+ defaults={if_true="!,'100,<50,s10,h"}
},
{
full_name='shadafile', abbreviation='sdf',
@@ -2060,7 +2057,7 @@ return {
secure=true,
expand=true,
varname='p_shadafile',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='shell', abbreviation='sh',
@@ -2071,8 +2068,8 @@ return {
varname='p_sh',
defaults={
condition='WIN32',
- if_true={vi="cmd.exe"},
- if_false={vi="sh"}
+ if_true="cmd.exe",
+ if_false="sh"
}
},
{
@@ -2083,8 +2080,8 @@ return {
varname='p_shcf',
defaults={
condition='WIN32',
- if_true={vi="/s /c"},
- if_false={vi="-c"}
+ if_true="/s /c",
+ if_false="-c"
}
},
{
@@ -2095,8 +2092,8 @@ return {
varname='p_sp',
defaults={
condition='WIN32',
- if_true={vi=">%s 2>&1"},
- if_false={vi="| tee"},
+ if_true=">%s 2>&1",
+ if_false="| tee",
}
},
{
@@ -2105,7 +2102,7 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_shq',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='shellredir', abbreviation='srr',
@@ -2115,8 +2112,8 @@ return {
varname='p_srr',
defaults={
condition='WIN32',
- if_true={vi=">%s 2>&1"},
- if_false={vi=">"}
+ if_true=">%s 2>&1",
+ if_false=">"
}
},
{
@@ -2125,14 +2122,14 @@ return {
type='bool', scope={'global'},
varname='p_ssl',
enable_if='BACKSLASH_IN_FILENAME',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='shelltemp', abbreviation='stmp',
short_desc=N_("whether to use a temp file for shell commands"),
type='bool', scope={'global'},
varname='p_stmp',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='shellxquote', abbreviation='sxq',
@@ -2142,8 +2139,8 @@ return {
varname='p_sxq',
defaults={
condition='WIN32',
- if_true={vi="\""},
- if_false={vi=""},
+ if_true="\"",
+ if_false="",
}
},
{
@@ -2152,28 +2149,28 @@ return {
type='string', scope={'global'},
secure=true,
varname='p_sxe',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='shiftround', abbreviation='sr',
short_desc=N_("round indent to multiple of shiftwidth"),
type='bool', scope={'global'},
varname='p_sr',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='shiftwidth', abbreviation='sw',
short_desc=N_("number of spaces to use for (auto)indent step"),
type='number', scope={'buffer'},
varname='p_sw',
- defaults={if_true={vi=8}}
+ defaults={if_true=8}
},
{
full_name='shortmess', abbreviation='shm',
short_desc=N_("list of flags, reduce length of messages"),
type='string', list='flags', scope={'global'},
varname='p_shm',
- defaults={if_true={vim="filnxtToOF"}}
+ defaults={if_true="filnxtToOF"}
},
{
full_name='showbreak', abbreviation='sbr',
@@ -2181,35 +2178,35 @@ return {
type='string', scope={'global'},
redraw={'all_windows'},
varname='p_sbr',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='showcmd', abbreviation='sc',
short_desc=N_("show (partial) command in status line"),
type='bool', scope={'global'},
varname='p_sc',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='showfulltag', abbreviation='sft',
short_desc=N_("show full tag pattern when completing tag"),
type='bool', scope={'global'},
varname='p_sft',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='showmatch', abbreviation='sm',
short_desc=N_("briefly jump to matching bracket if insert one"),
type='bool', scope={'global'},
varname='p_sm',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='showmode', abbreviation='smd',
short_desc=N_("message on status line to show current mode"),
type='bool', scope={'global'},
varname='p_smd',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='showtabline', abbreviation='stal',
@@ -2217,14 +2214,14 @@ return {
type='number', scope={'global'},
redraw={'all_windows', 'ui_option'},
varname='p_stal',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='sidescroll', abbreviation='ss',
short_desc=N_("minimum number of columns to scroll horizontal"),
type='number', scope={'global'},
varname='p_ss',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='sidescrolloff', abbreviation='siso',
@@ -2232,7 +2229,7 @@ return {
type='number', scope={'global', 'window'},
redraw={'all_windows'},
varname='p_siso',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='signcolumn', abbreviation='scl',
@@ -2240,42 +2237,42 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi="auto"}}
+ defaults={if_true="auto"}
},
{
full_name='smartcase', abbreviation='scs',
short_desc=N_("no ignore case when pattern has uppercase"),
type='bool', scope={'global'},
varname='p_scs',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='smartindent', abbreviation='si',
short_desc=N_("smart autoindenting for C programs"),
type='bool', scope={'buffer'},
varname='p_si',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='smarttab', abbreviation='sta',
short_desc=N_("use 'shiftwidth' when inserting <Tab>"),
type='bool', scope={'global'},
varname='p_sta',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='softtabstop', abbreviation='sts',
short_desc=N_("number of spaces that <Tab> uses while editing"),
type='number', scope={'buffer'},
varname='p_sts',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='spell',
short_desc=N_("spell checking"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='spellcapcheck', abbreviation='spc',
@@ -2284,7 +2281,7 @@ return {
alloced=true,
redraw={'current_buffer'},
varname='p_spc',
- defaults={if_true={vi="[.?!]\\_[\\])'\" ]\\+"}}
+ defaults={if_true="[.?!]\\_[\\])'\" ]\\+"}
},
{
full_name='spellfile', abbreviation='spf',
@@ -2295,7 +2292,7 @@ return {
alloced=true,
expand=true,
varname='p_spf',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='spelllang', abbreviation='spl',
@@ -2306,7 +2303,7 @@ return {
expand=true,
redraw={'current_buffer'},
varname='p_spl',
- defaults={if_true={vi="en"}}
+ defaults={if_true="en"}
},
{
full_name='spellsuggest', abbreviation='sps',
@@ -2316,7 +2313,7 @@ return {
secure=true,
expand=true,
varname='p_sps',
- defaults={if_true={vi="best"}}
+ defaults={if_true="best"}
},
{
full_name='spelloptions', abbreviation='spo',
@@ -2325,21 +2322,21 @@ return {
secure=true,
expand=true,
varname='p_spo',
- defaults={if_true={vim=""}}
+ defaults={if_true=""}
},
{
full_name='splitbelow', abbreviation='sb',
short_desc=N_("new window from split is below the current one"),
type='bool', scope={'global'},
varname='p_sb',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='splitright', abbreviation='spr',
short_desc=N_("new window is put right of the current one"),
type='bool', scope={'global'},
varname='p_spr',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='startofline', abbreviation='sol',
@@ -2347,7 +2344,7 @@ return {
type='bool', scope={'global'},
vim=false,
varname='p_sol',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='statusline', abbreviation='stl',
@@ -2357,7 +2354,7 @@ return {
modelineexpr=true,
redraw={'statuslines'},
varname='p_stl',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='suffixes', abbreviation='su',
@@ -2365,7 +2362,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_su',
- defaults={if_true={vi=".bak,~,.o,.h,.info,.swp,.obj"}}
+ defaults={if_true=".bak,~,.o,.h,.info,.swp,.obj"}
},
{
full_name='suffixesadd', abbreviation='sua',
@@ -2374,7 +2371,7 @@ return {
deny_duplicates=true,
alloced=true,
varname='p_sua',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='swapfile', abbreviation='swf',
@@ -2382,7 +2379,7 @@ return {
type='bool', scope={'buffer'},
redraw={'statuslines'},
varname='p_swf',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='switchbuf', abbreviation='swb',
@@ -2390,7 +2387,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_swb',
- defaults={if_true={vi=""}}
+ defaults={if_true="uselast"}
},
{
full_name='synmaxcol', abbreviation='smc',
@@ -2398,7 +2395,7 @@ return {
type='number', scope={'buffer'},
redraw={'current_buffer'},
varname='p_smc',
- defaults={if_true={vi=3000}}
+ defaults={if_true=3000}
},
{
full_name='syntax', abbreviation='syn',
@@ -2408,14 +2405,14 @@ return {
normal_fname_chars=true,
alloced=true,
varname='p_syn',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='tagfunc', abbreviation='tfu',
short_desc=N_("function used to perform tag searches"),
type='string', scope={'buffer'},
varname='p_tfu',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='tabline', abbreviation='tal',
@@ -2424,14 +2421,14 @@ return {
modelineexpr=true,
redraw={'all_windows'},
varname='p_tal',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='tabpagemax', abbreviation='tpm',
short_desc=N_("maximum number of tab pages for |-p| and \"tab all\""),
type='number', scope={'global'},
varname='p_tpm',
- defaults={if_true={vim=50}}
+ defaults={if_true=50}
},
{
full_name='tabstop', abbreviation='ts',
@@ -2439,35 +2436,35 @@ return {
type='number', scope={'buffer'},
redraw={'current_buffer'},
varname='p_ts',
- defaults={if_true={vi=8}}
+ defaults={if_true=8}
},
{
full_name='tagbsearch', abbreviation='tbs',
short_desc=N_("use binary searching in tags files"),
type='bool', scope={'global'},
varname='p_tbs',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='tagcase', abbreviation='tc',
short_desc=N_("how to handle case when searching in tags files"),
type='string', scope={'global', 'buffer'},
varname='p_tc',
- defaults={if_true={vim="followic"}}
+ defaults={if_true="followic"}
},
{
full_name='taglength', abbreviation='tl',
short_desc=N_("number of significant characters for a tag"),
type='number', scope={'global'},
varname='p_tl',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='tagrelative', abbreviation='tr',
short_desc=N_("file names in tag file are relative"),
type='bool', scope={'global'},
varname='p_tr',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='tags', abbreviation='tag',
@@ -2476,27 +2473,27 @@ return {
deny_duplicates=true,
expand=true,
varname='p_tags',
- defaults={if_true={vi="./tags;,tags"}}
+ defaults={if_true="./tags;,tags"}
},
{
full_name='tagstack', abbreviation='tgst',
short_desc=N_("push tags onto the tag stack"),
type='bool', scope={'global'},
varname='p_tgst',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='termbidi', abbreviation='tbidi',
short_desc=N_("terminal takes care of bi-directionality"),
type='bool', scope={'global'},
varname='p_tbidi',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='termencoding', abbreviation='tenc',
short_desc=N_("Terminal encodig"),
type='string', scope={'global'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='termguicolors', abbreviation='tgc',
@@ -2504,21 +2501,21 @@ return {
type='bool', scope={'global'},
redraw={'ui_option'},
varname='p_tgc',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='termpastefilter', abbreviation='tpf',
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_tpf',
- defaults={if_true={vim="BS,HT,ESC,DEL"}}
+ defaults={if_true="BS,HT,ESC,DEL"}
},
{
full_name='terse',
short_desc=N_("hides notification of search wrap"),
type='bool', scope={'global'},
varname='p_terse',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='textwidth', abbreviation='tw',
@@ -2526,7 +2523,7 @@ return {
type='number', scope={'buffer'},
redraw={'current_buffer'},
varname='p_tw',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='thesaurus', abbreviation='tsr',
@@ -2536,42 +2533,42 @@ return {
normal_dname_chars=true,
expand=true,
varname='p_tsr',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='tildeop', abbreviation='top',
short_desc=N_("tilde command \"~\" behaves like an operator"),
type='bool', scope={'global'},
varname='p_to',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='timeout', abbreviation='to',
short_desc=N_("time out on mappings and key codes"),
type='bool', scope={'global'},
varname='p_timeout',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='timeoutlen', abbreviation='tm',
short_desc=N_("time out time in milliseconds"),
type='number', scope={'global'},
varname='p_tm',
- defaults={if_true={vi=1000}}
+ defaults={if_true=1000}
},
{
full_name='title',
short_desc=N_("Vim set the title of the window"),
type='bool', scope={'global'},
varname='p_title',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='titlelen',
short_desc=N_("of 'columns' used for window title"),
type='number', scope={'global'},
varname='p_titlelen',
- defaults={if_true={vi=85}}
+ defaults={if_true=85}
},
{
full_name='titleold',
@@ -2580,7 +2577,7 @@ return {
secure=true,
no_mkrc=true,
varname='p_titleold',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='titlestring',
@@ -2588,7 +2585,7 @@ return {
type='string', scope={'global'},
modelineexpr=true,
varname='p_titlestring',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='ttimeout',
@@ -2596,7 +2593,7 @@ return {
type='bool', scope={'global'},
redraw={'ui_option'},
varname='p_ttimeout',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='ttimeoutlen', abbreviation='ttm',
@@ -2604,7 +2601,7 @@ return {
type='number', scope={'global'},
redraw={'ui_option'},
varname='p_ttm',
- defaults={if_true={vi=50}}
+ defaults={if_true=50}
},
{
full_name='ttyfast', abbreviation='tf',
@@ -2612,7 +2609,7 @@ return {
type='bool', scope={'global'},
no_mkrc=true,
varname='p_force_on',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='undodir', abbreviation='udir',
@@ -2622,49 +2619,49 @@ return {
secure=true,
expand='nodefault',
varname='p_udir',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='undofile', abbreviation='udf',
short_desc=N_("save undo information in a file"),
type='bool', scope={'buffer'},
varname='p_udf',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='undolevels', abbreviation='ul',
short_desc=N_("maximum number of changes that can be undone"),
type='number', scope={'global', 'buffer'},
varname='p_ul',
- defaults={if_true={vi=1000}}
+ defaults={if_true=1000}
},
{
full_name='undoreload', abbreviation='ur',
short_desc=N_("max nr of lines to save for undo on a buffer reload"),
type='number', scope={'global'},
varname='p_ur',
- defaults={if_true={vi=10000}}
+ defaults={if_true=10000}
},
{
full_name='updatecount', abbreviation='uc',
short_desc=N_("after this many characters flush swap file"),
type='number', scope={'global'},
varname='p_uc',
- defaults={if_true={vi=200}}
+ defaults={if_true=200}
},
{
full_name='updatetime', abbreviation='ut',
short_desc=N_("after this many milliseconds flush swap file"),
type='number', scope={'global'},
varname='p_ut',
- defaults={if_true={vi=4000}}
+ defaults={if_true=4000}
},
{
full_name='varsofttabstop', abbreviation='vsts',
short_desc=N_("list of numbers of spaces that <Tab> uses while editing"),
type='string', list='comma', scope={'buffer'},
varname='p_vsts',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='vartabstop', abbreviation='vts',
@@ -2672,14 +2669,14 @@ return {
type='string', list='comma', scope={'buffer'},
varname='p_vts',
redraw={'current_buffer'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='verbose', abbreviation='vbs',
short_desc=N_("give informative messages"),
type='number', scope={'global'},
varname='p_verbose',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='verbosefile', abbreviation='vfile',
@@ -2688,7 +2685,7 @@ return {
secure=true,
expand=true,
varname='p_vfile',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='viewdir', abbreviation='vdir',
@@ -2697,7 +2694,7 @@ return {
secure=true,
expand='nodefault',
varname='p_vdir',
- defaults={if_true={vi=''}}
+ defaults={if_true=''}
},
{
full_name='viewoptions', abbreviation='vop',
@@ -2705,7 +2702,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_vop',
- defaults={if_true={vi="folds,options,cursor,curdir"}}
+ defaults={if_true="folds,cursor,curdir"}
},
{
-- Alias for "shada".
@@ -2726,42 +2723,42 @@ return {
deny_duplicates=true,
redraw={'curswant'},
varname='p_ve',
- defaults={if_true={vim=""}}
+ defaults={if_true=""}
},
{
full_name='visualbell', abbreviation='vb',
short_desc=N_("use visual bell instead of beeping"),
type='bool', scope={'global'},
varname='p_vb',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='warn',
short_desc=N_("for shell command when buffer was changed"),
type='bool', scope={'global'},
varname='p_warn',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='whichwrap', abbreviation='ww',
short_desc=N_("allow specified keys to cross line boundaries"),
type='string', list='flagscomma', scope={'global'},
varname='p_ww',
- defaults={if_true={vim="b,s"}}
+ defaults={if_true="b,s"}
},
{
full_name='wildchar', abbreviation='wc',
short_desc=N_("command-line character for wildcard expansion"),
type='number', scope={'global'},
varname='p_wc',
- defaults={if_true={vim=imacros('TAB')}}
+ defaults={if_true=imacros('TAB')}
},
{
full_name='wildcharm', abbreviation='wcm',
short_desc=N_("like 'wildchar' but also works when mapped"),
type='number', scope={'global'},
varname='p_wcm',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='wildignore', abbreviation='wig',
@@ -2769,21 +2766,21 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_wig',
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='wildignorecase', abbreviation='wic',
short_desc=N_("ignore case when completing file names"),
type='bool', scope={'global'},
varname='p_wic',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='wildmenu', abbreviation='wmnu',
short_desc=N_("use menu for command line completion"),
type='bool', scope={'global'},
varname='p_wmnu',
- defaults={if_true={vim=true}}
+ defaults={if_true=true}
},
{
full_name='wildmode', abbreviation='wim',
@@ -2791,7 +2788,7 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=false,
varname='p_wim',
- defaults={if_true={vim="full"}}
+ defaults={if_true="full"}
},
{
full_name='wildoptions', abbreviation='wop',
@@ -2799,21 +2796,21 @@ return {
type='string', list='onecomma', scope={'global'},
deny_duplicates=true,
varname='p_wop',
- defaults={if_true={vim='pum,tagfile'}}
+ defaults={if_true='pum,tagfile'}
},
{
full_name='winaltkeys', abbreviation='wak',
short_desc=N_("when the windows system handles ALT keys"),
type='string', scope={'global'},
varname='p_wak',
- defaults={if_true={vi="menu"}}
+ defaults={if_true="menu"}
},
{
full_name='winblend', abbreviation='winbl',
short_desc=N_("Controls transparency level for floating windows"),
type='number', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='winhighlight', abbreviation='winhl',
@@ -2821,105 +2818,105 @@ return {
type='string', scope={'window'},
alloced=true,
redraw={'current_window'},
- defaults={if_true={vi=""}}
+ defaults={if_true=""}
},
{
full_name='window', abbreviation='wi',
short_desc=N_("nr of lines to scroll for CTRL-F and CTRL-B"),
type='number', scope={'global'},
varname='p_window',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='winheight', abbreviation='wh',
short_desc=N_("minimum number of lines for the current window"),
type='number', scope={'global'},
varname='p_wh',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='winfixheight', abbreviation='wfh',
short_desc=N_("keep window height when opening/closing windows"),
type='bool', scope={'window'},
redraw={'statuslines'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='winfixwidth', abbreviation='wfw',
short_desc=N_("keep window width when opening/closing windows"),
type='bool', scope={'window'},
redraw={'statuslines'},
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='winminheight', abbreviation='wmh',
short_desc=N_("minimum number of lines for any window"),
type='number', scope={'global'},
varname='p_wmh',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='winminwidth', abbreviation='wmw',
short_desc=N_("minimal number of columns for any window"),
type='number', scope={'global'},
varname='p_wmw',
- defaults={if_true={vi=1}}
+ defaults={if_true=1}
},
{
full_name='winwidth', abbreviation='wiw',
short_desc=N_("minimal number of columns for current window"),
type='number', scope={'global'},
varname='p_wiw',
- defaults={if_true={vi=20}}
+ defaults={if_true=20}
},
{
full_name='wrap',
short_desc=N_("lines wrap and continue on the next line"),
type='bool', scope={'window'},
redraw={'current_window'},
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='wrapmargin', abbreviation='wm',
short_desc=N_("chars from the right where wrapping starts"),
type='number', scope={'buffer'},
varname='p_wm',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
{
full_name='wrapscan', abbreviation='ws',
short_desc=N_("searches wrap around the end of the file"),
type='bool', scope={'global'},
varname='p_ws',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='write',
short_desc=N_("to a file is allowed"),
type='bool', scope={'global'},
varname='p_write',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='writeany', abbreviation='wa',
short_desc=N_("write to file with no need for \"!\" override"),
type='bool', scope={'global'},
varname='p_wa',
- defaults={if_true={vi=false}}
+ defaults={if_true=false}
},
{
full_name='writebackup', abbreviation='wb',
short_desc=N_("make a backup before overwriting a file"),
type='bool', scope={'global'},
varname='p_wb',
- defaults={if_true={vi=true}}
+ defaults={if_true=true}
},
{
full_name='writedelay', abbreviation='wd',
short_desc=N_("delay this many msec for each char (for debug)"),
type='number', scope={'global'},
varname='p_wd',
- defaults={if_true={vi=0}}
+ defaults={if_true=0}
},
}
}
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 9fa06bf71e..e4030b76a3 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -2381,13 +2381,12 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
&& wp->w_p_culopt_flags != CULOPT_NBR) {
cul_screenline = (wp->w_p_wrap
&& (wp->w_p_culopt_flags & CULOPT_SCRLINE));
- cul_attr = win_hl_attr(wp, HLF_CUL);
- HlAttrs ae = syn_attr2entry(cul_attr);
-
- // We make a compromise here (#7383):
- // * low-priority CursorLine if fg is not set
- // * high-priority ("same as Vim" priority) CursorLine if fg is set
if (!cul_screenline) {
+ cul_attr = win_hl_attr(wp, HLF_CUL);
+ HlAttrs ae = syn_attr2entry(cul_attr);
+ // We make a compromise here (#7383):
+ // * low-priority CursorLine if fg is not set
+ // * high-priority ("same as Vim" priority) CursorLine if fg is set
if (ae.rgb_fg_color == -1 && ae.cterm_fg_color == 0) {
line_attr_lowprio = cul_attr;
} else {
@@ -2399,7 +2398,6 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
}
}
} else {
- cul_attr = 0;
margin_columns_win(wp, &left_curline_col, &right_curline_col);
}
area_highlighting = true;
@@ -2700,6 +2698,12 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
// Skip this quickly when working on the text.
if (draw_state != WL_LINE) {
+ if (cul_screenline) {
+ cul_attr = 0;
+ line_attr = line_attr_save;
+ line_attr_lowprio = line_attr_lowprio_save;
+ }
+
if (draw_state == WL_CMDLINE - 1 && n_extra == 0) {
draw_state = WL_CMDLINE;
if (cmdwin_type != 0 && wp == curwin) {
@@ -2855,9 +2859,6 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
if (diff_hlf != (hlf_T)0) {
char_attr = win_hl_attr(wp, diff_hlf);
- if (cul_attr) {
- char_attr = hl_combine_attr(char_attr, cul_attr);
- }
}
p_extra = NULL;
c_extra = ' ';
@@ -2943,21 +2944,20 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
}
}
- if (cul_screenline) {
- if (draw_state == WL_LINE
- && vcol >= left_curline_col
- && vcol < right_curline_col) {
- cul_attr = win_hl_attr(wp, HLF_CUL);
- HlAttrs ae = syn_attr2entry(cul_attr);
- if (ae.rgb_fg_color == -1 && ae.cterm_fg_color == 0) {
- line_attr_lowprio = cul_attr;
+ if (cul_screenline && draw_state == WL_LINE
+ && vcol >= left_curline_col
+ && vcol < right_curline_col) {
+ cul_attr = win_hl_attr(wp, HLF_CUL);
+ HlAttrs ae = syn_attr2entry(cul_attr);
+ if (ae.rgb_fg_color == -1 && ae.cterm_fg_color == 0) {
+ line_attr_lowprio = cul_attr;
+ } else {
+ if (!(State & INSERT) && bt_quickfix(wp->w_buffer)
+ && qf_current_entry(wp) == lnum) {
+ line_attr = hl_combine_attr(cul_attr, line_attr);
} else {
line_attr = cul_attr;
}
- } else {
- cul_attr = 0;
- line_attr = line_attr_save;
- line_attr_lowprio = line_attr_lowprio_save;
}
}
diff --git a/src/nvim/testdir/setup.vim b/src/nvim/testdir/setup.vim
index fcbc28fdc0..58ce0f1a4c 100644
--- a/src/nvim/testdir/setup.vim
+++ b/src/nvim/testdir/setup.vim
@@ -21,6 +21,14 @@ set undodir^=.
set wildoptions=
set startofline
set sessionoptions+=options
+set viewoptions+=options
+set switchbuf=
+
+" Unmap Nvim default mappings.
+unmap Y
+unmap <C-L>
+iunmap <C-U>
+iunmap <C-W>
" Prevent Nvim log from writing to stderr.
let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'
diff --git a/src/nvim/testdir/test_autocmd.vim b/src/nvim/testdir/test_autocmd.vim
index ad28118f16..c8138e5ca9 100644
--- a/src/nvim/testdir/test_autocmd.vim
+++ b/src/nvim/testdir/test_autocmd.vim
@@ -1955,7 +1955,7 @@ func Test_autocmd_sigusr1()
let g:sigusr1_passed = 0
au Signal SIGUSR1 let g:sigusr1_passed = 1
- call system('/bin/kill -s usr1 ' . getpid())
+ call system('kill -s usr1 ' . getpid())
call WaitForAssert({-> assert_true(g:sigusr1_passed)})
au! Signal
diff --git a/src/nvim/testdir/test_cursorline.vim b/src/nvim/testdir/test_cursorline.vim
index 4a0f2665fe..39d8b901ed 100644
--- a/src/nvim/testdir/test_cursorline.vim
+++ b/src/nvim/testdir/test_cursorline.vim
@@ -192,7 +192,29 @@ func Test_cursorline_screenline()
call term_sendkeys(buf, "gj")
call term_wait(buf)
call VerifyScreenDump(buf, 'Test_'. filename. '_18', {})
+ call term_sendkeys(buf, ":set breakindent& foldcolumn& signcolumn&\<cr>")
endif
+ " showbreak should not be highlighted with CursorLine when 'number' is off
+ call term_sendkeys(buf, "gg0")
+ call term_sendkeys(buf, ":set list cursorlineopt=screenline listchars=space:-\<cr>")
+ call term_sendkeys(buf, ":set nonumber\<cr>")
+ call VerifyScreenDump(buf, 'Test_'. filename. '_19', {})
+ call term_sendkeys(buf, "fagj")
+ call term_wait(buf)
+ call VerifyScreenDump(buf, 'Test_'. filename. '_20', {})
+ call term_sendkeys(buf, "gj")
+ call term_wait(buf)
+ call VerifyScreenDump(buf, 'Test_'. filename. '_21', {})
+ call term_sendkeys(buf, "gj")
+ call term_wait(buf)
+ call VerifyScreenDump(buf, 'Test_'. filename. '_22', {})
+ call term_sendkeys(buf, "gj")
+ call term_wait(buf)
+ call VerifyScreenDump(buf, 'Test_'. filename. '_23', {})
+ call term_sendkeys(buf, "gj")
+ call term_wait(buf)
+ call VerifyScreenDump(buf, 'Test_'. filename. '_24', {})
+ call term_sendkeys(buf, ":set list& cursorlineopt& listchars&\<cr>")
call StopVimInTerminal(buf)
call delete(filename)
diff --git a/src/nvim/testdir/test_diffmode.vim b/src/nvim/testdir/test_diffmode.vim
index 8592f48af7..5c9c1ce884 100644
--- a/src/nvim/testdir/test_diffmode.vim
+++ b/src/nvim/testdir/test_diffmode.vim
@@ -990,6 +990,37 @@ func Test_diff_with_cursorline()
call delete('Xtest_diff_cursorline')
endfunc
+func Test_diff_with_cursorline_breakindent()
+ CheckScreendump
+
+ call writefile([
+ \ 'hi CursorLine ctermbg=red ctermfg=white',
+ \ 'set noequalalways wrap diffopt=followwrap cursorline breakindent',
+ \ '50vnew',
+ \ 'call setline(1, [" "," "," "," "])',
+ \ 'exe "norm 20Afoo\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abar\<Esc>"',
+ \ 'vnew',
+ \ 'call setline(1, [" "," "," "," "])',
+ \ 'exe "norm 20Abee\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abaz\<Esc>"',
+ \ 'windo diffthis',
+ \ '2wincmd w',
+ \ ], 'Xtest_diff_cursorline_breakindent')
+ let buf = RunVimInTerminal('-S Xtest_diff_cursorline_breakindent', {})
+
+ call term_sendkeys(buf, "gg0")
+ call VerifyScreenDump(buf, 'Test_diff_with_cul_bri_01', {})
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_diff_with_cul_bri_02', {})
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_diff_with_cul_bri_03', {})
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_diff_with_cul_bri_04', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('Xtest_diff_cursorline_breakindent')
+endfunc
+
func Test_diff_with_syntax()
CheckScreendump
diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim
index 4ab58cd084..c155dbad50 100644
--- a/src/nvim/testdir/test_filetype.vim
+++ b/src/nvim/testdir/test_filetype.vim
@@ -263,6 +263,7 @@ let s:filename_checks = {
\ 'json': ['file.json', 'file.jsonp', 'file.json-patch', 'file.webmanifest', 'Pipfile.lock', 'file.ipynb'],
\ 'jsonc': ['file.jsonc'],
\ 'jsp': ['file.jsp'],
+ \ 'julia': ['file.jl'],
\ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file'],
\ 'kivy': ['file.kv'],
\ 'kix': ['file.kix'],
@@ -754,6 +755,7 @@ func Test_pp_file()
split Xfile.pp
call assert_equal('pascal', &filetype)
bwipe!
+ unlet g:filetype_pp
" Test dist#ft#FTpp()
call writefile(['{ pascal comment'], 'Xfile.pp')
diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim
index 5090584e41..283e7bbafe 100644
--- a/src/nvim/testdir/test_quickfix.vim
+++ b/src/nvim/testdir/test_quickfix.vim
@@ -1911,7 +1911,7 @@ func Test_switchbuf()
enew | only
set switchbuf=useopen
cexpr "Xqftestfile1:1:10"
- call assert_equal('', &switchbuf)
+ call assert_equal('uselast', &switchbuf)
call delete('Xqftestfile1')
call delete('Xqftestfile2')
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 03ef441ef3..a1b464af13 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -41,7 +41,13 @@ module.nvim_set = (
..' belloff= wildoptions-=pum noshowcmd noruler nomore redrawdebug=invalid')
module.nvim_argv = {
module.nvim_prog, '-u', 'NONE', '-i', 'NONE',
- '--cmd', module.nvim_set, '--embed'}
+ '--cmd', module.nvim_set,
+ '--cmd', 'unmap Y',
+ '--cmd', 'unmap <C-L>',
+ '--cmd', 'iunmap <C-U>',
+ '--cmd', 'iunmap <C-W>',
+ '--embed'}
+
-- Directory containing nvim.
module.nvim_dir = module.nvim_prog:gsub("[/\\][^/\\]+$", "")
if module.nvim_dir == module.nvim_prog then
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua
index 863176bfa9..3c4d01ae74 100644
--- a/test/functional/plugin/lsp_spec.lua
+++ b/test/functional/plugin/lsp_spec.lua
@@ -266,6 +266,8 @@ describe('LSP', function()
if isCI() then
pending('hangs the build on CI #14028, re-enable with freeze timeout #14204')
return
+ elseif helpers.skip_fragile(pending) then
+ return
end
local expected_handlers = {
{NIL, "shutdown", {}, 1, NIL};
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
index 7471255345..499aeba6ec 100644
--- a/test/functional/ui/highlight_spec.lua
+++ b/test/functional/ui/highlight_spec.lua
@@ -912,6 +912,97 @@ describe('CursorLine highlight', function()
]])
end)
+ it("'cursorlineopt' screenline", function()
+ local screen = Screen.new(20,5)
+ screen:set_default_attr_ids({
+ [1] = {foreground = Screen.colors.Black, background = Screen.colors.White};
+ [2] = {foreground = Screen.colors.Yellow};
+ [3] = {foreground = Screen.colors.Red, background = Screen.colors.Green};
+ [4] = {foreground = Screen.colors.Green, background = Screen.colors.Red};
+ })
+ screen:attach()
+
+ feed_command('set wrap cursorline cursorlineopt=screenline')
+ feed_command('set showbreak=>>>')
+ feed_command('highlight clear NonText')
+ feed_command('highlight clear CursorLine')
+ feed_command('highlight NonText guifg=Yellow gui=NONE')
+ feed_command('highlight LineNr guifg=Red guibg=Green gui=NONE')
+ feed_command('highlight CursorLine guifg=Black guibg=White gui=NONE')
+ feed_command('highlight CursorLineNr guifg=Green guibg=Red gui=NONE')
+
+ feed('30iø<esc>o<esc>30ia<esc>')
+
+ -- CursorLine should not apply to 'showbreak' when 'cursorlineopt' contains "screenline"
+ screen:expect([[
+ øøøøøøøøøøøøøøøøøøøø|
+ {2:>>>}øøøøøøøøøø |
+ aaaaaaaaaaaaaaaaaaaa|
+ {2:>>>}{1:aaaaaaaaa^a }|
+ |
+ ]])
+ feed('gk')
+ screen:expect([[
+ øøøøøøøøøøøøøøøøøøøø|
+ {2:>>>}øøøøøøøøøø |
+ {1:aaaaaaaaaaaa^aaaaaaaa}|
+ {2:>>>}aaaaaaaaaa |
+ |
+ ]])
+ feed('k')
+ screen:expect([[
+ {1:øøøøøøøøøøøø^øøøøøøøø}|
+ {2:>>>}øøøøøøøøøø |
+ aaaaaaaaaaaaaaaaaaaa|
+ {2:>>>}aaaaaaaaaa |
+ |
+ ]])
+
+ -- CursorLineNr should not apply to line number when 'cursorlineopt' does not contain "number"
+ feed_command('set relativenumber numberwidth=2')
+ screen:expect([[
+ {3:0 }{1:øøøøøøøøøøøø^øøøøøø}|
+ {3: }{2:>>>}øøøøøøøøøøøø |
+ {3:1 }aaaaaaaaaaaaaaaaaa|
+ {3: }{2:>>>}aaaaaaaaaaaa |
+ |
+ ]])
+
+ -- CursorLineNr should apply to line number when 'cursorlineopt' contains "number"
+ feed_command('set cursorlineopt+=number')
+ screen:expect([[
+ {4:0 }{1:øøøøøøøøøøøø^øøøøøø}|
+ {3: }{2:>>>}øøøøøøøøøøøø |
+ {3:1 }aaaaaaaaaaaaaaaaaa|
+ {3: }{2:>>>}aaaaaaaaaaaa |
+ |
+ ]])
+ feed('gj')
+ screen:expect([[
+ {4:0 }øøøøøøøøøøøøøøøøøø|
+ {3: }{2:>>>}{1:øøøøøøøøø^øøø }|
+ {3:1 }aaaaaaaaaaaaaaaaaa|
+ {3: }{2:>>>}aaaaaaaaaaaa |
+ |
+ ]])
+ feed('gj')
+ screen:expect([[
+ {3:1 }øøøøøøøøøøøøøøøøøø|
+ {3: }{2:>>>}øøøøøøøøøøøø |
+ {4:0 }{1:aaaaaaaaaaaa^aaaaaa}|
+ {3: }{2:>>>}aaaaaaaaaaaa |
+ |
+ ]])
+ feed('gj')
+ screen:expect([[
+ {3:1 }øøøøøøøøøøøøøøøøøø|
+ {3: }{2:>>>}øøøøøøøøøøøø |
+ {4:0 }aaaaaaaaaaaaaaaaaa|
+ {3: }{2:>>>}{1:aaaaaaaaa^aaa }|
+ |
+ ]])
+ end)
+
it('always updated. vim-patch:8.1.0849', function()
local screen = Screen.new(50,5)
screen:set_default_attr_ids({
diff --git a/test/unit/preprocess.lua b/test/unit/preprocess.lua
index 3786bc2122..1073855a7d 100644
--- a/test/unit/preprocess.lua
+++ b/test/unit/preprocess.lua
@@ -89,10 +89,6 @@ local Gcc = {
get_defines_extra_flags = {'-std=c99', '-dM', '-E'},
get_declarations_extra_flags = {'-std=c99', '-P', '-E'},
}
-if ffi.abi("32bit") then
- table.insert(Gcc.get_defines_extra_flags, '-m32')
- table.insert(Gcc.get_declarations_extra_flags, '-m32')
-end
function Gcc:define(name, args, val)
local define = '-D' .. name