diff options
Diffstat (limited to 'runtime/autoload')
| -rw-r--r-- | runtime/autoload/health.vim | 3 | ||||
| -rw-r--r-- | runtime/autoload/health/nvim.vim | 65 |
2 files changed, 57 insertions, 11 deletions
diff --git a/runtime/autoload/health.vim b/runtime/autoload/health.vim index 336adc65e5..cbfd7c76a1 100644 --- a/runtime/autoload/health.vim +++ b/runtime/autoload/health.vim @@ -26,6 +26,7 @@ function! health#check(plugin_names) abort \ : s:to_fn_names(a:plugin_names) tabnew + setlocal wrap breakindent setlocal filetype=markdown bufhidden=wipe call s:enhance_syntax() @@ -35,7 +36,7 @@ function! health#check(plugin_names) abort redraw|echo 'Running healthchecks...' for c in healthchecks let output = '' - call append('$', split(printf("\n%s\n%s", c, repeat('=',80)), "\n")) + call append('$', split(printf("\n%s\n%s", c, repeat('=',72)), "\n")) try let output = "\n\n".execute('call '.c.'()') catch diff --git a/runtime/autoload/health/nvim.vim b/runtime/autoload/health/nvim.vim index 60e56034e1..ea87e4b3ac 100644 --- a/runtime/autoload/health/nvim.vim +++ b/runtime/autoload/health/nvim.vim @@ -1,5 +1,20 @@ +let s:suggest_faq = 'See https://github.com/neovim/neovim/wiki/FAQ' + +function! s:check_config() abort + call health#report_start('Configuration') + let sensible_pi = globpath(&runtimepath, '**/sensible.vim', 1, 1) + if empty(sensible_pi) + call health#report_ok('no issues found') + else + call health#report_info("found sensible.vim plugin:\n".join(sensible_pi, "\n")) + call health#report_error("sensible.vim plugin is not needed; Nvim has the same defaults built-in." + \ ." Also, sensible.vim sets 'ttimeoutlen' to a sub-optimal value.", + \ ["Remove sensible.vim plugin, or wrap it in a `if !has('nvim')` check."]) + endif +endfunction + " Load the remote plugin manifest file and check for unregistered plugins -function! s:check_manifest() abort +function! s:check_rplugin_manifest() abort call health#report_start('Remote Plugins') let existing_rplugins = {} @@ -57,26 +72,54 @@ function! s:check_manifest() abort endif endfunction +function! s:check_performance() abort + call health#report_start('Performance') + + " check buildtype + let buildtype = matchstr(execute('version'), '\v\cbuild type:?\s*[^\n\r\t ]+') + if empty(buildtype) + call health#report_error('failed to get build type from :version') + elseif buildtype =~# '\v(MinSizeRel|Release|RelWithDebInfo)' + call health#report_ok(buildtype) + else + call health#report_info(buildtype) + call health#report_warn( + \ "Non-optimized build-type. Nvim will be slower.", + \ ["Install a different Nvim package, or rebuild with `CMAKE_BUILD_TYPE=RelWithDebInfo`.", + \ s:suggest_faq]) + endif +endfunction + function! s:check_tmux() abort if empty($TMUX) || !executable('tmux') return endif - call health#report_start('tmux configuration') - let suggestions = ["Set escape-time in ~/.tmux.conf: set-option -sg escape-time 10", - \ 'See https://github.com/neovim/neovim/wiki/FAQ'] + call health#report_start('tmux') + + " check escape-time + let suggestions = ["Set escape-time in ~/.tmux.conf:\nset-option -sg escape-time 10", + \ s:suggest_faq] let cmd = 'tmux show-option -qvgs escape-time' let out = system(cmd) let tmux_esc_time = substitute(out, '\v(\s|\r|\n)', '', 'g') - if v:shell_error call health#report_error('command failed: '.cmd."\n".out) elseif empty(tmux_esc_time) call health#report_error('escape-time is not set', suggestions) - elseif tmux_esc_time > 500 + elseif tmux_esc_time > 300 call health#report_error( \ 'escape-time ('.tmux_esc_time.') is higher than 300ms', suggestions) else - call health#report_ok('escape-time = '.tmux_esc_time.'ms') + call health#report_ok('escape-time: '.tmux_esc_time.'ms') + endif + + " check $TERM + call health#report_info('$TERM: '.$TERM) + if $TERM !~# '\v(tmux-256color|screen-256color)' + call health#report_error( + \ '$TERM should be "screen-256color" or "tmux-256color" when running tmux.', + \ ["Set default-terminal in ~/.tmux.conf:\nset-option -g default-terminal \"screen-256color\"", + \ s:suggest_faq]) endif endfunction @@ -90,7 +133,7 @@ function! s:check_terminfo() abort \ .'infocmp $TERM | sed ''s/kbs=^[hH]/kbs=\\177/'' > $TERM.ti' \ ."\n" \ .'tic $TERM.ti', - \ 'See https://github.com/neovim/neovim/wiki/FAQ'] + \ s:suggest_faq] let cmd = 'infocmp -L' let out = system(cmd) let kbs_entry = matchstr(out, 'key_backspace=\S*') @@ -107,7 +150,9 @@ function! s:check_terminfo() abort endfunction function! health#nvim#check() abort - call s:check_manifest() - call s:check_tmux() + call s:check_config() + call s:check_performance() + call s:check_rplugin_manifest() call s:check_terminfo() + call s:check_tmux() endfunction |