mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-13 05:53:50 -05:00
Update latex, html, ruby, c, cpp
This commit is contained in:
@@ -167,6 +167,16 @@ call add(s:tags, 'tr')
|
||||
call add(s:tags, 'th')
|
||||
call add(s:tags, 'td')
|
||||
|
||||
|
||||
|
||||
let s:omittable = [
|
||||
\ ['address', 'article', 'aside', 'blockquote', 'dir', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],
|
||||
\ ['dt', 'dd'],
|
||||
\ ['li'],
|
||||
\ ['thead', 'tbody', 'tfoot'],
|
||||
\ ['th', 'td'],
|
||||
\]
|
||||
|
||||
if exists('g:html_exclude_tags')
|
||||
for tag in g:html_exclude_tags
|
||||
call remove(s:tags, index(s:tags, tag))
|
||||
@@ -331,29 +341,35 @@ fun! HtmlIndentGet(lnum)
|
||||
let ind = ind - 1
|
||||
endif
|
||||
|
||||
if getline(a:lnum) =~ '<p\>'
|
||||
let block_start = search('^'.repeat(' ', ind * &sw).'\S' , 'bnW')
|
||||
let prev_tag = search('<p\>', 'bW', block_start)
|
||||
let prev_closetag = search('</p\>', 'W', a:lnum)
|
||||
if prev_tag && !prev_closetag
|
||||
let ind = ind - 1
|
||||
endif
|
||||
endif
|
||||
let lind = indent(lnum)
|
||||
|
||||
if getline(a:lnum) =~ '</\w\+>'
|
||||
let block_start = search('^'.repeat(' ', ind * &sw).'\S' , 'bnW')
|
||||
let prev_tag = search('<p\>', 'bW', block_start)
|
||||
let prev_closetag = search('</p\>', 'W', a:lnum)
|
||||
if prev_tag && !prev_closetag
|
||||
let ind = ind - 1
|
||||
for tags in s:omittable
|
||||
let tags_exp = '<\(' . join(tags, '\|') . '\)>'
|
||||
let close_tags_exp = '</\(' . join(tags, '\|') . '\)>'
|
||||
if getline(a:lnum) =~ tags_exp
|
||||
let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||
let prev_tag = search(tags_exp, 'bW', block_start)
|
||||
let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||
if prev_tag && !prev_closetag
|
||||
let ind = ind - 1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if getline(a:lnum) =~ '</\w\+>'
|
||||
let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||
let prev_tag = search(tags_exp, 'bW', block_start)
|
||||
let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||
if prev_tag && !prev_closetag
|
||||
let ind = ind - 1
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
|
||||
return indent(lnum) + (&sw * ind)
|
||||
return lind + (&sw * ind)
|
||||
endfun
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
|
||||
@@ -34,7 +34,7 @@ set cpo&vim
|
||||
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
||||
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
||||
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
||||
\ '\|Interpolation\|NoInterpolation\|Comment\|Documentation\)\>'
|
||||
\ '\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|Comment\|Documentation\)\>'
|
||||
|
||||
" Regex of syntax group names that are strings.
|
||||
let s:syng_string =
|
||||
@@ -175,7 +175,7 @@ function s:GetMSL(lnum)
|
||||
" something
|
||||
"
|
||||
return msl
|
||||
elseif s:Match(line, s:non_bracket_continuation_regex) &&
|
||||
elseif s:Match(lnum, s:non_bracket_continuation_regex) &&
|
||||
\ s:Match(msl, s:non_bracket_continuation_regex)
|
||||
" If the current line is a non-bracket continuation and so is the
|
||||
" previous one, keep its indent and continue looking for an MSL.
|
||||
@@ -299,18 +299,20 @@ function s:ExtraBrackets(lnum)
|
||||
endfunction
|
||||
|
||||
function s:Match(lnum, regex)
|
||||
let col = match(getline(a:lnum), '\C'.a:regex) + 1
|
||||
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
|
||||
endfunction
|
||||
let line = getline(a:lnum)
|
||||
let offset = match(line, '\C'.a:regex)
|
||||
let col = offset + 1
|
||||
|
||||
function s:MatchLast(lnum, regex)
|
||||
let line = getline(a:lnum)
|
||||
let col = match(line, '.*\zs' . a:regex)
|
||||
while col != -1 && s:IsInStringOrComment(a:lnum, col)
|
||||
let line = strpart(line, 0, col)
|
||||
let col = match(line, '.*' . a:regex)
|
||||
while offset > -1 && s:IsInStringOrComment(a:lnum, col)
|
||||
let offset = match(line, '\C'.a:regex, offset + 1)
|
||||
let col = offset + 1
|
||||
endwhile
|
||||
return col + 1
|
||||
|
||||
if offset > -1
|
||||
return col
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" 3. GetRubyIndent Function {{{1
|
||||
|
||||
Reference in New Issue
Block a user