diff options
author | Sean Allred <code@seanallred.com> | 2014-11-25 23:01:33 -0500 |
---|---|---|
committer | Sean Allred <code@seanallred.com> | 2014-11-25 23:01:33 -0500 |
commit | 85835a2031d046e529f39b108b960c993d9bcaab (patch) | |
tree | 2c1a79e84abba0a1187a39ba2e240d49dde73b4e | |
parent | 07a1456fe7a91d1589f689d40ac4391f35e695b9 (diff) |
Add ability to copy link instead of visiting it
-rw-r--r-- | sx-interaction.el | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sx-interaction.el b/sx-interaction.el index 404fb56..1e6164f 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)))) |