@@ -31,6 +31,22 @@ if exists("*GetJinjaIndent")
31
31
finish
32
32
endif
33
33
34
+ function ! GetHtmlIndent ()
35
+ exe " let ind = " .b: html_indentexpr
36
+ return ind
37
+ endfunction
38
+
39
+ if ! exists (" s:indent_tags" )
40
+ let s: indent_tags = {}
41
+ endif
42
+
43
+ function ! AddBlockTags (taglist )
44
+ for itag in a: taglist
45
+ let s: indent_tags [itag] = 1
46
+ let s: indent_tags [' /' .itag] = -1
47
+ endfor
48
+ endfunction
49
+
34
50
function ! GetJinjaIndent (... )
35
51
if a: 0 && a: 1 == ' .'
36
52
let v: lnum = line (' .' )
@@ -41,35 +57,30 @@ function! GetJinjaIndent(...)
41
57
42
58
call cursor (v: lnum ,vcol)
43
59
44
- exe " let ind = " . b: html_indentexpr
60
+ let ind = GetHtmlIndent ()
45
61
46
62
let lnum = prevnonblank (v: lnum- 1 )
47
- let pnb = getline (lnum)
48
- let cur = getline (v: lnum )
49
-
50
- let tagstart = ' .*' . ' {%\s*'
51
- let tagend = ' .*%}' . ' .*'
63
+ let line = getline (lnum)
64
+ let cline = getline (v: lnum )
52
65
53
66
let blocktags = ' \(block\|for\|if\|with\|autoescape\|filter\|macro\|raw\|call\)'
54
67
let midtags = ' \(elif\|else\)'
55
68
56
- let pnb_blockstart = pnb = ~# tagstart . blocktags . tagend
57
- let pnb_blockend = pnb = ~# tagstart . ' end' . blocktags . tagend
58
- let pnb_blockmid = pnb = ~# tagstart . midtags . tagend
59
-
60
- let cur_blockstart = cur = ~# tagstart . blocktags . tagend
61
- let cur_blockend = cur = ~# tagstart . ' end' . blocktags . tagend
62
- let cur_blockmid = cur = ~# tagstart . midtags . tagend
63
-
64
- if pnb_blockstart && ! pnb_blockend
69
+ if line = ~# ' ^\s*{%-\?\s*' .blocktags.' \s*-\?%}$'
70
+ echomsg " line start"
65
71
let ind = ind + &sw
66
- elseif pnb_blockmid && ! pnb_blockend
72
+ if line = ~# ' ^\s*{%-\?\s*' .midtags.' \s*-\?%}$'
73
+ echomsg " line mid"
67
74
let ind = ind + &sw
68
75
endif
69
76
70
- if cur_blockend && ! cur_blockstart
77
+ if cline = ~# ' ^\s*{%-\?\s*end' .blocktags.' \s*-\?%}$'
78
+ echomsg = ' cline end'
71
79
let ind = ind - &sw
72
- elseif cur_blockmid
80
+ endif
81
+
82
+ if cline = ~# ' ^\s*{%-\?\s*' .midtags.' \s*-\?%}$'
83
+ echomsg " mid end"
73
84
let ind = ind - &sw
74
85
endif
75
86
0 commit comments