Classify function assignment names as function semantic tokens - #756
Open
wmsci wants to merge 1 commit into
Open
Classify function assignment names as function semantic tokens#756wmsci wants to merge 1 commit into
wmsci wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi,
I noticed this issue with the syntax highlighting while using languageserver with the R extension for Visual Studio Code in Cursor. I tried fixing it myself and it works on my machine, so I'm opening this PR in case it is useful.
Problem
When a function is defined with
fn <- function() {}and later used as a function call,fn(), those two uses offnget different semantic token types.The function call is a
SYMBOL_FUNCTION_CALL, so it is markedfunction. The name on the left of the assignment is only aSYMBOL, so it is markedvariable.Themes colour those types separately, so the same name is coloured differently at the definition and at the function call.
Completion already treats these assigned names as functions (
scope_completion_functs_xpathinR/completion.R).Before
After
Fix
After the default parse-data map, reclassify a
SYMBOLas afunctiontoken with thedeclarationmodifier when it is the left-hand name of:fn <- function() {}fn = function() {}fn <- \(x) {}The same rule is applied on the XML fallback path.
Testing
tests/testthat/test-semantic-tokens.R