mirror of https://github.com/helix-editor/helix
Compare commits
5 Commits
fab79322c9
...
8c5dd7f0c3
Author | SHA1 | Date |
---|---|---|
|
8c5dd7f0c3 | |
|
395a71bf53 | |
|
1e4bf6704a | |
|
52696de6de | |
|
d1ad8a2fe9 |
|
@ -335,17 +335,37 @@ fn handle_close(doc: &Rope, selection: &Selection, pair: &Pair) -> Transaction {
|
|||
/// handle cases where open and close is the same, or in triples ("""docstring""")
|
||||
fn handle_same(doc: &Rope, selection: &Selection, pair: &Pair) -> Transaction {
|
||||
let mut end_ranges = SmallVec::with_capacity(selection.len());
|
||||
|
||||
let mut offs = 0;
|
||||
|
||||
let transaction = Transaction::change_by_selection(doc, selection, |start_range| {
|
||||
let cursor = start_range.cursor(doc.slice(..));
|
||||
let mut len_inserted = 0;
|
||||
let has_at_least_two_before = cursor >= 2
|
||||
&& doc.get_char(cursor - 1) == Some(pair.open)
|
||||
&& doc.get_char(cursor - 2) == Some(pair.open);
|
||||
let has_at_least_three_before =
|
||||
has_at_least_two_before && cursor >= 3 && doc.get_char(cursor - 3) == Some(pair.open);
|
||||
|
||||
let next_char = doc.get_char(cursor);
|
||||
|
||||
let change = if next_char == Some(pair.open) {
|
||||
// return transaction that moves past close
|
||||
(cursor, cursor, None) // no-op
|
||||
// (from, to, replacement)
|
||||
let change = if next_char == Some(pair.close) {
|
||||
// moves past close
|
||||
(cursor, cursor, None) // no-op - don't insert char
|
||||
} else if has_at_least_three_before {
|
||||
// don't auto pair more than triple quotes
|
||||
(cursor, cursor, Some(Tendril::from_iter([pair.close]))) // only insert one char (normal operation)
|
||||
} else if has_at_least_two_before {
|
||||
// exactly two before: auto-pair 3 quotes
|
||||
// `''|` -> `'''|'''`
|
||||
(
|
||||
cursor,
|
||||
cursor,
|
||||
Some(Tendril::from_iter([
|
||||
// first is the default keystroke, the rest 3 are auto-pair
|
||||
pair.close, pair.close, pair.close, pair.close,
|
||||
])),
|
||||
)
|
||||
} else {
|
||||
let mut pair_str = Tendril::new();
|
||||
pair_str.push(pair.open);
|
||||
|
|
|
@ -1022,6 +1022,7 @@ shebangs = []
|
|||
comment-token = "#"
|
||||
language-servers = [ "nil", "nixd" ]
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
formatter = { command = "nixfmt" }
|
||||
|
||||
[[grammar]]
|
||||
name = "nix"
|
||||
|
@ -4243,10 +4244,11 @@ comment-token = "#"
|
|||
block-comment-tokens = ["#-", "-#"]
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
language-servers = ["koto-ls"]
|
||||
formatter = {command = "koto", args = ["--format"]}
|
||||
|
||||
[[grammar]]
|
||||
name = "koto"
|
||||
source = { git = "https://github.com/koto-lang/tree-sitter-koto", rev = "b420f7922d0d74905fd0d771e5b83be9ee8a8a9a" }
|
||||
source = { git = "https://github.com/koto-lang/tree-sitter-koto", rev = "2ffc77c14f0ac1674384ff629bfc207b9c57ed89" }
|
||||
|
||||
[[language]]
|
||||
name = "gpr"
|
||||
|
|
|
@ -5,11 +5,13 @@
|
|||
"*"
|
||||
"/"
|
||||
"%"
|
||||
"^"
|
||||
"+="
|
||||
"-="
|
||||
"*="
|
||||
"/="
|
||||
"%="
|
||||
"^="
|
||||
"=="
|
||||
"!="
|
||||
"<"
|
||||
|
@ -99,12 +101,18 @@
|
|||
(export
|
||||
(identifier) @namespace)
|
||||
|
||||
(call
|
||||
function: (identifier) @function.method)
|
||||
(chain
|
||||
start: (identifier) @function)
|
||||
|
||||
(chain
|
||||
lookup: (identifier) @variable.other.member)
|
||||
|
||||
(call
|
||||
function: (identifier)) @function
|
||||
|
||||
(call_arg
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
[
|
||||
(true)
|
||||
(false)
|
||||
|
@ -139,13 +147,10 @@
|
|||
|
||||
(self) @variable.builtin
|
||||
|
||||
(variable
|
||||
type: (identifier) @type)
|
||||
(type
|
||||
_ @type)
|
||||
|
||||
(arg
|
||||
(_ (identifier) @variable.parameter))
|
||||
|
||||
(ellipsis) @variable.parameter
|
||||
|
||||
(function
|
||||
output_type: (identifier) @type)
|
||||
|
|
|
@ -11,10 +11,6 @@
|
|||
(call_args
|
||||
((call_arg) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(chain
|
||||
call: (tuple
|
||||
((element) @parameter.inside . ","? @parameter.around) @parameter.around))
|
||||
|
||||
(map
|
||||
((entry_inline) @entry.inside . ","? @entry.around) @entry.around)
|
||||
|
||||
|
|
Loading…
Reference in New Issue