diff options
| author | marty hiatt <martianhiatus [a t] riseup [d o t] net> | 2022-11-25 16:52:19 +0100 | 
|---|---|---|
| committer | marty hiatt <martianhiatus [a t] riseup [d o t] net> | 2022-11-25 16:52:19 +0100 | 
| commit | a96049ab60e2a4822ddb4ee1956b8d4bc0cb85c0 (patch) | |
| tree | 30df6ac63b7fc17811d0a5454b573856bfc268ff /lisp/mastodon-tl.el | |
| parent | 9b0fdec55f6770d7c270e0a1e501ceb5e3ebcd95 (diff) | |
| parent | 3717b6cb86c8d0037ca49d4f500a44560c9ac5ae (diff) | |
Merge branch 'develop' into capf-completion
Diffstat (limited to 'lisp/mastodon-tl.el')
| -rw-r--r-- | lisp/mastodon-tl.el | 84 | 
1 files changed, 67 insertions, 17 deletions
| diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index e65d3a5..1a726c4 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -107,6 +107,13 @@ By default fixed width fonts are used."    :type '(boolean :tag "Enable using proportional rather than fixed \  width fonts when rendering HTML text")) +(defcustom mastodon-tl--display-caption-not-url-when-no-media t +  "Display an image's caption rather than URL. +Only has an effect when `mastodon-tl--display-media-p' is set to +nil." +  :group 'mastodon-tl +  :type 'boolean) +  (defvar-local mastodon-tl--buffer-spec nil    "A unique identifier and functions for each Mastodon buffer.") @@ -684,7 +691,7 @@ this just means displaying toot client."                            (mastodon-tl--relative-time-description edited-parsed)                          edited-parsed)))           "") -       (propertize "\n  ------------\n  " 'face 'default)) +       (propertize "\n  ------------\n" 'face 'default))        'favourited-p faved        'boosted-p    boosted        'bookmarked-p bookmarked @@ -1031,27 +1038,70 @@ message is a link which unhides/hides the main body."  (defun mastodon-tl--media (toot)    "Retrieve a media attachment link for TOOT if one exists." -  (let* ((media-attachements (mastodon-tl--field 'media_attachments toot)) -         (media-string (mapconcat -                        (lambda (media-attachement) -                          (let ((preview-url -                                 (alist-get 'preview_url media-attachement)) -                                (remote-url -                                 (or (alist-get 'remote_url media-attachement) -                                     ;; fallback b/c notifications don't have remote_url -                                     (alist-get 'url media-attachement))) -                                (type (alist-get 'type media-attachement)) -                                (caption (alist-get 'description media-attachement))) -                            (if mastodon-tl--display-media-p -                                (mastodon-media--get-media-link-rendering -                                 preview-url remote-url type caption) ; 2nd arg for shr-browse-url -                              (concat "Media::" preview-url "\n")))) -                        media-attachements ""))) +  (let* ((media-attachments (mastodon-tl--field 'media_attachments toot)) +         (media-string (mapconcat #'mastodon-tl--media-attachment +                                  media-attachments "")))      (if (not (and mastodon-tl--display-media-p                    (string-empty-p media-string)))          (concat "\n" media-string)        ""))) +(defun mastodon-tl--media-attachment (media-attachment) +  "Return a propertized string for MEDIA-ATTACHMENT." +  (let* ((preview-url +          (alist-get 'preview_url media-attachment)) +         (remote-url +          (or (alist-get 'remote_url media-attachment) +              ;; fallback b/c notifications don't have remote_url +              (alist-get 'url media-attachment))) +         (type (alist-get 'type media-attachment)) +         (caption (alist-get 'description media-attachment)) +         (display-str +          (if (and mastodon-tl--display-caption-not-url-when-no-media +                   caption) +              (concat "Media:: " caption) +            (concat "Media:: " preview-url)))) +    (if mastodon-tl--display-media-p +        ;; return placeholder [img]: +        (mastodon-media--get-media-link-rendering +         preview-url remote-url type caption) ; 2nd arg for shr-browse-url +      ;; return URL/caption: +      (concat +       (mastodon-tl--propertize-img-str-or-url +        (concat "Media:: " preview-url) ;; string +        preview-url remote-url type caption +        display-str ;; display +        ;; FIXME: shr-link underlining is awful for captions with +        ;; newlines, as the underlining runs to the edge of the +        ;; frame even if the text doesn' +        'shr-link) +       "\n")))) + +(defun mastodon-tl--propertize-img-str-or-url (str media-url full-remote-url type +                                                   help-echo &optional display face) +  "Propertize an media placeholder string \"[img]\" or media URL. + +STR is the string to propertize, MEDIA-URL is the preview link, +FULL-REMOTE-URL is the link to the full resolution image on the +server, TYPE is the media type. +HELP-ECHO, DISPLAY, and FACE are the text properties to add." +  (propertize str +              'media-url media-url +              'media-state (when (string= str "[img]") 'needs-loading) +              'media-type 'media-link +              'mastodon-media-type type +              'display display +              'face face +              'mouse-face 'highlight +              'mastodon-tab-stop 'image ; for do-link-action-at-point +              'image-url full-remote-url ; for shr-browse-image +              'keymap mastodon-tl--shr-image-map-replacement +              'help-echo (if (or (string= type "image") +                                 (string= type nil) +                                 (string= type "unknown")) ;handle borked images +                             help-echo +                           (concat help-echo "\nC-RET: play " type " with mpv")))) +  (defun mastodon-tl--content (toot)    "Retrieve text content from TOOT.  Runs `mastodon-tl--render-text' and fetches poll or media." | 
