summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-02-23 08:12:12 +1100
committerMaxime Coste <mawww@kakoune.org>2018-02-23 08:12:12 +1100
commit9bd9fecb53c51733e4addedcc9f635891ec6c2f7 (patch)
tree6fd5353e9431320595c8c35947827c5c65f33cdf
parente9c18ebff69eb821a3e4352da421bc09e1e409f8 (diff)
parenta870210e77ed6eee0584824d942854e905239bcd (diff)
Merge remote-tracking branch 'lenormf/fix-colorscheme-recursive-directory'
-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
}}