"{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | ee -"))
((gnus-image-type-available-p 'pbm)
'gnus-display-x-face-in-from)
- ((and window-system
- (module-installed-p 'x-face-mule))
- 'x-face-mule-gnus-article-display-x-face)
(t
"{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | \
display -"))
If it is a string, the command will be executed in a sub-shell
asynchronously. The compressed face will be piped to this command."
:type `(choice
- ,@(let ((x-face-mule (if (featurep 'xemacs)
- nil
- (module-installed-p 'x-face-mule))))
- (delq nil
- (list
- 'string
- (if (or (gnus-image-type-available-p 'xface)
- (gnus-image-type-available-p 'pbm))
- '(function-item gnus-display-x-face-in-from))
- (if x-face-mule
- '(function-item
- x-face-mule-gnus-article-display-x-face))
- 'function))))
+ :format "%{%t%}:\n%[Value Menu%] %v"
+ ,@(delq nil
+ (list
+ 'string
+ (if (or (gnus-image-type-available-p 'xface)
+ (gnus-image-type-available-p 'pbm))
+ '(function-item gnus-display-x-face-in-from))
+ 'function)))
:version "21.1"
:group 'gnus-picon
:group 'gnus-article-washing)
(or (nth 4 spec) 3)
(intern (format "gnus-emphasis-%s" (nth 2 spec)))))
types))
- '(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
+ '(;; I've never seen anyone use this strikethru convention whereas I've
+ ;; several times seen it triggered by normal text. --Stef
+ ;; Miles suggests that this form is sometimes used but for italics,
+ ;; so maybe we should map it to `italic'.
+ ;; ("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.,;]\\)"
+ ;; 2 3 gnus-emphasis-strikethru)
+ ("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
2 3 gnus-emphasis-underline))))
"*Alist that says how to fontify certain phrases.
Each item looks like this:
:link '(custom-manual "(gnus)Article Date")
:group 'gnus-article-washing)
-(eval-and-compile
- (autoload 'mail-extract-address-components "mail-extr"))
-
(defcustom gnus-save-all-headers t
"*If non-nil, don't remove any headers before saving."
:group 'gnus-article-saving
:type 'face
:group 'gnus-article-buttons)
-(defcustom gnus-signature-face 'gnus-signature-face
+(defcustom gnus-signature-face 'gnus-signature
"Face used for highlighting a signature in the article buffer.
-Obsolete; use the face `gnus-signature-face' for customizations instead."
+Obsolete; use the face `gnus-signature' for customizations instead."
:type 'face
:group 'gnus-article-highlight
:group 'gnus-article-signature)
-(defface gnus-signature-face
+(defface gnus-signature
'((t
(:italic t)))
"Face used for highlighting a signature in the article buffer."
:group 'gnus-article-highlight
:group 'gnus-article-signature)
+;; backward-compatibility alias
+(put 'gnus-signature-face 'face-alias 'gnus-signature)
-(defface gnus-header-from-face
+(defface gnus-header-from
'((((class color)
(background dark))
(:foreground "spring green"))
"Face used for displaying from headers."
:group 'gnus-article-headers
:group 'gnus-article-highlight)
+;; backward-compatibility alias
+(put 'gnus-header-from-face 'face-alias 'gnus-header-from)
-(defface gnus-header-subject-face
+(defface gnus-header-subject
'((((class color)
(background dark))
(:foreground "SeaGreen3"))
"Face used for displaying subject headers."
:group 'gnus-article-headers
:group 'gnus-article-highlight)
+;; backward-compatibility alias
+(put 'gnus-header-subject-face 'face-alias 'gnus-header-subject)
-(defface gnus-header-newsgroups-face
+(defface gnus-header-newsgroups
'((((class color)
(background dark))
(:foreground "yellow" :italic t))
articles."
:group 'gnus-article-headers
:group 'gnus-article-highlight)
+;; backward-compatibility alias
+(put 'gnus-header-newsgroups-face 'face-alias 'gnus-header-newsgroups)
-(defface gnus-header-name-face
+(defface gnus-header-name
'((((class color)
(background dark))
(:foreground "SeaGreen"))
"Face used for displaying header names."
:group 'gnus-article-headers
:group 'gnus-article-highlight)
+;; backward-compatibility alias
+(put 'gnus-header-name-face 'face-alias 'gnus-header-name)
-(defface gnus-header-content-face
+(defface gnus-header-content
'((((class color)
(background dark))
(:foreground "forest green" :italic t))
"Face used for displaying header content."
:group 'gnus-article-headers
:group 'gnus-article-highlight)
+;; backward-compatibility alias
+(put 'gnus-header-content-face 'face-alias 'gnus-header-content)
(defcustom gnus-header-face-alist
- '(("From" nil gnus-header-from-face)
- ("Subject" nil gnus-header-subject-face)
- ("Newsgroups:.*," nil gnus-header-newsgroups-face)
- ("" gnus-header-name-face gnus-header-content-face))
+ '(("From" nil gnus-header-from)
+ ("Subject" nil gnus-header-subject)
+ ("Newsgroups:.*," nil gnus-header-newsgroups)
+ ("" gnus-header-name gnus-header-content))
"*Controls highlighting of article headers.
An alist of the form (HEADER NAME CONTENT).
(defcustom gnus-treat-display-x-face
(and (not noninteractive)
- (or (eq gnus-article-x-face-command
- 'x-face-mule-gnus-article-display-x-face)
- (and (fboundp 'image-type-available-p)
+ (or (and (fboundp 'image-type-available-p)
(image-type-available-p 'xbm)
(string-match "^0x" (shell-command-to-string "uncompface"))
(executable-find "icontopbm"))
;; The command is a string, so we interpret the command
;; as a, well, command, and fork it off.
(let ((process-connection-type nil))
- (process-kill-without-query
+ (gnus-set-process-query-on-exit-flag
(start-process
"article-x-face" nil shell-file-name
- shell-command-switch gnus-article-x-face-command))
+ shell-command-switch gnus-article-x-face-command)
+ nil)
(with-temp-buffer
(insert face)
(process-send-region "article-x-face"
should replace the \"Date:\" one, or should be added below it."
(interactive (list 'ut t))
(let* ((tdate-regexp "^Date:[ \t]\\|^X-Sent:[ \t]")
- (date-regexp (if (and gnus-article-date-lapsed-new-header
- (eq type 'lapsed))
- "^X-Sent:[ \t]"
- tdate-regexp))
+ (date-regexp (cond ((not gnus-article-date-lapsed-new-header)
+ tdate-regexp)
+ ((eq type 'lapsed)
+ "^X-Sent:[ \t]")
+ (article-lapsed-timer
+ "^Date:[ \t]")
+ (t
+ tdate-regexp)))
(case-fold-search t)
(inhibit-read-only t)
(inhibit-point-motion-hooks t)
(save-restriction
(widen)
(goto-char (point-min))
- (while (and (or (setq date (get-text-property (setq pos (point))
- 'original-date))
- (and (setq pos (next-single-property-change
- (point) 'original-date))
- (setq date (get-text-property pos
- 'original-date))))
- (not (string-equal date "")))
- (narrow-to-region
- pos
- (or (text-property-any pos (point-max) 'original-date nil)
- (point-max)))
+ (while (or (setq date (get-text-property (setq pos (point))
+ 'original-date))
+ (when (setq pos (next-single-property-change
+ (point) 'original-date))
+ (setq date (get-text-property pos 'original-date))
+ t))
+ (narrow-to-region pos (or (text-property-any pos (point-max)
+ 'original-date nil)
+ (point-max)))
(goto-char (point-min))
(when (re-search-forward tdate-regexp nil t)
(setq bface (get-text-property (point-at-bol) 'face)
(defun article-update-date-lapsed ()
"Function to be run from a timer to update the lapsed time line."
- (let (deactivate-mark)
- (save-excursion
- (ignore-errors
- (walk-windows
- (lambda (w)
- (set-buffer (window-buffer w))
- (when (eq major-mode 'gnus-article-mode)
- (let ((mark (point-marker)))
- (goto-char (point-min))
- (when (re-search-forward "^X-Sent:" nil t)
- (article-date-lapsed t))
- (goto-char (marker-position mark))
- (move-marker mark nil))))
- nil 'visible)))))
+ (save-match-data
+ (let (deactivate-mark)
+ (save-excursion
+ (ignore-errors
+ (walk-windows
+ (lambda (w)
+ (set-buffer (window-buffer w))
+ (when (or (and (eq major-mode 'mime-view-mode)
+ (eq (mime-preview-original-major-mode)
+ 'gnus-original-article-mode))
+ (eq major-mode 'gnus-article-mode))
+ (let ((mark (point-marker)))
+ (goto-char (point-min))
+ (when (re-search-forward "^X-Sent:" nil t)
+ (article-date-lapsed t))
+ (goto-char (marker-position mark))
+ (move-marker mark nil))))
+ nil 'visible))))))
(defun gnus-start-date-timer (&optional n)
"Start a timer to update the X-Sent header in the article buffers.
(interactive (list t))
(article-date-ut 'iso8601 highlight))
-(defun gnus-article-save-original-date ()
- "Save the original date as a text property."
- ;;(goto-char (point-max))
- (skip-chars-backward "\n")
- (let (start
- (end (point))
- (case-fold-search t))
- (goto-char (point-min))
- (when (and (re-search-forward "^date:[\t\n ]+" nil t)
- (progn
- (setq start (match-end 0))
- (re-search-forward "[\t ]*\n\\(?:[^\t ]\\|\\'\\)" nil t)))
- (put-text-property
- (point-min) end 'original-date
- (buffer-substring-no-properties start (match-beginning 0))))))
+(defmacro gnus-article-save-original-date (&rest forms)
+ "Save the original date as a text property and evaluate FORMS."
+ `(let* ((case-fold-search t)
+ (start (progn
+ (goto-char (point-min))
+ (when (and (re-search-forward "^date:[\t\n ]+" nil t)
+ (not (bolp)))
+ (match-end 0))))
+ (date (when (and start
+ (re-search-forward "[\t ]*\n\\(?:[^\t ]\\|\\'\\)"
+ nil t))
+ (buffer-substring-no-properties start
+ (match-beginning 0)))))
+ (goto-char (point-max))
+ (skip-chars-backward "\n")
+ (put-text-property (point-min) (point) 'original-date date)
+ ,@forms
+ (goto-char (point-max))
+ (skip-chars-backward "\n")
+ (put-text-property (point-min) (point) 'original-date date)))
;; (defun article-show-all ()
;; "Show all hidden text in the article buffer."
\\[gnus-article-describe-briefly]\t Describe the current mode briefly
\\[gnus-info-find-node]\t Go to the Gnus info node"
(interactive)
+ (kill-all-local-variables)
(gnus-simplify-mode-line)
(setq mode-name "Article")
(setq major-mode 'gnus-article-mode)
(make-local-variable 'gnus-article-charset)
(make-local-variable 'gnus-article-ignored-charsets)
;; Prevent recent Emacsen from displaying non-break space as "\ ".
- (set (make-local-variable 'show-nonbreak-escape) nil)
+ (set (make-local-variable 'nobreak-char-display) nil)
(gnus-set-default-directory)
(buffer-disable-undo)
(setq buffer-read-only t
show-trailing-whitespace nil)
(set-syntax-table gnus-article-mode-syntax-table)
- (gnus-run-hooks 'gnus-article-mode-hook))
+ (gnus-run-mode-hooks 'gnus-article-mode-hook))
(defun gnus-article-setup-buffer ()
"Initialize the article buffer."
(if (search-forward "\n\n" nil t)
(point)
(point-max)))
- (gnus-article-save-original-date)
- (gnus-treat-article 'head)
+ (gnus-article-save-original-date (gnus-treat-article 'head))
(put-text-property (point-min) (point-max) 'article-treated-header t)
(goto-char (point-max)))
(while (and (not (eobp)) entity)
(if (search-forward "\n\n" nil t)
(point)
(point-max)))
- (gnus-article-save-original-date)
- (gnus-treat-article 'head)
+ (gnus-article-save-original-date (gnus-treat-article 'head))
(put-text-property (point-min) (point-max) 'article-treated-header t)
(goto-char (point-max))
(widen)
and `gnus-mime-delete-part', and not provided at run-time normally."
(gnus-article-edit-article
`(lambda ()
+ (buffer-disable-undo)
(erase-buffer)
(let ((mail-parse-charset (or gnus-article-charset
',gnus-newsgroup-charset))
(and charset
(setq coding-system
(mm-charset-to-coding-system charset))
- (not (eq charset 'ascii))))
+ (not (eq coding-system 'ascii))))
(mm-decode-coding-string contents coding-system)
(mm-string-to-multibyte contents)))
(goto-char b)))))
(set-window-point window point)))
(let ((handles ihandles)
(inhibit-read-only t)
- handle name type b e display)
+ handle)
(cond (handles)
((setq handles (mm-dissect-buffer nil gnus-article-loose-mime))
(when gnus-article-emulate-mime
(save-restriction
(article-goto-body)
(narrow-to-region (point-min) (point))
- (gnus-article-save-original-date)
- (gnus-treat-article 'head))))))))
+ (gnus-article-save-original-date
+ (gnus-treat-article 'head)))))))))
(defcustom gnus-mime-display-multipart-as-mixed nil
"Display \"multipart\" parts as \"multipart/mixed\".
(defun gnus-article-highlight-signature ()
"Highlight the signature in an article.
It does this by highlighting everything after
-`gnus-signature-separator' using `gnus-signature-face'."
+`gnus-signature-separator' using the face `gnus-signature'."
(interactive)
(when gnus-signature-face
(gnus-with-article-buffer
(match-string 3 address)
"nntp")))
nil nil nil
- (and (match-end 6) (list (string-to-int (match-string 6 address))))))))
+ (and (match-end 6) (list (string-to-number (match-string 6 address))))))))
(defun gnus-url-parse-query-string (query &optional downcase)
(let (retval pairs cur key val)
current-prefix-arg))
(let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist))))
(unless func
- (error (format "Can't find the encrypt protocol %s" protocol)))
+ (error "Can't find the encrypt protocol %s" protocol))
(if (member gnus-newsgroup-name '("nndraft:delayed"
"nndraft:drafts"
"nndraft:queue"))