Commit Graph

650 Commits

Author SHA1 Message Date
Yasuhiro Matsumoto 433bcf3bec patch 9.2.0129: popup: wrong handling of wide-chars and opacity:0
Problem:  popup: wrong handling of wide-chars and opacity:0
Solution: Correctly handle opacity 0, correctly handle wide chars
          (Yasuhiro Matsumoto)

closes: #19606

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 18:47:10 +00:00
Yasuhiro Matsumoto 4d0c57e15f patch 9.2.0112: popup: windows flicker when updating text
Problem:  popup: windows flicker when updating text
Solution: Only refresh the popup mask if the position or size changed,
          manually set the window redraw type instead of using
          redraw_win_later() to avoid triggering a full screen redraw.
          Handle opacity 100 correctly. Keep "firstline" sticky when
          setting options (Yasuhiro Matsumoto).

related: #19510
closes:  #19559

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:38:58 +00:00
Foxe Chen 0fe3ca6031 patch 9.2.0111: 'winhighlight' option not always applied
Problem:  'winhighlight' option not always applied
Solution: Apply 'winhighlight' setting in more places
          (Foxe Chen).

closes: #19555

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:17:57 +00:00
Javier Jaramago Fernández 2a7414594a patch 9.2.0104: popup: flickering on opaque popups with overlapping text
Problem:  popup: flickering on opaque popups with overlapping text,
          even if they are opaque (after v9.2.0016).
Solution: Prevent double redrawing by skipping background updates for
          opaque popups. Revert changes to test dumps
          (Javier Jaramago Fernández).

A flickering effect was introduced in commit v9.2.0016 (commit:
6c203072f) for all popups. This is a consequence of a double redraw of
the overlapping background characters. This could be expected for
transparent popups, but, it should exclude opaque ones. For a complete
fix of the flickering this commit is required in combination with fix
present in v9.2.0064 (commit: 97c5bed84b).

Additionally this commit reverts changes introduced for tests dumps for
masks in commits 6c203072f and cded5e220. These dumps were updated
preventing characters from popups to take into account the masks
specified for them. This forces the redraw of popup characters, even
when masks attempt to prevent them, leading to flickering effects. See
issues #19510 and PR: #19534.

closes: #19534

Signed-off-by: Javier Jaramago Fernández <jaramago.fernandez.javier@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:33:03 +00:00
zeertzjq 5845741d69 patch 9.2.0102: 'listchars' "leadtab" not used in :list
Problem:  'listchars' "leadtab" not used in :list (after 9.2.0088).
Solution: Also check for "leadtab" when using :list. Fix memory leak on
          E1572 if "multispace" or "leadmultispace" is set (zeertzjq).

closes: #19557

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:08:12 +00:00
Christian Brabandt b2bc54534c patch 9.2.0099: compiler warning about unused variable
Problem:  Coverity complains about uninitialized var, also gcc warns
          about a few other variables possibly being used uninitialized
          (Tony Mechelynck, after v9.2.0093)
Solution: Initialize a few other variables.

Coverity CID: 1683101

closes: #19561

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 18:37:25 +00:00
Foxe Chen 98174caabb patch 9.2.0093: Not possible to have window-local highlighting groups
Problem:  Not possible to have window-local highlighting groups
          (Hima)
Solution: Port Neovims 'winhighlight' option to Vim (Foxe Chen).

fixes:  #3576
closes: #19493

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 19:36:07 +00:00
HarshK97 8526d32647 patch 9.2.0088: cannot display tabs for indentation
Problem:  cannot display tabs for indentation
Solution: Add the "leadtab" value to the 'listchars' option to
          distinguish between tabs used for indentation and tabs used
          for alignment (HarshK97).

closes: #19094

Signed-off-by: HarshK97 <harshkapse1234@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:53:35 +00:00
Hirohito Higashi a4186316ba patch 9.2.0083: Cannot have a mutli-line statusline
Problem:  Cannot have a mutli-line statusline.
Solution: Add support for multi-line statusline
          (Hirohito Higashi).

closes: #19123

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 16:57:08 +00:00
Yasuhiro Matsumoto cded5e2205 patch 9.2.0080: popup: a few redrawing problems
Problem:   Popup windows leave ghost images when moved. Visual options
           do not trigger a redraw when updated via popup_setoptions().
           An empty borderhighlight list fails to clear existing
           highlights.
Solution:  Modify f_popup_move() in src/popupwin.c to save the old
           position before moving and force a redraw. Enhance
           f_popup_setoptions() to trigger a redraw when
           visual-affecting options change. Modify
           apply_general_options() to explicitly clear border
           highlights when an empty list is provided
           (Yasuhiro Matsumoto).

closes: #19297

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:32:45 +00:00
Yasuhiro Matsumoto 201562401b patch 9.2.0045: wrongly resetting the foreground cterm color
Problem:  wrongly resetting the foreground cterm color
          (lilydjwg, after v9.2.0017)
Solution: Remove useless statement (Yasuhiro Matsumoto).

fixes:  #19485
closes: #19486

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-22 20:00:52 +00:00
Christian Brabandt 402eb5b5a6 patch 9.2.0039: potential integer underflow in screen_line()
Problem:  In screen_line(), there is a potential integer underflow when
          accessing ScreenAttrs[off_to - 1] if off_to is zero.
          (Coverity CID 1681430, after v9.2.0017)
Solution: Add a check to ensure off_to > 0 before accessing the
          previous attribute index.

related: #19272
closes:  #19479

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:53:25 +00:00
Yasuhiro Matsumoto 782345c9e6 patch 9.2.0035: syntax highlighting lost in popup with opacity
Problem:  syntax highlighting lost in popup with opacity lower than 100
          (after v9.2.0017)
Solution: Before blending, combine the popup's window color attribute
          with the character's own attribute using hl_combine_attr()
          (Yasuhiro Matsumoto).

related: #19272
closes:  #19478

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 09:55:18 +00:00
Yasuhiro Matsumoto 95e8faa24f patch 9.2.0017: popup: cannot allow to specify transparency
Problem:  popup: Popup windows do not support a transparency setting.
Solution: Add the "opacity" option to popup windows to support
          transparency when using the GUI or 'termguicolors'
          (Yasuhiro Matsumoto).

closes: #19272

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 18:09:45 +00:00
Yasuhiro Matsumoto 6c203072fe patch 9.2.0016: popup border not redrawn correctly with wide chars
Problem:  When a popup window's border overwrites part of a wide
          character from another popup, the remaining half loses its
          original attribute (background color) because it is reset to 0.
Solution: Modify screen_line(), screen_puts_len(), and screen_fill() to
          preserve the existing ScreenAttrs value when clearing wide
          character boundaries. Also ensure background data is refreshed
          for transparent popup cells (Yasuhiro Matsumoto).

closes: #19299

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 17:19:42 +00:00
Yasuhiro Matsumoto 6ffe020b91 patch 9.1.2143: wrong rendering of popups when overlapping wide char
Problem:  When a popup window partially overlaps a wide character
          it results in truncated or garbage display.
Solution: When a wide character is partially blocked by a popup, clear both
          cells in the screen buffer to prevent garbage (Yasuhiro Matsumoto).

closes: #19271

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 19:08:24 +00:00
Hirohito Higashi 9fd2cae482 patch 9.1.2083: style: wrong indentation of nested ifdefs
Problem:  style: wrong indentation of nested ifdefs
Solution: Fix indentation
          (Hirohito Higashi)

related: #19165

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:14:33 +00:00
Hirohito Higashi 47c30bb03a patch 9.1.1900: tabpanel: wrong condition after v9.1.1898
Problem:  tabpanel: wrong condition after v9.1.1898
Solution: Update condition (Hirohito Higashi)

related: #18678
closes: #18692

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:20:55 +00:00
Hirohito Higashi cf4d9625c6 patch 9.1.1898: tabpanel: inconsistent use of cmdline with tabpanel
Problem:  tabpanel: inconsistent use of cmdline and message area with
          tabpanel
Solution: Reduce the cmdline and message area by the horizontal size of
          the tabpanel (Hirohito Higashi)

closes: #18678

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-06 20:23:36 +00:00
Hirohito Higashi e7c765fe59 patch 9.1.1840: Generating prototype files does not work on all platforms
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>
2025-10-08 18:31:13 +00:00
Maria José Solano 1a691afd27 patch 9.1.1819: Cannot configure the inner foldlevel indicator
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>
2025-10-03 08:24:31 +00:00
Hirohito Higashi e1c507a965 patch 9.1.1575: tabpanel not drawn correctly with wrapped lines
Problem:  tabpanel not drawn correctly with wrapped lines
          (utubo, after v9.1.1534)
Solution: Use Columns as width, not the frame width
          (Hirohito Higashi)

fixes: #17774
closes: #17809

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-21 20:32:08 +02:00
Girish Palya 824286c9a7 patch 9.1.1563: completion: ruler may disappear
Problem:  The ruler disappears after typing the second character during
          insert mode completion, even when completion messages are
          suppressed ('shortmess' includes "c"). This makes the UI
          appear inconsistent.
Solution: Ensure the ruler is restored during screen redraw when popup
          completion is active (Girish Palya).

Notes:
No new tests were added, as existing screen dump tests were updated to
reflect the corrected behavior.

closes: #17770

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-17 22:02:57 +02:00
Girish Palya fb45809f01 patch 9.1.1562: close button always visible in the 'tabline'
Problem:  close button "X" is visible in the non-GUI 'tabline', even
          when the mouse is disabled
Solution: only show the button when 'mouse' contains any of the flags
          "anvi" (Girish Palya)

The tabline always displays an "X" (close) button, and the info popup
shows both a close button and a resize handle—even when the mouse is
disabled. These UI elements are only actionable with the mouse and serve
no purpose for keyboard users who disable the mouse. Displaying
non-functional, clickable elements in a non-GUI environment is
misleading and adds unnecessary visual clutter.

So remove the close button and resize handle when the mouse is disabled.
They appear again when mouse is enabled.

closes: #17765

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-17 21:56:16 +02:00
Hirohito Higashi 3b9b95dc63 patch 9.1.1425: tabpanel: there are still some problems with the tabpanel
Problem:  tabpanel: there are still some problems with the tabpanel with
          column handling
Solution: fix the problems and refactor Tabpanel feature (Hirohito
          Higashi).

fixes: #17423
fixes: #17332
closes: #17336

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-06-01 20:22:55 +02:00
Naruhiko Nishino be5bd4d629 patch 9.1.1391: Vim does not have a vertical tabpanel
Problem:  Vim does not have a tabpanel
Solution: include the tabpanel feature
          (Naruhiko Nishino, thinca)

closes: #17263

Co-authored-by: thinca <thinca@gmail.com>
Signed-off-by: Naruhiko Nishino <naru123456789@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-05-14 21:20:28 +02:00
Yegappan Lakshmanan e89aef3f65 patch 9.1.1390: style: more wrong indentation
Problem:  style: more wrong indentation
Solution: reformat a few more places
          (Yegappan Lakshmanan)

closes: #17309

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-05-14 20:31:55 +02:00
glepnir d4dbf822dc patch 9.1.1296: completion: incorrect truncation logic
Problem:  completion: incorrect truncation logic (after: v9.1.1284)
Solution: replace string allocation with direct screen rendering and
          fixe RTL/LTR truncation calculations (glepnir)

closes: #17081

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-04-12 18:39:16 +02:00
glepnir b87620466c patch 9.1.1284: not possible to configure pum truncation char
Problem:  not possible to configure the completion menu truncation
          character
Solution: add the "trunc" suboption to the 'fillchars' setting to
          configure the truncation indicator (glepnir).

closes: #17006

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-04-07 21:05:16 +02:00
glepnir ff159253eb patch 9.1.1162: completion popup not cleared in cmdline
Problem:  When an info popup spans into the cmdline area and ESC is
          pressed, some content remains visible on screen (yu3s)
Solution: Add popup_overlays_cmdline() check in screen_fill() to prevent
          prematurely clearing the clear_cmdline flag (glepnir).

fixes: #15627
closes: #16765

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-03-01 16:19:44 +01:00
John Marriott c15de972e8 patch 9.1.1028: too many strlen() calls in screen.c
Problem:  too many strlen() calls in screen.c
Solution: refactor screen.c and remove calls to strlen(),
          verify that leadmultispace != NULL (John Marriott)

closes: #16460

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-01-17 13:54:49 +01:00
John Marriott a21240b97d patch 9.1.0997: too many strlen() calls in drawscreen.c
Problem:  too many strlen() calls in drawscreen.c
Solution: refactor drawscreen.c and remove calls to strlen(),
          make get_keymap_str() (in screen.c) return string length
          instead of TRUE/FALSE (John Marriott).

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-01-08 20:10:59 +01:00
h-east 8927c9b720 patch 9.1.0358: wrong drawing in GUI with setcellwidth()
Problem:  wrong drawing in GUI with setcellwidth()
          (after v9.1.0344)
Solution: move gui.in_use condition (h-east)

closes: #14600

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-04-20 18:04:06 +02:00
mikoto2000 e20fa59903 patch 9.1.0344: Cursor wrong after using setcellwidth() in terminal
Problem:  Cursor wrong after using setcellwidth() in terminal
          (mikoto2000)
Solution: output additional spaces, so the behaviour matches the GUI
          (mikoto2000)

fixes: #14539
closes: #14540

Signed-off-by: mikoto2000 <mikoto2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Fix CUI `setcellwidths` characters draw behavior to same GUI behavior.
2024-04-17 22:06:54 +02:00
zeertzjq deb2204bff patch 9.1.0186: cursor pos wrong on mouse click after eol with 'rl', 've' and conceal
Problem:  Wrong cursor position when clicking after end of line with
          'rightleft', 'virtualedit' and conceal.
Solution: Set values in ScreenCols[] also with SLF_RIGHTLEFT.  Also fix
          off-by-one cursor position with 'colorcolumn' (zeertzjq).

closes: #14218

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-17 19:44:30 +01:00
zeertzjq d0c1b7723f patch 9.1.0184: Cursor pos wrong when clicking with conceal and wrap
Problem:  Cursor position wrong when clicking with conceal and wrap.
Solution: Use the virtual column of the last char for ScreenCols[] in
          boguscols.  Remove use of MAXCOL in ScreenCols[].  Rename
          third argument of wlv_screen_line() to "clear_end" as that's
          clearer what it does (zeertzjq).

related: 14192
closes: #14200

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16 15:03:33 +01:00
Sam-programs 062141b1a7 patch 9.1.0145: v:echospace not correct when 'showcmdloc' != last
Problem:  the amount of available space (v:echospace) on the command
          line is not correct when showcmdloc is drawn into the
          statusline or tabline.
Solution: only add SHOWCMD_COLS to the shown command column when
          'showcmdloc' is set to last (Sam-programs)

closes: #14108

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Sam-programs <130783534+Sam-programs@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-29 17:40:29 +01:00
Olaf Seibert fd472655a9 patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang
Problem:  ScreenLines may not be correctly initialized, causing hang
          (Olaf Seibert, after 9.0.0220)
Solution: always initialize ScreneLines when allocating a screen
          (Olaf Seibert)

ScreenLines and related structures could be left uninitialized
causing a screen update to run into an infinite loop when using latin1
encoding.

Partly caused because by patch 9.0.0220, which makes mb_ptr2len return
zero for NUL

related: #12671
closes: #13946

Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-02-01 21:11:16 +01:00
zeertzjq 6a8d2e1634 patch 9.1.0039: too vague errors for 'listchars'/'fillchars'
Problem:  too vague errors for 'listchars'/'fillchars'
Solution: Include the field name in error message.
          (zeertzjq)

related: neovim/neovim#27050
closes: #13877

Co-authored-by: Cole Frankenhoff <cole.nhf@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-17 21:07:08 +01:00
PMunch a606f3ac03 patch 9.1.0030: Cannot use terminal alternate font
Problem:  Cannot use terminal alternate fonts (PMunch)
Solution: Support terminal alternate fonts using
          CSI SGR 10-20 and t_CF code (PMunch)

Add support for alternate font highlighting

This adds support for alternate font highlighting using CSI SGR 10-20.
Few terminals currently support this, but with added tool support this
should improve over time. The change here is more or less taken from how
colors are configured and applied, but there might be some parts I
missed while implementing it. Changing fonts is done through the new
`:hi ctermfont` attribute which takes a number, 0 is the normal font, and
the numbers 1-9 select an "alternative" font. Which fonts are in use is
up to the terminal.

fixes: #13513
closes: #13537

Signed-off-by: PMunch <peterme@peterme.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-01-15 22:27:35 +01:00
zeertzjq 00624a2fa0 patch 9.0.2126: unused assignments when checking 'listchars'
Problem:  Unused assignments when checking the value of 'listchars'.
Solution: Loop only once when just checking the value.  Add a test to
          check that this change doesn't cause double-free.

closes: #13559

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-23 20:47:16 +01:00
Christian Brabandt 6a650bf696 patch 9.0.2095: statusline may look different than expected
Problem:  statusline may look different than expected
Solution: do not check for highlighting of stl and stlnc characters

statusline fillchar may be different than expected

If the highlighting group for the statusline for the current window
|hl-StatusLine| or the non-current window |hl-StatusLineNC| are cleared
(or do not differ from each other), than Vim will use the hard-coded
fallback values '^' (for the non-current windows) or '=' (for the
current window).  I believe this was done, to make sure the statusline
will always be visible and be distinguishable from the rest of the
window.

However, this may be unexpected, if a user explicitly defined those
fillchar characters just to notice that those values are then not used
by Vim.

So, let's assume users know what they are doing and just always return
the configured stl and stlnc values.  And if they want the statusline to
be non-distinguishable from the rest of the window space, so be it.  It
is their responsibility and Vim shall not know better what to use.

fixes: #13366
closes: #13488

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-11-08 21:23:29 +01:00
zeertzjq 1f025b01e2 patch 9.0.1961: 'listchars' completion misses "multispace" and "leadmultispace"
Problem:  Cmdline completion for 'listchars' fields doesn't include
          "multispace" and "leadmultispace" (after 9.0.1958).
Solution: Include "multispace" and "leadmultispace" in lcstab.

closes: #13225

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-30 12:43:07 +02:00
Yee Cheng Chin 900894b09a patch 9.0.1958: cannot complete option values
Problem:  cannot complete option values
Solution: Add completion functions for several options

Add cmdline tab-completion for setting string options

Add tab-completion for setting string options on the cmdline using
`:set=` (along with `:set+=` and `:set-=`).

The existing tab completion for setting options currently only works
when nothing is typed yet, and it only fills in with the existing value,
e.g. when the user does `:set diffopt=<Tab>` it will be completed to
`set diffopt=internal,filler,closeoff` and nothing else. This isn't too
useful as a user usually wants auto-complete to suggest all the possible
values, such as 'iblank', or 'algorithm:patience'.

For set= and set+=, this adds a new optional callback function for each
option that can be invoked when doing completion. This allows for each
option to have control over how completion works. For example, in
'diffopt', it will suggest the default enumeration, but if `algorithm:`
is selected, it will further suggest different algorithm types like
'meyers' and 'patience'. When using set=, the existing option value will
be filled in as the first choice to preserve the existing behavior. When
using set+= this won't happen as it doesn't make sense.

For flag list options (e.g. 'mouse' and 'guioptions'), completion will
take into account existing typed values (and in the case of set+=, the
existing option value) to make sure it doesn't suggest duplicates.

For set-=, there is a new `ExpandSettingSubtract` function which will
handle flag list and comma-separated options smartly, by only suggesting
values that currently exist in the option.

Note that Vim has some existing code that adds special handling for
'filetype', 'syntax', and misc dir options like 'backupdir'. This change
preserves them as they already work, instead of converting to the new
callback API for each option.

closes: #13182

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
2023-09-29 20:42:32 +02:00
zeertzjq db54e989b5 patch 9.0.1923: curswant wrong on click with 've' and 'wrap' set
Problem:  curswant wrong on click with 've' and 'wrap' set
Solution: Add w_leftcol to mouse click column.

closes: #13142

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-09-21 16:33:09 +02:00
zeertzjq 9994160bfe patch 9.0.1742: wrong curswant when clicking on second cell of double-width char
Problem:  Wrong curswant when clicking and the second cell of a
          double-width char.
Solution: Don't copy virtcol of the first char to the second one.

closes: #12842

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-08-19 13:08:50 +02:00
Sean Dewar 876f5fb570 patch 9.0.1726: incorrect heights in win_size_restore()
Problem: incorrect heights in win_size_restore()
Solution: avoid restoring incorrect heights in win_size_restore()

Changing 'showtabline' or 'cmdheight' in the cmdwin restores incorrect
window heights after closing the cmdwin.

This may produce a gap between the cmdline and the window above.

Solution: restore window sizes only if the number of lines available for windows
changed; subtract the rows of the tabline, cmdline and last window's statusline
from 'lines' (other statuslines don't matter).

closes: #12704

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Sean Dewar <seandewar@users.noreply.github.com>
2023-08-17 22:40:05 +02:00
zeertzjq 47eec6716b patch 9.0.1598: screenchar() and others are wrong with DBCS 'encoding'
Problem:    screenchar(), screenchars() and screenstring() do not work
            properly when 'encoding' is set to a double-byte encoding.
Solution:   Fix the way the bytes of the characters are obtained.
            (issue #12469)
2023-06-01 20:26:55 +01:00
Bram Moolenaar 79cdf026f1 patch 9.0.1571: RedrawingDisabled not used consistently
Problem:    RedrawingDisabled not used consistently.
Solution:   Avoid RedrawingDisabled going negative.  Set RedrawingDisabled in
            win_split_ins(). (closes #11961)
2023-05-20 14:07:00 +01:00
zeertzjq d619d6a9c6 patch 9.0.1526: condition is always true
Problem:    Condition is always true.
Solution:   Remove unnecessary condition. (closes #12359)
2023-05-08 15:56:21 +01:00