diff options
| author | Alex Leferry 2 <alexherbo2@gmail.com> | 2020-06-30 02:05:35 +0200 |
|---|---|---|
| committer | Alex Leferry 2 <alexherbo2@gmail.com> | 2020-06-30 02:10:04 +0200 |
| commit | 8aa0bfc9d7bd68d9ad77df0a3efbd060c72ea84e (patch) | |
| tree | 7a295ceb4a0aa5439b32b1f40435b6ca53740350 /bin | |
| parent | a4cefc60ac400d04e3107c1dfeaa0a672b9f3ef9 (diff) | |
kak-shell: Add support to connect to a session by its index
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/kak-shell | 38 |
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 "$@" |
