[Bash-completion-commits] [SCM] bash-completion branch, master, updated. efaae3f8b958b14dd6fa5b7f07ea13375ddc3737

Ville Skyttä ville.skytta at iki.fi
Wed Jun 9 20:15:43 UTC 2010


The following commit has been merged in the master branch:
commit bf0ec3ce0e9a2d56b42189648b9157612b2d3762
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Wed Jun 9 22:33:25 2010 +0300

    Split chown, chgrp, and id completions into contrib/coreutils.

diff --git a/CHANGES b/CHANGES
index 783ddb6..db9b923 100644
--- a/CHANGES
+++ b/CHANGES
@@ -57,6 +57,7 @@ bash-completion (2.x)
   * Split sshfs completion from contrib/ssh into contrib/sshfs.
   * Split mount and umount completion into contrib/mount.
   * Split service completion into contrib/service.
+  * Split chown, chgrp, and id completions into contrib/coreutils.
   * Do basic HTML file completion with Firefox and Chrome and friends,
     and Epiphany.
   * Do basic diff/patch completion with cdiff and kompare.
diff --git a/Makefile.am b/Makefile.am
index 8662bc8..7e03d5c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,6 +25,7 @@ bashcomp_DATA = contrib/abook \
 		contrib/cksfv \
 		contrib/clisp \
 		contrib/configure \
+		contrib/coreutils \
 		contrib/cowsay \
 		contrib/cpan2dist \
 		contrib/cpio \
diff --git a/bash_completion b/bash_completion
index e4caaa3..bfba066 100644
--- a/bash_completion
+++ b/bash_completion
@@ -1083,101 +1083,6 @@ _dvd_devices()
     kernel buildworld' make
 
 
-# chown(1) completion
-#
-_chown()
-{
-    local cur prev split=false
-
-    # Get cur and prev words; but don't treat user:group as separate words.
-    cur=`_get_cword :`
-    prev=`_get_pword :`
-
-    _split_longopt && split=true
-
-    case "$prev" in
-        --from)
-            _usergroup
-            return 0
-            ;;
-        --reference)
-            _filedir
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        # Complete -options
-        local w opts
-        for w in "${COMP_WORDS[@]}" ; do
-            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
-        done
-        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
-            --no-dereference --from --silent --quiet --reference --recursive \
-            --verbose --help --version $opts' -- "$cur" ) )
-    else
-        local args
-
-        # The first argument is an usergroup; the rest are filedir.
-        _count_args :
-
-        if [[ $args == 1 ]]; then
-            _usergroup
-        else
-            _filedir
-        fi
-    fi
-} # _chown()
-complete -F _chown -o filenames chown
-
-
-# chgrp(1) completion
-#
-_chgrp()
-{
-    local cur prev split=false
-
-    COMPREPLY=()
-    cur=`_get_cword`
-    cur=${cur//\\\\/}
-    prev=${COMP_WORDS[COMP_CWORD-1]}
-
-    _split_longopt && split=true
-
-    if [[ "$prev" == --reference ]]; then
-        _filedir
-        return 0
-    fi
-
-    $split && return 0
-
-    # options completion
-    if [[ "$cur" == -* ]]; then
-        local w opts
-        for w in "${COMP_WORDS[@]}" ; do
-            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
-        done
-        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
-            --no-dereference --silent --quiet --reference --recursive \
-            --verbose --help --version $opts' -- "$cur" ) )
-        return 0
-    fi
-
-    # first parameter on line or first since an option?
-    if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then
-        local IFS=$'\n'
-        COMPREPLY=( $( compgen -g "$cur" 2>/dev/null ) )
-    else
-        _filedir || return 0
-    fi
-
-    return 0
-} # _chgrp()
-complete -F _chgrp -o filenames chgrp
-
-
 # renice(8) completion
 #
 _renice()
@@ -1759,25 +1664,6 @@ _look()
 } &&
 complete -F _look -o default look
 
-# id(1) completion
-#
-have id &&
-_id()
-{
-    local cur
-
-    COMPREPLY=()
-    cur=`_get_cword`
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\
-            -r --real -u --user --help --version' -- "$cur" ) )
-    else
-        COMPREPLY=( $( compgen -u "$cur" ) )
-    fi
-} &&
-complete -F _id id
-
 _filedir_xspec()
 {
     local IFS cur xspec
diff --git a/contrib/coreutils b/contrib/coreutils
new file mode 100644
index 0000000..8146e9a
--- /dev/null
+++ b/contrib/coreutils
@@ -0,0 +1,124 @@
+# Completions for various core utilities
+
+# chown(1) completion
+#
+have chown &&
+_chown()
+{
+    local cur prev split=false
+
+    # Get cur and prev words; but don't treat user:group as separate words.
+    cur=`_get_cword :`
+    prev=`_get_pword :`
+
+    _split_longopt && split=true
+
+    case "$prev" in
+        --from)
+            _usergroup
+            return 0
+            ;;
+        --reference)
+            _filedir
+            return 0
+            ;;
+    esac
+
+    $split && return 0
+
+    if [[ "$cur" == -* ]]; then
+        # Complete -options
+        local w opts
+        for w in "${COMP_WORDS[@]}" ; do
+            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
+        done
+        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
+            --no-dereference --from --silent --quiet --reference --recursive \
+            --verbose --help --version $opts' -- "$cur" ) )
+    else
+        local args
+
+        # The first argument is an usergroup; the rest are filedir.
+        _count_args :
+
+        if [[ $args == 1 ]]; then
+            _usergroup
+        else
+            _filedir
+        fi
+    fi
+} &&
+complete -F _chown -o filenames chown
+
+
+# chgrp(1) completion
+#
+have chgrp &&
+_chgrp()
+{
+    local cur prev split=false
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    cur=${cur//\\\\/}
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    _split_longopt && split=true
+
+    if [[ "$prev" == --reference ]]; then
+        _filedir
+        return 0
+    fi
+
+    $split && return 0
+
+    # options completion
+    if [[ "$cur" == -* ]]; then
+        local w opts
+        for w in "${COMP_WORDS[@]}" ; do
+            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
+        done
+        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
+            --no-dereference --silent --quiet --reference --recursive \
+            --verbose --help --version $opts' -- "$cur" ) )
+        return 0
+    fi
+
+    # first parameter on line or first since an option?
+    if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then
+        local IFS=$'\n'
+        COMPREPLY=( $( compgen -g "$cur" 2>/dev/null ) )
+    else
+        _filedir || return 0
+    fi
+
+    return 0
+} &&
+complete -F _chgrp -o filenames chgrp
+
+# id(1) completion
+#
+have id &&
+_id()
+{
+    local cur
+
+    COMPREPLY=()
+    cur=`_get_cword`
+
+    if [[ "$cur" == -* ]]; then
+        COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\
+            -r --real -u --user --help --version' -- "$cur" ) )
+    else
+        COMPREPLY=( $( compgen -u "$cur" ) )
+    fi
+} &&
+complete -F _id id
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/test/completion/chgrp.exp b/test/completion/chgrp.exp
new file mode 100644
index 0000000..2b1d225
--- /dev/null
+++ b/test/completion/chgrp.exp
@@ -0,0 +1 @@
+assert_source_completions chgrp
diff --git a/test/lib/completions/abook.exp b/test/lib/completions/chgrp.exp
similarity index 83%
copy from test/lib/completions/abook.exp
copy to test/lib/completions/chgrp.exp
index 3f4e301..8dfeea7 100644
--- a/test/lib/completions/abook.exp
+++ b/test/lib/completions/chgrp.exp
@@ -11,7 +11,7 @@ proc teardown {} {
 setup
 
 
-assert_complete_any "abook "
+assert_complete_any "chgrp "
 
 
 sync_after_int

-- 
bash-completion



More information about the Bash-completion-commits mailing list