From a6108baec9455f223211b458e2328087e7fa3280 Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Thu, 2 Sep 2021 14:58:57 +0900
Subject: Improve grammar definitions
---
runtime/queries/julia/highlights.scm | 82 +++++++++++++++++++-----------------
runtime/queries/latex/highlights.scm | 4 +-
runtime/queries/lua/highlights.scm | 8 ++--
runtime/queries/ocaml/highlights.scm | 4 +-
runtime/queries/rust/highlights.scm | 2 +-
runtime/queries/yaml/highlights.scm | 2 +-
6 files changed, 53 insertions(+), 49 deletions(-)
(limited to 'runtime/queries')
diff --git a/runtime/queries/julia/highlights.scm b/runtime/queries/julia/highlights.scm
index a53dabe5..7b7d426c 100644
--- a/runtime/queries/julia/highlights.scm
+++ b/runtime/queries/julia/highlights.scm
@@ -1,9 +1,3 @@
-(identifier) @variable
-;; In case you want type highlighting based on Julia naming conventions (this might collide with mathematical notation)
-;((identifier) @type ; exception: mark `A_foo` sort of identifiers as variables
- ;(match? @type "^[A-Z][^_]"))
-((identifier) @constant
- (match? @constant "^[A-Z][A-Z_]{2}[A-Z_]*$"))
[
(triple_string)
@@ -28,43 +22,43 @@
(call_expression
(identifier) @function)
(call_expression
- (field_expression (identifier) @method .))
+ (field_expression (identifier) @function.method .))
(broadcast_call_expression
(identifier) @function)
(broadcast_call_expression
- (field_expression (identifier) @method .))
+ (field_expression (identifier) @function.method .))
(parameter_list
- (identifier) @parameter)
+ (identifier) @variable.parameter)
(parameter_list
(optional_parameter .
- (identifier) @parameter))
+ (identifier) @variable.parameter))
(typed_parameter
- (identifier) @parameter
+ (identifier) @variable.parameter
(identifier) @type)
(type_parameter_list
(identifier) @type)
(typed_parameter
- (identifier) @parameter
+ (identifier) @variable.parameter
(parameterized_identifier) @type)
(function_expression
- . (identifier) @parameter)
-(spread_parameter) @parameter
+ . (identifier) @variable.parameter)
+(spread_parameter) @variable.parameter
(spread_parameter
- (identifier) @parameter)
+ (identifier) @variable.parameter)
(named_argument
- . (identifier) @parameter)
+ . (identifier) @variable.parameter)
(argument_list
(typed_expression
- (identifier) @parameter
+ (identifier) @variable.parameter
(identifier) @type))
(argument_list
(typed_expression
- (identifier) @parameter
+ (identifier) @variable.parameter
(parameterized_identifier) @type))
;; Symbol expressions (:my-wanna-be-lisp-keyword)
(quote_expression
- (identifier)) @symbol
+ (identifier)) @string.special.symbol
;; Parsing error! foo (::Type) get's parsed as two quote expressions
(argument_list
@@ -76,7 +70,7 @@
(identifier) @type)
(parameterized_identifier (_)) @type
(argument_list
- (typed_expression . (identifier) @parameter))
+ (typed_expression . (identifier) @variable.parameter))
(typed_expression
(identifier) @type .)
@@ -113,13 +107,13 @@
"end" @keyword
(if_statement
- ["if" "end"] @conditional)
+ ["if" "end"] @keyword.control.conditional)
(elseif_clause
- ["elseif"] @conditional)
+ ["elseif"] @keyword.control.conditional)
(else_clause
- ["else"] @conditional)
+ ["else"] @keyword.control.conditional)
(ternary_expression
- ["?" ":"] @conditional)
+ ["?" ":"] @keyword.control.conditional)
(function_definition ["function" "end"] @keyword.function)
@@ -134,47 +128,57 @@
"type"
] @keyword
-((identifier) @keyword (#any-of? @keyword "global" "local"))
+((identifier) @keyword (match? @keyword "global|local"))
(compound_expression
["begin" "end"] @keyword)
(try_statement
- ["try" "end" ] @exception)
+ ["try" "end" ] @keyword.control.exception)
(finally_clause
- "finally" @exception)
+ "finally" @keyword.control.exception)
(catch_clause
- "catch" @exception)
+ "catch" @keyword.control.exception)
(quote_statement
["quote" "end"] @keyword)
(let_statement
["let" "end"] @keyword)
(for_statement
- ["for" "end"] @repeat)
+ ["for" "end"] @keyword.control.repeat)
(while_statement
- ["while" "end"] @repeat)
-(break_statement) @repeat
-(continue_statement) @repeat
+ ["while" "end"] @keyword.control.repeat)
+(break_statement) @keyword.control.repeat
+(continue_statement) @keyword.control.repeat
(for_binding
- "in" @repeat)
+ "in" @keyword.control.repeat)
(for_clause
- "for" @repeat)
+ "for" @keyword.control.repeat)
(do_clause
["do" "end"] @keyword)
(export_statement
- ["export"] @include)
+ ["export"] @keyword.control.import)
[
"using"
"module"
"import"
-] @include
+] @keyword.control.import
-((identifier) @include (#eq? @include "baremodule"))
+((identifier) @keyword.control.import (#eq? @keyword.control.import "baremodule"))
(((identifier) @constant.builtin) (match? @constant.builtin "^(nothing|Inf|NaN)$"))
-(((identifier) @boolean) (eq? @boolean "true"))
-(((identifier) @boolean) (eq? @boolean "false"))
+(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "true"))
+(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "false"))
+
["::" ":" "." "," "..." "!"] @punctuation.delimiter
["[" "]" "(" ")" "{" "}"] @punctuation.bracket
+
+["="] @operator
+
+(identifier) @variable
+;; In case you want type highlighting based on Julia naming conventions (this might collide with mathematical notation)
+;((identifier) @type ; exception: mark `A_foo` sort of identifiers as variables
+ ;(match? @type "^[A-Z][^_]"))
+((identifier) @constant
+ (match? @constant "^[A-Z][A-Z_]{2}[A-Z_]*$"))
diff --git a/runtime/queries/latex/highlights.scm b/runtime/queries/latex/highlights.scm
index cd04a62c..f045c82d 100644
--- a/runtime/queries/latex/highlights.scm
+++ b/runtime/queries/latex/highlights.scm
@@ -259,7 +259,7 @@
(comment) @comment
-(bracket_group) @parameter
+(bracket_group) @variable.parameter
[(math_operator) "="] @operator
@@ -312,7 +312,7 @@
key: (word) @text.reference)
(key_val_pair
- key: (_) @parameter
+ key: (_) @variable.parameter
value: (_))
["[" "]" "{" "}"] @punctuation.bracket ;"(" ")" is has no special meaning in LaTeX
diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm
index 8e27a39a..4e68cd66 100644
--- a/runtime/queries/lua/highlights.scm
+++ b/runtime/queries/lua/highlights.scm
@@ -108,7 +108,7 @@
[
(false)
(true)
-] @boolean
+] @constant.builtin.boolean
(nil) @constant.builtin
(spread) @constant ;; "..."
((identifier) @constant
@@ -116,7 +116,7 @@
;; Parameters
(parameters
- (identifier) @parameter)
+ (identifier) @variable.parameter)
; ;; Functions
(function [(function_name) (identifier)] @function)
@@ -139,8 +139,8 @@
(function_call
[
- ((identifier) @variable (method) @method)
- ((_) (method) @method)
+ ((identifier) @variable (method) @function.method)
+ ((_) (method) @function.method)
(identifier) @function
(field_expression (property_identifier) @function)
]
diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm
index 093b3cce..3bb42604 100644
--- a/runtime/queries/ocaml/highlights.scm
+++ b/runtime/queries/ocaml/highlights.scm
@@ -25,12 +25,12 @@
(external (value_name) @function)
-(method_name) @method
+(method_name) @function.method
; Variables
;----------
-(value_pattern) @parameter
+(value_pattern) @variable.parameter
; Application
;------------
diff --git a/runtime/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm
index 6b14d74d..c76d6adf 100644
--- a/runtime/queries/rust/highlights.scm
+++ b/runtime/queries/rust/highlights.scm
@@ -17,7 +17,7 @@
(escape_sequence) @escape
(primitive_type) @type.builtin
-(boolean_literal) @constant.builtin
+(boolean_literal) @constant.builtin.boolean
[
(integer_literal)
(float_literal)
diff --git a/runtime/queries/yaml/highlights.scm b/runtime/queries/yaml/highlights.scm
index 4ebb4440..2955a4ce 100644
--- a/runtime/queries/yaml/highlights.scm
+++ b/runtime/queries/yaml/highlights.scm
@@ -1,6 +1,6 @@
(block_mapping_pair key: (_) @property)
(flow_mapping (_ key: (_) @property))
-(boolean_scalar) @boolean
+(boolean_scalar) @constant.builtin.boolean
(null_scalar) @constant.builtin
(double_quote_scalar) @string
(single_quote_scalar) @string
--
cgit v1.2.3-70-g09d2
From ade1a453efe8bc6d4c5e775ba39da149ef01bb6b Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Thu, 2 Sep 2021 15:11:45 +0900
Subject: syntax: Improve go highlights
---
runtime/queries/go/highlights.scm | 39 +++++++++++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
(limited to 'runtime/queries')
diff --git a/runtime/queries/go/highlights.scm b/runtime/queries/go/highlights.scm
index 224c8b78..6e5d65a0 100644
--- a/runtime/queries/go/highlights.scm
+++ b/runtime/queries/go/highlights.scm
@@ -17,9 +17,18 @@
; Identifiers
+((identifier) @constant (match? @constant "^[A-Z][A-Z\\d_]+$"))
+(const_spec
+ name: (identifier) @constant)
+
(type_identifier) @type
(field_identifier) @property
(identifier) @variable
+(package_identifier) @variable
+
+(parameter_declaration (identifier) @variable.parameter)
+(variadic_parameter_declaration (identifier) @variable.parameter)
+
; Operators
@@ -79,10 +88,8 @@
"go"
"goto"
"if"
- "import"
"interface"
"map"
- "package"
"range"
"return"
"select"
@@ -92,6 +99,29 @@
"var"
] @keyword
+[
+ "import"
+ "package"
+] @keyword.control.import
+
+; Delimiters
+
+[
+ ":"
+ "."
+ ","
+ ";"
+] @punctuation.delimiter
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+] @punctuation.bracket
+
; Literals
[
@@ -111,7 +141,8 @@
[
(true)
(false)
- (nil)
-] @constant.builtin
+] @constant.builtin.boolean
+
+(nil) @constant.builtin
(comment) @comment
--
cgit v1.2.3-70-g09d2
From 9b9c3c77f88af1ff798739aaa3303d563bbe8174 Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Fri, 3 Sep 2021 10:39:30 +0900
Subject: runtime: Query improvements
---
runtime/queries/c/highlights.scm | 2 +-
runtime/queries/javascript/highlights.scm | 2 +-
runtime/queries/lua/highlights.scm | 8 ++++----
runtime/queries/ruby/highlights.scm | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
(limited to 'runtime/queries')
diff --git a/runtime/queries/c/highlights.scm b/runtime/queries/c/highlights.scm
index 258e07e7..2c42710f 100644
--- a/runtime/queries/c/highlights.scm
+++ b/runtime/queries/c/highlights.scm
@@ -61,7 +61,7 @@
(null) @constant
(number_literal) @number
-(char_literal) @number
+(char_literal) @string
(call_expression
function: (identifier) @function)
diff --git a/runtime/queries/javascript/highlights.scm b/runtime/queries/javascript/highlights.scm
index a18c38d9..e29829bf 100644
--- a/runtime/queries/javascript/highlights.scm
+++ b/runtime/queries/javascript/highlights.scm
@@ -87,7 +87,7 @@
(template_string)
] @string
-(regex) @string.special
+(regex) @string.regexp
(number) @number
; Tokens
diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm
index 4e68cd66..756ab3b7 100644
--- a/runtime/queries/lua/highlights.scm
+++ b/runtime/queries/lua/highlights.scm
@@ -23,27 +23,27 @@
"for"
"do"
"end"
-] @keyword.control.loop)
+] @keyword.control.repeat)
(for_in_statement
[
"for"
"do"
"end"
-] @keyword.control.loop)
+] @keyword.control.repeat)
(while_statement
[
"while"
"do"
"end"
-] @keyword.control.loop)
+] @keyword.control.repeat)
(repeat_statement
[
"repeat"
"until"
-] @keyword.control.loop)
+] @keyword.control.repeat)
(do_statement
[
diff --git a/runtime/queries/ruby/highlights.scm b/runtime/queries/ruby/highlights.scm
index 7f296f3b..8617d6f0 100644
--- a/runtime/queries/ruby/highlights.scm
+++ b/runtime/queries/ruby/highlights.scm
@@ -100,7 +100,7 @@
(bare_symbol)
] @string.special.symbol
-(regex) @string.special.regex
+(regex) @string.regexp
(escape_sequence) @escape
[
--
cgit v1.2.3-70-g09d2
From d85a8adb2747e25589de82d821cd0c4e2dd244f5 Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Mon, 6 Sep 2021 14:33:02 +0900
Subject: Improve highlighting scopes
---
runtime/queries/haskell/highlights.scm | 14 ++++++++------
runtime/queries/lua/highlights.scm | 2 +-
runtime/queries/ocaml/highlights.scm | 4 ++--
3 files changed, 11 insertions(+), 9 deletions(-)
(limited to 'runtime/queries')
diff --git a/runtime/queries/haskell/highlights.scm b/runtime/queries/haskell/highlights.scm
index ecaa2d2c..dada80b6 100644
--- a/runtime/queries/haskell/highlights.scm
+++ b/runtime/queries/haskell/highlights.scm
@@ -2,19 +2,19 @@
(operator) @operator
(exp_name (constructor) @constructor)
(constructor_operator) @operator
-(module) @module_name
+(module) @namespace
(type) @type
(type) @class
(constructor) @constructor
(pragma) @pragma
(comment) @comment
(signature name: (variable) @fun_type_name)
-(function name: (variable) @fun_name)
+(function name: (variable) @function)
(constraint class: (class_name (type)) @class)
(class (class_head class: (class_name (type)) @class))
(instance (instance_head class: (class_name (type)) @class))
-(integer) @literal
-(exp_literal (float)) @literal
+(integer) @number
+(exp_literal (float)) @number
(char) @literal
(con_unit) @literal
(con_list) @literal
@@ -39,5 +39,7 @@
"do" @keyword
"mdo" @keyword
"rec" @keyword
-"(" @paren
-")" @paren
+[
+ "("
+ ")"
+] @punctuation.bracket
diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm
index 756ab3b7..40c2be70 100644
--- a/runtime/queries/lua/highlights.scm
+++ b/runtime/queries/lua/highlights.scm
@@ -65,7 +65,7 @@
"not"
"and"
"or"
-] @keyword.operator
+] @operator
[
"="
diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm
index 3bb42604..5554574d 100644
--- a/runtime/queries/ocaml/highlights.scm
+++ b/runtime/queries/ocaml/highlights.scm
@@ -60,7 +60,7 @@
[(number) (signed_number)] @number
-(character) @character
+(character) @constant.builtin.character
(string) @string
@@ -92,7 +92,7 @@
["include" "open"] @include
-["for" "to" "downto" "while" "do" "done"] @keyword.control.loop
+["for" "to" "downto" "while" "do" "done"] @keyword.control.repeat
; Macros
;-------
--
cgit v1.2.3-70-g09d2
From 2bef245b7a1ae11f023d3e3aa82df250a3488d91 Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Mon, 6 Sep 2021 14:33:19 +0900
Subject: At least partly highlight tsx
---
languages.toml | 11 +++++++++++
runtime/queries/tsx/highlights.scm | 1 +
2 files changed, 12 insertions(+)
create mode 100644 runtime/queries/tsx/highlights.scm
(limited to 'runtime/queries')
diff --git a/languages.toml b/languages.toml
index b1c0f479..c1ddbea2 100644
--- a/languages.toml
+++ b/languages.toml
@@ -116,6 +116,17 @@ roots = []
language-server = { command = "typescript-language-server", args = ["--stdio"] }
indent = { tab-width = 2, unit = " " }
+[[language]]
+name = "tsx"
+scope = "source.tsx"
+injection-regex = "^(tsx)$" # |typescript
+file-types = ["tsx"]
+roots = []
+# TODO: highlights-jsx, highlights-params
+
+language-server = { command = "typescript-language-server", args = ["--stdio"] }
+indent = { tab-width = 2, unit = " " }
+
[[language]]
name = "css"
scope = "source.css"
diff --git a/runtime/queries/tsx/highlights.scm b/runtime/queries/tsx/highlights.scm
new file mode 100644
index 00000000..1b61e36d
--- /dev/null
+++ b/runtime/queries/tsx/highlights.scm
@@ -0,0 +1 @@
+; inherits: typescript
--
cgit v1.2.3-70-g09d2
From 4ac29434cb99b517dba3752a287c0edfe8679e7e Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Mon, 6 Sep 2021 18:13:52 +0900
Subject: syntax: Add go & rust locals, improve tree-sitter error message
---
helix-core/src/syntax.rs | 8 ++++++--
runtime/queries/go/highlights.scm | 6 +++---
runtime/queries/go/locals.scm | 30 ++++++++++++++++++++++++++++++
runtime/queries/rust/locals.scm | 17 +++++++++++++++++
theme.toml | 2 +-
5 files changed, 57 insertions(+), 6 deletions(-)
create mode 100644 runtime/queries/go/locals.scm
create mode 100644 runtime/queries/rust/locals.scm
(limited to 'runtime/queries')
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index a7a5d022..1afe0e25 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -144,8 +144,12 @@ impl LanguageConfiguration {
&highlights_query,
&injections_query,
&locals_query,
- )
- .unwrap(); // TODO: no unwrap
+ );
+
+ let config = match config {
+ Ok(config) => config,
+ Err(err) => panic!("{}", err),
+ }; // TODO: avoid panic
config.configure(scopes);
Some(Arc::new(config))
}
diff --git a/runtime/queries/go/highlights.scm b/runtime/queries/go/highlights.scm
index 6e5d65a0..3129c4b2 100644
--- a/runtime/queries/go/highlights.scm
+++ b/runtime/queries/go/highlights.scm
@@ -21,14 +21,14 @@
(const_spec
name: (identifier) @constant)
+(parameter_declaration (identifier) @variable.parameter)
+(variadic_parameter_declaration (identifier) @variable.parameter)
+
(type_identifier) @type
(field_identifier) @property
(identifier) @variable
(package_identifier) @variable
-(parameter_declaration (identifier) @variable.parameter)
-(variadic_parameter_declaration (identifier) @variable.parameter)
-
; Operators
diff --git a/runtime/queries/go/locals.scm b/runtime/queries/go/locals.scm
new file mode 100644
index 00000000..d240e2b7
--- /dev/null
+++ b/runtime/queries/go/locals.scm
@@ -0,0 +1,30 @@
+; Scopes
+
+(block) @local.scope
+
+; Definitions
+
+(parameter_declaration (identifier) @local.definition)
+(variadic_parameter_declaration (identifier) @local.definition)
+
+(short_var_declaration
+ left: (expression_list
+ (identifier) @local.definition))
+
+(var_spec
+ name: (identifier) @local.definition)
+
+(for_statement
+ (range_clause
+ left: (expression_list
+ (identifier) @local.definition)))
+
+(const_declaration
+ (const_spec
+ name: (identifier) @local.definition))
+
+; References
+
+(identifier) @local.reference
+(field_identifier) @local.reference
+
diff --git a/runtime/queries/rust/locals.scm b/runtime/queries/rust/locals.scm
new file mode 100644
index 00000000..6428f9b4
--- /dev/null
+++ b/runtime/queries/rust/locals.scm
@@ -0,0 +1,17 @@
+; Scopes
+
+(block) @local.scope
+
+; Definitions
+
+(parameter
+ (identifier) @local.definition)
+
+(let_declaration
+ pattern: (identifier) @local.definition)
+
+(closure_parameters (identifier)) @local.definition
+
+; References
+(identifier) @local.reference
+
diff --git a/theme.toml b/theme.toml
index 3166b2d6..867a0d2c 100644
--- a/theme.toml
+++ b/theme.toml
@@ -9,7 +9,7 @@ special = "honey"
property = "white"
variable = "lavender"
# variable = "almond" # TODO: metavariables only
-"variable.parameter" = "lavender"
+"variable.parameter" = { fg = "lavender", modifiers = ["underlined"] }
"variable.builtin" = "mint"
type = "white"
"type.builtin" = "white" # TODO: distinguish?
--
cgit v1.2.3-70-g09d2
From 4cc562318a9987d58384fdb4e88e5a1f59f25a19 Mon Sep 17 00:00:00 2001
From: Blaž Hrastnik
Date: Tue, 7 Sep 2021 13:00:52 +0900
Subject: Improve docs, fix up a few highlight scopes
---
book/book.toml | 3 +-
book/src/configuration.md | 13 +++
book/src/from-vim.md | 2 +
book/src/install.md | 4 +-
book/src/keymap.md | 100 ++++++++---------
book/src/themes.md | 202 +++++++++++++++++++++--------------
book/theme/css/general.css | 13 +++
book/theme/css/variables.css | 24 +++--
book/theme/highlight.css | 101 +++++++-----------
runtime/queries/ocaml/highlights.scm | 2 +-
runtime/queries/rust/highlights.scm | 2 +-
runtime/themes/dark_plus.toml | 1 +
runtime/themes/monokai.toml | 1 +
theme.toml | 4 +-
14 files changed, 265 insertions(+), 207 deletions(-)
(limited to 'runtime/queries')
diff --git a/book/book.toml b/book/book.toml
index 3ccaf71e..2277a0bd 100644
--- a/book/book.toml
+++ b/book/book.toml
@@ -3,8 +3,9 @@ authors = ["Blaž Hrastnik"]
language = "en"
multilingual = false
src = "src"
-theme = "colibri"
edit-url-template = "https://github.com/helix-editor/helix/tree/master/book/{path}?mode=edit"
[output.html]
cname = "docs.helix-editor.com"
+default-theme = "colibri"
+preferred-dark-theme = "colibri"
diff --git a/book/src/configuration.md b/book/src/configuration.md
index 00dfbbd8..5a28362d 100644
--- a/book/src/configuration.md
+++ b/book/src/configuration.md
@@ -5,6 +5,19 @@ To override global configuration parameters, create a `config.toml` file located
* Linux and Mac: `~/.config/helix/config.toml`
* Windows: `%AppData%\helix\config.toml`
+## Editor
+
+`[editor]` section of the config.
+
+| Key | Description | Default |
+|--|--|---------|
+| `scrolloff` | Number of lines of padding around the edge of the screen when scrolling. | `3` |
+| `mouse` | Enable mouse mode. | `true` |
+| `middle-click-paste` | Middle click paste support. | `true` |
+| `scroll-lines` | Number of lines to scroll per scroll wheel step. | `3` |
+| `shell` | Shell to use when running external commands. | Unix: `["sh", "-c"]`
Windows: `["cmd", "/C"]` |
+| `line-number` | Line number display (`absolute`, `relative`) | `absolute` |
+
## LSP
To display all language server messages in the status line add the following to your `config.toml`:
diff --git a/book/src/from-vim.md b/book/src/from-vim.md
index 8e9bbac3..09f33386 100644
--- a/book/src/from-vim.md
+++ b/book/src/from-vim.md
@@ -7,4 +7,6 @@ going to act on (a word, a paragraph, a line, etc) is selected first and the
action itself (delete, change, yank, etc) comes second. A cursor is simply a
single width selection.
+See also Kakoune's [Migrating from Vim](https://github.com/mawww/kakoune/wiki/Migrating-from-Vim).
+
> TODO: Mention texobjects, surround, registers
diff --git a/book/src/install.md b/book/src/install.md
index cd9c980e..b9febbcc 100644
--- a/book/src/install.md
+++ b/book/src/install.md
@@ -23,7 +23,9 @@ shell for working on Helix.
### Arch Linux
-Binary packages are available on AUR:
+Releases are available in the `community` repository.
+
+Packages are also available on AUR:
- [helix-bin](https://aur.archlinux.org/packages/helix-bin/) contains the pre-built release
- [helix-git](https://aur.archlinux.org/packages/helix-git/) builds the master branch
diff --git a/book/src/keymap.md b/book/src/keymap.md
index 861e46ac..51e56eaa 100644
--- a/book/src/keymap.md
+++ b/book/src/keymap.md
@@ -4,7 +4,7 @@
### Movement
-> NOTE: `f`, `F`, `t` and `T` are not confined to the current line.
+> NOTE: Unlike vim, `f`, `F`, `t` and `T` are not confined to the current line.
| Key | Description | Command |
| ----- | ----------- | ------- |
@@ -28,14 +28,14 @@
| `PageDown` | Move page down | `page_down` |
| `Ctrl-u` | Move half page up | `half_page_up` |
| `Ctrl-d` | Move half page down | `half_page_down` |
-| `Ctrl-i` | Jump forward on the jumplist TODO: conflicts tab | `jump_forward` |
+| `Ctrl-i` | Jump forward on the jumplist | `jump_forward` |
| `Ctrl-o` | Jump backward on the jumplist | `jump_backward` |
| `v` | Enter [select (extend) mode](#select--extend-mode) | `select_mode` |
| `g` | Enter [goto mode](#goto-mode) | N/A |
| `m` | Enter [match mode](#match-mode) | N/A |
| `:` | Enter command mode | `command_mode` |
| `z` | Enter [view mode](#view-mode) | N/A |
-| `Ctrl-w` | Enter [window mode](#window-mode) (maybe will be remove for spc w w later) | N/A |
+| `Ctrl-w` | Enter [window mode](#window-mode) | N/A |
| `Space` | Enter [space mode](#space-mode) | N/A |
| `K` | Show documentation for the item under the cursor | `hover` |
@@ -66,6 +66,16 @@
| `d` | Delete selection | `delete_selection` |
| `c` | Change selection (delete and enter insert mode) | `change_selection` |
+#### Shell
+
+| Key | Description | Command |
+| ------ | ----------- | ------- |
+| |
| Pipe each selection through shell command, replacing with output | `shell_pipe` |
+| A-|
| Pipe each selection into shell command, ignoring output | `shell_pipe_to` |
+| `!` | Run shell command, inserting output before each selection | `shell_insert_output` |
+| `A-!` | Run shell command, appending output after each selection | `shell_append_output` |
+
+
### Selection manipulation
| Key | Description | Command |
@@ -87,17 +97,10 @@
| | Expand selection to parent syntax node TODO: pick a key | `expand_selection` |
| `J` | Join lines inside selection | `join_selections` |
| `K` | Keep selections matching the regex TODO: overlapped by hover help | `keep_selections` |
+| `$` | Pipe each selection into shell command, keep selections where command returned 0 | `shell_keep_pipe` |
| `Space` | Keep only the primary selection TODO: overlapped by space mode | `keep_primary_selection` |
| `Ctrl-c` | Comment/uncomment the selections | `toggle_comments` |
-### Insert Mode
-
-| Key | Description | Command |
-| ----- | ----------- | ------- |
-| `Escape` | Switch to normal mode | `normal_mode` |
-| `Ctrl-x` | Autocomplete | `completion` |
-| `Ctrl-w` | Delete previous word | `delete_word_backward` |
-
### Search
> TODO: The search implementation isn't ideal yet -- we don't support searching
@@ -110,38 +113,11 @@ in reverse, or searching via smartcase.
| `N` | Add next search match to selection | `extend_search_next` |
| `*` | Use current selection as the search pattern | `search_selection` |
-### Unimpaired
-
-Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaired)
-
-| Key | Description | Command |
-| ----- | ----------- | ------- |
-| `[d` | Go to previous diagnostic | `goto_prev_diag` |
-| `]d` | Go to next diagnostic | `goto_next_diag` |
-| `[D` | Go to first diagnostic in document | `goto_first_diag` |
-| `]D` | Go to last diagnostic in document | `goto_last_diag` |
-| `[space` | Add newline above | `add_newline_above` |
-| `]space` | Add newline below | `add_newline_below` |
-
-### Shell
+### Minor modes
-| Key | Description | Command |
-| ------ | ----------- | ------- |
-| `\|` | Pipe each selection through shell command, replacing with output | `shell_pipe` |
-| `A-\|` | Pipe each selection into shell command, ignoring output | `shell_pipe_to` |
-| `!` | Run shell command, inserting output before each selection | `shell_insert_output` |
-| `A-!` | Run shell command, appending output after each selection | `shell_append_output` |
-| `$` | Pipe each selection into shell command, keep selections where command returned 0 | `shell_keep_pipe` |
-
-## Select / extend mode
-
-I'm still pondering whether to keep this mode or not. It changes movement
-commands to extend the existing selection instead of replacing it.
-
-> NOTE: It's a bit confusing at the moment because extend hasn't been
-> implemented for all movement commands yet.
+These sub-modes are accessible from normal mode and typically switch back to normal mode after a command.
-## View mode
+#### View mode
View mode is intended for scrolling and manipulating the view without changing
the selection.
@@ -155,7 +131,7 @@ the selection.
| `j` | Scroll the view downwards | `scroll_down` |
| `k` | Scroll the view upwards | `scroll_up` |
-## Goto mode
+#### Goto mode
Jumps to various locations.
@@ -177,7 +153,7 @@ Jumps to various locations.
| `i` | Go to implementation | `goto_implementation` |
| `a` | Go to the last accessed/alternate file | `goto_last_accessed_file` |
-## Match mode
+#### Match mode
Enter this mode using `m` from normal mode. See the relavant section
in [Usage](./usage.md) for an explanation about [surround](./usage.md#surround)
@@ -192,11 +168,9 @@ and [textobject](./usage.md#textobject) usage.
| `a` `