fix(site): make playground autocomplete context-aware - #3544
Merged
Conversation
Derive the completion context from the JS/JSX syntax tree instead of a 30/200-char regex peek, which only saw "style" within 200 chars and so dumped component names into stylesheet blocks. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Playground completions used a 30/200-char regex peek to guess context, so it only recognized a style object when the word "style" happened to sit within 200 chars — past the first couple of properties in a
StyleSheet.createblock it fell through and suggested react-pdf components instead of style keys.Context now comes from the JS/JSX syntax tree: components for tag names (
<V,</Vi), props for attribute names (<View w), and style keys only inside astyle={{ … }}object or one nested a level underStyleSheet.create({ … }). Everywhere else — stylesheet top-level names, style values, JSX text, plain code, unrelated object literals — it now offers nothing rather than a wrong list.Verified with assertions against a real
EditorState+javascript({ jsx: true })for each of those contexts, including the multi-line stylesheet that broke the old heuristic.🤖 Generated with Claude Code