aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-03-21 14:50:55 +0100
committermarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-03-21 14:50:55 +0100
commitfdeeb396c7c2c9a6618661e2ea5d24b999a0e42f (patch)
tree7da88b00c9b2f7806ecd039fb3b7f4d9e8669f7c
parentd654ab86bde598072d6b8e6a4ca398198bfb9882 (diff)
manually(!) apply stephan monnier's patch, save the ts work
thanks stephan!
-rw-r--r--lisp/mastodon-async.el9
-rw-r--r--lisp/mastodon-http.el2
-rw-r--r--lisp/mastodon-media.el7
-rw-r--r--lisp/mastodon-profile.el8
-rw-r--r--lisp/mastodon-search.el4
-rw-r--r--lisp/mastodon-tl.el78
-rw-r--r--lisp/mastodon-toot.el42
-rw-r--r--lisp/mastodon-views.el82
-rw-r--r--lisp/mastodon.el3
-rw-r--r--test/mastodon-auth-tests.el4
10 files changed, 111 insertions, 128 deletions
diff --git a/lisp/mastodon-async.el b/lisp/mastodon-async.el
index 364c5db..9de69db 100644
--- a/lisp/mastodon-async.el
+++ b/lisp/mastodon-async.el
@@ -1,4 +1,4 @@
-;;; mastodon-async.el --- async streaming functions for mastodon.el -*- lexical-binding: t -*-
+;;; mastodon-async.el --- Async streaming functions for mastodon.el -*- lexical-binding: t -*-
;; Copyright (C) 2017 Alex J. Griffith
;; Author: Alex J. Griffith <griffitaj@gmail.com>
@@ -30,6 +30,7 @@
;;; Code:
+(require 'mastodon-tl)
(require 'json)
(require 'url-http)
@@ -227,9 +228,9 @@ ENDPOINT is the endpoint for the stream and timeline."
(mastodon-mode)
(mastodon-tl--set-buffer-spec buffer-name
endpoint
- ,(if (equal name "notifications")
- 'mastodon-notifications--timeline
- 'mastodon-tl--timeline))
+ (if (equal name "notifications")
+ 'mastodon-notifications--timeline
+ 'mastodon-tl--timeline))
(setq-local mastodon-tl--enable-relative-timestamps nil)
(setq-local mastodon-tl--display-media-p t)
(current-buffer))))
diff --git a/lisp/mastodon-http.el b/lisp/mastodon-http.el
index d1f654e..3632a11 100644
--- a/lisp/mastodon-http.el
+++ b/lisp/mastodon-http.el
@@ -317,7 +317,7 @@ PARAMS is an alist of any extra parameters to send with the request."
(when status ;; only when we actually get sth?
(apply callback (mastodon-http--process-json) cbargs)))))
-(defun mastodon-http--post-async (url params headers &optional callback &rest cbargs)
+(defun mastodon-http--post-async (url params _headers &optional callback &rest cbargs)
"POST asynchronously to URL with PARAMS and HEADERS.
Then run function CALLBACK with arguements CBARGS.
Authorization header is included by default unless UNAUTHENTICED-P is non-nil."
diff --git a/lisp/mastodon-media.el b/lisp/mastodon-media.el
index 3fb10b0..63860bd 100644
--- a/lisp/mastodon-media.el
+++ b/lisp/mastodon-media.el
@@ -50,17 +50,14 @@
(defcustom mastodon-media--avatar-height 20
"Height of the user avatar images (if shown)."
- :group 'mastodon-media
:type 'integer)
(defcustom mastodon-media--preview-max-height 250
"Max height of any media attachment preview to be shown in timelines."
- :group 'mastodon-media
:type 'integer)
(defcustom mastodon-media--enable-image-caching nil
"Whether images should be cached."
- :group 'mastodon-media
:type 'boolean)
(defvar mastodon-media--generic-avatar-data
@@ -139,7 +136,7 @@ CAQgEIBAAAIBFiNOFMaY6V1tnFhkDQIQCEAgAIEABAKAQAACAQgEIBCAQAACAQgEIBCAQABIXO4e
c1y+zhoEIBCAQAAQCEAgAIEABAIQCEAgAIEABAIQCEAgAAgEIBCAQAACAQgEIBCAQAACAQgEAIEA
BAIQCEAgAIEABAIsJVH58WqHw8FIgjUIQCAACAQgEIBAAAIBCAQgEIBAAAIBCAQgEAAEAhAIQCBA
fKRJkmVZjAQwh78A6vCRWJE8K+8AAAAASUVORK5CYII=")
- "The PNG data for a generic 200x200 'broken image' view.")
+ "The PNG data for a generic 200x200 \"broken image\" view.")
(defun mastodon-media--process-image-response
(status-plist marker image-options region-length url)
@@ -185,7 +182,7 @@ with the image."
(defun mastodon-media--load-image-from-url (url media-type start region-length)
"Take a URL and MEDIA-TYPE and load the image asynchronously.
-MEDIA-TYPE is a symbol and either 'avatar or 'media-link.
+MEDIA-TYPE is a symbol and either `avatar' or `media-link.'
START is the position where we start loading the image.
REGION-LENGTH is the range from start to propertize."
(let ((image-options (when (or (image-type-available-p 'imagemagick)
diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index a252abc..6c58e52 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -258,7 +258,7 @@ NO-REBLOGS means do not display boosts in statuses."
'display nil)
"/500 characters")
'read-only t
- 'face 'font-lock-comment-face
+ 'face font-lock-comment-face
'note-header t)
"\n")
(make-local-variable 'after-change-functions)
@@ -317,7 +317,7 @@ Ask for confirmation if length > 500 characters."
(defun mastodon-profile--update-preference (pref val &optional source)
"Update account PREF erence to setting VAL.
Both args are strings.
-SOURCE means that the preference is in the 'source' part of the account JSON."
+SOURCE means that the preference is in the `source' part of the account JSON."
(let* ((url (mastodon-http--api "accounts/update_credentials"))
(pref-formatted (if source (concat "source[" pref "]") pref))
(response (mastodon-http--patch url `((,pref-formatted . ,val)))))
@@ -744,7 +744,7 @@ IMG-TYPE is the JSON key from the account data."
(defun mastodon-profile--account-field (account field)
"Return FIELD from the ACCOUNT.
-FIELD is used to identify regions under 'account"
+FIELD is used to identify regions under `account'."
(cdr (assoc field account)))
(defun mastodon-profile--add-author-bylines (tootv)
@@ -806,7 +806,7 @@ These include the author, author of reblogged entries and any user mentioned."
(reblog (or (alist-get 'reblog (alist-get 'status status))
(alist-get 'reblog status))))
(seq-filter
- 'stringp
+ #'stringp
(seq-uniq
(seq-concatenate
'list
diff --git a/lisp/mastodon-search.el b/lisp/mastodon-search.el
index 80a26ff..b5900c7 100644
--- a/lisp/mastodon-search.el
+++ b/lisp/mastodon-search.el
@@ -121,7 +121,7 @@ QUERY is the string to search."
tags))
;; (status-list (mapcar #'mastodon-search--get-status-info
;; statuses))
- (status-ids-list (mapcar 'mastodon-search--get-id-from-status
+ (status-ids-list (mapcar #'mastodon-search--get-id-from-status
statuses))
(toots-list-json (mapcar #'mastodon-search--fetch-full-status-from-id
status-ids-list)))
@@ -153,7 +153,7 @@ QUERY is the string to search."
" STATUSES\n"
" ------------\n")
'success))
- (mapc 'mastodon-tl--toot toots-list-json)
+ (mapc #'mastodon-tl--toot toots-list-json)
(goto-char (point-min))))))
(defun mastodon-search--insert-users-propertized (json &optional note)
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index a9e2353..49ddd94 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -64,6 +64,7 @@
(autoload 'mastodon-profile--account-from-id "mastodon-profile")
(autoload 'mastodon-profile--extract-users-handles "mastodon-profile")
(autoload 'mastodon-profile--get-preferences-pref "mastodon-profile")
+(autoload 'mastodon-profile--get-toot-author "mastodon-profile")
(autoload 'mastodon-profile--lookup-account-in-status "mastodon-profile")
(autoload 'mastodon-profile--make-author-buffer "mastodon-profile")
(autoload 'mastodon-profile--my-profile "mastodon-profile")
@@ -107,13 +108,11 @@
"Whether to show relative (to the current time) timestamps.
This will require periodic updates of a timeline buffer to
keep the timestamps current as time progresses."
- :group 'mastodon-tl
:type '(boolean :tag "Enable relative timestamps and background updater task"))
(defcustom mastodon-tl--enable-proportional-fonts nil
"Nonnil to enable using proportional fonts when rendering HTML.
By default fixed width fonts are used."
- :group 'mastodon-tl
:type '(boolean :tag "Enable using proportional rather than fixed \
width fonts when rendering HTML text"))
@@ -121,18 +120,15 @@ width fonts when rendering HTML text"))
"Display an image's caption rather than URL.
Only has an effect when `mastodon-tl--display-media-p' is set to
nil."
- :group 'mastodon-tl
:type 'boolean)
(defcustom mastodon-tl--show-avatars nil
"Whether to enable display of user avatars in timelines."
- :group 'mastodon-tl
:type '(boolean :tag "Whether to display user avatars in timelines"))
(defcustom mastodon-tl--show-stats t
"Whether to show toot stats (faves, boosts, replies counts)."
- :type 'bool
- :group 'mastodon-tl)
+ :type 'bool)
(defcustom mastodon-tl--symbols
'((reply . ("💬" . "R"))
@@ -148,8 +144,7 @@ nil."
"A set of symbols (and fallback strings) to be used in timeline.
If a symbol does not look right (tofu), it means your
font settings do not support it."
- :type '(alist :key-type symbol :value-type string)
- :group 'mastodon-tl)
+ :type '(alist :key-type symbol :value-type string))
(defcustom mastodon-tl-position-after-update nil
"Defines where `point' should be located after a timeline update.
@@ -170,7 +165,6 @@ Must be an integer between 20 and 40 inclusive."
"Whether to hide replies from the timelines.
Note that you can hide replies on a one-off basis by loading a
timeline with a simple prefix argument, `C-u'."
- :group 'mastodon-tl
:type '(boolean :tag "Whether to hide replies from the timelines."))
@@ -203,44 +197,46 @@ If nil `(point-min)' is used instead.")
(define-key map [return] 'mastodon-tl--do-link-action-at-point)
(define-key map [mouse-2] 'mastodon-tl--do-link-action)
(define-key map [follow-link] 'mouse-face)
- (keymap-canonicalize map))
+ map)
"The keymap for link-like things in buffer (except for shr.el generate links).
This will make the region of text act like like a link with mouse
highlighting, mouse click action tabbing to next/previous link
etc.")
(defvar mastodon-tl--shr-map-replacement
- (let ((map (copy-keymap shr-map)))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map shr-map)
;; Replace the move to next/previous link bindings with our
;; version that knows about more types of links.
- (define-key map [remap shr-next-link] 'mastodon-tl--next-tab-item)
- (define-key map [remap shr-previous-link] 'mastodon-tl--previous-tab-item)
+ (define-key map [remap shr-next-link] #'mastodon-tl--next-tab-item)
+ (define-key map [remap shr-previous-link] #'mastodon-tl--previous-tab-item)
;; keep new my-profile binding; shr 'O' doesn't work here anyway
- (define-key map (kbd "O") 'mastodon-profile--my-profile)
- (define-key map [remap shr-browse-url] 'mastodon-url-lookup)
- (keymap-canonicalize map))
+ (define-key map (kbd "O") #'mastodon-profile--my-profile)
+ (define-key map [remap shr-browse-url] #'mastodon-url-lookup)
+ map)
"The keymap to be set for shr.el generated links that are not images.
We need to override the keymap so tabbing will navigate to all
types of mastodon links and not just shr.el-generated ones.")
(defvar mastodon-tl--shr-image-map-replacement
- (let ((map (copy-keymap (if (boundp 'shr-image-map)
- shr-image-map
- shr-map))))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map (if (boundp 'shr-image-map)
+ shr-image-map
+ shr-map))
;; Replace the move to next/previous link bindings with our
;; version that knows about more types of links.
- (define-key map [remap shr-next-link] 'mastodon-tl--next-tab-item)
- (define-key map [remap shr-previous-link] 'mastodon-tl--previous-tab-item)
+ (define-key map [remap shr-next-link] #'mastodon-tl--next-tab-item)
+ (define-key map [remap shr-previous-link] #'mastodon-tl--previous-tab-item)
;; browse-url loads the preview only, we want browse-image
;; on RET to browse full sized image URL
- (define-key map [remap shr-browse-url] 'shr-browse-image)
+ (define-key map [remap shr-browse-url] #'shr-browse-image)
;; remove shr's u binding, as it the maybe-probe-and-copy-url
;; is already bound to w also
- (define-key map (kbd "u") 'mastodon-tl--update)
+ (define-key map (kbd "u") #'mastodon-tl--update)
;; keep new my-profile binding; shr 'O' doesn't work here anyway
- (define-key map (kbd "O") 'mastodon-profile--my-profile)
- (define-key map (kbd "<C-return>") 'mastodon-tl--mpv-play-video-at-point)
- (keymap-canonicalize map))
+ (define-key map (kbd "O") #'mastodon-profile--my-profile)
+ (define-key map (kbd "<C-return>") #'mastodon-tl--mpv-play-video-at-point)
+ map)
"The keymap to be set for shr.el generated image links.
We need to override the keymap so tabbing will navigate to all
types of mastodon links and not just shr.el-generated ones.")
@@ -248,9 +244,9 @@ types of mastodon links and not just shr.el-generated ones.")
(defvar mastodon-tl--byline-link-keymap
(when (require 'mpv nil :no-error)
(let ((map (make-sparse-keymap)))
- (define-key map (kbd "<C-return>") 'mastodon-tl--mpv-play-video-from-byline)
- (define-key map (kbd "<return>") 'mastodon-profile--get-toot-author)
- (keymap-canonicalize map)))
+ (define-key map (kbd "<C-return>") #'mastodon-tl--mpv-play-video-from-byline)
+ (define-key map (kbd "RET") #'mastodon-profile--get-toot-author)
+ map))
"The keymap to be set for the author byline.
It is active where point is placed by `mastodon-tl--goto-next-toot.'")
@@ -397,7 +393,7 @@ Optionally load TAG timeline directly."
;;; BYLINES, etc.
(defun mastodon-tl--message-help-echo ()
- "Call message on 'help-echo property at point.
+ "Call message on `help-echo' property at point.
Do so if type of status at poins is not follow_request/follow."
(let ((type (alist-get
'type
@@ -626,7 +622,7 @@ this just means displaying toot client."
(propertize
(format-time-string mastodon-toot-timestamp-format
edited-parsed)
- 'face 'font-lock-comment-face
+ 'face font-lock-comment-face
'timestamp edited-parsed
'display (if mastodon-tl--enable-relative-timestamps
(mastodon-tl--relative-time-description edited-parsed)
@@ -870,7 +866,7 @@ LINK-TYPE is the type of link to produce."
(defun mastodon-tl--do-link-action-at-point (position)
"Do the action of the link at POSITION.
-Used for hitting <return> on a given link."
+Used for hitting RET on a given link."
(interactive "d")
(let ((link-type (get-text-property position 'mastodon-tab-stop)))
(cond ((eq link-type 'content-warning)
@@ -1149,18 +1145,18 @@ To disable showing the stats, customize
'favourited-p favourited
'favourites-field t
'favourites-count favourites-count
- 'face 'font-lock-comment-face)
- (propertize " | " 'face 'font-lock-comment-face)
+ 'face font-lock-comment-face)
+ (propertize " | " 'face font-lock-comment-face)
(propertize boosts
'boosted-p boosted
'boosts-field t
'boosts-count boosts-count
- 'face 'font-lock-comment-face)
- (propertize " | " 'face 'font-lock-comment-face)
+ 'face font-lock-comment-face)
+ (propertize " | " 'face font-lock-comment-face)
(propertize replies
'replies-field t
'replies-count replies-count
- 'face 'font-lock-comment-face)))
+ 'face font-lock-comment-face)))
(status (concat
(propertize " " 'display `(space :align-to (- right ,(+ (length status) 7))))
status)))
@@ -1249,7 +1245,7 @@ To disable showing the stats, customize
(options-titles (mastodon-tl--map-alist 'title options))
(options-number-seq (number-sequence 1 (length options)))
(options-numbers (mapcar #'number-to-string options-number-seq))
- (options-alist (cl-mapcar 'cons options-numbers options-titles))
+ (options-alist (cl-mapcar #'cons options-numbers options-titles))
;; we display both option number and the option title
;; but also store both as cons cell as cdr, as we need it below
(candidates (mapcar (lambda (cell)
@@ -1335,7 +1331,7 @@ in which case play first video or gif from current toot."
(not (mastodon-tl--field 'rebloged toot))))
(defun mastodon-tl--toot (toot &optional detailed-p)
- "Formats TOOT and inserts it into the buffer.
+ "Format TOOT and insert it into the buffer.
DETAILED-P means display more detailed info. For now
this just means displaying toot client."
(mastodon-tl--insert-status
@@ -1353,7 +1349,7 @@ this just means displaying toot client."
(defun mastodon-tl--timeline (toots)
"Display each toot in TOOTS.
This function removes replies if user required."
- (mapc 'mastodon-tl--toot
+ (mapc #'mastodon-tl--toot
;; hack to *not* filter replies on profiles:
(if (eq (mastodon-tl--get-buffer-type) 'profile-statuses)
toots
@@ -2051,7 +2047,7 @@ the current view."
(let* ((args `(("max_id" . ,(mastodon-tl--as-string id))))
(args (if params (push (car args) params) args))
(url (mastodon-http--api endpoint)))
- (apply 'mastodon-http--get-json-async url args callback cbargs)))
+ (apply #'mastodon-http--get-json-async url args callback cbargs)))
;; TODO
;; Look into the JSON returned here by Local
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index a487932..c6f87d3 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -33,11 +33,11 @@
;;; Code:
(eval-when-compile (require 'subr-x))
-(when (require 'emojify nil :noerror)
- (declare-function emojify-insert-emoji "emojify")
- (declare-function emojify-set-emoji-data "emojify")
- (defvar emojify-emojis-dir)
- (defvar emojify-user-emojis))
+(require 'emojify nil :noerror)
+(declare-function emojify-insert-emoji "emojify")
+(declare-function emojify-set-emoji-data "emojify")
+(defvar emojify-emojis-dir)
+(defvar emojify-user-emojis)
(require 'cl-lib)
(require 'persist)
@@ -99,18 +99,15 @@
(defcustom mastodon-toot--default-media-directory "~/"
"The default directory when prompting for a media file to upload."
- :group 'mastodon-toot
:type 'string)
(defcustom mastodon-toot--attachment-height 80
"Height of the attached images preview in the toot draft buffer."
- :group 'mastodon-toot
:type 'integer)
(defcustom mastodon-toot--enable-completion t
"Whether to enable completion of mentions and hashtags.
Used for completion in toot compose buffer."
- :group 'mastodon-toot
:type 'boolean)
(defcustom mastodon-toot--use-company-for-completion nil
@@ -120,12 +117,10 @@ buffer, and mastodon completion backends are added to
`company-capf'.
You need to install company yourself to use this."
- :group 'mastodon-toot
:type 'boolean)
(defcustom mastodon-toot--completion-style-for-mentions "all"
"The company completion style to use for mentions."
- :group 'mastodon-toot
:type '(choice
(const :tag "off" nil)
(const :tag "following only" "following")
@@ -133,27 +128,23 @@ You need to install company yourself to use this."
(defcustom mastodon-toot-display-orig-in-reply-buffer nil
"Display a copy of the toot replied to in the compose buffer."
- :group 'mastodon-toot
:type 'boolean)
(defcustom mastodon-toot-orig-in-reply-length 160
"Length to crop toot replied to in the compose buffer to."
- :group 'mastodon-toot
:type 'integer)
(defcustom mastodon-toot--default-reply-visibility "public"
"Default visibility settings when replying.
If the original toot visibility is different we use the more restricted one."
- :group 'mastodon-toot
:type '(choice
- (const :tag "public" "public")
- (const :tag "unlisted" "unlisted")
- (const :tag "followers only" "private")
- (const :tag "direct" "direct")))
+ (const :tag "public" "public")
+ (const :tag "unlisted" "unlisted")
+ (const :tag "followers only" "private")
+ (const :tag "direct" "direct")))
(defcustom mastodon-toot--enable-custom-instance-emoji nil
"Whether to enable your instance's custom emoji by default."
- :group 'mastodon-toot
:type 'boolean)
(defvar-local mastodon-toot--content-warning nil
@@ -288,7 +279,7 @@ NO-TOOT means we are not calling from a toot buffer."
(mastodon-toot--update-status-fields)))))
(defun mastodon-toot--action-success (marker byline-region remove)
- "Insert/remove the text MARKER with 'success face in byline.
+ "Insert/remove the text MARKER with `success' face in byline.
BYLINE-REGION is a cons of start and end pos of the byline to be
modified.
Remove MARKER if REMOVE is non-nil, otherwise add it."
@@ -330,7 +321,7 @@ boosting, or bookmarking toots."
(defun mastodon-toot--toggle-boost-or-favourite (type)
"Toggle boost or favourite of toot at `point'.
-TYPE is a symbol, either 'favourite or 'boost."
+TYPE is a symbol, either `favourite' or `boost.'"
(interactive)
(let* ((boost-p (equal type 'boost))
(has-id (mastodon-tl--property 'base-toot-id))
@@ -861,7 +852,7 @@ instance to edit a toot."
(insert (propertize (if (= count 1)
(format "%s [original]:\n" count)
(format "%s:\n" count))
- 'face 'font-lock-comment-face)
+ 'face font-lock-comment-face)
(mastodon-toot--insert-toot-iter x)
"\n")
(cl-incf count))
@@ -1342,7 +1333,7 @@ LONGEST is the length of the longest binding."
(mastodon-toot--format-kbinds kbinds))))
(concat
" Compose a new toot here. The following keybindings are available:"
- (mapconcat 'identity
+ (mapconcat #'identity
(mastodon-toot--formatted-kbinds-pairs
(mastodon-toot--format-kbinds kbinds)
longest-kbind)
@@ -1383,7 +1374,7 @@ REPLY-TEXT is the text of the toot being replied to."
(propertize "None "
'toot-attachments t)
"\n")
- 'face 'font-lock-comment-face
+ 'face font-lock-comment-face
'read-only "Edit your message below."
'toot-post-header t)
(if reply-text
@@ -1395,7 +1386,7 @@ REPLY-TEXT is the text of the toot being replied to."
(propertize
(concat divider "\n")
'rear-nonsticky t
- 'face 'font-lock-comment-face
+ 'face font-lock-comment-face
'read-only "Edit your message below."
'toot-post-header t))))
@@ -1629,7 +1620,7 @@ EDIT means we are editing an existing toot, not composing a new one."
;; company
(when (and mastodon-toot--use-company-for-completion
(require 'company nil :no-error))
- (declare-function 'company-mode-on "company")
+ (declare-function company-mode-on "company")
(set (make-local-variable 'company-backends)
(add-to-list 'company-backends 'company-capf))
(company-mode-on)))
@@ -1657,7 +1648,6 @@ EDIT means we are editing an existing toot, not composing a new one."
(define-minor-mode mastodon-toot-mode
"Minor mode to capture Mastodon toots."
- :group 'mastodon-toot
:keymap mastodon-toot-mode-map
:global nil)
diff --git a/lisp/mastodon-views.el b/lisp/mastodon-views.el
index 762efa9..d113d44 100644
--- a/lisp/mastodon-views.el
+++ b/lisp/mastodon-views.el
@@ -69,7 +69,7 @@
;;; KEYMAPS
-;; copy `mastodon-mode-map' if possible, as then all timeline functions are
+;; we copy `mastodon-mode-map', as then all timeline functions are
;; available. this is helpful because if a minor view is the only buffer left
;; open, calling `mastodon' will switch to it, but then we will be unable to
;; switch to timlines without closing the minor view.
@@ -81,65 +81,65 @@
;; `mastodon-mode', it gets overridden in some but not all cases.
(defvar mastodon-views-map
- (let ((map
- (copy-keymap mastodon-mode-map)))
- (define-key map (kbd "n") 'mastodon-tl--goto-next-item)
- (define-key map (kbd "p") 'mastodon-tl--goto-prev-item)
- (keymap-canonicalize map))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-mode-map)
+ (define-key map (kbd "n") #'mastodon-tl--goto-next-item)
+ (define-key map (kbd "p") #'mastodon-tl--goto-prev-item)
+ map)
"Base keymap for minor mastodon views.")
(defvar mastodon-views--view-filters-keymap
- (let ((map
- (copy-keymap mastodon-views-map)))
- (define-key map (kbd "d") 'mastodon-views--delete-filter)
- (define-key map (kbd "c") 'mastodon-views--create-filter)
- (define-key map (kbd "TAB") 'mastodon-tl--goto-next-item)
- (define-key map (kbd "g") 'mastodon-views--view-filters)
- (keymap-canonicalize map))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-views-map)
+ (define-key map (kbd "d") #'mastodon-views--delete-filter)
+ (define-key map (kbd "c") #'mastodon-views--create-filter)
+ (define-key map (kbd "TAB") #'mastodon-tl--goto-next-item)
+ (define-key map (kbd "g") #'mastodon-views--view-filters)
+ map)
"Keymap for viewing filters.")
(defvar mastodon-views--follow-suggestions-map
- (let ((map
- (copy-keymap mastodon-views-map)))
- (define-key map (kbd "g") 'mastodon-views--view-follow-suggestions)
- (keymap-canonicalize map))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-views-map)
+ (define-key map (kbd "g") #'mastodon-views--view-follow-suggestions)
+ map)
"Keymap for viewing follow suggestions.")
(defvar mastodon-views--view-lists-keymap
- (let ((map
- (copy-keymap mastodon-views-map)))
- (define-key map (kbd "D") 'mastodon-views--delete-list)
- (define-key map (kbd "C") 'mastodon-views--create-list)
- (define-key map (kbd "A") 'mastodon-views--add-account-to-list)
- (define-key map (kbd "R") 'mastodon-views--remove-account-from-list)
- (define-key map (kbd "E") 'mastodon-views--edit-list)
- (define-key map (kbd "g") 'mastodon-views--view-lists)
- (keymap-canonicalize map))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-views-map)
+ (define-key map (kbd "D") #'mastodon-views--delete-list)
+ (define-key map (kbd "C") #'mastodon-views--create-list)
+ (define-key map (kbd "A") #'mastodon-views--add-account-to-list)
+ (define-key map (kbd "R") #'mastodon-views--remove-account-from-list)
+ (define-key map (kbd "E") #'mastodon-views--edit-list)
+ (define-key map (kbd "g") #'mastodon-views--view-lists)
+ map)
"Keymap for viewing lists.")
(defvar mastodon-views--list-name-keymap
(let ((map (make-sparse-keymap)))
- (define-key map (kbd "<return>") 'mastodon-views--view-timeline-list-at-point)
- (define-key map (kbd "d") 'mastodon-views--delete-list-at-point)
- (define-key map (kbd "a") 'mastodon-views--add-account-to-list-at-point)
- (define-key map (kbd "r") 'mastodon-views--remove-account-from-list-at-point)
- (define-key map (kbd "e") 'mastodon-views--edit-list-at-point)
- (keymap-canonicalize map))
+ (define-key map (kbd "RET") #'mastodon-views--view-timeline-list-at-point)
+ (define-key map (kbd "d") #'mastodon-views--delete-list-at-point)
+ (define-key map (kbd "a") #'mastodon-views--add-account-to-list-at-point)
+ (define-key map (kbd "r") #'mastodon-views--remove-account-from-list-at-point)
+ (define-key map (kbd "e") #'mastodon-views--edit-list-at-point)
+ map)
"Keymap for when point is on list name.")
(defvar mastodon-views--scheduled-map
- (let ((map ;(make-sparse-keymap)))
- (copy-keymap mastodon-views-map)))
- (define-key map (kbd "r") 'mastodon-views--reschedule-toot)
- (define-key map (kbd "c") 'mastodon-views--cancel-scheduled-toot)
- (define-key map (kbd "e") 'mastodon-views--edit-scheduled-as-new)
- (define-key map (kbd "<return>") 'mastodon-views--edit-scheduled-as-new)
- (keymap-canonicalize map))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-views-map)
+ (define-key map (kbd "r") #'mastodon-views--reschedule-toot)
+ (define-key map (kbd "c") #'mastodon-views--cancel-scheduled-toot)
+ (define-key map (kbd "e") #'mastodon-views--edit-scheduled-as-new)
+ (define-key map (kbd "RET") #'mastodon-views--edit-scheduled-as-new)
+ map)
"Keymap for when point is on a scheduled toot.")
(defvar mastodon-views--view-follow-requests-keymap
- (let ((map ;(make-sparse-keymap)))
- (copy-keymap mastodon-views-map)))
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map mastodon-views-map)
;; make reject binding match the binding in notifs view
;; 'r' is then reserved for replying, even tho it is not avail
;; in foll-reqs view
diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 8875419..5a46735 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -116,7 +116,6 @@ be \"example_user\".
After setting these variables you should restart Emacs for these
changes to take effect."
- :group 'mastodon
:type 'string)
(defcustom mastodon-active-user nil
@@ -131,7 +130,6 @@ should be \"https://social.instance.org\".
After setting these variables you should restart Emacs for these
changes to take effect."
- :group 'mastodon
:type 'string)
(defcustom mastodon-toot-timestamp-format "%F %T"
@@ -139,7 +137,6 @@ changes to take effect."
For valid formatting options see `format-time-string`.
The default value \"%F %T\" prints ISO8601-style YYYY-mm-dd HH:MM:SS.
Use. e.g. \"%c\" for your locale's date and time format."
- :group 'mastodon
:type 'string)
(defvar mastodon-mode-map
diff --git a/test/mastodon-auth-tests.el b/test/mastodon-auth-tests.el
index 2d9d6df..f2fe009 100644
--- a/test/mastodon-auth-tests.el
+++ b/test/mastodon-auth-tests.el
@@ -1,6 +1,8 @@
;;; mastodon-auth-test.el --- Tests for mastodon-auth.el -*- lexical-binding: nil -*-
(require 'el-mock)
+(require 'mastodon)
+(require 'mastodon-auth)
(ert-deftest mastodon-auth--handle-token-response--good ()
"Should extract the access token from a good response."
@@ -29,7 +31,7 @@
`(error ,(format "Mastodon-auth--access-token: invalid_grant: %s" error-message))
(condition-case error
(mastodon-auth--handle-token-response
- `(:error "invalid_grant" :error_description ,error-message))
+ `(:error "Invalid_grant" :error_description ,error-message))
(t error))))))
(ert-deftest mastodon-auth--get-token ()