mirror of
https://github.com/foambubble/foam.git
synced 2026-04-24 03:01:01 -04:00
* Add the snippet parsing code from VSCode
From 95be30b3ac
* Remove `override` keyword
This is a TypeScript 4.3 feature, but Foam is not there yet
* Use `SnippetParser` to find Foam variables
* Return `Variable` objects from `findFoamVariables`
* Make `SnippetParser` resolve async
* Implement a `VariableResolver`
* Add start/end positions to `Variable`s
* Substitute based on indices, not regex
* Remove limitation warning from docs
* Merge `FoamVariableResolver` and `Resolver`
* Remove `extraVariablesToResolve`
It was no longer being used for `FOAM_TITLE`, and `FOAM_SELECTED_TEXT` didn't need to have it set either, so long as it appeared in `givenValues`, which it does.
* Add name filter to `resolveVariables`
You cannot call `resolve` on a `Variable` without modifying it, even if your `VariableResolver` doesn't know how to resolve the `Variable`.
For example, a `Transform` with a default value will modify the `Varible`'s `children`, even if the `VariableResolver` does not resolve a value.
Instead, we add a name filter, so that we don't resolve any `Variable`s that aren't Foam variables.
* Return `undefined` when the `VariableResolver` cannot resolve a `Variable`
This is how a `VariableResolver` is supposed to behave in these cases.
* Move variable substitution into `TextmateSnippet`
That way, the Foam `VariableResolver` code doesn't need to keep track of the text, nor interact with the `Variable` `pos`/`endPos`.