Compare commits

..

3 Commits

Author SHA1 Message Date
Ingo Karkat
e5e31b0f75 Refactoring: Extract listWordsWithSigil() from listcon and listproj. 2012-04-13 21:16:33 +02:00
Ingo Karkat
d7056c5e1e FIX: Mention filter capability in long help for listproj.
This was forgotten in the original enhancement in b824479.
2012-04-13 10:51:43 +02:00
Ingo Karkat
92322e7064 Accept filters for listcon, too.
This has been implemented for listproj already, for consistency in use and implementation, the same should be available for listcon, too.
2012-04-13 10:47:56 +02:00
3 changed files with 33 additions and 15 deletions

View File

@@ -55,6 +55,16 @@ test_todo_session 'listcon e-mail address test' <<EOF
@con02
EOF
cat > todo.txt <<EOF
(B) smell the uppercase Roses +roses @outside +shared
(C) notice the sunflowers +sunflowers @garden +shared +landscape
stop
EOF
test_todo_session 'listcon with project' <<EOF
>>> todo.sh listcon +landscape
@garden
EOF
cat > todo.txt <<EOF
@con01 -- Some context 1 task
EOF

33
todo.sh
View File

@@ -58,7 +58,7 @@ shorthelp()
list|ls [TERM...]
listall|lsa [TERM...]
listaddons
listcon|lsc
listcon|lsc [TERM...]
listfile|lf [SRC [TERM...]]
listpri|lsp [PRIORITIES] [TERM...]
listproj|lsprj [TERM...]
@@ -223,9 +223,10 @@ help()
listaddons
Lists all added and overridden actions in the actions directory.
listcon
lsc
listcon [TERM...]
lsc [TERM...]
Lists all the task contexts that start with the @ sign in todo.txt.
If TERM specified, considers only tasks that contain TERM(s).
listfile [SRC [TERM...]]
lf [SRC [TERM...]]
@@ -245,10 +246,11 @@ help()
Hides all tasks that contain TERM(s) preceded by a minus sign
(i.e. -TERM).
listproj
lsprj
listproj [TERM...]
lsprj [TERM...]
Lists all the projects (terms that start with a + sign) in
todo.txt.
If TERM specified, considers only tasks that contain TERM(s).
move ITEM# DEST [SRC]
mv ITEM# DEST [SRC]
@@ -858,7 +860,17 @@ _format()
fi
}
export -f cleaninput getPrefix getTodo getNewtodo shellquote filtercommand _list getPadding _format die
listWordsWithSigil()
{
sigil=$1
shift
FILE=$TODO_FILE
[ "$TODOTXT_SOURCEVAR" ] && eval "FILE=$TODOTXT_SOURCEVAR"
eval "$(filtercommand 'cat "${FILE[@]}"' '' "$@")" | grep -o "[^ ]*${sigil}[^ ]\\+" | grep "^$sigil" | sort -u
}
export -f cleaninput getPrefix getTodo getNewtodo shellquote filtercommand _list listWordsWithSigil getPadding _format die
# == HANDLE ACTION ==
action=$( printf "%s\n" "$ACTION" | tr 'A-Z' 'a-z' )
@@ -1133,16 +1145,13 @@ case $action in
;;
"listcon" | "lsc" )
FILE=$TODO_FILE
[ "$TODOTXT_SOURCEVAR" ] && eval "FILE=$TODOTXT_SOURCEVAR"
grep -ho '[^ ]*@[^ ]\+' "${FILE[@]}" | grep '^@' | sort -u
shift
listWordsWithSigil '@' "$@"
;;
"listproj" | "lsprj" )
FILE=$TODO_FILE
[ "$TODOTXT_SOURCEVAR" ] && eval "FILE=$TODOTXT_SOURCEVAR"
shift
eval "$(filtercommand 'cat "${FILE[@]}"' '' "$@")" | grep -o '[^ ]*+[^ ]\+' | grep '^+' | sort -u
listWordsWithSigil '+' "$@"
;;
"listpri" | "lsp" )

View File

@@ -14,15 +14,14 @@ _todo()
rm depri dp do help list ls listaddons listall lsa listcon \
lsc listfile lf listpri lsp listproj lsprj move \
mv prepend prep pri p replace report shorthelp"
local -r MOVE_COMMAND_PATTERN='^(move|mv)$'
local _todo_sh=${_todo_sh:-todo.sh}
local completions
if [ $COMP_CWORD -eq 1 ]; then
completions="$COMMANDS $(eval TODOTXT_VERBOSE=0 $_todo_sh command listaddons) $OPTS"
elif [[ $COMP_CWORD -gt 2 && ( \
"${COMP_WORDS[COMP_CWORD-2]}" =~ $MOVE_COMMAND_PATTERN || \
"${COMP_WORDS[COMP_CWORD-3]}" =~ $MOVE_COMMAND_PATTERN ) ]]; then
"${COMP_WORDS[COMP_CWORD-2]}" =~ ^(move|mv)$ || \
"${COMP_WORDS[COMP_CWORD-3]}" =~ ^(move|mv)$ ) ]]; then
# "move ITEM# DEST [SRC]" has file arguments on positions 2 and 3.
completions=$(eval TODOTXT_VERBOSE=0 $_todo_sh command listfile)
else