@@ -4,69 +4,90 @@ function! criticmarkup#Init()
44endfunction
55
66function ! criticmarkup#InjectHighlighting ()
7- syn region criticAddition start =/ {++/ end =/ ++}/
8- syn region criticDeletion start =/ {--/ end =/ --}/
9- syn region criticSubstitutionDeletion start =/ {\~\~ / end =/ .\(\~ >\)\@ =/
10- syn region criticSubstitutionAddition start =/ \~ >/ end =/ \~\~ }/
11- syn region criticComment start =/ {>>/ end =/ <<}/
12- syn region criticHighlight start =/ {==/ end =/ ==}/
7+ syn region criticAddition matchgroup =criticAdd start =/ {++/ end =/ ++}/ concealends
8+ syn region criticDeletion matchgroup =criticDel start =/ {--/ end =/ --}/ concealends
9+ syn region criticSubstitutionDeletion start =/ {\~\~ / end =/ .\(\~ >\)\@ =/ keepend
10+ syn region criticSubstitutionAddition start =/ \~ >/ end =/ \~\~ }/ keepend
11+ syn match criticSubstitutionDeletionMark / {\~\~ / contained containedin =criticSubstitutionDeletion conceal
12+ syn match criticSubstitutionAdditionMark / \~\~ }/ contained containedin =criticSubstitutionAddition conceal
13+ syn region criticComment matchgroup =criticMeta start =/ {>>/ end =/ <<}/ concealends
14+ syn region criticHighlight matchgroup =criticHighlighter start =/ {==/ end =/ ==}/ concealends
1315
14- hi criticAddition guibg= #00 ff00 guifg= #101010
15- hi criticDeletion guibg= #ff0000 guifg= #ffffff
16+ hi criticAdd guibg= #00 ff00 guifg= #101010
17+ hi criticDel guibg= #ff0000 guifg= #ffffff
18+ hi link criticAddition criticAdd
19+ hi link criticDeletion criticDel
1620 hi link criticSubstitutionAddition criticAddition
1721 hi link criticSubstitutionDeletion criticDeletion
18- hi criticComment guibg= #0099 FF guifg= #101010
19- hi criticHighlight guibg= #ffff00 guifg= #101010
22+ hi link criticSubstitutionAdditionMark criticAddition
23+ hi link criticSubstitutionDeletionMark criticDeletion
24+ hi criticMeta guibg= #0099 FF guifg= #101010
25+ hi criticHighlighter guibg= #ffff00 guifg= #101010
26+ hi link criticComment criticMeta
27+ hi link criticHighlight criticHighlighter
2028endfunction
2129
2230function ! criticmarkup#Accept ()
2331 let kind = synIDattr (synID (line (" ." ), col (" ." ), 1 ), " name" )
24- if kind == " criticAddition "
32+ if kind = ~ " criticAdd "
2533 call search (" {++" , " cb" )
2634 normal d3l
2735 call search (" ++}" , " c" )
2836 normal d3l
29- elseif kind == " criticDeletion "
37+ elseif kind = ~ " criticDel "
3038 call search (" {--" , " cb" )
31- " fails at end of line
32- exe " normal d/ \\ (--} \\ ) \\ @<= \\ _. \<cr> "
39+ exe " normal v/ \\ (-- \\ ) \\ @<=} \<cr> "
40+ normal x
3341 elseif kind = ~ " criticSubstitution"
3442 call search (' {\~\~' , " cb" )
35- exe " normal d/\\ (\\ ~>\\ )\\ @<=\\ _.\<cr> "
43+ exe " normal v/\\ ~\\ @<=>\<cr> "
44+ normal x
3645 call search (' \~\~}' , " c" )
37- exe " normal d/ \\ ( \\ ~ \\ ~} \\ ) \\ @<= \\ _. \<cr> "
46+ exe " normal d3l "
3847 endif
3948endfunction
4049
4150function ! criticmarkup#Reject ()
4251 let kind = synIDattr (synID (line (" ." ), col (" ." ), 1 ), " name" )
43- if kind == " criticDeletion "
52+ if kind = ~ " criticDel "
4453 call search (" {--" , " cb" )
45- normal df}
46- call search (" --}" , " c" )
47- normal d3l
48- elseif kind == " criticAddition"
54+ exe " normal v/\\ (--\\ )\\ @<=}\<cr> "
55+ exe " normal :s/{\\ =--}\\ =//g\<cr> "
56+ elseif kind = ~ " criticAdd"
4957 call search (" {++" , " cb" )
50- normal df}
58+ exe " normal v/\\ (++\\ )\\ @<=}\<cr> "
59+ normal x
5160 elseif kind = ~ " criticSubstitution"
5261 call search (' {\~\~' , " cb" )
53- normal df>
54- call search (' \~\~}' , " c" )
55- normal df}
62+ exe " normal v/.\\ (\\ ~>\\ )\\ @=\<cr> "
63+ exe " normal :s/{\\ ~\\ ~//g\<cr> "
64+ call search (' \~>' , " c" )
65+ exe " normal v/\\ (\\ ~\\ ~\\ )\\ @<=}\<cr> "
66+ normal x
5667 endif
5768endfunction
5869
5970function ! criticmarkup#Critic (args )
6071 if a: args = ~ " accept"
6172 call criticmarkup#Accept ()
62- elseif a: args = ~ " \( reject\| delete\) "
73+ elseif a: args = ~ " reject"
74+ call criticmarkup#Reject ()
75+ endif
76+ endfunction
77+
78+ function ! criticmarkup#CriticNext ()
79+ exe " normal /{[-+\\ ~]\\ {2}\<cr> "
80+ let op = input (" What to do? " , " " , " custom,criticmarkup#CriticCompleteFunc" )
81+ if op = ~ " accept"
82+ call criticmarkup#Accept ()
83+ elseif op = ~ " reject"
6384 call criticmarkup#Reject ()
6485 endif
6586endfunction
6687
6788function ! criticmarkup#CriticCompleteFunc (a , c , p )
6889 if len (split (a: c , " " , 1 )) < 3
69- return " accept\n reject\n delete "
90+ return " accept\n reject"
7091 else
7192 return " "
7293 endif
0 commit comments