diff options
Diffstat (limited to 'book/src')
-rw-r--r-- | book/src/SUMMARY.md | 1 | ||||
-rw-r--r-- | book/src/configuration.md | 91 | ||||
-rw-r--r-- | book/src/keymap.md | 20 | ||||
-rw-r--r-- | book/src/remapping.md | 48 | ||||
-rw-r--r-- | book/src/themes.md | 94 |
5 files changed, 134 insertions, 120 deletions
diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 3ea1fb9a..5dea3112 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -3,6 +3,7 @@ - [Installation](./install.md) - [Usage](./usage.md) - [Configuration](./configuration.md) + - [Themes](./themes.md) - [Keymap](./keymap.md) - [Key Remapping](./remapping.md) - [Hooks](./hooks.md) diff --git a/book/src/configuration.md b/book/src/configuration.md index 51a08e03..087d3fbb 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -1,97 +1,10 @@ # Configuration +To override global configuration parameters create a `config.toml` file located in your config directory (i.e `~/.config/helix/config.toml`). + ## LSP To disable language server progress report from being displayed in the status bar add this option to your `config.toml`: ```toml lsp-progress = false ``` - -## Theme - -Use a custom theme by placing a theme.toml in your config directory (i.e ~/.config/helix/theme.toml). The default theme.toml can be found [here](https://github.com/helix-editor/helix/blob/master/theme.toml), and user submitted themes [here](https://github.com/helix-editor/helix/blob/master/contrib/themes). - -Styles in theme.toml are specified of in the form: - -```toml -key = { fg = "#ffffff", bg = "#000000", modifiers = ["bold", "italic"] } -``` - -where `name` represents what you want to style, `fg` specifies the foreground color, `bg` the background color, and `modifiers` is a list of style modifiers. `bg` and `modifiers` can be omitted to defer to the defaults. - -To specify only the foreground color: - -```toml -key = "#ffffff" -``` - -if the key contains a dot `'.'`, it must be quoted to prevent it being parsed as a [dotted key](https://toml.io/en/v1.0.0#keys). - -```toml -"key.key" = "#ffffff" -``` - -Possible modifiers: - -| Modifier | -| --- | -| `bold` | -| `dim` | -| `italic` | -| `underlined` | -| `slow_blink` | -| `rapid_blink` | -| `reversed` | -| `hidden` | -| `crossed_out` | - -Possible keys: - -| Key | Notes | -| --- | --- | -| `attribute` | | -| `keyword` | | -| `keyword.directive` | Preprocessor directives (\#if in C) | -| `namespace` | | -| `punctuation` | | -| `punctuation.delimiter` | | -| `operator` | | -| `special` | | -| `property` | | -| `variable` | | -| `variable.parameter` | | -| `type` | | -| `type.builtin` | | -| `constructor` | | -| `function` | | -| `function.macro` | | -| `function.builtin` | | -| `comment` | | -| `variable.builtin` | | -| `constant` | | -| `constant.builtin` | | -| `string` | | -| `number` | | -| `escape` | Escaped characters | -| `label` | For lifetimes | -| `module` | | -| `ui.background` | | -| `ui.linenr` | | -| `ui.linenr.selected` | For lines with cursors | -| `ui.statusline` | | -| `ui.popup` | | -| `ui.window` | | -| `ui.help` | | -| `ui.text` | | -| `ui.text.focus` | | -| `ui.menu.selected` | | -| `ui.selection` | For selections in the editing area | -| `warning` | LSP warning | -| `error` | LSP error | -| `info` | LSP info | -| `hint` | LSP hint | - -These keys match [tree-sitter scopes](https://tree-sitter.github.io/tree-sitter/syntax-highlighting#theme). We half-follow the common scopes from [macromates language grammars](https://macromates.com/manual/en/language_grammars) with some differences. - -For a given highlight produced, styling will be determined based on the longest matching theme key. So it's enough to provide function to highlight `function.macro` and `function.builtin` as well, but you can use more specific scopes to highlight specific cases differently. - diff --git a/book/src/keymap.md b/book/src/keymap.md index aee4b3a4..1e159f81 100644 --- a/book/src/keymap.md +++ b/book/src/keymap.md @@ -69,9 +69,8 @@ | `;` | Collapse selection onto a single cursor | | `Alt-;` | Flip selection cursor and anchor | | `%` | Select entire file | -| `x` | Select current line | -| `X` | Extend to next line | -| `[` | Expand selection to parent syntax node TODO: pick a key | +| `x` | Select current line, if already selected, extend to next line | +| `` | Expand selection to parent syntax node TODO: pick a key | | `J` | join lines inside selection | | `K` | keep selections matching the regex TODO: overlapped by hover help | | `Space` | keep only the primary selection TODO: overlapped by space mode | @@ -155,10 +154,10 @@ This layer is similar to vim keybindings as kakoune does not support window. | Key | Description | | ----- | ------------- | -| `w`, `ctrl-w` | Switch to next window | -| `v`, `ctrl-v` | Vertical right split | -| `h`, `ctrl-h` | Horizontal bottom split | -| `q`, `ctrl-q` | Close current window | +| `w`, `Ctrl-w` | Switch to next window | +| `v`, `Ctrl-v` | Vertical right split | +| `h`, `Ctrl-h` | Horizontal bottom split | +| `q`, `Ctrl-q` | Close current window | ## Space mode @@ -171,6 +170,11 @@ This layer is a kludge of mappings I had under leader key in neovim. | `s` | Open symbol picker (current document) | | `w` | Enter [window mode](#window-mode) | | `space` | Keep primary selection TODO: it's here because space mode replaced it | +| `p` | paste system clipboard after selections | +| `P` | paste system clipboard before selections | +| `y` | join and yank selections to clipboard | +| `Y` | yank main selection to clipboard | +| `R` | replace selections by clipboard contents | # Picker @@ -184,4 +188,4 @@ Keys to use within picker. | `Enter` | Open selected | | `Ctrl-h` | Open horizontally | | `Ctrl-v` | Open vertically | -| `Escape`, `ctrl-c` | Close picker | +| `Escape`, `Ctrl-c` | Close picker | diff --git a/book/src/remapping.md b/book/src/remapping.md index 610d5179..1b724be7 100644 --- a/book/src/remapping.md +++ b/book/src/remapping.md @@ -22,27 +22,29 @@ A-x = "normal_mode" # Maps Alt-X to enter normal mode Control, Shift and Alt modifiers are encoded respectively with the prefixes `C-`, `S-` and `A-`. Special keys are encoded as follows: -* Backspace => "backspace" -* Space => "space" -* Return/Enter => "ret" -* < => "lt" -* \> => "gt" -* \+ => "plus" -* \- => "minus" -* ; => "semicolon" -* % => "percent" -* Left => "left" -* Right => "right" -* Up => "up" -* Home => "home" -* End => "end" -* Page Up => "pageup" -* Page Down => "pagedown" -* Tab => "tab" -* Back Tab => "backtab" -* Delete => "del" -* Insert => "ins" -* Null => "null" -* Escape => "esc" +| Key name | Representation | +| --- | --- | +| Backspace | `"backspace"` | +| Space | `"space"` | +| Return/Enter | `"ret"` | +| < | `"lt"` | +| \> | `"gt"` | +| \+ | `"plus"` | +| \- | `"minus"` | +| ; | `"semicolon"` | +| % | `"percent"` | +| Left | `"left"` | +| Right | `"right"` | +| Up | `"up"` | +| Home | `"home"` | +| End | `"end"` | +| Page | `"pageup"` | +| Page | `"pagedown"` | +| Tab | `"tab"` | +| Back | `"backtab"` | +| Delete | `"del"` | +| Insert | `"ins"` | +| Null | `"null"` | +| Escape | `"esc"` | -Commands can be found in the source code at `../../helix-term/src/commands.rs` +Commands can be found in the source code at [`helix-term/src/commands.rs`](https://github.com/helix-editor/helix/blob/master/helix-term/src/commands.rs) diff --git a/book/src/themes.md b/book/src/themes.md new file mode 100644 index 00000000..80fee3d7 --- /dev/null +++ b/book/src/themes.md @@ -0,0 +1,94 @@ +# Themes + +First you'll need to place selected themes in your `themes` directory (i.e `~/.config/helix/themes`), the directory might have to be created beforehand. + +To use a custom theme add `theme = <name>` to your [`config.toml`](./configuration.md) or override it during runtime using `:theme <name>`. + +The default theme.toml can be found [here](https://github.com/helix-editor/helix/blob/master/theme.toml), and user submitted themes [here](https://github.com/helix-editor/helix/blob/master/runtime/themes). + +## Creating a theme + +First create a file with the name of your theme as file name (i.e `mytheme.toml`) and place it in your `themes` directory (i.e `~/.config/helix/themes`). + +Each line in the theme file is specified as below: + +```toml +key = { fg = "#ffffff", bg = "#000000", modifiers = ["bold", "italic"] } +``` + +where `key` represents what you want to style, `fg` specifies the foreground color, `bg` the background color, and `modifiers` is a list of style modifiers. `bg` and `modifiers` can be omitted to defer to the defaults. + +To specify only the foreground color: + +```toml +key = "#ffffff" +``` + +if the key contains a dot `'.'`, it must be quoted to prevent it being parsed as a [dotted key](https://toml.io/en/v1.0.0#keys). + +```toml +"key.key" = "#ffffff" +``` + +Possible modifiers: + +| Modifier | +| --- | +| `bold` | +| `dim` | +| `italic` | +| `underlined` | +| `slow\_blink` | +| `rapid\_blink` | +| `reversed` | +| `hidden` | +| `crossed\_out` | + +Possible keys: + +| Key | Notes | +| --- | --- | +| `attribute` | | +| `keyword` | | +| `keyword.directive` | Preprocessor directives (\#if in C) | +| `namespace` | | +| `punctuation` | | +| `punctuation.delimiter` | | +| `operator` | | +| `special` | | +| `property` | | +| `variable` | | +| `variable.parameter` | | +| `type` | | +| `type.builtin` | | +| `constructor` | | +| `function` | | +| `function.macro` | | +| `function.builtin` | | +| `comment` | | +| `variable.builtin` | | +| `constant` | | +| `constant.builtin` | | +| `string` | | +| `number` | | +| `escape` | Escaped characters | +| `label` | For lifetimes | +| `module` | | +| `ui.background` | | +| `ui.linenr` | | +| `ui.statusline` | | +| `ui.popup` | | +| `ui.window` | | +| `ui.help` | | +| `ui.text` | | +| `ui.text.focus` | | +| `ui.menu.selected` | | +| `ui.selection` | For selections in the editing area | +| `warning` | LSP warning | +| `error` | LSP error | +| `info` | LSP info | +| `hint` | LSP hint | + +These keys match [tree-sitter scopes](https://tree-sitter.github.io/tree-sitter/syntax-highlighting#theme). We half-follow the common scopes from [macromates language grammars](https://macromates.com/manual/en/language_grammars) with some differences. + +For a given highlight produced, styling will be determined based on the longest matching theme key. So it's enough to provide function to highlight `function.macro` and `function.builtin` as well, but you can use more specific scopes to highlight specific cases differently. |