mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
terminal: CSI E and F
This commit is contained in:
@ -163,6 +163,7 @@ pub fn Stream(comptime Handler: type) type {
|
|||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
false,
|
||||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||||
|
|
||||||
// CUD - Cursor Down
|
// CUD - Cursor Down
|
||||||
@ -175,6 +176,7 @@ pub fn Stream(comptime Handler: type) type {
|
|||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
false,
|
||||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||||
|
|
||||||
// CUF - Cursor Right
|
// CUF - Cursor Right
|
||||||
@ -201,6 +203,32 @@ pub fn Stream(comptime Handler: type) type {
|
|||||||
},
|
},
|
||||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||||
|
|
||||||
|
// CNL - Cursor Next Line
|
||||||
|
'E' => if (@hasDecl(T, "setCursorDown")) try self.handler.setCursorDown(
|
||||||
|
switch (action.params.len) {
|
||||||
|
0 => 1,
|
||||||
|
1 => action.params[0],
|
||||||
|
else => {
|
||||||
|
log.warn("invalid cursor up command: {}", .{action});
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||||
|
|
||||||
|
// CPL - Cursor Previous Line
|
||||||
|
'F' => if (@hasDecl(T, "setCursorUp")) try self.handler.setCursorUp(
|
||||||
|
switch (action.params.len) {
|
||||||
|
0 => 1,
|
||||||
|
1 => action.params[0],
|
||||||
|
else => {
|
||||||
|
log.warn("invalid cursor down command: {}", .{action});
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||||
|
|
||||||
// HPA - Cursor Horizontal Position Absolute
|
// HPA - Cursor Horizontal Position Absolute
|
||||||
// TODO: test
|
// TODO: test
|
||||||
'G', '`' => if (@hasDecl(T, "setCursorCol")) switch (action.params.len) {
|
'G', '`' => if (@hasDecl(T, "setCursorCol")) switch (action.params.len) {
|
||||||
|
@ -1277,12 +1277,14 @@ const StreamHandler = struct {
|
|||||||
self.terminal.cursorRight(amount);
|
self.terminal.cursorRight(amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setCursorDown(self: *StreamHandler, amount: u16) !void {
|
pub fn setCursorDown(self: *StreamHandler, amount: u16, carriage: bool) !void {
|
||||||
self.terminal.cursorDown(amount);
|
self.terminal.cursorDown(amount);
|
||||||
|
if (carriage) self.terminal.carriageReturn();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setCursorUp(self: *StreamHandler, amount: u16) !void {
|
pub fn setCursorUp(self: *StreamHandler, amount: u16, carriage: bool) !void {
|
||||||
self.terminal.cursorUp(amount);
|
self.terminal.cursorUp(amount);
|
||||||
|
if (carriage) self.terminal.carriageReturn();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setCursorCol(self: *StreamHandler, col: u16) !void {
|
pub fn setCursorCol(self: *StreamHandler, col: u16) !void {
|
||||||
|
Reference in New Issue
Block a user