Re: [PATCH 1/3] shell-completion: Add initial completion for kmod
From: Lucas De Marchi <hidden>
Date: 2013-07-30 14:25:27
On Tue, Jul 30, 2013 at 10:17 AM, Dave Reisner [off-list ref] wrote:
On Tue, Jul 30, 2013 at 03:48:13AM -0300, Lucas De Marchi wrote:quoted
From: Lucas De Marchi <redacted> Skeleton pulled from udevadm in systemd and adapted to kmod needs. --- NEWS | 2 +- shell-completion/bash/kmod | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 shell-completion/bash/kmoddiff --git a/NEWS b/NEWS index 1dff366..491146d 100644 --- a/NEWS +++ b/NEWS@@ -6,7 +6,7 @@ kmod 15 - New features: - kmod static-nodes creates parent directories if given a -o option - - kmod binary doesn't statically link to libkmod + - kmod binary statically link to libkmod kmod 14 =======diff --git a/shell-completion/bash/kmod b/shell-completion/bash/kmod new file mode 100644 index 0000000..81dbf46 --- /dev/null +++ b/shell-completion/bash/kmod@@ -0,0 +1,53 @@ +# kmod completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# Copyright (C) 2013 Intel Corporation. All rights reserved. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see <http://www.gnu.org/licenses/>. + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; doneShould be "$@", not $*, and "$word", not $word.
As said in the commit message, this was taken from systemd. You may want to change there as well ;-)
quoted
+ return 1 +} + +_kmod() { + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local verb comps + + local -A VERBS=( + [HELP]='help' + [LIST]='list' + [STATIC-NODES]='static-nodes'It seems you have tabs here instead of spaces. I think you probably want
It seems like emacs is not passing the experimentation period.
the top level actions in a single list, not broken out like this. Subsequent options for the toplevel actions would want to be broken out in an associative array like you have here.
But then how can I take the different actions needed by -f, -o? Lucas De Marchi