summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorAlex Leferry 2 <alexherbo2@gmail.com>2020-06-30 02:05:35 +0200
committerAlex Leferry 2 <alexherbo2@gmail.com>2020-06-30 02:10:04 +0200
commit8aa0bfc9d7bd68d9ad77df0a3efbd060c72ea84e (patch)
tree7a295ceb4a0aa5439b32b1f40435b6ca53740350 /bin
parenta4cefc60ac400d04e3107c1dfeaa0a672b9f3ef9 (diff)
kak-shell: Add support to connect to a session by its index
Diffstat (limited to 'bin')
-rwxr-xr-xbin/kak-shell38
1 files changed, 33 insertions, 5 deletions
diff --git a/bin/kak-shell b/bin/kak-shell
index 4f96c0c..e3cfead 100755
--- a/bin/kak-shell
+++ b/bin/kak-shell
@@ -6,12 +6,18 @@ KAKOUNE_CONNECT_SCRIPT=$XDG_DATA_HOME/kak/connect/script.sh
main() {
# Interactively set the Kakoune session.
+ # Support to connect to a session by its index.
if test -z "$KAKOUNE_SESSION"; then
- printf 'Kakoune sessions:\n'
- kak -l | sort
- printf '+ create new session\n'
- printf 'Kakoune session:'
- read KAKOUNE_SESSION
+ kak_session_list=$(kak -l | sort)
+ echo 'Kakoune sessions:'
+ echo "$kak_session_list" | number_lines
+ echo '+ create new session'
+ echo_n 'Kakoune session:'
+ read kak_session
+ if is_number "$kak_session"; then
+ kak_session=$(echo "$kak_session_list" | get_line "$kak_session")
+ fi
+ KAKOUNE_SESSION=$kak_session
fi
# Exit if the Kakoune session is empty.
if test -z "$KAKOUNE_SESSION"; then
@@ -47,4 +53,26 @@ attach() {
rm -f "$KAKOUNE_CONNECT_SCRIPT~"
}
+# Utilities
+
+echo() {
+ printf '%s\n' "$*"
+}
+
+echo_n() {
+ printf '%s' "$*"
+}
+
+is_number() {
+ test "$1" -eq "$1" 2> /dev/null
+}
+
+number_lines() {
+ awk '{ print NR, $0 }'
+}
+
+get_line() {
+ sed "${1}q;d"
+}
+
main "$@"