Add support for command aliases

* `session` and `window` commands are now know as `load-session` and
  `load-window` respectively, with aliases for their former names.
* Add short aliases for various commands.
* `help` and `completions` commands have been expanded with support for
  aliases.
* `help` command has been expanded upon with brief docs for a few more
  commands.
This commit is contained in:
2012-04-22 16:43:18 +01:00
parent 939583cabd
commit d35a214e99
10 changed files with 103 additions and 25 deletions

View File

@@ -25,7 +25,16 @@ case "$command" in
* )
command_path="$(command -v "tmuxifier-$command" || true)"
# Attempt to resolve aliases
if [ -z $command_path ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
command_path="$(command -v "tmuxifier-$resolved" || true)"
fi
fi
if [ -z "$command_path" ]; then
echo "tmuxifier: no such command '$command'" >&2
exit 1
fi

33
libexec/tmuxifier-alias Executable file
View File

@@ -0,0 +1,33 @@
#! /usr/bin/env bash
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
case "$1" in
"window" | "win" | "w" )
echo "load-window"
;;
"session" | "ses" | "s" )
echo "load-session"
;;
"new-ses" | "ns" )
echo "new-session"
;;
"new-win" | "nw" )
echo "new-window"
;;
"edit-ses" | "es" )
echo "edit-session"
;;
"edit-win" | "ew" )
echo "edit-window"
;;
"ls" )
echo "list"
;;
"list-ses" | "lss" )
echo "list-sessions"
;;
"list-win" | "lsw" )
echo "list-windows"
;;
esac

View File

@@ -2,14 +2,27 @@
set -e
[ -n "$TMUXIFIER_DEBUG" ] && set -x
has-completions() {
grep -i "^# provide tmuxifier completions" "$1" >/dev/null
}
command="$1"
if [ -z "$command" ]; then
echo "Usage: tmuxifier completions COMMAND [arg1 arg2...]" >&2
exit 1
fi
command_path="$(command -v "tmuxifier-$command")"
if grep -i "^# provide tmuxifier completions" "$command_path" >/dev/null; then
command_path="$(command -v "tmuxifier-$command" || true)"
# Attempt to resolve aliases
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
command_path="$(command -v "tmuxifier-$resolved" || true)"
fi
fi
if [ ! -z "$command_path" ] && has-completions "$command_path"; then
shift
exec "$command_path" --complete "$@"
fi

View File

@@ -11,7 +11,7 @@ if [ "$1" == "--complete" ]; then
fi
if [ -z "$1" ]; then
echo "usage: tmuxifier edit-session <layout_name>" >&2
echo "$(tmuxifier-help edit-session)" >&2
exit 1
fi

View File

@@ -11,7 +11,7 @@ if [ "$1" == "--complete" ]; then
fi
if [ -z "$1" ]; then
echo "usage: tmuxifier edit-window <layout_name>" >&2
echo "$(tmuxifier-help edit-window)" >&2
exit 1
fi

View File

@@ -8,45 +8,68 @@ if [ "$1" == "--complete" ]; then
exit
fi
case $1 in
command="$1"
command_path="$(command -v "tmuxifier-$command" || true)"
# Attempt to resolve aliases
if [ -z "$command_path" ]; then
resolved="$(tmuxifier-alias "$command")"
if [ ! -z "$resolved" ]; then
echo "'$command' is an alias for the '$resolved' command"
command="$resolved"
command_path="$(command -v "tmuxifier-$command" || true)"
fi
fi
case "$command" in
"" )
echo "usage: tmuxifier <command> [<args>]
Some useful tmuxifier commands are:
session Load the specified session layout.
window Load the specified window layout into current session.
list List all session and window layouts.
list-sessions List session layouts.
list-windows List window layouts.
new-session Create new session layout and open it with \`\$EDITOR\`.
new-window Create new window layout and open it with \`\$EDITOR\`.
edit-session Edit specified session layout with \`\$EDITOR\`.
edit-window Edit specified window layout with \`\$EDITOR\`.
commands List all tmuxifier commands.
<command> <alias>
load-session s Load the specified session layout.
load-window w Load the specified window layout into current session.
list ls List all session and window layouts.
list-sessions lss List session layouts.
list-windows lsw List window layouts.
new-session ns Create new session layout and open it with \$EDITOR.
new-window nw Create new window layout and open it with \$EDITOR.
edit-session es Edit specified session layout with \$EDITOR.
edit-window ew Edit specified window layout with \$EDITOR.
commands List all tmuxifier commands.
See 'tmuxifier help <command>' for information on a specific command."
;;
"session" )
echo "usage: tmuxifier session <layout_name>
"load-session" )
echo "usage: tmuxifier load-session <layout_name>
Create a session using the session layout, unless the session already exists
in which case, we simply switch to the existing one."
;;
"window" )
echo "usage: tmuxifier window <layout_name>
"load-window" )
echo "usage: tmuxifier load-window <layout_name>
Create a new window using the specified window layout in the current session."
;;
"edit-session" )
echo "usage: tmuxifier edit-session <layout_name>
Open specified session layout for editing in \$EDITOR."
;;
"edit-window" )
echo "usage: tmuxifier edit-window <layout_name>
Open specified window layout for editing in \$EDITOR."
;;
* )
command_path="$(command -v "tmuxifier-$1" || true)"
if [ -n "$command_path" ]; then
echo "Sorry, the '$1' command isn't documented yet."
if [ ! -z "$command_path" ]; then
echo "Sorry, the '$command' command isn't documented yet."
echo
echo "You can view the command's source here:"
echo "$command_path"
echo
else
echo "tmuxifier: no such command \`$1'"
echo "tmuxifier: no such command '$command'"
fi
;;
esac

View File

@@ -20,7 +20,7 @@ if [ -f "$layout_file" ]; then
echo "session layout '$layout_name' already exists." >&2
echo "" >&2
echo "You can edit it with:" >&2
echo " tmuxifier edit-session $layout_name" >&2
echo " tmuxifier edit-session \"$layout_name\"" >&2
exit 1
fi

View File

@@ -20,7 +20,7 @@ if [ -f "$layout_file" ]; then
echo "window layout '$layout_name' already exists." >&2
echo "" >&2
echo "You can edit it with:" >&2
echo " tmuxifier edit-window $layout_name" >&2
echo " tmuxifier edit-window \"$layout_name\"" >&2
exit 1
fi