From 7f7219b379a4e38ff6ad2c4e80c45b63a7c078dc Mon Sep 17 00:00:00 2001 From: Steven Sojka Date: Sat, 15 Aug 2020 06:35:05 -0500 Subject: feat(definitions): allow setting of scope --- CONTRIBUTING.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'CONTRIBUTING.md') diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 62a38b71c..0e72dcb66 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -177,3 +177,30 @@ Mainly for markup languages. @scope @reference ``` + +#### Definition Scope + +You can set the scope of a definition by setting the `scope` property on the definition. + +For example, a javascript function declaration creates a scope. The function name is captured as the definition. +This means that the function definition would only be available WITHIN the scope of the function, which is not the case. +The definition can be used in the scope the function was defined in. + +```javascript +function doSomething() {} + +doSomething(); // Should point to the declaration as the definition +``` + +```scheme +(function_declaration + ((identifier) @definition.var) + (set! "definition.var.scope" "parent")) +``` + +Possible scope values are: + +- `parent`: The definition is valid in the containing scope and one more scope above that scope +- `global`: The definition is valid in the root scope +- `local`: The definition is valid in the containing scope. This is the default behavior + -- cgit v1.2.3-70-g09d2