summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Leferry 2 <alexherbo2@gmail.com>2019-03-17 12:50:57 +0100
committerAlex Leferry 2 <alexherbo2@gmail.com>2019-03-17 15:28:20 +0100
commitf2d2201d808c1c263aa9b4d4fefd75afda383f08 (patch)
tree95ee4056da767a1ce18ccd813034e12dca7c2526
parent0db8dff4e403d007edebd82dc7b21190a862401c (diff)
Add [e]dit and [b]uffer commands
-rw-r--r--README.md6
l---------rc/aliases/b1
l---------rc/aliases/e1
-rwxr-xr-xrc/commands/buffer20
-rwxr-xr-xrc/commands/edit (renamed from rc/connect.sh)2
-rw-r--r--rc/connect.kak21
6 files changed, 31 insertions, 20 deletions
diff --git a/README.md b/README.md
index 51006cf..e9cfa2a 100644
--- a/README.md
+++ b/README.md
@@ -22,12 +22,12 @@ Create a new terminal with `:connect` and edit a file with say, a file explorer.
The file will be opened in the client from where `:connect` was executed by using `EDITOR`.
-You can also use the `connect` shell command available in `PATH`.
+You can also use the `[e]dit` and `[b]uffer` shell commands available in `PATH`.
## Commands
-- `connect-shell [program] [arguments]`: Run a shell with `connect` and `EDITOR` connected to the current client
-- `connect-terminal [program] [arguments]`: Create a new terminal with `connect` and `EDITOR` connected to the current client
+- `connect-shell [program] [arguments]`: Run a shell with `[e]dit`, `[b]uffer` and `EDITOR` connected to the current client
+- `connect-terminal [program] [arguments]`: Create a new terminal with `[e]dit`, `[b]uffer` and `EDITOR` connected to the current client
## Aliases
diff --git a/rc/aliases/b b/rc/aliases/b
new file mode 120000
index 0000000..daf79f2
--- /dev/null
+++ b/rc/aliases/b
@@ -0,0 +1 @@
+../commands/buffer \ No newline at end of file
diff --git a/rc/aliases/e b/rc/aliases/e
new file mode 120000
index 0000000..1cb50b6
--- /dev/null
+++ b/rc/aliases/e
@@ -0,0 +1 @@
+../commands/edit \ No newline at end of file
diff --git a/rc/commands/buffer b/rc/commands/buffer
new file mode 100755
index 0000000..58c06dd
--- /dev/null
+++ b/rc/commands/buffer
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+main() {
+ [ $# = 0 ] && list || edit "$@"
+}
+
+list() {
+ eval "set -- $KAKOUNE_BUFFERS"
+ printf '%s\n' "$@"
+}
+
+edit() {
+ commands=
+ for buffer do
+ commands="buffer $buffer; $commands"
+ done
+ printf 'evaluate-commands -client "%s" "%s"' "$KAKOUNE_CLIENT" "$commands" | kak -p "$KAKOUNE_SESSION"
+}
+
+main "$@"
diff --git a/rc/connect.sh b/rc/commands/edit
index 3ef0e9c..593c90b 100755
--- a/rc/connect.sh
+++ b/rc/commands/edit
@@ -38,7 +38,7 @@ if test "$KAKOUNE_SESSION" -a "$KAKOUNE_CLIENT"; then
;;
esac
fi
- for file in "$@"; do
+ for file do
commands="edit $(realpath "$file"); $commands"
done
printf 'evaluate-commands -client "%s" "%s"' "$KAKOUNE_CLIENT" "$commands" | kak -p "$KAKOUNE_SESSION"
diff --git a/rc/connect.kak b/rc/connect.kak
index 56af067..6904d2c 100644
--- a/rc/connect.kak
+++ b/rc/connect.kak
@@ -1,20 +1,11 @@
declare-option -docstring 'Shell program to be used as default entry-point' str connect_shell %sh(echo ${SHELL:-sh})
-declare-option -hidden str connect_editor %sh(printf '%s/connect.sh' "${kak_source%/*}")
-declare-option -hidden str connect_cache %sh(printf '%s/kak/connect' "${XDG_CACHE_HOME:-~/.cache}")
+declare-option -hidden str connect_source %sh(printf '%s' "${kak_source%/*}")
-define-command -hidden connect-configure %{
- nop %sh{
- bin=$kak_opt_connect_cache/bin
- mkdir -p "$bin"
- cp "$kak_opt_connect_editor" "$bin/connect"
- }
-}
-
-define-command connect-shell -params 1.. -shell-completion -docstring 'Run a shell with connect and EDITOR connected to the current client' %{
- nop %sh(PATH=$kak_opt_connect_cache/bin:$PATH EDITOR=connect KAKOUNE_SESSION=$kak_session KAKOUNE_CLIENT=$kak_client $@)
+define-command connect-shell -params 1.. -shell-completion -docstring 'Run a shell with [e]dit, [b]uffer and EDITOR connected to the current client' %{
+ nop %sh(PATH=$kak_opt_connect_source/commands:$kak_opt_connect_source/aliases:$PATH EDITOR=edit KAKOUNE_SESSION=$kak_session KAKOUNE_CLIENT=$kak_client KAKOUNE_BUFFERS=$kak_buflist $@)
}
-define-command connect-terminal -params .. -shell-completion -docstring 'Create a new terminal with connect and EDITOR connected to the current client' %{
+define-command connect-terminal -params .. -shell-completion -docstring 'Create a new terminal with [e]dit, [b]uffer and EDITOR connected to the current client' %{
evaluate-commands %sh{
if test $# = 0; then
printf 'connect-terminal- %%opt(connect_shell)'
@@ -25,9 +16,7 @@ define-command connect-terminal -params .. -shell-completion -docstring 'Create
}
define-command -hidden connect-terminal- -params .. %{
- terminal sh -c "PATH=%opt(connect_cache)/bin:$PATH EDITOR=connect KAKOUNE_SESSION=%val(session) KAKOUNE_CLIENT=%val(client) %arg(@)"
+ terminal sh -c "PATH=%opt(connect_source)/commands:%opt(connect_source)/aliases:$PATH EDITOR=edit KAKOUNE_SESSION=%val(session) KAKOUNE_CLIENT=%val(client) KAKOUNE_BUFFERS=""%val(buflist)"" %arg(@)"
}
alias global connect connect-terminal
-
-connect-configure