diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2021-01-01 17:14:37 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2021-01-01 17:14:37 +0100 |
commit | 37bc36ac42c00757cf06ea271f8206aec50632a2 (patch) | |
tree | 3c76215c4c23deba62487b11b296db2aa2332061 /indent | |
parent | a81756029291d6e21295687515a3e58499c19b33 (diff) | |
download | vim-polyglot-37bc36ac42c00757cf06ea271f8206aec50632a2.tar.gz vim-polyglot-37bc36ac42c00757cf06ea271f8206aec50632a2.zip |
Change stylus provider, closes #642
Diffstat (limited to 'indent')
-rw-r--r-- | indent/stylus.vim | 95 |
1 files changed, 28 insertions, 67 deletions
diff --git a/indent/stylus.vim b/indent/stylus.vim index 9f506e2f..eeb3fa0d 100644 --- a/indent/stylus.vim +++ b/indent/stylus.vim @@ -4,21 +4,21 @@ endif " Vim indent file " Language: Stylus -" Maintainer: Marc Harter -" Last Change: 2010 May 21 +" Maintainer: Ilia Loginov +" Last Change: 2018 Jan 19 " Based On: sass.vim from Tim Pope -" + if exists("b:did_indent") finish endif -unlet! b:did_indent let b:did_indent = 1 setlocal indentexpr=GetStylusIndent() -setlocal indentkeys=o,O,*<Return>,},],0),!^F +setlocal autoindent nolisp nosmartindent +setlocal indentkeys=o,O,*<Return>,0),!^F setlocal formatoptions+=r -if exists("*GetStylusIndent") " only define once +if exists('*GetStylusIndent') finish endif @@ -43,45 +43,7 @@ function s:prevnonblanknoncomment(lnum) return lnum endfunction -function s:count_braces(lnum, count_open) - let n_open = 0 - let n_close = 0 - let line = getline(a:lnum) - let pattern = '[{}]' - let i = match(line, pattern) - while i != -1 - if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'css\%(Comment\|StringQ\{1,2}\)' - if line[i] == '{' - let n_open += 1 - elseif line[i] == '}' - if n_open > 0 - let n_open -= 1 - else - let n_close += 1 - endif - endif - endif - let i = match(line, pattern, i + 1) - endwhile - return a:count_open ? n_open : n_close -endfunction - -" function CheckCSSIndent() -" let line = getline(v:lnum) -" if line =~ '^\s*\*' -" return cindent(v:lnum) -" endif -" -" let pnum = s:prevnonblanknoncomment(v:lnum - 1) -" if pnum == 0 -" return 0 -" endif -" -" return indent(pnum) + s:count_braces(pnum, 1) * &sw -" \ - s:count_braces(v:lnum, 0) * &sw -" endfunction - -function! GetStylusIndent() +function GetStylusIndent() let line = getline(v:lnum) if line =~ '^\s*\*' return cindent(v:lnum) @@ -92,42 +54,41 @@ function! GetStylusIndent() return 0 endif - let lnum = prevnonblank(v:lnum-1) + let lnum = prevnonblank(v:lnum-1) if lnum == 0 return 0 endif let pline = getline(pnum) - if pline =~ '[}{]' - return indent(pnum) + s:count_braces(pnum, 1) * &sw - s:count_braces(v:lnum, 0) * &sw - endif - - let line = substitute(getline(lnum),'[\s()]\+$','','') " get last line strip ending whitespace - let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') " get current line, trimmed - let lastcol = strlen(line) " get last col in prev line - let line = substitute(line,'^\s\+','','') " then remove preceeding whitespace - let indent = indent(lnum) " get indent on prev line - let cindent = indent(v:lnum) " get indent on current line - let increase = indent + &sw " increase indent by the shift width + " Get last line strip ending whitespace + let line = substitute(getline(lnum),'[\s()]\+$','','') + " Get current line, trimmed + let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') + " Get last col in prev line + let lastcol = strlen(line) + " Then remove preceeding whitespace + let line = substitute(line,'^\s\+','','') + " Get indent on prev line + let indent = indent(lnum) + " Get indent on current line + let cindent = indent(v:lnum) + " Increase indent by the shift width + let increase = indent + &sw if indent == indent(lnum) let indent = cindent <= indent ? indent : increase endif - let group = synIDattr(synID(lnum,lastcol,1),'name') + let group = synIDattr(synID(lnum, cindent + 1, 1), 'name') - " for debugging only - echo group - - " if group !~? 'css.*' && line =~? ')\s*$' " match user functions - " return increase - if group =~? '\v^%(cssTagName|cssClassName|cssIdentifier|cssSelectorOp|cssSelectorOp2|cssBraces|cssAttributeSelector|cssPseudo|stylusId|stylusClass)$' + if group =~ 'stylusSelector\w*' + return increase + elseif group =~ 'stylusAtRule\(Viewport\|Page\|Supports\|Document\|Font\|Keyframes\)\w*' return increase - elseif (group == 'stylusUserFunction') && (indent(lnum) == '0') " mixin definition + " Mixin or function definition + elseif group =~ 'stylusFunction\w*' && indent(lnum) == 0 return increase else return indent endif endfunction - -" vim:set sw=2; |