diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/todo | 5 | ||||
| -rw-r--r-- | tools/todo.sh | 35 | ||||
| -rw-r--r-- | tools/todo.vim | 41 | 
3 files changed, 81 insertions, 0 deletions
diff --git a/tools/todo b/tools/todo new file mode 100644 index 0000000..7903eb3 --- /dev/null +++ b/tools/todo @@ -0,0 +1,5 @@ +#!/bin/sh -e +# This file is dedicated to the public domain. + +. "$0.sh" +todo "$@" diff --git a/tools/todo.sh b/tools/todo.sh new file mode 100644 index 0000000..44c7929 --- /dev/null +++ b/tools/todo.sh @@ -0,0 +1,35 @@ +# This file is dedicated to the public domain. + +todo() { +	if [ $# = 0 ]; then +		printf "Active TODO list:\n\n" +		ls TODO/ | { +			while read _l; do +				printf "  * %s: " "$_l" +				head -n1 "TODO/$_l" +			done +		} +		return +	fi +	if [ $# != 1 ]; then +		echo "expected 0 or 1 argument(s)" +		return +	fi +	if [ -f "TODO/$1" ]; then +		printf "Active TODO item: " +		_f="TODO/$1" +	elif [ -f "TODO/.$1" ]; then +		printf "Inactive TODO item: " +		_f="TODO/.$1" +	else +		echo "TODO item not found: $1" +		return +	fi +	head -n1 "$_f" +	printf "\n" +	sed -n '/^====$/,$p' "$_f" +	printf "====\n\nMentions in project:\n" +	git grep -Fn "TODO($1)" || echo "<none>" +} + +# vi: sw=4 ts=4 noet tw=80 cc=80 diff --git a/tools/todo.vim b/tools/todo.vim new file mode 100644 index 0000000..04c704d --- /dev/null +++ b/tools/todo.vim @@ -0,0 +1,41 @@ +" This file is dedicated to the public domain. + +function! Todo(...) +	if exists("a:1") && a:1 != "" +		copen +		" cex "" | cadde to avoid insta-jumping +		if &shell == "cmd.exe" +			cex "" | cadde system("git grep -nF TODO(".shellescape(a:1).")") +		else +			cex "" | cadde system("git grep -nF \"TODO(\"".shellescape(a:1)."\\)") +		endif +	else +		" just displaying like this for now... +		if &shell == "cmd.exe" +			" FIXME: write a Windows batch equivalent!? in the meantime, you +			" need a Unix shell to track issues :^) +			cex "" | cclose | !sh tools/todo +		else +			cex "" | cclose | !tools/todo +		endif +	endif +endfunction + +function! TodoEdit(...) +	if exists("a:1") && a:1 != "" +		exec "tabe TODO/".a:1 +		if line('$') == 1 && getline(1) == '' +			normal o==== +			1 +		else +			3 " XXX should really search for ====, but this is fine for now +		endif +	else +		echoerr "Specify an issue ID" +	endif +endfunction + +command! -nargs=? Todo call Todo("<args>") +command! -nargs=? TodoEdit call TodoEdit("<args>") + +" vi: sw=4 ts=4 noet tw=80 cc=80  | 
