summaryrefslogtreecommitdiff
path: root/completions/gdb
diff options
context:
space:
mode:
authorDavid Paleino <dapal@debian.org>2011-02-06 21:26:41 +0100
committerDavid Paleino <dapal@debian.org>2011-02-06 21:26:41 +0100
commit9920a8faedf704420571d8072ccab27e9dac40ba (patch)
tree733edf3b07be06c130d04aaa1884213326722cad /completions/gdb
parentf9748115fb4b2950fb4df7535fb723c4affde078 (diff)
downloadbash-completion-9920a8faedf704420571d8072ccab27e9dac40ba.tar.gz
Imported Upstream version 1.3upstream/1.3
Diffstat (limited to 'completions/gdb')
-rw-r--r--completions/gdb44
1 files changed, 44 insertions, 0 deletions
diff --git a/completions/gdb b/completions/gdb
new file mode 100644
index 00000000..f0bc42d3
--- /dev/null
+++ b/completions/gdb
@@ -0,0 +1,44 @@
+# bash completion for gdb
+
+have gdb &&
+_gdb()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ local IFS
+ _compopt_o_filenames
+ if [[ "$cur" == */* ]]; then
+ # compgen -c works as expected if $cur contains any slashes.
+ IFS=$'\n'
+ COMPREPLY=( $( PATH="$PATH:." compgen -d -c -- "$cur" ) )
+ else
+ # otherwise compgen -c contains Bash's built-in commands,
+ # functions and aliases. Thus we need to retrieve the program
+ # names manually.
+ IFS=":"
+ local path_array=( $( \
+ sed -e 's/:\{2,\}/:/g' -e 's/^://' -e 's/:$//' <<<"$PATH" ) )
+ IFS=$'\n'
+ COMPREPLY=( $( compgen -d -W '$(find "${path_array[@]}" . \
+ -mindepth 1 -maxdepth 1 -not -type d -executable \
+ -printf "%f\\n" 2>/dev/null)' -- "$cur" ) )
+ fi
+ elif [ $COMP_CWORD -eq 2 ]; then
+ prev=${prev##*/}
+ COMPREPLY=( $( compgen -fW "$( command ps axo comm,pid | \
+ awk '{if ($1 ~ /^'"$prev"'/) print $2}' )" -- "$cur" ) )
+ fi
+} &&
+complete -F _gdb -o default gdb
+
+# 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