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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user