aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mastodon-search.el9
-rw-r--r--lisp/mastodon-toot.el28
2 files changed, 20 insertions, 17 deletions
diff --git a/lisp/mastodon-search.el b/lisp/mastodon-search.el
index 687b50c..03301ce 100644
--- a/lisp/mastodon-search.el
+++ b/lisp/mastodon-search.el
@@ -46,10 +46,11 @@
;; functions for company completion of mentions in mastodon-toot
-(defun mastodon-search--get-user-info-no-url (account)
+(defun mastodon-search--get-user-info (account)
"Get user handle, display name and account URL from ACCOUNT."
(list (cdr (assoc 'display_name account))
- (concat "@" (cdr (assoc 'acct account)))))
+ (concat "@" (cdr (assoc 'acct account)))
+ (cdr (assoc 'url account))))
(defun mastodon-search--search-accounts-query (query)
"Prompt for a search QUERY and return accounts synchronously.
@@ -57,10 +58,10 @@ 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))
;; (buffer (format "*mastodon-search-%s*" query))
- (response (if (equal mastodon-toot--enable-completion-for-mentions "followers")
+ (response (if (equal mastodon-toot--enable-completion-for-mentions "following")
(mastodon-http--get-search-json url query "following=true")
(mastodon-http--get-search-json url query))))
- (mapcar #'mastodon-search--get-user-info-no-url
+ (mapcar #'mastodon-search--get-user-info
response)))
;; functions for mastodon search
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index dd13251..b0b7e13 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -89,12 +89,12 @@ Must be one of \"public\", \"unlisted\", \"private\" (for followers-only), or \"
:type 'integer)
(when (require 'company nil :noerror)
- (defcustom mastodon-toot--enable-completion-for-mentions "followers"
+ (defcustom mastodon-toot--enable-completion-for-mentions "following"
"Whether to enable company completion for mentions in toot compose buffer."
:group 'mastodon-toot
:type '(choice
(const :tag "off" nil)
- (const :tag "followers only" "followers")
+ (const :tag "following only" "following")
(const :tag "all users" "all"))))
(defvar mastodon-toot--content-warning nil
@@ -436,18 +436,18 @@ eg. \"feduser@fed.social\" -> \"feduser@fed.social\"."
(reverse (append mentions nil))
"")))
-;; (defun mastodon-toot--mentions-company-meta (candidate)
-;; (format "meta %s of candidate %s"
-;; (get-text-property 0 'meta candidate)
-;; (substring-no-properties candidate)))
+(defun mastodon-toot--mentions-company-meta (candidate)
+ "Format company completion CANDIDATE's meta field."
+ (format " %s"
+ (get-text-property 0 'meta candidate)))
(defun mastodon-toot--mentions-company-annotation (candidate)
- "Construct a company completion CANDIDATE's annotation for display."
- (format " %s" (get-text-property 0 'meta candidate)))
+ "Format company completion CANDIDATE's annotation."
+ (format " %s" (get-text-property 0 'annot candidate)))
(defun mastodon-toot--mentions-company-candidates (prefix)
- "Given a company PREFIX, build a list of candidates.
-The prefix string can match against both user handles and display names."
+ "Given a company PREFIX query, build a list of candidates.
+The prefix can match against both user handles and display names."
(let (res)
(dolist (item (mastodon-search--search-accounts-query prefix))
(when (or (string-prefix-p prefix (cadr item))
@@ -458,8 +458,9 @@ The prefix string can match against both user handles and display names."
(defun mastodon-toot--mentions-company-make-candidate (candidate)
"Construct a company completion CANDIDATE for display."
(let ((display-name (car candidate))
- (handle (cadr candidate)))
- (propertize handle 'meta display-name)))
+ (handle (cadr candidate))
+ (url (caddr candidate)))
+ (propertize handle 'annot display-name 'meta url)))
(defun mastodon-toot--mentions-completion (command &optional arg &rest ignored)
"A company completion backend for toot mentions."
@@ -474,7 +475,8 @@ The prefix string can match against both user handles and display names."
;; @ + thing before point
(concat "@" (company-grab-symbol))))
(candidates (mastodon-toot--mentions-company-candidates arg))
- (annotation (mastodon-toot--mentions-company-annotation arg))))
+ (annotation (mastodon-toot--mentions-company-annotation arg))
+ (meta (mastodon-toot--mentions-company-meta arg))))
(defun mastodon-toot--reply ()
"Reply to toot at `point'."