Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Next improve of completion of modprobe module parameters
- X-seq: zsh-workers 25755
- From: Jörg Sommer <joerg@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Next improve of completion of modprobe module parameters
- Date: Fri, 26 Sep 2008 22:35:18 +0000 (UTC)
- Dkim-signature: v=1; a=rsa-sha256; c=simple/simple; d=gnuu.de; s=banki; t=1222469092; i=@xxxxxxxxxxxx; bh=wZvZC48lHWqUm/g1f6B5HzsKNvOBc09Yl xlx3bBG9uQ=; h=To:From:Subject:Date:Message-ID:Mime-Version: Content-Type:Content-Transfer-Encoding:Sender; b=IbuNsIsuThRa+ccNJ JLWaJXJkRLhh0yySgxmfxBdzENCEkywYOUAzQtPiE3758pU1TmDeo0tGSCEZeoByDnb fG1tS/1k3v7Ok4BuT82z7RAJ/Em+/jfgrJ3h7e1ZH53fXZAlTmX39/jB6z49uh3FQVx YWqe/ElJ7ebHMVymSux0=
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- Sender: news <news@xxxxxxxxxxxx>
Hi,
maybe, someone has a better idea how to remove the elements of
loaded_modules from modules in the second patch. Or can someone explain
this:
% a=12\|4
% b=( {10..15} )
% echo ${b:#($a)}
10 11 12 13 14 15
% eval "echo \${b:#($a)}"
10 11 13 14 15
Why doesn't the non‐eval version work?
commit 1afe1e700c8a205790fcd57cf50abae8fa176d15
Author: Jörg Sommer <joerg@xxxxxxxxxxxx>
Date: Fri Sep 26 20:55:02 2008 +0200
Restrict names of modules files to *.ko
diff --git a/Completion/Linux/Command/_modutils b/Completion/Linux/Command/_modutils
index f422fac..378c2d5 100644
--- a/Completion/Linux/Command/_modutils
+++ b/Completion/Linux/Command/_modutils
@@ -78,7 +78,7 @@ case "$state" in
modules=( ${${${${(f)"$(_call_program modules ${(M)words[1]##*/}modprobe -l 2>/dev/null)"}:#}##*/}%%.*} )
_tags files modules
while _tags; do
- _requested files expl "module file" _files && ret=0
+ _requested files expl "module file" _files -g '*.ko' && ret=0
_requested modules expl module compadd -a modules && ret=0
done
;;
commit a9e52391259d3daf77b0fb74e9eb9bbd09e4ed1a
Author: Jörg Sommer <joerg@xxxxxxxxxxxx>
Date: Fri Sep 26 20:56:43 2008 +0200
Print only non‐loaded modules as modprobe completion
diff --git a/Completion/Linux/Command/_modutils b/Completion/Linux/Command/_modutils
index 378c2d5..7c6c666 100644
--- a/Completion/Linux/Command/_modutils
+++ b/Completion/Linux/Command/_modutils
@@ -38,7 +38,7 @@ case "$service" in
'(-C --config)'{-C,--config}'[specify config file]:config file:_files' \
"(-r --remove -l --list -t --type -a --all $ign)"{-r,--remove}'[remove module (stacks)]' \
"(* -l --list -r --remove $ign)"{-l,--list}'[list matching modules]' \
- "(-c $ign)1:modules:->all_modules" \
+ "(-c $ign)1:modules:->loadable_modules" \
"(-c -l --list -t --type $ign)*:params:->params" && ret=0
[[ -n $state ]] && (( $+opt_args[-r] )) && state=loaded_modules
@@ -62,20 +62,28 @@ case "$service" in
esac
case "$state" in
- loaded_modules)
+ loaded_modules|loadable_modules)
if [[ -r /proc/modules ]]; then
- modules=(${${(f)"$(</proc/modules)"}%% *})
+ loaded_modules=(${${(f)"$(</proc/modules)"}%% *})
elif [[ -x /sbin/lsmod ]]; then
- modules=(${${(f)"$(/sbin/lsmod)"}[2,-1]%% *})
+ loaded_modules=(${${(f)"$(/sbin/lsmod)"}[2,-1]%% *})
else
return 1
fi
-
- _wanted modules expl 'loaded module' compadd -a modules && return
- ;;
+
+ if [[ $state = loaded_modules ]]; then
+ _wanted modules expl 'loaded module' compadd -a loaded_modules && return
+ return ret
+ fi
+ ;&
all_modules)
modules=( ${${${${(f)"$(_call_program modules ${(M)words[1]##*/}modprobe -l 2>/dev/null)"}:#}##*/}%%.*} )
+
+ if [[ $state = loadable_modules ]]; then
+ eval "modules=( \${modules:#(${(j:|:)${=loaded_modules//_/-}})} )"
+ fi
+
_tags files modules
while _tags; do
_requested files expl "module file" _files -g '*.ko' && ret=0
Bye, Jörg
--
"The future is here. It's just not widely distributed yet."
(William Gibson)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author