Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
patch 9.1.0386: filetype: stylus files not recognized
Problem: filetype: stylus files not recognized Solution: Detect '*.styl' and '*.stylus' as stylus filetype, include indent, filetype and syntax plugin (Philip H) closes: #14656 Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
- Loading branch information
Showing
6 changed files
with
242 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
" Vim filetype plugin | ||
" Language: Stylus | ||
" Maintainer: Marc Harter | ||
" Credits: Tim Pope | ||
|
||
" Only do this when not done yet for this buffer | ||
if exists("b:did_ftplugin") | ||
finish | ||
endif | ||
|
||
let s:save_cpo = &cpo | ||
set cpo-=C | ||
|
||
" Define some defaults in case the included ftplugins don't set them. | ||
let s:undo_ftplugin = "" | ||
let s:browsefilter = "All Files (*.*)\t*.*\n" | ||
|
||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim | ||
unlet! b:did_ftplugin | ||
|
||
" Override our defaults if these were set by an included ftplugin. | ||
if exists("b:undo_ftplugin") | ||
let s:undo_ftplugin = b:undo_ftplugin | ||
unlet b:undo_ftplugin | ||
endif | ||
if exists("b:browsefilter") | ||
let s:browsefilter = b:browsefilter | ||
unlet b:browsefilter | ||
endif | ||
|
||
" Change the browse dialog on Win32 to show mainly Styl-related files | ||
if has("gui_win32") | ||
let b:browsefilter="Stylus Files (*.styl)\t*.styl\n" . s:browsefilter | ||
endif | ||
|
||
setlocal comments= commentstring=//\ %s | ||
setlocal suffixesadd=.styl | ||
setlocal formatoptions+=r | ||
|
||
" Add '-' and '#' to the what makes up a keyword. | ||
" This means that 'e' and 'w' work properly now, for properties | ||
" and valid variable names. | ||
setl iskeyword+=#,- | ||
|
||
" Add a Stylus command (to see if it's valid) | ||
command -buffer Stylus !clear; cat % |stylus | ||
|
||
|
||
let b:undo_ftplugin = "setl sua< isk< cms< com< fo< " | ||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin | ||
|
||
let &cpo = s:save_cpo | ||
|
||
" vim:set sw=2: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
" Vim indent file | ||
" Language: Stylus | ||
" Maintainer: Marc Harter | ||
" Last Change: 2010 May 21 | ||
" Based On: sass.vim from Tim Pope | ||
" | ||
if exists("b:did_indent") | ||
finish | ||
endif | ||
let b:did_indent = 1 | ||
|
||
setlocal indentexpr=GetStylusIndent() | ||
setlocal indentkeys=o,O,*<Return>,},],0),!^F | ||
let b:undo_indent = "setl indentexpr< indentkeys<" | ||
|
||
if exists("*GetStylusIndent") " only define once | ||
finish | ||
endif | ||
|
||
function s:prevnonblanknoncomment(lnum) | ||
let lnum = a:lnum | ||
while lnum > 1 | ||
let lnum = prevnonblank(lnum) | ||
let line = getline(lnum) | ||
if line =~ '\*/' | ||
while lnum > 1 && line !~ '/\*' | ||
let lnum -= 1 | ||
endwhile | ||
if line =~ '^\s*/\*' | ||
let lnum -= 1 | ||
else | ||
break | ||
endif | ||
else | ||
break | ||
endif | ||
endwhile | ||
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 | ||
|
||
function! GetStylusIndent() | ||
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 | ||
|
||
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 | ||
if indent == indent(lnum) | ||
let indent = cindent <= indent ? indent : increase | ||
endif | ||
|
||
let group = synIDattr(synID(lnum,lastcol,1),'name') | ||
|
||
" 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 == 'stylusUserFunction') && (indent(lnum) == '0') " mixin definition | ||
return increase | ||
else | ||
return indent | ||
endif | ||
endfunction | ||
|
||
" vim:set sw=2; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
" Vim syntax file | ||
" Language: Stylus | ||
" Maintainer: Hsiaoming Yang <lepture@me.com>, Marc Harter | ||
" Filenames: *.styl, *.stylus | ||
" Based On: Tim Pope (sass.vim) | ||
" Created: Dec 14, 2011 | ||
" Modified: Apr 29, 2024 | ||
|
||
if main_syntax == "css" | ||
syn sync minlines=10 | ||
endif | ||
|
||
" let b:current_syntax = "css" | ||
" | ||
if main_syntax == 'css' | ||
This comment has been minimized.
Sorry, something went wrong. |
||
unlet main_syntax | ||
endif | ||
|
||
syn case ignore | ||
|
||
syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo | ||
syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal | ||
syn cluster stylusCssProperties contains=cssProp,cssBackgroundProp,cssTableProp,cssBorderProp,cssFontProp,cssColorProp,cssBoxProp,cssTextProp,cssListProp,cssVisualProp,cssAdvancedProp,cssCommonProp,cssSpecialProp | ||
|
||
syn match stylusVariable "$\?[[:alnum:]_-]\+" | ||
syn match stylusVariableAssignment "\%([[:alnum:]_-]\+\s*\)\@<==" nextgroup=stylusCssAttribute,stylusVariable skipwhite | ||
|
||
syn match stylusProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+:" contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute contained containedin=cssDefineBlock | ||
syn match stylusProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+[ :]\|:[[:alnum:]-]\+\)"hs=s+1 contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute | ||
syn match stylusProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute | ||
|
||
syn match stylusCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@stylusCssValues,cssImportant,stylusFunction,stylusVariable,stylusControl,stylusUserFunction,stylusInterpolation,cssString,stylusComment,cssComment | ||
|
||
syn match stylusInterpolation %{[[:alnum:]_-]\+}% | ||
|
||
syn match stylusFunction "\<\%(red\|green\|blue\|alpha\|dark\|light\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(hue\|saturation\|lightness\|push\|unshift\|typeof\|unit\|match\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(hsla\|hsl\|rgba\|rgb\|lighten\|darken\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(abs\|ceil\|floor\|round\|min\|max\|even\|odd\|sum\|avg\|sin\|cos\|join\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(desaturate\|saturate\|invert\|unquote\|quote\|s\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(operate\|length\|warn\|error\|last\|p\|\)\>(\@=" contained | ||
syn match stylusFunction "\<\%(opposite-position\|image-size\|add-property\)\>(\@=" contained | ||
|
||
syn keyword stylusVariable null true false arguments | ||
syn keyword stylusControl if else unless for in return | ||
|
||
syn match stylusImport "@\%(import\|require\)" nextgroup=stylusImportList | ||
syn match stylusImportList "[^;]\+" contained contains=cssString.*,cssMediaType,cssURL | ||
|
||
syn match stylusAmpersand "&" | ||
syn match stylusClass "[[:alnum:]_-]\+" contained | ||
syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass | ||
syn match stylusEscape "^\s*\zs\\" | ||
syn match stylusId "[[:alnum:]_-]\+" contained | ||
syn match stylusIdChar "#[[:alnum:]_-]\@=" nextgroup=stylusId | ||
|
||
syn region stylusComment start="//" end="$" contains=cssTodo,@Spell fold | ||
|
||
let b:current_syntax = "stylus" | ||
|
||
" vim:set sw=2: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -686,6 +686,7 @@ def s:GetFilenameChecks(): dict<list<string>> | |
starlark: ['file.ipd', 'file.star', 'file.starlark'], | ||
stata: ['file.ado', 'file.do', 'file.imata', 'file.mata'], | ||
stp: ['file.stp'], | ||
stylus: ['a.styl', 'file.stylus'], | ||
This comment has been minimized.
Sorry, something went wrong.
clason
Contributor
|
||
sudoers: ['any/etc/sudoers', 'sudoers.tmp', '/etc/sudoers', 'any/etc/sudoers.d/file'], | ||
supercollider: ['file.quark'], | ||
surface: ['file.sface'], | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I missed to remove this css stuff.