Skip to content

Commit 9c277be

Browse files
committed
Many improvements
rejects and accepts work in all cases marks are concealed if possible.
1 parent 7964f55 commit 9c277be

File tree

1 file changed

+48
-27
lines changed

1 file changed

+48
-27
lines changed

autoload/criticmarkup.vim

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,69 +4,90 @@ function! criticmarkup#Init()
44
endfunction
55

66
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
1315

14-
hi criticAddition guibg=#00ff00 guifg=#101010
15-
hi criticDeletion guibg=#ff0000 guifg=#ffffff
16+
hi criticAdd guibg=#00ff00 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=#0099FF guifg=#101010
19-
hi criticHighlight guibg=#ffff00 guifg=#101010
22+
hi link criticSubstitutionAdditionMark criticAddition
23+
hi link criticSubstitutionDeletionMark criticDeletion
24+
hi criticMeta guibg=#0099FF guifg=#101010
25+
hi criticHighlighter guibg=#ffff00 guifg=#101010
26+
hi link criticComment criticMeta
27+
hi link criticHighlight criticHighlighter
2028
endfunction
2129

2230
function! 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
3948
endfunction
4049

4150
function! 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
5768
endfunction
5869

5970
function! 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
6586
endfunction
6687

6788
function! criticmarkup#CriticCompleteFunc(a, c, p)
6889
if len(split(a:c, " ", 1)) < 3
69-
return "accept\nreject\ndelete"
90+
return "accept\nreject"
7091
else
7192
return ""
7293
endif

0 commit comments

Comments
 (0)