1

Refresh generated neovim config

This commit is contained in:
2024-07-14 21:12:36 +02:00
parent f215ce2ab5
commit 00464e0e65
731 changed files with 6780 additions and 31110 deletions

View File

@ -15,6 +15,12 @@ Unreleased
Added
=====
- Recipes section in the manual
- Django HTML support (preliminary, will only pass through injected languages)
- WebGL Shading Language (WGSL) support
- Missing patterns for C++:
- `condition_clause`
@ -26,12 +32,22 @@ Added
- `loop_macro`
- Missing patterns for Cue:
- `dynamic`
- `index_expression`
- Missing patterns for Javascript:
- `array_pattern`
- `for_in_statement`
- `for_statement`
- Missing patterns for Rust:
- `bracketed_type`
- Missing patterns for Typescript:
- `enum_body`

View File

@ -22,8 +22,9 @@ TABLE OF CONTENTS *rb-delimiters-contents*
3.2 Custom queries ........................ |rb-delimiters-custom-query|
3.3 Custom strategies ..................... |rb-delimiters-custom-strategy|
3.4 Adding new languages .................. |rb-delimiters-custom-lang|
4. Acknowledgements .......................... |rb-delimiters-credit|
5. Further reading ........................... |rb-delimiters-reading|
4. Recipes ................................... |rb-delimiters-recipes|
5. Acknowledgements .......................... |rb-delimiters-credit|
6. Further reading ........................... |rb-delimiters-reading|
==============================================================================
@ -698,6 +699,24 @@ language. If the query is mature enough please consider upstreaming it so
everyone can benefit.
==============================================================================
RECIPES *rb-delimiters-recipes*
Various tricks and hacks which have accumulated over time.
------------------------------------------------------------------------------
DISABLE WITHOUT BLACKLISTING
If you wish to disable rainbow delimiters for a language but for whatever
reason you do not want to blacklist this language you can create a custom
query (|rb-delimiters-custom-query|) without any patterns. Then set the name
of that query as the query for that language (|rb-delimiters-query|).
Or you could name your custom query the same as the default query (by default
`rainbow-delimiters`), then you do not have to change your configuration.
==============================================================================
ACKNOWLEDGMENTS *rb-delimiters-credit*

View File

@ -16,6 +16,7 @@ rb-delimiters-intro rainbow-delimiters.txt /*rb-delimiters-intro*
rb-delimiters-logging rainbow-delimiters.txt /*rb-delimiters-logging*
rb-delimiters-query rainbow-delimiters.txt /*rb-delimiters-query*
rb-delimiters-reading rainbow-delimiters.txt /*rb-delimiters-reading*
rb-delimiters-recipes rainbow-delimiters.txt /*rb-delimiters-recipes*
rb-delimiters-setup rainbow-delimiters.txt /*rb-delimiters-setup*
rb-delimiters-strategy rainbow-delimiters.txt /*rb-delimiters-strategy*
rb-delimiters.disable rainbow-delimiters.txt /*rb-delimiters.disable*

View File

@ -15,7 +15,7 @@
---@class (exact) rainbow_delimiters.buffer_settings
---@field strategy rainbow_delimiters.strategy
---@field parser LanguageTree
---@field parser vim.treesitter.LanguageTree
---@field lang string
@ -100,6 +100,7 @@
---@field vim (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field vimdoc (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field vue (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field wgsl (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field yaml (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field zig (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---User defined language, not part of rainbow_delimiters support
@ -167,6 +168,7 @@
---@field vim (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field vimdoc (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field vue (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field wgsl (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field yaml (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field zig (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---User defined language, not part of rainbow_delimiters support
@ -234,6 +236,7 @@
---@field vim (integer | fun(bufnr: integer): integer)?
---@field vimdoc (integer | fun(bufnr: integer): integer)?
---@field vue (integer | fun(bufnr: integer): integer)?
---@field wgsl (integer | fun(bufnr: integer): integer)?
---@field yaml (integer | fun(bufnr: integer): integer)?
---@field zig (integer | fun(bufnr: integer): integer)?
---User defined language, not part of rainbow_delimiters support
@ -301,6 +304,7 @@
---| 'vim'
---| 'vimdoc'
---| 'vue'
---| 'wgsl'
---| 'yaml'
---| 'zig'
---User defined language, not part of rainbow_delimiters support

View File

@ -15,7 +15,6 @@
limitations under the License.
--]]
local api = vim.api
local get_query = vim.treesitter.query.get
local get_parser = vim.treesitter.get_parser
local log = require 'rainbow-delimiters.log'
@ -69,7 +68,7 @@ M.buffers = {}
---
---@param lang string Name of the language to get the query for
---@param bufnr integer Use this buffer as the current buffer
---@return Query? query The query object
---@return vim.treesitter.Query? query The query object
function M.get_query(lang, bufnr)
local name = config['query'][lang]
if type(name) == "function" then
@ -100,9 +99,9 @@ function M.highlight(bufnr, lang, node, hlgroup)
priority = priority(bufnr)
end
local opts = {
regtype = 'c',
regtype = 'v',
inclusive = true,
priority = priority,
priority = priority,
}
local nsid = M.nsids[lang]
@ -194,7 +193,7 @@ function M.attach(bufnr)
if not M.buffers[bnr] then return end
M.detach(bufnr)
end,
---@param child LanguageTree
---@param child vim.treesitter.LanguageTree
on_child_removed = function(child)
M.clear_namespace(bufnr, child:lang())
end,

View File

@ -165,7 +165,7 @@ end
---Update highlights for every tree in given buffer.
---@param bufnr integer # Buffer number
---@param parser LanguageTree
---@param parser vim.treesitter.LanguageTree
local function full_update(bufnr, parser)
log.debug('Performing full updated on buffer %d', bufnr)
local function callback(tree, sub_parser)
@ -179,7 +179,7 @@ end
---Sets up all the callbacks and performs an initial highlighting
---@param bufnr integer # Buffer number
---@param parser LanguageTree
---@param parser vim.treesitter.LanguageTree
---@param start_parent_lang string? # Parent language or nil
local function setup_parser(bufnr, parser, start_parent_lang)
log.debug('Setting up parser for buffer %d', bufnr)
@ -261,7 +261,7 @@ local function setup_parser(bufnr, parser, start_parent_lang)
end,
-- New languages can be added into the text at some later time, e.g.
-- code snippets in Markdown
---@param child LanguageTree
---@param child vim.treesitter.LanguageTree
on_child_added = function(child)
setup_parser(bufnr, child, lang)
end,

View File

@ -235,7 +235,7 @@ end
---Callback function to re-highlight the buffer according to the current cursor
---position.
---@param bufnr integer
---@param parser LanguageTree
---@param parser vim.treesitter.LanguageTree
local function local_rainbow(bufnr, parser)
parser:for_each_tree(function(tree, sub_parser)
update_local(bufnr, tree, sub_parser:lang())
@ -244,7 +244,7 @@ end
---Sets up all the callbacks and performs an initial highlighting
---@param bufnr integer # Buffer number
---@param parser LanguageTree
---@param parser vim.treesitter.LanguageTree
local function setup_parser(bufnr, parser)
log.debug('Setting up parser for buffer %d', bufnr)
util.for_each_child(nil, parser:lang(), parser, function(p, lang, _parent_lang)
@ -274,7 +274,7 @@ local function setup_parser(bufnr, parser)
end,
-- New languages can be added into the text at some later time, e.g.
-- code snippets in Markdown
---@param child LanguageTree
---@param child vim.treesitter.LanguageTree
on_child_added = function(child)
setup_parser(bufnr, child)
end,

View File

@ -27,8 +27,8 @@ local M = {}
---replacement.
---@param parent_lang string? # Parent language or nil
---@param lang string
---@param language_tree LanguageTree
---@param thunk fun(p: LanguageTree, lang: string, parent_lang: string?)
---@param language_tree vim.treesitter.LanguageTree
---@param thunk fun(p: vim.treesitter.LanguageTree, lang: string, parent_lang: string?)
function M.for_each_child(parent_lang, lang, language_tree, thunk)
thunk(language_tree, lang, parent_lang)
local children = language_tree:children()

View File

@ -2,6 +2,10 @@
"{" @delimiter
"}" @delimiter @sentinel) @container
(index_expression
"[" @delimiter
"]" @delimiter @sentinel) @container
(list_lit
"[" @delimiter
"]" @delimiter @sentinel) @container
@ -18,6 +22,10 @@
"(" @delimiter
")" @delimiter @sentinel) @container
(dynamic
"(" @delimiter
")" @delimiter @sentinel) @container
(parenthesized_expression
"(" @delimiter
")" @delimiter @sentinel) @container

View File

@ -131,3 +131,7 @@
(visibility_modifier
"(" @delimiter
")" @delimiter @sentinel) @container
(bracketed_type
"<" @delimiter
">" @delimiter @sentinel) @container

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/sh
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/sh
# SPDX-License-Identifier: Unlicense
# This is free and unencumbered software released into the public domain.

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
# Command substitution
echo $(basedir $(pwd))

View File

@ -23,3 +23,5 @@ elems: {
_env: string | *"dev" @tag(env,type=string)
host: "\(_env).example.com"
environments: (_env): "\(numList[1])"

View File

@ -130,6 +130,8 @@ fn main() {
let test_tuple: (u32, u32) = (0, 1);
tuple_param(test_tuple);
let a = <u32 as From<u8>>::from(1u8);
}
use level_1::{

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/sh
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/sh
# SPDX-License-Identifier: Unlicense
# This is free and unencumbered software released into the public domain.

View File

@ -2,27 +2,43 @@
local say = require 'say'
local assert = require 'luassert'
local filter = vim.fn.filter
---Globally unique key to retrieve the current Neovim channel from the test
---state.
local NVIM_STATE_KEY = {}
local function nvim(state, args, level)
local function nvim_client(state, args, _level)
assert(args.n > 0, "No Neovim channel provided to the modifier")
assert(rawget(state, NVIM_STATE_KEY) == nil, "Neovim already set")
rawset(state, NVIM_STATE_KEY, args[1])
return state
end
---Asserts that there are Rainbow Delimiters extmarks at the given position
---Asserts that there are Rainbow Delimiters extmarks at the given position.
---
---Arguments:
---
--- 1) row Zero-indexed row of the character position
--- 2) column Zero-indexed column of the character position
--- 3) lang Expected language of the extmark
--- 4) hl_group Optional, expected highlight group of the extmark
---
---@param arguments integer[] Row and column, both zero-based
local function has_extmarks_at(_state, arguments, lang)
---@return boolean
local function has_extmarks_at(_state, arguments)
local nvim = rawget(_state, NVIM_STATE_KEY)
assert(nvim ~= nil, 'No Neovim channel set, use the nvim modifier to set the channel')
local row, column = arguments[1], arguments[2]
local row, column, lang, hl_group = arguments[1], arguments[2], arguments[3], arguments[4]
local nsid = nvim:exec_lua('return require("rainbow-delimiters.lib").nsids[...]', {lang})
local extmarks = nvim:exec_lua('return vim.inspect_pos(...).extmarks', {0, row, column})
filter(extmarks, function(_, v) return v.ns_id == nsid end)
extmarks = vim.tbl_filter(function(v) return v.ns_id == nsid end, extmarks)
if hl_group then
local function same_hl_group(extmark) return extmark.opts.hl_group == hl_group end
extmarks = vim.tbl_filter(same_hl_group, extmarks)
end
return #extmarks > 0
end
@ -32,4 +48,4 @@ say:set('assertion.extmarks_at.negative', 'Expected no extmarks at (%s, %s)')
assert:register(
'assertion', 'has_extmarks_at', has_extmarks_at,
'assertion.has_extmarks_at.positive', 'assertion.has_extmarks_at.negative')
assert:register('modifier', 'nvim', nvim)
assert:register('modifier', 'nvim', nvim_client)

View File

@ -1,4 +1,4 @@
#!/nix/store/php4qidg2bxzmm79vpri025bqi0fa889-coreutils-9.5/bin/env -S -l
#!/nix/store/i7qhgc0bs725qw3wdanznfkdna4z2ns2-coreutils-9.5/bin/env -S -l
-- Equivalent to print(), but this will ensure consistent output regardless of
-- operating system.

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
curl -L https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-macos.tar.gz | tar -xz
sudo ln -s "$PWD"/nvim-macos/bin/nvim /usr/local/bin

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
wget https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-linux64.tar.gz
tar -zxf nvim-linux64.tar.gz

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
curl -L https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim-win64.zip -o nvim-win64.zip
unzip nvim-win64

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
# Can be used as a pre-push hook
# Just symlink this file to .git/hooks/pre-push

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
HERE="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
cd $HERE/..

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/bash
make_ignored() {
if [ -n "$1" ]

View File

@ -1,4 +1,4 @@
#!/nix/store/php4qidg2bxzmm79vpri025bqi0fa889-coreutils-9.5/bin/env -S -l
#!/nix/store/i7qhgc0bs725qw3wdanznfkdna4z2ns2-coreutils-9.5/bin/env -S -l
---@class Parser
---@field name string

View File

@ -1,4 +1,4 @@
#!/nix/store/php4qidg2bxzmm79vpri025bqi0fa889-coreutils-9.5/bin/env -S -l
#!/nix/store/i7qhgc0bs725qw3wdanznfkdna4z2ns2-coreutils-9.5/bin/env -S -l
---@type string|any[]
local skip_langs = vim.fn.getenv "SKIP_LOCKFILE_UPDATE_FOR_LANGS"

View File

@ -1,4 +1,4 @@
#!/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/sh
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/sh
# SPDX-License-Identifier: Unlicense
# This is free and unencumbered software released into the public domain.