feat(vim): add goto definition keybind back, fix cut word descriptions, removed unnecessary is_not_word_char_vim
This commit is contained in:
parent
af9fe4953b
commit
5c352be7d0
2 changed files with 8 additions and 41 deletions
|
@ -43,6 +43,7 @@
|
||||||
[":", "open_command_palette"],
|
[":", "open_command_palette"],
|
||||||
["p", "paste_internal_vim"],
|
["p", "paste_internal_vim"],
|
||||||
|
|
||||||
|
["gd", "goto_definition"],
|
||||||
["gi", "goto_implementation"],
|
["gi", "goto_implementation"],
|
||||||
["gy", "goto_type_definition"],
|
["gy", "goto_type_definition"],
|
||||||
["gg", "move_buffer_begin"],
|
["gg", "move_buffer_begin"],
|
||||||
|
|
|
@ -1939,42 +1939,8 @@ pub const Editor = struct {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_not_word_char_vim(c: []const u8) bool {
|
|
||||||
if (c.len == 0) return true;
|
|
||||||
return switch (c[0]) {
|
|
||||||
'=' => true,
|
|
||||||
'"' => true,
|
|
||||||
'\'' => true,
|
|
||||||
'/' => true,
|
|
||||||
'\\' => true,
|
|
||||||
'*' => true,
|
|
||||||
':' => true,
|
|
||||||
'.' => true,
|
|
||||||
',' => true,
|
|
||||||
'(' => true,
|
|
||||||
')' => true,
|
|
||||||
'{' => true,
|
|
||||||
'}' => true,
|
|
||||||
'[' => true,
|
|
||||||
']' => true,
|
|
||||||
';' => true,
|
|
||||||
'|' => true,
|
|
||||||
'!' => true,
|
|
||||||
'?' => true,
|
|
||||||
'&' => true,
|
|
||||||
'-' => true,
|
|
||||||
'<' => true,
|
|
||||||
'>' => true,
|
|
||||||
else => false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_non_word_char_at_cursor_vim(root: Buffer.Root, cursor: *const Cursor, metrics: Buffer.Metrics) bool {
|
|
||||||
return cursor.test_at(root, is_not_word_char_vim, metrics);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_white_space(c: []const u8) bool {
|
fn is_white_space(c: []const u8) bool {
|
||||||
return (c.len == 0) or (c[0] == ' ');
|
return (c.len == 0) or (c[0] == ' ') or (c[0] == '\t');
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_white_space_at_cursor(root: Buffer.Root, cursor: *const Cursor, metrics: Buffer.Metrics) bool {
|
fn is_white_space_at_cursor(root: Buffer.Root, cursor: *const Cursor, metrics: Buffer.Metrics) bool {
|
||||||
|
@ -1989,8 +1955,8 @@ pub const Editor = struct {
|
||||||
const next_is_white_space = is_white_space_at_cursor(root, &next, metrics);
|
const next_is_white_space = is_white_space_at_cursor(root, &next, metrics);
|
||||||
if(next_is_white_space) return true;
|
if(next_is_white_space) return true;
|
||||||
|
|
||||||
const curr_is_non_word = is_non_word_char_at_cursor_vim(root, cursor, metrics);
|
const curr_is_non_word = is_non_word_char_at_cursor(root, cursor, metrics);
|
||||||
const next_is_non_word = is_non_word_char_at_cursor_vim(root, &next, metrics);
|
const next_is_non_word = is_non_word_char_at_cursor(root, &next, metrics);
|
||||||
return curr_is_non_word != next_is_non_word;
|
return curr_is_non_word != next_is_non_word;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2027,8 +1993,8 @@ pub const Editor = struct {
|
||||||
const next_is_white_space = is_white_space_at_cursor(root, &next, metrics);
|
const next_is_white_space = is_white_space_at_cursor(root, &next, metrics);
|
||||||
if(next_is_white_space) return true;
|
if(next_is_white_space) return true;
|
||||||
|
|
||||||
const curr_is_non_word = is_non_word_char_at_cursor_vim(root, cursor, metrics);
|
const curr_is_non_word = is_non_word_char_at_cursor(root, cursor, metrics);
|
||||||
const next_is_non_word = is_non_word_char_at_cursor_vim(root, &next, metrics);
|
const next_is_non_word = is_non_word_char_at_cursor(root, &next, metrics);
|
||||||
return curr_is_non_word != next_is_non_word;
|
return curr_is_non_word != next_is_non_word;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2734,7 +2700,7 @@ pub const Editor = struct {
|
||||||
try self.update_buf(root);
|
try self.update_buf(root);
|
||||||
self.clamp();
|
self.clamp();
|
||||||
}
|
}
|
||||||
pub const cut_word_left_vim_meta = .{ .description = "Cut next character to internal clipboard" };
|
pub const cut_word_left_vim_meta = .{ .description = "Cut previous word to internal clipboard (vim)" };
|
||||||
|
|
||||||
pub fn delete_word_right(self: *Self, _: Context) Result {
|
pub fn delete_word_right(self: *Self, _: Context) Result {
|
||||||
const b = try self.buf_for_update();
|
const b = try self.buf_for_update();
|
||||||
|
@ -2751,7 +2717,7 @@ pub const Editor = struct {
|
||||||
try self.update_buf(root);
|
try self.update_buf(root);
|
||||||
self.clamp();
|
self.clamp();
|
||||||
}
|
}
|
||||||
pub const cut_word_right_vim_meta = .{ .description = "Cut next character to internal clipboard" };
|
pub const cut_word_right_vim_meta = .{ .description = "Cut next word to internal clipboard (vim)" };
|
||||||
|
|
||||||
pub fn delete_to_begin(self: *Self, _: Context) Result {
|
pub fn delete_to_begin(self: *Self, _: Context) Result {
|
||||||
const b = try self.buf_for_update();
|
const b = try self.buf_for_update();
|
||||||
|
|
Loading…
Add table
Reference in a new issue