Mercurial > emacs
view lisp/gnus-mh.el @ 14789:d68b71228abd
(bibtex-pop): New generic function which unifies the
functionality of bibtex-pop-previous and bibtex-pop-next. Now,
bibtex-pop moves to the end of field after the pop. Concatenated
strings are now handled correctly. Delimiters are not added to
non-delimited entries. Changed occurences of
bibtex-text-in-cfield to bibtex-text-in-field.
(bibtex-pop-previous, bibtex-pop-next): Call bibtex-pop.
(bibtex-complete-string): Fixed bug that removed delimiters
around the following field if current field is already
undelimited on completion.
(bibtex-complete-string, bibtex-remove-double-quotes-or-braces):
Only remove delimiters if field text is not concatenated.
(bibtex-font-lock-keywords): Use the same regexps used
in all other places of bibtex.el to parse the buffer.
(bibtex-mode): Changed the definition of font-lock-defaults,
so that quote-delimited entries aren't fontified as strings anymore.
(bibtex-parse-keys): Changed the regexp used for finding crossref entries.
(bibtex-field-const, bibtex-reference-key): Fixed the regexp
to match more of the characters allowed here by BibTeX/LaTeX.
(bibtex-field-name): Made it less restrictive.
(bibtex-field-string): Changed so that quote-delimited entries
with quotes inside aren't a problem anymore. Changed nesting
level of braces in entries to support three inner braces.
(bibtex-validate-buffer): By giving an optional argument, the
user can now let it not validate the whole buffer, but only
the portion starting at point. Small modification in strategy
used to find next entry.
(bibtex-print-help-message): Ignore case in field name when
searching for help text.
(bibtex-submit-bug-report): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 08 Mar 1996 17:42:30 +0000 |
parents | 83f275dcd93a |
children | 530d0d516a42 |
line wrap: on
line source
;;; gnus-mh.el --- mh-e interface for Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet> ;; Lars Magne Ingebrigtsen <larsi@ifi.uio.no> ;; Keywords: news ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Send mail using mh-e. ;; The following mh-e interface is all cooperative works of ;; tanaka@flab.fujitsu.CO.JP (TANAKA Hiroshi), kawabe@sra.CO.JP ;; (Yoshikatsu Kawabe), and shingu@casund.cpr.canon.co.jp (Toshiaki ;; SHINGU). ;;; Code: (require 'mh-e) (require 'mh-comp) (require 'gnus) (require 'gnus-msg) (defun gnus-summary-save-article-folder (&optional arg) "Append the current article to an mh folder. If N is a positive number, save the N next articles. If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") (let ((gnus-default-article-saver 'gnus-summary-save-in-folder)) (gnus-summary-save-article arg))) (defun gnus-summary-save-in-folder (&optional folder) "Save this article to MH folder (using `rcvstore' in MH library). Optional argument FOLDER specifies folder name." ;; Thanks to yuki@flab.Fujitsu.JUNET and ohm@kaba.junet. (mh-find-path) (let ((folder (or folder (mh-prompt-for-folder "Save article in" (funcall gnus-folder-save-name gnus-newsgroup-name gnus-current-headers gnus-newsgroup-last-folder) t))) (errbuf (get-buffer-create " *Gnus rcvstore*"))) (gnus-eval-in-buffer-window gnus-article-buffer (save-restriction (widen) (unwind-protect (call-process-region (point-min) (point-max) (expand-file-name "rcvstore" mh-lib) nil errbuf nil folder) (set-buffer errbuf) (if (zerop (buffer-size)) (message "Article saved in folder: %s" folder) (message "%s" (buffer-string))) (kill-buffer errbuf)))) (setq gnus-newsgroup-last-folder folder))) (defun gnus-mail-reply-using-mhe (&optional yank) "Compose reply mail using mh-e. Optional argument YANK means yank original article. The command \\[mh-yank-cur-msg] yank the original message into current buffer." (let (from cc subject date to reply-to to-userid orig-to references message-id (config (current-window-configuration)) buffer) (pop-to-buffer gnus-article-buffer) (setq buffer (current-buffer)) (save-excursion (save-restriction (or gnus-user-login-name ; we need this (setq gnus-user-login-name (or (getenv "USER") (getenv "LOGNAME")))) (gnus-article-show-all-headers);; so colors are happy ;; lots of junk to avoid mh-send deleting other windows (setq from (or (gnus-fetch-field "from") "") subject (let ((subject (or (gnus-fetch-field "subject") "(None)"))) (if (and subject (not (string-match "^[Rr][Ee]:.+$" subject))) (concat "Re: " subject) subject)) reply-to (gnus-fetch-field "reply-to") cc (gnus-fetch-field "cc") orig-to (or (gnus-fetch-field "to") "") date (gnus-fetch-field "date") references (gnus-fetch-field "references") message-id (gnus-fetch-field "message-id")) (setq to (or reply-to from)) (setq to-userid (mail-strip-quoted-names orig-to)) (if (or (string-match "," orig-to) (not (string-match (substring to-userid 0 (string-match "@" to-userid)) gnus-user-login-name))) (setq cc (concat (if cc (concat cc ", ") "") orig-to))) ;; mh-yank-cur-msg needs to have mh-show-buffer set in the ;; *Article* buffer (setq mh-show-buffer buffer))) (mh-find-path) (mh-send-sub (or to "") (or cc "") (or subject "(None)") config);; Erik Selberg 1/23/94 (let ((draft (current-buffer)) (gnus-mail-buffer (current-buffer)) mail-buf) (if (not yank) (gnus-configure-windows 'reply 'force) (gnus-configure-windows 'reply-yank 'force)) (setq mail-buf gnus-mail-buffer) (pop-to-buffer mail-buf);; always in the display, so won't have window probs (switch-to-buffer draft)) ;; (mh-send to (or cc "") subject);; shouldn't use according to mhe ;; note - current buffer is now draft! (save-excursion (mh-insert-fields "In-reply-to:" (concat (substring from 0 (string-match " *at \\| *@ \\| *(\\| *<" from)) "'s message of " date)) (nnheader-insert-references references message-id)) ;; need this for mh-yank-cur-msg (setq mh-sent-from-folder buffer) (setq mh-sent-from-msg 1) (setq mh-show-buffer buffer) (setq mh-previous-window-config config)) ;; Then, yank original article if requested. (if yank (let ((last (point))) (mh-yank-cur-msg) (goto-char last))) (run-hooks 'gnus-mail-hook)) ;; gnus-mail-forward-using-mhe is contributed by Jun-ichiro Itoh ;; <itojun@ingram.mt.cs.keio.ac.jp> (defun gnus-mail-forward-using-mhe (&optional buffer) "Forward the current message to another user using mh-e." ;; First of all, prepare mhe mail buffer. (let* ((to (read-string "To: ")) (cc (read-string "Cc: ")) (buffer (or buffer gnus-article-buffer)) (config (current-window-configuration));; need to add this - erik (subject (gnus-forward-make-subject buffer))) (setq mh-show-buffer buffer) (mh-find-path) (mh-send-sub to (or cc "") (or subject "(None)") config);; Erik Selberg 1/23/94 (let ((draft (current-buffer)) (gnus-mail-buffer (current-buffer)) mail-buf) (gnus-configure-windows 'reply-yank 'force) (setq mail-buf (eval (cdr (assq 'mail gnus-window-to-buffer)))) (pop-to-buffer mail-buf);; always in the display, so won't have window probs (switch-to-buffer draft) ) (save-excursion (goto-char (point-max)) (insert "\n------- Forwarded Message\n\n") (insert-buffer buffer) (goto-char (point-max)) (insert "\n------- End of Forwarded Message\n") (setq mh-sent-from-folder buffer) (setq mh-sent-from-msg 1) (setq mh-previous-window-config config) (run-hooks 'gnus-mail-hook) ))) (defun gnus-mail-other-window-using-mhe () "Compose mail other window using mh-e." (let ((to (read-string "To: ")) (cc (read-string "Cc: ")) (subject (read-string "Subject: "))) (gnus-article-show-all-headers) ;I don't think this is really needed. (setq mh-show-buffer (current-buffer)) (mh-find-path) (mh-send-other-window to cc subject) (setq mh-sent-from-folder (current-buffer)) (setq mh-sent-from-msg 1) (run-hooks 'gnus-mail-hook))) (defun gnus-Folder-save-name (newsgroup headers &optional last-folder) "Generate folder name from NEWSGROUP, HEADERS, and optional LAST-FOLDER. If variable `gnus-use-long-file-name' is nil, it is +News.group. Otherwise, it is like +news/group." (or last-folder (concat "+" (if gnus-use-long-file-name (gnus-capitalize-newsgroup newsgroup) (gnus-newsgroup-directory-form newsgroup))))) (defun gnus-folder-save-name (newsgroup headers &optional last-folder) "Generate folder name from NEWSGROUP, HEADERS, and optional LAST-FOLDER. If variable `gnus-use-long-file-name' is nil, it is +news.group. Otherwise, it is like +news/group." (or last-folder (concat "+" (if gnus-use-long-file-name newsgroup (gnus-newsgroup-directory-form newsgroup))))) ;;; gnus-mh.el ends here