From 72c38b5cd5af8599090311f8d580136feb0646f1 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 15 Jul 2017 15:03:41 +0200 Subject: health.vim: validate g:clipboard Closes #7020 Also fix 'iskeyword' setting, which I fumbled in 440133e0d5d576e46bd5ffa555f6a9c534789b48 --- runtime/autoload/health.vim | 3 ++- runtime/autoload/health/provider.vim | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'runtime/autoload') diff --git a/runtime/autoload/health.vim b/runtime/autoload/health.vim index 1d8cae7d19..f875c8b797 100644 --- a/runtime/autoload/health.vim +++ b/runtime/autoload/health.vim @@ -33,7 +33,8 @@ function! health#check(plugin_names) abort setlocal wrap breakindent setlocal filetype=markdown setlocal conceallevel=2 concealcursor=nc - setlocal keywordprg=:help iskeyword=@,48-57,_,192-255,-,# + setlocal keywordprg=:help + let &l:iskeyword='!-~,^*,^|,^",192-255' call s:enhance_syntax() if empty(healthchecks) diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim index 31a235a397..ec20615f69 100644 --- a/runtime/autoload/health/provider.vim +++ b/runtime/autoload/health/provider.vim @@ -125,6 +125,10 @@ function! s:check_clipboard() abort call health#report_warn( \ 'No clipboard tool found. Clipboard registers will not work.', \ [':help clipboard']) + elseif exists('g:clipboard') && (type({}) != type(g:clipboard) + \ || !has_key(g:clipboard, 'copy') || !has_key(g:clipboard, 'paste')) + call health#report_error( + \ 'g:clipboard exists but is malformed. It must be a dictionary with the keys documented at :help g:clipboard') else call health#report_ok('Clipboard tool found: '. clipboard_tool) endif -- cgit From 4dee942e732d41ad62b732c0a39719d9405bc928 Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Sat, 15 Jul 2017 14:51:51 -0400 Subject: provider/clipboard.vim: capture/display errors (#6684) TODO: handle errors in the `get`. systemlist() should take an options dictionary like jobstart(), which may specify a stderr handler. References #6565 --- runtime/autoload/provider/clipboard.vim | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'runtime/autoload') diff --git a/runtime/autoload/provider/clipboard.vim b/runtime/autoload/provider/clipboard.vim index a67681d28e..47f4271091 100644 --- a/runtime/autoload/provider/clipboard.vim +++ b/runtime/autoload/provider/clipboard.vim @@ -137,16 +137,24 @@ function! s:clipboard.set(lines, regtype, reg) abort let argv = split(s:copy[a:reg], " ") let selection.detach = s:cache_enabled let selection.cwd = "/" + call extend(selection, { + \ 'on_stdout': function('s:set_errhandler'), + \ 'on_stderr': function('s:set_errhandler'), + \ }) let jobid = jobstart(argv, selection) - if jobid <= 0 + if jobid > 0 + call jobsend(jobid, a:lines) + call jobclose(jobid, 'stdin') + let selection.owner = jobid + endif +endfunction + +function! s:set_errhandler(job_id, data, event) abort + if a:job_id <= 0 echohl WarningMsg - echo "clipboard: error when invoking provider" + echo 'clipboard: error when invoking provider: ' . join(a:data) echohl None - return 0 endif - call jobsend(jobid, a:lines) - call jobclose(jobid, 'stdin') - let selection.owner = jobid endfunction function! provider#clipboard#Call(method, args) abort -- cgit