aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mastodon-async.el2
-rw-r--r--lisp/mastodon-auth.el10
-rw-r--r--lisp/mastodon-http.el10
-rw-r--r--lisp/mastodon-notifications.el30
-rw-r--r--lisp/mastodon-profile.el62
-rw-r--r--lisp/mastodon-search.el26
-rw-r--r--lisp/mastodon-tl.el87
-rw-r--r--lisp/mastodon-toot.el64
8 files changed, 145 insertions, 146 deletions
diff --git a/lisp/mastodon-async.el b/lisp/mastodon-async.el
index 1fabee2..1fee9ef 100644
--- a/lisp/mastodon-async.el
+++ b/lisp/mastodon-async.el
@@ -305,7 +305,7 @@ Filter the toots using FILTER."
"Test JSON to see if account is local."
(not (string-match-p
"@"
- (cdr (assoc 'acct (cdr (assoc 'account json)))))))
+ (alist-get 'acct (alist-get 'account json)))))
(defun mastodon-async--output-toot (toot)
"Process TOOT and prepend it to the async user-facing buffer."
diff --git a/lisp/mastodon-auth.el b/lisp/mastodon-auth.el
index b22b51e..e5767f1 100644
--- a/lisp/mastodon-auth.el
+++ b/lisp/mastodon-auth.el
@@ -158,11 +158,11 @@ Handle any errors from the server."
(defun mastodon-auth--get-account-name ()
"Request user credentials and return an account name."
- (cdr (assoc
- 'acct
- (mastodon-http--get-json
- (mastodon-http--api
- "accounts/verify_credentials")))))
+ (alist-get
+ 'acct
+ (mastodon-http--get-json
+ (mastodon-http--api
+ "accounts/verify_credentials"))))
(defun mastodon-auth--user-acct ()
"Return a mastodon user acct name."
diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el
index 3e27e13..a45b4ed 100644
--- a/lisp/mastodon-http.el
+++ b/lisp/mastodon-http.el
@@ -88,7 +88,7 @@ Message status and JSON error from RESPONSE if unsuccessful."
(progn
(switch-to-buffer response)
(let ((json-response (mastodon-http--process-json)))
- (message "Error %s: %s" status (cdr (assoc 'error json-response))))))))
+ (message "Error %s: %s" status (alist-get 'error json-response)))))))
(defun mastodon-http--read-file-as-string (filename)
"Read a file FILENAME as a string. Used to generate image preview."
@@ -267,13 +267,13 @@ item uploaded, and `mastodon-toot--update-status-fields' is run."
(lambda (&key data &allow-other-keys)
(when data
(progn
- (push (cdr (assoc 'id data))
+ (push (alist-get 'id data)
mastodon-toot--media-attachment-ids) ; add ID to list
(message "%s file %s with id %S and caption '%s' uploaded!"
- (capitalize (cdr (assoc 'type data)))
+ (capitalize (alist-get 'type data))
file
- (cdr (assoc 'id data))
- (cdr (assoc 'description data)))
+ (alist-get 'id data)
+ (alist-get 'description data))
(mastodon-toot--update-status-fields)))))
:error (cl-function
(lambda (&key error-thrown &allow-other-keys)
diff --git a/lisp/mastodon-notifications.el b/lisp/mastodon-notifications.el
index 2430bcc..4437635 100644
--- a/lisp/mastodon-notifications.el
+++ b/lisp/mastodon-notifications.el
@@ -78,12 +78,12 @@
(interactive)
(when (mastodon-tl--find-property-range 'toot-json (point))
(let* ((toot-json (mastodon-tl--property 'toot-json))
- (f-req-p (string= "follow_request" (cdr (assoc 'type toot-json)))))
+ (f-req-p (string= "follow_request" (alist-get 'type toot-json))))
(if f-req-p
- (let* ((account (cdr (assoc 'account toot-json)))
- (id (cdr (assoc 'id account)))
- (handle (cdr (assoc 'acct account)))
- (name (cdr (assoc 'username account))))
+ (let* ((account (alist-get 'account toot-json))
+ (id (alist-get 'id account))
+ (handle (alist-get 'acct account))
+ (name (alist-get 'username account)))
(if id
(let ((response
(mastodon-http--post
@@ -104,12 +104,12 @@
(interactive)
(when (mastodon-tl--find-property-range 'toot-json (point))
(let* ((toot-json (mastodon-tl--property 'toot-json))
- (f-req-p (string= "follow_request" (cdr (assoc 'type toot-json)))))
+ (f-req-p (string= "follow_request" (alist-get 'type toot-json))))
(if f-req-p
- (let* ((account (cdr (assoc 'account toot-json)))
- (id (cdr (assoc 'id account)))
- (handle (cdr (assoc 'acct account)))
- (name (cdr (assoc 'username account))))
+ (let* ((account (alist-get 'account toot-json))
+ (id (alist-get 'id account))
+ (handle (alist-get 'acct account))
+ (name (alist-get 'username account)))
(if id
(let ((response
(mastodon-http--post
@@ -127,7 +127,7 @@
(defun mastodon-notifications--mention (note)
"Format for a `mention' NOTE."
- (let ((id (cdr (assoc 'id note)))
+ (let ((id (alist-get 'id note))
(status (mastodon-tl--field 'status note)))
(mastodon-notifications--insert-status
status
@@ -156,8 +156,8 @@
(defun mastodon-notifications--follow-request (note)
"Format for a `follow-request' NOTE."
- (let ((id (cdr (assoc 'id note)))
- (follower (cdr (assoc 'username (cdr (assoc 'account note))))))
+ (let ((id (alist-get 'id note))
+ (follower (alist-get 'username (alist-get 'account note))))
(mastodon-notifications--insert-status
(cons '(reblog (id . nil)) note)
(propertize (format "You have a follow request from... %s" follower)
@@ -170,7 +170,7 @@
(defun mastodon-notifications--favourite (note)
"Format for a `favourite' NOTE."
- (let ((id (cdr (assoc 'id note)))
+ (let ((id (alist-get 'id note))
(status (mastodon-tl--field 'status note)))
(mastodon-notifications--insert-status
status
@@ -188,7 +188,7 @@
(defun mastodon-notifications--reblog (note)
"Format for a `boost' NOTE."
- (let ((id (cdr (assoc 'id note)))
+ (let ((id (alist-get 'id note))
(status (mastodon-tl--field 'status note)))
(mastodon-notifications--insert-status
status
diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index b68be6f..c4bec38 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -163,9 +163,9 @@ extra keybindings."
(interactive)
(if (mastodon-tl--find-property-range 'toot-json (point))
(let* ((acct-json (mastodon-profile--toot-json))
- (id (cdr (assoc 'id acct-json)))
- (handle (cdr (assoc 'acct acct-json)))
- (name (cdr (assoc 'username acct-json))))
+ (id (alist-get 'id acct-json))
+ (handle (alist-get 'acct acct-json))
+ (name (alist-get 'username acct-json)))
(if id
(let ((response
(mastodon-http--post
@@ -185,9 +185,9 @@ extra keybindings."
(interactive)
(if (mastodon-tl--find-property-range 'toot-json (point))
(let* ((acct-json (mastodon-profile--toot-json))
- (id (cdr (assoc 'id acct-json)))
- (handle (cdr (assoc 'acct acct-json)))
- (name (cdr (assoc 'username acct-json))))
+ (id (alist-get 'id acct-json))
+ (handle (alist-get 'acct acct-json))
+ (name (alist-get 'username acct-json)))
(if id
(let ((response
(mastodon-http--post
@@ -209,8 +209,8 @@ extra keybindings."
"/api/v1/accounts/update_credentials"))
;; (buffer (mastodon-http--patch url))
(json (mastodon-http--patch-json url))
- (source (cdr (assoc 'source json)))
- (note (cdr (assoc 'note source)))
+ (source (alist-get 'source json))
+ (note (alist-get 'note source))
(buffer (get-buffer-create "*mastodon-update-profile*"))
(inhibit-read-only t))
(switch-to-buffer-other-window buffer)
@@ -247,8 +247,8 @@ Returns a list of lists."
(mapcar
(lambda (el)
(list
- (cdr (assoc 'name el))
- (cdr (assoc 'value el))))
+ (alist-get 'name el)
+ (alist-get 'value el)))
fields))))
(defun mastodon-profile--fields-insert (fields)
@@ -306,10 +306,10 @@ Returns a list of lists."
(mastodon-profile--account-field
account 'statuses_count)))
(relationships (mastodon-profile--relationships-get id))
- (followed-by-you (cdr (assoc 'following
- (aref relationships 0))))
- (follows-you (cdr (assoc 'followed_by
- (aref relationships 0))))
+ (followed-by-you (alist-get 'following
+ (aref relationships 0)))
+ (follows-you (alist-get 'followed_by
+ (aref relationships 0)))
(followsp (or (equal follows-you 't) (equal followed-by-you 't)))
(fields (mastodon-profile--fields-get account))
(pinned (mastodon-profile--get-statuses-pinned account)))
@@ -396,11 +396,11 @@ Returns a list of lists."
If toot is a boost, opens the profile of the booster."
(interactive)
(mastodon-profile--make-author-buffer
- (cdr (assoc 'account (mastodon-profile--toot-json)))))
+ (alist-get 'account (mastodon-profile--toot-json))))
(defun mastodon-profile--image-from-account (status)
"Generate an image from a STATUS."
- (let ((url (cdr (assoc 'avatar_static status))))
+ (let ((url (alist-get 'avatar_static status)))
(unless (equal url "/avatars/original/missing.png")
(mastodon-media--get-media-link-rendering url))))
@@ -443,12 +443,12 @@ FIELD is used to identify regions under 'account"
(propertize
(mastodon-tl--byline-author `((account . ,toot)))
'byline 't
- 'toot-id (cdr (assoc 'id toot))
+ '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 (cdr (assoc 'note toot)) nil)
+ (mastodon-tl--render-text (alist-get 'note toot) nil)
"\n")))
tootv)))
@@ -461,7 +461,7 @@ If the handle does not match a search return then retun NIL."
handle))
(matching-account
(seq-remove
- (lambda(x) (not (string= (cdr (assoc 'acct x)) handle)))
+ (lambda(x) (not (string= (alist-get 'acct x) handle)))
(mastodon-http--get-json
(mastodon-http--api (format "accounts/search?q=%s" handle))))))
(when (equal 1 (length matching-account))
@@ -477,35 +477,35 @@ If the handle does not match a search return then retun NIL."
These include the author, author of reblogged entries and any user mentioned."
(when status
- (let ((this-account (cdr (assoc 'account status)))
- (mentions (cdr (assoc 'mentions status)))
- (reblog (cdr (assoc 'reblog status))))
+ (let ((this-account (alist-get 'account status))
+ (mentions (alist-get 'mentions status))
+ (reblog (alist-get 'reblog status)))
(seq-filter
'stringp
(seq-uniq
(seq-concatenate
'list
- (list (cdr (assoc 'acct this-account)))
+ (list (alist-get 'acct this-account))
(mastodon-profile--extract-users-handles reblog)
(mapcar (lambda (mention)
- (cdr (assoc 'acct mention)))
+ (alist-get 'acct mention))
mentions)))))))
(defun mastodon-profile--lookup-account-in-status (handle status)
"Return account for HANDLE using hints in STATUS if possible."
- (let* ((this-account (cdr (assoc 'account status)))
- (reblog-account (cdr (assoc 'account (cdr (assoc 'reblog status)))))
+ (let* ((this-account (alist-get 'account status))
+ (reblog-account (alist-get 'account (alist-get 'reblog status)))
(mention-id (seq-some
(lambda (mention)
(when (string= handle
- (cdr (assoc 'acct mention)))
- (cdr (assoc 'id mention))))
- (cdr (assoc 'mentions status)))))
+ (alist-get 'acct mention))
+ (alist-get 'id mention)))
+ (alist-get 'mentions status))))
(cond ((string= handle
- (cdr (assoc 'acct this-account)))
+ (alist-get 'acct this-account))
this-account)
((string= handle
- (cdr (assoc 'acct reblog-account)))
+ (alist-get 'acct reblog-account))
reblog-account)
(mention-id
(mastodon-profile--account-from-id mention-id))
diff --git a/lisp/mastodon-search.el b/lisp/mastodon-search.el
index cbb452d..fcfaec9 100644
--- a/lisp/mastodon-search.el
+++ b/lisp/mastodon-search.el
@@ -72,9 +72,9 @@ Returns a nested list containing user handle, display name, and URL."
(let* ((url (format "%s/api/v2/search" mastodon-instance-url))
(buffer (format "*mastodon-search-%s*" query))
(response (mastodon-http--get-search-json url query))
- (accts (cdr (assoc 'accounts response)))
- (tags (cdr (assoc 'hashtags response)))
- (statuses (cdr (assoc 'statuses response)))
+ (accts (alist-get 'accounts response))
+ (tags (alist-get 'hashtags response))
+ (statuses (alist-get 'statuses response))
(user-ids (mapcar #'mastodon-search--get-user-info
accts)) ; returns a list of three-item lists
(tags-list (mapcar #'mastodon-search--get-hashtag-info
@@ -136,27 +136,27 @@ Returns a nested list containing user handle, display name, and URL."
(defun mastodon-search--get-user-info (account)
"Get user handle, display name and account URL from ACCOUNT."
- (list (cdr (assoc 'display_name account))
- (cdr (assoc 'acct account))
- (cdr (assoc 'url account))))
+ (list (alist-get 'display_name account)
+ (alist-get 'acct account)
+ (alist-get 'url account)))
(defun mastodon-search--get-hashtag-info (tag)
"Get hashtag name and URL from TAG."
- (list (cdr (assoc 'name tag))
- (cdr (assoc 'url tag))))
+ (list (alist-get 'name tag)
+ (alist-get 'url tag)))
(defun mastodon-search--get-status-info (status)
"Get ID, timestamp, content, and spoiler from STATUS."
- (list (cdr (assoc 'id status))
- (cdr (assoc 'created_at status))
- (cdr (assoc 'spoiler_text status))
- (cdr (assoc 'content status))))
+ (list (alist-get 'id status)
+ (alist-get 'created_at status)
+ (alist-get 'spoiler_text status)
+ (alist-get 'content status)))
(defun mastodon-search--get-id-from-status (status)
"Fetch the id from a STATUS returned by a search call to the server.
We use this to fetch the complete status from the server."
- (cdr (assoc 'id status)))
+ (alist-get 'id status))
(defun mastodon-search--fetch-full-status-from-id (id)
"Fetch the full status with id ID from the server.
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index d300a09..cf1c326 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -266,13 +266,13 @@ Optionally start from POS."
(defun mastodon-tl--byline-author (toot)
"Propertize author of TOOT."
- (let* ((account (cdr (assoc 'account toot)))
- (handle (cdr (assoc 'acct account)))
- (name (if (not (string= "" (cdr (assoc 'display_name account))))
- (cdr (assoc 'display_name account))
- (cdr (assoc 'username account))))
- (profile-url (cdr (assoc 'url account)))
- (avatar-url (cdr (assoc 'avatar account))))
+ (let* ((account (alist-get 'account toot))
+ (handle (alist-get 'acct account))
+ (name (if (not (string= "" (alist-get 'display_name account)))
+ (alist-get 'display_name account)
+ (alist-get 'username account)))
+ (profile-url (alist-get 'url account))
+ (avatar-url (alist-get 'avatar account)))
;; TODO: Once we have a view for a user (e.g. their posts
;; timeline) make this a tab-stop and attach an action
(concat
@@ -298,7 +298,7 @@ Optionally start from POS."
(defun mastodon-tl--byline-boosted (toot)
"Add byline for boosted data from TOOT."
- (let ((reblog (cdr (assoc 'reblog toot))))
+ (let ((reblog (alist-get 'reblog toot)))
(when reblog
(concat
"\n "
@@ -310,8 +310,8 @@ Optionally start from POS."
"Return FIELD from TOOT.
Return value from boosted content if available."
- (or (cdr (assoc field (cdr (assoc 'reblog toot))))
- (cdr (assoc field toot))))
+ (or (alist-get field (alist-get 'reblog toot))
+ (alist-get field toot)))
(defun mastodon-tl--relative-time-details (timestamp &optional current-time)
"Return cons of (descriptive string . next change) for the TIMESTAMP.
@@ -502,14 +502,14 @@ START and END are the boundaries of the link in the toot."
(defun mastodon-tl--extract-userid-toot (toot acct)
"Extract a user id for an ACCT from mentions in a TOOT."
- (let* ((mentions (append (cdr (assoc 'mentions toot)) nil))
+ (let* ((mentions (append (alist-get 'mentions toot) nil))
(mention (pop mentions))
(short-acct (substring acct 1 (length acct)))
return)
(while mention
- (when (string= (cdr (assoc 'acct mention))
+ (when (string= (alist-get 'acct mention)
short-acct)
- (setq return (cdr (assoc 'id mention))))
+ (setq return (alist-get 'id mention)))
(setq mention (pop mentions)))
return))
@@ -671,12 +671,12 @@ message is a link which unhides/hides the main body."
(media-string (mapconcat
(lambda (media-attachement)
(let ((preview-url
- (cdr (assoc 'preview_url media-attachement)))
+ (alist-get 'preview_url media-attachement))
(remote-url
- (if (cdr (assoc 'remote_url media-attachement))
- (cdr (assoc 'remote_url media-attachement))
+ (if (alist-get 'remote_url media-attachement)
+ (alist-get 'remote_url media-attachement)
;; fallback b/c notifications don't have remote_url
- (cdr (assoc 'url media-attachement)))))
+ (alist-get 'url media-attachement))))
(if mastodon-tl--display-media-p
(mastodon-media--get-media-link-rendering
preview-url remote-url) ; 2nd arg for shr-browse-url
@@ -690,10 +690,10 @@ message is a link which unhides/hides the main body."
(defun mastodon-tl--content (toot)
"Retrieve text content from TOOT."
(let* ((content (mastodon-tl--field 'content toot))
- (reblog (cdr (assoc 'reblog toot)))
+ (reblog (alist-get 'reblog toot))
(poll-p (if reblog
- (cdr (assoc 'poll reblog))
- (cdr (assoc 'poll toot)))))
+ (alist-get 'poll reblog)
+ (alist-get 'poll toot))))
(concat
(when poll-p
(mastodon-tl--get-poll toot))
@@ -718,18 +718,17 @@ takes a single function. By default it is
body
" \n"
(mastodon-tl--byline toot author-byline action-byline))
- 'toot-id (cdr (assoc 'id toot))
+ 'toot-id (alist-get 'id toot)
'base-toot-id (mastodon-tl--toot-id toot)
'help-echo (when (and mastodon-tl--buffer-spec
(string-match-p
"context" ; when thread view
(plist-get mastodon-tl--buffer-spec 'endpoint)))
- (if (alist-get 'reblog toot)
- (let ((reblog (cdr (assoc 'reblog toot))))
- (format "%s faves | %s boosts | %s replies"
- (alist-get 'favourites_count reblog)
- (alist-get 'reblogs_count reblog)
- (alist-get 'replies_count reblog)))
+ (if-let ((reblog (alist-get 'reblog toot)))
+ (format "%s faves | %s boosts | %s replies"
+ (alist-get 'favourites_count reblog)
+ (alist-get 'reblogs_count reblog)
+ (alist-get 'replies_count reblog))
(format "%s faves | %s boosts | %s replies"
(alist-get 'favourites_count toot)
(alist-get 'reblogs_count toot)
@@ -749,8 +748,8 @@ takes a single function. By default it is
(progn
(format "Option %s: %s, %s votes.\n"
(setq option-counter (1+ option-counter))
- (cdr (assoc 'title option))
- (cdr (assoc 'votes_count option)))))
+ (alist-get 'title option)
+ (alist-get 'votes_count option))))
options
"\n") "\n")))
@@ -759,12 +758,12 @@ takes a single function. By default it is
(interactive
(list
(let* ((toot (mastodon-tl--property 'toot-json))
- (reblog (cdr (assoc 'reblog toot)))
- (poll (or (cdr (assoc 'poll reblog))
+ (reblog (alist-get 'reblog toot))
+ (poll (or (alist-get 'poll reblog)
(mastodon-tl--field 'poll toot)))
(options (mastodon-tl--field 'options poll))
(options-titles (mapcar (lambda (x)
- (cdr (assoc 'title x)))
+ (alist-get 'title x))
options))
(options-number-seq (number-sequence 1 (length options)))
(options-numbers (mapcar (lambda(x)
@@ -790,7 +789,7 @@ takes a single function. By default it is
(message "No poll here.")
(let* ((toot (mastodon-tl--property 'toot-json))
(poll (mastodon-tl--field 'poll toot))
- (poll-id (cdr (assoc 'id poll)))
+ (poll-id (alist-get 'id poll))
(url (mastodon-http--api (format "polls/%s/votes" poll-id)))
;; need to zero-index our option:
(option-as-arg (number-to-string (1- (string-to-number (car option)))))
@@ -916,9 +915,9 @@ If the toot has been boosted use the id found in the
reblog portion of the toot. Otherwise, use the body of
the toot. This is the same behaviour as the mastodon.social
webapp"
- (let ((id (cdr (assoc 'id json)))
- (reblog (cdr (assoc 'reblog json))))
- (if reblog (cdr (assoc 'id reblog)) id)))
+ (let ((id (alist-get 'id json))
+ (reblog (alist-get 'reblog json)))
+ (if reblog (alist-get 'id reblog) id)))
(defun mastodon-tl--thread ()
@@ -930,10 +929,10 @@ webapp"
(buffer (format "*mastodon-thread-%s*" id))
(toot (mastodon-tl--property 'toot-json))
(context (mastodon-http--get-json url)))
- (when (member (cdr (assoc 'type toot)) '("reblog" "favourite"))
- (setq toot (cdr (assoc 'status toot))))
- (if (> (+ (length (cdr (assoc 'ancestors context)))
- (length (cdr (assoc 'descendants context))))
+ (when (member (alist-get 'type toot) '("reblog" "favourite"))
+ (setq toot (alist-get 'status toot)))
+ (if (> (+ (length (alist-get 'ancestors context))
+ (length (alist-get 'descendants context)))
0)
(with-output-to-temp-buffer buffer
(switch-to-buffer buffer)
@@ -945,9 +944,9 @@ webapp"
(lambda(toot) (message "END of thread."))))
(let ((inhibit-read-only t))
(mastodon-tl--timeline (vconcat
- (cdr (assoc 'ancestors context))
+ (alist-get 'ancestors context)
`(,toot)
- (cdr (assoc 'descendants context))))))
+ (alist-get 'descendants context)))))
(message "No Thread!"))))
(defun mastodon-tl--follow-user (user-handle)
@@ -1025,7 +1024,7 @@ webapp"
(let* ((mutes-url (mastodon-http--api (format "mutes")))
(mutes-json (mastodon-http--get-json mutes-url))
(muted-accts (mapcar (lambda (muted)
- (cdr (assoc 'acct muted)))
+ (alist-get 'acct muted))
mutes-json)))
(completing-read "Handle of user to unmute: "
muted-accts
@@ -1074,7 +1073,7 @@ webapp"
(let* ((blocks-url (mastodon-http--api (format "blocks")))
(blocks-json (mastodon-http--get-json blocks-url))
(blocked-accts (mapcar (lambda (blocked)
- (cdr (assoc 'acct blocked)))
+ (alist-get 'acct blocked))
blocks-json)))
(completing-read "Handle of user to unblock: "
blocked-accts
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 22eb626..9acdb2a 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -155,7 +155,7 @@ Valid values are \"direct\", \"private\" (followers-only), \"unlisted\", and \"p
"Set max_toot_chars returned in JSON-RESPONSE and display in new toot buffer."
(setq mastodon-toot--max-toot-chars
(number-to-string
- (cdr (assoc 'max_toot_chars json-response))))
+ (alist-get 'max_toot_chars json-response)))
(with-current-buffer "*new toot*"
(mastodon-toot--update-status-fields)))
@@ -246,11 +246,11 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(interactive)
(let* ((toot (mastodon-tl--property 'toot-json))
(pinnable-p (and
- (not (cdr (assoc 'reblog toot)))
- (equal (cdr (assoc 'acct
- (cdr (assoc 'account toot))))
+ (not (alist-get 'reblog toot))
+ (equal (alist-get 'acct
+ (alist-get 'account toot))
(mastodon-auth--user-acct))))
- (pinned-p (equal (cdr (assoc 'pinned toot)) t))
+ (pinned-p (equal (alist-get 'pinned toot) t))
(action (if pinned-p "unpin" "pin"))
(msg (if pinned-p "unpinned" "pinned"))
(msg-y-or-n (if pinned-p "Unpin" "Pin")))
@@ -266,8 +266,8 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(interactive)
(let* ((toot (mastodon-tl--property 'toot-json))
(url (if (mastodon-tl--field 'reblog toot)
- (cdr (assoc 'url (cdr (assoc 'reblog toot))))
- (cdr (assoc 'url toot)))))
+ (alist-get 'url (alist-get 'reblog toot))
+ (alist-get 'url toot))))
(kill-new url)
(message "Toot URL copied to the clipboard.")))
@@ -277,9 +277,9 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(let* ((toot (mastodon-tl--property 'toot-json))
(id (mastodon-tl--as-string (mastodon-tl--toot-id toot)))
(url (mastodon-http--api (format "statuses/%s" id))))
- (if (or (cdr (assoc 'reblog toot))
- (not (equal (cdr (assoc 'acct
- (cdr (assoc 'account toot))))
+ (if (or (alist-get 'reblog toot)
+ (not (equal (alist-get 'acct
+ (alist-get 'account toot))
(mastodon-auth--user-acct))))
(message "You can only delete your own toots.")
(if (y-or-n-p (format "Delete this toot? "))
@@ -296,12 +296,12 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(let* ((toot (mastodon-tl--property 'toot-json))
(id (mastodon-tl--as-string (mastodon-tl--toot-id toot)))
(url (mastodon-http--api (format "statuses/%s" id)))
- (toot-cw (cdr (assoc 'spoiler_text toot)))
- (toot-visibility (cdr (assoc 'visibility toot)))
- (reply-id (cdr (assoc 'in_reply_to_id toot))))
- (if (or (cdr (assoc 'reblog toot))
- (not (equal (cdr (assoc 'acct
- (cdr (assoc 'account toot))))
+ (toot-cw (alist-get 'spoiler_text toot))
+ (toot-visibility (alist-get 'visibility toot))
+ (reply-id (alist-get 'in_reply_to_id toot)))
+ (if (or (alist-get 'reblog toot)
+ (not (equal (alist-get 'acct
+ (alist-get 'account toot))
(mastodon-auth--user-acct))))
(message "You can only delete and redraft your own toots.")
(if (y-or-n-p (format "Delete and redraft this toot? "))
@@ -311,8 +311,8 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(lambda ()
(with-current-buffer response
(let* ((json-response (mastodon-http--process-json))
- (content (cdr (assoc 'text json-response))))
- ;; (media (cdr (assoc 'media_attachments json-response))))
+ (content (alist-get 'text json-response)))
+ ;; (media (alist-get 'media_attachments json-response)))
(mastodon-toot--compose-buffer nil nil)
(goto-char (point-max))
(insert content)
@@ -330,7 +330,7 @@ Remove MARKER if REMOVE is non-nil, otherwise add it."
(interactive)
(let* ((toot (mastodon-tl--property 'toot-json))
(id (mastodon-tl--as-string (mastodon-tl--toot-id toot)))
- (bookmarked (cdr (assoc 'bookmarked toot)))
+ (bookmarked (alist-get 'bookmarked toot))
(url (mastodon-http--api (if (equal bookmarked t)
(format "statuses/%s/unbookmark" id)
(format "statuses/%s/bookmark" id))))
@@ -498,10 +498,10 @@ eg. \"feduser@fed.social\" -> \"feduser@fed.social\"."
(let* ((boosted (mastodon-tl--field 'reblog status))
(mentions
(if boosted
- (cdr (assoc 'mentions (cdr (assoc 'reblog status))))
- (cdr (assoc 'mentions status)))))
+ (alist-get 'mentions (alist-get 'reblog status))
+ (alist-get 'mentions status))))
(mapconcat (lambda(x) (mastodon-toot--process-local
- (cdr (assoc 'acct x))))
+ (alist-get 'acct x)))
;; reverse does not work on vectors in 24.5
(reverse (append mentions nil))
"")))
@@ -554,12 +554,12 @@ The prefix can match against both user handles and display names."
(let* ((toot (mastodon-tl--property 'toot-json))
(id (mastodon-tl--as-string (mastodon-tl--field 'id toot)))
(account (mastodon-tl--field 'account toot))
- (user (cdr (assoc 'acct account)))
+ (user (alist-get 'acct account))
(mentions (mastodon-toot--mentions toot))
(boosted (mastodon-tl--field 'reblog toot))
(booster (when boosted
- (cdr (assoc 'acct
- (cdr (assoc 'account toot)))))))
+ (alist-get 'acct
+ (alist-get 'account toot)))))
(mastodon-toot (when user
(if booster
(if (and
@@ -634,8 +634,8 @@ The items' ids are added to `mastodon-toot--media-attachment-ids',
which are used to attach them to a toot after uploading."
(mapcar (lambda (attachment)
(let* ((filename (expand-file-name
- (cdr (assoc :filename attachment))))
- (caption (cdr (assoc :description attachment)))
+ (alist-get :filename attachment)))
+ (caption (alist-get :description attachment))
(url (concat mastodon-instance-url "/api/v2/media")))
(message "Uploading %s..." (file-name-nondirectory filename))
(mastodon-http--post-media-attachment url filename caption)))
@@ -659,14 +659,14 @@ which are used to attach them to a toot after uploading."
(image-transforms-p))
`(:height ,mastodon-toot--attachment-height))))
(mapcan (lambda (attachment)
- (let* ((data (cdr (assoc :contents attachment)))
+ (let* ((data (alist-get :contents attachment))
(image (apply #'create-image data
(if (version< emacs-version "27.1")
(when image-options 'imagemagick)
nil) ; inbuilt scaling in 27.1
t image-options))
- (type (cdr (assoc :content-type attachment)))
- (description (cdr (assoc :description attachment))))
+ (type (alist-get :content-type attachment))
+ (description (alist-get :description attachment)))
(setq counter (1+ counter))
(list (format "\n %d: " counter)
image
@@ -787,8 +787,8 @@ on the status of NSFW, content warning flags, media attachments, etc."
"If REPLY-TO-USER is provided, inject their handle into the message.
If REPLY-TO-ID is provided, set `mastodon-toot--reply-to-id'.
REPLY-JSON is the full JSON of the toot being replied to."
- (let ((reply-visibility (cdr (assoc 'visibility reply-json)))
- (reply-cw (cdr (assoc 'spoiler_text reply-json))))
+ (let ((reply-visibility (alist-get 'visibility reply-json))
+ (reply-cw (alist-get 'spoiler_text reply-json)))
(when reply-to-user
(insert (format "%s " reply-to-user))
(setq mastodon-toot--reply-to-id reply-to-id)