diff options
| -rw-r--r-- | lisp/mastodon-async.el | 7 | ||||
| -rw-r--r-- | lisp/mastodon-auth.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-client.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-discover.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-http.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-inspect.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-media.el | 2 | ||||
| -rw-r--r-- | lisp/mastodon-notifications.el | 13 | ||||
| -rw-r--r-- | lisp/mastodon-profile.el | 33 | ||||
| -rw-r--r-- | lisp/mastodon-search.el | 49 | ||||
| -rw-r--r-- | lisp/mastodon-tl.el | 91 | ||||
| -rw-r--r-- | lisp/mastodon-toot.el | 9 | ||||
| -rw-r--r-- | lisp/mastodon.el | 24 | 
13 files changed, 143 insertions, 95 deletions
| diff --git a/lisp/mastodon-async.el b/lisp/mastodon-async.el index 6ff09e3..86547a1 100644 --- a/lisp/mastodon-async.el +++ b/lisp/mastodon-async.el @@ -1,12 +1,11 @@  ;;; mastodon-async.el --- Client for Mastodon -*- lexical-binding: t -*- -;; Copyright (C) 2017 Johnson Denen -;; Author: Johnson Denen <johnson.denen@gmail.com> -;;         Alex J. Griffith <griffitaj@gmail.com> +;; Copyright (C) 2017 Alex J. Griffith +;; Author: Alex J. Griffith <griffitaj@gmail.com>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-auth.el b/lisp/mastodon-auth.el index 74d4404..e582e4f 100644 --- a/lisp/mastodon-auth.el +++ b/lisp/mastodon-auth.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-client.el b/lisp/mastodon-client.el index b27d434..42e8b1f 100644 --- a/lisp/mastodon-client.el +++ b/lisp/mastodon-client.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-discover.el b/lisp/mastodon-discover.el index 10abc59..7046070 100644 --- a/lisp/mastodon-discover.el +++ b/lisp/mastodon-discover.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el index f988e39..e288c18 100644 --- a/lisp/mastodon-http.el +++ b/lisp/mastodon-http.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1") (request "0.3.0")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-inspect.el b/lisp/mastodon-inspect.el index b0270ee..15ee7ce 100644 --- a/lisp/mastodon-inspect.el +++ b/lisp/mastodon-inspect.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-media.el b/lisp/mastodon-media.el index 54d5430..9441bdb 100644 --- a/lisp/mastodon-media.el +++ b/lisp/mastodon-media.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. diff --git a/lisp/mastodon-notifications.el b/lisp/mastodon-notifications.el index 1361099..5e3305a 100644 --- a/lisp/mastodon-notifications.el +++ b/lisp/mastodon-notifications.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -47,6 +47,8 @@  (autoload 'mastodon-tl--property "mastodon-tl.el")  (autoload 'mastodon-tl--spoiler "mastodon-tl.el")  (autoload 'mastodon-tl--toot-id "mastodon-tl.el") +(autoload 'mastodon-http--get-params-async-json "mastodon-http.el") +(defvar mastodon-tl--buffer-spec)  (defvar mastodon-tl--display-media-p)  (defvar mastodon-tl--buffer-spec) @@ -221,7 +223,8 @@ takes a single function. By default it is  `mastodon-tl--byline-boosted'.  ID is the notification's own id, which is attached as a property." -  (mastodon-tl--insert-status toot body author-byline action-byline id)) +  (when toot ; handle rare blank notif server bug +    (mastodon-tl--insert-status toot body author-byline action-byline id)))  (defun mastodon-notifications--by-type (note)    "Filters NOTE for those listed in `mastodon-notifications--types-alist'." @@ -235,8 +238,10 @@ ID is the notification's own id, which is attached as a property."  (defun mastodon-notifications--timeline (json)    "Format JSON in Emacs buffer." -  (mapc #'mastodon-notifications--by-type json) -  (goto-char (point-min))) +  (if (equal json '[]) +      (message "Looks like you have no notifications for the moment.") +    (mapc #'mastodon-notifications--by-type json) +    (goto-char (point-min))))  (defun mastodon-notifications--get ()    "Display NOTIFICATIONS in buffer." diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el index 21b40b3..5811a4a 100644 --- a/lisp/mastodon-profile.el +++ b/lisp/mastodon-profile.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1") (seq "1.0")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -146,7 +146,6 @@ extra keybindings."  (defun mastodon-profile--view-follow-requests ()    "Open a new buffer displaying the user's follow requests."    (interactive) -  (mastodon-profile-mode)    (mastodon-tl--init "follow-requests"                       "follow_requests"                       'mastodon-profile--add-author-bylines)) @@ -386,20 +385,22 @@ FIELD is used to identify regions under 'account"  (defun mastodon-profile--add-author-bylines (tootv)    "Convert TOOTV into a author-bylines and insert."    (let ((inhibit-read-only t)) -    (mapc (lambda (toot) -            (let ((start-pos (point))) -              (insert "\n" -                      (propertize -                       (mastodon-tl--byline-author `((account . ,toot))) -                       'byline  't -                       'toot-id (alist-get 'id toot) -                       'base-toot-id (mastodon-tl--toot-id toot) -                       'toot-json toot)) -              (mastodon-media--inline-images start-pos (point)) -              (insert "\n" -                      (mastodon-tl--render-text (alist-get 'note toot) nil) -                      "\n"))) -          tootv))) +    (if (equal tootv '[]) +        (message "Looks like you have no follow requests for the moment.") +      (mapc (lambda (toot) +              (let ((start-pos (point))) +                (insert "\n" +                        (propertize +                         (mastodon-tl--byline-author `((account . ,toot))) +                         'byline  't +                         'toot-id (alist-get 'id toot) +                         'base-toot-id (mastodon-tl--toot-id toot) +                         'toot-json toot)) +                (mastodon-media--inline-images start-pos (point)) +                (insert "\n" +                        (mastodon-tl--render-text (alist-get 'note toot) nil) +                        "\n"))) +            tootv))))  (defun mastodon-profile--search-account-by-handle (handle)    "Return an account based on a user's HANDLE. diff --git a/lisp/mastodon-search.el b/lisp/mastodon-search.el index 78c2ab4..8c654cc 100644 --- a/lisp/mastodon-search.el +++ b/lisp/mastodon-search.el @@ -1,12 +1,11 @@  ;;; mastodon-search.el --- Search functions for mastodon.el  -*- lexical-binding: t -*- -;; Copyright (C) 2017-2019 Johnson Denen -;; Author: Johnson Denen <johnson.denen@gmail.com> -;;         Marty Hiatt <martianhiatus@riseup.net> +;; Copyright (C) 2017-2019 Marty Hiatt +;; Author: Marty Hiatt <martianhiatus@riseup.net>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -58,7 +57,7 @@    "Prompt for a search QUERY and return accounts synchronously.  Returns a nested list containing user handle, display name, and URL."    (interactive "sSearch mastodon for: ") -  (let* ((url (format "%s/api/v1/accounts/search" mastodon-instance-url)) +  (let* ((url (mastodon-http--api "accounts/search"))           ;; (buffer (format "*mastodon-search-%s*" query))           (response (if (equal mastodon-toot--enable-completion-for-mentions "following")                         (mastodon-http--get-search-json url query "following=true") @@ -98,19 +97,7 @@ Returns a nested list containing user handle, display name, and URL."                           " USERS\n"                           " ------------\n\n")                   'success)) -        (mapc (lambda (el) -                (insert (propertize (car el) 'face 'mastodon-display-name-face) -                        " : \n : " -                        (propertize (concat "@" (car (cdr el))) -                                    'face 'mastodon-handle-face -                                    'mouse-face 'highlight -		                    'mastodon-tab-stop 'user-handle -		                    'keymap mastodon-tl--link-keymap -                                    'mastodon-handle (concat "@" (car (cdr el))) -		                    'help-echo (concat "Browse user profile of @" (car (cdr el)))) -                        " : \n" -                        "\n")) -              user-ids) +        (mastodon-search--insert-users-propertized user-ids :note)          ;; hashtag results:          (insert (mastodon-tl--set-face                   (concat "\n ------------\n" @@ -136,11 +123,33 @@ Returns a nested list containing user handle, display name, and URL."          (mapc 'mastodon-tl--toot toots-list-json)          (goto-char (point-min)))))) +(defun mastodon-search--insert-users-propertized (users &optional note) +  "Insert USERS list into the buffer. +If NOTE is non-nil, include user's profile note. +This is also called by `mastodon-tl--get-follow-suggestions'." +  (mapc (lambda (el) +          (insert (propertize (car el) 'face 'mastodon-display-name-face) +                  " : \n : " +                  (propertize (concat "@" (car (cdr el))) +                              'face 'mastodon-handle-face +                              'mouse-face 'highlight +		                      'mastodon-tab-stop 'user-handle +		                      'keymap mastodon-tl--link-keymap +                              'mastodon-handle (concat "@" (car (cdr el))) +		                      'help-echo (concat "Browse user profile of @" (car (cdr el)))) +                  " : \n" +                  (if note +                      (mastodon-tl--render-text (cadddr el) nil) +                  "") +                  "\n")) +        users)) +  (defun mastodon-search--get-user-info (account) -  "Get user handle, display name and account URL from ACCOUNT." +  "Get user handle, display name, account URL and profile note from ACCOUNT."    (list (alist-get 'display_name account)          (alist-get 'acct account) -        (alist-get 'url account))) +        (alist-get 'url account) +        (alist-get 'note account)))  (defun mastodon-search--get-hashtag-info (tag)    "Get hashtag name and URL from TAG." diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index f984c34..f7ca297 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -2,10 +2,11 @@  ;; Copyright (C) 2017-2019 Johnson Denen  ;; Author: Johnson Denen <johnson.denen@gmail.com> +;;         Marty Hiatt <martianhiatus@riseup.net>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -58,7 +59,10 @@  (autoload 'mastodon-http--get-json-async "mastodon-http")  (autoload 'mastodon-profile--lookup-account-in-status "mastodon-profile")  (autoload 'mastodon-profile-mode "mastodon-profile") -(autoload 'mastodon-notifications--get "mastodon-notifications") +;; make notifications--get available via M-x and outside our keymap: +(autoload 'mastodon-notifications--get "mastodon-notifications" +  "Display NOTIFICATIONS in buffer." t) ; interactive +(autoload 'mastodon-search--insert-users-propertized "mastodon-search")  (defvar mastodon-instance-url)  (defvar mastodon-toot-timestamp-format)  (defvar shr-use-fonts)  ;; declare it since Emacs24 didn't have this @@ -463,22 +467,23 @@ By default it is `mastodon-tl--byline-boosted'"  The contents comes from the given TOOT which is used in parsing  links in the text. If TOOT is nil no parsing occurs." -  (with-temp-buffer -    (insert string) -    (let ((shr-use-fonts mastodon-tl--enable-proportional-fonts) -          (shr-width (when mastodon-tl--enable-proportional-fonts -                       (- (window-width) 1)))) -      (shr-render-region (point-min) (point-max))) -    ;; Make all links a tab stop recognized by our own logic, make things point -    ;; to our own logic (e.g. hashtags), and update keymaps where needed: -    (when toot -      (let (region) -        (while (setq region (mastodon-tl--find-property-range -                             'shr-url (or (cdr region) (point-min)))) -          (mastodon-tl--process-link toot -                                     (car region) (cdr region) -                                     (get-text-property (car region) 'shr-url))))) -    (buffer-string))) +  (when string ; handle rare empty notif server bug +    (with-temp-buffer +      (insert string) +      (let ((shr-use-fonts mastodon-tl--enable-proportional-fonts) +            (shr-width (when mastodon-tl--enable-proportional-fonts +                         (- (window-width) 1)))) +        (shr-render-region (point-min) (point-max))) +      ;; Make all links a tab stop recognized by our own logic, make things point +      ;; to our own logic (e.g. hashtags), and update keymaps where needed: +      (when toot +        (let (region) +          (while (setq region (mastodon-tl--find-property-range +                               'shr-url (or (cdr region) (point-min)))) +            (mastodon-tl--process-link toot +                                       (car region) (cdr region) +                                       (get-text-property (car region) 'shr-url))))) +      (buffer-string))))  (defun mastodon-tl--process-link (toot start end url)    "Process link URL in TOOT as hashtag, userhandle, or normal link. @@ -989,21 +994,42 @@ webapp"      (if (> (+ (length (alist-get 'ancestors context))                (length (alist-get 'descendants context)))             0) -        (with-output-to-temp-buffer buffer -          (switch-to-buffer buffer) -          (mastodon-mode) -          (setq mastodon-tl--buffer-spec -                `(buffer-name ,buffer -                              endpoint ,(format "statuses/%s/context" id) -                              update-function -                              (lambda(toot) (message "END of thread.")))) -          (let ((inhibit-read-only t)) -            (mastodon-tl--timeline (vconcat -                                    (alist-get 'ancestors context) -                                    `(,toot) -                                    (alist-get 'descendants context))))) +        (progn +          (with-output-to-temp-buffer buffer +            (switch-to-buffer buffer) +            (mastodon-mode) +            (setq mastodon-tl--buffer-spec +                  `(buffer-name ,buffer +                                endpoint ,(format "statuses/%s/context" id) +                                update-function +                                (lambda (toot) (message "END of thread.")))) +            (let ((inhibit-read-only t)) +              (mastodon-tl--timeline (vconcat +                                      (alist-get 'ancestors context) +                                      `(,toot) +                                      (alist-get 'descendants context))))) +          (mastodon-tl--goto-next-toot))        (message "No Thread!")))) +(defun mastodon-tl--get-follow-suggestions () +"Display a buffer of suggested accounts to follow." +  (interactive) +  (let* ((buffer (format "*mastodon-follow-suggestions*")) +         (response +          (mastodon-http--get-json +           (mastodon-http--api "suggestions"))) +         (users (mapcar 'mastodon-search--get-user-info response))) +    (with-output-to-temp-buffer buffer +      (let ((inhibit-read-only t)) +        (switch-to-buffer buffer) +        (mastodon-mode) +        (insert (mastodon-tl--set-face +                 (concat "\n ------------\n" +                         " SUGGESTED ACCOUNTS\n" +                         " ------------\n\n") +                 'success)) +        (mastodon-search--insert-users-propertized users :note))))) +  (defun mastodon-tl--follow-user (user-handle &optional notify)    "Query for USER-HANDLE from current status and follow that user.  If NOTIFY is \"true\", enable notifications when that user posts. @@ -1107,7 +1133,7 @@ NOTIFY is only non-nil when called by `mastodon-tl--follow-user'."                        ;; if unmuting/unblocking, we got handle from mute/block list                        (mastodon-profile--search-account-by-handle                         user-handle) -                      ;; if muting/blocking, we select from handles in current status +                    ;; if muting/blocking, we select from handles in current status                      (mastodon-profile--lookup-account-in-status                       user-handle (mastodon-profile--toot-json))))           (user-id (mastodon-profile--account-field account 'id)) @@ -1352,6 +1378,7 @@ JSON is the data returned from the server."       mastodon-tl--timestamp-next-update (time-add (current-time)                                                    (seconds-to-time 300)))      (funcall update-function json)) +  (mastodon-tl--goto-next-toot)    (mastodon-mode)    (when (equal endpoint "follow_requests")      (mastodon-profile-mode)) diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el index 746b7d4..b50cbf6 100644 --- a/lisp/mastodon-toot.el +++ b/lisp/mastodon-toot.el @@ -2,10 +2,11 @@  ;; Copyright (C) 2017-2019 Johnson Denen  ;; Author: Johnson Denen <johnson.denen@gmail.com> +;;         Marty Hiatt <martianhiatus@riseup.net>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -69,11 +70,13 @@  (autoload 'mastodon-tl--toot-id "mastodon-tl")  (autoload 'mastodon-toot "mastodon") +;;;###autoload  (defgroup mastodon-toot nil    "Tooting in Mastodon."    :prefix "mastodon-toot-"    :group 'mastodon) +;;;###autoload  (defcustom mastodon-toot--default-visibility "public"    "The default visibility for new toots. @@ -86,16 +89,19 @@ followers-only), or \"direct\"."            (const :tag "followers only" "private")            (const :tag "direct" "direct"))) +;;;###autoload  (defcustom mastodon-toot--default-media-directory "~/"    "The default directory when prompting for a media file to upload."    :group 'mastodon-toot    :type 'string) +;;;###autoload  (defcustom mastodon-toot--attachment-height 80    "Height of the attached images preview in the toot draft buffer."    :group 'mastodon-toot    :type 'integer) +;;;###autoload  (defcustom mastodon-toot--enable-completion-for-mentions    (if (require 'company nil :noerror) "following" "off")    "Whether to enable company completion for mentions. @@ -109,6 +115,7 @@ This is only used if company mode is installed."            (const :tag "following only" "following")            (const :tag "all users" "all"))) +;;;###autoload  (defcustom mastodon-toot--enable-custom-instance-emoji nil    "Whether to enable your instance's custom emoji by default."    :group 'mastodon-toot diff --git a/lisp/mastodon.el b/lisp/mastodon.el index f65a86d..bd0a557 100644 --- a/lisp/mastodon.el +++ b/lisp/mastodon.el @@ -5,7 +5,7 @@  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 0.10.0  ;; Package-Requires: ((emacs "27.1") (request "0.3.2") (seq "1.0")) -;; Homepage: https://git.blast.noho.st/mouse/mastodon.el +;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -32,8 +32,6 @@  ;;; Code:  (require 'cl-lib) ; for `cl-some' call in mastodon -;; hack to make mastodon-toot customizes visible prior to running mastodon-toot: -(require 'mastodon-toot)  (declare-function discover-add-context-menu "discover")  (declare-function emojify-mode "emojify") @@ -54,10 +52,10 @@  (autoload 'mastodon-profile--get-toot-author "mastodon-profile")  (autoload 'mastodon-profile--make-author-buffer "mastodon-profile")  (autoload 'mastodon-profile--show-user "mastodon-profile") -;; (autoload 'mastodon-toot--compose-buffer "mastodon-toot") -;; (autoload 'mastodon-toot--reply "mastodon-toot") -;; (autoload 'mastodon-toot--toggle-boost "mastodon-toot") -;; (autoload 'mastodon-toot--toggle-favourite "mastodon-toot") +(autoload 'mastodon-toot--compose-buffer "mastodon-toot") +(autoload 'mastodon-toot--reply "mastodon-toot") +(autoload 'mastodon-toot--toggle-boost "mastodon-toot") +(autoload 'mastodon-toot--toggle-favourite "mastodon-toot")  (autoload 'mastodon-discover "mastodon-discover")  (autoload 'mastodon-tl--block-user "mastodon-tl") @@ -72,9 +70,9 @@  (autoload 'mastodon-notifications--follow-request-accept "mastodon-notifications")  (autoload 'mastodon-notifications--follow-request-reject "mastodon-notifications")  (autoload 'mastodon-search--search-query "mastodon-search") -;; (autoload 'mastodon-toot--delete-toot "mastodon-toot") -;; (autoload 'mastodon-toot--copy-toot-url "mastodon-toot") -;; (autoload 'mastodon-toot--pin-toot-toggle "mastodon-toot") +(autoload 'mastodon-toot--delete-toot "mastodon-toot") +(autoload 'mastodon-toot--copy-toot-url "mastodon-toot") +(autoload 'mastodon-toot--pin-toot-toggle "mastodon-toot")  (autoload 'mastodon-auth--get-account-name "mastodon-auth")  ;; (autoload 'mastodon-async--stream-federated "mastodon-async")  ;; (autoload 'mastodon-async--stream-local "mastodon-async") @@ -84,9 +82,11 @@  (autoload 'mastodon-profile--update-user-profile-note "mastodon-profile")  (autoload 'mastodon-auth--user-acct "mastodon-auth")  (autoload 'mastodon-tl--poll-vote "mastodon-http") -;; (autoload 'mastodon-toot--delete-and-redraft-toot "mastodon-toot") +(autoload 'mastodon-toot--delete-and-redraft-toot "mastodon-toot")  (autoload 'mastodon-profile--view-bookmarks "mastodon-profile") -;; (autoload 'mastodon-toot--bookmark-toot-toggle "mastodon-toot") +(autoload 'mastodon-toot--bookmark-toot-toggle "mastodon-toot") +(autoload 'mastodon-toot--enable-custom-emoji "mastodon-toot") +(defvar mastodon-toot--enable-custom-instance-emoji)  (defgroup mastodon nil    "Interface with Mastodon." | 
