Problem: diff highlighting hard to read with syntax enabled and
terminals having 256 or less colors (Andrey Butirsky)
Solution: Set a cterm foreground color (Maxim Kim)
fixes: #4071closes: #20711
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: highlighting for broken terminals can be improved
(Maxim Kim)
Solution: Make the highlighting work better when the terminal does not
support colors (Maxim Kim)
In a colorless or broken terminal emulator current syntax highlighting
is too intense with using bold and underline for various syntax
elements.
In this scenario, when the colors are not available at all, the most
important part of the syntax is the comments, something that is not
executed or compiled.
- Comments are highlighted as bold
- All other syntax elements are set to NONE
- LineNr is not highlighted (was underline)
- SpecialKey is not highlighted (was bold)
fixes: #20712closes: #20799
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: filetype: hip files are not recognized
Solution: Detect *.hip files as hip filetype, include filetype, syntax
and indent plugins, update makemenu.vim and synmenu.vim (Young)
Round out HIP (Heterogeneous-compute Interface for Portability) support
to mirror the existing CUDA files:
- autoload/dist/ft.vim: detect the ".hip" extension as filetype "hip"
- ftplugin/hip.vim: behave like C++ by sourcing ftplugin/cpp.vim
- indent/hip.vim: use cindent, like indent/cuda.vim
- makemenu.vim / synmenu.vim: add a Syntax menu entry
The syntax/hip.vim file already sources syntax/cpp.vim and adds the
HIP-specific keywords, matching syntax/cuda.vim.
closes: #20773
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Young <young20050727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
* Match command names introduced in v.5.0.0 (August 2024):
"auth", "multiinput", "status", "truecolor".
* Match command names introduced in v.4.5.0 (January 2017):
"defdynamictitle" and "dynamictitle".
* Deprecate command names that have been retired thus far:
"debug", "maxwin", "nethack", "password", "time".
* Remove a spurious "defzombie" command name (this name is
just lamented over in the documentation entry for the
"zombie" command as being more fitting than "zombie"
because its effects are not local to a window; no such
name is entered in "comm.c").
* Separately group the Braille navigation commands, "bd_*",
that may belong to another, superset program Dotscreen:
(see doc/README.DOTSCREEN and commit 848af83f5 elsewhere).
* Revise string escape characters:
- Recognise more characters, "%[`<>=eEfFHOPSxX]".
- Recognise undocumented characters, "%[gNpT]", and list
relevant Screen commits in the comments.
- Match optional qualifiers, "%\%([-+L]\|\d\+\).".
* Match more items in double-quoted command arguments.
* Match unquoted environment variable references.
* Match octal numbers, e.g. "defmode 0622".
* Match escaped octal numbers, e.g. "bind \077 help".
Unless a Dotscreen program (c. 1995) or an older than
v.4.3.1 (c. 2015) Screen program, that was compiled with
"HAVE_BRAILLE" defined, is installed and needs configuring,
add to ".vim/after/syntax/screen.vim":
-----------------------------------------------------------
if hlexists('dotscreenCommands')
syn clear dotscreenCommands
endif
-----------------------------------------------------------
To BACKPORT the updated syntax file to version 4 of Screen,
add to ".vim/after/syntax/screen.vim":
-----------------------------------------------------------
if hlexists('screenDeprecatedCommands')
syn clear screenDeprecatedCommands
endif
if hlexists('screenVersion5Commands')
syn clear screenVersion5Commands
endif
-----------------------------------------------------------
References:
https://lists.gnu.org/archive/html/info-gnu/2024-08/msg00004.htmlhttps://lists.gnu.org/archive/html/info-gnu/2017-01/msg00007.htmlhttps://git.savannah.gnu.org/git/screen.gitcloses: #20550
Co-authored-by: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
- Move whitespace formatting settings from the indent to the filetype
plugin behind a "typst_recommended_style" config option.
- Set browsefilter
- Improve syntax file
Thanks to Maxim Kim for taking on maintainership of the typst runtime
files.
related: #20036
closes: #20077
Co-authored-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
The following let-heredoc can cause legacy scripts to be misidentified
as Vim9 script if it appears early in the file. Only match :vim9script
at the start of a line where it sensibly belongs.
let x =<< trim LINES
vim9script
...
LINES
fixes: #20647 (reported by Maxim Kim).
closes: #20654
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: filetype: SSH keys and related filetypes not recognized
Solution: Detect sshpublickey, sshknownhosts sshauthorizedkeys and
sshallowedsigners filetypes, add syntax scripts for those
filetypes (Fionn Fitzmaurice)
This adds syntax highlighting for SSH public keys, as well as related
filetypes derived from this (SSH authorized keys, SSH known hosts and
SSH allowed signers).
Also add filetype detection based on the path and name.
closes: #20635
Signed-off-by: Fionn Fitzmaurice <git@fionn.computer>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Recognize DTrace probe descriptions that are followed immediately by an
action block, such as:
BEGIN{ trace(1); }
syscall::open:entry{ trace(1); }
The fourth probe field now consumes the remaining non-whitespace text, and
the lookahead allows zero or more whitespace before the following token.
closes: #20560
Signed-off-by: Vladimír Marek <vlmarek13@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Add a guarded "C++ 26 extensions" block (cpp_no_cpp26) covering new
lexical surface introduced since C++23:
- [[ ... ]] attributes as a region, so P3394 annotations carrying a
value expression (eg [[=foo{1}]]) no longer trip cErrInBracket on
their braces/parens. A \w\@1<! look-behind keeps it from matching a
subscripted immediately-invoked lambda (arr[[]{...}()]).
- ^^ reflection operator (P2996).
- [: :] splice brackets (P2996).
- contract_assert keyword (P2900).
Add input/cpp_cpp26.cpp exercising these constructs with screendumps,
and update dumps/cpp_noreturn_00.dump for the new [[ ]] attribute
delimiter highlighting.
closes: #20577
Signed-off-by: Gareth Lloyd <gareth@ignition-web.co.uk>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Explicitly match the LONG/SHORT size prefixes in integral, real and bits
denotations.
LONG/SHORT are matched as part of the denotation rather than as a mode.
closes: #20512
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit makes processing the erlangOperator and erlangBitType syntax
items faster.
- erlangOperator changes:
- Vim now parses erlangOperator faster because we define the operators
individually.
- The order of operators in erlangOperator had to be changed to make
the edge cases work the same as before (for example
erlangEqualsBinary).
- erlangBitType changes:
- Vim now parses erlangBitType faster because:
1. Now the long `\%(integer\|float\|...\)` sections are preceded by
"beginning of word" patterns (`\<`).
2. Now we use the old regexp engine (`\%#=1`).
Previously when an Erlang file contained long lines with erlangOperator
or erlangBitType patterns near the end, redrawing these lines was slow,
and typing at the end of the line was also slow.
For example, redrawing a 1787 characters long test line is now roughly
six times faster.
fixes: #5593closes: #20524
Signed-off-by: Csaba Hoch <csaba.hoch@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
The current scheme for naming syntax plugin tests expects
a filetype name prefix and an associated filename extension.
However, many configurational filetypes, e.g. Gitignore,
lack any established filename extension. Factor out the
available file-renaming routine and offer a convenience
function to work around this limitation.
For example, put in a VIM_TEST_SETUP aware context:
------------------------------------------------------------
call DeferRenamingTestFileTo('.gitignore')
------------------------------------------------------------
closes: #20482
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
- Explicitly match the dot accessor
- Exclude the qualifier when matching qualified function calls
The dot accessor lookbehind on builtin function calls was slow, matching
across expression based dictionary accessors was visually inconsistent,
and it's arguably more semantically correct.
closes: #20481
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Cannot render images in popup windows
Solution: Add support for rendering images using the kitty, sixel, cairo
and GDI backend (Yasuhiro Matsumoto).
Add an "image" attribute to popup_create()/popup_setoptions() that
renders a raw RGB/RGBA pixel buffer inside a popup window. Terminal
backends emit the buffer as DEC sixel or kitty graphics sequences; the
MS-Windows GUI uses GDI and the GTK GUI uses Cairo. The popup auto-sizes
its cell box from the image dimensions. getbgcolor() returns the current
background colour so scripts can pre-composite RGBA pixels.
closes: #20136
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Add float16_t, float32_t, float64_t, float128_t and bfloat16_t from
<stdfloat> as cppType under a new cpp_no_cpp23 guard.
fixes: #16498closes: #20367
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Move const, volatile, restrict and _Atomic to a new cTypeQualifier group
and inline and _Noreturn to cFunctionSpec. Add the C23 standard attributes
deprecated, fallthrough, maybe_unused, nodiscard, unsequenced and
reproducible as cStandardAttribute, and reclassify the existing noreturn
into the same group.
The new groups link to cStorageClass, so the default highlighting and any
existing cStorageClass override are unchanged, while allowing finer-grained
customization.
fixes: #19574closes: #20368
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Corrected "Indian" to "India" for accurate naming.
closes: #20369
Signed-off-by: wangshuo <wangshuo@kylinos.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: filetype: Tolk files are not recognized
Solution: Detect *.tolk files as tolk filetype, include a syntax and
filetype plugin (redavy)
Tolk is a new-generation language for writing smart contracts on TON
blockchain, which is #1 in speed among other chains.
Reference:
https://docs.ton.org/blockchain-basics/tolk/overviewcloses: #20320
Signed-off-by: redavy <hello.redavy@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
- Remove `g:algol68_symbolic_operators` config variable, these operators
are now always highlighted along with bold word operators
- Remove GSL `/-` operator, this was a typo in the implementation and
now fixed in the latest Genie release as `/=`
closes: #20195
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Anchor the return type separator ':' with a lookbehind as the relevant
nextgroup options use skipwhite.
closes: #20319
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This has been manually tested with my personal mbsync configuration and
with the following test file:
$ cat test.mbsyncrc
Channel Foo
# None may not be combined with other operations
Sync None
Sync None New
# First form
Sync Pull
Sync Push
Sync New
Sync Old
Sync Upgrade
Sync ReNew
Sync Gone
Sync Delete
Sync Flags
Sync Invalid
# Second form
Sync PullNew
Sync PullOld
Sync PullUpgrade
Sync PullReNew
Sync PullGone
Sync PullDelete
Sync PullFlags
Sync PullFull
Sync PullAll
Sync PullInvalid
Sync PushNew
Sync PushOld
Sync PushUpgrade
Sync PushReNew
Sync PushGone
Sync PushDelete
Sync PushFlags
Sync PushFull
Sync PushAll
Sync PushInvalid
Sync NewInvalid
# Multiple operations
Sync New Upgrade Gone Flags
# Mix of the two styles (an example from the mbsync manpage)
Sync PullNew PullGone Push
# Syntaxically correct, though they will raise a warning in mbsync:
Sync PullNew Pull
Sync PullNew Gone Push
closes: #20243
Signed-off-by: Pierrick Guillaume <pguillaume@fymyte.com>
Signed-off-by: Cyril Roelandt <tipecaml@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Also prune this file whenever:
- tests cannot be run on this OS;
- tests fail and no QuitPre event is supported for ":cquit".
related: #19127
closes: #20247
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
I submitted the PR #20232 to resolve an undesired behavior in with the
highlighter inheriting from "django.vim" and "html.vim". After
further testing I noticed the re-declaration of `djangoOperators` in
"htmldjango" is not necessary, and my conclusions where a mistake from a
not-clean test environment.
This PR reverses the effect of the commit #f03155a.
related: #20232
closes: #20248
Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Although the "=" character is permitted in function names,
a construct that parses as a variable assignment is
preferred to it parsing as a function declaration. See the
updated test file "sh_functions_bash.sh" for details.
fixes: #20183closes: #20205
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: popup: missing Popup, PopupBorder and PopupTitle highlight groups
Solution: add Popup, PopupBorder and PopupTitle highlight groups and
fall back to Pmenu related highlighting groups (Yasuhiro Matsumoto).
fixes: #20110closes: #20208
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
The presence `djangoOperators` in the file `syntax/django.vim` and
having the highlight function with a `match` statement leads to a
highlight spill-over with other elements defined in `syntax/html.vim`.
To avoid the highlight spill-over declare a region called
`djangoTagBlockNaive` to limit `djangoOperator` to only be matched
within.
related: #20225
closes: #20232
Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>