Generalizes the PRI_X color support to all priorities.
It allows you to assign a distinct color to any priority, not just A, B and C. Submitted to the todo.txt mailing list on 3-Jun-2010; committed on behalf of the author because there was no follow-up; cp. http://tech.groups.yahoo.com/group/todotxt/message/2619
Also committed this because it fixes a sed expression error when there are spaces in a $PRI_... variable, which occurred in my integration with Conky.
Note: This commit obsoletes and replaces the previous fix to colorization in commit 8b7e2e6aad.
Added tests for highlighting of priorities.
This commit is contained in:
committed by
Ingo Karkat
parent
0b16bae2e8
commit
e7b5841721
114
tests/t1330-ls-highlighting.sh
Executable file
114
tests/t1330-ls-highlighting.sh
Executable file
@@ -0,0 +1,114 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='list highlighting
|
||||||
|
|
||||||
|
This test checks the highlighting (with colors) of prioritized tasks.
|
||||||
|
'
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
TEST_TODO_=todo.cfg
|
||||||
|
|
||||||
|
#
|
||||||
|
# check the highlighting of prioritized tasks
|
||||||
|
#
|
||||||
|
cat > todo.txt <<EOF
|
||||||
|
(A) @con01 +prj01 -- Some project 01 task, pri A
|
||||||
|
(B) @con02 +prj02 -- Some project 02 task, pri B
|
||||||
|
(C) @con01 +prj01 -- Some project 01 task, pri C
|
||||||
|
(D) @con02 +prj02 -- Some project 02 task, pri D
|
||||||
|
(E) @con01 +prj01 -- Some project 01 task, pri E
|
||||||
|
(Z) @con02 +prj02 -- Some project 02 task, pri Z
|
||||||
|
@con01 +prj01 -- Some project 01 task, no priority
|
||||||
|
@con02 +prj02 -- Some project 02 task, no priority
|
||||||
|
EOF
|
||||||
|
test_todo_session 'default highlighting' <<EOF
|
||||||
|
>>> todo.sh ls
|
||||||
|
[1;33m1 (A) @con01 +prj01 -- Some project 01 task, pri A[0m
|
||||||
|
[0;32m2 (B) @con02 +prj02 -- Some project 02 task, pri B[0m
|
||||||
|
[1;34m3 (C) @con01 +prj01 -- Some project 01 task, pri C[0m
|
||||||
|
[1;37m4 (D) @con02 +prj02 -- Some project 02 task, pri D[0m
|
||||||
|
[1;37m5 (E) @con01 +prj01 -- Some project 01 task, pri E[0m
|
||||||
|
[1;37m6 (Z) @con02 +prj02 -- Some project 02 task, pri Z[0m
|
||||||
|
7 @con01 +prj01 -- Some project 01 task, no priority
|
||||||
|
8 @con02 +prj02 -- Some project 02 task, no priority
|
||||||
|
--
|
||||||
|
TODO: 8 of 8 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# check changing the color definitions into something other than ANSI color
|
||||||
|
# escape sequences
|
||||||
|
#
|
||||||
|
TEST_TODO_CUSTOM=todo-custom.cfg
|
||||||
|
cat todo.cfg > "$TEST_TODO_CUSTOM"
|
||||||
|
cat >> "$TEST_TODO_CUSTOM" <<'EOF'
|
||||||
|
export YELLOW='${color yellow}'
|
||||||
|
export GREEN='${color green}'
|
||||||
|
export LIGHT_BLUE='${color LightBlue}'
|
||||||
|
export WHITE='${color white}'
|
||||||
|
export DEFAULT='${color}'
|
||||||
|
export PRI_A=$YELLOW
|
||||||
|
export PRI_B=$GREEN
|
||||||
|
export PRI_C=$LIGHT_BLUE
|
||||||
|
export PRI_X=$WHITE
|
||||||
|
EOF
|
||||||
|
test_todo_session 'customized highlighting' <<'EOF'
|
||||||
|
>>> todo.sh -d "$TEST_TODO_CUSTOM" ls
|
||||||
|
${color yellow}1 (A) @con01 +prj01 -- Some project 01 task, pri A${color}
|
||||||
|
${color green}2 (B) @con02 +prj02 -- Some project 02 task, pri B${color}
|
||||||
|
${color LightBlue}3 (C) @con01 +prj01 -- Some project 01 task, pri C${color}
|
||||||
|
${color white}4 (D) @con02 +prj02 -- Some project 02 task, pri D${color}
|
||||||
|
${color white}5 (E) @con01 +prj01 -- Some project 01 task, pri E${color}
|
||||||
|
${color white}6 (Z) @con02 +prj02 -- Some project 02 task, pri Z${color}
|
||||||
|
7 @con01 +prj01 -- Some project 01 task, no priority
|
||||||
|
8 @con02 +prj02 -- Some project 02 task, no priority
|
||||||
|
--
|
||||||
|
TODO: 8 of 8 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# check defining highlightings for more priorities than the default A, B, C
|
||||||
|
#
|
||||||
|
TEST_TODO_ADDITIONAL=todo-additional.cfg
|
||||||
|
cat todo.cfg > "$TEST_TODO_ADDITIONAL"
|
||||||
|
cat >> "$TEST_TODO_ADDITIONAL" <<'EOF'
|
||||||
|
export PRI_E=$BROWN
|
||||||
|
export PRI_Z=$LIGHT_PURPLE
|
||||||
|
EOF
|
||||||
|
test_todo_session 'additional highlighting pri E+Z' <<'EOF'
|
||||||
|
>>> todo.sh -d "$TEST_TODO_ADDITIONAL" ls
|
||||||
|
[1;33m1 (A) @con01 +prj01 -- Some project 01 task, pri A[0m
|
||||||
|
[0;32m2 (B) @con02 +prj02 -- Some project 02 task, pri B[0m
|
||||||
|
[1;34m3 (C) @con01 +prj01 -- Some project 01 task, pri C[0m
|
||||||
|
[1;37m4 (D) @con02 +prj02 -- Some project 02 task, pri D[0m
|
||||||
|
[0;33m5 (E) @con01 +prj01 -- Some project 01 task, pri E[0m
|
||||||
|
[1;35m6 (Z) @con02 +prj02 -- Some project 02 task, pri Z[0m
|
||||||
|
7 @con01 +prj01 -- Some project 01 task, no priority
|
||||||
|
8 @con02 +prj02 -- Some project 02 task, no priority
|
||||||
|
--
|
||||||
|
TODO: 8 of 8 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# check changing the fallback highlighting for undefined priorities
|
||||||
|
#
|
||||||
|
TEST_TODO_PRI_X=todo-pri-x.cfg
|
||||||
|
cat todo.cfg > "$TEST_TODO_PRI_X"
|
||||||
|
cat >> "$TEST_TODO_PRI_X" <<'EOF'
|
||||||
|
export PRI_X=$BROWN
|
||||||
|
EOF
|
||||||
|
test_todo_session 'different highlighting for pri X' <<'EOF'
|
||||||
|
>>> todo.sh -d "$TEST_TODO_PRI_X" ls
|
||||||
|
[1;33m1 (A) @con01 +prj01 -- Some project 01 task, pri A[0m
|
||||||
|
[0;32m2 (B) @con02 +prj02 -- Some project 02 task, pri B[0m
|
||||||
|
[1;34m3 (C) @con01 +prj01 -- Some project 01 task, pri C[0m
|
||||||
|
[0;33m4 (D) @con02 +prj02 -- Some project 02 task, pri D[0m
|
||||||
|
[0;33m5 (E) @con01 +prj01 -- Some project 01 task, pri E[0m
|
||||||
|
[0;33m6 (Z) @con02 +prj02 -- Some project 02 task, pri Z[0m
|
||||||
|
7 @con01 +prj01 -- Some project 01 task, no priority
|
||||||
|
8 @con02 +prj02 -- Some project 02 task, no priority
|
||||||
|
--
|
||||||
|
TODO: 8 of 8 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_done
|
||||||
22
todo.sh
22
todo.sh
@@ -460,9 +460,9 @@ ACTION=${1:-$TODOTXT_DEFAULT_ACTION}
|
|||||||
[ -f "$REPORT_FILE" ] || cp /dev/null "$REPORT_FILE"
|
[ -f "$REPORT_FILE" ] || cp /dev/null "$REPORT_FILE"
|
||||||
|
|
||||||
if [ $TODOTXT_PLAIN = 1 ]; then
|
if [ $TODOTXT_PLAIN = 1 ]; then
|
||||||
PRI_A=$NONE
|
for clr in ${!PRI_@}; do
|
||||||
PRI_B=$NONE
|
export $clr=$NONE
|
||||||
PRI_C=$NONE
|
done
|
||||||
PRI_X=$NONE
|
PRI_X=$NONE
|
||||||
DEFAULT=$NONE
|
DEFAULT=$NONE
|
||||||
fi
|
fi
|
||||||
@@ -570,14 +570,14 @@ _list() {
|
|||||||
s/^ /0/;
|
s/^ /0/;
|
||||||
''' \
|
''' \
|
||||||
| eval ${TODOTXT_SORT_COMMAND} \
|
| eval ${TODOTXT_SORT_COMMAND} \
|
||||||
| sed '''
|
| awk '''{
|
||||||
/^[0-9]\{'$PADDING'\} x /! {
|
pos = match($0, /\([A-Z]\)/)
|
||||||
/(A)/ s|^.*|'$PRI_A'&'$DEFAULT'|
|
if( pos > 0 && match($0, /^[0-9]+ x /) != 1 ) {
|
||||||
/(B)/ s|^.*|'$PRI_B'&'$DEFAULT'|
|
clr=ENVIRON["PRI_" substr($0, pos+1, 1)]
|
||||||
/(C)/ s|^.*|'$PRI_C'&'$DEFAULT'|
|
str = ( clr ? clr : ENVIRON["PRI_X"] ) $0 ENVIRON["DEFAULT"]
|
||||||
/([D-Z])/ s|^.*|'$PRI_X'&'$DEFAULT'|
|
gsub( /\\+033/, "\033", str) ; print str
|
||||||
}
|
} else { print }
|
||||||
''' \
|
}''' \
|
||||||
| sed '''
|
| sed '''
|
||||||
s/'${HIDE_PRIORITY_SUBSTITUTION:-^}'//g
|
s/'${HIDE_PRIORITY_SUBSTITUTION:-^}'//g
|
||||||
s/'${HIDE_PROJECTS_SUBSTITUTION:-^}'//g
|
s/'${HIDE_PROJECTS_SUBSTITUTION:-^}'//g
|
||||||
|
|||||||
Reference in New Issue
Block a user