From 6e9529be4e0c2b0b42e5eb51fad1c34bae6f56fc Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Thu, 2 Feb 2017 23:23:52 +0100 Subject: Change scss provider to cakebaker, closes #173 --- autoload/scss_indent.vim | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 autoload/scss_indent.vim (limited to 'autoload') diff --git a/autoload/scss_indent.vim b/autoload/scss_indent.vim new file mode 100644 index 00000000..cc9fc033 --- /dev/null +++ b/autoload/scss_indent.vim @@ -0,0 +1,41 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scss') == -1 + +" usage: +" set indentexpr=scss_indent#GetIndent(v:lnum) +fun! scss_indent#GetIndent(lnum) + " { -> increase indent + " } -> decrease indent + if a:lnum == 1 + " start at 0 indentation + return 0 + endif + + " try to find last line ending with { or } + " ignoring // comments + let regex = '\([{}]\)\%(\/\/.*\)\?$' + let nr = search(regex, 'bnW') + if nr > 0 + let last = indent(nr) + let m = matchlist(getline(nr), regex) + let m_curr = matchlist(getline(a:lnum), regex) + echoe string(m).string(m_curr) + if !empty(m_curr) && m_curr[1] == '}' && m[1] == '{' + " last was open, current is close, use same indent + return last + elseif !empty(m_curr) && m_curr[1] == '}' && m[1] == '}' + " } line and last line was }: decrease + return last - &sw + endif + if m[1] == '{' + " line after {: increase indent + return last + &sw + else + " line after } or { - same indent + return last + endif + else + return 0 + endif +endfun + +endif -- cgit v1.2.3