diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-02-23 08:12:12 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-02-23 08:12:12 +1100 |
| commit | 9bd9fecb53c51733e4addedcc9f635891ec6c2f7 (patch) | |
| tree | 6fd5353e9431320595c8c35947827c5c65f33cdf | |
| parent | e9c18ebff69eb821a3e4352da421bc09e1e409f8 (diff) | |
| parent | a870210e77ed6eee0584824d942854e905239bcd (diff) | |
Merge remote-tracking branch 'lenormf/fix-colorscheme-recursive-directory'
| -rw-r--r-- | share/kak/kakrc | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/share/kak/kakrc b/share/kak/kakrc index f8e4415c..a5d9cec3 100644 --- a/share/kak/kakrc +++ b/share/kak/kakrc @@ -1,22 +1,29 @@ def -params 1 -docstring "colorscheme <name>: enable named colorscheme" \ - -shell-candidates %{ - for col in ${kak_runtime}/colors/*.kak ${kak_config}/colors/*.kak; do - candidate=$(basename "${col}" .kak) - case ${candidate} in - \**) ;; - *) echo ${candidate} ;; - esac - done + -shell-candidates %{ + find -L "${kak_runtime}/colors" "${kak_config}/colors" -type f -name '*\.kak' \ + | while read -r path_colorscheme; do + basename="${path_colorscheme##*/}" + printf %s\\n "${basename%.*}" + done | sort -u } \ colorscheme %{ %sh{ - if [ $# -eq 1 ]; then - if [ -f "${kak_config}/colors/$1.kak" ];then - echo "source '${kak_config}/colors/$1.kak'" + find_colorscheme() { + find -L "${1}" -type f -name "${2}\\.kak" | head -n 1 + } + + if [ $# -lt 1 ]; then + echo "echo -markup '{Error}Usage: colorscheme <scheme name>'" + else + path_colorscheme=$(find_colorscheme "${kak_config}/colors" "${1}") + if [ -z "${path_colorscheme}" ];then + path_colorscheme=$(find_colorscheme "${kak_runtime}/colors" "${1}") + fi + + if [ -z "${path_colorscheme}" ]; then + echo "echo -markup '{Error}No such colorscheme'" else - echo "source '${kak_runtime}/colors/$1.kak'" + printf 'source %%{%s}' "${path_colorscheme}" fi - else - echo "echo -color Error 'Usage: colorscheme <scheme name>'" fi }} |
