From a494f47a5df543a3ab8d6530a5acbc2a5bd04d44 Mon Sep 17 00:00:00 2001 From: Skyler Hawthorne Date: Fri, 25 Feb 2022 03:36:54 -0500 Subject: Configurable auto pairs (#1624) * impl auto pairs config Implements configuration for which pairs of tokens get auto completed. In order to help with this, the logic for when *not* to auto complete has been generalized from a specific hardcoded list of characters to simply testing if the next/prev char is alphanumeric. It is possible to configure a global list of pairs as well as at the language level. The language config will take precedence over the global config. * rename AutoPair -> Pair * clean up insert_char command * remove Rc * remove some explicit cloning with another impl * fix lint * review comments * global auto-pairs = false takes precedence over language settings * make clippy happy * print out editor config on startup * move auto pairs accessor into Document * rearrange auto pair doc comment * use pattern in Froms--- book/src/configuration.md | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'book/src') diff --git a/book/src/configuration.md b/book/src/configuration.md index 8048f548..8f6e8bbb 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -36,7 +36,6 @@ hidden = false | `shell` | Shell to use when running external commands. | Unix: `["sh", "-c"]`
Windows: `["cmd", "/C"]` | | `line-number` | Line number display: `absolute` simply shows each line's number, while `relative` shows the distance from the current line. When unfocused or in insert mode, `relative` will still show absolute line numbers. | `absolute` | | `smart-case` | Enable smart case regex searching (case insensitive unless pattern contains upper case characters) | `true` | -| `auto-pairs` | Enable automatic insertion of pairs to parenthese, brackets, etc. | `true` | | `auto-completion` | Enable automatic pop up of auto-completion. | `true` | | `idle-timeout` | Time in milliseconds since last keypress before idle timers trigger. Used for autocompletion, set to 0 for instant. | `400` | | `completion-trigger-len` | The min-length of word under cursor to trigger autocompletion | `2` | @@ -76,6 +75,49 @@ available, which is not defined by default. |`git-exclude` | Enables reading `.git/info/exclude` files. | true |`max-depth` | Set with an integer value for maximum depth to recurse. | Defaults to `None`. +### `[editor.auto-pairs]` Section + +Enable automatic insertion of pairs to parentheses, brackets, etc. Can be +a simple boolean value, or a specific mapping of pairs of single characters. + +| Key | Description | +| --- | ----------- | +| `false` | Completely disable auto pairing, regardless of language-specific settings +| `true` | Use the default pairs: (){}[]''""`` +| Mapping of pairs | e.g. `{ "(" = ")", "{" = "}", ... }` + +Example + +```toml +[editor.auto-pairs] +'(' = ')' +'{' = '}' +'[' = ']' +'"' = '"' +'`' = '`' +'<' = '>' +``` + +Additionally, this setting can be used in a language config. Unless +the editor setting is `false`, this will override the editor config in +documents with this language. + +Example `languages.toml` that adds <> and removes '' + +```toml +[[language]] +name = "rust" + +[language.auto-pairs] +'(' = ')' +'{' = '}' +'[' = ']' +'"' = '"' +'`' = '`' +'<' = '>' +``` + + ## LSP To display all language server messages in the status line add the following to your `config.toml`: -- cgit v1.2.3-70-g09d2