mirror of
https://codeberg.org/cage/tinmop/
synced 2025-03-05 10:17:44 +01:00
Compare commits
3 Commits
9c72284b1d
...
edab3dce36
Author | SHA1 | Date | |
---|---|---|---|
|
edab3dce36 | ||
|
5a399987c8 | ||
|
2e0b1a6086 |
@ -789,18 +789,20 @@ the latest 15 mentions)."
|
||||
(tooter:account-name (tooter:account notification)))))
|
||||
(tui:make-tui-string raw-text)))
|
||||
|
||||
(defun update-mentions-folder (&key (delete-mentions-on-server t))
|
||||
(defun update-mentions-folder (&key (delete-mentions-on-server t) (collect-threads t))
|
||||
(let ((trees '()))
|
||||
(when-let* ((all-mentions (all-mentions))
|
||||
(statuses (loop for mention in all-mentions
|
||||
when (tooter:status mention)
|
||||
collect (tooter:status mention))))
|
||||
(if collect-threads
|
||||
(loop for status in statuses
|
||||
when (not (member status trees))
|
||||
do
|
||||
(loop for node in (expand-status-tree status)
|
||||
do
|
||||
(pushnew node trees)))
|
||||
(setf trees statuses))
|
||||
(let ((event (make-instance 'program-events:save-timeline-in-db-event
|
||||
:payload trees
|
||||
:timeline-type db:+home-timeline+
|
||||
|
@ -398,8 +398,6 @@
|
||||
(absolutize-link iri meta))))
|
||||
(slurp-iri redirect-iri main-window))))
|
||||
((gemini-client:header-success-p status-code)
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(comm:make-request :gemini-save-url-db-history 1 iri))
|
||||
(slurp-non-text-data main-window iri :try-to-open nil))))))
|
||||
|
||||
(defun inline-image-p (link-value)
|
||||
@ -500,7 +498,17 @@
|
||||
#'download-background-callback)
|
||||
(gui:popup popup-menu x y)))))
|
||||
|
||||
(defmethod maybe-re-emphatize-lines (gemtext-widget from to)
|
||||
(defun scale-font (font scaling)
|
||||
(when scaling
|
||||
(let* ((font-size (parse-integer (getf (gui:font-actual font) :size)))
|
||||
(increment (round (* font-size scaling)))
|
||||
(new-font-size (+ font-size increment)))
|
||||
(gui:font-configure font :size new-font-size)))
|
||||
font)
|
||||
|
||||
(defun maybe-re-emphatize-lines (main-window from to)
|
||||
(with-accessors ((gemtext-font-scaling gemtext-font-scaling)
|
||||
(gemtext-widget gemtext-widget)) main-window
|
||||
(when (client-configuration:emphasize-wrapped-asterisk-p)
|
||||
(let ((matches (gui:search-all-text gemtext-widget
|
||||
"\\*[^*]+\\*"
|
||||
@ -509,18 +517,20 @@
|
||||
(loop for match in matches do
|
||||
(gui:tag-configure gemtext-widget
|
||||
(gui:match-tag-name match)
|
||||
:font (client-configuration:font-text-bold))
|
||||
(gui:tag-raise gemtext-widget (gui:match-tag-name match))))))
|
||||
:font (scale-font (client-configuration:font-text-bold)
|
||||
gemtext-font-scaling))
|
||||
(gui:tag-raise gemtext-widget (gui:match-tag-name match)))))))
|
||||
|
||||
(defun collect-ir-lines (request-iri main-window lines)
|
||||
(with-accessors ((ir-lines ir-lines)
|
||||
(ir-rendered-lines ir-rendered-lines)
|
||||
(gemtext-font-scaling gemtext-font-scaling)
|
||||
(gemtext-widget gemtext-widget)) main-window
|
||||
(labels ((push-prefixed (prefix ir)
|
||||
(let ((raw-line (format nil "~a~a" prefix (ir-line ir))))
|
||||
(vector-push-extend raw-line ir-rendered-lines)))
|
||||
(key->font (key)
|
||||
(ecase key
|
||||
(let ((font (ecase key
|
||||
((:vertical-space :text :li)
|
||||
(gui-conf:gemini-text-font-configuration))
|
||||
(:h1
|
||||
@ -534,7 +544,9 @@
|
||||
((:pre :pre-end :as-is)
|
||||
(gui-conf:gemini-preformatted-text-font-configuration))
|
||||
(:a
|
||||
(gui-conf:gemini-link-font-configuration))))
|
||||
(gui-conf:gemini-link-font-configuration)))))
|
||||
(scale-font font gemtext-font-scaling)
|
||||
font))
|
||||
(key->colors (key)
|
||||
(ecase key
|
||||
((:vertical-space :text :li)
|
||||
@ -568,7 +580,8 @@
|
||||
(linkify (line line-number)
|
||||
(multiple-value-bind (link-bg link-fg)
|
||||
(gui-conf:gemini-link-colors)
|
||||
(let* ((link-font (gui-conf:gemini-link-font-configuration))
|
||||
(let* ((link-font (scale-font (gui-conf:gemini-link-font-configuration)
|
||||
gemtext-font-scaling))
|
||||
(link-value (ir-href line))
|
||||
(target-iri (absolutize-link request-iri link-value))
|
||||
(link-name (or (ir-line line)
|
||||
@ -652,7 +665,7 @@
|
||||
(vector-push-extend (ir-line line) ir-rendered-lines)
|
||||
(incf render-line-count)
|
||||
(render-line :text (a:last-elt ir-rendered-lines) render-line-count)
|
||||
(maybe-re-emphatize-lines gemtext-widget
|
||||
(maybe-re-emphatize-lines main-window
|
||||
`(:line ,render-line-count :char 0)
|
||||
`(:line ,render-line-count :char :end)))
|
||||
(:h1
|
||||
@ -671,7 +684,7 @@
|
||||
(push-prefixed (gui-conf:gemini-bullet-prefix) line)
|
||||
(incf render-line-count)
|
||||
(render-line :li (a:last-elt ir-rendered-lines) render-line-count)
|
||||
(maybe-re-emphatize-lines gemtext-widget
|
||||
(maybe-re-emphatize-lines main-window
|
||||
`(:line ,render-line-count :char 0)
|
||||
`(:line ,render-line-count :char :end)))
|
||||
(:quote
|
||||
@ -894,12 +907,12 @@
|
||||
(absolutize-link iri meta))))
|
||||
(start-stream-iri redirect-iri main-window use-cache status))))
|
||||
((gemini-client:header-success-p status-code)
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(comm:make-request :gemini-save-url-db-history 1 iri))
|
||||
(cond
|
||||
((eq status +stream-status-streaming+)
|
||||
(cond
|
||||
((gemini-client:gemini-file-stream-p meta)
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(comm:make-request :gemini-save-url-db-history 1 iri))
|
||||
(maybe-stop-steaming-stream-thread)
|
||||
(clean-gemtext main-window)
|
||||
(initialize-ir-lines main-window)
|
||||
@ -1178,6 +1191,10 @@
|
||||
:initform nil
|
||||
:initarg :gemtext-widget
|
||||
:accessor gemtext-widget)
|
||||
(gemtext-font-scaling
|
||||
:initform 0.0
|
||||
:initarg :gemtext-font-scaling
|
||||
:accessor gemtext-font-scaling)
|
||||
(tool-bar
|
||||
:initform nil
|
||||
:initarg :tool-bar
|
||||
|
@ -1067,7 +1067,8 @@
|
||||
(defmethod process-event ((object update-mentions-event))
|
||||
(let ((delete-fetched-mentions-required (swconf:config-delete-fetched-mentions-p)))
|
||||
(when-let* ((mentions (api-client:update-mentions-folder
|
||||
:delete-mentions-on-server delete-fetched-mentions-required))
|
||||
:delete-mentions-on-server delete-fetched-mentions-required
|
||||
:collect-threads nil))
|
||||
(mentions-count (length mentions))
|
||||
(thread-window specials:*thread-window*))
|
||||
(when command-line:*notify-mentions*
|
||||
|
Loading…
x
Reference in New Issue
Block a user