aboutsummaryrefslogtreecommitdiff
path: root/book
diff options
context:
space:
mode:
authorDawid Ciężarkiewicz2024-03-01 01:57:31 +0000
committerGitHub2024-03-01 01:57:31 +0000
commit44db25939c9361272660854878eb2fc18fcf08e8 (patch)
treeef098af33148f911fe3ef82ad9e09c3a3ff76726 /book
parentd0bb77447138f5f70f96b174a8f29045a956c8c4 (diff)
Document embracing smart-tab navigation. (#9762)
Re #4443
Diffstat (limited to 'book')
-rw-r--r--book/src/configuration.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/book/src/configuration.md b/book/src/configuration.md
index de33c1ad..d8793645 100644
--- a/book/src/configuration.md
+++ b/book/src/configuration.md
@@ -375,8 +375,25 @@ wrap-indicator = "" # set wrap-indicator to "" to hide it
### `[editor.smart-tab]` Section
+Options for navigating and editing using tab key.
| Key | Description | Default |
|------------|-------------|---------|
| `enable` | If set to true, then when the cursor is in a position with non-whitespace to its left, instead of inserting a tab, it will run `move_parent_node_end`. If there is only whitespace to the left, then it inserts a tab as normal. With the default bindings, to explicitly insert a tab character, press Shift-tab. | `true` |
| `supersede-menu` | Normally, when a menu is on screen, such as when auto complete is triggered, the tab key is bound to cycling through the items. This means when menus are on screen, one cannot use the tab key to trigger the `smart-tab` command. If this option is set to true, the `smart-tab` command always takes precedence, which means one cannot use the tab key to cycle through menu items. One of the other bindings must be used instead, such as arrow keys or `C-n`/`C-p`. | `false` |
+
+
+Due to lack of support for S-tab in some terminals, the default keybindings don't fully embrace smart-tab editing experience. If you enjoy smart-tab navigation and a terminal that supports the [Enhanced Keyboard protocol](https://github.com/helix-editor/helix/wiki/Terminal-Support#enhanced-keyboard-protocol), consider setting extra keybindings:
+
+```
+[keys.normal]
+tab = "move_parent_node_end"
+S-tab = "move_parent_node_start"
+
+[keys.insert]
+S-tab = "move_parent_node_start"
+
+[keys.select]
+tab = "extend_parent_node_end"
+S-tab = "extend_parent_node_start"
+```