⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mh-e.el

📁 早期freebsd实现
💻 EL
📖 第 1 页 / 共 5 页
字号:
;;;  mh-e.el	(Version: 3.8 for GNU Emacs Version 18 and MH.5 and MH.6)(defvar mh-e-RCS-id)(setq mh-e-RCS-id "$Header: mh-e.el,v 3.6 92/01/21 18:34:50 gildea Exp $")(setq mh-e-time-stamp "92/01/21 18:34:45 gildea")(provide 'mh-e);;; Copyright (c) 1985,1986,1987,1988,1990,1992 Free Software Foundation;;;     Maintainer:  Stephen Gildea <gildea@lcs.mit.edu>;;;	Please send suggestions and corrections to the above address.;;;;;; This file contains mh-e, a GNU Emacs front end to the MH mail system.;; 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 1, 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, 675 Mass Ave, Cambridge, MA 02139, USA.;;;  Original version for Gosling emacs by Brian Reid, Stanford, 1982.;;;  Modified by James Larus, BBN, July 1984 and UCB, 1984 & 1985.;;;  Rewritten for GNU Emacs, James Larus 1985.  larus@ginger.berkeley.edu;;;  Modified by Stephen Gildea, BBN, 1988, and MIT, 1990.  gildea@lcs.mit.edu;;;  NB.  MH must have been compiled with the MHE compiler flag or several;;;  features necessary mh-e will be missing from MH commands, specifically;;;  the -build switch to repl and forw.;;;  HOW TO USE:;;;  M-x mh-rmail to read mail.  Type C-h m there for a list of commands.;;;  C-u M-x mh-rmail to visit any folder.;;;  M-x mh-smail to send mail.  From within the mail reader, "m" works, too.;;;  Your .emacs might benefit from these bindings:;;;  (global-set-key "\C-xm" 'mh-smail);;;  (global-set-key "\C-x4m" 'mh-smail-other-window);;;  (global-set-key "\C-xr" 'mh-rmail)	;clobbers copy-rectangle-to-register;;; Constants:;;; Set for local environment:;;;* These are now in paths.el.;;;(defvar mh-progs "/usr/new/mh/" "Directory containing MH commands.");;;(defvar mh-lib "/usr/new/lib/mh/" "Directory of MH library.")(defvar mh-redist-full-contents nil  "Non-nil if the `dist' command needs whole letter for redistribution.This is the case when `send' is compiled with the BERK option.");;; Hooks:(defvar mh-folder-mode-hook nil  "Invoked in `mh-folder mode' on a new folder.")(defvar mh-letter-mode-hook nil  "Invoked in `mh-letter-mode' on a new letter.")(defvar mh-compose-letter-function nil  "Invoked in `mh-compose-and-send-mail' on a draft letter.It is passed three arguments: TO recipients, SUBJECT, and CC recipients.")(defvar mh-before-send-letter-hook nil  "Invoked at the beginning of the \\[mh-send-letter] command.")(defvar mh-inc-folder-hook nil  "Invoked after incorporating mail into a folder with \\[mh-inc-folder].")(defvar mh-before-quit-hook nil  "Invoked by \\[mh-quit] before quitting mh-e.  See also  mh-quit-hook")(defvar mh-quit-hook nil  "Invoked after quitting mh-e by \\[mh-quit].  See also  mh-before-quit-hook")(defvar mh-ins-string nil  "Temporarily set by `mh-insert-prefix' prior to running `mh-yank-hooks'.")(defvar mh-yank-hooks  '(lambda ()    (save-excursion      (goto-char (point))      (or (bolp) (forward-line 1))      (while (< (point) (mark))	(insert mh-ins-string)	(forward-line 1))))  "Hook to run citation function.Expects POINT and MARK to be set to the region to cite.");;; Personal preferences:(defvar mh-clean-message-header nil  "*Non-nil means clean headers of messages that are displayed or inserted.The variables `mh-visible-headers' and `mh-invisible-headers' control whatis removed.")(defvar mh-visible-headers nil  "*If non-nil, contains a regexp specifying the headers to keep when cleaning.Only used if `mh-clean-message-header' is non-nil.  Setting this variableoverrides `mh-invisible-headers'.")(defvar mhl-formfile nil  "*Name of format file to be used by mhl to show messages.A value of T means use the default format file.Nil means don't use mhl to format messages.")(defvar mh-lpr-command-format "lpr -p -J '%s'"  "*Format for Unix command that prints a message.The string should be a Unix command line, with the string '%s' wherethe job's name (folder and message number) should appear.  The message textis piped to this command.")(defvar mh-print-background nil  "*Print messages in the background if non-nil.WARNING: do not delete the messages until printing is finished;otherwise, your output may be truncated.")(defvar mh-summary-height 4  "*Number of lines in summary window (including the mode line).")(defvar mh-recenter-summary-p nil  "*Recenter summary window when the show window is toggled off if non-nil.")(defvar mh-ins-buf-prefix "> "  "*String to put before each non-blank line of a yanked or inserted message.Used when the message is inserted in an outgoing letter.")(defvar mh-do-not-confirm nil  "*Non-nil means do not prompt for confirmation before some commands.Only affects certain innocuous commands.")(defvar mh-bury-show-buffer t  "*Non-nil means that the displayed show buffer for a folder is buried.")(defvar mh-delete-yanked-msg-window nil  "*Controls window display when a message is yanked by \\[mh-yank-cur-msg].If non-nil, yanking the current message into a draft letter deletes anywindows displaying the message.")(defvar mh-yank-from-start-of-msg t  "*Controls which part of a message is yanked by \\[mh-yank-cur-msg].If non-nil, include the entire message.  If the symbol `body', then yank themessage minus the header.  If nil, yank only the portion of the messagefollowing the point.  If the show buffer has a region, this variable isignored.")(defvar mh-reply-default-reply-to nil  "*Sets the person or persons to whom a reply will be sent.If nil, prompt for recipient. If non-nil, then \\[mh-reply] will use thisvalue and it should be one of \"from\", \"to\", or \"cc\".")(defvar mh-recursive-folders nil  "*If non-nil, then commands which operate on folders do so recursively.")(defvar mh-unshar-default-directory ""  "*Default for directory name prompted for by mh-unshar-msg.");;; Parameterize mh-e to work with different scan formats.  The defaults work;;; with the standard MH scan listings.(defvar mh-cmd-note 4  "Offset to insert notation.")(defvar mh-note-repl "-"  "String whose first character is used to notate replied to messages.")(defvar mh-note-forw "F"  "String whose first character is used to notate forwarded messages.")(defvar mh-note-dist "R"  "String whose first character is used to notate redistributed messages.")(defvar mh-good-msg-regexp  "^....[^D^]"  "Regexp specifiying the scan lines that are 'good' messages.")(defvar mh-deleted-msg-regexp "^....D"  "Regexp matching scan lines of deleted messages.")(defvar mh-refiled-msg-regexp  "^....\\^"  "Regexp matching scan lines of refiled messages.")(defvar mh-valid-scan-line "^ *[0-9]"  "Regexp matching scan lines for messages (not error messages).")(defvar mh-msg-number-regexp "^ *\\([0-9]+\\)"  "Regexp to find the number of a message in a scan line.The message's number must be surrounded with \\( \\)")(defvar mh-msg-search-regexp "^[^0-9]*%d[^0-9]"  "Format string containing a regexp matching the scan listing for a message.The desired message's number will be an argument to format.")(defvar mh-flagged-scan-msg-regexp "^....\\D\\|^....\\^\\|^....\\+\\|^.....%"  "Regexp matching flagged scan lines.Matches lines marked as deleted, refiled, in a sequence, or the cur message.")(defvar mh-cur-scan-msg-regexp "^....\\+"  "Regexp matching scan line for the cur message.")(defvar mh-show-buffer-mode-line-buffer-id "{%%b}  %s/%d"  "Format string to produce `mode-line-buffer-id' for show buffers.First argument is folder name.  Second is message number.")(defvar mh-partial-folder-mode-line-annotation "select"  "Annotation when displaying part of a folder.The string is displayed after the folder's name.  NIL for no annotation.");;; Real constants:(defvar mh-invisible-headers  "^Received: \\|^Message-Id: \\|^Remailed-\\|^Via: \\|^Mail-from: \\|^Return-Path: \\|^In-Reply-To: \\|^Resent-"  "Regexp matching lines in a message header that are not to be shown.If `mh-visible-headers' is non-nil, it is used instead to specify whatto keep.")(defvar mh-rejected-letter-start  (concat "^   ----- Unsent message follows -----$" ;from mail system	  "\\|^------- Unsent Draft$"	;from MH itself	  "\\|^  --- The unsent message follows ---$") ;from AIX mail system  "Regexp specifying the beginning of the wrapper around a returned letter.This wrapper is generated by the mail system when rejecting a letter.")(defvar mh-to-field-choices '((?t . "To:") (?s . "Subject:") (?c . "Cc:")			      (?b . "Bcc:") (?f . "Fcc:"))  "A-list of (character . field name) strings for mh-to-field.");;; Global variables:(defvar mh-user-path  ""  "User's mail folder.")(defvar mh-last-destination nil  "Destination of last refile or write command.")(defvar mh-folder-mode-map (make-keymap)  "Keymap for MH folders.")(defvar mh-letter-mode-map (copy-keymap text-mode-map)  "Keymap for composing mail.")(defvar mh-pick-mode-map (make-sparse-keymap)  "Keymap for searching folder.")(defvar mh-letter-mode-syntax-table nil  "Syntax table used while in mh-e letter mode.")(if mh-letter-mode-syntax-table    ()    (setq mh-letter-mode-syntax-table	  (make-syntax-table text-mode-syntax-table))    (set-syntax-table mh-letter-mode-syntax-table)    (modify-syntax-entry ?% "." mh-letter-mode-syntax-table))(defvar mh-folder-list nil  "List of folder names for completion.")(defvar mh-draft-folder nil  "Name of folder containing draft messages.NIL means do not use draft folder.")(defvar mh-unseen-seq nil  "Name of the unseen sequence.")(defvar mh-previous-window-config nil  "Window configuration before mh-e command.")(defvar mh-previous-seq nil  "Name of the sequence to which a message was last added.");;; Macros and generic functions:(defmacro mh-push (v l)  (list 'setq l (list 'cons v l)))(defmacro mh-when (pred &rest body)  (list 'cond (cons pred body)))(defmacro with-mh-folder-updating (save-modification-flag-p &rest body)  ;; Format is (with-mh-folder-updating (SAVE-MODIFICATION-FLAG-P) &body BODY).  ;; Execute BODY, which can modify the folder buffer without having to  ;; worry about file locking or the read-only flag, and return its result.  ;; If SAVE-MODIFICATION-FLAG-P is non-nil, the buffer's modification  ;; flag is unchanged, otherwise it is cleared.  (setq save-modification-flag-p (car save-modification-flag-p)) ; CL style  (` (let ((folder-updating-mod-flag (buffer-modified-p)))       (prog1	   (let ((buffer-read-only nil)		 (buffer-file-name nil)) ; don't let the buffer get locked	     (,@ body))	 (, (if save-modification-flag-p		'(mh-set-folder-modified-p folder-updating-mod-flag)	      '(mh-set-folder-modified-p nil)))))))(defun mh-mapc (func list)  (while list    (funcall func (car list))    (setq list (cdr list))));;; Entry points:;;;###autoload(defun mh-rmail (&optional arg)  "Inc(orporate) new mail (no arg) or scan a MH mail box (arg given).This front end uses the MH mail system, which uses different conventionsfrom the usual mail system."  (interactive "P")  (mh-find-path)  (if arg      (call-interactively 'mh-visit-folder)      (mh-inc-folder)));;;###autoload(defun mh-smail ()  "Compose and send mail with the MH mail system."  (interactive)  (mh-find-path)  (call-interactively 'mh-send))(defun mh-smail-other-window ()  "Compose and send mail in other window with the MH mail system."  (interactive)  (mh-find-path)  (call-interactively 'mh-send-other-window));;; User executable mh-e commands:(defun mh-burst-digest ()  "Burst apart the current message, which should be a digest.The message is replaced by its table of contents and the letters from thedigest are inserted into the folder after that message."  (interactive)  (let ((digest (mh-get-msg-num t)))    (mh-process-or-undo-commands mh-current-folder)    (mh-set-folder-modified-p t)		; lock folder while bursting    (message "Bursting digest...")    (mh-exec-cmd "burst" mh-current-folder digest "-inplace")    (mh-scan-folder mh-current-folder (format "%d-last" mh-first-msg-num))    (message "Bursting digest...done")))(defun mh-copy-msg (prefix-provided msg-or-seq dest)  "Copy specified MESSAGE(s) to another FOLDER without deleting them.Default is the displayed message.  If optional prefix argument isprovided, then prompt for the message sequence."  (interactive (list current-prefix-arg		     (if current-prefix-arg			 (mh-read-seq-default "Copy" t)			 (mh-get-msg-num t))		     (mh-prompt-for-folder "Copy to" "" t)))  (mh-exec-cmd "refile" msg-or-seq "-link" "-src" mh-current-folder dest)  (if prefix-provided      (mh-notate-seq msg-or-seq ?C mh-cmd-note)      (mh-notate msg-or-seq ?C mh-cmd-note)))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -