This commit is contained in:
Emilia Simmons 2024-12-18 14:40:43 +00:00 committed by GitHub
commit 93e36ef330
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 1 deletions

View File

@ -222,6 +222,7 @@ function matchit#Match_wrapper(word, forward, mode) range
let view = winsaveview() let view = winsaveview()
call cursor(0, curcol + 1) call cursor(0, curcol + 1)
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on")) if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
\ || skip =~ 'v:lua.vim.treesitter' && !exists('b:ts_highlight')
let skip = "0" let skip = "0"
else else
execute "if " .. skip .. "| let skip = '0' | endif" execute "if " .. skip .. "| let skip = '0' | endif"
@ -678,6 +679,7 @@ fun! matchit#MultiMatch(spflag, mode)
let middlepat = substitute(middlepat, ',', '\\|', 'g') let middlepat = substitute(middlepat, ',', '\\|', 'g')
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on")) if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
\ || skip =~ 'v:lua.vim.treesitter' && !exists('b:ts_highlight')
let skip = '0' let skip = '0'
else else
try try
@ -760,10 +762,16 @@ endfun
" S:foo becomes (current syntax item) !~ foo " S:foo becomes (current syntax item) !~ foo
" r:foo becomes (line before cursor) =~ foo " r:foo becomes (line before cursor) =~ foo
" R:foo becomes (line before cursor) !~ foo " R:foo becomes (line before cursor) !~ foo
" t:foo becomes (current treesitter captures) =~ foo
" T:foo becomes (current treesitter captures) !~ foo
fun! s:ParseSkip(str) fun! s:ParseSkip(str)
let skip = a:str let skip = a:str
if skip[1] == ":" if skip[1] == ":"
if skip[0] ==# "s" if skip[0] ==# "t" || skip[0] ==# "s" && &syntax != 'on' && exists("b:ts_highlight")
let skip = "match(v:lua.vim.treesitter.get_captures_at_cursor(), '" .. strpart(skip,2) .. "') != -1"
elseif skip[0] ==# "T" || skip[0] ==# "S" && &syntax != 'on' && exists("b:ts_highlight")
let skip = "match(v:lua.vim.treesitter.get_captures_at_cursor(), '" .. strpart(skip,2) .. "') == -1"
elseif skip[0] ==# "s"
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .. let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" ..
\ strpart(skip,2) .. "'" \ strpart(skip,2) .. "'"
elseif skip[0] ==# "S" elseif skip[0] ==# "S"

View File

@ -237,6 +237,8 @@ supported by matchit.vim:
S:foo becomes (current syntax item) !~ foo S:foo becomes (current syntax item) !~ foo
r:foo becomes (line before cursor) =~ foo r:foo becomes (line before cursor) =~ foo
R:foo becomes (line before cursor) !~ foo R:foo becomes (line before cursor) !~ foo
t:foo becomes (current treesitter captures) =~ foo
T:foo becomes (current treesitter captures) !~ foo
(The "s" is meant to suggest "syntax", and the "r" is meant to suggest (The "s" is meant to suggest "syntax", and the "r" is meant to suggest
"regular expression".) "regular expression".)

View File

@ -109,6 +109,10 @@ func s:Highlight_Matching_Pair()
if !has("syntax") || !exists("g:syntax_on") if !has("syntax") || !exists("g:syntax_on")
let s_skip = "0" let s_skip = "0"
elseif exists("b:ts_highlight") && &syntax != 'on'
let s_skip = "match(v:lua.vim.treesitter.get_captures_at_cursor(), '"
\ .. 'string\|character\|singlequote\|escape\|symbol\|comment'
\ .. "') != -1"
else else
" Build an expression that detects whether the current cursor position is " Build an expression that detects whether the current cursor position is
" in certain syntax types (string, comment, etc.), for use as " in certain syntax types (string, comment, etc.), for use as