summaryrefslogtreecommitdiffhomepage
path: root/tools/todo.vim
blob: 04c704d88e3dc7ee1cd5cac82db5b306b5a6c519 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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