question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Continued completion engine and intellisense upgrades

See original GitHub issue

Just pulling this out of my PR for visibility and tracking, but this is a list of things I marked as TODOs for continuing to upgrade the completion engine and intellisense in VS to support newer Avalonia features and be smarter about the suggestions offered. Some of these are things implemented in the core completion engine, and some are more on the VS intellisense side (or both).

Just to recap what was in #275:

  • Improved completion of pseudoclasses, including getting all pseudoclasses from the attribute
  • Fixed handling completion on ‘.’ character so it does swallow the ‘.’ in something like Window.Resources
  • Fixed the double intellisense popup when adding xml namespaces

These are still left:

  • find and list all defined resources instead of using static, hard-coded ones (hopefully, if not will add to future todos) that don’t really apply to anything outside the old default theme
    • Ideally with this we need to make sure at least the active document (maybe even the current project) can update the suggestions more frequently without requiring a build (which is how the metadata is currently invalidated) as if you add a resource to the current file, I would expect it to immediately show without having to build the project. External assemblies could probably be cached like normal on build only since they’re static unless the ref is explicitly updated
  • Filter out non-public types from suggestions
    • @workgroupengineering Now that the completion engine is in this repo, you should be able to complete your PR (#216)
  • Fix getting properties in nested style selectors. Nested style selectors without a type Selector=“^:pointerover” will fail to offer valid suggestions
  • Add better context awareness for suggestions, including:
    • filtering the suggestions to only include what makes sense at the given point in the document (this is mostly already how it is, but I think there are a few places where this could be improved, as an example, don’t suggest VerticalContentAlignment unless it absolutely makes sense to do so (only suggest VerticalAlignment)
    • In a Style Selector, we could probably make it only suggest things that make sense given the cursor position, e.g., don’t suggest /template/ or pseudoclasses at the start of the selector, no pseudoclasses directly after /template/, etc
    • In #275, I’ve also added some code to tell VS to auto select the first suggestion in the list - previously, it wouldn’t usually do this and you had to physically interact (mouse or arrow keys) to get the completion to work. We could probably improve this to guess the best item and select it instead based on context
    • Only offering pseudoclasses valid for a particular control
    • Don’t suggest properties that are already set on a given control, or within a particular Style block
  • Fix editing existing text and accepting a completion
    • Currently if you type ponterover and try to correct it, adding the i will suggest :pointerover, but accepting that completion will end up with pointerovernterover as it just inserts the suggested text and doesn’t check anything for replacing
  • When adding an xml namespace, don’t accept a completion on the ‘.’ character as it may complete on the wrong namespaces
  • Allow hiding members/classes with [EditorBrowsable]

Issue Analytics

  • State:open
  • Created 9 months ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
maxkatz6commented, Dec 13, 2022

It feels like at some point we will have to start using XamlX compiler for the XAML editor as well. For multiple reasons:

0reactions
maxkatz6commented, Apr 26, 2023

Possibly some const blob of bytes can be generated as an alternative, which is serialized by the compiler and deserialized by the previewer. Should save some size, but not too much as we still won’t be able to reuse key string values (which already exist in binary data section).

Read more comments on GitHub >

github_iconTop Results From Across the Web

IntelliSense in Visual Studio Code
VS Code IntelliSense offers different types of completions, including language server suggestions, snippets, and simple word based textual completions. Icon ...
Read more >
IntelliSense in Visual Studio
IntelliSense is a code-completion aid that includes a number of features: List Members, Parameter Info, Quick Info, and Complete Word.
Read more >
Type less, code more with IntelliCode completions
We hope you'll help us continue to improve by giving the newly enhanced completions a try and letting us know what you think....
Read more >
IntelliSense in VS Code
The IntelliSense code editing feature in the ServiceNow Extensions for VS Code extension provides intelligent code completions which provide auto-completion ...
Read more >
Auto Completions Speed Up in Java on Visual Studio Code
Speed improvements with the new server were said to boost all three phases of the code completion engine: searching the indexer to find ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found