1
0
Fork 0

- added command 'gemini-jump-to-link';

- fixed layout in gemini full screen mode.
This commit is contained in:
cage 2022-02-25 16:37:43 +01:00
parent 8e7a25b19c
commit 8e9e19dd82
10 changed files with 77 additions and 15 deletions

View File

@ -617,6 +617,8 @@
(define-key "end" #'open-message-link-window-scroll-end *open-message-link-keymap*)
(define-key "]" #'gemini-jump-to-link *open-message-link-keymap*)
;; chats list window
(define-key "r" #'refresh-chat-messages *chats-list-keymap*)

View File

@ -158,7 +158,12 @@ color-regexp = ":rendering" cyan
# The width of the generated table of contents for gemini pages when
# tinmop is ran as exclusive gemini client (command line option "-G")
gemini.exclusive.mode.toc.width = 1/5
gemini.exclusive.mode.toc.width = 1/5
# The height of the links window for gemini pages when tinmop is ran as
# exclusive gemini client (command line option "-G")
gemini.exclusive.mode.links.height = 1/4
# the signature file path relative to $HOME

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: tinmop 0.0.1\n"
"Report-Msgid-Bugs-To: https://notabug.org/cage/tinmop/\n"
"POT-Creation-Date: 2022-02-25 12:44+0100\n"
"PO-Revision-Date: 2022-02-25 12:45+0100\n"
"PO-Revision-Date: 2022-02-25 14:01+0100\n"
"Last-Translator: cage <cage@invalid.org>\n"
"Language-Team: Italian\n"
"Language: it\n"
@ -869,7 +869,7 @@ msgstr[1] "Cancella ~a file temporanei? [s/N] "
#: src/ui-goodies.lisp:93
#, lisp-format
msgid "Quit ~a? [y/N] "
msgstr "Chiudere ~a? [s/N] "
msgstr "Chiudere ~a? [s/N] "
#: src/ui-goodies.lisp:112
#, lisp-format

View File

@ -94,7 +94,9 @@
(ensure-just-one-stream-rendering)
(force-rendering-of-cached-file stream-object)
(setf (stream-status stream-object) :completed)
(ui:open-gemini-toc))
(ui:open-gemini-toc)
(program-events:with-enqueued-process ()
(ui:open-gemini-message-link-window :give-focus nil)))
((gemini-client:text-file-stream-p meta)
(ensure-just-one-stream-rendering)
(force-rendering-of-cached-file stream-object)
@ -368,6 +370,10 @@
(maybe-render-toc ()
(when (eq (stream-status wrapper-object) :rendering)
(ui:open-gemini-toc)))
(maybe-render-links ()
(when (eq (stream-status wrapper-object) :rendering)
(program-events:with-enqueued-process ()
(ui:open-gemini-message-link-window :give-focus nil))))
(maybe-render-preformat-wrapper (file-stream wrapper-object)
(when (not gemini-format-p)
(let* ((preformat-line (format nil "~a~%" gemini-parser:+preformatted-prefix+))
@ -441,6 +447,7 @@
(ui:notify (_ "Gemini document downloading aborted"))
(progn
(maybe-render-toc)
(maybe-render-links)
(ui:notify (_ "Gemini document downloading completed"))
(setf (stream-status wrapper-object) :completed)
(when (and fragment

View File

@ -118,7 +118,8 @@
command-window-height
reference-window-height)
(- main-window-height
command-window-height)))
command-window-height
(swconf:config-gemini-fullscreen-links-height))))
(width reference-window-width)
(x (if (and command-line:*gemini-full-screen-mode*
*gemini-toc-window*)
@ -126,7 +127,7 @@
(win-x reference-window)))
(y (if (and command-line:*gemini-full-screen-mode*
*gemini-toc-window*)
0
(swconf:config-gemini-fullscreen-links-height)
(+ (win-y reference-window)
reference-window-height))))
(win-resize object width height)
@ -311,6 +312,10 @@
(row-add-original-object res original-object)
res))
(defun row-link-p (row)
(typep (row-get-original-object row)
'gemini-parser:link-line))
(defun row-pre-start-p (row)
(typep (row-get-original-object row)
'gemini-parser:pre-start))

View File

@ -38,12 +38,20 @@
(selected-bg (swconf:selected-background theme-style))
(unselected-fg (swconf:unselected-foreground theme-style))
(unselected-bg (swconf:unselected-background theme-style))
(win-w (truncate (/ (win-width specials:*main-window*) 2)))
(win-h (truncate (/ (win-height specials:*main-window*) 2)))
(x (truncate (- (/ (win-width specials:*main-window*) 2)
(/ win-w 2))))
(y (truncate (- (/ (win-height specials:*main-window*) 2)
(/ win-h 2)))))
(reference-window (if command-line:*gemini-full-screen-mode*
*gemini-toc-window*
*thread-window*))
(win-w (if command-line:*gemini-full-screen-mode*
(- (win-width *main-window*)
(win-width reference-window))
(win-width reference-window)))
(win-h (if command-line:*gemini-full-screen-mode*
(swconf:config-gemini-fullscreen-links-height)
(win-height reference-window)))
(x (if command-line:*gemini-full-screen-mode*
(win-width reference-window)
(win-x reference-window)))
(y 0))
(setf (background croatoan-window)
(tui:make-win-background bg))
(setf (bgcolor croatoan-window) bg)

View File

@ -1242,6 +1242,7 @@
:make-tree-colormap
:left-arrow
:config-gemini-fullscreen-toc-width
:config-gemini-fullscreen-links-height
:config-post-allowed-language
:config-purge-history-days-offset
:config-purge-cage-days-offset
@ -2176,6 +2177,7 @@
:viewport-width
:draw-downloading-animation
:visible-rows
:row-link-p
:row-vertical-space-p
:row-preformatted-p
:row-invisible-p
@ -2694,8 +2696,10 @@
:open-message-attach-go-up
:open-message-attach-go-down
:open-message-attach-perform-opening
:gemini-jump-to-link
:close-open-attach-window
:search-link-window
:open-gemini-message-link-window
:open-message-link
:open-message-link-go-up
:open-message-link-go-down

View File

@ -1086,6 +1086,7 @@
(gemini-viewer:maybe-initialize-metadata window)
(refresh-gemini-message-window links page-data ir-text nil)
(ui:open-gemini-toc)
(ui:open-gemini-message-link-window :give-focus nil)
(windows:draw window)))))
(defclass gemini-request-event (program-event)

View File

@ -495,6 +495,7 @@
value
scheme
link
links
creation-time
access-time
visibility
@ -947,6 +948,14 @@
+key-toc+
+key-width+)
(gen-simple-access (gemini-fullscreen-links-height
:transform-value-fn main-window:parse-subwin-h)
+key-gemini+
+key-exclusive+
+key-mode+
+key-links+
+key-height+)
(gen-simple-access (post-allowed-language
:transform-value-fn
(lambda (a) (cl-ppcre:create-scanner a :case-insensitive-mode t)))

View File

@ -460,7 +460,6 @@ Metadata includes:
(list *send-message-window*
*follow-requests-window*
*open-attach-window*
*open-message-link-window*
*gemini-streams-window*
*gemini-certificates-window*
*filesystem-explorer-window*)))
@ -1241,12 +1240,13 @@ If some posts was deleted before, download them again."
:prompt (_ "Search key: ")
:complete-fn #'complete:complete-always-empty)))
(defun open-gemini-message-link-window ()
(defun open-gemini-message-link-window (&key (give-focus t))
(let* ((window *message-window*)
(metadata (message-window:metadata window))
(links (gemini-viewer:gemini-metadata-links metadata)))
(open-message-link-window:init-gemini-links links)
(focus-to-open-message-link-window)))
(when give-focus
(focus-to-open-message-link-window))))
(defun open-message-link ()
"Open message links window
@ -1324,6 +1324,27 @@ Browse and optionally open the links the text of the message window contains."
(url (line-oriented-window:normal-text selected-line)))
(open-message-link-window:open-message-link url enqueue)))
(defun gemini-jump-to-link ()
(when-let* ((link-win *open-message-link-window*)
(message-win *message-window*)
(selected-line (line-oriented-window:selected-row link-win))
(selected-position (line-oriented-window:rows-position-if link-win
(lambda (a)
(eq a selected-line)))))
(when (message-window:gemini-window-p* message-win)
(let ((count-link 0)
(count-rows 0)
(selected-message-row-position -1))
(line-oriented-window:do-rows-raw (message-win row)
(when (message-window:row-link-p row)
(when (= count-link selected-position)
(setf selected-message-row-position count-rows))
(incf count-link))
(incf count-rows))
(when (> selected-message-row-position 0)
(line-oriented-window:select-row message-win selected-message-row-position)
(draw message-win))))))
(defun open-message-link-perform-opening ()
(%open-message-link-perform-opening nil))