summaryrefslogtreecommitdiff
path: root/rc
diff options
context:
space:
mode:
authorAlex Leferry 2 <alexherbo2@gmail.com>2020-08-26 03:43:05 +0200
committerAlex Leferry 2 <alexherbo2@gmail.com>2020-08-26 03:44:11 +0200
commitb7e666dcb3f490b3ea9e8dd14468e3c32905a2c8 (patch)
treedc07d9042aa6a6911f46d01783618f17c216fd0c /rc
parentbcb2dfa4282a82f29774f95b8e56ebaa4173567e (diff)
Add a connect_paths option
Diffstat (limited to 'rc')
-rw-r--r--rc/connect.kak45
-rw-r--r--rc/env/overrides.env6
2 files changed, 40 insertions, 11 deletions
diff --git a/rc/connect.kak b/rc/connect.kak
index 0f73e21..3148bd9 100644
--- a/rc/connect.kak
+++ b/rc/connect.kak
@@ -8,14 +8,43 @@ provide-module connect %{
# Options
declare-option str connect_environment
+ # Connect paths
+ declare-option str-list connect_paths
+
+ # Internal variable to mirror the connect paths as PATH.
+ declare-option -hidden str connect_environment_paths
+
+ # Watch the connect_paths option
+ hook -group connect-watch-connect-paths global WinSetOption 'connect_paths=.*' %{
+ evaluate-commands %sh{
+ # Prelude
+ . "$kak_opt_prelude_path"
+
+ eval "set -- $kak_quoted_opt_connect_paths"
+
+ # Iterate paths
+ paths=''
+ for path do
+ paths=$paths:$path
+ done
+
+ # Update the option
+ kak_escape set-option global connect_environment_paths "$paths"
+ }
+ }
+
+ # Initialize the option with the user config paths
+ declare-option str-list connect_paths "%val{config}/connect/aliases" "%val{config}/connect/commands"
+
# Commands
define-command connect-terminal -params .. -shell-completion -docstring 'Open a new terminal' %{
terminal sh -c %{
kak_opt_prelude_path=$1
kak_opt_connect_path=$2
kak_opt_connect_environment=$3
- kak_session=$4
- kak_client=$5
+ kak_opt_connect_environment_paths=$4
+ kak_session=$5
+ kak_client=$6
. "$kak_opt_connect_path/env/default.env"
. "$kak_opt_connect_path/env/overrides.env"
@@ -24,13 +53,14 @@ provide-module connect %{
eval "$kak_opt_connect_environment"
- shift 5
+ shift 6
[ "$1" ] && "$@" || "$SHELL"
} -- \
%opt{prelude_path} \
%opt{connect_path} \
%opt{connect_environment} \
+ %opt{connect_environment_paths} \
%val{session} \
%val{client} \
%arg{@}
@@ -41,6 +71,7 @@ provide-module connect %{
# kak_opt_prelude_path
# kak_opt_connect_path
# kak_opt_connect_environment
+ # kak_opt_connect_environment_paths
# kak_session
# kak_client
@@ -62,8 +93,9 @@ provide-module connect %{
kak_opt_prelude_path=$1
kak_opt_connect_path=$2
kak_opt_connect_environment=$3
- kak_session=$4
- kak_server_working_directory=$5
+ kak_opt_connect_environment_paths=$4
+ kak_session=$5
+ kak_server_working_directory=$6
. "$kak_opt_connect_path/env/default.env"
. "$kak_opt_connect_path/env/overrides.env"
@@ -72,7 +104,7 @@ provide-module connect %{
eval "$kak_opt_connect_environment"
- shift 5
+ shift 6
cd "$kak_server_working_directory"
@@ -81,6 +113,7 @@ provide-module connect %{
%opt{prelude_path} \
%opt{connect_path} \
%opt{connect_environment} \
+ %opt{connect_environment_paths} \
%val{session} \
%sh{pwd} \
%arg{@}
diff --git a/rc/env/overrides.env b/rc/env/overrides.env
index 1404d02..eef38e5 100644
--- a/rc/env/overrides.env
+++ b/rc/env/overrides.env
@@ -1,10 +1,6 @@
# Connect paths
paths=$kak_opt_connect_path/paths
-PATH=$paths/aliases:$paths/commands:$PATH:$paths/tools
-
-# User config paths
-paths=$XDG_CONFIG_HOME/kak/connect
-PATH=$paths/aliases:$paths/commands:$PATH
+PATH=$kak_opt_connect_environment_paths:$paths/aliases:$paths/commands:$PATH:$paths/tools
VISUAL=:edit
EDITOR=:edit