aboutsummaryrefslogtreecommitdiff
path: root/sx-interaction.el
diff options
context:
space:
mode:
Diffstat (limited to 'sx-interaction.el')
-rw-r--r--sx-interaction.el21
1 files changed, 15 insertions, 6 deletions
diff --git a/sx-interaction.el b/sx-interaction.el
index 404fb56..e4234b0 100644
--- a/sx-interaction.el
+++ b/sx-interaction.el
@@ -51,16 +51,25 @@ Only fields contained in TO are copied."
(setcar to (car from))
(setcdr to (cdr from)))
-(defun sx-visit (data)
+(defun sx-visit (data &optional copy-as-kill)
"Visit DATA in a web browser.
DATA can be a question, answer, or comment. Interactively, it is
derived from point position.
+
+If copy-as-kill is non-nil, do not call `browse-url'.
+Instead, copy the link as a new kill with `kill-new'.
+Interactively, this is specified with a prefix argument.
+
If DATA is a question, also mark it as read."
- (interactive (list (sx--data-here)))
+ (interactive (list (sx--data-here) current-prefix-arg))
(sx-assoc-let data
- (when (stringp .link)
- (browse-url .link))
- (when .title
+ (let ((link
+ (when (stringp .link)
+ (funcall (if copy-as-kill #'kill-new #'browse-url)
+ .link))))
+ (when (and (called-interactively-p 'any) copy-as-kill)
+ (message "Copied: %S" link)))
+ (when (and .title (not copy-as-kill))
(sx-question--mark-read data)
(sx--maybe-update-display))))
@@ -123,7 +132,7 @@ TEXT is a string. Interactively, it is read from the minibufer."
(setq text (read-string
"Comment text: "
(when .comment_id
- (sx--user-@name .owner))))
+ (concat (sx--user-@name .owner) " "))))
(while (< (string-width text) 15)
(setq text (read-string "Comment text (at least 15 characters): " text))))
;; If non-interactive, `text' could be anything.