mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
add_newline unimpaired mapping (#653)
* added some keymaps * remove * remove wrong mappings * remove * wrong import * use enum * correct line ending * added to book * column
This commit is contained in:
parent
ae3f936611
commit
825bceeab6
@ -110,10 +110,9 @@ ### Search
|
||||
| `N` | Add next search match to selection | `extend_search_next` |
|
||||
| `*` | Use current selection as the search pattern | `search_selection` |
|
||||
|
||||
### Diagnostics
|
||||
### Unimpaired
|
||||
|
||||
> NOTE: `[` and `]` will likely contain more pair mappings in the style of
|
||||
> [vim-unimpaired](https://github.com/tpope/vim-unimpaired)
|
||||
Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaired)
|
||||
|
||||
| Key | Description | Command |
|
||||
| ----- | ----------- | ------- |
|
||||
@ -121,6 +120,8 @@ ### Diagnostics
|
||||
| `]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
|
||||
|
||||
|
@ -227,6 +227,8 @@ pub fn doc(&self) -> &'static str {
|
||||
select_mode, "Enter selection extend mode",
|
||||
exit_select_mode, "Exit selection mode",
|
||||
goto_definition, "Goto definition",
|
||||
add_newline_above, "Add newline above",
|
||||
add_newline_below, "Add newline below",
|
||||
goto_type_definition, "Goto type definition",
|
||||
goto_implementation, "Goto implementation",
|
||||
goto_file_start, "Goto file start/line",
|
||||
@ -4473,3 +4475,37 @@ fn suspend(_cx: &mut Context) {
|
||||
#[cfg(not(windows))]
|
||||
signal_hook::low_level::raise(signal_hook::consts::signal::SIGTSTP).unwrap();
|
||||
}
|
||||
|
||||
fn add_newline_above(cx: &mut Context) {
|
||||
add_newline_impl(cx, Open::Above);
|
||||
}
|
||||
|
||||
fn add_newline_below(cx: &mut Context) {
|
||||
add_newline_impl(cx, Open::Below)
|
||||
}
|
||||
|
||||
fn add_newline_impl(cx: &mut Context, open: Open) {
|
||||
let count = cx.count();
|
||||
let (view, doc) = current!(cx.editor);
|
||||
let selection = doc.selection(view.id);
|
||||
let text = doc.text();
|
||||
let slice = text.slice(..);
|
||||
|
||||
let changes = selection.into_iter().map(|range| {
|
||||
let (start, end) = range.line_range(slice);
|
||||
let line = match open {
|
||||
Open::Above => start,
|
||||
Open::Below => end + 1,
|
||||
};
|
||||
let pos = text.line_to_char(line);
|
||||
(
|
||||
pos,
|
||||
pos,
|
||||
Some(doc.line_ending.as_str().repeat(count).into()),
|
||||
)
|
||||
});
|
||||
|
||||
let transaction = Transaction::change(text, changes);
|
||||
doc.apply(&transaction, view.id);
|
||||
doc.append_changes_to_history(view.id);
|
||||
}
|
||||
|
@ -412,10 +412,12 @@ fn default() -> Keymaps {
|
||||
"[" => { "Left bracket"
|
||||
"d" => goto_prev_diag,
|
||||
"D" => goto_first_diag,
|
||||
"space" => add_newline_above,
|
||||
},
|
||||
"]" => { "Right bracket"
|
||||
"d" => goto_next_diag,
|
||||
"D" => goto_last_diag,
|
||||
"space" => add_newline_below,
|
||||
},
|
||||
|
||||
"/" => search,
|
||||
|
Loading…
Reference in New Issue
Block a user