@@ -4,69 +4,90 @@ function! criticmarkup#Init()
4
4
endfunction
5
5
6
6
function ! 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
13
15
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
16
20
hi link criticSubstitutionAddition criticAddition
17
21
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
20
28
endfunction
21
29
22
30
function ! criticmarkup#Accept ()
23
31
let kind = synIDattr (synID (line (" ." ), col (" ." ), 1 ), " name" )
24
- if kind == " criticAddition "
32
+ if kind = ~ " criticAdd "
25
33
call search (" {++" , " cb" )
26
34
normal d3l
27
35
call search (" ++}" , " c" )
28
36
normal d3l
29
- elseif kind == " criticDeletion "
37
+ elseif kind = ~ " criticDel "
30
38
call search (" {--" , " cb" )
31
- " fails at end of line
32
- exe " normal d/ \\ (--} \\ ) \\ @<= \\ _. \<cr> "
39
+ exe " normal v/ \\ (-- \\ ) \\ @<=} \<cr> "
40
+ normal x
33
41
elseif kind = ~ " criticSubstitution"
34
42
call search (' {\~\~' , " cb" )
35
- exe " normal d/\\ (\\ ~>\\ )\\ @<=\\ _.\<cr> "
43
+ exe " normal v/\\ ~\\ @<=>\<cr> "
44
+ normal x
36
45
call search (' \~\~}' , " c" )
37
- exe " normal d/ \\ ( \\ ~ \\ ~} \\ ) \\ @<= \\ _. \<cr> "
46
+ exe " normal d3l "
38
47
endif
39
48
endfunction
40
49
41
50
function ! criticmarkup#Reject ()
42
51
let kind = synIDattr (synID (line (" ." ), col (" ." ), 1 ), " name" )
43
- if kind == " criticDeletion "
52
+ if kind = ~ " criticDel "
44
53
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"
49
57
call search (" {++" , " cb" )
50
- normal df}
58
+ exe " normal v/\\ (++\\ )\\ @<=}\<cr> "
59
+ normal x
51
60
elseif kind = ~ " criticSubstitution"
52
61
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
56
67
endif
57
68
endfunction
58
69
59
70
function ! criticmarkup#Critic (args )
60
71
if a: args = ~ " accept"
61
72
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"
63
84
call criticmarkup#Reject ()
64
85
endif
65
86
endfunction
66
87
67
88
function ! criticmarkup#CriticCompleteFunc (a , c , p )
68
89
if len (split (a: c , " " , 1 )) < 3
69
- return " accept\n reject\n delete "
90
+ return " accept\n reject"
70
91
else
71
92
return " "
72
93
endif
0 commit comments