Problem: Generating prototype files does not work on all platforms
Solution: Rework prototypes generation using python instead of cproto,
enable it in CI to test it for each PR (Hirohito Higashi).
closes: #18045
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Window may have wrong height if resized from another tabpage.
Solution: Improve check for whether a tabline has been added (zeertzjq).
fixes: #18518closes: #18519
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: proto files out of sync
Solution: Update proto files (Hirohito Higashi)
closes: #18517
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: tests: Test_plugin_evaluate_in_popup() fails on 32bit arch
(James McCoy)
Solution: Instead of evaluating the ptr, let's evaluate just the pointer
content, skipping printing the pointer address.
fixes: #18499closes: #18503
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: 'cursorlineopt' "screenline" isn't redrawn when moving cursor
and then using line("w0") and :retab that does nothing.
Solution: Call redraw_for_cursorcolumn() when setting a valid w_virtcol
(zeertzjq).
closes: #18506
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: not possible to style popup borders globally
Solution: Add the 'pumborder' option (Girish Palya)
This commit introduces a new global option, 'pumborder' ('pb'), that
allows users to define borders and optional decorations for the
completion popup menu.
```
Defines a border and optional decorations for the popup menu in
completion. The value is a comma-separated list of keywords.
Border styles (at most one):
"single"singleuse thin box-drawing characters
"double"doubleuse double-line box-drawing characters
"round"rounduse rounded corners
"ascii"asciiuse ASCII characters (-, |, +)
"custom:XXXXXXXX"
use eight characters given after "custom:",
in order: top, right, bottom, left,
topleft, topright, botright, botleft
Additional flags:
"margin"marginadds one-cell spacing inside the left and right border
"shadow"shadowdraws a shadow at the right and bottom edges
Highlight groups:
|hl-PmenuBorder|hl-PmenuBorderused for the border characters
|hl-PmenuShadow|hl-PmenuShadowused for the shadow
Examples: >
:set pumborder=single
:set pumborder=double,margin,shadow
:set pumborder=custom:─│─│┌┐┘└,shadow
Border styles using box-drawing characters ("single", "double",
"round") are only available when |'encoding'| is "utf-8" and
|'ambiwidth'| is "single". "margin" requires a border style.
See also: |ins-completion-menu|.
```
fixes: https://github.com/vim/vim/pull/18441#issuecomment-3360188458closes: #18486closes: #17091
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: MS-Windows: not possible to highlight the title bar
Solution: Make the title/caption bar configurable by introducing the
'go-C' option value which allows to highlight it using the
TitleBar and TitleBarNC highlighting groups (Mao-Yining).
Introduce titlebar color customization for Windows 11 GUI through
highlight groups and new 'guioptions' flag:
- Add 'C' flag to enable titlebar color customization (opt-in)
- New highlight groups: TitleBar (active) and TitleBarNC (inactive)
- Uses DWMWA_CAPTION_COLOR and DWMWA_TEXT_COLOR DWM attributes
- Dynamically loads dwmapi.dll for Windows 11 compatibility
- Defaults to system colors when set to NONE or feature disabled
closes: #18449
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: vertical separator of 'winfixwidth' windows may remain if they
become right-most windows from closing windows to the right.
Solution: Don't implicitly rely on frame_new_width to fix vseps, as the
call may be skipped for 'winfixwidth' windows to preserve
their width; do it explicitly in winframe_remove (Sean Dewar).
Note that I prefer win_new_width here over setting w_width directly, which
would've previously been done by win_split_ins after frame_add_vsep, as this
wasn't true for winframe_remove.
Though the equivalent issue of bottom 'winfixheight' windows leaving stray
statuslines with &ls=0 doesn't seem to exist, test it anyway.
closes: #18481
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: MS-Windows: Dark mode titlebar is not configurable
(after v9.1.1813)
Solution: Revert patch v9.1.1813
Revert "patch 9.1.1813: MS-Windows: title bar is always white"
This reverts commit dddde9ce12.
related: #18282
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: filetype: KerML and SysML files are not recognized
Solution: Detect *.kerml as kerml filetype, detect *.sysml as sysml
filetype, include a kerml and sysml filetype plugin
(Daumantas Kavolis)
closes: #18476
Signed-off-by: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: local variables shadowed by import names
Solution: Check if a local variable exists before handling imports
(thinca)
closes: #18480
Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Patch v9.1.1230 causes confusion about Ctrl-C behaviour
(kuuote, after v9.1.1230)
Solution: Revert the behaviour, keep the old behaviour
fixes: #17266
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: completion: flicker when LSP server is slow
Solution: reinsert leader text before invoking user function
(Girish Palya)
Reference:
https://github.com/girishji/vimcomplete/issues/101#issuecomment-3343063245
In insert-mode completion, the leader text is temporarily removed while
searching for candidates. When the LSP server responds slowly, the
client may call `:sleep` to wait, which triggers `out_flush()`. This
causes the deleted text to disappear briefly before being redrawn,
resulting in visible flicker.
This commit reinserts the leader text before invoking the user function,
and removes it again afterward to eliminate flicker.
closes: #18468
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: tests: no test for displaying 'foldcolumn' with Unicode
"foldinner" in 'fillchars'.
Solution: Add a few more test cases. Also fix misplaced "foldinner"
entry in version9.txt (zeertzjq).
closes: #18483
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: diff: w_topline may be invalidated
Solution: Update lnum in diff_set_topline()
(Yee Cheng Chin).
This can happen in ex_diffupdate() for certain edge cases which cause
the logic to now be wrong. This was also the root cause for #18437 where
Vim would crash due to a null pointer dereferencing (said pointer would
not be null under normal circumstances).
related: #18437closes: #18484
Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Makefile still supports Perl < 5.005
Solution: Remove support for Perl < 5.005, it's long been obsolete
(Hirohito Higashi)
closes: #18474
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: filetype: Not all PKL files are recognized
Solution: Detect *.pcf as pkl filetype, detect using the pkl-lsp://
protocol as pkl filetype, include PKL syntax script
(Jan Claußen)
This adds basic syntax support for the new PKL language by Apple.
What works:
- Shebang support
- Comment support
- Integers (decimal, hex, octal and binary) support
- Floating point support including exponentials
- Basic datatype support
- Unicode escape delimiters
- Escape code support
- String interpolation
- Support up to five pounds for custom delimiters
- Folding of multi-line comments and blocks
What doesn't work:
The language heavily uses parameterized type declarations, which can get
very complex. It is very hard to highlight this properly. There is
official Tree-sitter support for this. Since it is hard to pull this off
in a vim syntax file, I opted for basic support of the data types.
References:
https://github.com/apple/pkl-pantryfixes: #18271closes: #18274
Signed-off-by: Jan Claußen <jan.claussen10@web.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: completion: some issues with 'acl' when "preinsert" and
"longest" is in 'completeopt' (musonius, after v9.1.1638)
Solution: Fix various issues (see details below) (Girish Palya)
This commit addresses multiple issues in the 'autocompletedelay' behavior with
"preinsert" and "longest":
- Prevents spurious characters from being inserted.
- Ensures the completion menu is not shown until `autocompletedelay` has
expired.
- Shows the "preinsert" effect immediately.
- Keeps the "preinsert" effect visible even when a character is deleted.
fixes: #18443closes: #18460
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Cannot configure the inner foldlevel indicator for the
foldcolumn
Solution: Add "foldinner" suboption value to the 'fillchar' option
(Maria José Solano).
closes: #18365
Signed-off-by: Maria José Solano <majosolano99@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: possible crash when calculating topline in diff.c
(youngmith)
Solution: Check for pointer being Null before accessing it
fixes: #18437
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: popup: there are some position logic bugs
Solution: Refactor position logic and fix a few bugs
(Girish Palya).
This change does the following:
- Simplified and rewrote horizontal positioning logic (was overly
complex).
- Split horizontal and vertical positioning into separate functions.
- Fixed missing truncation marker (e.g. `>`) when items were truncated
and `pummaxwidth` was not set.
- Fixed occasional extra space being added to menu items.
- Update tests
closes: #18441
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: existing icon files are dated
Solution: Update and remake those icons using 256 colors
(RestorerZ)
closes: #18463
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: file mode changes in os_amiga.pro to 644
(RestorerZ, after v9.1.1811)
Solution: Fix the permissions of proto/os_amiga.pro to 644
(Hirohito Higashi).
closes: #18454
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: MS-Windows: title bar is always white
Solution: Set_caption() and set the title bars color to the
Normal highlighting background (Mao-Yining)
The implement of 'guidarkmode' is a much longer task, so I would like to
complete this most needed feature.
This commit seen the caption bar as the extension of the background so
it is follow the option 'background' before Windows 11 and follow the
background color after Windows 11.
fixes: #3922fixes: #18028closes: #18282
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: completion: flicker with slow LSPs
Solution: Disable flushing the changed text (Girish Palya).
In insert-mode completion, the leader text is temporarily deleted while
searching for completion candidates. If the LSP server responds slowly,
the client may call `:sleep` to wait, which triggers `out_flush()`. This
causes the deleted text to briefly disappear before being redrawn when
results arrive, producing a visible flicker.
There are two possible fixes:
1. Suppress flushing while a user function (e.g. LSP client) is waiting.
2. Reinsert the deleted text before invoking the user function.
This Commit implements (1), which is the simpler solution, though somewhat
heavy-handed. If you think this may introduce unwanted side effects, I
can rework it to use (2).
closes: #18439
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Amiga: Initialization of random buffer can be improved
Solution: Use RANDOM device when available (Ola Söder)
closes: #18419
Signed-off-by: Ola Söder <rolfkopman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: completion: "longest" doesn't work for manual completion when
'autocomplete' is on (after 9.1.1800).
Solution: Only reset compl_get_longest when enabling autocompletion
(zeertzjq).
closes: #18430
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: winclip.pro included in PRO_AUTO
Solution: Remove it from PRO_AUTO since it is already defined in
PRO_MANUAL (Hirohito Higashi).
closes: #18432
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Option insecure flags not copied when splitting window.
Solution: Move window-local insecure flags to winopt_T and copy them
properly (zeertzjq).
closes: #18434
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: :set doesn't clear local insecure flag like :setlocal does.
Solution: Also clear the local insecure flag when using :set (zeertzjq).
This applies to local options like 'wrap', 'foldtext' and 'foldexpr',
whose global flags are actually never used. For global-local options
like 'statusline' the behavior is already correct, so add some tests.
related: #18434
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Amiga: Missing build date in version string
Solution: Set build date in CFLAGS in Makefile (Ola Söder)
closes: #18418
Signed-off-by: Ola Söder <rolfkopman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Wrong indentation of nested ifdefs in findfile.c
Solution: Update indentation (Ola Söder)
closes: #18422
Signed-off-by: Ola Söder <rolfkopman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: 'nowrap' in a modeline may hide malicious code.
Solution: Forcibly use '>' as 'listchars' "extends" if 'nowrap' was set
from a modeline (zeertzjq).
Manual `:setlocal nowrap` disables this behavior. There is a separate
problem with `:set nowrap` that also applies to some other options.
related: #18214
related: #18399closes: #18425
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Vim9: misleading error when extending dictionary
(lacygoill)
Solution: Give a proper error message when a Dict type is used with a
compound operator (Yegappan Lakshmanan)
fixes: #8072closes: #18426
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Wrong display with 'smoothscroll' and long wrapped virtual
text at EOL.
Solution: Handle w_skipcol inside long wrapped virtual text at EOL
(zeertzjq).
closes: #18408
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: completion: autocompletion can be improved
Solution: Add support for "longest" and "preinsert" in 'autocomplete';
add preinserted() (Girish Palya)
* Add support for "longest" in 'completeopt' when 'autocomplete'
is enabled. (Note: the cursor position does not change automatically
when 'autocomplete' is enabled.)
* Add support for "preinsert" when 'autocomplete' is enabled. Ensure
"preinsert" works the same with and without 'autocomplete'
* introduce the preinserted() Vim script function, useful for defining
custom key mappings.
fixes: #18314closes: #18387
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Wrong cursor position with wrapped "after" virtual text and
'showbreak' (Ben Jackson)
Solution: Count size of 'showbreak' in wrapped "after" virtual text in
line size (zeertzjq).
fixes: #18398closes: #18400
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>