diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2021-01-03 14:09:55 +0100 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2021-01-03 14:09:55 +0100 | 
| commit | 09f31c433a136450b9faa33b08fc3281bdea5acc (patch) | |
| tree | 73a1db640af5c34c55bed51916ea8cf821e7dad2 /indent | |
| parent | 05b8bbc938bdeac4a5ee2d3ae5cf7a7f05e822d3 (diff) | |
| download | vim-polyglot-09f31c433a136450b9faa33b08fc3281bdea5acc.tar.gz vim-polyglot-09f31c433a136450b9faa33b08fc3281bdea5acc.zip | |
Revert stylus provider
Diffstat (limited to 'indent')
| -rw-r--r-- | indent/dune.vim | 2 | ||||
| -rw-r--r-- | indent/stylus.vim | 95 | 
2 files changed, 68 insertions, 29 deletions
| diff --git a/indent/dune.vim b/indent/dune.vim index 5dbe9d30..009f7eba 100644 --- a/indent/dune.vim +++ b/indent/dune.vim @@ -14,4 +14,4 @@ endif  let b:did_indent = 1  " dune format-dune-file uses 1 space to indent -set softtabstop=1 shiftwidth=1 expandtab +setlocal softtabstop=1 shiftwidth=1 expandtab diff --git a/indent/stylus.vim b/indent/stylus.vim index 1254ebc3..88aa4482 100644 --- a/indent/stylus.vim +++ b/indent/stylus.vim @@ -4,21 +4,21 @@ endif  " Vim indent file  " Language: Stylus -" Maintainer: Ilia Loginov -" Last Change: 2018 Jan 19 +" Maintainer: Marc Harter +" Last Change: 2010 May 21  " 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 autoindent nolisp nosmartindent -setlocal indentkeys=o,O,*<Return>,0),!^F +setlocal indentkeys=o,O,*<Return>,},],0),!^F  setlocal formatoptions+=r -if exists('*GetStylusIndent') +if exists("*GetStylusIndent")  " only define once    finish  endif @@ -43,7 +43,45 @@ function s:prevnonblanknoncomment(lnum)    return lnum  endfunction -function GetStylusIndent() +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()    let line = getline(v:lnum)    if line =~ '^\s*\*'      return cindent(v:lnum) @@ -54,41 +92,42 @@ 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) -  " 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 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    if indent   == indent(lnum)      let indent = cindent <= indent ? indent : increase    endif -  let group = synIDattr(synID(lnum, cindent + 1, 1), 'name') +  let group = synIDattr(synID(lnum,lastcol,1),'name') -  if group =~ 'stylusSelector\w*' -    return increase -  elseif group =~ 'stylusAtRule\(Viewport\|Page\|Supports\|Document\|Font\|Keyframes\)\w*' +  " 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)$'      return increase -  " Mixin or function definition -  elseif group =~ 'stylusFunction\w*' && indent(lnum) == 0 +  elseif (group == 'stylusUserFunction') && (indent(lnum) == '0') " mixin definition      return increase    else      return indent    endif  endfunction + +" vim:set sw=2; | 
