diff options
| author | Frank LENORMAND <lenormf@gmail.com> | 2018-02-22 13:35:39 +0300 |
|---|---|---|
| committer | Frank LENORMAND <lenormf@gmail.com> | 2018-02-22 15:30:18 +0300 |
| commit | a870210e77ed6eee0584824d942854e905239bcd (patch) | |
| tree | c4d78839698e884fe1fe5aa75fefe1678de20891 /share | |
| parent | 35d68d2f82d42c2b0947f2a298c8658e6ad22df8 (diff) | |
kakrc: Allow `colorscheme` to search directories recursively
Diffstat (limited to 'share')
| -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 }} |
