Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df36514a64 | ||
|
|
97a6c6a1fb | ||
|
|
5f8ed7408a | ||
|
|
551c1aed65 | ||
|
|
2bf6034e5c | ||
|
|
1bb0da25a6 | ||
|
|
4c295027a4 | ||
|
|
5f628a12e5 | ||
|
|
4a22897591 | ||
|
|
3d0e7a956a | ||
|
|
b6c2e9a010 | ||
|
|
4934ed34c3 | ||
|
|
aeed2a6359 | ||
|
|
227c58a486 | ||
|
|
03717bf6a2 | ||
|
|
b80d2fb0e7 | ||
|
|
b06b50dfa0 | ||
|
|
bb01a1ef3a | ||
|
|
5930ddcd25 | ||
|
|
b98cec28d9 | ||
|
|
d386e923c7 | ||
|
|
dc4c2309f2 | ||
|
|
730bf30020 | ||
|
|
340c59ec6f | ||
|
|
bdc0f1c698 | ||
|
|
96cf4ba8fb | ||
|
|
7ba1e4d363 | ||
|
|
e0c03c8e10 | ||
|
|
a6aa16423f | ||
|
|
f6d9935a13 | ||
|
|
9f28416e54 | ||
|
|
11e3c5ba82 | ||
|
|
459fbdbf92 | ||
|
|
a369c3d9c1 | ||
|
|
2d5f385cee | ||
|
|
753bcf8c7d | ||
|
|
169502fb0b | ||
|
|
16678eb50f | ||
|
|
d23f8bde5c | ||
|
|
9ce47ec0b6 | ||
|
|
5c787fb792 | ||
|
|
63276685f9 | ||
|
|
8238f08838 | ||
|
|
3f88e71fa2 | ||
|
|
6d4c1c7ba8 | ||
|
|
4f2df37a0d | ||
|
|
2d1c57ed3d | ||
|
|
4c13721482 | ||
|
|
e8209b91b9 | ||
|
|
39211cba72 | ||
|
|
b7c21afef1 | ||
|
|
d551d6c268 | ||
|
|
f7e92aae15 | ||
|
|
d23b714d8b | ||
|
|
51e933261b | ||
|
|
0995c81f2f | ||
|
|
c70fe460b0 | ||
|
|
6c7cc347af | ||
|
|
56994d2158 | ||
|
|
112a006417 | ||
|
|
635bd60804 | ||
|
|
aa1959bd5e | ||
|
|
fe090eb58f | ||
|
|
6bc00699c5 | ||
|
|
f387f5dfbc | ||
|
|
bd6406f15d | ||
|
|
b141926890 | ||
|
|
0e3ff19196 | ||
|
|
b47bed2f7a | ||
|
|
a3589a0d6c | ||
|
|
f62d73933a | ||
|
|
2e240bd428 | ||
|
|
f6a8d420a8 | ||
|
|
f2253963c2 | ||
|
|
f48b2fa33c | ||
|
|
68452177ca |
11
.github/CODEOWNERS
vendored
11
.github/CODEOWNERS
vendored
@@ -22,6 +22,7 @@ runtime/autoload/vimball.vim @cecamp
|
||||
runtime/autoload/xmlformat.vim @chrisbra
|
||||
runtime/autoload/zip.vim @cecamp
|
||||
runtime/compiler/checkstyle.vim @dkearns
|
||||
runtime/compiler/cm3.vim @dkearns
|
||||
runtime/compiler/cucumber.vim @tpope
|
||||
runtime/compiler/dart.vim @dkearns
|
||||
runtime/compiler/dart2js.vim @dkearns
|
||||
@@ -77,6 +78,7 @@ runtime/ftplugin/css.vim @dkearns
|
||||
runtime/ftplugin/cucumber.vim @tpope
|
||||
runtime/ftplugin/eiffel.vim @dkearns
|
||||
runtime/ftplugin/eruby.vim @tpope @dkearns
|
||||
runtime/ftplugin/fpcmake.vim @dkearns
|
||||
runtime/ftplugin/freebasic.vim @dkearns
|
||||
runtime/ftplugin/git.vim @tpope
|
||||
runtime/ftplugin/gitcommit.vim @tpope
|
||||
@@ -90,10 +92,14 @@ runtime/ftplugin/javascript.vim @dkearns
|
||||
runtime/ftplugin/javascriptreact.vim @dkearns
|
||||
runtime/ftplugin/kconfig.vim @chrisbra
|
||||
runtime/ftplugin/liquid.vim @tpope
|
||||
runtime/ftplugin/m3build.vim @dkearns
|
||||
runtime/ftplugin/m3quake.vim @dkearns
|
||||
runtime/ftplugin/markdown.vim @tpope
|
||||
runtime/ftplugin/matlab.vim @cecamp
|
||||
runtime/ftplugin/modula3.vim @dkearns
|
||||
runtime/ftplugin/nroff.vim @a-vrma
|
||||
runtime/ftplugin/nsis.vim @k-takata
|
||||
runtime/ftplugin/pascal.vim @dkearns
|
||||
runtime/ftplugin/pdf.vim @tpope
|
||||
runtime/ftplugin/ps1.vim @heaths
|
||||
runtime/ftplugin/ps1xml.vim @heaths
|
||||
@@ -153,6 +159,7 @@ runtime/syntax/dtd.vim @chrisbra
|
||||
runtime/syntax/elmfilt.vim @cecamp
|
||||
runtime/syntax/eruby.vim @tpope @dkearns
|
||||
runtime/syntax/exports.vim @cecamp
|
||||
runtime/syntax/fpcmake.vim @dkearns
|
||||
runtime/syntax/git.vim @tpope
|
||||
runtime/syntax/gitcommit.vim @tpope
|
||||
runtime/syntax/gitconfig.vim @tpope
|
||||
@@ -167,13 +174,17 @@ runtime/syntax/lex.vim @cecamp
|
||||
runtime/syntax/liquid.vim @tpope
|
||||
runtime/syntax/lisp.vim @cecamp
|
||||
runtime/syntax/lynx.vim @dkearns
|
||||
runtime/syntax/m3build.vim @dkearns
|
||||
runtime/syntax/m3quake.vim @dkearns
|
||||
runtime/syntax/mailcap.vim @dkearns
|
||||
runtime/syntax/make.vim @rohieb
|
||||
runtime/syntax/maple.vim @cecamp
|
||||
runtime/syntax/markdown.vim @tpope
|
||||
runtime/syntax/modula3.vim @dkearns
|
||||
runtime/syntax/netrw.vim @cecamp
|
||||
runtime/syntax/nroff.vim @jmarshall
|
||||
runtime/syntax/nsis.vim @k-takata
|
||||
runtime/syntax/pascal.vim @dkearns
|
||||
runtime/syntax/pdf.vim @tpope
|
||||
runtime/syntax/php.vim @TysonAndre
|
||||
runtime/syntax/privoxy.vim @dkearns
|
||||
|
||||
4
Filelist
4
Filelist
@@ -437,7 +437,6 @@ SRC_UNIX = \
|
||||
src/gui_gtk_x11.c \
|
||||
src/gui_gtk_res.xml \
|
||||
src/gui_motif.c \
|
||||
src/gui_xim.c \
|
||||
src/gui_xmdlg.c \
|
||||
src/gui_xmebw.c \
|
||||
src/gui_xmebw.h \
|
||||
@@ -461,7 +460,6 @@ SRC_UNIX = \
|
||||
src/proto/gui_gtk_x11.pro \
|
||||
src/proto/gui_gtk_gresources.pro \
|
||||
src/proto/gui_motif.pro \
|
||||
src/proto/gui_xim.pro \
|
||||
src/proto/gui_xmdlg.pro \
|
||||
src/proto/gui_x11.pro \
|
||||
src/proto/if_xcmdsrv.pro \
|
||||
@@ -481,6 +479,7 @@ SRC_UNIX = \
|
||||
|
||||
# source files for both DOS and Unix
|
||||
SRC_DOS_UNIX = \
|
||||
src/gui_xim.c \
|
||||
src/if_cscope.c \
|
||||
src/if_cscope.h \
|
||||
src/if_lua.c \
|
||||
@@ -493,6 +492,7 @@ SRC_DOS_UNIX = \
|
||||
src/if_py_both.h \
|
||||
src/if_ruby.c \
|
||||
src/if_tcl.c \
|
||||
src/proto/gui_xim.pro \
|
||||
src/proto/if_cscope.pro \
|
||||
src/proto/if_lua.pro \
|
||||
src/proto/if_mzsch.pro \
|
||||
|
||||
29
README.md
29
README.md
@@ -7,12 +7,14 @@
|
||||
|
||||
## What is Vim? ##
|
||||
|
||||
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
|
||||
Vim is a greatly improved version of the good old UNIX editor
|
||||
[Vi](https://en.wikipedia.org/wiki/Vi). Many new
|
||||
features have been added: multi-level undo, syntax highlighting, command line
|
||||
history, on-line help, spell checking, filename completion, block operations,
|
||||
script language, etc. There is also a Graphical User Interface (GUI)
|
||||
available. Still, Vi compatibility is maintained, those who have Vi "in the
|
||||
fingers" will feel at home. See `runtime/doc/vi_diff.txt` for differences with
|
||||
fingers" will feel at home.
|
||||
See [`runtime/doc/vi_diff.txt`](runtime/doc/vi_diff.txt) for differences with
|
||||
Vi.
|
||||
|
||||
This editor is very useful for editing programs and other plain text files.
|
||||
@@ -42,7 +44,7 @@ want or must compile it yourself. Check http://www.vim.org/download.php for
|
||||
an overview of currently available distributions.
|
||||
|
||||
Some popular places to get the latest Vim:
|
||||
* Check out the git repository from [github](https://github.com/vim/vim).
|
||||
* Check out the git repository from [GitHub](https://github.com/vim/vim).
|
||||
* Get the source code as an [archive](https://github.com/vim/vim/releases).
|
||||
* Get a Windows executable from the
|
||||
[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases) repository.
|
||||
@@ -53,14 +55,14 @@ Some popular places to get the latest Vim:
|
||||
|
||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
||||
`src` directory. See `src/INSTALL` for instructions.
|
||||
[`src`](/src) directory. See [`src/INSTALL`](src/INSTALL) for instructions.
|
||||
|
||||
|
||||
## Installation ##
|
||||
|
||||
See one of these files for system-specific instructions. Either in the
|
||||
READMEdir directory (in the repository) or the top directory (if you unpack an
|
||||
archive):
|
||||
[READMEdir directory](./READMEdir/) (in the repository) or
|
||||
the top directory (if you unpack an archive):
|
||||
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
@@ -78,8 +80,9 @@ The Vim tutor is a one hour training course for beginners. Often it can be
|
||||
started as `vimtutor`. See `:help tutor` for more information.
|
||||
|
||||
The best is to use `:help` in Vim. If you don't have an executable yet, read
|
||||
`runtime/doc/help.txt`. It contains pointers to the other documentation
|
||||
files. The User Manual reads like a book and is recommended to learn to use
|
||||
[`runtime/doc/help.txt`](/runtime/doc/help.txt).
|
||||
It contains pointers to the other documentation files.
|
||||
The User Manual reads like a book and is recommended to learn to use
|
||||
Vim. See `:help user-manual`.
|
||||
|
||||
|
||||
@@ -87,7 +90,8 @@ Vim. See `:help user-manual`.
|
||||
|
||||
Vim is Charityware. You can use and copy it as much as you like, but you are
|
||||
encouraged to make a donation to help orphans in Uganda. Please read the file
|
||||
`runtime/doc/uganda.txt` for details (do `:help uganda` inside Vim).
|
||||
[`runtime/doc/uganda.txt`](runtime/doc/uganda.txt)
|
||||
for details (do `:help uganda` inside Vim).
|
||||
|
||||
Summary of the license: There are no restrictions on using or distributing an
|
||||
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
||||
@@ -103,8 +107,8 @@ your appreciation for the work and motivate Bram and others to continue
|
||||
working on Vim please send a donation.
|
||||
|
||||
Since Bram is back to a paid job the money will now be used to help children
|
||||
in Uganda. See `runtime/doc/uganda.txt`. But at the same time donations
|
||||
increase Bram's motivation to keep working on Vim!
|
||||
in Uganda. See [`runtime/doc/uganda.txt`](runtime/doc/uganda.txt). But
|
||||
at the same time donations increase Bram's motivation to keep working on Vim!
|
||||
|
||||
For the most recent information about sponsoring look on the Vim web site:
|
||||
http://www.vim.org/sponsor/
|
||||
@@ -112,7 +116,8 @@ For the most recent information about sponsoring look on the Vim web site:
|
||||
|
||||
## Contributing ##
|
||||
|
||||
If you would like to help making Vim better, see the [CONTRIBUTING.md](https://github.com/vim/vim/blob/master/CONTRIBUTING.md) file.
|
||||
If you would like to help making Vim better, see the
|
||||
[CONTRIBUTING.md](/CONTRIBUTING.md) file.
|
||||
|
||||
|
||||
## Information ##
|
||||
|
||||
@@ -1,28 +1,12 @@
|
||||
README_mac.txt for version 8.2 of Vim: Vi IMproved.
|
||||
|
||||
This file explains the installation of Vim on Macintosh systems.
|
||||
This file explains the installation of Vim on MacOS systems.
|
||||
See "README.txt" for general information about Vim.
|
||||
|
||||
To build from source get the files with git from https://github.com/vim/vim.
|
||||
The find the instructions in src/INSTALLmac.txt.
|
||||
|
||||
To build from sources, like on Unix
|
||||
|
||||
1. Get the build tools: "clang" and "make". These can be installed with the
|
||||
"CommandLineTools" package. If you don't have one, do
|
||||
xcode-select --install
|
||||
Just like for any software development with OS X.
|
||||
|
||||
2. Get the source code. Best is to use git (which you need to install first),
|
||||
see http://www.vim.org/git.php
|
||||
Or you can download and unpack the Unix tar archive, see
|
||||
http://www.vim.org/download.php
|
||||
|
||||
3. Go to the top directory of the source tree, do
|
||||
make
|
||||
sudo make install
|
||||
A newly built vim will be installed under "/usr/local".
|
||||
|
||||
|
||||
If you can't manage to make this work, there is a fallback using Homebrew:
|
||||
|
||||
Installing Vim using Homebrew:
|
||||
1. Install Homebrew from http://brew.sh/
|
||||
2. Install latest Vim with: brew install vim
|
||||
2. Install the latest Vim with:
|
||||
brew install vim
|
||||
|
||||
@@ -66,6 +66,9 @@ To build the installable .exe:
|
||||
|
||||
Install NSIS if you didn't do that already.
|
||||
Also install UPX, if you want a compressed file.
|
||||
Download and include the ShellExecAsUser.dll Unicode version which can be
|
||||
sourced from: https://nsis.sourceforge.io/ShellExecAsUser_plug-in
|
||||
|
||||
|
||||
Unpack the images:
|
||||
cd nsis
|
||||
|
||||
@@ -119,9 +119,9 @@ RequestExecutionLevel highest
|
||||
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_LICENSEPAGE_CHECKBOX
|
||||
!define MUI_FINISHPAGE_RUN "$0\gvim.exe"
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION LaunchApplication
|
||||
!define MUI_FINISHPAGE_RUN_TEXT $(str_show_readme)
|
||||
!define MUI_FINISHPAGE_RUN_PARAMETERS "-R $\"$0\README.txt$\""
|
||||
|
||||
# This adds '\Vim' to the user choice automagically. The actual value is
|
||||
# obtained below with CheckOldVim.
|
||||
@@ -300,6 +300,11 @@ Function CheckOldVim
|
||||
Exch $0 # put $0 on top of stack, restore $0 to original value
|
||||
FunctionEnd
|
||||
|
||||
Function LaunchApplication
|
||||
SetOutPath $0
|
||||
ShellExecAsUser::ShellExecAsUser "" "$0\gvim.exe" '-R "$0\README.txt"'
|
||||
FunctionEnd
|
||||
|
||||
##########################################################
|
||||
Section "$(str_section_old_ver)" id_section_old_ver
|
||||
SectionIn 1 2 3 RO
|
||||
|
||||
@@ -24,7 +24,7 @@ LangString ^UninstallCaption ${LANG_ENGLISH} \
|
||||
# "Destination Folder (Must end with $\"vim$\")"
|
||||
|
||||
LangString str_show_readme ${LANG_ENGLISH} \
|
||||
"Show README after installation finish"
|
||||
"Show README after installation finished"
|
||||
|
||||
# Install types:
|
||||
LangString str_type_typical ${LANG_ENGLISH} \
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
" Vim completion script
|
||||
" Language: All languages, uses existing syntax highlighting rules
|
||||
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
||||
" Version: 14.0
|
||||
" Last Change: 2020 Dec 30
|
||||
" Version: 15.0
|
||||
" Last Change: 2021 Apr 27
|
||||
" Usage: For detailed help, ":help ft-syntax-omni"
|
||||
|
||||
" History
|
||||
"
|
||||
" Version 15.0
|
||||
" - SyntaxComplete ignored all buffer specific overrides, always used global
|
||||
" https://github.com/vim/vim/issues/8153
|
||||
"
|
||||
" Version 14.0
|
||||
" - Fixed issue with single quotes and is_keyword
|
||||
" https://github.com/vim/vim/issues/7463
|
||||
@@ -42,7 +46,7 @@
|
||||
" let g:omni_syntax_use_single_byte = 1
|
||||
" - This by default will only allow single byte ASCII
|
||||
" characters to be added and an additional check to ensure
|
||||
" the charater is printable (see documentation for isprint).
|
||||
" the character is printable (see documentation for isprint).
|
||||
"
|
||||
" Version 9.0
|
||||
" - Add the check for cpo.
|
||||
@@ -90,7 +94,7 @@ endif
|
||||
if exists('g:loaded_syntax_completion')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntax_completion = 130
|
||||
let g:loaded_syntax_completion = 150
|
||||
|
||||
" Turn on support for line continuations when creating the script
|
||||
let s:cpo_save = &cpo
|
||||
@@ -145,14 +149,10 @@ let s:prepended = ''
|
||||
" This function is used for the 'omnifunc' option.
|
||||
function! syntaxcomplete#Complete(findstart, base)
|
||||
|
||||
" Only display items in the completion window that are at least
|
||||
" this many characters in length
|
||||
if !exists('b:omni_syntax_ignorecase')
|
||||
if exists('g:omni_syntax_ignorecase')
|
||||
let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase
|
||||
else
|
||||
let b:omni_syntax_ignorecase = &ignorecase
|
||||
endif
|
||||
" Allow user to override ignorecase per buffer
|
||||
let l:omni_syntax_ignorecase = g:omni_syntax_ignorecase
|
||||
if exists('b:omni_syntax_ignorecase')
|
||||
let l:omni_syntax_ignorecase = b:omni_syntax_ignorecase
|
||||
endif
|
||||
|
||||
if a:findstart
|
||||
@@ -183,7 +183,6 @@ function! syntaxcomplete#Complete(findstart, base)
|
||||
endif
|
||||
|
||||
" let base = s:prepended . a:base
|
||||
" let base = s:prepended
|
||||
let base = substitute(s:prepended, "'", "''", 'g')
|
||||
|
||||
let filetype = substitute(&filetype, '\.', '_', 'g')
|
||||
@@ -200,13 +199,13 @@ function! syntaxcomplete#Complete(findstart, base)
|
||||
|
||||
if base != ''
|
||||
" let compstr = join(compl_list, ' ')
|
||||
" let expr = (b:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
|
||||
" let expr = (l:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
|
||||
" let compstr = substitute(compstr, expr, '', 'g')
|
||||
" let compl_list = split(compstr, '\s\+')
|
||||
|
||||
" Filter the list based on the first few characters the user
|
||||
" entered
|
||||
let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
|
||||
let expr = 'v:val '.(l:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
|
||||
let compl_list = filter(deepcopy(compl_list), expr)
|
||||
endif
|
||||
|
||||
@@ -227,6 +226,26 @@ function! syntaxcomplete#OmniSyntaxList(...)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
function! syntaxcomplete#OmniSyntaxClearCache()
|
||||
let s:cache_name = []
|
||||
let s:cache_list = []
|
||||
endfunction
|
||||
|
||||
" To retrieve all syntax items regardless of syntax group:
|
||||
" echo OmniSyntaxList( [] )
|
||||
"
|
||||
" To retrieve only the syntax items for the sqlOperator syntax group:
|
||||
" echo OmniSyntaxList( ['sqlOperator'] )
|
||||
"
|
||||
" To retrieve all syntax items for both the sqlOperator and sqlType groups:
|
||||
" echo OmniSyntaxList( ['sqlOperator', 'sqlType'] )
|
||||
"
|
||||
" A regular expression can also be used:
|
||||
" echo OmniSyntaxList( ['sql\w\+'] )
|
||||
"
|
||||
" From within a plugin, you would typically assign the output to a List: >
|
||||
" let myKeywords = []
|
||||
" let myKeywords = OmniSyntaxList( ['sqlKeyword'] )
|
||||
function! OmniSyntaxList(...)
|
||||
let list_parms = []
|
||||
if a:0 > 0
|
||||
@@ -244,37 +263,25 @@ function! OmniSyntaxList(...)
|
||||
" let use_dictionary = a:1
|
||||
" endif
|
||||
|
||||
" Only display items in the completion window that are at least
|
||||
" this many characters in length
|
||||
if !exists('b:omni_syntax_use_iskeyword')
|
||||
if exists('g:omni_syntax_use_iskeyword')
|
||||
let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
|
||||
else
|
||||
let b:omni_syntax_use_iskeyword = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
" Only display items in the completion window that are at least
|
||||
" this many characters in length
|
||||
if !exists('b:omni_syntax_minimum_length')
|
||||
if exists('g:omni_syntax_minimum_length')
|
||||
let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length
|
||||
else
|
||||
let b:omni_syntax_minimum_length = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
let saveL = @l
|
||||
let filetype = substitute(&filetype, '\.', '_', 'g')
|
||||
|
||||
if empty(list_parms)
|
||||
" Allow user to override per buffer
|
||||
if exists('g:omni_syntax_group_include_'.filetype)
|
||||
let l:omni_syntax_group_include_{filetype} = g:omni_syntax_group_include_{filetype}
|
||||
endif
|
||||
if exists('b:omni_syntax_group_include_'.filetype)
|
||||
let l:omni_syntax_group_include_{filetype} = b:omni_syntax_group_include_{filetype}
|
||||
endif
|
||||
|
||||
" Default the include group to include the requested syntax group
|
||||
let syntax_group_include_{filetype} = ''
|
||||
" Check if there are any overrides specified for this filetype
|
||||
if exists('g:omni_syntax_group_include_'.filetype)
|
||||
if exists('l:omni_syntax_group_include_'.filetype)
|
||||
let syntax_group_include_{filetype} =
|
||||
\ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g')
|
||||
let list_parms = split(g:omni_syntax_group_include_{filetype}, ',')
|
||||
\ substitute( l:omni_syntax_group_include_{filetype},'\s\+','','g')
|
||||
let list_parms = split(l:omni_syntax_group_include_{filetype}, ',')
|
||||
if syntax_group_include_{filetype} =~ '\w'
|
||||
let syntax_group_include_{filetype} =
|
||||
\ substitute( syntax_group_include_{filetype},
|
||||
@@ -329,11 +336,20 @@ function! OmniSyntaxList(...)
|
||||
else
|
||||
" Default the exclude group to nothing
|
||||
let syntax_group_exclude_{filetype} = ''
|
||||
" Check if there are any overrides specified for this filetype
|
||||
|
||||
" Allow user to override per buffer
|
||||
if exists('g:omni_syntax_group_exclude_'.filetype)
|
||||
let l:omni_syntax_group_exclude_{filetype} = g:omni_syntax_group_exclude_{filetype}
|
||||
endif
|
||||
if exists('b:omni_syntax_group_exclude_'.filetype)
|
||||
let l:omni_syntax_group_exclude_{filetype} = b:omni_syntax_group_exclude_{filetype}
|
||||
endif
|
||||
|
||||
" Check if there are any overrides specified for this filetype
|
||||
if exists('l:omni_syntax_group_exclude_'.filetype)
|
||||
let syntax_group_exclude_{filetype} =
|
||||
\ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g')
|
||||
let list_exclude_groups = split(g:omni_syntax_group_exclude_{filetype}, ',')
|
||||
\ substitute( l:omni_syntax_group_exclude_{filetype},'\s\+','','g')
|
||||
let list_exclude_groups = split(l:omni_syntax_group_exclude_{filetype}, ',')
|
||||
if syntax_group_exclude_{filetype} =~ '\w'
|
||||
let syntax_group_exclude_{filetype} =
|
||||
\ substitute( syntax_group_exclude_{filetype},
|
||||
@@ -529,6 +545,30 @@ endfunction
|
||||
|
||||
function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
|
||||
|
||||
" Allow user to override iskeyword per buffer
|
||||
let l:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
|
||||
if exists('b:omni_syntax_use_iskeyword')
|
||||
let l:omni_syntax_use_iskeyword = b:omni_syntax_use_iskeyword
|
||||
endif
|
||||
|
||||
" Allow user to override iskeyword_numeric per buffer
|
||||
let l:omni_syntax_use_iskeyword_numeric = g:omni_syntax_use_iskeyword_numeric
|
||||
if exists('b:omni_syntax_use_iskeyword_numeric')
|
||||
let l:omni_syntax_use_iskeyword_numeric = b:omni_syntax_use_iskeyword_numeric
|
||||
endif
|
||||
|
||||
" Allow user to override iskeyword_numeric per buffer
|
||||
let l:omni_syntax_use_single_byte = g:omni_syntax_use_single_byte
|
||||
if exists('b:omni_syntax_use_single_byte')
|
||||
let l:omni_syntax_use_single_byte = b:omni_syntax_use_single_byte
|
||||
endif
|
||||
|
||||
" Allow user to override minimum_length per buffer
|
||||
let l:omni_syntax_minimum_length = g:omni_syntax_minimum_length
|
||||
if exists('b:omni_syntax_minimum_length')
|
||||
let l:omni_syntax_minimum_length = b:omni_syntax_minimum_length
|
||||
endif
|
||||
|
||||
let syn_list = ""
|
||||
|
||||
" From the full syntax listing, strip out the portion for the
|
||||
@@ -647,14 +687,23 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
|
||||
\ syn_list, '\%(^\|\n\)\@<=\s*\(@\w\+\)'
|
||||
\ , "", 'g'
|
||||
\ )
|
||||
|
||||
if b:omni_syntax_use_iskeyword == 0
|
||||
|
||||
if l:omni_syntax_use_iskeyword == 0
|
||||
" There are a number of items which have non-word characters in
|
||||
" them, *'T_F1'*. vim.vim is one such file.
|
||||
" This will replace non-word characters with spaces.
|
||||
" setlocal filetype=forth
|
||||
" let g:omni_syntax_use_iskeyword = 1
|
||||
" let g:omni_syntax_use_iskeyword_numeric = 1
|
||||
" You will see entries like
|
||||
" #>>
|
||||
" (.local)
|
||||
" These were found doing a grep in vim82\syntax
|
||||
" grep iskeyword *
|
||||
" forth.vim:setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
|
||||
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
|
||||
else
|
||||
if g:omni_syntax_use_iskeyword_numeric == 1
|
||||
if l:omni_syntax_use_iskeyword_numeric == 1
|
||||
" iskeyword can contain value like this
|
||||
" 38,42,43,45,47-58,60-62,64-90,97-122,_,+,-,*,/,%,<,=,>,:,$,?,!,@-@,94
|
||||
" Numeric values convert to their ASCII equivalent using the
|
||||
@@ -674,7 +723,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
|
||||
" cycle through each character within the range
|
||||
let [b:start, b:end] = split(item, '-')
|
||||
for range_item in range( b:start, b:end )
|
||||
if range_item <= 127 || g:omni_syntax_use_single_byte == 0
|
||||
if range_item <= 127 || l:omni_syntax_use_single_byte == 0
|
||||
if nr2char(range_item) =~ '\p'
|
||||
let accepted_chars = accepted_chars . nr2char(range_item)
|
||||
endif
|
||||
@@ -682,13 +731,13 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
|
||||
endfor
|
||||
elseif item =~ '^\d\+$'
|
||||
" Only numeric, translate to a character
|
||||
if item < 127 || g:omni_syntax_use_single_byte == 0
|
||||
if item < 127 || l:omni_syntax_use_single_byte == 0
|
||||
if nr2char(item) =~ '\p'
|
||||
let accepted_chars = accepted_chars . nr2char(item)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
if char2nr(item) < 127 || g:omni_syntax_use_single_byte == 0
|
||||
if char2nr(item) < 127 || l:omni_syntax_use_single_byte == 0
|
||||
if item =~ '\p'
|
||||
let accepted_chars = accepted_chars . item
|
||||
endif
|
||||
@@ -724,9 +773,9 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
|
||||
endif
|
||||
endif
|
||||
|
||||
if b:omni_syntax_minimum_length > 0
|
||||
if l:omni_syntax_minimum_length > 0
|
||||
" If the user specified a minimum length, enforce it
|
||||
let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
|
||||
let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.l:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
|
||||
endif
|
||||
else
|
||||
let syn_list = ''
|
||||
@@ -756,5 +805,6 @@ function! OmniSyntaxShowChars(spec)
|
||||
endfor
|
||||
return join(map(result, 'nr2char(v:val)'), ', ')
|
||||
endfunction
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
26
runtime/compiler/cm3.vim
Normal file
26
runtime/compiler/cm3.vim
Normal file
@@ -0,0 +1,26 @@
|
||||
" Vim compiler file
|
||||
" Compiler: Critical Mass Modula-3 Compiler
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "cm3"
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" TODO: better handling of Quake errors
|
||||
CompilerSet makeprg=cm3
|
||||
CompilerSet errorformat=%D---\ building\ in\ %f\ ---,
|
||||
\%W\"%f\"\\,\ line\ %l:\ warning:\ %m,
|
||||
\%E\"%f\"\\,\ line\ %l:\ %m,
|
||||
\%-G%.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
@@ -31,6 +31,7 @@ DOCS = \
|
||||
fold.txt \
|
||||
ft_ada.txt \
|
||||
ft_ps1.txt \
|
||||
ft_raku.txt \
|
||||
ft_rust.txt \
|
||||
ft_sql.txt \
|
||||
gui.txt \
|
||||
@@ -175,6 +176,7 @@ HTMLS = \
|
||||
fold.html \
|
||||
ft_ada.html \
|
||||
ft_ps1.html \
|
||||
ft_raku.html \
|
||||
ft_rust.html \
|
||||
ft_sql.html \
|
||||
gui.html \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2021 Mar 13
|
||||
*autocmd.txt* For Vim version 8.2. Last change: 2021 Apr 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1522,7 +1522,14 @@ option will not cause any commands to be executed.
|
||||
loaded buffer. The current buffer is done last.
|
||||
|
||||
Note that [fname] is used to select the autocommands,
|
||||
not the buffers to which they are applied.
|
||||
not the buffers to which they are applied. Example: >
|
||||
augroup mine
|
||||
autocmd!
|
||||
autocmd FileType * echo expand('<amatch>')
|
||||
augroup END
|
||||
doautoall mine FileType Loaded-Buffer
|
||||
< Sourcing this script, you'll see as many
|
||||
"Loaded-Buffer" echoed as there are loaded buffers.
|
||||
|
||||
Careful: Don't use this for autocommands that delete a
|
||||
buffer, change to another buffer or change the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 8.2. Last change: 2021 Apr 07
|
||||
*eval.txt* For Vim version 8.2. Last change: 2021 Apr 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1962,6 +1962,9 @@ v:fcs_choice What should happen after a |FileChangedShell| event was
|
||||
The default is empty. If another (invalid) value is used then
|
||||
Vim behaves like it is empty, there is no warning message.
|
||||
|
||||
*v:fname* *fname-variable*
|
||||
v:fname The file name set by 'includeexpr'. Empty otherwise.
|
||||
|
||||
*v:fname_in* *fname_in-variable*
|
||||
v:fname_in The name of the input file. Valid while evaluating:
|
||||
option used for ~
|
||||
@@ -5775,7 +5778,6 @@ getmousepos() *getmousepos()*
|
||||
|
||||
If the mouse is over a popup window then that window is used.
|
||||
|
||||
|
||||
When using |getchar()| the Vim variables |v:mouse_lnum|,
|
||||
|v:mouse_col| and |v:mouse_winid| also provide these values.
|
||||
|
||||
@@ -6721,6 +6723,7 @@ islocked({expr}) *islocked()* *E786*
|
||||
|
||||
< When {expr} is a variable that does not exist you get an error
|
||||
message. Use |exists()| to check for existence.
|
||||
In Vim9 script it does not work for local variables.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
GetName()->islocked()
|
||||
|
||||
126
runtime/doc/ft_raku.txt
Normal file
126
runtime/doc/ft_raku.txt
Normal file
@@ -0,0 +1,126 @@
|
||||
*vim-raku.txt* The Raku programming language filetype
|
||||
|
||||
*vim-raku*
|
||||
|
||||
Vim-raku provides syntax highlighting, indentation, and other support for
|
||||
editing Raku programs.
|
||||
|
||||
1. Using Unicode in your Raku files |raku-unicode|
|
||||
|
||||
==============================================================================
|
||||
1. Using Unicode in your Raku files *raku-unicode*
|
||||
|
||||
Defining new operators using Unicode symbols is a good way to make your
|
||||
Raku program easy to read. See:
|
||||
https://perl6advent.wordpress.com/2012/12/18/day-18-formulas-resistance-is-futile/
|
||||
|
||||
While Raku does define ASCII alternatives for some common operators (see
|
||||
https://docs.raku.org/language/unicode_ascii), using the full range of
|
||||
Unicode operators is highly desirable. Your operating system provides input
|
||||
facilities, but using the features built in to Vim may be preferable.
|
||||
|
||||
The natural way to produce these symbols in Vim is to use digraph shortcuts
|
||||
(:help |digraphs-use|). Many of them are defined; type `:digraphs` to get
|
||||
the list. A convenient way to read the list of digraphs is to save them in a
|
||||
file. From the shell: >
|
||||
vim +'redir >/tmp/vim-digraphs-listing.txt' +digraphs +'redir END' +q
|
||||
|
||||
Some of them are available with standard Vim digraphs:
|
||||
<< « /0 ∅ !< ≮ ~
|
||||
>> » Ob ∘ !> ≯ ~
|
||||
., … 00 ∞ (C ⊂ ~
|
||||
(U ∩ -: ÷ )C ⊃ ~
|
||||
)U ∪ (_ ⊆ >= ≥ ~
|
||||
?= ≅ )_ ⊇ =< ≤ ~
|
||||
(- ∈ ?= ≅ != ≠ ~
|
||||
-) ∋ ?- ≃ ~
|
||||
|
||||
The Greek alphabet is available with '*' followed by a similar Latin symbol:
|
||||
*p π ~
|
||||
*t τ ~
|
||||
*X × ~
|
||||
|
||||
Numbers, subscripts and superscripts are available with 's' and 'S':
|
||||
0s ₀ 0S ⁰ ~
|
||||
1s ₁ 1S ¹ ~
|
||||
2s ₂ 9S ⁹ ~
|
||||
|
||||
But some don´t come defined by default. Those are digraph definitions you can
|
||||
add in your ~/.vimrc file. >
|
||||
exec 'digraph \\ '.char2nr('∖')
|
||||
exec 'digraph \< '.char2nr('≼')
|
||||
exec 'digraph \> '.char2nr('≽')
|
||||
exec 'digraph (L '.char2nr('⊈')
|
||||
exec 'digraph )L '.char2nr('⊉')
|
||||
exec 'digraph (/ '.char2nr('⊄')
|
||||
exec 'digraph )/ '.char2nr('⊅')
|
||||
exec 'digraph )/ '.char2nr('⊅')
|
||||
exec 'digraph U+ '.char2nr('⊎')
|
||||
exec 'digraph 0- '.char2nr('⊖')
|
||||
" Euler's constant
|
||||
exec 'digraph ne '.char2nr('𝑒')
|
||||
" Raku's atomic operations marker
|
||||
exec 'digraph @@ '.char2nr('⚛')
|
||||
|
||||
Alternatively, you can write Insert mode abbreviations that convert ASCII-
|
||||
based operators into their single-character Unicode equivalent. >
|
||||
iabbrev <buffer> !(<) ⊄
|
||||
iabbrev <buffer> !(<=) ⊈
|
||||
iabbrev <buffer> !(>) ⊅
|
||||
iabbrev <buffer> !(>=) ⊉
|
||||
iabbrev <buffer> !(cont) ∌
|
||||
iabbrev <buffer> !(elem) ∉
|
||||
iabbrev <buffer> != ≠
|
||||
iabbrev <buffer> (&) ∩
|
||||
iabbrev <buffer> (+) ⊎
|
||||
iabbrev <buffer> (-) ∖
|
||||
iabbrev <buffer> (.) ⊍
|
||||
iabbrev <buffer> (<) ⊂
|
||||
iabbrev <buffer> (<+) ≼
|
||||
iabbrev <buffer> (<=) ⊆
|
||||
iabbrev <buffer> (>) ⊃
|
||||
iabbrev <buffer> (>+) ≽
|
||||
iabbrev <buffer> (>=) ⊇
|
||||
iabbrev <buffer> (\|) ∪
|
||||
iabbrev <buffer> (^) ⊖
|
||||
iabbrev <buffer> (atomic) ⚛
|
||||
iabbrev <buffer> (cont) ∋
|
||||
iabbrev <buffer> (elem) ∈
|
||||
iabbrev <buffer> * ×
|
||||
iabbrev <buffer> **0 ⁰
|
||||
iabbrev <buffer> **1 ¹
|
||||
iabbrev <buffer> **2 ²
|
||||
iabbrev <buffer> **3 ³
|
||||
iabbrev <buffer> **4 ⁴
|
||||
iabbrev <buffer> **5 ⁵
|
||||
iabbrev <buffer> **6 ⁶
|
||||
iabbrev <buffer> **7 ⁷
|
||||
iabbrev <buffer> **8 ⁸
|
||||
iabbrev <buffer> **9 ⁹
|
||||
iabbrev <buffer> ... …
|
||||
iabbrev <buffer> / ÷
|
||||
iabbrev <buffer> << «
|
||||
iabbrev <buffer> <<[=]<< «=«
|
||||
iabbrev <buffer> <<[=]>> «=»
|
||||
iabbrev <buffer> <= ≤
|
||||
iabbrev <buffer> =~= ≅
|
||||
iabbrev <buffer> >= ≥
|
||||
iabbrev <buffer> >> »
|
||||
iabbrev <buffer> >>[=]<< »=«
|
||||
iabbrev <buffer> >>[=]>> »=»
|
||||
iabbrev <buffer> Inf ∞
|
||||
iabbrev <buffer> atomic-add-fetch ⚛+=
|
||||
iabbrev <buffer> atomic-assign ⚛=
|
||||
iabbrev <buffer> atomic-fetch ⚛
|
||||
iabbrev <buffer> atomic-dec-fetch --⚛
|
||||
iabbrev <buffer> atomic-fetch-dec ⚛--
|
||||
iabbrev <buffer> atomic-fetch-inc ⚛++
|
||||
iabbrev <buffer> atomic-inc-fetch ++⚛
|
||||
iabbrev <buffer> atomic-sub-fetch ⚛−=
|
||||
iabbrev <buffer> e 𝑒
|
||||
iabbrev <buffer> o ∘
|
||||
iabbrev <buffer> pi π
|
||||
iabbrev <buffer> set() ∅
|
||||
iabbrev <buffer> tau τ
|
||||
<
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 8.2. Last change: 2020 Sep 28
|
||||
*gui.txt* For Vim version 8.2. Last change: 2021 May 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -620,6 +620,11 @@ expression register: >
|
||||
|
||||
:amenu Insert.foobar "='foobar'<CR>P
|
||||
|
||||
The special text <Cmd> begins a "command menu", it executes the command
|
||||
directly without changing modes. Where you might use ":...<CR>" you can
|
||||
instead use "<Cmd>...<CR>". See |<Cmd>| for more info. Example: >
|
||||
anoremenu File.Next <Cmd>next<CR>
|
||||
|
||||
Note that the '<' and 'k' flags in 'cpoptions' also apply here (when
|
||||
included they make the <> form and raw key codes not being recognized).
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 8.2. Last change: 2021 Mar 22
|
||||
*index.txt* For Vim version 8.2. Last change: 2021 Apr 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1396,6 +1396,7 @@ tag command action ~
|
||||
|:lfdo| :lfd[o] execute command in each file in location list
|
||||
|:left| :le[ft] left align lines
|
||||
|:leftabove| :lefta[bove] make split window appear left or above
|
||||
|:legacy| :leg[acy] make following command use legacy script syntax
|
||||
|:let| :let assign a value to a variable or option
|
||||
|:lexpr| :lex[pr] read locations from expr and jump to first
|
||||
|:lfile| :lf[ile] read file with locations and jump to first
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 8.2. Last change: 2021 Mar 17
|
||||
*map.txt* For Vim version 8.2. Last change: 2021 Apr 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -244,9 +244,12 @@ have a look at |maparg()|.
|
||||
If the first argument to one of these commands is "<expr>" and it is used to
|
||||
define a new mapping or abbreviation, the argument is an expression. The
|
||||
expression is evaluated to obtain the {rhs} that is used. Example: >
|
||||
:inoremap <expr> . InsertDot()
|
||||
The result of the InsertDot() function will be inserted. It could check the
|
||||
:inoremap <expr> . <SID>InsertDot()
|
||||
The result of the s:InsertDot() function will be inserted. It could check the
|
||||
text before the cursor and start omni completion when some condition is met.
|
||||
Using a script-local function is preferred, to avoid polluting the global
|
||||
namespace. Use <SID> in the RHS so that the script that the mapping was
|
||||
defined in can be found.
|
||||
|
||||
For abbreviations |v:char| is set to the character that was typed to trigger
|
||||
the abbreviation. You can use this to decide how to expand the {lhs}. You
|
||||
@@ -261,7 +264,7 @@ input. Example: >
|
||||
call popup_create(... arguments ...)
|
||||
return "\<Ignore>"
|
||||
endfunc
|
||||
nnoremap <expr> <F3> <Sid>OpenPopup()
|
||||
nnoremap <expr> <F3> <SID>OpenPopup()
|
||||
|
||||
Also, keep in mind that the expression may be evaluated when looking for
|
||||
typeahead, before the previous command has been executed. For example: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 8.2. Last change: 2021 Apr 07
|
||||
*options.txt* For Vim version 8.2. Last change: 2021 Apr 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -4564,7 +4564,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Keywords are used in searching and recognizing with many commands:
|
||||
"w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See
|
||||
'isfname' for a description of the format of this option. For '@'
|
||||
characters above 255 check the "word" character class.
|
||||
characters above 255 check the "word" character class (any character
|
||||
that is not white space or punctuation).
|
||||
For C programs you could use "a-z,A-Z,48-57,_,.,-,>".
|
||||
For a help file it is set to all non-blank printable characters except
|
||||
'*', '"' and '|' (so that CTRL-] on a command finds the help for that
|
||||
@@ -6511,6 +6512,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global values for local options)
|
||||
options all options and mappings (also global values for local
|
||||
options)
|
||||
skiprtp exclude 'runtimepath' and 'packpath' from the options
|
||||
resize size of the Vim window: 'lines' and 'columns'
|
||||
sesdir the directory in which the session file is located
|
||||
will become the current directory (useful with
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2021 Feb 05
|
||||
*quickfix.txt* For Vim version 8.2. Last change: 2021 Apr 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1008,13 +1008,11 @@ commands can be combined to create a NewGrep command: >
|
||||
5.1 using Vim's internal grep
|
||||
|
||||
*:vim* *:vimgrep* *E682* *E683*
|
||||
:vim[grep][!] /{pattern}/[g][j] {file} ...
|
||||
:vim[grep][!] /{pattern}/[g][j][f] {file} ...
|
||||
Search for {pattern} in the files {file} ... and set
|
||||
the error list to the matches. Files matching
|
||||
'wildignore' are ignored; files in 'suffixes' are
|
||||
searched last.
|
||||
Without the 'g' flag each line is added only once.
|
||||
With 'g' every match is added.
|
||||
|
||||
{pattern} is a Vim search pattern. Instead of
|
||||
enclosing it in / any non-ID character (see
|
||||
@@ -1026,6 +1024,22 @@ commands can be combined to create a NewGrep command: >
|
||||
If {pattern} is empty (e.g. // is specified), the last
|
||||
used search pattern is used. |last-pattern|
|
||||
|
||||
Flags:
|
||||
'g' Without the 'g' flag each line is added only
|
||||
once. With 'g' every match is added.
|
||||
|
||||
'j' Without the 'j' flag Vim jumps to the first
|
||||
match. With 'j' only the quickfix list is
|
||||
updated. With the [!] any changes in the current
|
||||
buffer are abandoned.
|
||||
|
||||
'f' When the 'f' flag is specified, fuzzy string
|
||||
matching is used to find matching lines. In this
|
||||
case, {pattern} is treated as a literal string
|
||||
instead of a regular expression. See
|
||||
|matchfuzzy()| for more info about fuzzy
|
||||
matching.
|
||||
|
||||
|QuickFixCmdPre| and |QuickFixCmdPost| are triggered.
|
||||
A file that is opened for matching may use a buffer
|
||||
number, but it is reused if possible to avoid
|
||||
@@ -1038,11 +1052,6 @@ commands can be combined to create a NewGrep command: >
|
||||
Useful if you only want to check if there is a match
|
||||
and quit quickly when it's found.
|
||||
|
||||
Without the 'j' flag Vim jumps to the first match.
|
||||
With 'j' only the quickfix list is updated.
|
||||
With the [!] any changes in the current buffer are
|
||||
abandoned.
|
||||
|
||||
Every second or so the searched file name is displayed
|
||||
to give you an idea of the progress made.
|
||||
Examples: >
|
||||
@@ -1059,20 +1068,20 @@ commands can be combined to create a NewGrep command: >
|
||||
:vimgrep Error *.c
|
||||
<
|
||||
*:lv* *:lvimgrep*
|
||||
:lv[imgrep][!] /{pattern}/[g][j] {file} ...
|
||||
:lv[imgrep][!] /{pattern}/[g][j][f] {file} ...
|
||||
:lv[imgrep][!] {pattern} {file} ...
|
||||
Same as ":vimgrep", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:vimgrepa* *:vimgrepadd*
|
||||
:vimgrepa[dd][!] /{pattern}/[g][j] {file} ...
|
||||
:vimgrepa[dd][!] /{pattern}/[g][j][f] {file} ...
|
||||
:vimgrepa[dd][!] {pattern} {file} ...
|
||||
Just like ":vimgrep", but instead of making a new list
|
||||
of errors the matches are appended to the current
|
||||
list.
|
||||
|
||||
*:lvimgrepa* *:lvimgrepadd*
|
||||
:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ...
|
||||
:lvimgrepa[dd][!] /{pattern}/[g][j][f] {file} ...
|
||||
:lvimgrepa[dd][!] {pattern} {file} ...
|
||||
Same as ":vimgrepadd", except the location list for
|
||||
the current window is used instead of the quickfix
|
||||
|
||||
@@ -2630,6 +2630,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:left change.txt /*:left*
|
||||
:lefta windows.txt /*:lefta*
|
||||
:leftabove windows.txt /*:leftabove*
|
||||
:leg vim9.txt /*:leg*
|
||||
:legacy vim9.txt /*:legacy*
|
||||
:let eval.txt /*:let*
|
||||
:let%= eval.txt /*:let%=*
|
||||
:let+= eval.txt /*:let+=*
|
||||
@@ -3936,6 +3938,7 @@ E1050 vim9.txt /*E1050*
|
||||
E107 eval.txt /*E107*
|
||||
E108 eval.txt /*E108*
|
||||
E109 eval.txt /*E109*
|
||||
E1091 vim9.txt /*E1091*
|
||||
E1092 vim9.txt /*E1092*
|
||||
E1094 vim9.txt /*E1094*
|
||||
E11 cmdline.txt /*E11*
|
||||
@@ -6438,6 +6441,7 @@ floating-point-format eval.txt /*floating-point-format*
|
||||
floating-point-precision eval.txt /*floating-point-precision*
|
||||
floor() eval.txt /*floor()*
|
||||
fmod() eval.txt /*fmod()*
|
||||
fname-variable eval.txt /*fname-variable*
|
||||
fname_diff-variable eval.txt /*fname_diff-variable*
|
||||
fname_in-variable eval.txt /*fname_in-variable*
|
||||
fname_new-variable eval.txt /*fname_new-variable*
|
||||
@@ -8717,6 +8721,7 @@ quotestar gui.txt /*quotestar*
|
||||
quote~ change.txt /*quote~*
|
||||
r change.txt /*r*
|
||||
r.vim syntax.txt /*r.vim*
|
||||
raku-unicode ft_raku.txt /*raku-unicode*
|
||||
rand() eval.txt /*rand()*
|
||||
random eval.txt /*random*
|
||||
range() eval.txt /*range()*
|
||||
@@ -9873,6 +9878,7 @@ v:exiting eval.txt /*v:exiting*
|
||||
v:false eval.txt /*v:false*
|
||||
v:fcs_choice eval.txt /*v:fcs_choice*
|
||||
v:fcs_reason eval.txt /*v:fcs_reason*
|
||||
v:fname eval.txt /*v:fname*
|
||||
v:fname_diff eval.txt /*v:fname_diff*
|
||||
v:fname_in eval.txt /*v:fname_in*
|
||||
v:fname_new eval.txt /*v:fname_new*
|
||||
@@ -10128,6 +10134,8 @@ vim-dev intro.txt /*vim-dev*
|
||||
vim-mac intro.txt /*vim-mac*
|
||||
vim-modes intro.txt /*vim-modes*
|
||||
vim-modes-intro intro.txt /*vim-modes-intro*
|
||||
vim-raku ft_raku.txt /*vim-raku*
|
||||
vim-raku.txt ft_raku.txt /*vim-raku.txt*
|
||||
vim-script-intro usr_41.txt /*vim-script-intro*
|
||||
vim-use intro.txt /*vim-use*
|
||||
vim-variable eval.txt /*vim-variable*
|
||||
@@ -10144,8 +10152,10 @@ vim9-differences vim9.txt /*vim9-differences*
|
||||
vim9-export vim9.txt /*vim9-export*
|
||||
vim9-final vim9.txt /*vim9-final*
|
||||
vim9-gotchas vim9.txt /*vim9-gotchas*
|
||||
vim9-ignored-argument vim9.txt /*vim9-ignored-argument*
|
||||
vim9-import vim9.txt /*vim9-import*
|
||||
vim9-lambda vim9.txt /*vim9-lambda*
|
||||
vim9-lambda-arguments vim9.txt /*vim9-lambda-arguments*
|
||||
vim9-mix vim9.txt /*vim9-mix*
|
||||
vim9-namespace vim9.txt /*vim9-namespace*
|
||||
vim9-rationale vim9.txt /*vim9-rationale*
|
||||
@@ -10153,7 +10163,9 @@ vim9-reload vim9.txt /*vim9-reload*
|
||||
vim9-scopes vim9.txt /*vim9-scopes*
|
||||
vim9-script-intro usr_46.txt /*vim9-script-intro*
|
||||
vim9-types vim9.txt /*vim9-types*
|
||||
vim9-unpack-ignore vim9.txt /*vim9-unpack-ignore*
|
||||
vim9-user-command vim9.txt /*vim9-user-command*
|
||||
vim9-variable-arguments vim9.txt /*vim9-variable-arguments*
|
||||
vim9.txt vim9.txt /*vim9.txt*
|
||||
vim9script vim9.txt /*vim9script*
|
||||
vim: options.txt /*vim:*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 8.2. Last change: 2021 Apr 05
|
||||
*todo.txt* For Vim version 8.2. Last change: 2021 Apr 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -39,38 +39,35 @@ browser use: https://github.com/vim/vim/issues/1234
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Vim9 - Make everything work:
|
||||
- For builtin functions using tv_get_string*() use check_for_string() to be
|
||||
more strict about the argument type (not a bool).
|
||||
done: balloon_()
|
||||
- Check many more builtin function arguments at compile time.
|
||||
- Using ".." at script level doesn't convert arguments to a string.
|
||||
- This fails in a :def function but not at the script level:
|
||||
var s = 'asdf'->((a) => a)('x')
|
||||
Disallow passing more arguments to lambda than expected?
|
||||
- Implement blob index and slice, also with assignment?
|
||||
- Compile replacement of :s command: s/pat/\=expr/
|
||||
- Compile redir to local variable: var_redir_start().
|
||||
- Implement type cast at the script level.
|
||||
- Compile builtin functions that access local variables:
|
||||
islocked()
|
||||
- When evaluating constants for script variables, some functions could work:
|
||||
has('asdf'), len('string')
|
||||
eval_variable(). Should pass the ".xxx" that follows and return that.
|
||||
- Make "++nr" work. "++g:count" doesn't work, thinks it is a range.
|
||||
- Reload: How to make sure type of script function hasn't changed?
|
||||
- expandcmd() with `=expr` in filename uses legacy expression.
|
||||
- eval_expr() in ex_cexpr()
|
||||
- eval_expr() call in dbg_parsearg() and debuggy_find()
|
||||
- compile_member() guesses the type, should figure out at runtime.
|
||||
- compile "skip" argument of searchpair()
|
||||
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
|
||||
- give an error for "echo Func()" if Func() does not return anything.
|
||||
- Using "windo echo expr" does not accept a line break inside "expr" (in a
|
||||
:def function and at script level in a not executed block). #7681
|
||||
- "assert_fails()" cannot access local variables. Perhaps add this:
|
||||
assertfails
|
||||
... cmd ...
|
||||
endassertfails /E99:.*cmd/
|
||||
Similar to try/catch/endtry but without the boilerplate.
|
||||
- use CheckLegacyAndVim9Success(lines) in many more places
|
||||
- For builtin functions using tv_get_string*() use check_for_string() to be
|
||||
more strict about the argument type (not a bool).
|
||||
done: balloon_()
|
||||
- Check many more builtin function arguments at compile time.
|
||||
map() could check that the return type of the function argument matches
|
||||
the type of the list or dict member. (#8092)
|
||||
- Allow for using an autoload function name without quotes. It is then loaded
|
||||
(and compiled) right away. #8124
|
||||
- Test more expressions in legacy and Vim9 script, using
|
||||
CheckLegacyAndVim9Success()
|
||||
- Test try/catch and throw better, also nested.
|
||||
Test that return inside try/finally jumps to finally and then returns.
|
||||
- Test that a function defined inside a :def function is local to that
|
||||
function, g: functions can be defined and script-local functions cannot be
|
||||
defined.
|
||||
- Make debugging work - at least per function. Need to recompile a function
|
||||
to step through it line-by-line? Evaluate the stack and variables on the
|
||||
stack?
|
||||
- Reserve command for future use: :type, :class, :enum
|
||||
|
||||
Once Vim9 is stable:
|
||||
- Change the help to prefer Vim9 syntax where appropriate
|
||||
@@ -80,34 +77,17 @@ Once Vim9 is stable:
|
||||
- Use Vim9 for runtime files.
|
||||
PR #7497 for autoload/ccomplete.vim
|
||||
|
||||
Also for Vim9:
|
||||
Further Vim9 improvements, possibly after launch:
|
||||
- better implementation for partial and tests for that.
|
||||
- Make "g:imported = Export.exported" work in Vim9 script.
|
||||
- Make Foo.Bar() work to call the dict function. (#5676)
|
||||
- Error in any command in "vim9script" aborts sourcing.
|
||||
- Find a way to test expressions in legacy and Vim9 script without duplication
|
||||
- Test try/catch and throw better, also nested.
|
||||
Test that return inside try/finally jumps to finally and then returns.
|
||||
- Test that a function defined inside a :def function is local to that
|
||||
function, g: functions can be defined and script-local functions cannot be
|
||||
defined.
|
||||
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
|
||||
- Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
|
||||
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
|
||||
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
|
||||
Give an error if compilation fails. (#7625)
|
||||
Use the location where the option was set for deciding whether it's to be
|
||||
evaluated in Vim9 script context.
|
||||
- implement :type; import type declaration.
|
||||
- implement enum; import enum.
|
||||
- implement :type, import type declaration.
|
||||
- implement enum, import enum.
|
||||
- Future work: See |vim9-classes|
|
||||
Define the keywords and commands to make sure it will be backwards
|
||||
compatible.
|
||||
- Make debugging work - at least per function. Need to recompile a function
|
||||
to step through it line-by-line? Evaluate the stack and variables on the
|
||||
stack?
|
||||
- List commands when 'verbose' is set or :verbose is used.
|
||||
|
||||
Further Vim9 improvements, possibly after launch:
|
||||
- For range: make table of first ASCII character with flag to quickly check if
|
||||
it can be a Vim9 command. E.g. "+" can, but "." can't.
|
||||
- compile get_lambda_tv() in popup_add_timeout()
|
||||
@@ -115,6 +95,9 @@ Further Vim9 improvements, possibly after launch:
|
||||
- Make accessing varargs faster: arg[expr]
|
||||
EVAL expr
|
||||
LOADVARARG (varargs idx)
|
||||
- When evaluating constants for script variables, some functions could work:
|
||||
has(featureName), len(someString)
|
||||
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
|
||||
|
||||
|
||||
Popup windows:
|
||||
@@ -126,6 +109,8 @@ Popup windows:
|
||||
- Add a termcap entry for changing the cursor when it goes under the popup and
|
||||
back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?)
|
||||
- With terminal in popup, allow for popup_hide() to temporarily hide it.?
|
||||
- Make it possible to scroll horizontally when 'wrap' is off. Does this
|
||||
require an ascii scrollbar, like with the vertical one?
|
||||
- Fire some autocommand event after a new popup window was created and
|
||||
positioned? PopupNew? Could be used to set some options or move it out of
|
||||
the way. (#5737)
|
||||
@@ -495,6 +480,9 @@ Assuming the files are text, print the line with the difference.
|
||||
|
||||
Result of synID() sometimes wrong in help files. (#5252)
|
||||
|
||||
When a help file is opened that doesn't have "ft=help" in the modeline then
|
||||
the FileType is first set to "text" before it is set to "help". (#8099)
|
||||
|
||||
Problem showing a line if the number column width changes when using "o".
|
||||
(Mateusz Morusiewicz, #4245)
|
||||
|
||||
@@ -1013,8 +1001,7 @@ for a path separator. (xtal8, #2201)
|
||||
Would be nice for Insert mode completion to highlight the text that was added
|
||||
(and may change when picking another completion).
|
||||
|
||||
Test runtime files.
|
||||
Start with filetype detection: testdir/test_filetype.vim
|
||||
Test more runtime files.
|
||||
|
||||
Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029)
|
||||
|
||||
@@ -1407,9 +1394,6 @@ Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
|
||||
Add ":read :command", to insert the output of an Ex command?
|
||||
Can already do it with ":$put =execute('command')".
|
||||
|
||||
When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
|
||||
Apr 17) #762
|
||||
|
||||
exists(":tearoff") does not tell you if the command is implemented. (Tony
|
||||
Mechelynck) Perhaps use exists("::tearoff") to check?
|
||||
|
||||
@@ -1987,6 +1971,10 @@ Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
|
||||
|
||||
Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27)
|
||||
|
||||
Using "syn sync breaklines=2" works for when text is changed, but not when
|
||||
scrolling or redrawing. Should start search for syntax patterns above the
|
||||
first drawn line. (#8103)
|
||||
|
||||
Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
|
||||
2010 Dec 18)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_02.txt* For Vim version 8.2. Last change: 2019 Nov 21
|
||||
*usr_02.txt* For Vim version 8.2. Last change: 2021 Apr 24
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -532,7 +532,7 @@ Summary: *help-summary* >
|
||||
< for the corresponding flag of the 'cpoptions' settings, substitute <letter>
|
||||
by a specific flag, e.g.: >
|
||||
:help cpo-;
|
||||
< And for the guioption flags: >
|
||||
< And for the 'guioptions' flags: >
|
||||
:help go-<letter>
|
||||
|
||||
4) Normal mode commands do not have a prefix. To go to the help page for the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_12.txt* For Vim version 8.2. Last change: 2017 Aug 11
|
||||
*usr_12.txt* For Vim version 8.2. Last change: 2021 Apr 19
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -180,14 +180,14 @@ after it. That way you don't have this problem again.
|
||||
The |:global| command can be combined with the |:move| command to move all the
|
||||
lines before the first line, resulting in a reversed file. The command is: >
|
||||
|
||||
:global/^/m 0
|
||||
:global/^/move 0
|
||||
|
||||
Abbreviated: >
|
||||
|
||||
:g/^/m 0
|
||||
|
||||
The "^" regular expression matches the beginning of the line (even if the line
|
||||
is blank). The |:move| command moves the matching line to after the mythical
|
||||
is blank). The |:move| command moves the matching line to after the imaginary
|
||||
zeroth line, so the current matching line becomes the first line of the file.
|
||||
As the |:global| command is not confused by the changing line numbering,
|
||||
|:global| proceeds to match all remaining lines of the file and puts each as
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2021 Mar 14
|
||||
*usr_41.txt* For Vim version 8.2. Last change: 2021 Apr 19
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -115,12 +115,20 @@ if you are impatient.
|
||||
|
||||
FOUR KINDS OF NUMBERS
|
||||
|
||||
Numbers can be decimal, hexadecimal, octal or binary. A hexadecimal number
|
||||
starts with "0x" or "0X". For example "0x1f" is decimal 31. An octal number
|
||||
starts with a zero. "017" is decimal 15. A binary number starts with "0b" or
|
||||
"0B". For example "0b101" is decimal 5. Careful: don't put a zero before a
|
||||
decimal number, it will be interpreted as an octal number!
|
||||
The ":echo" command always prints decimal numbers. Example: >
|
||||
Numbers can be decimal, hexadecimal, octal or binary.
|
||||
|
||||
A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal
|
||||
31.
|
||||
|
||||
An octal number starts with "0o", "0O" or a zero and another digit. "0o17" is
|
||||
decimal 15. Using just a zero prefix is not supported in Vim9 script.
|
||||
|
||||
A binary number starts with "0b" or "0B". For example "0b101" is decimal 5.
|
||||
|
||||
A decimal number is just digits. Careful: don't put a zero before a decimal
|
||||
number, it will be interpreted as an octal number in legacy script!
|
||||
|
||||
The ":echo" command always prints decimal numbers. Example: >
|
||||
|
||||
:echo 0x7f 0o36
|
||||
< 127 30 ~
|
||||
|
||||
@@ -416,6 +416,10 @@ Denotes the end of the options.
|
||||
Arguments after this will be handled as a file name.
|
||||
This can be used to edit a filename that starts with a '\-'.
|
||||
.TP
|
||||
\-\-clean
|
||||
Do not use any personal configuration (vimrc, plugins, etc.). Useful to see if
|
||||
a problem reproduces with a clean Vim setup.
|
||||
.TP
|
||||
\-\-echo\-wid
|
||||
GTK GUI only: Echo the Window ID on stdout.
|
||||
.TP
|
||||
|
||||
@@ -300,6 +300,10 @@ OPTIONS
|
||||
be handled as a file name. This can be used to edit a
|
||||
filename that starts with a '-'.
|
||||
|
||||
--clean Do not use any personal configuration (vimrc, plugins,
|
||||
etc.). Useful to see if a problem reproduces with a clean
|
||||
Vim setup.
|
||||
|
||||
--echo-wid GTK GUI only: Echo the Window ID on stdout.
|
||||
|
||||
--help Give a help message and exit, just like "-h".
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2021 Apr 06
|
||||
*vim9.txt* For Vim version 8.2. Last change: 2021 Apr 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -61,12 +61,17 @@ Vim9 script and legacy Vim script can be mixed. There is no requirement to
|
||||
rewrite old scripts, they keep working as before. You may want to use a few
|
||||
`:def` functions for code that needs to be fast.
|
||||
|
||||
*:vim9* *:vim9cmd*
|
||||
:vim9[cmd] {cmd}
|
||||
:vim9[cmd] {cmd} *:vim9* *:vim9cmd*
|
||||
Execute {cmd} using Vim9 script syntax and semantics.
|
||||
Useful when typing a command and in a legacy script or
|
||||
function.
|
||||
|
||||
:leg[acy] {cmd} *:leg* *:legacy*
|
||||
Execute {cmd} using legacy script syntax and semantics. Only
|
||||
useful in a Vim9 script or a :def function.
|
||||
Note that {cmd} cannot use local variables, since it is parsed
|
||||
with legacy expression syntax.
|
||||
|
||||
==============================================================================
|
||||
|
||||
2. Differences from legacy Vim script *vim9-differences*
|
||||
@@ -152,6 +157,11 @@ Compilation is done when any of these is encountered:
|
||||
*E1091*
|
||||
If compilation fails it is not tried again on the next call, instead this
|
||||
error is given: "E1091: Function is not compiled: {name}".
|
||||
Compilation will fail when encountering a user command that has not been
|
||||
created yet. In this case you can call `execute()` to invoke it at runtime. >
|
||||
def MyFunc()
|
||||
execute('DefinedLater')
|
||||
enddef
|
||||
|
||||
`:def` has no options like `:function` does: "range", "abort", "dict" or
|
||||
"closure". A `:def` function always aborts on an error (unless `:silent!` was
|
||||
@@ -334,10 +344,11 @@ The "g:" prefix is not needed for auto-load functions.
|
||||
|
||||
Since `&opt = value` is now assigning a value to option "opt", ":&" cannot be
|
||||
used to repeat a `:substitute` command.
|
||||
|
||||
*vim9-unpack-ignore*
|
||||
For an unpack assignment the underscore can be used to ignore a list item,
|
||||
similar to how a function argument can be ignored: >
|
||||
[a, _, c] = theList
|
||||
To ignore any remaining items: >
|
||||
[a, b; _] = longList
|
||||
|
||||
< *E1092*
|
||||
@@ -599,6 +610,44 @@ Notes:
|
||||
echo [1, 2]
|
||||
[3, 4]
|
||||
|
||||
|
||||
White space ~
|
||||
|
||||
Vim9 script enforces proper use of white space. This is no longer allowed: >
|
||||
var name=234 # Error!
|
||||
var name= 234 # Error!
|
||||
var name =234 # Error!
|
||||
There must be white space before and after the "=": >
|
||||
var name = 234 # OK
|
||||
White space must also be put before the # that starts a comment after a
|
||||
command: >
|
||||
var name = 234# Error!
|
||||
var name = 234 # OK
|
||||
|
||||
White space is required around most operators.
|
||||
|
||||
White space is required in a sublist (list slice) around the ":", except at
|
||||
the start and end: >
|
||||
otherlist = mylist[v : count] # v:count has a different meaning
|
||||
otherlist = mylist[:] # make a copy of the List
|
||||
otherlist = mylist[v :]
|
||||
otherlist = mylist[: v]
|
||||
|
||||
White space is not allowed:
|
||||
- Between a function name and the "(": >
|
||||
Func (arg) # Error!
|
||||
Func
|
||||
\ (arg) # Error!
|
||||
Func
|
||||
(arg) # Error!
|
||||
Func(arg) # OK
|
||||
Func(
|
||||
arg) # OK
|
||||
Func(
|
||||
arg # OK
|
||||
)
|
||||
|
||||
|
||||
No curly braces expansion ~
|
||||
|
||||
|curly-braces-names| cannot be used.
|
||||
@@ -650,6 +699,17 @@ Comparators ~
|
||||
The 'ignorecase' option is not used for comparators that use strings.
|
||||
|
||||
|
||||
Abort after error ~
|
||||
|
||||
In legacy script, when an error is encountered, Vim continues to execute
|
||||
following lines. This can lead to a long sequence of errors and need to type
|
||||
CTRL-C to stop it. In Vim9 script execution of commands stops at the first
|
||||
error. Example: >
|
||||
vim9script
|
||||
var x = does-not-exist
|
||||
echo 'not executed'
|
||||
|
||||
|
||||
For loop ~
|
||||
|
||||
Legacy Vim script has some tricks to make a for loop over a list handle
|
||||
@@ -673,43 +733,6 @@ Generally, you should not change the list that is iterated over. Make a copy
|
||||
first if needed.
|
||||
|
||||
|
||||
White space ~
|
||||
|
||||
Vim9 script enforces proper use of white space. This is no longer allowed: >
|
||||
var name=234 # Error!
|
||||
var name= 234 # Error!
|
||||
var name =234 # Error!
|
||||
There must be white space before and after the "=": >
|
||||
var name = 234 # OK
|
||||
White space must also be put before the # that starts a comment after a
|
||||
command: >
|
||||
var name = 234# Error!
|
||||
var name = 234 # OK
|
||||
|
||||
White space is required around most operators.
|
||||
|
||||
White space is required in a sublist (list slice) around the ":", except at
|
||||
the start and end: >
|
||||
otherlist = mylist[v : count] # v:count has a different meaning
|
||||
otherlist = mylist[:] # make a copy of the List
|
||||
otherlist = mylist[v :]
|
||||
otherlist = mylist[: v]
|
||||
|
||||
White space is not allowed:
|
||||
- Between a function name and the "(": >
|
||||
Func (arg) # Error!
|
||||
Func
|
||||
\ (arg) # Error!
|
||||
Func
|
||||
(arg) # Error!
|
||||
Func(arg) # OK
|
||||
Func(
|
||||
arg) # OK
|
||||
Func(
|
||||
arg # OK
|
||||
)
|
||||
|
||||
|
||||
Conditions and expressions ~
|
||||
|
||||
Conditions and expressions are mostly working like they do in other languages.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 8.2. Last change: 2021 Mar 21
|
||||
*windows.txt* For Vim version 8.2. Last change: 2021 Apr 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -521,14 +521,14 @@ CTRL-W J Move the current window to be at the very bottom, using the
|
||||
CTRL-W H Move the current window to be at the far left, using the
|
||||
full height of the screen. This works like closing the
|
||||
current window and then creating another one with
|
||||
":vert topleft split", except that the current window contents
|
||||
`:vert topleft split`, except that the current window contents
|
||||
is used for the new window.
|
||||
|
||||
*CTRL-W_L*
|
||||
CTRL-W L Move the current window to be at the far right, using the full
|
||||
height of the screen. This works like closing the
|
||||
current window and then creating another one with
|
||||
":vert botright split", except that the current window
|
||||
`:vert botright split`, except that the current window
|
||||
contents is used for the new window.
|
||||
|
||||
*CTRL-W_T*
|
||||
@@ -571,7 +571,7 @@ CTRL-W < Decrease current window width by N (default 1).
|
||||
*CTRL-W_>*
|
||||
CTRL-W > Increase current window width by N (default 1).
|
||||
|
||||
:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
|
||||
:vert[ical] res[ize] [N] *:vertical-resize* *CTRL-W_bar*
|
||||
CTRL-W | Set current window width to N (default: widest possible).
|
||||
|
||||
You can also resize a window by dragging a status line up or down with the
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2021 Apr 05
|
||||
" Last Change: 2021 Apr 17
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -417,6 +417,10 @@ endif
|
||||
" Lynx config files
|
||||
au BufNewFile,BufRead lynx.cfg setf lynx
|
||||
|
||||
" Modula-3 configuration language (must be before *.cfg and *makefile)
|
||||
au BufNewFile,BufRead *.quake,cm3.cfg setf m3quake
|
||||
au BufNewFile,BufRead m3makefile,m3overrides setf m3build
|
||||
|
||||
" Quake
|
||||
au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake
|
||||
au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake
|
||||
@@ -596,7 +600,7 @@ au BufNewFile,BufRead *.fan,*.fwt setf fan
|
||||
au BufNewFile,BufRead *.factor setf factor
|
||||
|
||||
" Fennel
|
||||
autocmd BufRead,BufNewFile *.fnl setf fennel
|
||||
autocmd BufRead,BufNewFile *.fnl setf fennel
|
||||
|
||||
" Fetchmail RC file
|
||||
au BufNewFile,BufRead .fetchmailrc setf fetchmail
|
||||
@@ -640,7 +644,7 @@ au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
|
||||
au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
|
||||
|
||||
" Gift (Moodle)
|
||||
autocmd BufRead,BufNewFile *.gift setf gift
|
||||
autocmd BufRead,BufNewFile *.gift setf gift
|
||||
|
||||
" Git
|
||||
au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
|
||||
@@ -711,7 +715,7 @@ au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
|
||||
au BufNewFile,BufRead *.haml setf haml
|
||||
|
||||
" Hamster Classic | Playground files
|
||||
au BufNewFile,BufRead *.hsm setf hamster
|
||||
au BufNewFile,BufRead *.hsm setf hamster
|
||||
|
||||
" Haskell
|
||||
au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot setf haskell
|
||||
@@ -1045,10 +1049,10 @@ au BufNewFile,BufRead *.mod
|
||||
\ setf modsim3 |
|
||||
\ endif
|
||||
|
||||
" Modula 2 (.md removed in favor of Markdown)
|
||||
" Modula-2 (.md removed in favor of Markdown)
|
||||
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
|
||||
|
||||
" Modula 3 (.m3, .i3, .mg, .ig)
|
||||
" Modula-3 (.m3, .i3, .mg, .ig)
|
||||
au BufNewFile,BufRead *.[mi][3g] setf modula3
|
||||
|
||||
" Monk
|
||||
@@ -1191,6 +1195,9 @@ au BufNewFile,BufRead *.pp call dist#ft#FTpp()
|
||||
" Delphi or Lazarus program file
|
||||
au BufNewFile,BufRead *.dpr,*.lpr setf pascal
|
||||
|
||||
" Free Pascal makefile definition file
|
||||
au BufNewFile,BufRead *.fpc setf fpcmake
|
||||
|
||||
" PDF
|
||||
au BufNewFile,BufRead *.pdf setf pdf
|
||||
|
||||
@@ -1204,8 +1211,6 @@ else
|
||||
au BufNewFile,BufRead *.pl call dist#ft#FTpl()
|
||||
endif
|
||||
au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl
|
||||
au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
|
||||
au BufNewFile,BufRead *.raku,*.rakumod setf perl6
|
||||
|
||||
" Perl, XPM or XPM2
|
||||
au BufNewFile,BufRead *.pm
|
||||
@@ -1219,7 +1224,6 @@ au BufNewFile,BufRead *.pm
|
||||
|
||||
" Perl POD
|
||||
au BufNewFile,BufRead *.pod setf pod
|
||||
au BufNewFile,BufRead *.pod6 setf pod6
|
||||
|
||||
" Php, php3, php4, etc.
|
||||
" Also Phtml (was used for PHP 2 in the past)
|
||||
@@ -1338,12 +1342,15 @@ au BufNewFile,BufRead *.pdb setf prolog
|
||||
" Promela
|
||||
au BufNewFile,BufRead *.pml setf promela
|
||||
|
||||
" Property Specification Language (PSL)
|
||||
au BufNewFile,BufRead *.psl setf psl
|
||||
|
||||
" Google protocol buffers
|
||||
au BufNewFile,BufRead *.proto setf proto
|
||||
au BufNewFile,BufRead *.pbtxt setf pbtxt
|
||||
|
||||
" Poke
|
||||
au BufNewFile,BufRead *.pk setf poke
|
||||
au BufNewFile,BufRead *.pk setf poke
|
||||
|
||||
" Protocols
|
||||
au BufNewFile,BufRead */etc/protocols setf protocols
|
||||
@@ -1359,6 +1366,9 @@ au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
|
||||
" Radiance
|
||||
au BufNewFile,BufRead *.rad,*.mat setf radiance
|
||||
|
||||
" Raku (formelly Perl6)
|
||||
au BufNewFile,BufRead *.pm6,*.p6,*.t6,*.pod6,*.raku,*.rakumod,*.rakudoc,*.rakutest setf raku
|
||||
|
||||
" Ratpoison config/command files
|
||||
au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison
|
||||
|
||||
|
||||
25
runtime/ftplugin/fpcmake.vim
Normal file
25
runtime/ftplugin/fpcmake.vim
Normal file
@@ -0,0 +1,25 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Free Pascal Makefile Generator
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 Apr 23
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
runtime! ftplugin/make.vim
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Free Pascal Makefile Definition Files (*.fpc)\t*.fpc\n" ..
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = b:undo_ftplugin .. " | unlet! b:browsefilter"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
@@ -1,6 +1,6 @@
|
||||
" Language: gprof
|
||||
" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
|
||||
" Last Change: 2013 Jun 09
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
" When cursor is on one line of the gprof call graph,
|
||||
" calling this function jumps to this function in the call graph.
|
||||
@@ -16,7 +16,7 @@ fun! <SID>GprofJumpToFunctionIndex()
|
||||
norm! $y%
|
||||
call search('^' . escape(@", '[]'), 'sw')
|
||||
norm! zz
|
||||
elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+'
|
||||
elseif l:line =~ '^\(\s*[0-9\.]\+\)\{3}\s\+'
|
||||
" We're in line in the flat profile.
|
||||
norm! 55|eby$
|
||||
call search('^\[\d\+\].*\d\s\+' . escape(@", '[]*.') . '\>', 'sW')
|
||||
|
||||
24
runtime/ftplugin/m3build.vim
Normal file
24
runtime/ftplugin/m3build.vim
Normal file
@@ -0,0 +1,24 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Modula-3 Makefile
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 April 15
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
runtime! ftplugin/m3quake.vim
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Modula-3 Makefile (m3makefile m3overrides)\tm3makefile;m3overrides\n" ..
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
33
runtime/ftplugin/m3quake.vim
Normal file
33
runtime/ftplugin/m3quake.vim
Normal file
@@ -0,0 +1,33 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Modula-3 Quake
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 April 15
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,:%
|
||||
setlocal commentstring=%\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_words = '\<\%(proc\|if\|foreach\)\>:\<else\>:\<end\>'
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Modula-3 Quake Source Files (*.quake)\t*.quake\n" ..
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl fo< com< cms< " ..
|
||||
\ "| unlet! b:browsefilter b:match_words"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
39
runtime/ftplugin/modula2.vim
Normal file
39
runtime/ftplugin/modula2.vim
Normal file
@@ -0,0 +1,39 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Modula-2
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=s0:(*,mb:\ ,ex:*)
|
||||
setlocal commentstring=(*%s*)
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
" The second branch of the middle pattern is intended to match CASE labels
|
||||
let b:match_words = '\<REPEAT\>:\<UNTIL\>,' ..
|
||||
\ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOOP\|WHILE\|WITH\)\>' ..
|
||||
\ ':' ..
|
||||
\ '\<\%(ELSIF\|ELSE\)\>\|\%(^\s*\)\@<=\w\+\%(\s*\,\s*\w\+\)\=\s*\:=\@!' ..
|
||||
\ ':' ..
|
||||
\ '\<END\>'
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Modula-2 Source Files (*.def *.mod)\t*.def;*.mod\n" ..
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo< " ..
|
||||
\ "| unlet! b:browsefilter b:match_words"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
38
runtime/ftplugin/modula3.vim
Normal file
38
runtime/ftplugin/modula3.vim
Normal file
@@ -0,0 +1,38 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Modula-3
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal comments=s0:(*,mb:\ ,ex:*)
|
||||
setlocal commentstring=(*%s*)
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_words = '\<REPEAT\>:\<UNTIL\>,' ..
|
||||
\ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOCK\|LOOP\|TRY\|TYPECASE\|WHILE\|WITH\)\>' ..
|
||||
\ ':' ..
|
||||
\ '\<\%(ELSIF\|ELSE\|EXCEPT\|FINALLY\)\>\|\%(^\s*\)\@<=\S.*=>' ..
|
||||
\ ':' ..
|
||||
\ '\<END\>'
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Modula-3 Source Files (*.m3)\t*.m3\n" ..
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo< " ..
|
||||
\ "| unlet! b:browsefilter b:match_words"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
@@ -1,20 +1,50 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: pascal
|
||||
" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
|
||||
" Last Changed: 11 Apr 2011
|
||||
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
|
||||
" Language: Pascal
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
|
||||
" Last Change: 2021 Apr 23
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 1 " (pascal is case-insensitive)
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let b:match_words = '\<\%(begin\|case\|record\|object\|try\)\>'
|
||||
let b:match_words .= ':\<^\s*\%(except\|finally\)\>:\<end\>'
|
||||
let b:match_words .= ',\<repeat\>:\<until\>'
|
||||
let b:match_words .= ',\<if\>:\<else\>'
|
||||
set comments=s:(*,m:\ ,e:*),s:{,m:\ ,e:}
|
||||
set commentstring={%s}
|
||||
|
||||
if exists("pascal_delphi")
|
||||
set comments+=:///
|
||||
endif
|
||||
|
||||
" Undo the stuff we changed.
|
||||
let b:undo_ftplugin = "unlet! b:match_words"
|
||||
if !exists("pascal_traditional")
|
||||
set commentstring=//\ %s
|
||||
set comments+=://
|
||||
endif
|
||||
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 1 " (Pascal is case-insensitive)
|
||||
|
||||
let b:match_words = '\<\%(asm\|begin\|case\|\%(\%(=\|packed\)\s*\)\@<=\%(class\|object\)\|\%(=\s*\)\@<=interface\|record\|try\)\>'
|
||||
let b:match_words .= ':\%(^\s*\)\@<=\%(except\|finally\|else\|otherwise\)\>'
|
||||
let b:match_words .= ':\<end\>\.\@!'
|
||||
|
||||
let b:match_words .= ',\<repeat\>:\<until\>'
|
||||
" let b:match_words .= ',\<if\>:\<else\>' " FIXME - else clashing with middle else. It seems like a debatable use anyway.
|
||||
let b:match_words .= ',\<unit\>:\<\%(\%(^\s*\)\@<=interface\|implementation\|initialization\|finalization\)\>:\<end\.'
|
||||
endif
|
||||
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Pascal Source Files (*.pas *.pp *.inc)\t*.pas;*.pp;*.inc\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl fo< cms< com< " ..
|
||||
\ "| unlet! b:browsefilter b:match_words b:match_ignorecase"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Perl 6
|
||||
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||
" Homepage: https://github.com/vim-perl/vim-perl
|
||||
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
|
||||
" Last Change: 2020 Apr 15
|
||||
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||
"
|
||||
" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Make sure the continuation lines below do not cause problems in
|
||||
" compatibility mode.
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
setlocal formatoptions-=t
|
||||
setlocal formatoptions+=crqol
|
||||
setlocal keywordprg=p6doc
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#%s
|
||||
|
||||
" Change the browse dialog on Win32 to show mainly Perl-related files
|
||||
if has("gui_win32")
|
||||
let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
|
||||
\ "Perl Modules (*.pm)\t*.pm\n" .
|
||||
\ "Perl Documentation Files (*.pod)\t*.pod\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
" Provided by Ned Konz <ned at bike-nomad dot com>
|
||||
"---------------------------------------------
|
||||
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')
|
||||
setlocal define=[^A-Za-z_]
|
||||
|
||||
" The following line changes a global variable but is necessary to make
|
||||
" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
|
||||
" the problem. If this causes a " problem for you, add an
|
||||
" after/ftplugin/perl6.vim file that contains
|
||||
" set isfname-=:
|
||||
set isfname+=:
|
||||
setlocal iskeyword=48-57,_,A-Z,a-z,:,-
|
||||
|
||||
" Set this once, globally.
|
||||
if !exists("perlpath")
|
||||
if executable("perl6")
|
||||
try
|
||||
if &shellxquote != '"'
|
||||
let perlpath = system('perl6 -e "@*INC.join(q/,/).say"')
|
||||
else
|
||||
let perlpath = system("perl6 -e '@*INC.join(q/,/).say'")
|
||||
endif
|
||||
let perlpath = substitute(perlpath,',.$',',,','')
|
||||
catch /E145:/
|
||||
let perlpath = ".,,"
|
||||
endtry
|
||||
else
|
||||
" If we can't call perl to get its path, just default to using the
|
||||
" current directory and the directory of the current file.
|
||||
let perlpath = ".,,"
|
||||
endif
|
||||
endif
|
||||
|
||||
let &l:path=perlpath
|
||||
"---------------------------------------------
|
||||
|
||||
" Undo the stuff we changed.
|
||||
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" .
|
||||
\ " | unlet! b:browsefilter"
|
||||
|
||||
" Restore the saved compatibility options.
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:38PM
|
||||
" Last Change: Sat Aug 15, 2020 11:37AM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -20,7 +20,7 @@ setlocal formatoptions-=t
|
||||
setlocal commentstring=#\ %s
|
||||
setlocal comments=:#',:###,:##,:#
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R)\t*.R\n" .
|
||||
\ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
|
||||
127
runtime/ftplugin/raku.vim
Normal file
127
runtime/ftplugin/raku.vim
Normal file
@@ -0,0 +1,127 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Raku
|
||||
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||
" Homepage: https://github.com/Raku/vim-raku
|
||||
" Bugs/requests: https://github.com/Raku/vim-raku/issues
|
||||
" Last Change: 2021-04-16
|
||||
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||
"
|
||||
" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Make sure the continuation lines below do not cause problems in
|
||||
" compatibility mode.
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
setlocal formatoptions-=t
|
||||
setlocal formatoptions+=crqol
|
||||
setlocal keywordprg=p6doc
|
||||
|
||||
setlocal comments=:#\|,:#=,:#
|
||||
setlocal commentstring=#%s
|
||||
|
||||
" Provided by Ned Konz <ned at bike-nomad dot com>
|
||||
"---------------------------------------------
|
||||
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||
setlocal includeexpr=substitute(v:fname,'::','/','g')
|
||||
setlocal suffixesadd=.rakumod,.rakudoc,.pm6,.pm
|
||||
setlocal define=[^A-Za-z_]
|
||||
|
||||
" The following line changes a global variable but is necessary to make
|
||||
" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
|
||||
" the problem. If this causes a problem for you, add an
|
||||
" after/ftplugin/raku.vim file that contains
|
||||
" set isfname-=:
|
||||
set isfname+=:
|
||||
setlocal iskeyword=@,48-57,_,192-255,-
|
||||
|
||||
" Raku exposes its CompUnits through $*REPO, but mapping module names to
|
||||
" compunit paths is nontrivial. Probably it's more convenient to rely on
|
||||
" people using zef, which has a handy store of sources for modules it has
|
||||
" installed.
|
||||
func s:compareReverseFtime(a, b)
|
||||
let atime = getftime(a:a)
|
||||
let btime = getftime(a:b)
|
||||
return atime > btime ? -1 : atime == btime ? 0 : 1
|
||||
endfunc
|
||||
|
||||
let &l:path = "lib,."
|
||||
if exists('$RAKULIB')
|
||||
let &l:path = &l:path . "," . $RAKULIB
|
||||
endif
|
||||
let &l:path = &l:path . "," . join(
|
||||
\ sort(glob("~/.zef/store/*/*/lib", 0, 1), "s:compareReverseFtime"),
|
||||
\ ',')
|
||||
|
||||
" Convert ascii-based ops into their single-character unicode equivalent
|
||||
if get(g:, 'raku_unicode_abbrevs', 0)
|
||||
iabbrev <buffer> !(<) ⊄
|
||||
iabbrev <buffer> !(<=) ⊈
|
||||
iabbrev <buffer> !(>) ⊅
|
||||
iabbrev <buffer> !(>=) ⊉
|
||||
iabbrev <buffer> !(cont) ∌
|
||||
iabbrev <buffer> !(elem) ∉
|
||||
iabbrev <buffer> != ≠
|
||||
iabbrev <buffer> (&) ∩
|
||||
iabbrev <buffer> (+) ⊎
|
||||
iabbrev <buffer> (-) ∖
|
||||
iabbrev <buffer> (.) ⊍
|
||||
iabbrev <buffer> (<) ⊂
|
||||
iabbrev <buffer> (<+) ≼
|
||||
iabbrev <buffer> (<=) ⊆
|
||||
iabbrev <buffer> (>) ⊃
|
||||
iabbrev <buffer> (>+) ≽
|
||||
iabbrev <buffer> (>=) ⊇
|
||||
iabbrev <buffer> (\|) ∪
|
||||
iabbrev <buffer> (^) ⊖
|
||||
iabbrev <buffer> (atomic) ⚛
|
||||
iabbrev <buffer> (cont) ∋
|
||||
iabbrev <buffer> (elem) ∈
|
||||
iabbrev <buffer> * ×
|
||||
iabbrev <buffer> **0 ⁰
|
||||
iabbrev <buffer> **1 ¹
|
||||
iabbrev <buffer> **2 ²
|
||||
iabbrev <buffer> **3 ³
|
||||
iabbrev <buffer> **4 ⁴
|
||||
iabbrev <buffer> **5 ⁵
|
||||
iabbrev <buffer> **6 ⁶
|
||||
iabbrev <buffer> **7 ⁷
|
||||
iabbrev <buffer> **8 ⁸
|
||||
iabbrev <buffer> **9 ⁹
|
||||
iabbrev <buffer> ... …
|
||||
iabbrev <buffer> / ÷
|
||||
iabbrev <buffer> << «
|
||||
iabbrev <buffer> <<[=]<< «=«
|
||||
iabbrev <buffer> <<[=]>> «=»
|
||||
iabbrev <buffer> <= ≤
|
||||
iabbrev <buffer> =~= ≅
|
||||
iabbrev <buffer> >= ≥
|
||||
iabbrev <buffer> >> »
|
||||
iabbrev <buffer> >>[=]<< »=«
|
||||
iabbrev <buffer> >>[=]>> »=»
|
||||
iabbrev <buffer> Inf ∞
|
||||
iabbrev <buffer> atomic-add-fetch ⚛+=
|
||||
iabbrev <buffer> atomic-assign ⚛=
|
||||
iabbrev <buffer> atomic-fetch ⚛
|
||||
iabbrev <buffer> atomic-dec-fetch --⚛
|
||||
iabbrev <buffer> atomic-fetch-dec ⚛--
|
||||
iabbrev <buffer> atomic-fetch-inc ⚛++
|
||||
iabbrev <buffer> atomic-inc-fetch ++⚛
|
||||
iabbrev <buffer> atomic-sub-fetch ⚛−=
|
||||
iabbrev <buffer> e 𝑒
|
||||
iabbrev <buffer> o ∘
|
||||
iabbrev <buffer> pi π
|
||||
iabbrev <buffer> set() ∅
|
||||
iabbrev <buffer> tau τ
|
||||
endif
|
||||
|
||||
" Undo the stuff we changed.
|
||||
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< isk< kp< path<" .
|
||||
\ " | unlet! b:browsefilter"
|
||||
|
||||
" Restore the saved compatibility options.
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R help file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:37PM
|
||||
" Last Change: Sat Aug 15, 2020 12:01PM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -17,7 +17,7 @@ set cpo&vim
|
||||
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: R Markdown file
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sun Jul 22, 2018 06:51PM
|
||||
" Last Change: Sat Aug 15, 2020 12:03PM
|
||||
" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
@@ -46,7 +46,7 @@ runtime ftplugin/pandoc.vim
|
||||
" Don't load another plugin for this buffer
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rnoweb
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Tue Apr 07, 2015 04:37PM
|
||||
" Last Change: Sat Aug 15, 2020 12:02PM
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -24,7 +24,7 @@ setlocal iskeyword=@,48-57,_,.
|
||||
setlocal suffixesadd=.bib,.tex
|
||||
setlocal comments=b:%,b:#,b:##,b:###,b:#'
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: reStructuredText documentation format with R code
|
||||
" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Wed Nov 01, 2017 10:47PM
|
||||
" Last Change: Sat Aug 15, 2020 12:02PM
|
||||
" Original work by Alex Zvoleff
|
||||
|
||||
" Only do this when not yet done for this buffer
|
||||
@@ -37,7 +37,7 @@ if !exists("g:rrst_dynamic_comments") || (exists("g:rrst_dynamic_comments") && g
|
||||
setlocal formatexpr=FormatRrst()
|
||||
endif
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
|
||||
let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Vim
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2021 Feb 20
|
||||
" Last Change: 2021 Apr 11
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -94,11 +94,11 @@ if exists("loaded_matchit")
|
||||
" func name
|
||||
" require a parenthesis following, then there can be an "endfunc".
|
||||
let b:match_words =
|
||||
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
|
||||
\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
|
||||
\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
|
||||
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .
|
||||
\ '\<\(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\<brea\%[k]\>:\%(\%(^\||\)\s*\)\@<=\<con\%[tinue]\>:\%(\%(^\||\)\s*\)\@<=\<end\(w\%[hile]\|fo\%[r]\)\>,' .
|
||||
\ '\<if\>:\%(\%(^\||\)\s*\)\@<=\<el\%[seif]\>:\%(\%(^\||\)\s*\)\@<=\<en\%[dif]\>,' .
|
||||
\ '{:},' .
|
||||
\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
|
||||
\ '\<try\>:\%(\%(^\||\)\s*\)\@<=\<cat\%[ch]\>:\%(\%(^\||\)\s*\)\@<=\<fina\%[lly]\>:\%(\%(^\||\)\s*\)\@<=\<endt\%[ry]\>,' .
|
||||
\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,'
|
||||
" Ignore syntax region commands and settings, any 'en*' would clobber
|
||||
" if-endif.
|
||||
|
||||
@@ -20,8 +20,8 @@ let s:comment_rx = '^\s*#'
|
||||
let s:rule_rx = '^[^ \t#:][^#:]*:\{1,2}\%([^=:]\|$\)'
|
||||
let s:continued_rule_rx = '^[^#:]*:\{1,2}\%([^=:]\|$\)'
|
||||
let s:continuation_rx = '\\$'
|
||||
let s:assignment_rx = '^\s*\h\w*\s*[+?]\==\s*\zs.*\\$'
|
||||
let s:folded_assignment_rx = '^\s*\h\w*\s*[+?]\=='
|
||||
let s:assignment_rx = '^\s*\h\w*\s*[+:?]\==\s*\zs.*\\$'
|
||||
let s:folded_assignment_rx = '^\s*\h\w*\s*[+:?]\=='
|
||||
" TODO: This needs to be a lot more restrictive in what it matches.
|
||||
let s:just_inserted_rule_rx = '^\s*[^#:]\+:\{1,2}$'
|
||||
let s:conditional_directive_rx = '^ *\%(ifn\=\%(eq\|def\)\|else\)\>'
|
||||
|
||||
@@ -36,7 +36,7 @@ let b:did_indent = 1
|
||||
" Is syntax highlighting active ?
|
||||
let b:indent_use_syntax = has("syntax")
|
||||
|
||||
setlocal indentexpr=GetPerl6Indent()
|
||||
setlocal indentexpr=GetRakuIndent()
|
||||
|
||||
" we reset it first because the Perl 5 indent file might have been loaded due
|
||||
" to a .pl/pm file extension, and indent files don't clean up afterwards
|
||||
@@ -50,7 +50,7 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
function! GetPerl6Indent()
|
||||
function! GetRakuIndent()
|
||||
|
||||
" Get the line to be indented
|
||||
let cline = getline(v:lnum)
|
||||
@@ -60,11 +60,6 @@ function! GetPerl6Indent()
|
||||
return 0
|
||||
endif
|
||||
|
||||
" Don't reindent coments on first column
|
||||
if cline =~ '^#'
|
||||
return 0
|
||||
endif
|
||||
|
||||
" Get current syntax item at the line's first char
|
||||
let csynid = ''
|
||||
if b:indent_use_syntax
|
||||
@@ -72,7 +67,7 @@ function! GetPerl6Indent()
|
||||
endif
|
||||
|
||||
" Don't reindent POD and heredocs
|
||||
if csynid =~ "^p6Pod"
|
||||
if csynid =~ "^rakuPod"
|
||||
return indent(v:lnum)
|
||||
endif
|
||||
|
||||
@@ -92,7 +87,7 @@ function! GetPerl6Indent()
|
||||
let skippin = 2
|
||||
while skippin
|
||||
let synid = synIDattr(synID(lnum,1,0),"name")
|
||||
if (synid =~ "^p6Pod" || synid =~ "p6Comment")
|
||||
if (synid =~ "^rakuPod" || synid =~ "rakuComment")
|
||||
let lnum = prevnonblank(lnum - 1)
|
||||
if lnum == 0
|
||||
return 0
|
||||
@@ -107,19 +102,19 @@ function! GetPerl6Indent()
|
||||
endif
|
||||
|
||||
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
|
||||
let ind = ind + shiftwidth()
|
||||
let ind = ind + &sw
|
||||
endif
|
||||
if cline =~ '^\s*[)}\]»>]'
|
||||
let ind = ind - shiftwidth()
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
" Indent lines that begin with 'or' or 'and'
|
||||
if cline =~ '^\s*\(or\|and\)\>'
|
||||
if line !~ '^\s*\(or\|and\)\>'
|
||||
let ind = ind + shiftwidth()
|
||||
let ind = ind + &sw
|
||||
endif
|
||||
elseif line =~ '^\s*\(or\|and\)\>'
|
||||
let ind = ind - shiftwidth()
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
return ind
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Rmd
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Sun Aug 19, 2018 09:14PM
|
||||
" Last Change: Sun Mar 28, 2021 08:05PM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@@ -13,7 +13,7 @@ runtime indent/r.vim
|
||||
let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentkeys=0{,0},:,!^F,o,O,e
|
||||
setlocal indentkeys=0{,0},<:>,!^F,o,O,e
|
||||
setlocal indentexpr=GetRmdIndent()
|
||||
|
||||
if exists("*GetRmdIndent")
|
||||
@@ -23,6 +23,21 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Simple Python indentation algorithm
|
||||
function s:GetPyIndent()
|
||||
let plnum = prevnonblank(v:lnum - 1)
|
||||
let pline = getline(plnum)
|
||||
let cline = getline(v:lnum)
|
||||
if pline =~ '^s```\s*{\s*python '
|
||||
return 0
|
||||
elseif pline =~ ':$'
|
||||
return indent(plnum) + &shiftwidth
|
||||
elseif cline =~ 'else:$'
|
||||
return indent(plnum) - &shiftwidth
|
||||
endif
|
||||
return indent(plnum)
|
||||
endfunction
|
||||
|
||||
function s:GetMdIndent()
|
||||
let pline = getline(v:lnum - 1)
|
||||
let cline = getline(v:lnum)
|
||||
@@ -37,13 +52,14 @@ function s:GetMdIndent()
|
||||
endfunction
|
||||
|
||||
function s:GetYamlIndent()
|
||||
let pline = getline(v:lnum - 1)
|
||||
let plnum = prevnonblank(v:lnum - 1)
|
||||
let pline = getline(plnum)
|
||||
if pline =~ ':\s*$'
|
||||
return indent(v:lnum) + shiftwidth()
|
||||
return indent(plnum) + shiftwidth()
|
||||
elseif pline =~ '^\s*- '
|
||||
return indent(v:lnum) + 2
|
||||
endif
|
||||
return indent(prevnonblank(v:lnum - 1))
|
||||
return indent(plnum)
|
||||
endfunction
|
||||
|
||||
function GetRmdIndent()
|
||||
@@ -52,9 +68,11 @@ function GetRmdIndent()
|
||||
endif
|
||||
if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW")
|
||||
return s:RIndent()
|
||||
elseif v:lnum > 1 && search('^---$', "bnW") == 1 &&
|
||||
\ (search('^---$', "nW") > v:lnum || search('^...$', "nW") > v:lnum)
|
||||
elseif v:lnum > 1 && (search('^---$', "bnW") == 1 &&
|
||||
\ (search('^---$', "nW") > v:lnum || search('^\.\.\.$', "nW") > v:lnum))
|
||||
return s:GetYamlIndent()
|
||||
elseif search('^[ \t]*```{python', "bncW") > search('^[ \t]*```$', "bncW")
|
||||
return s:GetPyIndent()
|
||||
else
|
||||
return s:GetMdIndent()
|
||||
endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Vim script
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2021 Feb 18
|
||||
" Last Change: 2021 Apr 18
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@@ -71,7 +71,8 @@ function GetVimIndentIntern()
|
||||
" End of heredoc: use indent of matching start line
|
||||
let lnum = v:lnum - 1
|
||||
while lnum > 0
|
||||
if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
|
||||
let attr = synIDattr(synID(lnum, 1, 1), "name")
|
||||
if attr != '' && attr !~ 'vimLetHereDoc'
|
||||
return indent(lnum)
|
||||
endif
|
||||
let lnum -= 1
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
" Menu Translations: Francais
|
||||
" Maintainer: Adrien Beau <version.francaise@free.fr>
|
||||
" First Version: Francois Thunus <thunus@systran.fr>
|
||||
" Last Modification: David Blanchet <david.blanchet@free.fr>
|
||||
" Last Change: 2018 Apr 25
|
||||
" Contributors: David Blanchet <david.blanchet@free.fr>
|
||||
" Gabriel Dupras <gabrieldupras@gmail.com>
|
||||
" Last Change: 2021 Feb 16
|
||||
|
||||
" Quit when menu translations have already been done.
|
||||
if exists("did_menu_trans")
|
||||
@@ -78,11 +79,12 @@ menutrans Find\ and\ Rep&lace<Tab>:%s Re&mplacer<Tab>:%s
|
||||
menutrans Find\ and\ Rep&lace<Tab>:s Re&mplacer<Tab>:s
|
||||
" -SEP3-
|
||||
menutrans Settings\ &Window Fe&nêtre\ des\ réglages
|
||||
menutrans Startup\ &Settings Réglages\ de\ &lancement
|
||||
menutrans &Global\ Settings Réglages\ globau&x
|
||||
|
||||
menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! &Surligner\ recherche\ on/off<Tab>:set\ hls!
|
||||
menutrans Toggle\ &Ignore-case<Tab>:set\ ic! &Ignorer\ casse\ on/off<Tab>:set\ ic!
|
||||
menutrans Toggle\ &Showmatch<Tab>:set\ sm! Vérifier\ parenth&èses\ on/off<Tab>:set\ sm!
|
||||
menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! &Surligner\ recherche\ on/off<Tab>:set\ hls!
|
||||
menutrans Toggle\ &Ignoring\ case<Tab>:set\ ic! &Ignorer\ casse\ on/off<Tab>:set\ ic!
|
||||
menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! Vérifier\ parenth&èses\ on/off<Tab>:set\ sm!
|
||||
|
||||
menutrans &Context\ lines Lignes\ &autour\ du\ curseur
|
||||
|
||||
@@ -94,7 +96,7 @@ menutrans Block\ and\ Insert &Bloc\ et\ insertion
|
||||
menutrans Always &Toujours
|
||||
|
||||
menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! I&nsertion\ permanente\ on/off<Tab>:set\ im!
|
||||
menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! &Compatibilité\ Vi\ on/off<Tab>:set\ cp!
|
||||
menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! &Compatibilité\ Vi\ on/off<Tab>:set\ cp!
|
||||
menutrans Search\ &Path\.\.\. Chemin\ de\ rec&herche\ des\ fichiers\.\.\.
|
||||
menutrans Ta&g\ Files\.\.\. Fichiers\ d'&étiquettes\.\.\.
|
||||
" -SEP1-
|
||||
@@ -109,12 +111,13 @@ let g:menutrans_tags_dialog = "Entrez les noms des fichiers d'
|
||||
menutrans F&ile\ Settings Réglages\ fichie&r
|
||||
|
||||
menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! &Numérotation\ on/off<Tab>:set\ nu!
|
||||
menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! &Numérotation\ relative\ on/off<Tab>:set\ nu!
|
||||
menutrans Toggle\ &List\ Mode<Tab>:set\ list! Mode\ &listing\ on/off<Tab>:set\ list!
|
||||
menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! &Retour\ à\ la\ ligne\ on/off<Tab>:set\ wrap!
|
||||
menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Retour\ sur\ &mot\ on/off<Tab>:set\ lbr!
|
||||
menutrans Toggle\ &expand-tab<Tab>:set\ et! &Tab\.\ en\ espaces\ on/off<Tab>:set\ et!
|
||||
menutrans Toggle\ &auto-indent<Tab>:set\ ai! Indentation\ &auto\.\ on/off<Tab>:set\ ai!
|
||||
menutrans Toggle\ &C-indenting<Tab>:set\ cin! Indent\.\ langage\ &C\ on/off<Tab>:set\ cin!
|
||||
menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! &Retour\ à\ la\ ligne\ on/off<Tab>:set\ wrap!
|
||||
menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! Retour\ sur\ &mot\ on/off<Tab>:set\ lbr!
|
||||
menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et! &Tab\.\ en\ espaces\ on/off<Tab>:set\ et!
|
||||
menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! Indentation\ &auto\.\ on/off<Tab>:set\ ai!
|
||||
menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! Indent\.\ langage\ &C\ on/off<Tab>:set\ cin!
|
||||
" -SEP2-
|
||||
menutrans &Shiftwidth Largeur\ des\ in&dentations
|
||||
menutrans Soft\ &Tabstop &Pseudo-tabulations
|
||||
@@ -126,7 +129,9 @@ let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel
|
||||
let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler "
|
||||
|
||||
menutrans C&olor\ Scheme &Jeu\ de\ couleurs
|
||||
menutrans Show\ C&olor\ Schemes\ in\ Menu Afficher\ les\ &jeux\ de\ couleurs
|
||||
menutrans &Keymap &Type\ de\ clavier
|
||||
menutrans Show\ &Keymaps\ in\ Menu Afficher\ les\ &types\ de\ clavier
|
||||
menutrans None (aucun)
|
||||
menutrans Select\ Fo&nt\.\.\. Sélectionner\ &police\.\.\.
|
||||
|
||||
@@ -146,16 +151,17 @@ menutrans To\ &Previous\ error<Tab>[s
|
||||
menutrans Suggest\ &Corrections<Tab>z= Suggérer\ &correction<Tab>z=
|
||||
menutrans &Repeat\ correction<Tab>:spellrepall &Reporter\ la\ correction<Tab>:spellrepall
|
||||
|
||||
an 40.335.205 &Tools.&Spelling.Français\ (fr) :set spl=fr spell<CR>
|
||||
menutrans Set\ language\ to\ "en" Anglais
|
||||
menutrans Set\ language\ to\ "en_au" Anglais\ (en_au)
|
||||
menutrans Set\ language\ to\ "en_ca" Anglais\ (en_ca)
|
||||
menutrans Set\ language\ to\ "en_gb" Anglais\ (en_gb)
|
||||
menutrans Set\ language\ to\ "en_nz" Anglais\ (en_nz)
|
||||
menutrans Set\ language\ to\ "en_us" Anglais\ (en_us)
|
||||
an 40.335.205 &Tools.&Spelling.Dictionnaire\ &français\ (fr) :set spl=fr spell<CR>
|
||||
menutrans Set\ language\ to\ "en" Dictionnaire\ &anglais\ (en)
|
||||
menutrans Set\ language\ to\ "en_au" Dictionnaire\ anglais\ (en_au)
|
||||
menutrans Set\ language\ to\ "en_ca" Dictionnaire\ anglais\ (en_ca)
|
||||
menutrans Set\ language\ to\ "en_gb" Dictionnaire\ anglais\ (en_gb)
|
||||
menutrans Set\ language\ to\ "en_nz" Dictionnaire\ anglais\ (en_nz)
|
||||
menutrans Set\ language\ to\ "en_us" Dictionnaire\ anglais\ (en_us)
|
||||
|
||||
menutrans &Find\ More\ Languages &Trouver\ d'autres\ langues
|
||||
|
||||
let g:menutrans_set_lang_to = "Dictionnaire "
|
||||
|
||||
|
||||
menutrans &Folding &Replis
|
||||
@@ -211,6 +217,7 @@ menutrans &Convert\ to\ HEX<Tab>:%!xxd Convertir\ en\ he&xa<Tab>:%!xxd
|
||||
menutrans Conve&rt\ back<Tab>:%!xxd\ -r Décon&vertir<Tab>:%!xxd\ -r
|
||||
|
||||
menutrans Se&T\ Compiler &Type\ de\ compilateur
|
||||
menutrans Show\ Compiler\ Se&ttings\ in\ Menu &Afficher\ les\ compilateurs
|
||||
|
||||
|
||||
menutrans &Buffers &Tampons
|
||||
@@ -268,10 +275,15 @@ menutrans &Delete &Effacer
|
||||
" -SEP2-
|
||||
menutrans Select\ Blockwise Sélectionner\ &bloc
|
||||
menutrans Select\ &Word Sélectionner\ &mot
|
||||
menutrans Select\ &Sentence Sélectionner\ &phrase
|
||||
menutrans Select\ Pa&ragraph Sélectionner\ pa&ragraphe
|
||||
menutrans Select\ &Line Sélectionner\ &ligne
|
||||
menutrans Select\ &Block Sélectionner\ &bloc
|
||||
menutrans Select\ &All Sélectionner\ &tout
|
||||
|
||||
let g:menutrans_spell_change_ARG_to = 'Remplacer\ "%s"\ par'
|
||||
let g:menutrans_spell_add_ARG_to_word_list = 'Ajouter\ "%s"\ au\ dictionnaire'
|
||||
let g:menutrans_spell_ignore_ARG = 'Ignorer\ "%s"'
|
||||
|
||||
" ToolBar
|
||||
|
||||
@@ -459,7 +471,7 @@ menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd
|
||||
menutrans XFree86\ Config Config\.\ XFree86
|
||||
" The End Of The Syntax Menu
|
||||
|
||||
menutrans &Show\ filetypes\ in\ menu &Afficher\ tout\ le\ menu
|
||||
menutrans &Show\ file\ types\ in\ menu &Afficher\ tout\ le\ menu
|
||||
" -SEP1-
|
||||
menutrans Set\ '&syntax'\ only Changer\ '&syntax'\ seulement
|
||||
menutrans Set\ '&filetype'\ too Changer\ '&filetype'\ aussi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim plugin for showing matching parens
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2021 Apr 07
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
" Exit quickly when:
|
||||
" - this plugin was already loaded (or disabled)
|
||||
@@ -110,7 +110,7 @@ func s:Highlight_Matching_Pair()
|
||||
" We match "escape" for special items, such as lispEscapeSpecial, and
|
||||
" match "symbol" for lispBarSymbol.
|
||||
let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' .
|
||||
\ '''v:val =~? "string\\|character\\|singlequote\\|escape\\symbol\\|comment"''))'
|
||||
\ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|symbol\\|comment"''))'
|
||||
" If executing the expression determines that the cursor is currently in
|
||||
" one of the syntax types, then we want searchpairpos() to find the pair
|
||||
" within those syntax types (i.e., not skip). Otherwise, the cursor is
|
||||
|
||||
@@ -110,10 +110,6 @@ if s:line1 =~# "^#!"
|
||||
elseif s:name =~# 'lua'
|
||||
set ft=lua
|
||||
|
||||
" Perl 6
|
||||
elseif s:name =~# 'perl6'
|
||||
set ft=perl6
|
||||
|
||||
" Perl
|
||||
elseif s:name =~# 'perl'
|
||||
set ft=perl
|
||||
@@ -130,6 +126,10 @@ if s:line1 =~# "^#!"
|
||||
elseif s:name =~# '^groovy\>'
|
||||
set ft=groovy
|
||||
|
||||
" Raku
|
||||
elseif s:name =~# 'raku'
|
||||
set ft=raku
|
||||
|
||||
" Ruby
|
||||
elseif s:name =~# 'ruby'
|
||||
set ft=ruby
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: generic configure file
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Jun 20
|
||||
" Last Change: 2021 May 01
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -10,8 +10,8 @@ endif
|
||||
|
||||
syn keyword confTodo contained TODO FIXME XXX
|
||||
" Avoid matching "text#text", used in /etc/disktab and /etc/gettytab
|
||||
syn match confComment "^#.*" contains=confTodo
|
||||
syn match confComment "\s#.*"ms=s+1 contains=confTodo
|
||||
syn match confComment "^#.*" contains=confTodo,@Spell
|
||||
syn match confComment "\s#.*"ms=s+1 contains=confTodo,@Spell
|
||||
syn region confString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
|
||||
syn region confString start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
|
||||
|
||||
|
||||
58
runtime/syntax/fpcmake.vim
Normal file
58
runtime/syntax/fpcmake.vim
Normal file
@@ -0,0 +1,58 @@
|
||||
" Vim syntax file
|
||||
" Language: Free Pascal Makefile Definition Files
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 Apr 23
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/make.vim
|
||||
|
||||
" NOTE: using start-of-line anchored syn-match groups is simpler than other
|
||||
" alternatives when interacting with the sourced make.vim syntax groups
|
||||
|
||||
" Sections
|
||||
syn region fpcmakeSection matchgroup=fpcmakeSectionDelimiter start="^\s*\[" end="]" contains=fpcmakeSectionName
|
||||
|
||||
syn keyword fpcmakeSectionName contained clean compiler default dist install
|
||||
syn keyword fpcmakeSectionName contained lib package prerules require rules
|
||||
syn keyword fpcmakeSectionName contained shared target
|
||||
|
||||
" [clean]
|
||||
syn match fpcmakeRule "^\s*\(units\|files\)\>"
|
||||
" [compiler]
|
||||
syn match fpcmakeRule "^\s*\(options\|version\|unitdir\|librarydir\|objectdir\)\>"
|
||||
syn match fpcmakeRule "^\s*\(targetdir\|sourcedir\|unittargetdir\|includedir\)\>"
|
||||
" [default]
|
||||
syn match fpcmakeRule "^\s*\(cpu\|dir\|fpcdir\|rule\|target\)\>"
|
||||
" [dist]
|
||||
syn match fpcmakeRule "^\s*\(destdir\|zipname\|ziptarget\)\>"
|
||||
" [install]
|
||||
syn match fpcmakeRule "^\s*\(basedir\|datadir\|fpcpackage\|files\|prefix\)\>"
|
||||
syn match fpcmakeRule "^\s*\(units\)\>"
|
||||
" [package]
|
||||
syn match fpcmakeRule "^\s*\(name\|version\|main\)\>"
|
||||
" [requires]
|
||||
syn match fpcmakeRule "^\s*\(fpcmake\|packages\|libc\|nortl\|unitdir\)\>"
|
||||
syn match fpcmakeRule "^\s*\(packagedir\|tools\)\>"
|
||||
" [shared]
|
||||
syn match fpcmakeRule "^\s*\(build\|libname\|libversion\|libunits\)\>"
|
||||
" [target]
|
||||
syn match fpcmakeRule "^\s*\(dirs\|exampledirs\|examples\|loaders\|programs\)\>"
|
||||
syn match fpcmakeRule "^\s*\(rsts\|units\)\>"
|
||||
|
||||
" Comments
|
||||
syn keyword fpcmakeTodo TODO FIXME XXX contained
|
||||
syn match fpcmakeComment "#.*" contains=fpcmakeTodo,@Spell
|
||||
|
||||
" Default highlighting
|
||||
hi def link fpcmakeSectionDelimiter Delimiter
|
||||
hi def link fpcmakeSectionName Type
|
||||
hi def link fpcmakeComment Comment
|
||||
hi def link fpcmakeTodo Todo
|
||||
hi def link fpcmakeRule Identifier
|
||||
|
||||
let b:current_syntax = "fpcmake"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Syntax for Gprof Output
|
||||
" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
|
||||
" Last Change: 2013 Jun 09
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
" Quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -28,7 +28,7 @@ syn match gprofCallGraphTitle "Call graph (explanation follows)"
|
||||
syn region gprofCallGraphHeader
|
||||
\ start="^granularity: each sample hit covers.*"
|
||||
\ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$"
|
||||
syn match gprofCallGraphFunction "\s\+\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
|
||||
syn match gprofCallGraphFunction "\<\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
|
||||
syn match gprofCallGraphSeparator "^-\+$"
|
||||
syn region gprofCallGraphTrailer
|
||||
\ start="This table describes the call tree of the program"
|
||||
@@ -41,7 +41,7 @@ syn region gprofIndex
|
||||
|
||||
syn match gprofIndexFunctionTitle "^Index by function name$"
|
||||
|
||||
syn match gprofNumbers "^\s\+[0-9 ./+]\+"
|
||||
syn match gprofNumbers "^\s*[0-9 ./+]\+"
|
||||
syn match gprofFunctionIndex "\[\d\+\]"
|
||||
syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>"
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
177
runtime/syntax/m3build.vim
Normal file
177
runtime/syntax/m3build.vim
Normal file
@@ -0,0 +1,177 @@
|
||||
" Vim syntax file
|
||||
" Language: Modula-3 Makefile
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 April 15
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/m3quake.vim
|
||||
|
||||
" Identifiers
|
||||
syn match m3buildPredefinedVariable "\<\%(TARGET\|OS_TYPE\|BUILD_DIR\|PKG_USE\|WDROOT\)\>"
|
||||
|
||||
" Build Procedures {{{1
|
||||
" Generated from cm3/m3-sys/cm3/src/M3Build.m3
|
||||
syn keyword m3buildProcedure HasCBackend
|
||||
|
||||
" (* packages & locations *)
|
||||
syn keyword m3buildProcedure Pkg
|
||||
syn keyword m3buildProcedure override
|
||||
syn keyword m3buildProcedure path_of
|
||||
syn keyword m3buildProcedure pkg_subdir
|
||||
|
||||
" (* names *)
|
||||
syn keyword m3buildProcedure program_name
|
||||
syn keyword m3buildProcedure library_name
|
||||
|
||||
" (* calls in the generated .M3EXPORT files *)
|
||||
syn keyword m3buildProcedure _define_lib
|
||||
syn keyword m3buildProcedure _define_pgm
|
||||
syn keyword m3buildProcedure _import_template
|
||||
syn keyword m3buildProcedure _import_m3lib
|
||||
syn keyword m3buildProcedure _import_otherlib
|
||||
syn keyword m3buildProcedure _map_add_interface
|
||||
syn keyword m3buildProcedure _map_add_generic_interface
|
||||
syn keyword m3buildProcedure _map_add_module
|
||||
syn keyword m3buildProcedure _map_add_generic_module
|
||||
syn keyword m3buildProcedure _map_add_c
|
||||
syn keyword m3buildProcedure _map_add_h
|
||||
syn keyword m3buildProcedure _map_add_s
|
||||
|
||||
" (* compiler options *)
|
||||
syn keyword m3buildProcedure m3_debug
|
||||
syn keyword m3buildProcedure m3_optimize
|
||||
syn keyword m3buildProcedure build_shared
|
||||
syn keyword m3buildProcedure build_standalone
|
||||
|
||||
" (* derived files *)
|
||||
syn keyword m3buildProcedure m3_compile_only
|
||||
syn keyword m3buildProcedure m3_finish_up
|
||||
|
||||
" (* predefined system libraries *)
|
||||
syn keyword m3buildProcedure import_sys_lib
|
||||
|
||||
" (* options *)
|
||||
syn keyword m3buildProcedure m3_option
|
||||
syn keyword m3buildProcedure remove_m3_option
|
||||
|
||||
" (* deleting *)
|
||||
syn keyword m3buildProcedure deriveds
|
||||
|
||||
" (* imports *)
|
||||
syn keyword m3buildProcedure include_dir
|
||||
syn keyword m3buildProcedure include_pkg
|
||||
syn keyword m3buildProcedure import
|
||||
syn keyword m3buildProcedure import_version
|
||||
syn keyword m3buildProcedure import_obj
|
||||
syn keyword m3buildProcedure import_lib
|
||||
|
||||
" (* objects *)
|
||||
syn keyword m3buildProcedure pgm_object
|
||||
|
||||
" (* sources *)
|
||||
syn keyword m3buildProcedure source
|
||||
syn keyword m3buildProcedure pgm_source
|
||||
syn keyword m3buildProcedure interface
|
||||
syn keyword m3buildProcedure Interface
|
||||
syn keyword m3buildProcedure implementation
|
||||
syn keyword m3buildProcedure module
|
||||
syn keyword m3buildProcedure Module
|
||||
syn keyword m3buildProcedure h_source
|
||||
syn keyword m3buildProcedure c_source
|
||||
syn keyword m3buildProcedure s_source
|
||||
syn keyword m3buildProcedure ship_source
|
||||
|
||||
" (* generics *)
|
||||
syn keyword m3buildProcedure generic_interface
|
||||
syn keyword m3buildProcedure Generic_interface
|
||||
syn keyword m3buildProcedure generic_implementation
|
||||
syn keyword m3buildProcedure Generic_implementation
|
||||
syn keyword m3buildProcedure generic_module
|
||||
syn keyword m3buildProcedure Generic_module
|
||||
syn keyword m3buildProcedure build_generic_intf
|
||||
syn keyword m3buildProcedure build_generic_impl
|
||||
|
||||
" (* derived sources *)
|
||||
syn keyword m3buildProcedure derived_interface
|
||||
syn keyword m3buildProcedure derived_implementation
|
||||
syn keyword m3buildProcedure derived_c
|
||||
syn keyword m3buildProcedure derived_h
|
||||
|
||||
" (* hiding/exporting *)
|
||||
syn keyword m3buildProcedure hide_interface
|
||||
syn keyword m3buildProcedure hide_generic_interface
|
||||
syn keyword m3buildProcedure hide_generic_implementation
|
||||
syn keyword m3buildProcedure export_interface
|
||||
syn keyword m3buildProcedure export_generic_interface
|
||||
syn keyword m3buildProcedure export_generic_implementation
|
||||
|
||||
" (* templates *)
|
||||
syn keyword m3buildProcedure template
|
||||
|
||||
" (* library building *)
|
||||
syn keyword m3buildProcedure library
|
||||
syn keyword m3buildProcedure Library
|
||||
|
||||
" (* program building *)
|
||||
syn keyword m3buildProcedure program
|
||||
syn keyword m3buildProcedure Program
|
||||
syn keyword m3buildProcedure c_program
|
||||
syn keyword m3buildProcedure C_program
|
||||
|
||||
" (* man pages *)
|
||||
syn keyword m3buildProcedure manPage
|
||||
syn keyword m3buildProcedure ManPage
|
||||
|
||||
" (* emacs *)
|
||||
syn keyword m3buildProcedure Gnuemacs
|
||||
syn keyword m3buildProcedure CompiledGnuemacs
|
||||
|
||||
" (* "-find" support *)
|
||||
syn keyword m3buildProcedure find_unit
|
||||
syn keyword m3buildProcedure enum_units
|
||||
|
||||
" (* export functions *)
|
||||
syn keyword m3buildProcedure install_sources
|
||||
syn keyword m3buildProcedure install_derived
|
||||
syn keyword m3buildProcedure install_derived_link
|
||||
syn keyword m3buildProcedure install_derived_symbolic_link
|
||||
syn keyword m3buildProcedure install_derived_hard_link
|
||||
syn keyword m3buildProcedure install_link_to_derived
|
||||
syn keyword m3buildProcedure install_symbolic_link_to_derived
|
||||
syn keyword m3buildProcedure install_hard_link_to_derived
|
||||
syn keyword m3buildProcedure install_symbolic_link
|
||||
syn keyword m3buildProcedure install_file
|
||||
|
||||
" (* installation functions *)
|
||||
syn keyword m3buildProcedure BindExport
|
||||
syn keyword m3buildProcedure BinExport
|
||||
syn keyword m3buildProcedure LibdExport
|
||||
syn keyword m3buildProcedure LibExport
|
||||
syn keyword m3buildProcedure EmacsdExport
|
||||
syn keyword m3buildProcedure EmacsExport
|
||||
syn keyword m3buildProcedure DocdExport
|
||||
syn keyword m3buildProcedure DocExport
|
||||
syn keyword m3buildProcedure MandExport
|
||||
syn keyword m3buildProcedure ManExport
|
||||
syn keyword m3buildProcedure HtmlExport
|
||||
syn keyword m3buildProcedure RootExport
|
||||
syn keyword m3buildProcedure RootdExport
|
||||
|
||||
" (* misc *)
|
||||
syn keyword m3buildProcedure gen_m3exports
|
||||
syn keyword m3buildProcedure generate_tfile
|
||||
syn keyword m3buildProcedure delete_file
|
||||
syn keyword m3buildProcedure link_file
|
||||
syn keyword m3buildProcedure symbolic_link_file
|
||||
syn keyword m3buildProcedure hard_link_file
|
||||
" }}}
|
||||
|
||||
hi def link m3buildPredefinedVariable Identifier
|
||||
hi def link m3buildProcedure Function
|
||||
|
||||
let b:current_syntax = "m3build"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|
||||
74
runtime/syntax/m3quake.vim
Normal file
74
runtime/syntax/m3quake.vim
Normal file
@@ -0,0 +1,74 @@
|
||||
" Vim syntax file
|
||||
" Language: Modula-3 Quake
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2021 April 15
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Keywords
|
||||
syn keyword m3quakeKeyword else end foreach if in is local or proc readonly
|
||||
syn keyword m3quakeKeyword return
|
||||
|
||||
" Builtin procedures {{{
|
||||
" Generated from m3-sys/m3quake/src/QMachine.m3
|
||||
syn keyword m3quakeProcedure arglist cp_if defined empty equal error escape
|
||||
syn keyword m3quakeProcedure exec cm3_exec file format include make_dir
|
||||
syn keyword m3quakeProcedure normalize path stale try_exec try_cm3_exec
|
||||
syn keyword m3quakeProcedure unlink_file write datetime date datestamp
|
||||
syn keyword m3quakeProcedure TRACE_INSTR eval_func hostname
|
||||
|
||||
syn keyword m3quakeProcedure pushd popd cd getwd
|
||||
|
||||
syn keyword m3quakeProcedure quake
|
||||
|
||||
syn keyword m3quakeProcedure q_exec q_exec_put q_exec_get
|
||||
|
||||
syn keyword m3quakeProcedure fs_exists fs_readable fs_writable fs_executable
|
||||
syn keyword m3quakeProcedure fs_isdir fs_isfile fs_contents fs_putfile
|
||||
syn keyword m3quakeProcedure fs_mkdir fs_touch fs_lsdirs fs_lsfiles fs_rmdir
|
||||
syn keyword m3quakeProcedure fs_rmfile fs_rmrec fs_cp
|
||||
|
||||
syn keyword m3quakeProcedure pn_valid pn_decompose pn_compose pn_absolute
|
||||
syn keyword m3quakeProcedure pn_prefix pn_last pn_base pn_lastbase pn_lastext
|
||||
syn keyword m3quakeProcedure pn_join pn_join2 pn_replace_ext pn_parent
|
||||
syn keyword m3quakeProcedure pn_current
|
||||
|
||||
syn keyword m3quakeProcedure len
|
||||
|
||||
syn keyword m3quakeProcedure split sub skipl skipr squeeze compress pos
|
||||
syn keyword m3quakeProcedure tcontains bool encode decode subst_chars
|
||||
syn keyword m3quakeProcedure del_chars subst subst_env add_prefix add_suffix
|
||||
" }}}
|
||||
|
||||
" Identifiers
|
||||
syn match m3quakeEnvVariable "$\h\w\+"
|
||||
|
||||
" Operators
|
||||
syn match m3quakeOperator "&"
|
||||
syn match m3quakeOperator "\<\%(contains\|not\|and\|or\)\>"
|
||||
|
||||
" Strings
|
||||
syn match m3quakeEscape "\\[\\nrtbf"]" contained display
|
||||
syn region m3quakeString start=+"+ end=+"+ contains=m3quakeEscape
|
||||
|
||||
" Comments
|
||||
syn keyword m3quakeTodo TODO FIXME XXX contained
|
||||
syn region m3quakeComment start="%" end="$" contains=m3quakeTodo,@Spell
|
||||
syn region m3quakeComment start="/\*" end="\*/" contains=m3quakeTodo,@Spell
|
||||
|
||||
" Default highlighting
|
||||
hi def link m3quakeCommand Statement
|
||||
hi def link m3quakeComment Comment
|
||||
hi def link m3quakeEnvVariable Identifier
|
||||
hi def link m3quakeEscape Special
|
||||
hi def link m3quakeKeyword Keyword
|
||||
hi def link m3quakeOperator Operator
|
||||
hi def link m3quakeProcedure Function
|
||||
hi def link m3quakeString String
|
||||
hi def link m3quakeTodo Todo
|
||||
|
||||
let b:current_syntax = "m3quake"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|
||||
@@ -1,59 +1,96 @@
|
||||
" Vim syntax file
|
||||
" Language: Modula-3
|
||||
" Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
|
||||
" Last Change: 2001 May 10
|
||||
" Language: Modula-3
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
|
||||
" Last Change: 2021 Apr 08
|
||||
|
||||
" Basic things only...
|
||||
" Based on the modula 2 syntax file
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Modula-3 is case-sensitive
|
||||
" syn case ignore
|
||||
|
||||
" Modula-3 keywords
|
||||
syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY
|
||||
syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE
|
||||
syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION
|
||||
syn keyword modula3Keyword DISPOSE DIV
|
||||
syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION
|
||||
syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT
|
||||
syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT
|
||||
syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK
|
||||
syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX
|
||||
syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE
|
||||
syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY
|
||||
syn keyword modula3Keyword RETURN ROOT
|
||||
syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE
|
||||
syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH
|
||||
syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION
|
||||
syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY
|
||||
syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES
|
||||
syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE
|
||||
syn keyword modula3Keyword UNSAFE VALUE VAR WITH
|
||||
|
||||
syn match modula3keyword "\<UNTRACED\>"
|
||||
|
||||
" Special keywords, block delimiters etc
|
||||
syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
|
||||
syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
|
||||
syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
|
||||
|
||||
" Comments
|
||||
syn region modula3Comment start="(\*" end="\*)"
|
||||
" Reserved identifiers
|
||||
syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
|
||||
syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
|
||||
syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
|
||||
syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
|
||||
|
||||
" Predefined types
|
||||
syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
|
||||
syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
|
||||
syn keyword modula3Type WIDECHAR
|
||||
|
||||
syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
|
||||
|
||||
" Operators
|
||||
syn keyword modulaOperator DIV MOD IN AND OR NOT
|
||||
|
||||
if exists("modula3_operators")
|
||||
syn match modula3Operator "\^"
|
||||
syn match modula3Operator "+\|-\|\*\|/\|&"
|
||||
" TODO: need to exclude = in procedure definitions
|
||||
syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#"
|
||||
endif
|
||||
|
||||
" Booleans
|
||||
syn keyword modula3Boolean TRUE FALSE
|
||||
|
||||
" Nil
|
||||
syn keyword modula3Nil NIL
|
||||
|
||||
" Integers
|
||||
syn match modula3Integer "\<\d\+L\=\>"
|
||||
syn match modula3Integer "\<\d\d\=_\x\+L\=\>"
|
||||
|
||||
" Reals
|
||||
syn match modula3Real "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
|
||||
|
||||
" String escape sequences
|
||||
syn match modula3Escape "\\['"ntrf]" contained display
|
||||
syn match modula3Escape "\\\o\{3}" contained display
|
||||
syn match modula3Escape "\\\\" contained display
|
||||
|
||||
" Characters
|
||||
syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
|
||||
|
||||
" Strings
|
||||
syn region modula3String start=+"+ end=+"+
|
||||
syn region modula3String start=+'+ end=+'+
|
||||
syn region modula3String start=+"+ end=+"+ contains=modula3Escape
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
" Pragmas
|
||||
syn region modula3Pragma start="<\*" end="\*>"
|
||||
|
||||
" The default methods for highlighting. Can be overridden later
|
||||
hi def link modula3Keyword Statement
|
||||
hi def link modula3Block PreProc
|
||||
" Comments
|
||||
syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
|
||||
|
||||
" Default highlighting
|
||||
hi def link modula3Block Statement
|
||||
hi def link modula3Boolean Boolean
|
||||
hi def link modula3Character Character
|
||||
hi def link modula3Comment Comment
|
||||
hi def link modula3String String
|
||||
|
||||
hi def link modula3Escape Special
|
||||
hi def link modula3Identifier Keyword
|
||||
hi def link modula3Integer Number
|
||||
hi def link modula3Keyword Statement
|
||||
hi def link modula3Nil Constant
|
||||
hi def link modula3Operator Operator
|
||||
hi def link modula3Pragma PreProc
|
||||
hi def link modula3Real Float
|
||||
hi def link modula3String String
|
||||
hi def link modula3Type Type
|
||||
|
||||
let b:current_syntax = "modula3"
|
||||
|
||||
"I prefer to use this...
|
||||
"set ai
|
||||
"vim: ts=8
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
" Vim syntax file
|
||||
" Language: Pascal
|
||||
" Version: 2.8
|
||||
" Last Change: 2004/10/17 17:47:30
|
||||
" Maintainer: Xavier Crégut <xavier.cregut@enseeiht.fr>
|
||||
" Previous Maintainer: Mario Eusebio <bio@dq.fct.unl.pt>
|
||||
" Language: Pascal
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Previous Maintainers: Xavier Crégut <xavier.cregut@enseeiht.fr>
|
||||
" Mario Eusebio <bio@dq.fct.unl.pt>
|
||||
" Last Change: 2021 Apr 23
|
||||
|
||||
" Contributors: Tim Chase <tchase@csc.com>,
|
||||
" Stas Grabois <stsi@vtrails.com>,
|
||||
" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
|
||||
" Klaus Hast <Klaus.Hast@arcor.net>,
|
||||
" Austin Ziegler <austin@halostatue.ca>,
|
||||
" Markus Koenig <markus@stber-koenig.de>
|
||||
" Stas Grabois <stsi@vtrails.com>,
|
||||
" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
|
||||
" Klaus Hast <Klaus.Hast@arcor.net>,
|
||||
" Austin Ziegler <austin@halostatue.ca>,
|
||||
" Markus Koenig <markus@stber-koenig.de>
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -25,10 +25,10 @@ syn keyword pascalBoolean true false
|
||||
syn keyword pascalConditional if else then
|
||||
syn keyword pascalConstant nil maxint
|
||||
syn keyword pascalLabel case goto label
|
||||
syn keyword pascalOperator and div downto in mod not of or packed with
|
||||
syn keyword pascalOperator and div downto in mod not of or packed
|
||||
syn keyword pascalRepeat do for do repeat while to until
|
||||
syn keyword pascalStatement procedure function
|
||||
syn keyword pascalStatement program begin end const var type
|
||||
syn keyword pascalStatement program begin end const var type with
|
||||
syn keyword pascalStruct record
|
||||
syn keyword pascalType array boolean char integer file pointer real set
|
||||
syn keyword pascalType string text variant
|
||||
@@ -40,12 +40,12 @@ syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE
|
||||
" 20010723az: When wanted, highlight the trailing whitespace -- this is
|
||||
" based on c_space_errors; to enable, use "pascal_space_errors".
|
||||
if exists("pascal_space_errors")
|
||||
if !exists("pascal_no_trail_space_error")
|
||||
syn match pascalSpaceError "\s\+$"
|
||||
endif
|
||||
if !exists("pascal_no_tab_space_error")
|
||||
syn match pascalSpaceError " \+\t"me=e-1
|
||||
endif
|
||||
if !exists("pascal_no_trail_space_error")
|
||||
syn match pascalSpaceError "\s\+$"
|
||||
endif
|
||||
if !exists("pascal_no_tab_space_error")
|
||||
syn match pascalSpaceError " \+\t"me=e-1
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -98,9 +98,24 @@ if exists("pascal_symbol_operator")
|
||||
endif
|
||||
|
||||
syn match pascalNumber "-\=\<\d\+\>"
|
||||
if !exists("pascal_traditional")
|
||||
syn match pascalHexNumber "\$\x\+\>"
|
||||
endif
|
||||
if exists("pascal_fpc")
|
||||
syn match pascalOctNumber "&\o\+\>"
|
||||
syn match pascalBinNumber "%[01]\+\>"
|
||||
endif
|
||||
if exists("pascal_gpc")
|
||||
syn match pascalExtendedNumber "\%([2-9]\|[12]\d\|3[0-6]\)#[[:alnum:]]\+\>"
|
||||
endif
|
||||
|
||||
syn match pascalFloat "-\=\<\d\+\.\d\+\>"
|
||||
syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>"
|
||||
syn match pascalHexNumber "\$[0-9a-fA-F]\+\>"
|
||||
|
||||
if !exists("pascal_traditional")
|
||||
" allow leading zeros
|
||||
syn match pascalControlCharacter "#\%([01]\=\d\=\d\|2[0-4]\d\|25[0-5]\)\>"
|
||||
endif
|
||||
|
||||
if exists("pascal_no_tabs")
|
||||
syn match pascalShowTab "\t"
|
||||
@@ -142,7 +157,7 @@ if !exists("pascal_traditional")
|
||||
syn keyword pascalStatement interface unit uses
|
||||
syn keyword pascalModifier absolute assembler external far forward inline
|
||||
syn keyword pascalModifier interrupt near virtual
|
||||
syn keyword pascalAcces private public
|
||||
syn keyword pascalAccess private public strict
|
||||
syn keyword pascalStruct object
|
||||
syn keyword pascalOperator shl shr xor
|
||||
|
||||
@@ -157,6 +172,7 @@ if !exists("pascal_traditional")
|
||||
syn keyword pascalType Single Double Extended Comp
|
||||
syn keyword pascalType PChar
|
||||
|
||||
syn keyword pascalPredefined self
|
||||
|
||||
if !exists ("pascal_fpc")
|
||||
syn keyword pascalPredefined Result
|
||||
@@ -166,11 +182,11 @@ if !exists("pascal_traditional")
|
||||
syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
|
||||
syn keyword pascalStatement fail otherwise operator
|
||||
syn keyword pascalDirective popstack
|
||||
syn keyword pascalPredefined self
|
||||
syn keyword pascalType ShortString AnsiString WideString
|
||||
endif
|
||||
|
||||
if exists("pascal_gpc")
|
||||
syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
|
||||
syn keyword pascalType SmallInt
|
||||
syn keyword pascalType AnsiChar
|
||||
syn keyword pascalType PAnsiChar
|
||||
@@ -178,6 +194,8 @@ if !exists("pascal_traditional")
|
||||
|
||||
if exists("pascal_delphi")
|
||||
syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
|
||||
syn region pascalDocumentation start="///" end="$" contains=pascalTodo,pascalSpaceError
|
||||
syn region pascalDocumentation start="{!" end="}" contains=pascalTodo,pascalSpaceError
|
||||
syn keyword pascalType SmallInt Int64
|
||||
syn keyword pascalType Real48 Currency
|
||||
syn keyword pascalType AnsiChar WideChar
|
||||
@@ -192,11 +210,11 @@ if !exists("pascal_traditional")
|
||||
syn keyword pascalStatement initialization finalization uses exports
|
||||
syn keyword pascalStatement property out resourcestring threadvar
|
||||
syn keyword pascalModifier contains
|
||||
syn keyword pascalModifier overridden reintroduce abstract
|
||||
syn keyword pascalModifier overridden reintroduce abstract sealed
|
||||
syn keyword pascalModifier override export dynamic name message
|
||||
syn keyword pascalModifier dispid index stored default nodefault readonly
|
||||
syn keyword pascalModifier writeonly implements overload requires resident
|
||||
syn keyword pascalAcces protected published automated
|
||||
syn keyword pascalAccess protected published automated
|
||||
syn keyword pascalDirective register pascal cvar cdecl stdcall safecall
|
||||
syn keyword pascalOperator as is
|
||||
endif
|
||||
@@ -319,37 +337,43 @@ endif
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
hi def link pascalAcces pascalStatement
|
||||
hi def link pascalAccess pascalStatement
|
||||
hi def link pascalBoolean Boolean
|
||||
hi def link pascalComment Comment
|
||||
hi def link pascalConditional Conditional
|
||||
hi def link pascalDocumentation Comment
|
||||
hi def link pascalConditional Conditional
|
||||
hi def link pascalConstant Constant
|
||||
hi def link pascalDelimiter Identifier
|
||||
hi def link pascalDirective pascalStatement
|
||||
hi def link pascalException Exception
|
||||
hi def link pascalFloat Float
|
||||
hi def link pascalControlCharacter Character
|
||||
hi def link pascalDelimiter Identifier
|
||||
hi def link pascalDirective pascalStatement
|
||||
hi def link pascalException Exception
|
||||
hi def link pascalFloat Float
|
||||
hi def link pascalFunction Function
|
||||
hi def link pascalLabel Label
|
||||
hi def link pascalLabel Label
|
||||
hi def link pascalMatrixDelimiter Identifier
|
||||
hi def link pascalModifier Type
|
||||
hi def link pascalNumber Number
|
||||
hi def link pascalExtendedNumber Number
|
||||
hi def link pascalBinNumber pascalNumber
|
||||
hi def link pascalHexNumber pascalNumber
|
||||
hi def link pascalOctNumber pascalNumber
|
||||
hi def link pascalOperator Operator
|
||||
hi def link pascalPredefined pascalStatement
|
||||
hi def link pascalPredefined pascalStatement
|
||||
hi def link pascalPreProc PreProc
|
||||
hi def link pascalRepeat Repeat
|
||||
hi def link pascalSpaceError Error
|
||||
hi def link pascalStatement Statement
|
||||
hi def link pascalSpaceError Error
|
||||
hi def link pascalStatement Statement
|
||||
hi def link pascalString String
|
||||
hi def link pascalStringEscape Special
|
||||
hi def link pascalStringEscape Special
|
||||
hi def link pascalStringEscapeGPC Special
|
||||
hi def link pascalStringError Error
|
||||
hi def link pascalStringError Error
|
||||
hi def link pascalStruct pascalStatement
|
||||
hi def link pascalSymbolOperator pascalOperator
|
||||
hi def link pascalTodo Todo
|
||||
hi def link pascalType Type
|
||||
hi def link pascalUnclassified pascalStatement
|
||||
hi def link pascalTodo Todo
|
||||
hi def link pascalType Type
|
||||
hi def link pascalUnclassified pascalStatement
|
||||
" hi def link pascalAsm Assembler
|
||||
hi def link pascalError Error
|
||||
hi def link pascalError Error
|
||||
hi def link pascalAsmKey pascalStatement
|
||||
hi def link pascalShowTab Error
|
||||
|
||||
@@ -357,4 +381,4 @@ hi def link pascalShowTab Error
|
||||
|
||||
let b:current_syntax = "pascal"
|
||||
|
||||
" vim: ts=8 sw=2
|
||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
83
runtime/syntax/psl.vim
Normal file
83
runtime/syntax/psl.vim
Normal file
@@ -0,0 +1,83 @@
|
||||
" Vim syntax file
|
||||
" Language: Property Specification Language (PSL)
|
||||
" Maintainer: Daniel Kho <daniel.kho@logik.haus>
|
||||
" Last Changed: 2021 Apr 17 by Daniel Kho
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Read in VHDL syntax files
|
||||
runtime! syntax/vhdl.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" case is not significant
|
||||
syn case ignore
|
||||
|
||||
" Add ! character to keyword recognition.
|
||||
setlocal iskeyword+=33
|
||||
|
||||
" PSL keywords
|
||||
syn keyword pslOperator A AF AG AX
|
||||
syn keyword pslOperator E EF EG EX
|
||||
syn keyword pslOperator F G U W X X!
|
||||
syn keyword pslOperator abort always assert assume async_abort
|
||||
syn keyword pslOperator before before! before!_ before_ bit bitvector boolean
|
||||
syn keyword pslOperator clock const countones cover
|
||||
syn keyword pslOperator default
|
||||
syn keyword pslOperator ended eventually!
|
||||
syn keyword pslOperator fairness fell for forall
|
||||
syn keyword pslOperator hdltype
|
||||
syn keyword pslOperator in inf inherit isunknown
|
||||
syn keyword pslOperator mutable
|
||||
syn keyword pslOperator never next next! next_a next_a! next_e next_e! next_event next_event! next_event_a next_event_a! next_event_e next_event_e! nondet nondet_vector numeric
|
||||
syn keyword pslOperator onehot onehot0
|
||||
syn keyword pslOperator property prev
|
||||
syn keyword pslOperator report restrict restrict! rose
|
||||
syn keyword pslOperator sequence stable string strong sync_abort
|
||||
syn keyword pslOperator union until until! until!_ until_
|
||||
syn keyword pslOperator vmode vpkg vprop vunit
|
||||
syn keyword pslOperator within
|
||||
"" Common keywords with VHDL
|
||||
"syn keyword pslOperator and is not or to
|
||||
|
||||
" PSL operators
|
||||
syn match pslOperator "=>\||=>"
|
||||
syn match pslOperator "<-\|->"
|
||||
syn match pslOperator "@"
|
||||
|
||||
|
||||
"Modify the following as needed. The trade-off is performance versus functionality.
|
||||
syn sync minlines=600
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
hi def link pslSpecial Special
|
||||
hi def link pslStatement Statement
|
||||
hi def link pslCharacter Character
|
||||
hi def link pslString String
|
||||
hi def link pslVector Number
|
||||
hi def link pslBoolean Number
|
||||
hi def link pslTodo Todo
|
||||
hi def link pslFixme Fixme
|
||||
hi def link pslComment Comment
|
||||
hi def link pslNumber Number
|
||||
hi def link pslTime Number
|
||||
hi def link pslType Type
|
||||
hi def link pslOperator Operator
|
||||
hi def link pslError Error
|
||||
hi def link pslAttribute Special
|
||||
hi def link pslPreProc PreProc
|
||||
|
||||
|
||||
let b:current_syntax = "psl"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: ts=8
|
||||
@@ -5,7 +5,7 @@
|
||||
" Tom Payne <tom@tompayne.org>
|
||||
" Contributor: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Wed Aug 01, 2018 10:10PM
|
||||
" Last Change: Sun Mar 28, 2021 01:47PM
|
||||
" Filenames: *.R *.r *.Rhistory *.Rt
|
||||
"
|
||||
" NOTE: The highlighting of R functions might be defined in
|
||||
@@ -53,12 +53,12 @@ syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):"
|
||||
syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent
|
||||
syn keyword rTodoKeyw BUG FIXME NOTE TODO contained
|
||||
syn match rTodoInfo "(\zs.\{-}\ze)" contained
|
||||
syn match rComment contains=@Spell,rCommentTodo,rTodoParen,rOBlock "#.*"
|
||||
syn match rComment contains=@Spell,rCommentTodo,rTodoParen "#.*"
|
||||
|
||||
" Roxygen
|
||||
if g:r_syntax_hl_roxygen
|
||||
" A roxygen block can start at the beginning of a file (first version) and
|
||||
" after a blank line (second version). It ends when a line that does not
|
||||
" after a blank line (second version). It ends when a line appears that does not
|
||||
" contain a roxygen comment. In the following comments, any line containing
|
||||
" a roxygen comment marker (one or two hash signs # followed by a single
|
||||
" quote ' and preceded only by whitespace) is called a roxygen line. A
|
||||
@@ -71,6 +71,12 @@ if g:r_syntax_hl_roxygen
|
||||
syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
|
||||
syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
|
||||
|
||||
" A title as part of a block is always at the beginning of the block, i.e.
|
||||
" either at the start of a file or after a completely empty line.
|
||||
syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
|
||||
syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
|
||||
syn match rOTitleTag contained "@title"
|
||||
|
||||
" When a roxygen block has a title and additional content, the title
|
||||
" consists of one or more roxygen lines (as little as possible are matched),
|
||||
" followed either by an empty roxygen line
|
||||
@@ -87,16 +93,15 @@ if g:r_syntax_hl_roxygen
|
||||
syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
|
||||
syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
|
||||
|
||||
" A title as part of a block is always at the beginning of the block, i.e.
|
||||
" either at the start of a file or after a completely empty line.
|
||||
syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
|
||||
syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
|
||||
syn match rOTitleTag contained "@title"
|
||||
|
||||
syn match rOCommentKey "^\s*#\{1,2}'" contained
|
||||
syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
|
||||
syn region rOExamples start="^\s*#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
|
||||
|
||||
" rOTag list generated from the lists in
|
||||
" R6 classes may contain roxygen lines independent of roxygen blocks
|
||||
syn region rOR6Class start=/R6Class(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold
|
||||
syn match rOR6Block "#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
|
||||
syn match rOR6Block "^\s*#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
|
||||
|
||||
" rOTag list originally generated from the lists that were available in
|
||||
" https://github.com/klutometis/roxygen/R/rd.R and
|
||||
" https://github.com/klutometis/roxygen/R/namespace.R
|
||||
" using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/
|
||||
@@ -155,7 +160,10 @@ if g:r_syntax_hl_roxygen
|
||||
syn match rOTag contained "@S3method"
|
||||
syn match rOTag contained "@useDynLib"
|
||||
" other
|
||||
syn match rOTag contained "@eval"
|
||||
syn match rOTag contained "@include"
|
||||
syn match rOTag contained "@includeRmd"
|
||||
syn match rOTag contained "@order"
|
||||
endif
|
||||
|
||||
|
||||
@@ -186,6 +194,11 @@ syn match rSpecial display contained "\\U\x\{1,8}"
|
||||
syn match rSpecial display contained "\\u{\x\{1,4}}"
|
||||
syn match rSpecial display contained "\\U{\x\{1,8}}"
|
||||
|
||||
" Raw string
|
||||
syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)(/ end=/)\z2\z1/ keepend
|
||||
syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\){/ end=/}\z2\z1/ keepend
|
||||
syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)\[/ end=/\]\z2\z1/ keepend
|
||||
|
||||
" Statement
|
||||
syn keyword rStatement break next return
|
||||
syn keyword rConditional if else
|
||||
@@ -354,6 +367,8 @@ hi def link rOperator Operator
|
||||
hi def link rOpError Error
|
||||
hi def link rParenError Error
|
||||
hi def link rPreProc PreProc
|
||||
hi def link rRawString String
|
||||
hi def link rRawStrDelim Delimiter
|
||||
hi def link rRepeat Repeat
|
||||
hi def link rSpecial SpecialChar
|
||||
hi def link rStatement Statement
|
||||
@@ -366,6 +381,7 @@ if g:r_syntax_hl_roxygen
|
||||
hi def link rOTitleBlock Title
|
||||
hi def link rOBlock Comment
|
||||
hi def link rOBlockNoTitle Comment
|
||||
hi def link rOR6Block Comment
|
||||
hi def link rOTitle Title
|
||||
hi def link rOCommentKey Comment
|
||||
hi def link rOExamples SpecialComment
|
||||
|
||||
1971
runtime/syntax/raku.vim
Normal file
1971
runtime/syntax/raku.vim
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,10 +2,9 @@
|
||||
" Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc )
|
||||
" Maintainer: Magnus Woldrich <m@japh.se>
|
||||
" URL: http://github.com/trapd00r/vim-syntax-ratpoison
|
||||
" Last Change: 2011 Apr 11
|
||||
" Last Change: 2021-04-12 13:46:04
|
||||
" Previous Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
@@ -38,7 +37,7 @@ syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained
|
||||
syn keyword ratpoisonCommandArg source sselect startup_message time title contained
|
||||
syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained
|
||||
syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained
|
||||
syn keyword ratpoisonCommandArg windows contained
|
||||
syn keyword ratpoisonCommandArg windows framefmt infofmt contained
|
||||
|
||||
syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained
|
||||
syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained
|
||||
@@ -92,19 +91,27 @@ syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg bgcolor
|
||||
syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg fgcolor
|
||||
syn keyword ratpoisonSetArg framefmt contained nextgroup=ratpoisonWinFmtArg
|
||||
syn keyword ratpoisonSetArg fwcolor
|
||||
syn keyword ratpoisonSetArg framemsgwait contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
|
||||
syn keyword ratpoisonSetArg bwcolor
|
||||
syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
|
||||
syn keyword ratpoisonSetArg historysize
|
||||
syn keyword ratpoisonSetArg historycompaction
|
||||
syn keyword ratpoisonSetArg historyexpansion
|
||||
syn keyword ratpoisonSetArg infofmt contained nextgroup=ratpoisonWinFmtArg
|
||||
syn keyword ratpoisonSetArg topkmap
|
||||
syn keyword ratpoisonSetArg barinpadding
|
||||
syn keyword ratpoisonSetArg font
|
||||
syn keyword ratpoisonSetArg framesels
|
||||
syn keyword ratpoisonSetArg maxundos
|
||||
syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg
|
||||
syn keyword ratpoisonSetArg msgwait contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg startup_message
|
||||
syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg
|
||||
syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg
|
||||
syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg
|
||||
@@ -113,6 +120,8 @@ syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg
|
||||
syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg
|
||||
|
||||
syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
|
||||
syn match ratpoisonFrameFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
|
||||
syn match ratpoisonInfoFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
|
||||
|
||||
syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained
|
||||
|
||||
@@ -126,6 +135,7 @@ syn match ratpoisonDefCommand "^\s*defbgcolor\s*"
|
||||
syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg
|
||||
syn match ratpoisonDefCommand "^\s*deffgcolor\s*"
|
||||
syn match ratpoisonDefCommand "^\s*deffont\s*"
|
||||
syn match ratpoisonDefCommand "^\s*defframefmt\s*" nextgroup=ratpoisonWinFmtArg
|
||||
syn match ratpoisonDefCommand "^\s*defframesels\s*"
|
||||
syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg
|
||||
syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg
|
||||
@@ -243,14 +253,13 @@ syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$"
|
||||
syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$"
|
||||
syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$"
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
hi def link ratpoisonBooleanArg Boolean
|
||||
hi def link ratpoisonCommandArg Keyword
|
||||
hi def link ratpoisonComment Comment
|
||||
hi def link ratpoisonDefCommand Identifier
|
||||
hi def link ratpoisonFrameFmtArg Special
|
||||
hi def link ratpoisonGravityArg Constant
|
||||
hi def link ratpoisonInfoFmtArg Special
|
||||
hi def link ratpoisonKeySeqArg Special
|
||||
hi def link ratpoisonNumberArg Number
|
||||
hi def link ratpoisonSetArg Keyword
|
||||
@@ -261,7 +270,6 @@ hi def link ratpoisonWinFmtArg Special
|
||||
hi def link ratpoisonWinNameArg Constant
|
||||
hi def link ratpoisonWinListArg Constant
|
||||
|
||||
|
||||
let b:current_syntax = "ratpoison"
|
||||
|
||||
" vim: ts=8
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" markdown Text with R statements
|
||||
" Language: markdown with R code chunks
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Thu Apr 18, 2019 09:17PM
|
||||
" Last Change: Wed Apr 21, 2021 09:55AM
|
||||
"
|
||||
" For highlighting pandoc extensions to markdown like citations and TeX and
|
||||
" many other advanced features like folding of markdown sections, it is
|
||||
@@ -13,27 +13,45 @@ if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Configuration if not using pandoc syntax:
|
||||
" Add syntax highlighting of YAML header
|
||||
let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1)
|
||||
" Add syntax highlighting of citation keys
|
||||
let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1)
|
||||
" Highlight the header of the chunk of R code
|
||||
let g:rmd_syn_hl_chunk = get(g:, 'g:rmd_syn_hl_chunk', 0)
|
||||
" Highlight the header of the chunks as R code
|
||||
let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0)
|
||||
|
||||
" Pandoc-syntax has more features, but it is slower.
|
||||
" https://github.com/vim-pandoc/vim-pandoc-syntax
|
||||
let g:pandoc#syntax#codeblocks#embeds#langs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', ['r'])
|
||||
runtime syntax/pandoc.vim
|
||||
if exists("b:current_syntax")
|
||||
" Fix recognition of R code
|
||||
syn region pandocDelimitedCodeBlock_r start=/^```{r\>.*}$/ end=/^```$/ contained containedin=pandocDelimitedCodeBlock contains=@R
|
||||
" Recognize inline R code
|
||||
syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend
|
||||
hi def link rmdInlineDelim Delimiter
|
||||
|
||||
" Fix recognition of language chunks (code adapted from pandoc, 2021-03-28)
|
||||
" Knitr requires braces in the block's header
|
||||
for s:lng in g:pandoc#syntax#codeblocks#embeds#langs
|
||||
let s:nm = matchstr(s:lng, '^[^=]*')
|
||||
exe 'syn clear pandocDelimitedCodeBlock_'.s:nm
|
||||
exe 'syn clear pandocDelimitedCodeBlockinBlockQuote_'.s:nm
|
||||
if g:rmd_syn_hl_chunk
|
||||
exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@R'
|
||||
exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@'.toupper(s:nm)
|
||||
else
|
||||
exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@'.toupper(s:nm)
|
||||
endif
|
||||
endfor
|
||||
unlet s:lng
|
||||
unlet s:nm
|
||||
hi def link rmdInlineDelim Delimiter
|
||||
hi def link rmdCodeDelim Delimiter
|
||||
let b:current_syntax = "rmd"
|
||||
finish
|
||||
endif
|
||||
|
||||
" Configuration if not using pandoc syntax:
|
||||
" Add syntax highlighting of YAML header
|
||||
let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1)
|
||||
" Add syntax highlighting of citation keys
|
||||
let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1)
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
@@ -63,15 +81,17 @@ for s:type in g:rmd_fenced_languages
|
||||
unlet! b:current_syntax
|
||||
exe 'syn include @Rmd'.s:nm.' syntax/'.s:ft.'.vim'
|
||||
if g:rmd_syn_hl_chunk
|
||||
exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmd'.s:nm
|
||||
exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmdr'
|
||||
exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@Rmd'.s:nm
|
||||
else
|
||||
exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.s:nm
|
||||
endif
|
||||
exe 'syn region rmd'.s:nm.'Inline matchgroup=rmdInlineDelim start="`'.s:nm.' " end="`" contains=@Rmd'.s:nm.' keepend'
|
||||
endfor
|
||||
unlet! s:type
|
||||
|
||||
" Recognize inline R code
|
||||
syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr keepend
|
||||
|
||||
hi def link rmdInlineDelim Delimiter
|
||||
hi def link rmdCodeDelim Delimiter
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ syn cluster texParaGroup add=@rnoweb
|
||||
|
||||
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||
syn include @rnowebR syntax/r.vim
|
||||
syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
|
||||
syn match rnowebChunkReference "^<<.*>>$" contained
|
||||
syn region rnowebChunk matchgroup=rnowebDelimiter start="^\s*<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
|
||||
syn match rnowebChunkReference "^\s*<<.*>>$" contained
|
||||
syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained
|
||||
|
||||
" Sweave options command {{{1
|
||||
|
||||
@@ -682,7 +682,7 @@ Not: Arama dosyan
|
||||
Ders 5.3'ün iki adet kopyası olduğunu görün, özgün sürümü ve kopyası.
|
||||
|
||||
NOT: Bu komutu kullanarak bir dış komutun çıktısını da dosyanın içine
|
||||
koyabilirsiniz. Örneğin :r :!ls yazmak ls komutunun vereceği çıktıyı
|
||||
koyabilirsiniz. Örneğin :r !ls yazmak ls komutunun vereceği çıktıyı
|
||||
dosyanın içinde hemen imlecin altındaki satıra koyar.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -682,7 +682,7 @@ Not: Arama dosyanın sonuna ulaştığında dosyanın başından sürecektir. Bu
|
||||
Ders 5.3'ün iki adet kopyası olduğunu görün, özgün sürümü ve kopyası.
|
||||
|
||||
NOT: Bu komutu kullanarak bir dış komutun çıktısını da dosyanın içine
|
||||
koyabilirsiniz. Örneğin :r :!ls yazmak ls komutunun vereceği çıktıyı
|
||||
koyabilirsiniz. Örneğin :r !ls yazmak ls komutunun vereceği çıktıyı
|
||||
dosyanın içinde hemen imlecin altındaki satıra koyar.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -39,7 +39,7 @@ version of Vim that is small and starts up quickly, see the Makefile for how
|
||||
to disable the GUI and X11. If you don't have GUI libraries and/or X11, these
|
||||
features will be disabled automatically.
|
||||
|
||||
To built Vim on Ubuntu from scratch on a clean system using git:
|
||||
To build Vim on Ubuntu from scratch on a clean system using git:
|
||||
Install tools required to be able to get and build Vim:
|
||||
% sudo apt install git
|
||||
% sudo apt install make
|
||||
|
||||
@@ -1,64 +1,83 @@
|
||||
INSTALLmac.txt - Installation of Vim on Macintosh
|
||||
INSTALLmac.txt - Installation of Vim on Apple MacOS
|
||||
|
||||
This file contains instructions for compiling Vim. If you already have an
|
||||
executable version of Vim, you don't need this.
|
||||
|
||||
First, make sure you've installed Xcode or CommandLineTools. If not, open a
|
||||
terminal and do
|
||||
MacOS Classic is no longer supported. If you really want it use Vim 6.4.
|
||||
Only '/' is supported as path separator.
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Prerequisites
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Make sure you've installed Xcode and CommandLineTools. You can download Xcode
|
||||
from the Mac App Store, for free.
|
||||
|
||||
To check for CommandLineTools open a terminal and do:
|
||||
|
||||
$ make --version
|
||||
|
||||
A window pops up instructing you to install the developer tools.
|
||||
If not installed yet a window pops up instructing you to install the developer
|
||||
tools.
|
||||
|
||||
If you don't have the source yet, best is to use git (which you need to
|
||||
install first), see http://www.vim.org/git.php
|
||||
Or you can download and unpack the Unix tar archive, see
|
||||
http://www.vim.org/download.php
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Summary
|
||||
Build and install the terminal version.
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
1 MacOS X
|
||||
1.1. Terminal version
|
||||
1.2. X (Athena, GTK, Motif) or plain text.
|
||||
|
||||
MacOS Classic is no longer supported. If you really want it use Vim 6.4.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
1 MacOS X
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
1.0 Considerations
|
||||
|
||||
Only '/' is supported as path separator.
|
||||
|
||||
1.1 Terminal version (default)
|
||||
|
||||
You can compile vim with the standard Unix routine:
|
||||
cd .../src
|
||||
You can compile vim with the standard Unix routine:
|
||||
cd vim/src
|
||||
make
|
||||
make test
|
||||
sudo make install
|
||||
|
||||
You need at least Xcode 1.5.
|
||||
If you get an error "glibtool: command not found" search on stackoverflow for
|
||||
mac-osx-where-can-i-download-glibtool.
|
||||
|
||||
To overrule the architecture do this before running make:
|
||||
With Homebrew, run:
|
||||
|
||||
./configure --with-mac-arch=intel
|
||||
or
|
||||
./configure --with-mac-arch=ppc
|
||||
brew install libtool
|
||||
|
||||
To build libtool from source:
|
||||
|
||||
1. Download the source code from https://www.gnu.org/software/libtool/.
|
||||
|
||||
2. Run these commands from the root of the source code directory:
|
||||
|
||||
./configure --program-prefix=g
|
||||
make
|
||||
sudo make install
|
||||
|
||||
|
||||
1.2 X-Windows
|
||||
----------------------------------------------------------------------------
|
||||
Build and install the GUI version with X-Windows
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
You must explicitly tell configure to use a GUI.
|
||||
First, install XQuartz, which you can download from https://www.xquartz.org.
|
||||
|
||||
cd .../src
|
||||
./configure --disable-darwin --enable-gui=gtk2
|
||||
make; make install
|
||||
To tell configure to use a GUI you can edit the Makefile and uncomment these
|
||||
two lines (remove the # at the start of the line):
|
||||
|
||||
NOTE: The following GUI options are possible (but might not work):
|
||||
no (for terminal only), motif, athena, nextaw
|
||||
gtk, gtk2, gnome, gnome2,
|
||||
CONF_OPT_GUI = --enable-gui=athena
|
||||
CONF_OPT_DARWIN = --disable-darwin
|
||||
|
||||
NOTE: You need to first install XFree86 and XDarwin.
|
||||
Please visit http://www.XDarwin.org
|
||||
Do "make distclean" to start with a clean slate.
|
||||
Then build as with the terminal version above.
|
||||
Instead of "athena" you can try "gtk2" but you probably need to install GTK
|
||||
first.
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Notes
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Mac-specific configure options are explained in the Makefile:
|
||||
--disable-darwin
|
||||
--with-mac-arch
|
||||
|
||||
------------------------------------------------------
|
||||
|
||||
@@ -489,7 +489,7 @@ CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
|
||||
#VIMRCLOC = somewhere
|
||||
#VIMRUNTIMEDIR = somewhere
|
||||
|
||||
CFLAGS = -c /W3 /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
|
||||
CFLAGS = -c /W3 /GF /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
|
||||
$(CSCOPE_DEFS) $(TERM_DEFS) $(SOUND_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
|
||||
$(NBDEBUG_DEFS) $(XPM_DEFS) \
|
||||
$(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
|
||||
|
||||
1
src/auto/configure
vendored
1
src/auto/configure
vendored
@@ -12071,6 +12071,7 @@ $as_echo "yes" >&6; }
|
||||
else
|
||||
as_fn_error $? "NOT FOUND!
|
||||
You need to install a terminal library; for example ncurses.
|
||||
On Linux that would be the libncurses-dev package.
|
||||
Or specify the name of the library with --with-tlib." "$LINENO" 5
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
|
||||
83
src/blob.c
83
src/blob.c
@@ -125,13 +125,33 @@ blob_get(blob_T *b, int idx)
|
||||
}
|
||||
|
||||
/*
|
||||
* Store one byte "c" in blob "b" at "idx".
|
||||
* Store one byte "byte" in blob "blob" at "idx".
|
||||
* Caller must make sure that "idx" is valid.
|
||||
*/
|
||||
void
|
||||
blob_set(blob_T *b, int idx, char_u c)
|
||||
blob_set(blob_T *blob, int idx, int byte)
|
||||
{
|
||||
((char_u*)b->bv_ga.ga_data)[idx] = c;
|
||||
((char_u*)blob->bv_ga.ga_data)[idx] = byte;
|
||||
}
|
||||
|
||||
/*
|
||||
* Store one byte "byte" in blob "blob" at "idx".
|
||||
* Append one byte if needed.
|
||||
*/
|
||||
void
|
||||
blob_set_append(blob_T *blob, int idx, int byte)
|
||||
{
|
||||
garray_T *gap = &blob->bv_ga;
|
||||
|
||||
// Allow for appending a byte. Setting a byte beyond
|
||||
// the end is an error otherwise.
|
||||
if (idx < gap->ga_len
|
||||
|| (idx == gap->ga_len && ga_grow(gap, 1) == OK))
|
||||
{
|
||||
blob_set(blob, idx, byte);
|
||||
if (idx == gap->ga_len)
|
||||
++gap->ga_len;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -336,6 +356,58 @@ blob_slice_or_index(
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if "n1"- is a valid index for a blobl with length "bloblen".
|
||||
*/
|
||||
int
|
||||
check_blob_index(long bloblen, varnumber_T n1, int quiet)
|
||||
{
|
||||
if (n1 < 0 || n1 > bloblen)
|
||||
{
|
||||
if (!quiet)
|
||||
semsg(_(e_blobidx), n1);
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if "n1"-"n2" is a valid range for a blob with length "bloblen".
|
||||
*/
|
||||
int
|
||||
check_blob_range(long bloblen, varnumber_T n1, varnumber_T n2, int quiet)
|
||||
{
|
||||
if (n2 < 0 || n2 >= bloblen || n2 < n1)
|
||||
{
|
||||
if (!quiet)
|
||||
semsg(_(e_blobidx), n2);
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set bytes "n1" to "n2" (inclusive) in "dest" to the value of "src".
|
||||
* Caller must make sure "src" is a blob.
|
||||
* Returns FAIL if the number of bytes does not match.
|
||||
*/
|
||||
int
|
||||
blob_set_range(blob_T *dest, long n1, long n2, typval_T *src)
|
||||
{
|
||||
int il, ir;
|
||||
|
||||
if (n2 - n1 + 1 != blob_len(src->vval.v_blob))
|
||||
{
|
||||
emsg(_("E972: Blob value does not have the right number of bytes"));
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
ir = 0;
|
||||
for (il = n1; il <= n2; il++)
|
||||
blob_set(dest, il, blob_get(src->vval.v_blob, ir++));
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* "remove({blob})" function
|
||||
*/
|
||||
@@ -372,7 +444,7 @@ blob_remove(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
blob_T *blob;
|
||||
|
||||
// Remove range of items, return list with values.
|
||||
// Remove range of items, return blob with values.
|
||||
end = (long)tv_get_number_chk(&argvars[2], &error);
|
||||
if (error)
|
||||
return;
|
||||
@@ -400,7 +472,8 @@ blob_remove(typval_T *argvars, typval_T *rettv)
|
||||
rettv->v_type = VAR_BLOB;
|
||||
rettv->vval.v_blob = blob;
|
||||
|
||||
mch_memmove(p + idx, p + end + 1, (size_t)(len - end));
|
||||
if (len - end - 1 > 0)
|
||||
mch_memmove(p + idx, p + end + 1, (size_t)(len - end - 1));
|
||||
b->bv_ga.ga_len -= end - idx + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3482,6 +3482,7 @@ if test "x$olibs" = "x$LIBS"; then
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_ERROR([NOT FOUND!
|
||||
You need to install a terminal library; for example ncurses.
|
||||
On Linux that would be the libncurses-dev package.
|
||||
Or specify the name of the library with --with-tlib.]))
|
||||
fi
|
||||
|
||||
|
||||
@@ -1538,6 +1538,9 @@ win_line(
|
||||
if (area_attr != 0)
|
||||
{
|
||||
char_attr = hl_combine_attr(line_attr, area_attr);
|
||||
if (!highlight_match)
|
||||
// let search highlight show in Visual area if possible
|
||||
char_attr = hl_combine_attr(search_attr, char_attr);
|
||||
# ifdef FEAT_SYN_HL
|
||||
char_attr = hl_combine_attr(syntax_attr, char_attr);
|
||||
# endif
|
||||
|
||||
@@ -93,6 +93,7 @@ update_screen(int type_arg)
|
||||
int gui_cursor_row = 0;
|
||||
#endif
|
||||
int no_update = FALSE;
|
||||
int save_pum_will_redraw = pum_will_redraw;
|
||||
|
||||
// Don't do anything if the screen structures are (not yet) valid.
|
||||
if (!screen_valid(TRUE))
|
||||
@@ -276,6 +277,11 @@ update_screen(int type_arg)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pum_redraw_in_same_position())
|
||||
// Avoid flicker if the popup menu is going to be redrawn in the same
|
||||
// position.
|
||||
pum_will_redraw = TRUE;
|
||||
|
||||
// Go from top to bottom through the windows, redrawing the ones that need
|
||||
// it.
|
||||
#if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_CLIPBOARD)
|
||||
@@ -321,7 +327,9 @@ update_screen(int type_arg)
|
||||
#if defined(FEAT_SEARCH_EXTRA)
|
||||
end_search_hl();
|
||||
#endif
|
||||
|
||||
// May need to redraw the popup menu.
|
||||
pum_will_redraw = save_pum_will_redraw;
|
||||
pum_may_redraw();
|
||||
|
||||
// Reset b_mod_set flags. Going through all windows is probably faster
|
||||
@@ -3002,6 +3010,13 @@ redraw_after_callback(int call_update_screen)
|
||||
// keep the command line if possible
|
||||
update_screen(VALID_NO_UPDATE);
|
||||
setcursor();
|
||||
|
||||
if (msg_scrolled == 0)
|
||||
{
|
||||
// don't want a hit-enter prompt when something else is displayed
|
||||
msg_didany = FALSE;
|
||||
need_wait_return = FALSE;
|
||||
}
|
||||
}
|
||||
cursor_on();
|
||||
#ifdef FEAT_GUI
|
||||
|
||||
14
src/errors.h
14
src/errors.h
@@ -323,8 +323,8 @@ EXTERN char e_non_empty_string_required[]
|
||||
INIT(= N_("E1142: Non-empty string required"));
|
||||
EXTERN char e_empty_expression_str[]
|
||||
INIT(= N_("E1143: Empty expression: \"%s\""));
|
||||
EXTERN char e_command_not_followed_by_white_space_str[]
|
||||
INIT(= N_("E1144: Command is not followed by white space: %s"));
|
||||
EXTERN char e_command_str_not_followed_by_white_space_str[]
|
||||
INIT(= N_("E1144: Command \"%s\" is not followed by white space: %s"));
|
||||
EXTERN char e_missing_heredoc_end_marker_str[]
|
||||
INIT(= N_("E1145: Missing heredoc end marker: %s"));
|
||||
EXTERN char e_command_not_recognized_str[]
|
||||
@@ -399,3 +399,13 @@ EXTERN char e_variable_arguments_type_must_be_list_str[]
|
||||
INIT(= N_("E1180: Variable arguments type must be a list: %s"));
|
||||
EXTERN char e_cannot_use_underscore_here[]
|
||||
INIT(= N_("E1181: Cannot use an underscore here"));
|
||||
EXTERN char e_blob_required[]
|
||||
INIT(= N_("E1182: Blob required"));
|
||||
EXTERN char e_cannot_use_range_with_assignment_operator_str[]
|
||||
INIT(= N_("E1183: Cannot use a range with an assignment operator: %s"));
|
||||
EXTERN char e_blob_not_set[]
|
||||
INIT(= N_("E1184: Blob not set"));
|
||||
EXTERN char e_cannot_nest_redir[]
|
||||
INIT(= N_("E1185: Cannot nest :redir"));
|
||||
EXTERN char e_missing_redir_end[]
|
||||
INIT(= N_("E1185: Missing :redir END"));
|
||||
|
||||
169
src/eval.c
169
src/eval.c
@@ -51,6 +51,7 @@ static int eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
|
||||
static int eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
|
||||
static int eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
|
||||
static int eval6(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int want_string);
|
||||
static int eval7t(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int want_string);
|
||||
static int eval7(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int want_string);
|
||||
static int eval7_leader(typval_T *rettv, int numeric_only, char_u *start_leader, char_u **end_leaderp);
|
||||
|
||||
@@ -392,7 +393,7 @@ skip_expr(char_u **pp, evalarg_T *evalarg)
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip over an expression at "*pp".
|
||||
* Skip over an expression at "*arg".
|
||||
* If in Vim9 script and line breaks are encountered, the lines are
|
||||
* concatenated. "evalarg->eval_tofree" will be set accordingly.
|
||||
* "arg" is advanced to just after the expression.
|
||||
@@ -450,7 +451,7 @@ skip_expr_concatenate(
|
||||
|
||||
// Line breaks encountered, concatenate all the lines.
|
||||
*((char_u **)gap->ga_data) = *start;
|
||||
p = ga_concat_strings(gap, "");
|
||||
p = ga_concat_strings(gap, " ");
|
||||
|
||||
// free the lines only when using getsourceline()
|
||||
if (evalarg->eval_cookie != NULL)
|
||||
@@ -1175,12 +1176,8 @@ get_lval(
|
||||
lp->ll_n1 = (long)tv_get_number(&var1);
|
||||
clear_tv(&var1);
|
||||
|
||||
if (lp->ll_n1 < 0
|
||||
|| lp->ll_n1 > bloblen
|
||||
|| (lp->ll_range && lp->ll_n1 == bloblen))
|
||||
if (check_blob_index(bloblen, lp->ll_n1, quiet) == FAIL)
|
||||
{
|
||||
if (!quiet)
|
||||
semsg(_(e_blobidx), lp->ll_n1);
|
||||
clear_tv(&var2);
|
||||
return NULL;
|
||||
}
|
||||
@@ -1188,14 +1185,9 @@ get_lval(
|
||||
{
|
||||
lp->ll_n2 = (long)tv_get_number(&var2);
|
||||
clear_tv(&var2);
|
||||
if (lp->ll_n2 < 0
|
||||
|| lp->ll_n2 >= bloblen
|
||||
|| lp->ll_n2 < lp->ll_n1)
|
||||
{
|
||||
if (!quiet)
|
||||
semsg(_(e_blobidx), lp->ll_n2);
|
||||
if (check_blob_range(bloblen, lp->ll_n1, lp->ll_n2, quiet)
|
||||
== FAIL)
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
lp->ll_blob = lp->ll_tv->vval.v_blob;
|
||||
lp->ll_tv = NULL;
|
||||
@@ -1319,50 +1311,26 @@ set_var_lval(
|
||||
|
||||
if (lp->ll_range && rettv->v_type == VAR_BLOB)
|
||||
{
|
||||
int il, ir;
|
||||
|
||||
if (lp->ll_empty2)
|
||||
lp->ll_n2 = blob_len(lp->ll_blob) - 1;
|
||||
|
||||
if (lp->ll_n2 - lp->ll_n1 + 1 != blob_len(rettv->vval.v_blob))
|
||||
{
|
||||
emsg(_("E972: Blob value does not have the right number of bytes"));
|
||||
if (blob_set_range(lp->ll_blob, lp->ll_n1, lp->ll_n2,
|
||||
rettv) == FAIL)
|
||||
return;
|
||||
}
|
||||
if (lp->ll_empty2)
|
||||
lp->ll_n2 = blob_len(lp->ll_blob);
|
||||
|
||||
ir = 0;
|
||||
for (il = lp->ll_n1; il <= lp->ll_n2; il++)
|
||||
blob_set(lp->ll_blob, il,
|
||||
blob_get(rettv->vval.v_blob, ir++));
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)tv_get_number_chk(rettv, &error);
|
||||
if (!error)
|
||||
{
|
||||
garray_T *gap = &lp->ll_blob->bv_ga;
|
||||
|
||||
// Allow for appending a byte. Setting a byte beyond
|
||||
// the end is an error otherwise.
|
||||
if (lp->ll_n1 < gap->ga_len
|
||||
|| (lp->ll_n1 == gap->ga_len
|
||||
&& ga_grow(&lp->ll_blob->bv_ga, 1) == OK))
|
||||
{
|
||||
blob_set(lp->ll_blob, lp->ll_n1, val);
|
||||
if (lp->ll_n1 == gap->ga_len)
|
||||
++gap->ga_len;
|
||||
}
|
||||
// error for invalid range was already given in get_lval()
|
||||
}
|
||||
blob_set_append(lp->ll_blob, lp->ll_n1, val);
|
||||
}
|
||||
}
|
||||
else if (op != NULL && *op != '=')
|
||||
{
|
||||
typval_T tv;
|
||||
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_(e_cannot_mod));
|
||||
*endp = cc;
|
||||
@@ -1401,7 +1369,8 @@ set_var_lval(
|
||||
listitem_T *ll_li = lp->ll_li;
|
||||
int ll_n1 = lp->ll_n1;
|
||||
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_("E996: Cannot lock a range"));
|
||||
return;
|
||||
@@ -1460,7 +1429,8 @@ set_var_lval(
|
||||
/*
|
||||
* Assign to a List or Dictionary item.
|
||||
*/
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_("E996: Cannot lock a list or dict"));
|
||||
return;
|
||||
@@ -1786,7 +1756,9 @@ next_for_item(void *fi_void, char_u *arg)
|
||||
{
|
||||
forinfo_T *fi = (forinfo_T *)fi_void;
|
||||
int result;
|
||||
int flag = in_vim9script() ? ASSIGN_DECL : 0;
|
||||
int flag = ASSIGN_FOR_LOOP | (in_vim9script()
|
||||
? (ASSIGN_FINAL | ASSIGN_DECL | ASSIGN_NO_MEMBER_TYPE)
|
||||
: 0);
|
||||
listitem_T *item;
|
||||
|
||||
if (fi->fi_blob != NULL)
|
||||
@@ -2087,6 +2059,7 @@ eval_func(
|
||||
/*
|
||||
* Get the next line source line without advancing. But do skip over comment
|
||||
* lines.
|
||||
* Only called for Vim9 script.
|
||||
*/
|
||||
static char_u *
|
||||
getline_peek_skip_comments(evalarg_T *evalarg)
|
||||
@@ -2111,7 +2084,8 @@ getline_peek_skip_comments(evalarg_T *evalarg)
|
||||
* If inside Vim9 script, "arg" points to the end of a line (ignoring a #
|
||||
* comment) and there is a next line, return the next line (skipping blanks)
|
||||
* and set "getnext".
|
||||
* Otherwise just return "arg" unmodified and set "getnext" to FALSE.
|
||||
* Otherwise return the next non-white at or after "arg" and set "getnext" to
|
||||
* FALSE.
|
||||
* "arg" must point somewhere inside a line, not at the start.
|
||||
*/
|
||||
char_u *
|
||||
@@ -2123,7 +2097,7 @@ eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext)
|
||||
if (in_vim9script()
|
||||
&& evalarg != NULL
|
||||
&& (evalarg->eval_cookie != NULL || evalarg->eval_cctx != NULL)
|
||||
&& (*p == NUL || (VIM_ISWHITE(p[-1]) && vim9_comment_start(p))))
|
||||
&& (*p == NUL || (vim9_comment_start(p) && VIM_ISWHITE(p[-1]))))
|
||||
{
|
||||
char_u *next;
|
||||
|
||||
@@ -2143,6 +2117,7 @@ eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext)
|
||||
|
||||
/*
|
||||
* To be called after eval_next_non_blank() sets "getnext" to TRUE.
|
||||
* Only called for Vim9 script.
|
||||
*/
|
||||
char_u *
|
||||
eval_next_line(evalarg_T *evalarg)
|
||||
@@ -2158,7 +2133,16 @@ eval_next_line(evalarg_T *evalarg)
|
||||
++evalarg->eval_break_count;
|
||||
if (gap->ga_itemsize > 0 && ga_grow(gap, 1) == OK)
|
||||
{
|
||||
// Going to concatenate the lines after parsing.
|
||||
char_u *p = skipwhite(line);
|
||||
|
||||
// Going to concatenate the lines after parsing. For an empty or
|
||||
// comment line use an empty string.
|
||||
if (*p == NUL || vim9_comment_start(p))
|
||||
{
|
||||
vim_free(line);
|
||||
line = vim_strsave((char_u *)"");
|
||||
}
|
||||
|
||||
((char_u **)gap->ga_data)[gap->ga_len] = line;
|
||||
++gap->ga_len;
|
||||
}
|
||||
@@ -2883,12 +2867,15 @@ eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
|
||||
|
||||
// "." is only string concatenation when scriptversion is 1
|
||||
// "+=", "-=" and "..=" are assignments
|
||||
// "++" and "--" on the next line are a separate command.
|
||||
p = eval_next_non_blank(*arg, evalarg, &getnext);
|
||||
op = *p;
|
||||
concat = op == '.' && (*(p + 1) == '.' || current_sctx.sc_version < 2);
|
||||
if ((op != '+' && op != '-' && !concat) || p[1] == '='
|
||||
|| (p[1] == '.' && p[2] == '='))
|
||||
break;
|
||||
if (getnext && (op == '+' || op == '-') && p[0] == p[1])
|
||||
break;
|
||||
|
||||
evaluate = evalarg == NULL ? 0 : (evalarg->eval_flags & EVAL_EVALUATE);
|
||||
oplen = (concat && p[1] == '.') ? 2 : 1;
|
||||
@@ -3097,7 +3084,7 @@ eval6(
|
||||
/*
|
||||
* Get the first variable.
|
||||
*/
|
||||
if (eval7(arg, rettv, evalarg, want_string) == FAIL)
|
||||
if (eval7t(arg, rettv, evalarg, want_string) == FAIL)
|
||||
return FAIL;
|
||||
|
||||
/*
|
||||
@@ -3170,7 +3157,7 @@ eval6(
|
||||
return FAIL;
|
||||
}
|
||||
*arg = skipwhite_and_linebreak(*arg + 1, evalarg);
|
||||
if (eval7(arg, &var2, evalarg, FALSE) == FAIL)
|
||||
if (eval7t(arg, &var2, evalarg, FALSE) == FAIL)
|
||||
return FAIL;
|
||||
|
||||
if (evaluate)
|
||||
@@ -3260,6 +3247,86 @@ eval6(
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle a type cast before a base level expression.
|
||||
* "arg" must point to the first non-white of the expression.
|
||||
* "arg" is advanced to just after the recognized expression.
|
||||
* Return OK or FAIL.
|
||||
*/
|
||||
static int
|
||||
eval7t(
|
||||
char_u **arg,
|
||||
typval_T *rettv,
|
||||
evalarg_T *evalarg,
|
||||
int want_string) // after "." operator
|
||||
{
|
||||
type_T *want_type = NULL;
|
||||
garray_T type_list; // list of pointers to allocated types
|
||||
int res;
|
||||
int evaluate = evalarg == NULL ? 0
|
||||
: (evalarg->eval_flags & EVAL_EVALUATE);
|
||||
|
||||
// Recognize <type> in Vim9 script only.
|
||||
if (in_vim9script() && **arg == '<' && eval_isnamec1((*arg)[1]))
|
||||
{
|
||||
++*arg;
|
||||
ga_init2(&type_list, sizeof(type_T *), 10);
|
||||
want_type = parse_type(arg, &type_list, TRUE);
|
||||
if (want_type == NULL && (evaluate || **arg != '>'))
|
||||
{
|
||||
clear_type_list(&type_list);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (**arg != '>')
|
||||
{
|
||||
if (*skipwhite(*arg) == '>')
|
||||
semsg(_(e_no_white_space_allowed_before_str_str), ">", *arg);
|
||||
else
|
||||
emsg(_(e_missing_gt));
|
||||
clear_type_list(&type_list);
|
||||
return FAIL;
|
||||
}
|
||||
++*arg;
|
||||
*arg = skipwhite_and_linebreak(*arg, evalarg);
|
||||
}
|
||||
|
||||
res = eval7(arg, rettv, evalarg, want_string);
|
||||
|
||||
if (want_type != NULL && evaluate)
|
||||
{
|
||||
if (res == OK)
|
||||
{
|
||||
type_T *actual = typval2type(rettv, get_copyID(), &type_list, TRUE);
|
||||
|
||||
if (!equal_type(want_type, actual))
|
||||
{
|
||||
if (want_type == &t_bool && actual != &t_bool
|
||||
&& (actual->tt_flags & TTFLAG_BOOL_OK))
|
||||
{
|
||||
int n = tv2bool(rettv);
|
||||
|
||||
// can use "0" and "1" for boolean in some places
|
||||
clear_tv(rettv);
|
||||
rettv->v_type = VAR_BOOL;
|
||||
rettv->vval.v_number = n ? VVAL_TRUE : VVAL_FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
where_T where;
|
||||
|
||||
where.wt_index = 0;
|
||||
where.wt_variable = TRUE;
|
||||
res = check_type(want_type, actual, TRUE, where);
|
||||
}
|
||||
}
|
||||
}
|
||||
clear_type_list(&type_list);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
int
|
||||
eval_leader(char_u **arg, int vim9)
|
||||
{
|
||||
|
||||
@@ -1315,7 +1315,8 @@ ex_let_one(
|
||||
// ":let $VAR = expr": Set environment variable.
|
||||
if (*arg == '$')
|
||||
{
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_("E996: Cannot lock an environment variable"));
|
||||
return NULL;
|
||||
@@ -1365,9 +1366,11 @@ ex_let_one(
|
||||
// ":let &option = expr": Set option value.
|
||||
// ":let &l:option = expr": Set local option value.
|
||||
// ":let &g:option = expr": Set global option value.
|
||||
// ":for &ts in range(8)": Set option value for for loop
|
||||
else if (*arg == '&')
|
||||
{
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_(e_const_option));
|
||||
return NULL;
|
||||
@@ -1466,7 +1469,8 @@ ex_let_one(
|
||||
// ":let @r = expr": Set register contents.
|
||||
else if (*arg == '@')
|
||||
{
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_("E996: Cannot lock a register"));
|
||||
return NULL;
|
||||
@@ -1519,7 +1523,7 @@ ex_let_one(
|
||||
else
|
||||
{
|
||||
set_var_lval(&lv, p, tv, copy, flags, op, var_idx);
|
||||
arg_end = p;
|
||||
arg_end = lv.ll_name_end;
|
||||
}
|
||||
}
|
||||
clear_lval(&lv);
|
||||
@@ -2658,6 +2662,12 @@ eval_variable(
|
||||
if (tv->vval.v_list != NULL)
|
||||
++tv->vval.v_list->lv_refcount;
|
||||
}
|
||||
else if (tv->v_type == VAR_BLOB && tv->vval.v_blob == NULL)
|
||||
{
|
||||
tv->vval.v_blob = blob_alloc();
|
||||
if (tv->vval.v_blob != NULL)
|
||||
++tv->vval.v_blob->bv_refcount;
|
||||
}
|
||||
copy_tv(tv, rettv);
|
||||
}
|
||||
}
|
||||
@@ -3158,7 +3168,7 @@ set_var_const(
|
||||
type_T *type,
|
||||
typval_T *tv_arg,
|
||||
int copy, // make copy of value in "tv"
|
||||
int flags, // ASSIGN_CONST, ASSIGN_FINAL, etc.
|
||||
int flags_arg, // ASSIGN_CONST, ASSIGN_FINAL, etc.
|
||||
int var_idx) // index for ":let [a, b] = list"
|
||||
{
|
||||
typval_T *tv = tv_arg;
|
||||
@@ -3169,6 +3179,7 @@ set_var_const(
|
||||
int is_script_local;
|
||||
int vim9script = in_vim9script();
|
||||
int var_in_vim9script;
|
||||
int flags = flags_arg;
|
||||
|
||||
ht = find_var_ht(name, &varname);
|
||||
if (ht == NULL || *varname == NUL)
|
||||
@@ -3187,6 +3198,11 @@ set_var_const(
|
||||
vim9_declare_error(name);
|
||||
goto failed;
|
||||
}
|
||||
if ((flags & ASSIGN_FOR_LOOP) && name[1] == ':'
|
||||
&& vim_strchr((char_u *)"gwbt", name[0]) != NULL)
|
||||
// Do not make g:var, w:var, b:var or t:var final.
|
||||
flags &= ~ASSIGN_FINAL;
|
||||
|
||||
var_in_vim9script = is_script_local && current_script_is_vim9();
|
||||
if (var_in_vim9script && name[0] == '_' && name[1] == NUL)
|
||||
{
|
||||
@@ -3220,7 +3236,8 @@ set_var_const(
|
||||
// Item already exists. Allowed to replace when reloading.
|
||||
if ((di->di_flags & DI_FLAGS_RELOAD) == 0)
|
||||
{
|
||||
if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
if ((flags & (ASSIGN_CONST | ASSIGN_FINAL))
|
||||
&& (flags & ASSIGN_FOR_LOOP) == 0)
|
||||
{
|
||||
emsg(_(e_cannot_mod));
|
||||
goto failed;
|
||||
@@ -3255,7 +3272,8 @@ set_var_const(
|
||||
// A Vim9 script-local variable is also present in sn_all_vars and
|
||||
// sn_var_vals. It may set "type" from "tv".
|
||||
if (var_in_vim9script)
|
||||
update_vim9_script_var(FALSE, di, flags, tv, &type);
|
||||
update_vim9_script_var(FALSE, di, flags, tv, &type,
|
||||
(flags & ASSIGN_NO_MEMBER_TYPE) == 0);
|
||||
}
|
||||
|
||||
// existing variable, need to clear the value
|
||||
@@ -3353,7 +3371,8 @@ set_var_const(
|
||||
// A Vim9 script-local variable is also added to sn_all_vars and
|
||||
// sn_var_vals. It may set "type" from "tv".
|
||||
if (var_in_vim9script)
|
||||
update_vim9_script_var(TRUE, di, flags, tv, &type);
|
||||
update_vim9_script_var(TRUE, di, flags, tv, &type,
|
||||
(flags & ASSIGN_NO_MEMBER_TYPE) == 0);
|
||||
}
|
||||
|
||||
if (copy || tv->v_type == VAR_NUMBER || tv->v_type == VAR_FLOAT)
|
||||
@@ -3759,6 +3778,27 @@ static garray_T redir_ga; // only valid when redir_lval is not NULL
|
||||
static char_u *redir_endp = NULL;
|
||||
static char_u *redir_varname = NULL;
|
||||
|
||||
int
|
||||
alloc_redir_lval(void)
|
||||
{
|
||||
redir_lval = ALLOC_CLEAR_ONE(lval_T);
|
||||
if (redir_lval == NULL)
|
||||
return FAIL;
|
||||
return OK;
|
||||
}
|
||||
|
||||
void
|
||||
clear_redir_lval(void)
|
||||
{
|
||||
VIM_CLEAR(redir_lval);
|
||||
}
|
||||
|
||||
void
|
||||
init_redir_ga(void)
|
||||
{
|
||||
ga_init2(&redir_ga, (int)sizeof(char), 500);
|
||||
}
|
||||
|
||||
/*
|
||||
* Start recording command output to a variable
|
||||
* When "append" is TRUE append to an existing variable.
|
||||
@@ -3782,15 +3822,14 @@ var_redir_start(char_u *name, int append)
|
||||
if (redir_varname == NULL)
|
||||
return FAIL;
|
||||
|
||||
redir_lval = ALLOC_CLEAR_ONE(lval_T);
|
||||
if (redir_lval == NULL)
|
||||
if (alloc_redir_lval() == FAIL)
|
||||
{
|
||||
var_redir_stop();
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
// The output is stored in growarray "redir_ga" until redirection ends.
|
||||
ga_init2(&redir_ga, (int)sizeof(char), 500);
|
||||
init_redir_ga();
|
||||
|
||||
// Parse the variable name (can be a dict or list entry).
|
||||
redir_endp = get_lval(redir_varname, NULL, redir_lval, FALSE, FALSE, 0,
|
||||
@@ -3902,6 +3941,20 @@ var_redir_stop(void)
|
||||
VIM_CLEAR(redir_varname);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the collected redirected text and clear redir_ga.
|
||||
*/
|
||||
char_u *
|
||||
get_clear_redir_ga(void)
|
||||
{
|
||||
char_u *res;
|
||||
|
||||
ga_append(&redir_ga, NUL); // Append the trailing NUL.
|
||||
res = redir_ga.ga_data;
|
||||
redir_ga.ga_data = NULL;
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* "gettabvar()" function
|
||||
*/
|
||||
|
||||
@@ -17,20 +17,20 @@ static const unsigned short cmdidxs1[26] =
|
||||
/* j */ 209,
|
||||
/* k */ 211,
|
||||
/* l */ 216,
|
||||
/* m */ 278,
|
||||
/* n */ 296,
|
||||
/* o */ 316,
|
||||
/* p */ 328,
|
||||
/* q */ 367,
|
||||
/* r */ 370,
|
||||
/* s */ 390,
|
||||
/* t */ 459,
|
||||
/* u */ 504,
|
||||
/* v */ 515,
|
||||
/* w */ 536,
|
||||
/* x */ 550,
|
||||
/* y */ 560,
|
||||
/* z */ 561
|
||||
/* m */ 279,
|
||||
/* n */ 297,
|
||||
/* o */ 317,
|
||||
/* p */ 329,
|
||||
/* q */ 368,
|
||||
/* r */ 371,
|
||||
/* s */ 391,
|
||||
/* t */ 460,
|
||||
/* u */ 505,
|
||||
/* v */ 516,
|
||||
/* w */ 537,
|
||||
/* x */ 551,
|
||||
/* y */ 561,
|
||||
/* z */ 562
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -52,7 +52,7 @@ static const unsigned char cmdidxs2[26][26] =
|
||||
/* i */ { 1, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 5, 6, 0, 0, 0, 0, 0, 14, 0, 16, 0, 0, 0, 0, 0 },
|
||||
/* j */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
|
||||
/* k */ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
/* l */ { 3, 11, 15, 19, 20, 24, 27, 32, 0, 0, 0, 34, 37, 40, 44, 50, 0, 52, 61, 53, 54, 58, 60, 0, 0, 0 },
|
||||
/* l */ { 3, 11, 15, 19, 20, 25, 28, 33, 0, 0, 0, 35, 38, 41, 45, 51, 0, 53, 62, 54, 55, 59, 61, 0, 0, 0 },
|
||||
/* m */ { 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 },
|
||||
/* n */ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0 },
|
||||
/* o */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 0, 0, 0, 0, 0, 0, 9, 0, 11, 0, 0, 0 },
|
||||
@@ -69,4 +69,4 @@ static const unsigned char cmdidxs2[26][26] =
|
||||
/* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static const int command_count = 576;
|
||||
static const int command_count = 579;
|
||||
|
||||
@@ -3603,6 +3603,29 @@ typedef struct {
|
||||
int do_ic; // ignore case flag
|
||||
} subflags_T;
|
||||
|
||||
/*
|
||||
* Skip over the "sub" part in :s/pat/sub/ where "delimiter" is the separating
|
||||
* character.
|
||||
*/
|
||||
char_u *
|
||||
skip_substitute(char_u *start, int delimiter)
|
||||
{
|
||||
char_u *p = start;
|
||||
|
||||
while (p[0])
|
||||
{
|
||||
if (p[0] == delimiter) // end delimiter found
|
||||
{
|
||||
*p++ = NUL; // replace it with a NUL
|
||||
break;
|
||||
}
|
||||
if (p[0] == '\\' && p[1] != 0) // skip escaped characters
|
||||
++p;
|
||||
MB_PTR_ADV(p);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform a substitution from line eap->line1 to line eap->line2 using the
|
||||
* command pointed to by eap->arg which should be of the form:
|
||||
@@ -3704,18 +3727,7 @@ ex_substitute(exarg_T *eap)
|
||||
* Vim we want to use '\n' to find/substitute a NUL.
|
||||
*/
|
||||
sub = cmd; // remember the start of the substitution
|
||||
|
||||
while (cmd[0])
|
||||
{
|
||||
if (cmd[0] == delimiter) // end delimiter found
|
||||
{
|
||||
*cmd++ = NUL; // replace it with a NUL
|
||||
break;
|
||||
}
|
||||
if (cmd[0] == '\\' && cmd[1] != 0) // skip escaped characters
|
||||
++cmd;
|
||||
MB_PTR_ADV(cmd);
|
||||
}
|
||||
cmd = skip_substitute(cmd, delimiter);
|
||||
|
||||
if (!eap->skip)
|
||||
{
|
||||
@@ -5276,14 +5288,16 @@ skip_vimgrep_pat(char_u *p, char_u **s, int *flags)
|
||||
++p;
|
||||
|
||||
// Find the flags
|
||||
while (*p == 'g' || *p == 'j')
|
||||
while (*p == 'g' || *p == 'j' || *p == 'f')
|
||||
{
|
||||
if (flags != NULL)
|
||||
{
|
||||
if (*p == 'g')
|
||||
*flags |= VGR_GLOBAL;
|
||||
else
|
||||
else if (*p == 'j')
|
||||
*flags |= VGR_NOJUMP;
|
||||
else
|
||||
*flags |= VGR_FUZZY;
|
||||
}
|
||||
++p;
|
||||
}
|
||||
|
||||
@@ -830,6 +830,9 @@ EXCMD(CMD_let, "let", ex_let,
|
||||
EXCMD(CMD_lexpr, "lexpr", ex_cexpr,
|
||||
EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_BANG,
|
||||
ADDR_NONE),
|
||||
EXCMD(CMD_legacy, "legacy", ex_wrongmodifier,
|
||||
EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN|EX_LOCK_OK,
|
||||
ADDR_NONE),
|
||||
EXCMD(CMD_lfile, "lfile", ex_cfile,
|
||||
EX_TRLBAR|EX_FILE1|EX_BANG,
|
||||
ADDR_NONE),
|
||||
@@ -1843,6 +1846,14 @@ EXCMD(CMD_X, "X", ex_X,
|
||||
EX_TRLBAR,
|
||||
ADDR_NONE),
|
||||
|
||||
// Commands that are recognized only in find_ex_command().
|
||||
EXCMD(CMD_increment, "++", ex_incdec,
|
||||
EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
|
||||
ADDR_NONE),
|
||||
EXCMD(CMD_decrement, "--", ex_incdec,
|
||||
EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
|
||||
ADDR_NONE),
|
||||
|
||||
#undef EXCMD
|
||||
|
||||
#ifndef DO_DECLARE_EXCMD
|
||||
|
||||
@@ -287,6 +287,7 @@ static void ex_tag_cmd(exarg_T *eap, char_u *name);
|
||||
# define ex_endwhile ex_ni
|
||||
# define ex_eval ex_ni
|
||||
# define ex_execute ex_ni
|
||||
# define ex_incdec ex_ni
|
||||
# define ex_finally ex_ni
|
||||
# define ex_finish ex_ni
|
||||
# define ex_function ex_ni
|
||||
@@ -1174,7 +1175,8 @@ do_cmdline(
|
||||
*/
|
||||
while (!((got_int
|
||||
#ifdef FEAT_EVAL
|
||||
|| (did_emsg && force_abort) || did_throw
|
||||
|| (did_emsg && (force_abort || in_vim9script()))
|
||||
|| did_throw
|
||||
#endif
|
||||
)
|
||||
#ifdef FEAT_EVAL
|
||||
@@ -1208,8 +1210,10 @@ do_cmdline(
|
||||
/*
|
||||
* If a sourced file or executed function ran to its end, report the
|
||||
* unclosed conditional.
|
||||
* In Vim9 script do not give a second error, executing aborts after
|
||||
* the first one.
|
||||
*/
|
||||
if (!got_int && !did_throw
|
||||
if (!got_int && !did_throw && !(did_emsg && in_vim9script())
|
||||
&& ((getline_equal(fgetline, cookie, getsourceline)
|
||||
&& !source_finished(fgetline, cookie))
|
||||
|| (getline_equal(fgetline, cookie, get_func_line)
|
||||
@@ -2925,6 +2929,17 @@ parse_command_modifiers(
|
||||
cmod->cmod_flags |= CMOD_LOCKMARKS;
|
||||
continue;
|
||||
}
|
||||
if (checkforcmd_noparen(&eap->cmd, "legacy", 3))
|
||||
{
|
||||
if (ends_excmd2(p, eap->cmd))
|
||||
{
|
||||
*errormsg =
|
||||
_(e_vim9cmd_must_be_followed_by_command);
|
||||
return FAIL;
|
||||
}
|
||||
cmod->cmod_flags |= CMOD_LEGACY;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!checkforcmd_noparen(&eap->cmd, "leftabove", 5))
|
||||
break;
|
||||
@@ -3429,22 +3444,25 @@ find_ex_command(
|
||||
// "varname.key" is an expression.
|
||||
|| (*p == '.' && ASCII_ISALPHA(p[1]))))
|
||||
{
|
||||
char_u *after = p;
|
||||
char_u *after = eap->cmd;
|
||||
|
||||
// When followed by "=" or "+=" then it is an assignment.
|
||||
// Skip over the whole thing, it can be:
|
||||
// name.member = val
|
||||
// name[a : b] = val
|
||||
// name[idx] = val
|
||||
// name[idx].member = val
|
||||
// etc.
|
||||
eap->cmdidx = CMD_eval;
|
||||
++emsg_silent;
|
||||
if (*after == '.')
|
||||
after = skipwhite(after + 1);
|
||||
if (skip_expr(&after, NULL) == OK)
|
||||
{
|
||||
after = skipwhite(after);
|
||||
else
|
||||
after = (char_u *)"";
|
||||
if (*after == '=' || (*after != NUL && after[1] == '=')
|
||||
if (*after == '=' || (*after != NUL && after[1] == '=')
|
||||
|| (after[0] == '.' && after[1] == '.'
|
||||
&& after[2] == '='))
|
||||
eap->cmdidx = CMD_var;
|
||||
else
|
||||
eap->cmdidx = CMD_eval;
|
||||
eap->cmdidx = CMD_var;
|
||||
}
|
||||
--emsg_silent;
|
||||
return eap->cmd;
|
||||
}
|
||||
@@ -3480,7 +3498,8 @@ find_ex_command(
|
||||
|
||||
// Recognize an assignment if we recognize the variable name:
|
||||
// "g:var = expr"
|
||||
// "var = expr" where "var" is a variable name.
|
||||
// "var = expr" where "var" is a variable name or we are skipping
|
||||
// (variable declaration might have been skipped).
|
||||
if (*eap->cmd == '@')
|
||||
p = eap->cmd + 2;
|
||||
oplen = assignment_len(skipwhite(p), &heredoc);
|
||||
@@ -3490,6 +3509,7 @@ find_ex_command(
|
||||
|| *eap->cmd == '&'
|
||||
|| *eap->cmd == '$'
|
||||
|| *eap->cmd == '@'
|
||||
|| eap->skip
|
||||
|| lookup(eap->cmd, p - eap->cmd, TRUE, cctx) == OK)
|
||||
{
|
||||
eap->cmdidx = CMD_var;
|
||||
@@ -3515,6 +3535,13 @@ find_ex_command(
|
||||
eap->cmdidx = CMD_eval;
|
||||
return eap->cmd;
|
||||
}
|
||||
|
||||
// Check for "++nr" and "--nr".
|
||||
if (p == eap->cmd && p[0] == p[1] && (*p == '+' || *p == '-'))
|
||||
{
|
||||
eap->cmdidx = *p == '+' ? CMD_increment : CMD_decrement;
|
||||
return eap->cmd + 2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3649,8 +3676,11 @@ find_ex_command(
|
||||
&& (eap->cmdidx < 0 ||
|
||||
(cmdnames[eap->cmdidx].cmd_argt & EX_NONWHITE_OK) == 0))
|
||||
{
|
||||
semsg(_(e_command_not_followed_by_white_space_str), eap->cmd);
|
||||
char_u *cmd = vim_strnsave(eap->cmd, p - eap->cmd);
|
||||
|
||||
semsg(_(e_command_str_not_followed_by_white_space_str), cmd, eap->cmd);
|
||||
eap->cmdidx = CMD_SIZE;
|
||||
vim_free(cmd);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3733,7 +3733,7 @@ vim_rename(char_u *from, char_u *to)
|
||||
return 0;
|
||||
// Strange, the second step failed. Try moving the
|
||||
// file back and return failure.
|
||||
mch_rename(tempname, (char *)from);
|
||||
(void)mch_rename(tempname, (char *)from);
|
||||
return -1;
|
||||
}
|
||||
// If it fails for one temp name it will most likely fail
|
||||
|
||||
@@ -741,6 +741,10 @@ EXTERN int popup_visible INIT(= FALSE);
|
||||
EXTERN int text_prop_frozen INIT(= 0);
|
||||
#endif
|
||||
|
||||
// When set the popup menu will redraw soon using the pum_win_ values. Do not
|
||||
// draw over the poup menu area to avoid flicker.
|
||||
EXTERN int pum_will_redraw INIT(= FALSE);
|
||||
|
||||
/*
|
||||
* The window layout is kept in a tree of frames. topframe points to the top
|
||||
* of the tree.
|
||||
@@ -1307,6 +1311,7 @@ EXTERN int wild_menu_showing INIT(= 0);
|
||||
#ifdef MSWIN
|
||||
EXTERN char_u toupper_tab[256]; // table for toupper()
|
||||
EXTERN char_u tolower_tab[256]; // table for tolower()
|
||||
EXTERN int found_register_arg INIT(= FALSE);
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_LINEBREAK
|
||||
@@ -1379,6 +1384,9 @@ EXTERN char_u no_lines_msg[] INIT(= N_("--No lines in buffer--"));
|
||||
EXTERN long sub_nsubs; // total number of substitutions
|
||||
EXTERN linenr_T sub_nlines; // total number of lines changed
|
||||
|
||||
// Used when a compiled :substitute has an expression.
|
||||
EXTERN struct subs_expr_S *substitute_instr INIT(= NULL);
|
||||
|
||||
// table to store parsed 'wildmode'
|
||||
EXTERN char_u wim_flags[4];
|
||||
|
||||
|
||||
85
src/list.c
85
src/list.c
@@ -2059,7 +2059,7 @@ filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap)
|
||||
{
|
||||
// Check that map() does not change the type of the dict.
|
||||
ga_init2(&type_list, sizeof(type_T *), 10);
|
||||
type = typval2type(argvars, get_copyID(), &type_list);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TRUE);
|
||||
}
|
||||
|
||||
if (argvars[0].v_type == VAR_BLOB)
|
||||
@@ -2223,7 +2223,7 @@ filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap)
|
||||
if (filter_map_one(&tv, expr, filtermap, &newtv, &rem) == FAIL
|
||||
|| did_emsg)
|
||||
break;
|
||||
if (newtv.v_type != VAR_NUMBER)
|
||||
if (newtv.v_type != VAR_NUMBER && newtv.v_type != VAR_BOOL)
|
||||
{
|
||||
clear_tv(&newtv);
|
||||
emsg(_(e_invalblob));
|
||||
@@ -2412,22 +2412,33 @@ f_mapnew(typval_T *argvars, typval_T *rettv)
|
||||
void
|
||||
f_add(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
list_T *l;
|
||||
blob_T *b;
|
||||
|
||||
rettv->vval.v_number = 1; // Default: Failed
|
||||
if (argvars[0].v_type == VAR_LIST)
|
||||
{
|
||||
if ((l = argvars[0].vval.v_list) != NULL
|
||||
&& !value_check_lock(l->lv_lock,
|
||||
(char_u *)N_("add() argument"), TRUE)
|
||||
list_T *l = argvars[0].vval.v_list;
|
||||
|
||||
if (l == NULL)
|
||||
{
|
||||
if (in_vim9script())
|
||||
emsg(_(e_cannot_add_to_null_list));
|
||||
}
|
||||
else if (!value_check_lock(l->lv_lock,
|
||||
(char_u *)N_("add() argument"), TRUE)
|
||||
&& list_append_tv(l, &argvars[1]) == OK)
|
||||
{
|
||||
copy_tv(&argvars[0], rettv);
|
||||
}
|
||||
}
|
||||
else if (argvars[0].v_type == VAR_BLOB)
|
||||
{
|
||||
if ((b = argvars[0].vval.v_blob) != NULL
|
||||
&& !value_check_lock(b->bv_lock,
|
||||
blob_T *b = argvars[0].vval.v_blob;
|
||||
|
||||
if (b == NULL)
|
||||
{
|
||||
if (in_vim9script())
|
||||
emsg(_(e_cannot_add_to_null_blob));
|
||||
}
|
||||
else if (!value_check_lock(b->bv_lock,
|
||||
(char_u *)N_("add() argument"), TRUE))
|
||||
{
|
||||
int error = FALSE;
|
||||
@@ -2565,7 +2576,7 @@ extend(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg, int is_new)
|
||||
{
|
||||
// Check that map() does not change the type of the dict.
|
||||
ga_init2(&type_list, sizeof(type_T *), 10);
|
||||
type = typval2type(argvars, get_copyID(), &type_list);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TRUE);
|
||||
}
|
||||
|
||||
if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
|
||||
@@ -2725,7 +2736,6 @@ f_insert(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
long before = 0;
|
||||
listitem_T *item;
|
||||
list_T *l;
|
||||
int error = FALSE;
|
||||
|
||||
if (argvars[0].v_type == VAR_BLOB)
|
||||
@@ -2734,7 +2744,11 @@ f_insert(typval_T *argvars, typval_T *rettv)
|
||||
char_u *p;
|
||||
|
||||
if (argvars[0].vval.v_blob == NULL)
|
||||
{
|
||||
if (in_vim9script())
|
||||
emsg(_(e_cannot_add_to_null_blob));
|
||||
return;
|
||||
}
|
||||
|
||||
len = blob_len(argvars[0].vval.v_blob);
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
@@ -2768,30 +2782,39 @@ f_insert(typval_T *argvars, typval_T *rettv)
|
||||
}
|
||||
else if (argvars[0].v_type != VAR_LIST)
|
||||
semsg(_(e_listblobarg), "insert()");
|
||||
else if ((l = argvars[0].vval.v_list) != NULL
|
||||
&& !value_check_lock(l->lv_lock,
|
||||
(char_u *)N_("insert() argument"), TRUE))
|
||||
else
|
||||
{
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
before = (long)tv_get_number_chk(&argvars[2], &error);
|
||||
if (error)
|
||||
return; // type error; errmsg already given
|
||||
list_T *l = argvars[0].vval.v_list;
|
||||
|
||||
if (before == l->lv_len)
|
||||
item = NULL;
|
||||
else
|
||||
if (l == NULL)
|
||||
{
|
||||
item = list_find(l, before);
|
||||
if (item == NULL)
|
||||
{
|
||||
semsg(_(e_listidx), before);
|
||||
l = NULL;
|
||||
}
|
||||
if (in_vim9script())
|
||||
emsg(_(e_cannot_add_to_null_list));
|
||||
}
|
||||
if (l != NULL)
|
||||
else if (!value_check_lock(l->lv_lock,
|
||||
(char_u *)N_("insert() argument"), TRUE))
|
||||
{
|
||||
(void)list_insert_tv(l, &argvars[1], item);
|
||||
copy_tv(&argvars[0], rettv);
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
before = (long)tv_get_number_chk(&argvars[2], &error);
|
||||
if (error)
|
||||
return; // type error; errmsg already given
|
||||
|
||||
if (before == l->lv_len)
|
||||
item = NULL;
|
||||
else
|
||||
{
|
||||
item = list_find(l, before);
|
||||
if (item == NULL)
|
||||
{
|
||||
semsg(_(e_listidx), before);
|
||||
l = NULL;
|
||||
}
|
||||
}
|
||||
if (l != NULL)
|
||||
{
|
||||
(void)list_insert_tv(l, &argvars[1], item);
|
||||
copy_tv(&argvars[0], rettv);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
15
src/main.c
15
src/main.c
@@ -161,6 +161,21 @@ main
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#ifdef MSWIN
|
||||
// Need to find "-register" and "-unregister" before loading any libraries.
|
||||
for (i = 1; i < argc; ++i)
|
||||
if ((STRICMP(argv[i] + 1, "register") == 0
|
||||
|| STRICMP(argv[i] + 1, "unregister") == 0)
|
||||
&& (argv[i][0] == '-' || argv[i][0] == '/'))
|
||||
{
|
||||
found_register_arg = TRUE;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Various initialisations shared with tests.
|
||||
*/
|
||||
common_init(¶ms);
|
||||
|
||||
#ifdef VIMDLL
|
||||
|
||||
41
src/map.c
41
src/map.c
@@ -1540,10 +1540,23 @@ check_abbr(
|
||||
tb[j++] = Ctrl_V; // special char needs CTRL-V
|
||||
if (has_mbyte)
|
||||
{
|
||||
int newlen;
|
||||
char_u *escaped;
|
||||
|
||||
// if ABBR_OFF has been added, remove it here
|
||||
if (c >= ABBR_OFF)
|
||||
c -= ABBR_OFF;
|
||||
j += (*mb_char2bytes)(c, tb + j);
|
||||
newlen = (*mb_char2bytes)(c, tb + j);
|
||||
tb[j + newlen] = NUL;
|
||||
// Need to escape K_SPECIAL.
|
||||
escaped = vim_strsave_escape_csi(tb + j);
|
||||
if (escaped != NULL)
|
||||
{
|
||||
newlen = (int)STRLEN(escaped);
|
||||
mch_memmove(tb + j, escaped, newlen);
|
||||
j += newlen;
|
||||
vim_free(escaped);
|
||||
}
|
||||
}
|
||||
else
|
||||
tb[j++] = c;
|
||||
@@ -2295,6 +2308,7 @@ f_mapset(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
int noremap;
|
||||
int expr;
|
||||
int silent;
|
||||
int buffer;
|
||||
scid_T sid;
|
||||
linenr_T lnum;
|
||||
mapblock_T **map_table = maphash;
|
||||
@@ -2336,18 +2350,31 @@ f_mapset(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
silent = dict_get_number(d, (char_u *)"silent") != 0;
|
||||
sid = dict_get_number(d, (char_u *)"sid");
|
||||
lnum = dict_get_number(d, (char_u *)"lnum");
|
||||
if (dict_get_number(d, (char_u *)"buffer"))
|
||||
buffer = dict_get_number(d, (char_u *)"buffer");
|
||||
nowait = dict_get_number(d, (char_u *)"nowait") != 0;
|
||||
// mode from the dict is not used
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
map_table = curbuf->b_maphash;
|
||||
abbr_table = &curbuf->b_first_abbr;
|
||||
}
|
||||
nowait = dict_get_number(d, (char_u *)"nowait") != 0;
|
||||
// mode from the dict is not used
|
||||
|
||||
// Delete any existing mapping for this lhs and mode.
|
||||
arg = vim_strsave(lhs);
|
||||
if (arg == NULL)
|
||||
return;
|
||||
if (buffer)
|
||||
{
|
||||
arg = alloc(STRLEN(lhs) + STRLEN("<buffer>") + 1);
|
||||
if (arg == NULL)
|
||||
return;
|
||||
STRCPY(arg, "<buffer>");
|
||||
STRCPY(arg + 8, lhs);
|
||||
}
|
||||
else
|
||||
{
|
||||
arg = vim_strsave(lhs);
|
||||
if (arg == NULL)
|
||||
return;
|
||||
}
|
||||
do_map(1, arg, mode, is_abbr);
|
||||
vim_free(arg);
|
||||
|
||||
|
||||
@@ -4615,6 +4615,10 @@ makeset(FILE *fd, int opt_flags, int local_only)
|
||||
if ((opt_flags & OPT_GLOBAL) && optval_default(p, varp, p_cp))
|
||||
continue;
|
||||
|
||||
if ((opt_flags & OPT_SKIPRTP) && (p->var == (char_u *)&p_rtp
|
||||
|| p->var == (char_u *)&p_pp))
|
||||
continue;
|
||||
|
||||
round = 2;
|
||||
if (p->indir != PV_NONE)
|
||||
{
|
||||
|
||||
@@ -864,6 +864,7 @@ EXTERN unsigned ssop_flags;
|
||||
# define SSOP_CURSOR 0x4000
|
||||
# define SSOP_TABPAGES 0x8000
|
||||
# define SSOP_TERMINAL 0x10000
|
||||
# define SSOP_SKIP_RTP 0x20000
|
||||
#endif
|
||||
EXTERN char_u *p_sh; // 'shell'
|
||||
EXTERN char_u *p_shcf; // 'shellcmdflag'
|
||||
|
||||
@@ -34,10 +34,11 @@ static char *(p_fdo_values[]) = {"all", "block", "hor", "mark", "percent",
|
||||
"undo", "jump", NULL};
|
||||
#endif
|
||||
#ifdef FEAT_SESSION
|
||||
// Also used for 'viewoptions'!
|
||||
// Also used for 'viewoptions'! Keep in sync with SSOP_ flags.
|
||||
static char *(p_ssop_values[]) = {"buffers", "winpos", "resize", "winsize",
|
||||
"localoptions", "options", "help", "blank", "globals", "slash", "unix",
|
||||
"sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", NULL};
|
||||
"sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", "skiprtp",
|
||||
NULL};
|
||||
#endif
|
||||
// Keep in sync with SWB_ flags in option.h
|
||||
static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", "uselast", NULL};
|
||||
|
||||
@@ -529,6 +529,10 @@ vimLoadLib(char *name)
|
||||
{
|
||||
HINSTANCE dll = NULL;
|
||||
|
||||
// No need to load any library when registering OLE.
|
||||
if (found_register_arg)
|
||||
return dll;
|
||||
|
||||
// NOTE: Do not use mch_dirname() and mch_chdir() here, they may call
|
||||
// vimLoadLib() recursively, which causes a stack overflow.
|
||||
if (exe_path == NULL)
|
||||
@@ -6406,13 +6410,13 @@ mch_write(
|
||||
char_u *s,
|
||||
int len)
|
||||
{
|
||||
char_u *end = s + len;
|
||||
|
||||
# ifdef VIMDLL
|
||||
if (gui.in_use)
|
||||
return;
|
||||
# endif
|
||||
|
||||
s[len] = NUL;
|
||||
|
||||
if (!term_console)
|
||||
{
|
||||
write(1, s, (unsigned)len);
|
||||
@@ -6433,10 +6437,13 @@ mch_write(
|
||||
return;
|
||||
}
|
||||
|
||||
while((ch = s[++prefix]))
|
||||
while (s + ++prefix < end)
|
||||
{
|
||||
ch = s[prefix];
|
||||
if (ch <= 0x1e && !(ch != '\n' && ch != '\r' && ch != '\b'
|
||||
&& ch != '\a' && ch != '\033'))
|
||||
break;
|
||||
}
|
||||
|
||||
if (p_wd)
|
||||
{
|
||||
|
||||
@@ -40,10 +40,6 @@ static int pum_win_width;
|
||||
// makes pum_visible() return FALSE even when there is a popup menu.
|
||||
static int pum_pretend_not_visible = FALSE;
|
||||
|
||||
// When set the popup menu will redraw soon using the pum_win_ values. Do not
|
||||
// draw over the poup menu area to avoid flicker.
|
||||
static int pum_will_redraw = FALSE;
|
||||
|
||||
static int pum_set_selected(int n, int repeat);
|
||||
|
||||
#define PUM_DEF_HEIGHT 10
|
||||
@@ -392,7 +388,7 @@ pum_under_menu(int row, int col)
|
||||
&& row >= pum_row
|
||||
&& row < pum_row + pum_height
|
||||
&& col >= pum_col - 1
|
||||
&& col < pum_col + pum_width;
|
||||
&& col < pum_col + pum_width + pum_scrollbar;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -929,6 +925,8 @@ pum_set_selected(int n, int repeat UNUSED)
|
||||
|| (curtab != curtab_save
|
||||
&& valid_tabpage(curtab_save)))
|
||||
{
|
||||
int save_redr_status;
|
||||
|
||||
if (curtab != curtab_save && valid_tabpage(curtab_save))
|
||||
goto_tabpage_tp(curtab_save, FALSE, FALSE);
|
||||
|
||||
@@ -957,13 +955,20 @@ pum_set_selected(int n, int repeat UNUSED)
|
||||
// Update the screen before drawing the popup menu.
|
||||
// Enable updating the status lines.
|
||||
pum_pretend_not_visible = TRUE;
|
||||
|
||||
// But don't draw text at the new popup menu position,
|
||||
// it causes flicker. When resizing we need to draw
|
||||
// anyway, the position may change later.
|
||||
// Also do not redraw the status line of the original
|
||||
// current window here, to avoid it gets drawn with
|
||||
// StatusLineNC for a moment and cause flicker.
|
||||
pum_will_redraw = !resized;
|
||||
save_redr_status = curwin_save->w_redr_status;
|
||||
curwin_save->w_redr_status = FALSE;
|
||||
update_screen(0);
|
||||
pum_pretend_not_visible = FALSE;
|
||||
pum_will_redraw = FALSE;
|
||||
curwin_save->w_redr_status = save_redr_status;
|
||||
|
||||
if (!resized && win_valid(curwin_save))
|
||||
{
|
||||
@@ -1048,6 +1053,32 @@ pum_visible(void)
|
||||
return !pum_pretend_not_visible && pum_array != NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE if the popup can be redrawn in the same position.
|
||||
*/
|
||||
static int
|
||||
pum_in_same_position(void)
|
||||
{
|
||||
return pum_window != curwin
|
||||
|| (pum_win_row == curwin->w_wrow + W_WINROW(curwin)
|
||||
&& pum_win_height == curwin->w_height
|
||||
&& pum_win_col == curwin->w_wincol
|
||||
&& pum_win_width == curwin->w_width);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE when pum_may_redraw() will call pum_redraw().
|
||||
* This means that the pum area should not be overwritten to avoid flicker.
|
||||
*/
|
||||
int
|
||||
pum_redraw_in_same_position(void)
|
||||
{
|
||||
if (!pum_visible() || pum_will_redraw)
|
||||
return FALSE; // nothing to do
|
||||
|
||||
return pum_in_same_position();
|
||||
}
|
||||
|
||||
/*
|
||||
* Reposition the popup menu to adjust for window layout changes.
|
||||
*/
|
||||
@@ -1061,11 +1092,7 @@ pum_may_redraw(void)
|
||||
if (!pum_visible() || pum_will_redraw)
|
||||
return; // nothing to do
|
||||
|
||||
if (pum_window != curwin
|
||||
|| (pum_win_row == curwin->w_wrow + W_WINROW(curwin)
|
||||
&& pum_win_height == curwin->w_height
|
||||
&& pum_win_col == curwin->w_wincol
|
||||
&& pum_win_width == curwin->w_width))
|
||||
if (pum_in_same_position())
|
||||
{
|
||||
// window position didn't change, redraw in the same position
|
||||
pum_redraw();
|
||||
|
||||
@@ -7,12 +7,16 @@ void blob_free(blob_T *b);
|
||||
void blob_unref(blob_T *b);
|
||||
long blob_len(blob_T *b);
|
||||
int blob_get(blob_T *b, int idx);
|
||||
void blob_set(blob_T *b, int idx, char_u c);
|
||||
void blob_set(blob_T *blob, int idx, int byte);
|
||||
void blob_set_append(blob_T *blob, int idx, int byte);
|
||||
int blob_equal(blob_T *b1, blob_T *b2);
|
||||
int read_blob(FILE *fd, blob_T *blob);
|
||||
int write_blob(FILE *fd, blob_T *blob);
|
||||
char_u *blob2string(blob_T *blob, char_u **tofree, char_u *numbuf);
|
||||
blob_T *string2blob(char_u *str);
|
||||
int blob_slice_or_index(blob_T *blob, int is_range, varnumber_T n1, varnumber_T n2, int exclusive, typval_T *rettv);
|
||||
int check_blob_index(long bloblen, varnumber_T n1, int quiet);
|
||||
int check_blob_range(long bloblen, varnumber_T n1, varnumber_T n2, int quiet);
|
||||
int blob_set_range(blob_T *dest, long n1, long n2, typval_T *src);
|
||||
void blob_remove(typval_T *argvars, typval_T *rettv);
|
||||
/* vim: set ft=c : */
|
||||
|
||||
@@ -71,7 +71,7 @@ void vars_clear(hashtab_T *ht);
|
||||
void vars_clear_ext(hashtab_T *ht, int free_val);
|
||||
void delete_var(hashtab_T *ht, hashitem_T *hi);
|
||||
void set_var(char_u *name, typval_T *tv, int copy);
|
||||
void set_var_const(char_u *name, type_T *type, typval_T *tv_arg, int copy, int flags, int var_idx);
|
||||
void set_var_const(char_u *name, type_T *type, typval_T *tv_arg, int copy, int flags_arg, int var_idx);
|
||||
int var_check_permission(dictitem_T *di, char_u *name);
|
||||
int var_check_ro(int flags, char_u *name, int use_gettext);
|
||||
int var_check_lock(int flags, char_u *name, int use_gettext);
|
||||
@@ -82,9 +82,13 @@ int valid_varname(char_u *varname, int autoload);
|
||||
void reset_v_option_vars(void);
|
||||
void assert_error(garray_T *gap);
|
||||
int var_exists(char_u *var);
|
||||
int alloc_redir_lval(void);
|
||||
void clear_redir_lval(void);
|
||||
void init_redir_ga(void);
|
||||
int var_redir_start(char_u *name, int append);
|
||||
void var_redir_str(char_u *value, int value_len);
|
||||
void var_redir_stop(void);
|
||||
char_u *get_clear_redir_ga(void);
|
||||
void f_gettabvar(typval_T *argvars, typval_T *rettv);
|
||||
void f_gettabwinvar(typval_T *argvars, typval_T *rettv);
|
||||
void f_getwinvar(typval_T *argvars, typval_T *rettv);
|
||||
|
||||
@@ -27,6 +27,7 @@ void ex_change(exarg_T *eap);
|
||||
void ex_z(exarg_T *eap);
|
||||
int check_restricted(void);
|
||||
int check_secure(void);
|
||||
char_u *skip_substitute(char_u *start, int delimiter);
|
||||
void ex_substitute(exarg_T *eap);
|
||||
int do_sub_msg(int count_only);
|
||||
void ex_global(exarg_T *eap);
|
||||
|
||||
@@ -7,6 +7,7 @@ void pum_position_info_popup(win_T *wp);
|
||||
void pum_undisplay(void);
|
||||
void pum_clear(void);
|
||||
int pum_visible(void);
|
||||
int pum_redraw_in_same_position(void);
|
||||
void pum_may_redraw(void);
|
||||
int pum_get_height(void);
|
||||
void pum_set_event_info(dict_T *dict);
|
||||
|
||||
@@ -36,6 +36,7 @@ void find_pattern_in_path(char_u *ptr, int dir, int len, int whole, int skip_com
|
||||
spat_T *get_spat(int idx);
|
||||
int get_spat_last_idx(void);
|
||||
void f_searchcount(typval_T *argvars, typval_T *rettv);
|
||||
int fuzzy_match(char_u *str, char_u *pat_arg, int matchseq, int *outScore, int_u *matches, int maxMatches);
|
||||
void f_matchfuzzy(typval_T *argvars, typval_T *rettv);
|
||||
void f_matchfuzzypos(typval_T *argvars, typval_T *rettv);
|
||||
/* vim: set ft=c : */
|
||||
|
||||
@@ -4,6 +4,7 @@ void funcstack_check_refcount(funcstack_T *funcstack);
|
||||
char_u *char_from_string(char_u *str, varnumber_T index);
|
||||
char_u *string_slice(char_u *str, varnumber_T first, varnumber_T last, int exclusive);
|
||||
int fill_partial_and_closure(partial_T *pt, ufunc_T *ufunc, ectx_T *ectx);
|
||||
char_u *exe_substitute_instr(void);
|
||||
int call_def_function(ufunc_T *ufunc, int argc_arg, typval_T *argv, partial_T *partial, typval_T *rettv);
|
||||
void ex_disassemble(exarg_T *eap);
|
||||
int tv2bool(typval_T *tv);
|
||||
|
||||
@@ -5,6 +5,7 @@ void ex_vim9script(exarg_T *eap);
|
||||
int not_in_vim9(exarg_T *eap);
|
||||
int vim9_bad_comment(char_u *p);
|
||||
int vim9_comment_start(char_u *p);
|
||||
void ex_incdec(exarg_T *eap);
|
||||
void ex_export(exarg_T *eap);
|
||||
void free_imports_and_script_vars(int sid);
|
||||
void mark_imports_for_reload(int sid);
|
||||
@@ -12,7 +13,7 @@ void ex_import(exarg_T *eap);
|
||||
int find_exported(int sid, char_u *name, ufunc_T **ufunc, type_T **type, cctx_T *cctx, int verbose);
|
||||
char_u *handle_import(char_u *arg_start, garray_T *gap, int import_sid, evalarg_T *evalarg, void *cctx);
|
||||
char_u *vim9_declare_scriptvar(exarg_T *eap, char_u *arg);
|
||||
void update_vim9_script_var(int create, dictitem_T *di, int flags, typval_T *tv, type_T **type);
|
||||
void update_vim9_script_var(int create, dictitem_T *di, int flags, typval_T *tv, type_T **type, int do_member);
|
||||
void hide_script_var(scriptitem_T *si, int idx, int func_defined);
|
||||
void free_all_script_vars(scriptitem_T *si);
|
||||
svar_T *find_typval_in_script(typval_T *dest);
|
||||
|
||||
@@ -9,7 +9,7 @@ type_T *alloc_func_type(type_T *ret_type, int argcount, garray_T *type_gap);
|
||||
type_T *get_func_type(type_T *ret_type, int argcount, garray_T *type_gap);
|
||||
int func_type_add_arg_types(type_T *functype, int argcount, garray_T *type_gap);
|
||||
int need_convert_to_bool(type_T *type, typval_T *tv);
|
||||
type_T *typval2type(typval_T *tv, int copyID, garray_T *type_gap);
|
||||
type_T *typval2type(typval_T *tv, int copyID, garray_T *type_gap, int do_member);
|
||||
type_T *typval2type_vimvar(typval_T *tv, garray_T *type_gap);
|
||||
int check_typval_arg_type(type_T *expected, typval_T *actual_tv, int arg_idx);
|
||||
int check_typval_type(type_T *expected, typval_T *actual_tv, where_T where);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user