mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 00:36:07 +03:00
terminal: CHT/CBT
This commit is contained in:
@ -92,7 +92,7 @@ pub fn Stream(comptime Handler: type) type {
|
||||
log.warn("unimplemented execute: {x}", .{c}),
|
||||
|
||||
.HT => if (@hasDecl(T, "horizontalTab"))
|
||||
try self.handler.horizontalTab()
|
||||
try self.handler.horizontalTab(1)
|
||||
else
|
||||
log.warn("unimplemented execute: {x}", .{c}),
|
||||
|
||||
@ -205,6 +205,18 @@ pub fn Stream(comptime Handler: type) type {
|
||||
else => log.warn("invalid CUP command: {}", .{action}),
|
||||
} else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||
|
||||
// CHT - Cursor Horizontal Tabulation
|
||||
'I' => if (@hasDecl(T, "horizontalTab")) try self.handler.horizontalTab(
|
||||
switch (action.params.len) {
|
||||
0 => 1,
|
||||
1 => action.params[0],
|
||||
else => {
|
||||
log.warn("invalid horizontal tab command: {}", .{action});
|
||||
return;
|
||||
},
|
||||
},
|
||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||
|
||||
// Erase Display
|
||||
// TODO: test
|
||||
'J' => if (@hasDecl(T, "eraseDisplay")) try self.handler.eraseDisplay(
|
||||
@ -316,6 +328,18 @@ pub fn Stream(comptime Handler: type) type {
|
||||
},
|
||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||
|
||||
// CHT - Cursor Horizontal Tabulation Back
|
||||
'Z' => if (@hasDecl(T, "horizontalTabBack")) try self.handler.horizontalTabBack(
|
||||
switch (action.params.len) {
|
||||
0 => 1,
|
||||
1 => action.params[0],
|
||||
else => {
|
||||
log.warn("invalid horizontal tab back command: {}", .{action});
|
||||
return;
|
||||
},
|
||||
},
|
||||
) else log.warn("unimplemented CSI callback: {}", .{action}),
|
||||
|
||||
// Repeat Previous Char (REP)
|
||||
'b' => if (@hasDecl(T, "printRepeat")) try self.handler.printRepeat(
|
||||
switch (action.params.len) {
|
||||
|
@ -959,8 +959,20 @@ const StreamHandler = struct {
|
||||
self.terminal.backspace();
|
||||
}
|
||||
|
||||
pub fn horizontalTab(self: *StreamHandler) !void {
|
||||
try self.terminal.horizontalTab();
|
||||
pub fn horizontalTab(self: *StreamHandler, count: u16) !void {
|
||||
for (0..count) |_| {
|
||||
const x = self.terminal.screen.cursor.x;
|
||||
try self.terminal.horizontalTab();
|
||||
if (x == self.terminal.screen.cursor.x) break;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn horizontalTabBack(self: *StreamHandler, count: u16) !void {
|
||||
for (0..count) |_| {
|
||||
const x = self.terminal.screen.cursor.x;
|
||||
try self.terminal.horizontalTabBack();
|
||||
if (x == self.terminal.screen.cursor.x) break;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn linefeed(self: *StreamHandler) !void {
|
||||
|
Reference in New Issue
Block a user