Merge pull request #27 from inkarkat/fix-selection-exclusive
Support :set selection=exclusive
This commit is contained in:
commit
9c025e5914
@ -32,28 +32,33 @@ endfunction
|
|||||||
function! s:exchange_get(type, vis)
|
function! s:exchange_get(type, vis)
|
||||||
let reg = getreg('"')
|
let reg = getreg('"')
|
||||||
let reg_mode = getregtype('"')
|
let reg_mode = getregtype('"')
|
||||||
let selection = &selection
|
|
||||||
let &selection = 'inclusive'
|
|
||||||
if a:vis
|
if a:vis
|
||||||
let type = a:type
|
let type = a:type
|
||||||
let [start, end] = s:store_pos("'<", "'>")
|
let [start, end] = s:store_pos("'<", "'>")
|
||||||
silent exe "normal! `<" . a:type . "`>y"
|
silent normal! gvy
|
||||||
elseif a:type == 'line'
|
if &selection ==# 'exclusive' && start != end
|
||||||
let type = 'V'
|
let end[2] -= len(matchstr(@@, '\_.$'))
|
||||||
let [start, end] = s:store_pos("'[", "']")
|
endif
|
||||||
silent exe "normal! '[V']y"
|
|
||||||
elseif a:type == 'block'
|
|
||||||
let type = "\<C-V>"
|
|
||||||
let [start, end] = s:store_pos("'[", "']")
|
|
||||||
silent exe "normal! `[\<C-V>`]y"
|
|
||||||
else
|
else
|
||||||
let type = 'v'
|
let selection = &selection
|
||||||
let [start, end] = s:store_pos("'[", "']")
|
let &selection = 'inclusive'
|
||||||
silent exe "normal! `[v`]y"
|
if a:type == 'line'
|
||||||
|
let type = 'V'
|
||||||
|
let [start, end] = s:store_pos("'[", "']")
|
||||||
|
silent exe "normal! '[V']y"
|
||||||
|
elseif a:type == 'block'
|
||||||
|
let type = "\<C-V>"
|
||||||
|
let [start, end] = s:store_pos("'[", "']")
|
||||||
|
silent exe "normal! `[\<C-V>`]y"
|
||||||
|
else
|
||||||
|
let type = 'v'
|
||||||
|
let [start, end] = s:store_pos("'[", "']")
|
||||||
|
silent exe "normal! `[v`]y"
|
||||||
|
endif
|
||||||
|
let &selection = selection
|
||||||
endif
|
endif
|
||||||
let text = getreg('@')
|
let text = getreg('@')
|
||||||
call setreg('"', reg, reg_mode)
|
call setreg('"', reg, reg_mode)
|
||||||
let &selection = selection
|
|
||||||
return [text, type, start, end]
|
return [text, type, start, end]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user