From 7426b4f7d05884c2f4677d825a4e6a3509e1eb5a Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sat, 4 Sep 2010 00:12:44 +0000 Subject: [PATCH] gnus-html: Comment fix.; gnus-art.el: Provide an `u' command on urls and the like that copies the string over to the kill ring; Also have the `u' command work for HTML links. --- lisp/gnus/ChangeLog | 6 ++++++ lisp/gnus/gnus-art.el | 33 ++++++++++++++++++++++++++++++++- lisp/gnus/gnus-html.el | 2 +- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index c23a59867e..0377808ed7 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,9 @@ +2010-09-03 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-copy-string): New command and key binding. + + * gnus-html.el: Doc fix. + 2010-09-03 Katsumi Yamaoka * gnus-html.el (gnus-html-put-image): Use gnus-graphic-display-p, diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index a4675a75a8..56e78cc554 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -4823,6 +4823,22 @@ General format specifiers can also be used. See Info node (vector (caddr c) (car c) :active t)) gnus-mime-button-commands))) +(defvar gnus-url-button-commands + '((gnus-article-copy-string "u" "Copy URL to kill ring"))) + +(defvar gnus-url-button-map + (let ((map (make-sparse-keymap))) + (dolist (c gnus-url-button-commands) + (define-key map (cadr c) (car c))) + map)) + +(easy-menu-define + gnus-url-button-menu gnus-url-button-map "URL button menu." + `("Url Button" + ,@(mapcar (lambda (c) + (vector (caddr c) (car c) :active t)) + gnus-url-button-commands))) + (defmacro gnus-bind-safe-url-regexp (&rest body) "Bind `mm-w3m-safe-url-regexp' according to `gnus-safe-html-newsgroups'." `(let ((mm-w3m-safe-url-regexp @@ -7813,7 +7829,11 @@ specified by `gnus-button-alist'." (unless (and (eq (car entry) 'gnus-button-url-regexp) (gnus-article-extend-url-button from start end)) (gnus-article-add-button start end - 'gnus-button-push from))))))))) + 'gnus-button-push from) + (gnus-put-text-property + start end + 'gnus-data (buffer-substring-no-properties + start end)))))))))) (defun gnus-article-extend-url-button (beg start end) "Extend url button if url is folded into two or more lines. @@ -7918,8 +7938,19 @@ url is put as the `gnus-button-url' overlay property on the button." (and data (list 'gnus-data data)))) (widget-convert-button 'link from to :action 'gnus-widget-press-button :help-echo (or text "Follow the link") + :keymap gnus-url-button-map :button-keymap gnus-widget-button-keymap)) +(defun gnus-article-copy-string () + "Copy the string in the button to the kill ring." + (interactive) + (gnus-article-check-buffer) + (let ((data (get-text-property (point) 'gnus-data))) + (when data + (with-temp-buffer + (insert data) + (copy-region-as-kill (point-min) (point-max)))))) + ;;; Internal functions: (defun gnus-article-set-globals () diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el index 8717a4630d..6687415ec1 100644 --- a/lisp/gnus/gnus-html.el +++ b/lisp/gnus/gnus-html.el @@ -1,4 +1,4 @@ -;;; gnus-html.el --- Quoted-Printable functions +;;; gnus-html.el --- Render HTML in a buffer. ;; Copyright (C) 2010 Free Software Foundation, Inc. -- 2.20.1