Autocommit of file /home/julien/.dotfiles/vim/.vim/bundle/vimtodo/syntax/todo.vim...
[dotfiles/vim.git] / .vim / bundle / vimtodo / syntax / todo.vim
1 " Vim syntax file
2 " Maintainer:   Mark Harrison <mark@mivok.net>
3 " Last Change:  Aug 15, 2009
4 " License:      ISC - See LICENSE file for details
5
6 " au BufRead,BufNewFile todo.txt,*.todo.txt,recur.txt,*.todo set filetype=todo
7
8 " Quit when a (custom) syntax file was already loaded
9 if exists("b:current_syntax")
10   finish
11 endif
12
13 " Load default variables if not already set
14 call vimtodo#SetDefaultVars()
15
16 syn match       todoProject     /+\S\+/
17 syn match       todoContext     /\s@\S\+/
18 syn match       todoPriority    /([A-Z])/
19 "syn match       todoDone        /^\s*\[\?[xX]\]\?\s.*/
20
21 syn match       todoDate        /\w\?{[^}]\+}[+=-]\?/
22 syn match       todoDate        /\d\{4\}-\d\{2\}-\d\{2\}/
23 syn match       todoTasknum     /tid\d\+/
24
25 syn match       todoURI         /\w\+:\/\/\S\+/
26 syn match       todoEmail       /\S\+@\S\+\.\S\+/
27
28 syn match       todoBold        /\*[^*]\+\*/
29 syn match       todoUline       /_[^_]\{2,}_/
30 syn match       todoComment     /\s*#.*$/
31 syn match       todoLog         /\(^\s*\)\@<=[A-Z]\+:/
32 syn match       todoDrawer      /\(^\s*\)\@<=:[A-Z]\+:/
33
34 hi def link     todoProject     Statement
35 hi def link     todoContext     Identifier
36 hi def link     todoPriority    Special
37 hi def link     todoDone        Comment
38 hi def link     todoDate        Constant
39 hi def link     todoTasknum     Number
40
41 hi def link     todoBold        PreProc
42 hi def link     todoUline       PreProc
43 hi def link     todoComment     Comment
44 hi def link     todoLog         PreProc
45 hi def link     todoDrawer      Type
46
47 hi def link     todoURI         String
48 hi def link     todoEmail       String
49
50 " Highlight state colors
51 function! s:HighlightStatus(name, color)
52     " Sets the highlight for a particular status to the given color
53     let name=toupper(a:name)
54     exe "syn match todoState".name." /\\(^\\s*\\)\\@<=".name.
55         \":\\?\\(\\s\\|$\\)\\@=/ contains=todoDone"
56     exe "hi def todoState".name." guifg=".a:color." ctermfg=".a:color.
57         \" gui=bold cterm=bold"
58 endfunction
59 for state in keys(g:todo_state_colors)
60     call s:HighlightStatus(state, g:todo_state_colors[state])
61 endfor
62
63 " Might want to make this dynamic so we can add 'contains=todoLogDONE' etc.
64 function! s:HighlightDone()
65     for group in g:todo_states
66         let idx = index(group, "|")
67         if idx != -1
68             let idx = idx + 1
69         elseif idx == len(group)
70             continue
71         endif
72         let parsed = []
73         for state in group[idx+0:]
74             call add(parsed, vimtodo#TodoParseTaskState(state)["state"])
75         endfor
76         let match = join(parsed, "\\|")
77         exec "syn region todoDone start=\"^\\z(\\s*\\)\\%(".match."\\)\\s\"".
78             \" end=\"^\\%(\\n*\\z1\\s\\)\\@!\"".
79             \" contains=todoLog"
80     endfor
81 endfunction
82 call s:HighlightDone()
83
84 let b:current_syntax = "todo"