tree-select-node to select current node

This commit is contained in:
xenia 2023-11-12 17:26:44 +01:00
parent a78febec6c
commit fc7288a27f
2 changed files with 13 additions and 0 deletions

View File

@ -54,6 +54,11 @@ define-command tree-select-parent-node -params ..1 -docstring %{
Select the closest visible ancestor or ancestor of KIND when provided. Select the closest visible ancestor or ancestor of KIND when provided.
} %{ tree-command-with-optional-kind SelectParentNode %arg{1} } } %{ tree-command-with-optional-kind SelectParentNode %arg{1} }
define-command tree-select-node -docstring %{
tree-select-node
Select the closest visible node
} %{ tree-command-with-optional-kind SelectNode }
define-command tree-select-next-node -params ..1 -docstring %{ define-command tree-select-next-node -params ..1 -docstring %{
tree-select-next-node [<KIND>] tree-select-next-node [<KIND>]
Select the closest visible next sibling or next sibling of KIND when provided. Select the closest visible next sibling or next sibling of KIND when provided.

View File

@ -28,6 +28,7 @@ enum Op {
SelectNextNode { kind: Option<String> }, SelectNextNode { kind: Option<String> },
SelectParentNode { kind: Option<String> }, SelectParentNode { kind: Option<String> },
SelectPreviousNode { kind: Option<String> }, SelectPreviousNode { kind: Option<String> },
SelectNode,
} }
fn main() { fn main() {
@ -106,6 +107,13 @@ fn handle_request(config: &Config, request: &Request) -> String {
let mut new_ranges = Vec::new(); let mut new_ranges = Vec::new();
let filetype_config = config.get_filetype_config(&request.filetype); let filetype_config = config.get_filetype_config(&request.filetype);
match &request.op { match &request.op {
Op::SelectNode => {
for range in &ranges {
let node = tree::shrink_to_range(tree.root_node(), range);
new_ranges.push(node.range());
}
kakoune::select_ranges(&buffer, &new_ranges)
}
Op::SelectParentNode { kind } => { Op::SelectParentNode { kind } => {
let kinds = kind let kinds = kind
.as_ref() .as_ref()