aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Łuczyński <doubleloop@users.noreply.github.com>2021-10-09 02:36:35 +0200
committerGitHub <noreply@github.com>2021-10-08 17:36:35 -0700
commita36c6e5df959867ff4041405f4098b7833281517 (patch)
treeb78070a442a9f830a958b90cff5c74f84558f267
parentf620008e59de05dede08f9c2907aeef79a336a53 (diff)
downloadrneovim-a36c6e5df959867ff4041405f4098b7833281517.tar.gz
rneovim-a36c6e5df959867ff4041405f4098b7833281517.tar.bz2
rneovim-a36c6e5df959867ff4041405f4098b7833281517.zip
fix(checkhealth): duplicate checks if module name has "-" #15935
Problem: Some plugins have structure `lua/nvim-someplugin/..` Since `-` is not allowed in vim function names, healthcheck names in lua and in vim can not have the same name (typically vim will use `_` instead of `-`). Solution: Normalize the names before checking for duplicates.
-rw-r--r--runtime/autoload/health.vim23
1 files changed, 11 insertions, 12 deletions
diff --git a/runtime/autoload/health.vim b/runtime/autoload/health.vim
index 579db62cb8..73c1459f86 100644
--- a/runtime/autoload/health.vim
+++ b/runtime/autoload/health.vim
@@ -181,21 +181,20 @@ function! s:get_healthcheck(plugin_names) abort
let health_list = s:get_healthcheck_list(a:plugin_names)
let healthchecks = {}
for c in health_list
- let name = c[0]
- let existent = get(healthchecks, name, [])
- " If an entry with the same name exists and is from vim, prefer Lua so
- " overwrite it.
- if existent != []
- if existent[1] == "v"
- let healthchecks[name] = c[1:]
- else
- continue
- endif
+ let normalized_name = substitute(c[0], '-', '_', 'g')
+ let existent = get(healthchecks, normalized_name, [])
+ " Prefer Lua over vim entries
+ if existent != [] && existent[2] == 'l'
+ continue
else
- let healthchecks[name] = c[1:]
+ let healthchecks[normalized_name] = c
endif
endfor
- return healthchecks
+ let output = {}
+ for v in values(healthchecks)
+ let output[v[0]] = v[1:]
+ endfor
+ return output
endfunction
" Returns list of lists [ [{name}, {func}, {type}] ] representing healthchecks