neovim-gtk/runtime/plugin/nvim_gui_shim.vim
Greg V 87dafda473 Store last clipboard register type
This makes `yy` -> `p` line copying work correctly, but whether external
text would be pasted as whole lines or not now depends on the last copy
operation.

The proper implementation would store the register type in the actual
Gtk clipboard, but gtk-rs is not ready for that yet.
2018-01-03 15:53:53 +03:00

57 lines
1.4 KiB
VimL

" A Neovim plugin that implements GUI helper commands
if !has('nvim') || exists('g:GuiLoaded')
finish
endif
let g:GuiLoaded = 1
if exists('g:GuiInternalClipboard')
let s:LastRegType = 'v'
function! provider#clipboard#Call(method, args) abort
if a:method == 'get'
return [rpcrequest(1, 'Gui', 'Clipboard', 'Get', a:args[0]), s:LastRegType]
elseif a:method == 'set'
let s:LastRegType = a:args[1]
call rpcnotify(1, 'Gui', 'Clipboard', 'Set', a:args[2], join(a:args[0], '
'))
endif
endfunction
endif
" Set GUI font
function! GuiFont(fname, ...) abort
call rpcnotify(1, 'Gui', 'Font', s:NvimQtToPangoFont(a:fname))
endfunction
" Some subset of parse command from neovim-qt
" to support interoperability
function s:NvimQtToPangoFont(fname)
let l:attrs = split(a:fname, ':')
let l:size = -1
for part in l:attrs
if len(part) >= 2 && part[0] == 'h'
let l:size = strpart(part, 1)
endif
endfor
if l:size > 0
return l:attrs[0] . ' ' . l:size
endif
return l:attrs[0]
endf
" The GuiFont command. For compatibility there is also Guifont
function s:GuiFontCommand(fname, bang) abort
if a:fname ==# ''
if exists('g:GuiFont')
echo g:GuiFont
else
echo 'No GuiFont is set'
endif
else
call GuiFont(a:fname, a:bang ==# '!')
endif
endfunction
command! -nargs=? -bang Guifont call s:GuiFontCommand("<args>", "<bang>")
command! -nargs=? -bang GuiFont call s:GuiFontCommand("<args>", "<bang>")