Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'book/src/syntax-aware-motions.md')
| -rw-r--r-- | book/src/syntax-aware-motions.md | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/book/src/syntax-aware-motions.md b/book/src/syntax-aware-motions.md deleted file mode 100644 index 17f396fb..00000000 --- a/book/src/syntax-aware-motions.md +++ /dev/null @@ -1,66 +0,0 @@ -## Moving the selection with syntax-aware motions - -`Alt-p`, `Alt-o`, `Alt-i`, and `Alt-n` (or `Alt` and arrow keys) allow you to move the -selection according to its location in the syntax tree. For example, many languages have the -following syntax for function calls: - -```js -func(arg1, arg2, arg3); -``` - -A function call might be parsed by tree-sitter into a tree like the following. - -```tsq -(call - function: (identifier) ; func - arguments: - (arguments ; (arg1, arg2, arg3) - (identifier) ; arg1 - (identifier) ; arg2 - (identifier))) ; arg3 -``` - -Use `:tree-sitter-subtree` to view the syntax tree of the primary selection. In -a more intuitive tree format: - -``` - ┌────┐ - │call│ - ┌─────┴────┴─────┐ - │ │ -┌─────▼────┐ ┌────▼────┐ -│identifier│ │arguments│ -│ "func" │ ┌────┴───┬─────┴───┐ -└──────────┘ │ │ │ - │ │ │ - ┌─────────▼┐ ┌────▼─────┐ ┌▼─────────┐ - │identifier│ │identifier│ │identifier│ - │ "arg1" │ │ "arg2" │ │ "arg3" │ - └──────────┘ └──────────┘ └──────────┘ -``` - -If you have a selection that wraps `arg1` (see the tree above), and you use -`Alt-n`, it will select the next sibling in the syntax tree: `arg2`. - -```js -// before -func([arg1], arg2, arg3) -// after -func(arg1, [arg2], arg3); -``` - -Similarly, `Alt-o` will expand the selection to the parent node, in this case, the -arguments node. - -```js -func[(arg1, arg2, arg3)]; -``` - -There is also some nuanced behavior that prevents you from getting stuck on a -node with no sibling. When using `Alt-p` with a selection on `arg1`, the previous -child node will be selected. In the event that `arg1` does not have a previous -sibling, the selection will move up the syntax tree and select the previous -element. As a result, using `Alt-p` with a selection on `arg1` will move the -selection to the "func" `identifier`. - -[lang-support]: ./lang-support.md |