Commit Graph

11 Commits

Author SHA1 Message Date
Magnus Groß d93bc2baf7
Use native virtual-text for vim9 (#4281)
Our current virtual text implementation for vim emulates it by abusing
the textprop and popupwin feature from vim 8.2 (for more details see
commit 708e810414).
This implementation sometimes is janky, for example the popups may leak
into other vim windows next to the current window.

Luckily, vim just got native virtual-text support as a proper subtype to
the prop_add() function. By using the 'text' option, the text property
automatically becomes virtual text that is appended to the current line
if col is zero.

Note that the prop_add() method now returns negative IDs for virtual
text properties.

This feature was added in vim 9.0.0067, but it got a lot of bugfixes
which is why we only use this new API if vim has at least version
9.0.0214.
However, there are still some minor bugs with vim's native virtual text,
so we might have to bump the version check again in the future.

Also see #3906.

Now with proper virtual text support for both vim and neovim available,
we can tackle #2962 in the future by simply tracking multiple virt-texts
instead of just the last one.

In the future we might also want to disable our virtual text emulation
support for vim, as it is a total hack, but for now we should keep it
for backwards compatibility.
2022-08-23 20:22:14 +09:00
Magnus Groß 9860dadbc9
Initialize hl-groups correctly if virtual text is loaded first (#3960)
If virtualtext.vim is autoloaded first, it will link
ALEVirtualTextWarning to ALEWarning. But ALEWarning is not initialized
yet, so it will create ALEWarning, but with no color definition set.

Shortly after, highlight.vim is autoloaded, which would usually link
ALEWarning to SpellCap, but only if ALEWarning is not already set.
However since ALEWarning is already initialized due to the previous
link, we skip this and never actually come around to properly
initializing it.

We fix this by initializing all highlight groups in highlight.vim, thus
satisfying the dependency of ALEVirtualTextWarning being initialized
after ALEWarning.

Fixes #3585
2021-12-09 23:21:39 +09:00
Magnus Groß da331acc9e
Replace line breaks in virtual text with whitespace (#3949)
Before this patch multiline warnings would appear in a single line with
'^@' as separator.
Now we use whitespace as separator to improve the appearance.

Also strip trailing whitespace, newlines, etc...

Fixes #3939
2021-10-24 11:35:06 +09:00
Magnus Groß 708e810414
Implement virtual text support for vim (#3915)
This requires the textprop and popupwin feature (vim 8.2).

Fixes #3906
2021-10-02 09:02:49 +09:00
Jethro Shuwen Sun 9e95032b30 fix 2434: use text field instead of the detail field for virtualtext (#2441)
* use text field instead of the detail field for virtualtext

*  make the change simpler
2019-04-16 14:40:39 +01:00
w0rp 5505f2323d
Fix #2330 - Do not use getcurpos() to avoid changing curswant 2019-03-07 12:28:42 +00:00
w0rp 6746cb3333
Fixing linter problems 2018-11-25 13:57:13 +00:00
Björn Linse d18511f322 Don't hardcode the namespace id for virtual text
This makes collisions with other plugins less likely.
2018-11-25 11:06:55 +01:00
w0rp dd7b2188ab
Add style highlights for virtualtext and document all of them 2018-11-14 16:44:53 +00:00
jamestthompson3 f64f9aba16 Add specific highlight groups for virtualtext (#2071) 2018-11-14 16:21:35 +00:00
Luan Santos f58a5cba05
Move virtualtext handling to own file
This allows cursor and virtualtext to be independently autoloaded.
2018-11-06 22:31:35 -08:00