summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorFrank LENORMAND <lenormf@gmail.com>2018-02-22 13:35:39 +0300
committerFrank LENORMAND <lenormf@gmail.com>2018-02-22 15:30:18 +0300
commita870210e77ed6eee0584824d942854e905239bcd (patch)
treec4d78839698e884fe1fe5aa75fefe1678de20891 /share
parent35d68d2f82d42c2b0947f2a298c8658e6ad22df8 (diff)
kakrc: Allow `colorscheme` to search directories recursively
Diffstat (limited to 'share')
-rw-r--r--share/kak/kakrc35
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
}}