fix(semantic_tokens): highlight braced stored-proc names in lappend

Treat braced lappend arguments that match custom or standard procedure names as
function tokens for semantic highlighting. This applies the same visual
highlighting as calls but does not treat the literal as executable Tcl. Previously
such braced stored-proc names were not highlighted.
This commit is contained in:
Christoph Brandau
2026-09-21 21:12:47 +02:00
parent 5c3ebc4c82
commit 4de05caac7
+10 -1
View File
@@ -4,7 +4,7 @@ from typing import List
import attrs
from common.load_data import standard_items
from tclint.commands.plugins import PluginManager
from tclint.syntax_tree import BareWord, Command, QuotedWord, Visitor
from tclint.syntax_tree import BareWord, BracedWord, Command, QuotedWord, Visitor
from tools.variable_names import variable_name
from tools.tcloo_symbols import class_symbols
from tools.tcloo_completion import _analyze
@@ -173,6 +173,15 @@ class _Highlighter(Visitor):
def visit_command(self, command: Command):
routine = command.routine
# Stored procedure names in braced lappend arguments use the same
# highlighting as calls, without treating the literal as executable Tcl.
if routine.contents in {"lappend", "::lappend"}:
for argument in command.args:
if (isinstance(argument, BracedWord)
and argument.contents in self._custom_function_names | _STANDARD_PROC_NAMES):
line, col = argument.contents_pos
self._append_token((line - 1, col - 1), len(argument.contents), "function", [])
# Highlight functions (custom or standard) when used as the routine
name = getattr(routine, "contents", None)
if name: