Revert stylus provider

This commit is contained in:
Adam Stankiewicz
2021-01-03 14:09:55 +01:00
parent 05b8bbc938
commit 09f31c433a
16 changed files with 548 additions and 1557 deletions

View File

@@ -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

View File

@@ -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*'
" 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
elseif group =~ 'stylusAtRule\(Viewport\|Page\|Supports\|Document\|Font\|Keyframes\)\w*'
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;