X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/59db4308b546cbe32d3bfe6e23dbc1899d511975..3ed423bc352b423960c643f297ec0f0fa3b7d2e1:/lisp/gnus/gnus-art.el diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 0ac9fb5b4d..366d14aca1 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -1,6 +1,6 @@ ;;; gnus-art.el --- article mode commands for Gnus -;; Copyright (C) 1996-2015 Free Software Foundation, Inc. +;; Copyright (C) 1996-2016 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -195,16 +195,16 @@ this list." "Headers that are only to be displayed if they have interesting data. Possible values in this list are: - 'empty Headers with no content. - 'newsgroups Newsgroup identical to Gnus group. - 'to-address To identical to To-address. - 'to-list To identical to To-list. - 'cc-list CC identical to To-list. - 'followup-to Followup-to identical to Newsgroups. - 'reply-to Reply-to identical to From. - 'date Date less than four days old. - 'long-to To and/or Cc longer than 1024 characters. - 'many-to Multiple To and/or Cc." + `empty' Headers with no content. + `newsgroups' Newsgroup identical to Gnus group. + `to-address' To identical to To-address. + `to-list' To identical to To-list. + `cc-list' CC identical to To-list. + `followup-to' Followup-to identical to Newsgroups. + `reply-to' Reply-to identical to From. + `date' Date less than four days old. + `long-to' To and/or Cc longer than 1024 characters. + `many-to' Multiple To and/or Cc." :type '(set (const :tag "Headers with no content." empty) (const :tag "Newsgroups identical to Gnus group." newsgroups) (const :tag "To identical to To-address." to-address) @@ -260,7 +260,7 @@ This can also be a list of the above values." ;; needed there. And XEmacs doesn't handle `intangible' anyway. '(invisible t) "Property list to use for hiding text." - :type 'sexp + :type 'plist :group 'gnus-article-hiding) ;; Fixme: This isn't the right thing for mixed graphical and non-graphical @@ -330,7 +330,7 @@ to match a mail address in the From: header, BANNER is one of a symbol If ADDRESS matches author's mail address, it will remove things like advertisements. For example: -\((\"@yoo-hoo\\\\.co\\\\.jp\\\\'\" . \"\\n_+\\nDo You Yoo-hoo!\\\\?\\n.*\\n.*\\n\")) +\((\"@yoo-hoo\\\\.co\\\\.jp\\\\\\='\" . \"\\n_+\\nDo You Yoo-hoo!\\\\?\\n.*\\n.*\\n\")) " :type '(repeat (cons @@ -399,7 +399,7 @@ advertisements. For example: "*Alist that says how to fontify certain phrases. Each item looks like this: - (\"_\\\\(\\\\w+\\\\)_\" 0 1 'underline) + (\"_\\\\(\\\\w+\\\\)_\" 0 1 \\='underline) The first element is a regular expression to be matched. The second is a number that says what regular expression grouping used to find @@ -661,7 +661,7 @@ For instance, if you would like to save articles related to Gnus in the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\", you could set this variable to something like: - '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\") + ((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\") (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\")) This variable is an alist where the key is the match and the @@ -886,12 +886,12 @@ Here are examples: ;; Specify the altitude of Face images in the From header. \(setq gnus-face-properties-alist - '((pbm . (:face gnus-x-face :ascent 80)) + \\='((pbm . (:face gnus-x-face :ascent 80)) (png . (:ascent 80)))) ;; Show Face images as pressed buttons. \(setq gnus-face-properties-alist - '((pbm . (:face gnus-x-face :relief -2)) + \\='((pbm . (:face gnus-x-face :relief -2)) (png . (:relief -2)))) See the manual for the valid properties for various image types. @@ -1659,7 +1659,9 @@ called with the group name as the parameter, and should return a regexp." :version "24.1" :group 'gnus-art - :type '(choice regexp function)) + :type '(choice (const :tag "Allow all" nil) + (regexp :tag "Regular expression") + (function :tag "Use a function"))) ;;; Internal variables @@ -2428,7 +2430,7 @@ long lines if and only if arg is positive." (unless (setq from (gnus-article-goto-header "from")) (insert "From:") (setq from (point)) - (insert " [no `from' set]\n")) + (insert " [no 'from' set]\n")) (while faces (when (setq png (gnus-convert-face-to-png (pop faces))) (setq image @@ -2770,7 +2772,7 @@ summary buffer." (cond ((file-directory-p file) (when (or (not (eq how 'file)) (gnus-y-or-n-p - (format + (gnus-format-message "Delete temporary HTML file(s) in directory `%s'? " (file-name-as-directory file)))) (gnus-delete-directory file))) @@ -5403,9 +5405,9 @@ Compressed files like .gz and .bz2 are decompressed." 'gnus-undeletable t)))) ;; We're in the article header. (delete-char -1) - (dolist (ovl (gnus-overlays-in btn (point))) - (gnus-overlay-put ovl 'gnus-button-attachment-extra t) - (gnus-overlay-put ovl 'face nil)) + (dolist (ovl (overlays-in btn (point))) + (overlay-put ovl 'gnus-button-attachment-extra t) + (overlay-put ovl 'face nil)) (save-restriction (message-narrow-to-field) (let ((gnus-treatment-function-alist @@ -5516,7 +5518,7 @@ If no internal viewer is available, use an external viewer." (mm-display-part handle nil t)))))) (defun gnus-mime-action-on-part (&optional action) - "Do something with the MIME attachment at \(point\)." + "Do something with the MIME attachment at (point)." (interactive (list (gnus-completing-read "Action" (mapcar 'car gnus-mime-action-alist) t))) (gnus-article-check-buffer) @@ -5798,9 +5800,9 @@ all parts." 'gnus-undeletable t)))) ;; We're in the article header. (delete-char -1) - (dolist (ovl (gnus-overlays-in point (point))) - (gnus-overlay-put ovl 'gnus-button-attachment-extra t) - (gnus-overlay-put ovl 'face nil)) + (dolist (ovl (overlays-in point (point))) + (overlay-put ovl 'gnus-button-attachment-extra t) + (overlay-put ovl 'face nil)) (save-restriction (message-narrow-to-field) (let ((gnus-treatment-function-alist @@ -5889,8 +5891,8 @@ all parts." (1- (point)) (point))) (when gnus-article-button-face - (gnus-overlay-put (gnus-make-overlay b e nil t) - 'face gnus-article-button-face)) + (overlay-put (make-overlay b e nil t) + 'face gnus-article-button-face)) (widget-convert-button 'link b e :mime-handle handle @@ -5992,7 +5994,7 @@ If t, it overrides nil values of "Display \"multipart/related\" parts as \"multipart/mixed\". If displaying \"text/html\" is discouraged \(see -`mm-discouraged-alternatives'\) images or other material inside a +`mm-discouraged-alternatives') images or other material inside a \"multipart/related\" part might be overlooked when this variable is nil." :version "22.1" :group 'gnus-article-mime @@ -6452,9 +6454,9 @@ in the body. Use `gnus-header-face-alist' to highlight buttons." (insert "\n") (end-of-line))) (insert "\n") - (dolist (ovl (gnus-overlays-in (point-min) (point))) - (gnus-overlay-put ovl 'gnus-button-attachment-extra t) - (gnus-overlay-put ovl 'face nil)) + (dolist (ovl (overlays-in (point-min) (point))) + (overlay-put ovl 'gnus-button-attachment-extra t) + (overlay-put ovl 'face nil)) (let ((gnus-treatment-function-alist '((gnus-treat-highlight-headers gnus-article-highlight-headers)))) @@ -6871,11 +6873,13 @@ KEY is a string or a vector." (with-current-buffer gnus-article-current-summary (setq unread-command-events (if (featurep 'xemacs) - (append key nil) - (mapcar (lambda (x) (if (and (integerp x) (>= x 128)) - (list 'meta (- x 128)) - x)) - key))) + (append key unread-command-events) + (nconc + (mapcar (lambda (x) (if (and (integerp x) (>= x 128)) + (list 'meta (- x 128)) + x)) + key) + unread-command-events))) (let ((cursor-in-echo-area t) gnus-pick-mode) (describe-key (read-key-sequence nil t)))) @@ -6893,11 +6897,13 @@ KEY is a string or a vector." (with-current-buffer gnus-article-current-summary (setq unread-command-events (if (featurep 'xemacs) - (append key nil) - (mapcar (lambda (x) (if (and (integerp x) (>= x 128)) - (list 'meta (- x 128)) - x)) - key))) + (append key unread-command-events) + (nconc + (mapcar (lambda (x) (if (and (integerp x) (>= x 128)) + (list 'meta (- x 128)) + x)) + key) + unread-command-events))) (let ((cursor-in-echo-area t) gnus-pick-mode) (describe-key-briefly (read-key-sequence nil t) insert))) @@ -7541,7 +7547,7 @@ must return `mid', `mail', `invalid' or `ask'." (10.0 . "^[^0-9]+@") (3.0 . "^[^0-9]+[0-9][0-9]?[0-9]?@") ;; ^[^0-9]+[0-9]{1,3}\@ digits only at end of local part - (3.0 . "\@stud") + (3.0 . "@stud") ;; (2.0 . "[a-z][a-z][._-][A-Z][a-z].*@") ;; @@ -7549,7 +7555,7 @@ must return `mid', `mail', `invalid' or `ask'." (0.5 . "^[A-Z][a-z][a-z]") (1.5 . "^[A-Z][a-z][A-Z][a-z][^a-z]") ;; ^[A-Z][a-z]{3,3} (2.0 . "^[A-Z][a-z][A-Z][a-z][a-z][^a-z]")) ;; ^[A-Z][a-z]{4,4} - "An alist of \(RATE . REGEXP\) pairs for `gnus-button-mid-or-mail-heuristic'. + "An alist of (RATE . REGEXP) pairs for `gnus-button-mid-or-mail-heuristic'. A negative RATE indicates a message IDs, whereas a positive indicates a mail address. The REGEXP is processed with `case-fold-search' set to nil." @@ -7608,9 +7614,9 @@ address, `ask' if unsure and `invalid' if the string is invalid." (gnus-message 9 "Many digits in `%s', rate `%s', result `%s'." mid-or-mail rate result)) - ((string-match "[^aeiouy][^aeiouy][^aeiouy][^aeiouy]+.*\@" + ((string-match "[^aeiouy][^aeiouy][^aeiouy][^aeiouy]+.*@" mid-or-mail) - ;; Too few vowels [^aeiouy]{4,}.*\@ + ;; Too few vowels [^aeiouy]{4,}.*@ (setq result (+ result -5.0)) (gnus-message 9 "Few vowels in `%s', rate `%s', result `%s'." @@ -7720,7 +7726,7 @@ Calls `describe-variable' or `describe-function'." "Call `locate-library' when pushing the corresponding URL button." (gnus-message 9 "url=`%s'" url) (let* ((lib (locate-library url)) - (file (gnus-replace-in-string (or lib "") "\.elc" ".el"))) + (file (gnus-replace-in-string (or lib "") "\\.elc" ".el"))) (if (not lib) (gnus-message 1 "Cannot locale library `%s'." url) (find-file-read-only file)))) @@ -7827,11 +7833,11 @@ positives are possible." ("/\\([a-z][-a-z0-9]+\\.el\\)\\>[^.?]" ;; Exclude [.?] for URLs in gmane.emacs.cvs 1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1) - ("[`‘]\\([a-z][-a-z0-9]+\\.el\\)['’]" + ("['`‘]\\([a-z][-a-z0-9]+\\.el\\)['’]" 1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1) - ("[`‘]\\([a-z][a-z0-9]+-[a-z0-9]+-[-a-z0-9]*[a-z]\\|\\(gnus\\|message\\)-[-a-z]+\\)['’]" + ("['`‘]\\([a-z][a-z0-9]+-[a-z0-9]+-[-a-z0-9]*[a-z]\\|\\(gnus\\|message\\)-[-a-z]+\\)['’]" 0 (>= gnus-button-emacs-level 8) gnus-button-handle-symbol 1) - ("[`‘]\\([a-z][a-z0-9]+-[a-z]+\\)['’]" + ("['`‘]\\([a-z][a-z0-9]+-[a-z]+\\)['’]" 0 (>= gnus-button-emacs-level 9) gnus-button-handle-symbol 1) ("(setq[ \t\n]+\\([a-z][a-z0-9]+-[-a-z0-9]+\\)[ \t\n]+.+)" 1 (>= gnus-button-emacs-level 7) gnus-button-handle-describe-variable 1) @@ -7841,7 +7847,7 @@ positives are possible." 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2) ("\\b\\(C-h\\|?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>" 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2) - ("[`‘]\\(\\(C-h\\|?\\)[ \t\n]+k[ \t\n]+\\([^'’]+\\)\\)['’]" + ("['`‘]\\(\\(C-h\\|?\\)[ \t\n]+k[ \t\n]+\\([^'’]+\\)\\)['’]" ;; Unlike the other regexps we really have to require quoting ;; here to determine where it ends. 1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3) @@ -8033,8 +8039,8 @@ It does this by highlighting everything after (save-restriction (when (and gnus-signature-face (gnus-article-narrow-to-signature)) - (gnus-overlay-put (gnus-make-overlay (point-min) (point-max) nil t) - 'face gnus-signature-face) + (overlay-put (make-overlay (point-min) (point-max) nil t) + 'face gnus-signature-face) (widen) (gnus-article-search-signature) (let ((start (match-beginning 0)) @@ -8109,7 +8115,7 @@ url is put as the `gnus-button-url' overlay property on the button." (< (match-end 0) start)) (regexp-quote (match-string 0))) "\ -\[\t ]*\\(?:\\([^\t\n \">]+\\)[\t ]*$\\|\\([^\t\n \">]*\\)[\t ]*" +[\t ]*\\(?:\\([^\t\n \">]+\\)[\t ]*$\\|\\([^\t\n \">]*\\)[\t ]*" delim "\\)")) (while (progn (forward-line 1) @@ -8132,12 +8138,12 @@ url is put as the `gnus-button-url' overlay property on the button." 'gnus-button-push (list beg (assq 'gnus-button-url-regexp gnus-button-alist))))) - (let ((overlay (gnus-make-overlay start end))) - (gnus-overlay-put overlay 'evaporate t) - (gnus-overlay-put overlay 'gnus-button-url - (list (mapconcat 'identity (nreverse url) ""))) + (let ((overlay (make-overlay start end))) + (overlay-put overlay 'evaporate t) + (overlay-put overlay 'gnus-button-url + (list (mapconcat 'identity (nreverse url) ""))) (when gnus-article-mouse-face - (gnus-overlay-put overlay 'mouse-face gnus-article-mouse-face))) + (overlay-put overlay 'mouse-face gnus-article-mouse-face))) t) (goto-char opoint)))) @@ -8176,8 +8182,8 @@ url is put as the `gnus-button-url' overlay property on the button." (defun gnus-article-add-button (from to fun &optional data text) "Create a button between FROM and TO with callback FUN and data DATA." (when gnus-article-button-face - (gnus-overlay-put (gnus-make-overlay from to nil t) - 'face gnus-article-button-face)) + (overlay-put (make-overlay from to nil t) + 'face gnus-article-button-face)) (gnus-add-text-properties from to (nconc (and gnus-article-mouse-face @@ -8516,8 +8522,8 @@ url is put as the `gnus-button-url' overlay property on the button." (1- (point)) (point))) (when gnus-article-button-face - (gnus-overlay-put (gnus-make-overlay b e nil t) - 'face gnus-article-button-face)) + (overlay-put (make-overlay b e nil t) + 'face gnus-article-button-face)) (widget-convert-button 'link b e :action 'gnus-button-prev-page @@ -8552,8 +8558,8 @@ url is put as the `gnus-button-url' overlay property on the button." (1- (point)) (point))) (when gnus-article-button-face - (gnus-overlay-put (gnus-make-overlay b e nil t) - 'face gnus-article-button-face)) + (overlay-put (make-overlay b e nil t) + 'face gnus-article-button-face)) (widget-convert-button 'link b e :action 'gnus-button-next-page @@ -8948,8 +8954,8 @@ For example: (1- (point)) (point))) (when gnus-article-button-face - (gnus-overlay-put (gnus-make-overlay b e nil t) - 'face gnus-article-button-face)) + (overlay-put (make-overlay b e nil t) + 'face gnus-article-button-face)) (widget-convert-button 'link b e :mime-handle handle