Skip to content

Commit eeaf598

Browse files
committed
fix(lsp): correct line numbers for tree-sitter highlights in injected code
- Update row numbers for highlights in injected code sections - Improve handling of highlight lines in injected code to maintain correct line numbers
1 parent efe9a27 commit eeaf598

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

pkg/lsp/lsp_treesitter.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -741,13 +741,21 @@ func (inject *ts_inject) hl() {
741741
t := NewTreeSitterParse(inject.lang, v.Code)
742742
if t.load_ts_def() {
743743
t.Loadfile(t.tsdef.tslang, nil)
744+
745+
var HlLine = make(TreesiterSymbolLine)
744746
for k, l := range t.HlLine {
745-
newline := int(v.Begin.Row) + k
746-
if line, ok := inject.hline[newline]; ok {
747+
for i := range l {
748+
l[i].Begin.Row = v.Begin.Row + l[i].Begin.Row
749+
l[i].End.Row = v.Begin.Row + l[i].End.Row
750+
}
751+
HlLine[k+int(v.Begin.Row)] = l
752+
}
753+
for k, l := range HlLine {
754+
if line, ok := inject.hline[k]; ok {
747755
line = append(line, l...)
748-
inject.hline[newline] = line
756+
inject.hline[k] = line
749757
} else {
750-
inject.hline[newline] = l
758+
inject.hline[k] = l
751759
}
752760
}
753761
}
@@ -783,7 +791,7 @@ func (ts TreeSitter) get_higlight(queryname string) (ret TreesiterSymbolLine, er
783791
v.hl()
784792
}
785793
for _, inj := range inejcts {
786-
for lienno,v:=range inj.hline {
794+
for lienno, v := range inj.hline {
787795
if line, ok := ret[lienno]; ok {
788796
line = append(line, v...)
789797
ret[lienno] = line

0 commit comments

Comments
 (0)