aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-10-25 20:42:04 +0200
committerGitHub <noreply@github.com>2016-10-25 20:42:04 +0200
commite828a5a76b097885ebd40d636e9ea95251b2995d (patch)
treef05ea387861273f79bc8ddec6c9892a503e64f49
parent714ec09c6d83295ef70becbbaf1c620761cbdac6 (diff)
parente8ddbbdf07838a99545181a5f63d460f4ea7e8a4 (diff)
downloadrneovim-e828a5a76b097885ebd40d636e9ea95251b2995d.tar.gz
rneovim-e828a5a76b097885ebd40d636e9ea95251b2995d.tar.bz2
rneovim-e828a5a76b097885ebd40d636e9ea95251b2995d.zip
Merge #5530 from justinmk/checkhealth
CheckHealth: more checks. Also hack around an infinite loop.
-rw-r--r--runtime/autoload/health.vim3
-rw-r--r--runtime/autoload/health/nvim.vim47
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/version.c4
-rw-r--r--test/functional/plugin/health_spec.lua8
5 files changed, 50 insertions, 14 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..8c4034eab6 100644
--- a/runtime/autoload/health/nvim.vim
+++ b/runtime/autoload/health/nvim.vim
@@ -1,5 +1,7 @@
+let s:suggest_faq = 'See https://github.com/neovim/neovim/wiki/FAQ'
+
" 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,17 +59,36 @@ 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)
@@ -76,7 +97,16 @@ function! s:check_tmux() abort
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 +120,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 +137,8 @@ function! s:check_terminfo() abort
endfunction
function! health#nvim#check() abort
- call s:check_manifest()
+ call s:check_rplugin_manifest()
+ call s:check_performance()
call s:check_tmux()
call s:check_terminfo()
endfunction
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 9a790c5b2a..512555eac1 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10669,7 +10669,7 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} else {
n = has_vim_patch(atoi(name + 5));
}
- } else if (STRNICMP(name, "nvim", 4) == 0 && name[4] == '-') {
+ } else if (STRNICMP(name, "nvim-", 5) == 0) {
// Expect "nvim-x.y.z"
n = has_nvim_version(name + 5);
} else if (STRICMP(name, "vim_starting") == 0) {
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 6b9c8bf6b1..54f03cd3dd 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -2570,7 +2570,11 @@ static void list_features(void)
}
} else {
while (msg_col % width) {
+ int old_msg_col = msg_col;
msg_putchar(' ');
+ if (old_msg_col == msg_col) {
+ break; // XXX: Avoid infinite loop.
+ }
}
}
} else {
diff --git a/test/functional/plugin/health_spec.lua b/test/functional/plugin/health_spec.lua
index 4bcaab009f..5b5e5f9ace 100644
--- a/test/functional/plugin/health_spec.lua
+++ b/test/functional/plugin/health_spec.lua
@@ -47,7 +47,7 @@ describe('health.vim', function()
helpers.expect([[
health#success1#check
- ================================================================================
+ ========================================================================
## report 1
- SUCCESS: everything is fine
@@ -55,7 +55,7 @@ describe('health.vim', function()
- SUCCESS: nothing to see here
health#success2#check
- ================================================================================
+ ========================================================================
## another 1
- SUCCESS: ok
]])
@@ -66,7 +66,7 @@ describe('health.vim', function()
helpers.expect([[
health#broken#check
- ================================================================================
+ ========================================================================
- ERROR: Failed to run healthcheck for "broken" plugin. Exception:
caused an error
]])
@@ -77,7 +77,7 @@ describe('health.vim', function()
helpers.expect([[
health#non_existent_healthcheck#check
- ================================================================================
+ ========================================================================
- ERROR: No healthcheck found for "non_existent_healthcheck" plugin.
]])
end)