summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/virtualtext.vim35
1 files changed, 28 insertions, 7 deletions
diff --git a/autoload/ale/virtualtext.vim b/autoload/ale/virtualtext.vim
index 345deb70..f0753dfe 100644
--- a/autoload/ale/virtualtext.vim
+++ b/autoload/ale/virtualtext.vim
@@ -8,14 +8,21 @@ let g:ale_virtualtext_delay = get(g:, 'ale_virtualtext_delay', 10)
let s:cursor_timer = -1
let s:last_pos = [0, 0, 0]
let s:has_virt_text = 0
+let s:emulate_virt = 0
if has('nvim-0.3.2')
let s:ns_id = nvim_create_namespace('ale')
let s:has_virt_text = 1
elseif has('textprop') && has('popupwin')
- call prop_type_add('ale', {})
- let s:last_popup = -1
let s:has_virt_text = 1
+ let s:emulate_virt = !has('patch-9.0.0214')
+
+ if s:emulate_virt
+ call prop_type_add('ale', {})
+ let s:last_virt = -1
+ else
+ let s:last_virt = 1
+ endif
endif
function! ale#virtualtext#Clear() abort
@@ -28,10 +35,13 @@ function! ale#virtualtext#Clear() abort
if has('nvim')
call nvim_buf_clear_highlight(l:buffer, s:ns_id, 0, -1)
else
- if s:last_popup != -1
+ if s:emulate_virt && s:last_virt != -1
call prop_remove({'type': 'ale'})
- call popup_close(s:last_popup)
- let s:last_popup = -1
+ call popup_close(s:last_virt)
+ let s:last_virt = -1
+ elseif s:last_virt != 1
+ call prop_remove({'id': s:last_virt})
+ let s:last_virt = 1
endif
endif
endfunction
@@ -48,12 +58,12 @@ function! ale#virtualtext#ShowMessage(message, hl_group) abort
if has('nvim')
call nvim_buf_set_virtual_text(l:buffer, s:ns_id, l:line-1, [[l:msg, a:hl_group]], {})
- else
+ elseif s:emulate_virt
let l:left_pad = col('$')
call prop_add(l:line, l:left_pad, {
\ 'type': 'ale',
\})
- let s:last_popup = popup_create(l:msg, {
+ let s:last_virt = popup_create(l:msg, {
\ 'line': -1,
\ 'padding': [0, 0, 0, 1],
\ 'mask': [[1, 1, 1, 1]],
@@ -63,6 +73,17 @@ function! ale#virtualtext#ShowMessage(message, hl_group) abort
\ 'wrap': 0,
\ 'zindex': 2
\})
+ else
+ let type = prop_type_get(a:hl_group)
+
+ if type == {}
+ call prop_type_add(a:hl_group, {'highlight': a:hl_group})
+ endif
+
+ let s:last_virt = prop_add(l:line, 0, {
+ \ 'type': a:hl_group,
+ \ 'text': ' ' . l:msg
+ \})
endif
endfunction