Group LSP parameter navigation on language rail
This commit is contained in:
+29
-1
@@ -36,6 +36,8 @@ pub const Action = union(enum) {
|
||||
language_format_policy,
|
||||
language_organize_imports,
|
||||
language_code_actions,
|
||||
language_parameter_next,
|
||||
language_parameter_previous,
|
||||
diagnostics_open,
|
||||
diagnostics_next,
|
||||
diagnostics_previous,
|
||||
@@ -106,7 +108,7 @@ pub const Leader = struct {
|
||||
.rail => "leader: w save q quit Q discard f files P Pi o open p symbols s search r repeat",
|
||||
.symbol_rail => symbol_mod.rail_status,
|
||||
.search_rail => "search: f current file p project s symbols",
|
||||
.language_rail => "language: h hover s sig f fmt o imports a actions (Space path)",
|
||||
.language_rail => "language: h hover s sig n/p param f fmt o imports a actions",
|
||||
.diagnostic_rail => "diagnostics: d open n/p next/prev f source (arrows/Enter ok)",
|
||||
.tool_rail => "tools: l/L lint b build t test c check x cancel j jump y yank",
|
||||
.open_prompt => "open: type path, Enter opens, Esc cancels",
|
||||
@@ -239,6 +241,8 @@ pub const Leader = struct {
|
||||
if (std.mem.eql(u8, text, "F")) return .language_format_policy;
|
||||
if (std.mem.eql(u8, text, "w")) return .language_format_policy;
|
||||
if (std.mem.eql(u8, text, "a")) return .language_code_actions;
|
||||
if (std.mem.eql(u8, text, "n")) return .language_parameter_next;
|
||||
if (std.mem.eql(u8, text, "p")) return .language_parameter_previous;
|
||||
self.message = "language action is not built in this profile yet";
|
||||
return .{ .not_built = .lsp };
|
||||
},
|
||||
@@ -594,3 +598,27 @@ test "regular: leader exposes files and Pi panels" {
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize(" ")));
|
||||
try expectActionTag(.pi_panel, try leader.handleEvent(input.normalize("P")));
|
||||
}
|
||||
|
||||
test "regular: language rail groups hover signature and parameter navigation" {
|
||||
var leader = Leader.init(std.testing.allocator);
|
||||
defer leader.deinit();
|
||||
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize(" ")));
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize("l")));
|
||||
try std.testing.expect(std.mem.indexOf(u8, leader.status(), "h hover") != null);
|
||||
try std.testing.expect(std.mem.indexOf(u8, leader.status(), "s sig") != null);
|
||||
try std.testing.expect(std.mem.indexOf(u8, leader.status(), "n/p param") != null);
|
||||
try expectActionTag(.hover, try leader.handleEvent(input.normalize("h")));
|
||||
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize(" ")));
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize("l")));
|
||||
try expectActionTag(.signature, try leader.handleEvent(input.normalize("s")));
|
||||
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize(" ")));
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize("l")));
|
||||
try expectActionTag(.language_parameter_next, try leader.handleEvent(input.normalize("n")));
|
||||
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize(" ")));
|
||||
try expectActionTag(.none, try leader.handleEvent(input.normalize("l")));
|
||||
try expectActionTag(.language_parameter_previous, try leader.handleEvent(input.normalize("p")));
|
||||
}
|
||||
|
||||
@@ -2477,6 +2477,8 @@ pub const Client = struct {
|
||||
.language_format_policy => try self.showFormatPolicy(),
|
||||
.language_organize_imports => try self.organizeImports(),
|
||||
.language_code_actions => try self.openCodeActions(),
|
||||
.language_parameter_next => try self.moveLspParameter(.next),
|
||||
.language_parameter_previous => try self.moveLspParameter(.previous),
|
||||
.diagnostics_open => try self.openDiagnosticsPanel(),
|
||||
.diagnostics_next => try self.gotoDiagnostic(.next),
|
||||
.diagnostics_previous => try self.gotoDiagnostic(.previous),
|
||||
|
||||
Reference in New Issue
Block a user