diff options
author | Akianonymus <anonymus.aki@gmail.com> | 2022-09-09 23:55:43 +0530 |
---|---|---|
committer | Aki <anonymus.aki@gmail.com> | 2022-09-14 11:47:08 +0530 |
commit | f986d9a0ea1feff1388b5c7d297ec3faa19036a7 (patch) | |
tree | 501de10a0709883b9facfb26960f59a181b58d01 /lua/colorizer/matcher_utils.lua | |
parent | buffer_utils: Do not error when lsp info cannot be fetched (diff) |
[FEATURE] Add support for sass variables
Import support
import using use and import keyword
multiple imports in single line
multiple imports in multiple lines ( using commas )
recursive imports
watch imports for changes and automatically rehighlight buffer
buffer variables
recursive variables support
multiple variables in single line
parse imported files only when they are changed
Loosely based on https://github.com/norcalli/nvim-colorizer.lua/pull/22/files
Diffstat (limited to 'lua/colorizer/matcher_utils.lua')
-rw-r--r-- | lua/colorizer/matcher_utils.lua | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lua/colorizer/matcher_utils.lua b/lua/colorizer/matcher_utils.lua index 29cd5e9..7803eac 100644 --- a/lua/colorizer/matcher_utils.lua +++ b/lua/colorizer/matcher_utils.lua @@ -5,6 +5,7 @@ local min, max = math.min, math.max local color_utils = require "colorizer.color_utils" local color_name_parser = color_utils.color_name_parser +local sass_name_parser = color_utils.sass_name_parser local rgba_hex_parser = color_utils.rgba_hex_parser local parser = {} @@ -13,6 +14,7 @@ parser["_rgb"] = color_utils.rgb_function_parser parser["_rgba"] = color_utils.rgba_function_parser parser["_hsl"] = color_utils.hsl_function_parser parser["_hsla"] = color_utils.hsla_function_parser +local b_hash, dollar_hash = ("#"):byte(), ("$"):byte() ---Form a trie stuct with the given prefixes ---@param matchers table: List of prefixes, {"rgb", "hsl"} @@ -21,8 +23,7 @@ parser["_hsla"] = color_utils.hsla_function_parser local function compile_matcher(matchers, matchers_trie) local trie = Trie(matchers_trie) - local b_hash = ("#"):byte() - local function parse_fn(line, i) + local function parse_fn(line, i, buf) -- prefix # if matchers.rgba_hex_parser then if line:byte(i) == b_hash then @@ -30,6 +31,13 @@ local function compile_matcher(matchers, matchers_trie) end end + -- prefix $, SASS Colour names + if matchers.sass_name_parser then + if line:byte(i) == dollar_hash then + return sass_name_parser(line, i, buf) + end + end + -- Prefix 0x, rgba, rgb, hsla, hsl local prefix = trie:longest_prefix(line, i) if prefix then @@ -55,6 +63,7 @@ local MATCHER_CACHE = {} ---@return function|boolean: function which will just parse the line for enabled parsers local function make_matcher(options) local enable_names = options.css or options.names + local enable_sass = options.sass and options.sass.enable local enable_tailwind = options.tailwind local enable_RGB = options.css or options.RGB local enable_RRGGBB = options.css or options.RRGGBB @@ -74,6 +83,7 @@ local function make_matcher(options) + ((enable_tailwind == true or enable_tailwind == "normal") and 1 or 7) + (enable_tailwind == "lsp" and 1 or 8) + (enable_tailwind == "both" and 1 or 9) + + (enable_sass and 1 or 10) if matcher_key == 0 then return false @@ -92,6 +102,10 @@ local function make_matcher(options) matchers.color_name_parser = { tailwind = options.tailwind } end + if enable_sass then + matchers.sass_name_parser = true + end + local valid_lengths = { [3] = enable_RGB, [6] = enable_RRGGBB, [8] = enable_RRGGBBAA } local minlen, maxlen for k, v in pairs(valid_lengths) do |