diff --git a/book/src/configuration.md b/book/src/configuration.md index 3b78481e31036..5032f2bcc0b14 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -65,6 +65,7 @@ Its settings will be merged with the configuration directory `config.toml` and t | `workspace-lsp-roots` | Directories relative to the workspace root that are treated as LSP roots. Should only be set in `.helix/config.toml` | `[]` | | `default-line-ending` | The line ending to use for new documents. Can be `native`, `lf`, `crlf`, `ff`, `cr` or `nel`. `native` uses the platform's native line ending (`crlf` on Windows, otherwise `lf`). | `native` | | `insert-final-newline` | Whether to automatically insert a trailing line-ending on write if missing | `true` | +| `indent-heuristic` | How the indentation for a newly inserted line is computed: `simple` just copies the indentation level from the previous line, `tree-sitter` computes the indentation based on the syntax tree and `hybrid` combines both approaches | `hybrid` ### `[editor.statusline]` Section diff --git a/book/src/guides/indent.md b/book/src/guides/indent.md index bd037bb053308..a65ac5ac1f48c 100644 --- a/book/src/guides/indent.md +++ b/book/src/guides/indent.md @@ -12,6 +12,15 @@ Note that it matters where these added indents begin. For example, multiple indent level increases that start on the same line only increase the total indent level by 1. See [Capture types](#capture-types). +By default, Helix uses the `hybrid` indentation heuristic. This means that +indent queries are not used to compute the expected absolute indentation of a +line but rather the expected difference in indentation between the new and an +already existing line. This difference is then added to the actual indentation +of the already existing line. Since this makes errors in the indent queries +harder to find, it is recommended to disable it when testing via +`:set indent-heuristic tree-sitter`. The rest of this guide assumes that +the `tree-sitter` heuristic is used. + ## Indent queries When Helix is inserting a new line through `o`, `O`, or ``, to determine