The following feature are not yet implemented. Please contact Mikayla if you are interested in helping out.
- simple project system. go to definition should open target file in the context of the original root.
- toolbar for picking root evaluation context to use for current file
- switch between related files command
- snippets
- formatter
- outlining tagger that's better than the one from textmate
- document outline tool window
- breadcrumbs bar
- editorconfig for formatting
- improve the background parser scheduling
- keep parsed expressions in the AST instead of reparsing as needed
- switch the XDom to use a red-green tree like Roslyn
- implement some incremental parsing. it should be fairly straightforward to do it for a subset of insertions, especially without < chars
- Improve implicit and explicit triggering for file path segments
- trigger intellisense on |, indexed against | separated comparands
- use RID graph for RID completion
- context based filtering of disallowed/existing attributes and elements
- well known flavor GUIDs
- operators e.g. And/Or/-> and other non-memorable syntax e.g. static property function
- auto insert matching quotes and parens in expressions
- automatically update closing tag when editing opening tag name
- make metadata completion more context-specific
- make completion in conditions more robust
- add parameter completion for item/property/condition functions
- Check for invalid chars in paths
- Warn on assigning wrongly typed expression to property or task arg
- condition comparand validation, including |-separated properties
- validate condition functions e.g. Exists
- RID validation
- NuGet package ID validation
- error when assigning values to reserved properties and metadata
- check type of expressions assigned to properties/metadata/task params
- item and property function names and arguments
- check metadata refs have sufficient context
- Compute type of expression/subexpression when possible
- Some basic coercion e.g. string+path = path
- Add logic to figure out context of unqualified metadata
- DefaultItemExcludes assignment that doesn't include previous value
- Unnecessary package references
- Use property before it's assigned
- remove empty propertygroup/itemgroup
- move conditioned property identical under all conditions to unconditioned propertygroup
- defining a target that's subsequently redefined (e.g. BeforeBuild in sdk style project)
- convert SDK into imports
- create non-existent target
- move property to directory props
- move property/item to new conditioned propertygroup/itemgroup
- group items by type (preserving dependencies)
- sort items/properties in group by identity (preserving dependencies)
- merge adjacent itemgroups/propertygroups
- convert BeforeFoo target override to -> BeforeTargets=Foo
- Publish json schema schema
- Classname type with metadata for which msbuild metadata/property points to the assembly
- Metadata for filename type with expected extensions
- Metadata for filename type with property to use as base directory
- Infer default values from default
- Infer type from assignment from known type and comparison to known type
- Infer bool type from bool literal assigment
- API to dump barebones schema from inferred symbols
- pull task definitions from current roslyn workspace, if any
- arbitrary metadata on properties/items/types that analyzers/fixes can use
Although there are hundred of unit tests covering the lower level details, there are few/no tests in the following areas:
- validation
- schema based completion
- completion for various value types
- function completion & resolution
- schema inference
- schema composition
- In addition to brute forcing imports, resolve them using real MSBuild engine
- Completion of inline C#
- parameter info tooltip when completing values
- properly handle MSBuild escaping and XML entities
- better highlighting colors
- add documentation for task parameters
- fix some of the FIXMEs
- Fix MSBuildProjectExtensionsPath eval with nonstandard intermediate dir
- Go to definition on tasks
- Rename command
- Do some perf work, cache inferred schemas?