wip
This commit is contained in:
@@ -81,6 +81,27 @@ static GhosttyResult patterm_set_userdata(GhosttyTerminal t, uintptr_t ud) {
|
||||
(const void *)ud);
|
||||
}
|
||||
|
||||
static void patterm_scroll_viewport_top(GhosttyTerminal t) {
|
||||
GhosttyTerminalScrollViewport beh;
|
||||
beh.tag = GHOSTTY_SCROLL_VIEWPORT_TOP;
|
||||
beh.value.delta = 0;
|
||||
ghostty_terminal_scroll_viewport(t, beh);
|
||||
}
|
||||
|
||||
static void patterm_scroll_viewport_bottom(GhosttyTerminal t) {
|
||||
GhosttyTerminalScrollViewport beh;
|
||||
beh.tag = GHOSTTY_SCROLL_VIEWPORT_BOTTOM;
|
||||
beh.value.delta = 0;
|
||||
ghostty_terminal_scroll_viewport(t, beh);
|
||||
}
|
||||
|
||||
static void patterm_scroll_viewport_delta(GhosttyTerminal t, intptr_t d) {
|
||||
GhosttyTerminalScrollViewport beh;
|
||||
beh.tag = GHOSTTY_SCROLL_VIEWPORT_DELTA;
|
||||
beh.value.delta = d;
|
||||
ghostty_terminal_scroll_viewport(t, beh);
|
||||
}
|
||||
|
||||
static GhosttyFormatterTerminalOptions patterm_plain_fmt_opts(void) {
|
||||
GhosttyFormatterTerminalOptions opts = GHOSTTY_INIT_SIZED(GhosttyFormatterTerminalOptions);
|
||||
opts.emit = GHOSTTY_FORMATTER_FORMAT_PLAIN;
|
||||
@@ -161,7 +182,7 @@ func NewGhosttyEmulator(cols, rows uint16) (*GhosttyEmulator, error) {
|
||||
opts := C.GhosttyTerminalOptions{
|
||||
cols: C.uint16_t(cols),
|
||||
rows: C.uint16_t(rows),
|
||||
max_scrollback: 0,
|
||||
max_scrollback: 5000,
|
||||
}
|
||||
|
||||
if rc := C.ghostty_terminal_new(nil, &e.term, opts); rc != C.GHOSTTY_SUCCESS {
|
||||
@@ -539,6 +560,39 @@ func (e *GhosttyEmulator) ActiveScreen() (Screen, error) {
|
||||
return ScreenPrimary, nil
|
||||
}
|
||||
|
||||
// ScrollViewportTop scrolls the viewport to the top of the scrollback.
|
||||
func (e *GhosttyEmulator) ScrollViewportTop() error {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
if e.closed {
|
||||
return errors.New("vt: emulator closed")
|
||||
}
|
||||
C.patterm_scroll_viewport_top(e.term)
|
||||
return nil
|
||||
}
|
||||
|
||||
// ScrollViewportBottom scrolls the viewport to the bottom (active area).
|
||||
func (e *GhosttyEmulator) ScrollViewportBottom() error {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
if e.closed {
|
||||
return errors.New("vt: emulator closed")
|
||||
}
|
||||
C.patterm_scroll_viewport_bottom(e.term)
|
||||
return nil
|
||||
}
|
||||
|
||||
// ScrollViewportDelta scrolls the viewport by `delta` rows. Negative is up.
|
||||
func (e *GhosttyEmulator) ScrollViewportDelta(delta int) error {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
if e.closed {
|
||||
return errors.New("vt: emulator closed")
|
||||
}
|
||||
C.patterm_scroll_viewport_delta(e.term, C.intptr_t(delta))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *GhosttyEmulator) OnWritePTY(fn func([]byte)) {
|
||||
if fn == nil {
|
||||
e.onWrite.Store(nil)
|
||||
|
||||
Reference in New Issue
Block a user