diff options
author | W. Trevor King <wking@drexel.edu> | 2008-11-27 19:35:55 -0500 |
---|---|---|
committer | W. Trevor King <wking@drexel.edu> | 2008-11-27 19:35:55 -0500 |
commit | 01bf5c7970b3d7cb872902f5a5298b489da3defb (patch) | |
tree | a049d9f90e1e4b3e511b73a5a40e5bdd81e76a8d | |
parent | 7a67efb3bc61ec499c9af7de7c54a7b98db7eafd (diff) | |
download | bugseverywhere-01bf5c7970b3d7cb872902f5a5298b489da3defb.tar.gz |
Optimized bug loading from becommands/comment with partial-uuid matching.
The code is a bit uglier now, but it's a good deal faster :).
-rw-r--r-- | becommands/comment.py | 12 | ||||
-rw-r--r-- | completion/be.bash | 39 |
2 files changed, 10 insertions, 41 deletions
diff --git a/becommands/comment.py b/becommands/comment.py index 8fdbe42..5000588 100644 --- a/becommands/comment.py +++ b/becommands/comment.py @@ -122,12 +122,20 @@ def complete(options, args, parser): for pos,value in enumerate(args): if value == "--complete": if pos == 0: # fist positional argument is a bug or comment id + if len(args) >= 2: + partial = args[1].split(':')[0] # take only bugid portion + else: + partial = "" ids = [] try: bd = bugdir.BugDir(from_disk=True, manipulate_encodings=False) - bd.load_all_bugs() - bugs = [bug for bug in bd if bug.active == True] + bugs = [] + for uuid in bd.list_uuids(): + if uuid.startswith(partial): + bug = bd.bug_from_uuid(uuid) + if bug.active == True: + bugs.append(bug) for bug in bugs: shortname = bd.bug_shortname(bug) ids.append(shortname) diff --git a/completion/be.bash b/completion/be.bash deleted file mode 100644 index dbe1214..0000000 --- a/completion/be.bash +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Bash completion script for be (Bugs Everywhere) -# -# System wide installation: -# Copy this file to /etc/bash_completion/be -# Per-user installation: -# Copy this file to ~/.be-completion.sh and source it in your .bashrc: -# source ~/.be-completion.sh -# -# For a good intro to Bash completion, see Steve Kemp's article -# "An introduction to bash completion: part 2" -# http://www.debian-administration.org/articles/317 - -# Requires: -# be [X Y Z] --complete -# to print a list of available completions at that point -_be() -{ - local cur prev opts - COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" - - if [ $COMP_CWORD -eq 1 ]; then - # no command yet, show all commands - COMPREPLY=( $( compgen -W "$(be --complete)" -- $cur ) ) - else - # remove the first word (should be "be") for security reasons - unset COMP_WORDS[0] - # remove the current word and all later words, because they - # are not needed for completion. - for i in `seq $COMP_CWORD ${#COMP_WORDS[@]}`; do - unset COMP_WORDS[$i]; - done - COMPREPLY=( $( compgen -W "$(be "${COMP_WORDS[@]}" --complete)" -- $cur ) ) - fi -} - -complete -F _be be |