diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-24 14:33:45 +0200 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | f13420ccff1dfca4a2e42c43f56f66b240dd1d2e (patch) | |
| tree | fa402b473e4665f9529bf30e90d2293fd0e3cfcf /plugin | |
| parent | fix: always normalize paths (diff) | |
| download | nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar.gz nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar.bz2 nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar.lz nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar.xz nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.tar.zst nvim-treesitter-f13420ccff1dfca4a2e42c43f56f66b240dd1d2e.zip | |
fix: remove upstreamed directives
`#inject-lang!` and `#trim!`; fix `set-lang-from-mimetype`
Diffstat (limited to 'plugin')
| -rw-r--r-- | plugin/query_predicates.lua | 102 |
1 files changed, 4 insertions, 98 deletions
diff --git a/plugin/query_predicates.lua b/plugin/query_predicates.lua index 8c7685faf..7cd8fb618 100644 --- a/plugin/query_predicates.lua +++ b/plugin/query_predicates.lua @@ -30,12 +30,13 @@ local mimetype_aliases = { ---@param pred string[] ---@return boolean|nil query.add_directive('set-lang-from-mimetype!', function(match, _, bufnr, pred, metadata) - local capture_id = pred[2] - local node = match[capture_id] + local id = pred[2] + local node = match[id] if not node then return end - local type_attr_value = vim.treesitter.get_node_text(node, bufnr) + + local type_attr_value = vim.treesitter.get_node_text(node, bufnr, { metadata = metadata[id] }) local configured = mimetype_aliases[type_attr_value] if configured then metadata['injection.language'] = configured @@ -44,98 +45,3 @@ query.add_directive('set-lang-from-mimetype!', function(match, _, bufnr, pred, m metadata['injection.language'] = parts[#parts] end end, true) - -local injection_aliases = { - ex = 'elixir', - pl = 'perl', - sh = 'bash', - uxn = 'uxntal', - ts = 'typescript', -} - ----@param match (TSNode|nil)[] ----@param _ string ----@param bufnr integer ----@param pred string[] ----@return boolean|nil -query.add_directive('set-lang-from-info-string!', function(match, _, bufnr, pred, metadata) - local capture_id = pred[2] - local node = match[capture_id] - if not node then - return - end - - local injection_alias = vim.treesitter.get_node_text(node, bufnr) - local filetype = vim.filetype.match({ filename = 'a.' .. injection_alias }) - metadata['injection.language'] = filetype or injection_aliases[injection_alias] or injection_alias -end, true) - -query.add_directive('downcase!', function(match, _, bufnr, pred, metadata) - local text, key, value ---@type string|string[], string, string|integer - - if #pred == 3 then - -- (#downcase! @capture "key") - key = pred[3] - value = metadata[pred[2]][key] - else - -- (#downcase! "key") - key = pred[2] - value = metadata[key] - end - - if type(value) == 'string' then - text = value - else - local node = match[value] - text = vim.treesitter.get_node_text(node, bufnr) or '' - end - - if #pred == 3 then - metadata[pred[2]][key] = string.lower(text) - else - metadata[key] = string.lower(text) - end -end, true) - --- Trim blank lines from end of the region --- Arguments are the captures to trim. ----@param match (TSNode|nil)[] ----@param _ string ----@param bufnr integer ----@param pred string[] ----@param metadata table ----TODO(clason): upstream -query.add_directive('trim!', function(match, _, bufnr, pred, metadata) - for _, id in ipairs({ select(2, unpack(pred)) }) do - local node = match[id] - if not node then - return - end - - local start_row, start_col, end_row, end_col = node:range() - - -- Don't trim if region ends in middle of a line - if end_col ~= 0 then - return - end - - while true do - -- As we only care when end_col == 0, always inspect one line above end_row. - local end_line = vim.api.nvim_buf_get_lines(bufnr, end_row - 1, end_row, true)[1] - - if end_line ~= '' then - break - end - - end_row = end_row - 1 - end - - -- If this produces an invalid range, we just skip it. - if start_row < end_row or (start_row == end_row and start_col <= end_col) then - if not metadata[id] then - metadata[id] = {} - end - metadata[id].range = { start_row, start_col, end_row, end_col } - end - end -end, true) |
