diff --git a/etc/init.lisp b/etc/init.lisp index 1cd45b8..a3b1c1d 100644 --- a/etc/init.lisp +++ b/etc/init.lisp @@ -551,6 +551,10 @@ (define-key "T" #'save-selected-message-in-tour *open-message-link-keymap*) +(define-key "home" #'open-message-link-window-scroll-begin *open-message-link-keymap*) + +(define-key "end" #'open-message-link-window-scroll-end *open-message-link-keymap*) + ;; chats list window (define-key "r" #'refresh-chat-messages *chats-list-keymap*) diff --git a/src/package.lisp b/src/package.lisp index ade2def..6daa0ed 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -2693,6 +2693,8 @@ :go-to-next-link :go-to-previous-link :close-open-message-link-window + :open-message-link-window-scroll-begin + :open-message-link-window-scroll-end :attach-go-up :attach-go-down :attach-delete diff --git a/src/ui-goodies.lisp b/src/ui-goodies.lisp index 9295224..8ca625f 100644 --- a/src/ui-goodies.lisp +++ b/src/ui-goodies.lisp @@ -1302,6 +1302,26 @@ This makes sense only for gemini file stream, if not this command performs the s (close-window-and-return-to-message *open-message-link-window*) (close-window-and-return-to-threads *open-message-link-window*)))) +(defun line-oriented-window-scroll-begin (window) + (when (and window + (not (line-oriented-window:rows-empty-p window))) + (line-oriented-window:select-row window 0) + (windows:win-clear window) + (windows:draw window))) + +(defun line-oriented-window-scroll-end (window) + (when (and window + (not (line-oriented-window:rows-empty-p window))) + (line-oriented-window:select-row window (1- (line-oriented-window:rows-length window))) + (windows:win-clear window) + (windows:draw window))) + +(defun open-message-link-window-scroll-begin () + (line-oriented-window-scroll-begin *open-message-link-window*)) + +(defun open-message-link-window-scroll-end () + (line-oriented-window-scroll-end *open-message-link-window*)) + (defun gemini-open-certificates-window () "Open a window with all the client certificated generated so far to authenticate this client on a gemini server."