From 6f946b6bffb54e045183059be70f92dd0321376e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 29 Oct 2017 21:24:03 +0100 Subject: [PATCH 3/3] Add completions for bash and zsh --- Makefile | 6 ++++++ completion.bash | 24 ++++++++++++++++++++++++ completion.zsh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 completion.bash create mode 100644 completion.zsh diff --git a/Makefile b/Makefile index 539342a..862ab6d 100644 --- a/Makefile +++ b/Makefile @@ -17,3 +17,9 @@ ifneq ($(NO_MAN),1) $(INSTALL) -m 644 sterm.man $(DESTDIR)$(PREFIX)/share/man/man1/sterm.1 gzip -f $(DESTDIR)$(PREFIX)/share/man/man1/sterm.1 endif +ifneq ($(NO_COMP),1) + $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions/ + $(INSTALL) -m 644 completion.bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/sterm + $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/zsh/site-functions + $(INSTALL) -m 644 completion.zsh $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_sterm +endif diff --git a/completion.bash b/completion.bash new file mode 100644 index 0000000..eca6d85 --- /dev/null +++ b/completion.bash @@ -0,0 +1,24 @@ +# Bash completion file for sterm +# vim: ft=sh + +_sterm() { + local cur prev + _init_completion || return + COMPREPLY=() + #cur="${COMP_WORDS[COMP_CWORD]}" + local ops="-h --help -c -d -e -n -r -s -v" + case "$prev" in + -d|-r) + # No completion for these + ;; + -s) + local speeds="0 50 75 110 134 150 200 300 600 1200 1800 2400 4800 9600 19200 38400 57600 115200 230400" + COMPREPLY+=($(compgen -W "${speeds}" -- ${cur})) + ;; + *) + COMPREPLY+=($(compgen -W "${ops}" -- ${cur})) + ;; + esac +} + +complete -o default -F _sterm sterm diff --git a/completion.zsh b/completion.zsh new file mode 100644 index 0000000..b803ab9 --- /dev/null +++ b/completion.zsh @@ -0,0 +1,56 @@ +#compdef sterm +#autoload + +_sterm_defs() { + _arguments : \ + "--help[Output help message]" \ + "-h[Print help text]" \ + "-s[Set baudrate]" \ + "-c[Enter command mode]" \ + "-d[Make pulse on DTR]" \ + "-r[Make pulse on RTS]" \ + "-e[Ignore '~.' escape sequence]" \ + "-n[Do not switch the device to raw mode]" \ + "-v[Verbose mode]" + _path_files +} + +_sterm() { + if (( CURRENT > 2)); then + local prev=${words[(( CURRENT - 1))]} + case "${prev}" in + -d|-r) + # No completion for these + ;; + -s) + _values "Baudrate" \ + "0" \ + "50" \ + "75" \ + "110" \ + "134" \ + "150" \ + "200" \ + "300" \ + "600" \ + "1200" \ + "1800" \ + "2400" \ + "4800" \ + "9600" \ + "19200" \ + "38400" \ + "57600" \ + "115200" \ + "230400" + ;; + *) + _sterm_defs + ;; + esac + else + _sterm_defs + fi +} + +_sterm -- 2.13.6