diff options
Diffstat (limited to 'lua/lexers/sass.lua')
| -rw-r--r-- | lua/lexers/sass.lua | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/lua/lexers/sass.lua b/lua/lexers/sass.lua index 1e1b4eb..bb14e1d 100644 --- a/lua/lexers/sass.lua +++ b/lua/lexers/sass.lua @@ -1,32 +1,24 @@ --- Copyright 2006-2017 Robert Gieseke. See LICENSE. +-- Copyright 2006-2022 Robert Gieseke. See LICENSE. -- Sass CSS preprocessor LPeg lexer. -- http://sass-lang.com -local l = require('lexer') -local token = l.token +local lexer = require('lexer') +local token = lexer.token local P, S = lpeg.P, lpeg.S -local M = {_NAME = 'sass'} +local lex = lexer.new('sass', {inherit = lexer.load('css')}) -- Line comments. -local line_comment = token(l.COMMENT, '//' * l.nonnewline^0) +lex:add_rule('line_comment', token(lexer.COMMENT, lexer.to_eol('//'))) -- Variables. -local variable = token(l.VARIABLE, '$' * (l.alnum + S('_-'))^1) +lex:add_rule('variable', token(lexer.VARIABLE, '$' * (lexer.alnum + S('_-'))^1)) -- Mixins. -local mixin = token('mixin', P('@') * l.word) +lex:add_rule('mixin', token('mixin', '@' * lexer.word)) +lex:add_style('mixin', lexer.styles['function']) -local css = l.load('css') -local _rules = css._rules -table.insert(_rules, #_rules - 1, {'mixin', mixin}) -table.insert(_rules, #_rules - 1, {'line_comment', line_comment}) -table.insert(_rules, #_rules - 1, {'variable', variable}) -M._rules = _rules +-- Fold points. +lex:add_fold_point(lexer.COMMENT, lexer.fold_consecutive_lines('//')) -M._tokenstyles = css._tokenstyles -M._tokenstyles['mixin'] = l.STYLE_FUNCTION - -M._foldsymbols = css._foldsymbols - -return M +return lex |
