Add a simple bash completion helper
authorRicardo Mones <ricardo@mones.org>
Wed, 3 May 2017 11:03:57 +0000 (13:03 +0200)
committerRicardo Mones <ricardo@mones.org>
Wed, 3 May 2017 11:03:57 +0000 (13:03 +0200)
tools/bash_completion/README [new file with mode: 0644]
tools/bash_completion/claws-mail [new file with mode: 0644]

diff --git a/tools/bash_completion/README b/tools/bash_completion/README
new file mode 100644 (file)
index 0000000..4693ed8
--- /dev/null
@@ -0,0 +1,42 @@
+Bash Programmable Completion for Claws Mail
+-------------------------------------------
+
+This directory contains a script which provides argument completion
+when using Claws Mail from the command line under the bash shell.
+This is usually triggered by pressing the tab key (↹).
+
+See bash manual (https://www.gnu.org/software/bash/manual/) for more
+details about programmable completion.
+
+Usage
+-----
+
+Examples below assume current directory is the toplevel directory of
+either an extracted tarball or a git clone.
+
+Single user
+----------
+
+For a single user just make a directory (e.g. '.bash_completion.d')
+on your $HOME directory and copy the completion script there:
+
+$ mkdir ~/.bash_completion.d
+$ cp tools/bash_completion/claws-mail ~/.bash_completion.d/
+
+Then, source the script to enable it:
+
+$ . ~/.bash_completion.d/claws-mail
+
+To enable it permanently just add the command to the user's bashrc:
+
+$ echo '. ~/.bash_completion.d/claws-mail' >> $HOME/.bashrc
+
+All users
+---------
+
+For system wide installation just copy the file to the system directory,
+which is usually located in /etc (you need to become root for that):
+
+$ sudo cp tools/bash_completion/claws-mail /etc/bash_completion.d/
+
+After login in again all users should be able to use completion.
diff --git a/tools/bash_completion/claws-mail b/tools/bash_completion/claws-mail
new file mode 100644 (file)
index 0000000..dcbcc89
--- /dev/null
@@ -0,0 +1,30 @@
+# claws-mail(1) completion
+_claws-mail()
+{
+       local cur prev words cword
+       _init_completion || return
+
+       case $prev in
+       --help|-h|--version|-v|--version-full|-V)
+               return
+               ;;
+       --alternate-config-dir)
+               COMPREPLY=( $( find . -maxdepth 2 -name clawsrc | sed 's,/clawsrc,,' ) )
+               return
+               ;;
+       --select|--status|--status-full)
+               _filedir -d
+               return
+               ;;
+       --compose-from-file|--attach)
+               _filedir
+               return
+               ;;
+       esac
+
+       if [[ $cur == -* ]]; then
+               COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
+               return
+       fi
+} &&
+complete -F _claws-mail claws-mail