mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-09 14:30:06 +08:00
Highlight symbol
This commit is contained in:
parent
aacb3caa98
commit
df7bd02687
@ -72,6 +72,17 @@ function! s:string2chars(str) abort
|
|||||||
endfunction
|
endfunction
|
||||||
let s:file['string2chars'] = function('s:string2chars')
|
let s:file['string2chars'] = function('s:string2chars')
|
||||||
|
|
||||||
|
function! s:strAllIndex(str, need) abort
|
||||||
|
let rst = []
|
||||||
|
let idx = stridx(a:str, a:need)
|
||||||
|
while idx != -1
|
||||||
|
call add(rst, idx)
|
||||||
|
let idx = stridx(a:str, a:need, idx + 1)
|
||||||
|
endwhile
|
||||||
|
return rst
|
||||||
|
endfunction
|
||||||
|
let s:file['strAllIndex'] = function('s:strAllIndex')
|
||||||
|
|
||||||
function! SpaceVim#api#data#string#get() abort
|
function! SpaceVim#api#data#string#get() abort
|
||||||
return deepcopy(s:file)
|
return deepcopy(s:file)
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -7,14 +7,45 @@
|
|||||||
"=============================================================================
|
"=============================================================================
|
||||||
|
|
||||||
let s:stack = []
|
let s:stack = []
|
||||||
|
let s:index = -1
|
||||||
let s:mode = ''
|
let s:mode = ''
|
||||||
|
let s:hi_id = ''
|
||||||
|
|
||||||
function! SpaceVim#plugins#iedit#start()
|
let s:VIMH = SpaceVim#api#import('vim#highlight')
|
||||||
|
let s:STRING = SpaceVim#api#import('data#string')
|
||||||
|
|
||||||
|
|
||||||
|
function! s:highlight_cursor() abort
|
||||||
|
let info = {
|
||||||
|
\ 'name' : 'SpaceVimGuideCursor',
|
||||||
|
\ 'guibg' : synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'guifg'),
|
||||||
|
\ 'guifg' : synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'guibg'),
|
||||||
|
\ 'ctermbg' : synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'ctermfg'),
|
||||||
|
\ 'ctermfg' : synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'ctermbg'),
|
||||||
|
\ }
|
||||||
|
hi def link SpaceVimGuideCursor Cursor
|
||||||
|
call s:VIMH.hi(info)
|
||||||
|
let s:cursor_hi = matchaddpos('SpaceVimGuideCursor', [[line('.'), col('.'), 1]])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:remove_cursor_highlight() abort
|
||||||
|
try
|
||||||
|
call matchdelete(s:cursor_hi)
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! SpaceVim#plugins#iedit#start(...)
|
||||||
let save_tve = &t_ve
|
let save_tve = &t_ve
|
||||||
setlocal t_ve=
|
setlocal t_ve=
|
||||||
let s:mode = 'n'
|
let s:mode = 'n'
|
||||||
let w:spacevim_iedit_mode = s:mode
|
let w:spacevim_iedit_mode = s:mode
|
||||||
let w:spacevim_statusline_mode = 'in'
|
let w:spacevim_statusline_mode = 'in'
|
||||||
|
call s:highlight_cursor()
|
||||||
|
let begin = get(a:000, 0, 1)
|
||||||
|
let end = get(a:000, 1, line('$'))
|
||||||
|
let symbol = expand('<cword>')
|
||||||
|
call s:parse_symbol(begin, end, symbol)
|
||||||
redrawstatus!
|
redrawstatus!
|
||||||
while 1
|
while 1
|
||||||
let char = getchar()
|
let char = getchar()
|
||||||
@ -25,10 +56,18 @@ function! SpaceVim#plugins#iedit#start()
|
|||||||
call s:handle(s:mode, char)
|
call s:handle(s:mode, char)
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
let s:stack = []
|
||||||
|
let s:index = -1
|
||||||
let s:mode = ''
|
let s:mode = ''
|
||||||
let w:spacevim_iedit_mode = s:mode
|
let w:spacevim_iedit_mode = s:mode
|
||||||
let w:spacevim_statusline_mode = 'in'
|
let w:spacevim_statusline_mode = 'in'
|
||||||
let &t_ve = save_tve
|
let &t_ve = save_tve
|
||||||
|
call s:remove_cursor_highlight()
|
||||||
|
try
|
||||||
|
call matchdelete(s:hi_id)
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
let s:hi_id = ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -60,3 +99,16 @@ function! s:handle_insert(char) abort
|
|||||||
endif
|
endif
|
||||||
echom s:mode . '--' . a:char
|
echom s:mode . '--' . a:char
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:parse_symbol(begin, end, symbol) abort
|
||||||
|
let len = len(a:symbol)
|
||||||
|
for l in range(a:begin, a:end)
|
||||||
|
let line = getline(l)
|
||||||
|
let idx = s:STRING.strAllIndex(line, a:symbol)
|
||||||
|
for pos_c in idx
|
||||||
|
call add(s:stack, [l, pos_c + 1, len])
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
let g:wsd = s:stack
|
||||||
|
let s:hi_id = matchaddpos('SpaceVimGuideCursor', s:stack)
|
||||||
|
endfunction
|
||||||
|
Loading…
Reference in New Issue
Block a user