From 49c3d35726ad48bfc2af1b895fa86710df1869f9 Mon Sep 17 00:00:00 2001 From: RedFlameKen Date: Mon, 30 Jun 2025 16:50:14 +0800 Subject: [PATCH] fix: Ignore Java annotations --- lua/treesitter-context/context.lua | 23 ++++++++++++----------- queries/java/context.scm | 7 +++++++ test/lang/test.java | 8 ++++---- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lua/treesitter-context/context.lua b/lua/treesitter-context/context.lua index 6f12e82b..ac8dd4a2 100644 --- a/lua/treesitter-context/context.lua +++ b/lua/treesitter-context/context.lua @@ -377,18 +377,19 @@ function M.get(winid) local range0 = context_range(parent, bufnr, query) if range0 and range_is_valid(range0) then local range, lines = get_text_for_range(range0, bufnr) - if range_is_valid(range) then - local last_context = context_ranges[#context_ranges] - if last_context and parent_start_row == last_context[1] then - -- If there are multiple contexts on the same row, then prefer the inner - contexts_height = contexts_height - util.get_range_height(last_context) - context_ranges[#context_ranges] = nil - context_lines[#context_lines] = nil + if range[1] < contexts_end_row then + if range_is_valid(range) then + local last_context = context_ranges[#context_ranges] + if last_context and parent_start_row == last_context[1] then + -- If there are multiple contexts on the same row, then prefer the inner + contexts_height = contexts_height - util.get_range_height(last_context) + context_ranges[#context_ranges] = nil + context_lines[#context_lines] = nil + end + contexts_height = contexts_height + util.get_range_height(range) + context_ranges[#context_ranges + 1] = range + context_lines[#context_lines + 1] = lines end - - contexts_height = contexts_height + util.get_range_height(range) - context_ranges[#context_ranges + 1] = range - context_lines[#context_lines + 1] = lines end end end diff --git a/queries/java/context.scm b/queries/java/context.scm index d9667f8c..da924e36 100644 --- a/queries/java/context.scm +++ b/queries/java/context.scm @@ -3,6 +3,12 @@ ) @context (method_declaration + type: (_) @context.start + body: (_) @context.end +) @context + +(constructor_declaration + name: (_) @context.start body: (_) @context.end ) @context @@ -15,6 +21,7 @@ ) @context (class_declaration + name: (_) @context.start body: (_) @context.end ) @context diff --git a/test/lang/test.java b/test/lang/test.java index e3e24721..554a57ef 100644 --- a/test/lang/test.java +++ b/test/lang/test.java @@ -3,15 +3,15 @@ import stuff1; import stuff2; -@class_annot_1 // {{CONTEXT}} -@class_annot_2 // {{CONTEXT}} +@class_annot_1 +@class_annot_2 public class MyClass { // {{CONTEXT}} // {{CURSOR}} - @method_annot_1 // {{CONTEXT}} - @method_annot_2 // {{CONTEXT}} + @method_annot_1 + @method_annot_2 public void my_method(int param) { // {{CONTEXT}}