aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorW. Trevor King <wking@drexel.edu>2008-11-27 19:35:55 -0500
committerW. Trevor King <wking@drexel.edu>2008-11-27 19:35:55 -0500
commit01bf5c7970b3d7cb872902f5a5298b489da3defb (patch)
treea049d9f90e1e4b3e511b73a5a40e5bdd81e76a8d
parent7a67efb3bc61ec499c9af7de7c54a7b98db7eafd (diff)
downloadbugseverywhere-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.py12
-rw-r--r--completion/be.bash39
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