Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH 4/4] Improve module parameter completion



First, do not embedd the = in the parameter by define it a
parameter‐value separator; -S =.

Second, look for already given parameters in all words; -w.

Third, use the curcontext variable; -C.

Forth, distinct between boolean and non‐boolean parameters, i.e. do not
append a = to the end. And include the type of the parameter in the help
message. This information is only given in the full output of modinfo,
not in the narrowed output with --field.
---
 Completion/Linux/Command/_modutils |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/Completion/Linux/Command/_modutils b/Completion/Linux/Command/_modutils
index faab852..eefb11f 100644
--- a/Completion/Linux/Command/_modutils
+++ b/Completion/Linux/Command/_modutils
@@ -95,10 +95,17 @@ case "$state" in
     if compset -P '*='; then
       _message -e value 'parameter value'
     else
-      typeset -A val_args
+      local params
+      params=( ${${(M)${(f)"$(_call_program module_parameter modinfo "$words[2]" 2>/dev/null)"}:#parm:*}##parm:[[:space:]]##} )
+      if [[ $#params -eq 0 ]]; then
+        _message -e parameter "This modules doesn't have parameters"
+      else
+        typeset -A val_args
 
-      _values 'module parameter' \
-        ${(f)^"$(_call_program module_parameter modinfo -F parm "$words[2]" 2>/dev/null)"//:/\=[}\] && ret=0
+        _values -S = -C -w 'module parameter' \
+          ${${${(M)params:#*(:bool|\(bool\))}/:/[}/(bool| \(bool\))/]} \
+          ${^${params:#*(:bool|\(bool\))}/:/[}"]:auto added argument: " && ret=0
+      fi
     fi
   ;;
 esac
-- 
1.6.0.1



Messages sorted by: Reverse Date, Date, Thread, Author