diff options
| -rw-r--r-- | lisp/mastodon-http.el | 7 | ||||
| -rw-r--r-- | lisp/mastodon-notifications.el | 58 | ||||
| -rw-r--r-- | lisp/mastodon-tl.el | 132 | ||||
| -rw-r--r-- | lisp/mastodon-toot.el | 12 | ||||
| -rw-r--r-- | lisp/mastodon-views.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon.el | 2 | ||||
| -rw-r--r-- | mastodon-index.org | 102 | 
7 files changed, 214 insertions, 101 deletions
diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el index 49c94a4..7ef6f77 100644 --- a/lisp/mastodon-http.el +++ b/lisp/mastodon-http.el @@ -47,10 +47,11 @@  (defconst mastodon-http--timeout 15    "HTTP request timeout, in seconds.  Has no effect on Emacs < 26.1.") -(defun mastodon-http--api (endpoint) -  "Return Mastodon API URL for ENDPOINT." +(defun mastodon-http--api (endpoint &optional version) +  "Return Mastodon API URL for ENDPOINT. +Optionally specify VERSION in format vX."    (concat mastodon-instance-url "/api/" -          mastodon-http--api-version "/" endpoint)) +          (or version mastodon-http--api-version) "/" endpoint))  (defun mastodon-http--api-search ()    "Return Mastodon API url for the /search endpoint (v2)." diff --git a/lisp/mastodon-notifications.el b/lisp/mastodon-notifications.el index 0e367c9..9b40861 100644 --- a/lisp/mastodon-notifications.el +++ b/lisp/mastodon-notifications.el @@ -53,6 +53,25 @@  (autoload 'mastodon-tl--update "mastodon-tl")  (autoload 'mastodon-views--view-follow-requests "mastodon-views") +(defgroup mastodon-tl nil +  "Nofications in mastodon.el." +  :prefix "mastodon-notifications-" +  :group 'mastodon) + +(defcustom mastodon-notifications--profile-note-in-foll-reqs t +  "When non-nil, show some of a user's profile note in follow +request notifications." +  :type '(boolean)) + +(defcustom mastodon-notifications--profile-note-in-foll-reqs-max-length nil +  "The maximum character length for display of user profile note in +follow requests. +Profile notes are only displayed if +`mastodon-notifications--profile-note-in-foll-reqs' is non-nil. +If unset, profile notes of any size will be displayed, which may +make them unweildy." +  :type '(integer)) +  (defvar mastodon-tl--buffer-spec)  (defvar mastodon-tl--display-media-p) @@ -186,9 +205,17 @@ Status notifications are given when  (defun mastodon-notifications--format-note (note type)    "Format for a NOTE of TYPE." -  (let ((id (alist-get 'id note)) -        (status (mastodon-tl--field 'status note)) -        (follower (alist-get 'username (alist-get 'account note)))) +  (let* ((id (alist-get 'id note)) +         (profile-note +          (when (equal 'follow-request type) +            (let ((str (mastodon-tl--field +                        'note +                        (mastodon-tl--field 'account note)))) +              (if mastodon-notifications--profile-note-in-foll-reqs-max-length +                  (string-limit str mastodon-notifications--profile-note-in-foll-reqs-max-length) +                str)))) +         (status (mastodon-tl--field 'status note)) +         (follower (alist-get 'username (alist-get 'account note))))      (mastodon-notifications--insert-status       ;; toot       (cond ((or (equal type 'follow) @@ -207,14 +234,25 @@ Status notifications are given when       (let ((body (mastodon-tl--clean-tabs-and-nl                    (if (mastodon-tl--has-spoiler status)                        (mastodon-tl--spoiler status) -                    (mastodon-tl--content status))))) +                    (if (equal 'follow-request type) +                        (mastodon-tl--render-text profile-note) +                      (mastodon-tl--content status))))))         (cond ((or (eq type 'follow)                    (eq type 'follow-request)) -              (propertize (if (equal type 'follow) -                              "Congratulations, you have a new follower!" -                            (format "You have a follow request from... %s" -                                    follower)) -                          'face 'default)) +              (propertize +               (if (equal type 'follow) +                   (propertize +                    "Congratulations, you have a new follower!" +                    'face 'default) +                 (concat +                  (propertize +                   (format "You have a follow request from... %s" +                           follower) +                   'face 'default) +                  (when mastodon-notifications--profile-note-in-foll-reqs +                    (concat +                     ":\n" +                     (mastodon-notifications--comment-note-text body)))))))               ((or (eq type 'favourite)                    (eq type 'boost))                (mastodon-notifications--comment-note-text @@ -225,7 +263,7 @@ Status notifications are given when               (equal type 'follow-request)               (equal type 'mention))           'mastodon-tl--byline-author -       (lambda (_status) +       (lambda (_status &rest args) ; unbreak stuff           (mastodon-tl--byline-author note)))       ;; action-byline       (lambda (_status) diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index 6c444d4..db923a4 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -212,6 +212,10 @@ If nil, mastodon.el will instead call `shr-browse-image', which  respects the user's `browse-url' settings."    :type '(boolean)) +(defcustom mastodon-tl--remote-local-domains nil +  "A list of domains to view the local timelines of using `mastodon-tl--get-remote-local-timeline'." +  :type '(repeat string)) +  ;;; VARIABLES @@ -463,6 +467,35 @@ With a single prefix ARG, hide replies."                       `(("limit" . ,mastodon-tl--timeline-posts-count))                       (when (eq arg 4) t))) +(defun mastodon-tl--get-remote-local-timeline () +  "Prompt for an instance domain and try to display its local timeline. +You can enter any working instance domain. Domains that you want +to regularly load can be stored in +`mastodon-tl--remote-local-domains' for easy access with completion. +Note that some instances do not make their local timelines public, in +which case this will not work." +  (interactive) +  (let* ((domain (completing-read "Domain for remote local tl: " +                                  mastodon-tl--remote-local-domains)) +         (params `(("limit" . ,mastodon-tl--timeline-posts-count) +                   ("local" . "true"))) +         (buf (concat "remote-local-" domain)) +         (known (member domain +                        (mastodon-http--get-json +                         (mastodon-http--api "instance/peers"))))) +    ;; condition-case doesn't work here, so i added basic error handling to +    ;; `mastodon-tl--init*' instead +    (if (not known) +        (when (y-or-n-p +               "Domain appears unknown to your instance. Proceed?") +          ;; TODO: refactor these calls: +          (mastodon-tl--init buf +                             "timelines/public" 'mastodon-tl--timeline nil +                             params nil domain)) +      (mastodon-tl--init buf +                         "timelines/public" 'mastodon-tl--timeline nil +                         params nil domain)))) +  (defun mastodon-tl--get-local-timeline (&optional prefix)    "Open local timeline.  With a single PREFIX arg, hide-replies. @@ -520,9 +553,10 @@ Do so if type of status at poins is not follow_request/follow."                    (string= type "follow")) ; no counts for these          (message "%s" (mastodon-tl--property 'help-echo :no-move)))))) -(defun mastodon-tl--byline-author (toot &optional avatar) +(defun mastodon-tl--byline-author (toot &optional avatar domain)    "Propertize author of TOOT. -With arg AVATAR, include the account's avatar image." +With arg AVATAR, include the account's avatar image. +When DOMAIN, force inclusion of user's domain in their handle."    (let-alist toot      (concat       ;; avatar insertion moved up to `mastodon-tl--byline' by default to be @@ -534,6 +568,7 @@ With arg AVATAR, include the account's avatar image."                      (image-type-available-p 'imagemagick)                    (image-transforms-p)))         (mastodon-media--get-avatar-rendering .account.avatar)) +     ;; username:       (propertize (if (not (string-empty-p .account.display_name))                       .account.display_name                     .account.username) @@ -549,8 +584,14 @@ With arg AVATAR, include the account's avatar image."                   (unless (or (string-suffix-p "-followers*" (buffer-name))                               (string-suffix-p "-following*" (buffer-name)))                     (mastodon-tl--format-byline-help-echo toot))) +     ;; handle:       " (" -     (propertize (concat "@" .account.acct) +     (propertize (concat "@" .account.acct +                         (if domain +                             (concat "@" +                                     (url-host +                                      (url-generic-parse-url .account.url))) +                           ""))                   'face 'mastodon-handle-face                   'mouse-face 'highlight  	         'mastodon-tab-stop 'user-handle @@ -629,7 +670,7 @@ LETTER is a string, F for favourited, B for boosted, or K for bookmarked."                          'help-echo (format "You have %s this status."                                             help-string))))) -(defun mastodon-tl--byline (toot author-byline action-byline &optional detailed-p) +(defun mastodon-tl--byline (toot author-byline action-byline &optional detailed-p domain)    "Generate byline for TOOT.  AUTHOR-BYLINE is a function for adding the author portion of  the byline that takes one variable. @@ -637,7 +678,8 @@ ACTION-BYLINE is a function for adding an action, such as boosting,  favouriting and following to the byline. It also takes a single function.  By default it is `mastodon-tl--byline-boosted'.  DETAILED-P means display more detailed info. For now -this just means displaying toot client." +this just means displaying toot client. +When DOMAIN, force inclusion of user's domain in their handle."    (let* ((created-time            ;; bosts and faves in notifs view            ;; (makes timestamps be for the original toot not the boost/fave): @@ -685,7 +727,7 @@ this just means displaying toot client."        (concat         ;; we propertize help-echo format faves for author name         ;; in `mastodon-tl--byline-author' -       (funcall author-byline toot) +       (funcall author-byline toot nil domain)         ;; visibility:         (cond ((equal visibility "direct")                (propertize (concat " " (mastodon-tl--symbol 'direct)) @@ -1413,7 +1455,7 @@ Runs `mastodon-tl--render-text' and fetches poll or media."      (string= reply-to-id prev-id)))  (defun mastodon-tl--insert-status (toot body author-byline action-byline -                                        &optional id base-toot detailed-p thread) +                                        &optional id base-toot detailed-p thread domain)    "Display the content and byline of timeline element TOOT.  BODY will form the section of the toot above the byline.  AUTHOR-BYLINE is an optional function for adding the author @@ -1429,13 +1471,15 @@ status is a favourite or boost notification, BASE-TOOT is the  JSON of the toot responded to.  DETAILED-P means display more detailed info. For now  this just means displaying toot client. -THREAD means the status will be displayed in a thread view." +THREAD means the status will be displayed in a thread view. +When DOMAIN, force inclusion of user's domain in their handle."    (let* ((start-pos (point))           (reply-to-id (alist-get 'in_reply_to_id toot))           (after-reply-status-p            (when (and thread reply-to-id)              (mastodon-tl--after-reply-status reply-to-id)))           (type (alist-get 'type toot))) +    ;; body:      (insert       (propertize        (concat @@ -1451,7 +1495,8 @@ THREAD means the status will be displayed in a thread view."                           'wrap-prefix bar))           body)         " \n" -       (mastodon-tl--byline toot author-byline action-byline detailed-p)) +       ;; byline: +       (mastodon-tl--byline toot author-byline action-byline detailed-p domain))        'item-type    'toot        'item-id      (or id ; notification's own id                          (alist-get 'id toot)) ; toot id @@ -1528,25 +1573,27 @@ To disable showing the stats, customize    (and (null (mastodon-tl--field 'in_reply_to_id toot))         (not (mastodon-tl--field 'rebloged toot)))) -(defun mastodon-tl--toot (toot &optional detailed-p thread) +(defun mastodon-tl--toot (toot &optional detailed-p thread domain)    "Format TOOT and insert it into the buffer.  DETAILED-P means display more detailed info. For now  this just means displaying toot client. -THREAD means the status will be displayed in a thread view." +THREAD means the status will be displayed in a thread view. +When DOMAIN, force inclusion of user's domain in their handle."    (mastodon-tl--insert-status     toot     (mastodon-tl--clean-tabs-and-nl (if (mastodon-tl--has-spoiler toot)                                         (mastodon-tl--spoiler toot)                                       (mastodon-tl--content toot)))     'mastodon-tl--byline-author 'mastodon-tl--byline-boosted -   nil nil detailed-p thread)) +   nil nil detailed-p thread domain)) -(defun mastodon-tl--timeline (toots &optional thread) +(defun mastodon-tl--timeline (toots &optional thread domain)    "Display each toot in TOOTS.  This function removes replies if user required. -THREAD means the status will be displayed in a thread view." +THREAD means the status will be displayed in a thread view. +When DOMAIN, force inclusion of user's domain in their handle."    (mapc (lambda (toot) -          (mastodon-tl--toot toot nil thread)) +          (mastodon-tl--toot toot nil thread domain))          ;; hack to *not* filter replies on profiles:          (if (eq (mastodon-tl--get-buffer-type) 'profile-statuses)              toots @@ -1679,6 +1726,8 @@ call this function after it is set or use something else."               'profile-statuses-no-replies)              ((string-suffix-p "only-media*" buffer-name)               'profile-statuses-only-media) +            ((string-match-p "-tagged-" buffer-name) +             'profile-statuses-tagged)              ((mastodon-tl--endpoint-str-= "statuses" :suffix)               'profile-statuses)              ;; profile followers @@ -2788,14 +2837,19 @@ This location is defined by a non-nil value of  ;;; LOADING TIMELINES  (defun mastodon-tl--init (buffer-name endpoint update-function -                                      &optional headers params hide-replies) +                                      &optional headers params hide-replies +                                      instance)    "Initialize BUFFER-NAME with timeline targeted by ENDPOINT asynchronously.  UPDATE-FUNCTION is used to recieve more toots.  HEADERS means to also collect the response headers. Used for paginating  favourites and bookmarks.  PARAMS is any parameters to send with the request. -HIDE-REPLIES is a flag indicating if replies are hidden in the current buffer." -  (let ((url (mastodon-http--api endpoint)) +HIDE-REPLIES is a flag indicating if replies are hidden in the current buffer. +INSTANCE is a string of another instance domain we are displaying +a timeline from." +  (let ((url (if instance +                 (concat "https://" instance "/api/v1/" endpoint) +               (mastodon-http--api endpoint)))          (buffer (concat "*mastodon-" buffer-name "*")))      (if headers          (mastodon-http--get-response-async @@ -2803,29 +2857,32 @@ HIDE-REPLIES is a flag indicating if replies are hidden in the current buffer."           buffer endpoint update-function headers params hide-replies)        (mastodon-http--get-json-async         url params 'mastodon-tl--init* -       buffer endpoint update-function nil params hide-replies)))) +       buffer endpoint update-function nil params hide-replies instance))))  (defun mastodon-tl--init* (response buffer endpoint update-function -                                    &optional headers update-params hide-replies) +                                    &optional headers update-params hide-replies instance)    "Initialize BUFFER with timeline targeted by ENDPOINT.  UPDATE-FUNCTION is used to recieve more toots.  RESPONSE is the data returned from the server by  `mastodon-http--process-json', with arg HEADERS a cons cell of  JSON and http headers, without it just the JSON."    (let ((json (if headers (car response) response))) -    (if (not json) ; praying this is right here, else try "\n[]" -	(message "Looks like nothing returned from endpoint: %s" endpoint) -      (let* ((headers (if headers (cdr response) nil)) -             (link-header (mastodon-tl--get-link-header-from-response headers))) -        (with-mastodon-buffer buffer #'mastodon-mode nil -          (mastodon-tl--set-buffer-spec buffer endpoint update-function -                                        link-header update-params hide-replies) -          (mastodon-tl--do-init json update-function)))))) - -(defun mastodon-tl--init-sync -    (buffer-name endpoint update-function -                 &optional note-type params headers view-name binding-str) -  "Initialize BUFFER-NAME with timeline targeted by ENDPOINT. +    (cond ((not json) ; praying this is right here, else try "\n[]" +	   (message "Looks like nothing returned from endpoint: %s" endpoint)) +          ((eq (caar json) 'error) +           (user-error "Looks like the server bugged out: \"%s\"" (cdar json))) +          (t +           (let* ((headers (if headers (cdr response) nil)) +                  (link-header (mastodon-tl--get-link-header-from-response headers))) +             (with-mastodon-buffer buffer #'mastodon-mode nil +               (mastodon-tl--set-buffer-spec buffer endpoint update-function +                                             link-header update-params hide-replies) +               (mastodon-tl--do-init json update-function instance))))))) + +  (defun mastodon-tl--init-sync +      (buffer-name endpoint update-function +                   &optional note-type params headers view-name binding-str) +    "Initialize BUFFER-NAME with timeline targeted by ENDPOINT.  UPDATE-FUNCTION is used to receive more toots.  Runs synchronously.  Optional arg NOTE-TYPE means only get that type of notification. @@ -2859,11 +2916,14 @@ BINDING-STR is a string explaining any bindins in the view."        (mastodon-tl--do-init json update-function)        buffer))) -(defun mastodon-tl--do-init (json update-fun) +(defun mastodon-tl--do-init (json update-fun &optional domain)    "Utility function for `mastodon-tl--init*' and `mastodon-tl--init-sync'. -JSON is the data to call UPDATE-FUN on." +JSON is the data to call UPDATE-FUN on. +When DOMAIN, force inclusion of user's domain in their handle."    (remove-overlays) ; video overlays -  (funcall update-fun json) +  (if domain +      (funcall update-fun json nil domain) +    (funcall update-fun json))    (setq     ;; Initialize with a minimal interval; we re-scan at least once     ;; every 5 minutes to catch any timestamps we may have missed diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el index aff201d..864d767 100644 --- a/lisp/mastodon-toot.el +++ b/lisp/mastodon-toot.el @@ -912,7 +912,15 @@ instance to edit a toot."                    (mastodon-views--cancel-scheduled-toot                     scheduled-id :no-confirm))                  (mastodon-toot--restore-previous-window-config prev-window-config) -                (when edit-id +                ;; reload previous view in certain cases: +                ;; we reload: - when we have been editing +                ;;            - when we are in thread view +                ;;            - ? +                ;; (we don't necessarily want to reload in every posting case +                ;; as it can sometimes be slow and we may still lose our place +                ;; in a timeline.) +                (when (or edit-id +                          (equal 'thread (mastodon-tl--get-buffer-type)))                    (let ((pos (marker-position (cadr prev-window-config))))                      (mastodon-tl--reload-timeline-or-profile pos)))))))))) @@ -1133,7 +1141,7 @@ arg, a candidate."    (cadr (assoc candidate mastodon-toot-completions)))  (defun mastodon-toot--emoji-annotation-fun (candidate) -  "." +  "CANDIDATE."    ;; TODO: emoji image as annot    (cdr (assoc candidate mastodon-toot-completions))) diff --git a/lisp/mastodon-views.el b/lisp/mastodon-views.el index e9e89c0..775b96b 100644 --- a/lisp/mastodon-views.el +++ b/lisp/mastodon-views.el @@ -748,7 +748,7 @@ MISSKEY means the instance is a Misskey or derived server."    (interactive)    (if user        (let ((response (mastodon-http--get-json -                       (mastodon-http--api "instance") nil nil :vector))) +                       (mastodon-http--api "instance" "v2") nil nil :vector)))          (mastodon-views--instance-response-fun response brief instance))      (mastodon-tl--do-if-item       (let* ((toot (if (mastodon-tl--profile-buffer-p) diff --git a/lisp/mastodon.el b/lisp/mastodon.el index 3504ef3..6eac3d8 100644 --- a/lisp/mastodon.el +++ b/lisp/mastodon.el @@ -6,7 +6,7 @@  ;; Author: Johnson Denen <johnson.denen@gmail.com>  ;;         Marty Hiatt <martianhiatus@riseup.net>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net> -;; Version: 1.0.21 +;; Version: 1.0.22  ;; Package-Requires: ((emacs "27.1") (request "0.3.0") (persist "0.4"))  ;; Homepage: https://codeberg.org/martianh/mastodon.el diff --git a/mastodon-index.org b/mastodon-index.org index aa5efd1..14cba03 100644 --- a/mastodon-index.org +++ b/mastodon-index.org @@ -48,12 +48,11 @@  #+RESULTS:  | Binding          | Command                                           | Description                                                                    |  |------------------+---------------------------------------------------+--------------------------------------------------------------------------------| -|                  | mastodon                                          | Connect Mastodon client to `mastodon-instance-url' instance.                   | +|                  | mastodon                                          | Connect client to `mastodon-instance-url' instance.                            |  |                  | mastodon-async-mode                               | Async Mastodon.                                                                | -|                  | mastodon-discover                                 | Plug Mastodon functionality into `discover'.                                   |  | C-M-q            | mastodon-kill-all-buffers                         | Kill any and all open mastodon buffers, hopefully.                             |  | Q                | mastodon-kill-window                              | Quit window and delete helper.                                                 | -|                  | mastodon-mode                                     | Major mode for Mastodon, the federated microblogging network.                  | +|                  | mastodon-mode                                     | Major mode for fediverse services using the Mastodon API.                      |  |                  | mastodon-notifications--clear-all                 | Clear all notifications.                                                       |  | C-k              | mastodon-notifications--clear-current             | Dismiss the notification at point.                                             |  |                  | mastodon-notifications--follow-request-accept     | Accept a follow request.                                                       | @@ -78,6 +77,8 @@  |                  | mastodon-profile--open-following                  | Open a profile buffer showing the accounts that current profile follows.       |  |                  | mastodon-profile--open-statuses-no-reblogs        | Open a profile buffer showing statuses without reblogs.                        |  |                  | mastodon-profile--open-statuses-no-replies        | Open a profile buffer showing statuses including replies.                      | +|                  | mastodon-profile--open-statuses-only-media        | Open a profile buffer showing only statuses with media.                        | +| C-c #            | mastodon-profile--open-statuses-tagged            | Prompt for a hashtag and display a profile with only statuses containing it.   |  |                  | mastodon-profile--remove-from-followers-at-point  | Prompt for a user in the item at point and remove from followers.              |  |                  | mastodon-profile--remove-from-followers-list      | Select a user from your followers and remove from followers.                   |  |                  | mastodon-profile--remove-user-from-followers      | Remove a user from your followers.                                             | @@ -93,7 +94,7 @@  | V                | mastodon-profile--view-favourites                 | Open a new buffer displaying the user's favourites.                            |  |                  | mastodon-profile--view-preferences                | View user preferences in another window.                                       |  |                  | mastodon-profile-mode                             | Toggle mastodon profile minor mode.                                            | -|                  | mastodon-profile-update-mode                      | Minor mode to update Mastodon user profile.                                    | +|                  | mastodon-profile-update-mode                      | Minor mode to update user profile.                                             |  | s                | mastodon-search--query                            | Prompt for a search QUERY and return accounts, statuses, and hashtags.         |  |                  | mastodon-search--query-accounts-followed          | Run an accounts search QUERY, limited to your followers.                       |  |                  | mastodon-search--query-cycle                      | Cycle through search types: accounts, hashtags, and statuses.                  | @@ -117,6 +118,7 @@  | F                | mastodon-tl--get-federated-timeline               | Open federated timeline.                                                       |  | H                | mastodon-tl--get-home-timeline                    | Open home timeline.                                                            |  | L                | mastodon-tl--get-local-timeline                   | Open local timeline.                                                           | +|                  | mastodon-tl--get-remote-local-timeline            | Prompt for an instance domain and try to display its local timeline.           |  | #                | mastodon-tl--get-tag-timeline                     | Prompt for tag and opens its timeline.                                         |  | n                | mastodon-tl--goto-next-item                       | Jump to next item.                                                             |  | C-<down>         | mastodon-tl--goto-next-toot                       |                                                                                | @@ -143,12 +145,12 @@  |                  | mastodon-tl--unmute-thread                        | Mute the thread displayed in the current buffer.                               |  | S-RET            | mastodon-tl--unmute-user                          | Query for USER-HANDLE from list of muted users and unmute that user.           |  | u, g             | mastodon-tl--update                               | Update timeline with new toots.                                                | -|                  | mastodon-tl--view-full-image                      | Browse full-sized version of image at point in a separate emacs window.        | +|                  | mastodon-tl--view-full-image                      | Browse full-sized version of image at point in a new window.                   |  |                  | mastodon-tl--view-full-image-or-play-video        | View full sized version of image at point, or try to play video.               |  |                  | mastodon-tl--view-whole-thread                    | From a thread view, view entire thread.                                        |  | t                | mastodon-toot                                     | Update instance with new toot. Content is captured in a new buffer.            |  | C-c C-a          | mastodon-toot--attach-media                       | Prompt for an attachment FILE with DESCRIPTION.                                | -| C-c C-k          | mastodon-toot--cancel                             | Kill new-toot buffer/window. Does not POST content to Mastodon.                | +| C-c C-k          | mastodon-toot--cancel                             | Kill new-toot buffer/window. Does not POST content.                            |  | C-c C-v          | mastodon-toot--change-visibility                  | Change the current visibility to the next valid value.                         |  | C-c !            | mastodon-toot--clear-all-attachments              | Remove all attachments from a toot draft.                                      |  |                  | mastodon-toot--copy-toot-text                     | Copy text of toot at point.                                                    | @@ -171,7 +173,7 @@  | r                | mastodon-toot--reply                              | Reply to toot at `point'.                                                      |  |                  | mastodon-toot--save-draft                         | Save the current compose toot text as a draft.                                 |  | C-c C-s          | mastodon-toot--schedule-toot                      | Read a date (+ time) in the minibuffer and schedule the current toot.          | -| C-c C-c          | mastodon-toot--send                               | POST contents of new-toot buffer to Mastodon instance and kill buffer.         | +| C-c C-c          | mastodon-toot--send                               | POST contents of new-toot buffer to fediverse instance and kill buffer.        |  |                  | mastodon-toot--set-default-visibility             | Set the default visibility for toots on the server.                            |  | C-c C-l          | mastodon-toot--set-toot-language                  | Prompt for a language and set `mastodon-toot--language'.                       |  | k                | mastodon-toot--toggle-bookmark                    | Bookmark or unbookmark toot at point.                                          | @@ -181,8 +183,8 @@  | C-c C-w          | mastodon-toot--toggle-warning                     | Toggle `mastodon-toot--content-warning'.                                       |  | a                | mastodon-toot--translate-toot-text                | Translate text of toot at point.                                               |  | E                | mastodon-toot--view-toot-edits                    | View editing history of the toot at point in a popup buffer.                   | -|                  | mastodon-toot-mode                                | Minor mode to capture Mastodon toots.                                          |  |                  | mastodon-turn-on-discover                         | Turns on discover support                                                      | +|                  | mastodon-toot-mode                                | Minor mode for composing toots.                                                |  |                  | mastodon-url-lookup                               | If a URL resembles a mastodon link, try to load in `mastodon.el'.              |  |                  | mastodon-url-lookup-force                         | Call `mastodon-url-lookup' without checking if URL is fedi-like.               |  |                  | mastodon-views--add-account-to-list               | Prompt for a list and for an account, add account to list.                     | @@ -235,43 +237,47 @@  #+end_src  #+RESULTS: -| Custom variable                                    | Description                                                                   | -|----------------------------------------------------+-------------------------------------------------------------------------------| -| mastodon-active-user                               | Username of the active user.                                                  | -| mastodon-client--token-file                        | File path where Mastodon access tokens are stored.                            | -| mastodon-instance-url                              | Base URL for the Mastodon instance you want to be active.                     | -| mastodon-media--avatar-height                      | Height of the user avatar images (if shown).                                  | -| mastodon-media--enable-image-caching               | Whether images should be cached.                                              | -| mastodon-media--preview-max-height                 | Max height of any media attachment preview to be shown in timelines.          | -| mastodon-mode-hook                                 | Hook run when entering Mastodon mode.                                         | -| mastodon-profile-mode-hook                         | Hook run after entering or leaving `mastodon-profile-mode'.                   | -| mastodon-profile-update-mode-hook                  | Hook run after entering or leaving `mastodon-profile-update-mode'.            | -| mastodon-search-mode-hook                          | Hook run after entering or leaving `mastodon-search-mode'.                    | -| mastodon-tl--display-caption-not-url-when-no-media | Display an image's caption rather than URL.                                   | -| mastodon-tl--display-media-p                       | A boolean value stating whether to show media in timelines.                   | -| mastodon-tl--enable-proportional-fonts             | Nonnil to enable using proportional fonts when rendering HTML.                | -| mastodon-tl--enable-relative-timestamps            | Whether to show relative (to the current time) timestamps.                    | -| mastodon-tl--expand-content-warnings               | Whether to expand content warnings by default.                                | -| mastodon-tl--hide-replies                          | Whether to hide replies from the timelines.                                   | -| mastodon-tl--highlight-current-toot                | Whether to highlight the toot at point. Uses `cursor-face' special property.  | -| mastodon-tl--load-full-sized-images-in-emacs       | Whether to load full-sized images inside Emacs.                               | -| mastodon-tl--no-fill-on-render                     | Non-nil to disable filling by shr.el while rendering toot body.               | -| mastodon-tl--show-avatars                          | Whether to enable display of user avatars in timelines.                       | -| mastodon-tl--show-stats                            | Whether to show toot stats (faves, boosts, replies counts).                   | -| mastodon-tl--symbols                               | A set of symbols (and fallback strings) to be used in timeline.               | -| mastodon-tl--tag-timeline-tags                     | A list of up to four tags for use with `mastodon-tl--followed-tags-timeline'. | -| mastodon-tl--timeline-posts-count                  | Number of posts to display when loading a timeline.                           | -| mastodon-tl-position-after-update                  | Defines where `point' should be located after a timeline update.              | -| mastodon-toot--attachment-height                   | Height of the attached images preview in the toot draft buffer.               | -| mastodon-toot--completion-style-for-mentions       | The company completion style to use for mentions.                             | -| mastodon-toot--default-media-directory             | The default directory when prompting for a media file to upload.              | -| mastodon-toot--default-reply-visibility            | Default visibility settings when replying.                                    | -| mastodon-toot--emojify-in-compose-buffer           | Whether to enable `emojify-mode' in the compose buffer.                       | -| mastodon-toot--enable-completion                   | Whether to enable completion of mentions and hashtags.                        | -| mastodon-toot--enable-custom-instance-emoji        | Whether to enable your instance's custom emoji by default.                    | -| mastodon-toot--proportional-fonts-compose          | Nonnil to enable using proportional fonts in the compose buffer.              | -| mastodon-toot--use-company-for-completion          | Whether to enable company for completion.                                     | -| mastodon-toot-display-orig-in-reply-buffer         | Display a copy of the toot replied to in the compose buffer.                  | -| mastodon-toot-mode-hook                            | Hook run after entering or leaving `mastodon-toot-mode'.                      | -| mastodon-toot-orig-in-reply-length                 | Length to crop toot replied to in the compose buffer to.                      | -| mastodon-toot-timestamp-format                     | Format to use for timestamps.                                                 | +| Custom variable                                              | Description                                                                                      | +|--------------------------------------------------------------+--------------------------------------------------------------------------------------------------| +| mastodon-active-user                                         | Username of the active user.                                                                     | +| mastodon-client--token-file                                  | File path where Mastodon access tokens are stored.                                               | +| mastodon-instance-url                                        | Base URL for the fediverse instance you want to be active.                                       | +| mastodon-media--avatar-height                                | Height of the user avatar images (if shown).                                                     | +| mastodon-media--enable-image-caching                         | Whether images should be cached.                                                                 | +| mastodon-media--preview-max-height                           | Max height of any media attachment preview to be shown in timelines.                             | +| mastodon-mode-hook                                           | Hook run when entering Mastodon mode.                                                            | +| mastodon-notifications--profile-note-in-foll-reqs            | When non-nil, show some of a user's profile note in follow                                       | +| mastodon-notifications--profile-note-in-foll-reqs-max-length | The maximum character length for display of user profile note in                                 | +| mastodon-notifications-profile-note-in-foll-reqs             | When non-nil, show some of a user's profile note in follow                                       | +| mastodon-profile-mode-hook                                   | Hook run after entering or leaving `mastodon-profile-mode'.                                      | +| mastodon-profile-update-mode-hook                            | Hook run after entering or leaving `mastodon-profile-update-mode'.                               | +| mastodon-search-mode-hook                                    | Hook run after entering or leaving `mastodon-search-mode'.                                       | +| mastodon-tl--display-caption-not-url-when-no-media           | Display an image's caption rather than URL.                                                      | +| mastodon-tl--display-media-p                                 | A boolean value stating whether to show media in timelines.                                      | +| mastodon-tl--enable-proportional-fonts                       | Nonnil to enable using proportional fonts when rendering HTML.                                   | +| mastodon-tl--enable-relative-timestamps                      | Whether to show relative (to the current time) timestamps.                                       | +| mastodon-tl--expand-content-warnings                         | Whether to expand content warnings by default.                                                   | +| mastodon-tl--hide-replies                                    | Whether to hide replies from the timelines.                                                      | +| mastodon-tl--highlight-current-toot                          | Whether to highlight the toot at point. Uses `cursor-face' special property.                     | +| mastodon-tl--load-full-sized-images-in-emacs                 | Whether to load full-sized images inside Emacs.                                                  | +| mastodon-tl--no-fill-on-render                               | Non-nil to disable filling by shr.el while rendering toot body.                                  | +| mastodon-tl--remote-local-domains                            | A list of domains to view the local timelines of using `mastodon-tl--get-remote-local-timeline'. | +| mastodon-tl--show-avatars                                    | Whether to enable display of user avatars in timelines.                                          | +| mastodon-tl--show-stats                                      | Whether to show toot stats (faves, boosts, replies counts).                                      | +| mastodon-tl--symbols                                         | A set of symbols (and fallback strings) to be used in timeline.                                  | +| mastodon-tl--tag-timeline-tags                               | A list of up to four tags for use with `mastodon-tl--followed-tags-timeline'.                    | +| mastodon-tl--timeline-posts-count                            | Number of posts to display when loading a timeline.                                              | +| mastodon-tl-position-after-update                            | Defines where `point' should be located after a timeline update.                                 | +| mastodon-toot--attachment-height                             | Height of the attached images preview in the toot draft buffer.                                  | +| mastodon-toot--completion-style-for-mentions                 | The company completion style to use for mentions.                                                | +| mastodon-toot--default-media-directory                       | The default directory when prompting for a media file to upload.                                 | +| mastodon-toot--default-reply-visibility                      | Default visibility settings when replying.                                                       | +| mastodon-toot--emojify-in-compose-buffer                     | Whether to enable `emojify-mode' in the compose buffer.                                          | +| mastodon-toot--enable-completion                             | Whether to enable completion of mentions and hashtags.                                           | +| mastodon-toot--enable-custom-instance-emoji                  | Whether to enable your instance's custom emoji by default.                                       | +| mastodon-toot--proportional-fonts-compose                    | Nonnil to enable using proportional fonts in the compose buffer.                                 | +| mastodon-toot--use-company-for-completion                    | Whether to enable company for completion.                                                        | +| mastodon-toot-display-orig-in-reply-buffer                   | Display a copy of the toot replied to in the compose buffer.                                     | +| mastodon-toot-mode-hook                                      | Hook run after entering or leaving `mastodon-toot-mode'.                                         | +| mastodon-toot-orig-in-reply-length                           | Length to crop toot replied to in the compose buffer to.                                         | +| mastodon-toot-timestamp-format                               | Format to use for timestamps.                                                                    |  | 
