From c601309ae5f3486dea96f6f1483d0831e901cb24 Mon Sep 17 00:00:00 2001 From: David Paleino Date: Fri, 5 Jun 2009 21:41:31 +0200 Subject: [PATCH] Split gcc completion to contrib/gcc --- CHANGES | 1 + Makefile.am | 1 + bash_completion | 52 ------------------------------------------------- contrib/gcc | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 52 deletions(-) create mode 100644 contrib/gcc diff --git a/CHANGES b/CHANGES index d80f0b34..e377f1a9 100644 --- a/CHANGES +++ b/CHANGES @@ -29,6 +29,7 @@ bash-completion (1.x) * Split bash builtins completions to contrib/bash-builtins * Split dpkg-related completions to contrib/dpkg (and re-enable usage of grep-status if available) + * Split gcc completion to contrib/gcc [ Ville Skyttä ] * Split yum and yum-arch completion into contrib/yum. diff --git a/Makefile.am b/Makefile.am index 3329c502..b7d615cc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,6 +33,7 @@ bashcomp_DATA = contrib/ant \ contrib/dsniff \ contrib/findutils \ contrib/freeciv \ + contrib/gcc \ contrib/gcl \ contrib/gdb \ contrib/genisoimage \ diff --git a/bash_completion b/bash_completion index a8d67f52..feacb5ca 100644 --- a/bash_completion +++ b/bash_completion @@ -1443,58 +1443,6 @@ for i in env netstat seq uname units wget; do done unset i -# gcc(1) completion -# -# The only unusual feature is that we don't parse "gcc --help -v" output -# directly, because that would include the options of all the other backend -# tools (linker, assembler, preprocessor, etc) without any indication that -# you cannot feed such options to the gcc driver directly. (For example, the -# linker takes a -z option, but you must type -Wl,-z for gcc.) Instead, we -# ask the driver ("g++") for the name of the compiler ("cc1"), and parse the -# --help output of the compiler. -# -have gcc && -_gcc() -{ - local cur cc backend - - COMPREPLY=() - cur=`_get_cword` - - _expand || return 0 - - case "$1" in - gcj) - backend=jc1 - ;; - gpc) - backend=gpc1 - ;; - *77) - backend=f771 - ;; - *) - backend=cc1 # (near-)universal backend - ;; - esac - - if [[ "$cur" == -* ]]; then - cc=$( $1 -print-prog-name=$backend ) - # sink stderr: - # for C/C++/ObjectiveC it's useless - # for FORTRAN/Java it's an error - COMPREPLY=( $( compgen -W "$( $cc --help 2>/dev/null | \ - tr '\t' ' ' | \ - sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \ - sort -u )" -- $cur ) ) - else - _filedir - fi -} && -complete $filenames -F _gcc gcc g++ c++ g77 gcj gpc -[ $USERLAND = GNU -o $UNAME = Cygwin ] && \ -[ -n "${have:-}" ] && complete $filenames -F _gcc cc - # Linux cardctl(8) completion # have cardctl && diff --git a/contrib/gcc b/contrib/gcc new file mode 100644 index 00000000..42bcb60f --- /dev/null +++ b/contrib/gcc @@ -0,0 +1,51 @@ +# gcc(1) completion +# +# The only unusual feature is that we don't parse "gcc --help -v" output +# directly, because that would include the options of all the other backend +# tools (linker, assembler, preprocessor, etc) without any indication that +# you cannot feed such options to the gcc driver directly. (For example, the +# linker takes a -z option, but you must type -Wl,-z for gcc.) Instead, we +# ask the driver ("g++") for the name of the compiler ("cc1"), and parse the +# --help output of the compiler. +# +have gcc && +_gcc() +{ + local cur cc backend + + COMPREPLY=() + cur=`_get_cword` + + _expand || return 0 + + case "$1" in + gcj) + backend=jc1 + ;; + gpc) + backend=gpc1 + ;; + *77) + backend=f771 + ;; + *) + backend=cc1 # (near-)universal backend + ;; + esac + + if [[ "$cur" == -* ]]; then + cc=$( $1 -print-prog-name=$backend ) + # sink stderr: + # for C/C++/ObjectiveC it's useless + # for FORTRAN/Java it's an error + COMPREPLY=( $( compgen -W "$( $cc --help 2>/dev/null | \ + tr '\t' ' ' | \ + sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \ + sort -u )" -- $cur ) ) + else + _filedir + fi +} && +complete $filenames -F _gcc gcc g++ c++ g77 gcj gpc +[ $USERLAND = GNU -o $UNAME = Cygwin ] && \ +[ -n "${have:-}" ] && complete $filenames -F _gcc cc