summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-01-19 10:05:08 +1100
committerMaxime Coste <mawww@kakoune.org>2018-01-19 10:05:08 +1100
commite7cbf38af74b7841baf350ddcc85699d2295aeb7 (patch)
tree6dabfe630a523b9fef6bfdb96743aa2ccfdc19f9
parent55621fb4cc9c01972317182dd6a8ed3ced0e1f9e (diff)
Introduce a $kak_config env var containing the Kakoune user config dir
Makes it easier for users who want to locate their kakrc file, and does not require to go through shell expansion to get it as "${XDG_CONFIG_DIR:-${HOME}/.config}/kak" Fixes #1740
-rw-r--r--share/kak/kakrc18
-rw-r--r--src/main.cc12
2 files changed, 19 insertions, 11 deletions
diff --git a/share/kak/kakrc b/share/kak/kakrc
index 7a9f1692..f8e4415c 100644
--- a/share/kak/kakrc
+++ b/share/kak/kakrc
@@ -1,7 +1,6 @@
def -params 1 -docstring "colorscheme <name>: enable named colorscheme" \
-shell-candidates %{
- localconfdir=${XDG_CONFIG_HOME:-${HOME}/.config}/kak
- for col in ${kak_runtime}/colors/*.kak ${localconfdir}/colors/*.kak; do
+ for col in ${kak_runtime}/colors/*.kak ${kak_config}/colors/*.kak; do
candidate=$(basename "${col}" .kak)
case ${candidate} in
\**) ;;
@@ -10,10 +9,9 @@ def -params 1 -docstring "colorscheme <name>: enable named colorscheme" \
done
} \
colorscheme %{ %sh{
- localconfdir=${XDG_CONFIG_HOME:-${HOME}/.config}/kak
if [ $# -eq 1 ]; then
- if [ -f "${localconfdir}/colors/$1.kak" ];then
- echo "source '${localconfdir}/colors/$1.kak'"
+ if [ -f "${kak_config}/colors/$1.kak" ];then
+ echo "source '${kak_config}/colors/$1.kak'"
else
echo "source '${kak_runtime}/colors/$1.kak'"
fi
@@ -28,12 +26,10 @@ def -params 1 -docstring "colorscheme <name>: enable named colorscheme" \
-exec printf 'try %%{ source "%s" } catch %%{ echo -debug Autoload: could not load "%s" }\n' '{}' '{}' \;
}
- localconfdir=${XDG_CONFIG_HOME:-${HOME}/.config}/kak
-
echo "colorscheme default"
- if [ -d "${localconfdir}/autoload" ]; then
- autoload_directory ${localconfdir}/autoload
+ if [ -d "${kak_config}/autoload" ]; then
+ autoload_directory ${kak_config}/autoload
elif [ -d "${kak_runtime}/autoload" ]; then
autoload_directory ${kak_runtime}/autoload
fi
@@ -42,7 +38,7 @@ def -params 1 -docstring "colorscheme <name>: enable named colorscheme" \
echo "source '${kak_runtime}/kakrc.local'"
fi
- if [ -f "${localconfdir}/kakrc" ]; then
- echo "source '${localconfdir}/kakrc'"
+ if [ -f "${kak_config}/kakrc" ]; then
+ echo "source '${kak_config}/kakrc'"
fi
}
diff --git a/src/main.cc b/src/main.cc
index b9f995f6..aff7f9f2 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -68,6 +68,14 @@ String runtime_directory()
return "/usr/share/kak";
}
+String config_directory()
+{
+ StringView config_home = getenv("XDG_CONFIG_HOME");
+ if (config_home.empty())
+ return format("{}/.config/kak", getenv("HOME"));
+ return format("{}/kak", config_home);
+}
+
void register_env_vars()
{
static const struct {
@@ -113,6 +121,10 @@ void register_env_vars()
[](StringView name, const Context& context)
{ return runtime_directory(); }
}, {
+ "config", false,
+ [](StringView name, const Context& context)
+ { return config_directory(); }
+ }, {
"opt_", true,
[](StringView name, const Context& context)
{ return context.options()[name.substr(4_byte)].get_as_string(); }