Mercurial > emacs
view lisp/mail/metamail.el @ 30408:e3e2c9051c5f
Got rid of all byte-compiler warnings on Emacs.
Add to the menu when the file is loaded, not in ada-mode-hook.
Add -toolbar to the default ddd command Switches moved from
ada-prj-default-comp-cmd and ada-prj-default-make-cmd to
ada-prj-default-comp-opt
(ada-add-ada-menu): Remove the map and name parameters Add the Ada
Reference Manual to the menu
(ada-check-current): rewritten as a call to ada-compile-current
(ada-compile): Removed.
(ada-compile-application, ada-compile-current, ada-check-current):
Set the compilation-search-path so that compile.el automatically
finds the sources in src_dir. Automatic scrollong of the
compilation buffer. C-uC-cC-c asks for confirmation before
compiling
(ada-compile-current): New parameter, prj-field
(ada-complete-identifier): Load the .ali file before doing
processing
(ada-find-ali-file-in-dir): prepend build_dir to obj_dir to
conform to gnatmake's behavior.
(ada-find-file-in-dir): New function
(ada-find-references): Set the environment variables for gnatfind
(ada-find-src-file-in-dir): New function.
(ada-first-non-nil): Removed
(ada-gdb-application): Add support for jdb, the java debugger.
(ada-get-ada-file-name): Load the original-file first if not done
yet.
(ada-get-all-references): Handles the new ali syntax (parent types
are found between <>).
(ada-initialize-runtime-library): New function
(ada-mode-hook): Always load a project file when a file is opened,
so that the casing exceptions are correctly read.
(ada-operator-re): Add all missing operators ("abs", "rem", "**").
(ada-parse-prj-file): Use find-file-noselect instead of find-file
to open the project file, since the latter does not work with
speedbar Get default values before loading the prj file, or the
default executable file name is wrong. Use the absolute value of
src_dir to initialize ada-search-directories and
compilation-search-path,... Add the standard runtime library to
the search path for find-file.
(ada-prj-default-debugger): Was missing an opening '{'
(ada-prj-default-bind-opt, ada-prj-default-link-opt): New
variables.
(ada-prj-default-gnatmake-opt): New variable
(ada-prj-find-prj-file): Handles non-file buffers For non-Ada
buffers, the project file is the default one Save the windows
configuration before displaying the menu.
(ada-prj-src-dir, ada-prj-obj-dir, ada-prj-comp-opt,...): Removed
(ada-read-identifier): Fix xrefs on operators (for "mod", "and",
...) regexp-quote identifiers names to support operators +,
-,... in regexps.
(ada-remote): New function.
(ada-run-application): Erase the output buffer before starting the
run Support remote execution of the application. Use
call-process, or the arguments are incorrectly parsed
(ada-set-default-project-file): Reread the content of the active
project file, not the one from the current buffer When a project
file is set as the default project, all directories are
automatically associated with it.
(ada-set-environment): New function
(ada-treat-cmd-string): New special variable ${current}
(ada-treat-cmd-string): Revised. The substitution is now done for
any ${...} substring
(ada-xref-current): If no body was found, compiles the spec
instead. Setup ADA_{SOURCE,OBJECTS}_PATH before running the
compiler to get rid of command line length limitations.
(ada-xref-get-project-field): New function
(ada-xref-project-files): New variable
(ada-xref-runtime-library-specs-path)
(ada-xref-runtime-library-ali-path): New variables
(ada-xref-set-default-prj-values): Default run command now does a
cd to the build directory. New field: main_unit Provide a default
file name even if the current buffer has no prj file.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 24 Jul 2000 11:13:11 +0000 |
parents | fb6b9c37cdc4 |
children | 9c3a204531a0 |
line wrap: on
line source
;;; metamail.el --- Metamail interface for GNU Emacs ;; Copyright (C) 1993, 1996 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA <umerin@mse.kyutech.ac.jp> ;; Version: $Id: metamail.el,v 1.12 1999/08/28 18:25:16 rms Exp $ ;; Keywords: mail, news, mime, multimedia ;; 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: ;; The latest version will be at: ;; ftp://ftp.kyutech.ac.jp/pub/MultiMedia/mime/emacs-mime-tools.shar ;; [This is probably _not_ the latest version; as of Jan 1999, it ;; is dated 1995.] ;; Note: Metamail does not have all options which is compatible with ;; the environment variables. For that reason, matamail.el have to ;; hack the environment variables. In addition, there is no way to ;; display all header fields without extra informative body messages ;; which are suppressed by "-q" option. ;; The following definition is what I'm using with GNUS 4: ;;(setq gnus-show-mime-method ;; (function ;; (lambda () ;; (metamail-interpret-header) ;; (let ((metamail-switches ;Suppress header fields in a body. ;; (append metamail-switches '("-q")))) ;; (metamail-interpret-body))))) ;; The idea of using metamail to process MIME messages is from ;; gnus-mime.el by Spike <Spike@world.std.com>. ;;; Code: (defgroup metamail nil "Metamail interface for Emacs." :group 'mail :group 'hypermedia :group 'processes) (defcustom metamail-program-name "metamail" "*Metamail program name." :type 'string :group 'metamail) (defcustom metamail-mailer-name "emacs" "*Mailer name set to MM_MAILER environment variable." :type 'string :group 'metamail) (defvar metamail-environment '("KEYHEADS=*" "MM_QUIET=1") "*Environment variables passed to `metamail'. It must be a list of strings that have the format ENVVARNAME=VALUE. It is not expected to be altered globally by `set' or `setq'. Instead, change its value temporary using `let' or `let*' form.") (defcustom metamail-switches '("-x" "-d" "-z") "*Switches for `metamail' program. `-z' is required to remove zap file. It is not expected to be altered globally by `set' or `setq'. Instead, change its value temporary using `let' or `let*' form. `-m MAILER' argument is automatically generated from the `metamail-mailer-name' variable." :type '(repeat (string :tag "Switch")) :group 'metamail) ;;;###autoload (defun metamail-interpret-header () "Interpret a header part of a MIME message in current buffer. Its body part is not interpreted at all." (interactive) (save-excursion (let* ((buffer-read-only nil) (metamail-switches ;Inhibit processing an empty body. (append metamail-switches '("-c" "text/plain" "-E" "7bit"))) (end (progn (goto-char (point-min)) (search-forward "\n\n" nil 'move) ;; An extra newline is inserted by metamail if there ;; is no body part. So, insert a dummy body by ;; itself. (insert "\n") (point)))) (metamail-region (point-min) end nil nil 'nodisplay) ;; Remove an extra newline inserted by myself. (goto-char (point-min)) (if (search-forward "\n\n\n" nil t) (delete-char -1)) ))) ;;;###autoload (defun metamail-interpret-body (&optional viewmode nodisplay) "Interpret a body part of a MIME message in current buffer. Optional argument VIEWMODE specifies the value of the EMACS_VIEW_MODE environment variable (defaulted to 1). Optional argument NODISPLAY non-nil means buffer is not redisplayed as output is inserted. Its header part is not interpreted at all." (interactive "p") (save-excursion (let ((contype nil) (encoding nil) (end (progn (goto-char (point-min)) (search-forward "\n\n" nil t) (point)))) ;; Find Content-Type and Content-Transfer-Encoding from the header. (save-restriction (narrow-to-region (point-min) end) (setq contype (or (mail-fetch-field "Content-Type") "text/plain")) (setq encoding (or (mail-fetch-field "Content-Transfer-Encoding") "7bit"))) ;; Interpret the body part only. (let ((metamail-switches ;Process body part only. (append metamail-switches (list "-b" "-c" contype "-E" encoding)))) (metamail-region end (point-max) viewmode nil nodisplay)) ;; Mode specific hack. (cond ((eq major-mode 'rmail-mode) ;; Adjust the marker of this message if in Rmail mode buffer. (set-marker (aref rmail-message-vector (1+ rmail-current-message)) (point-max)))) ))) ;;;###autoload (defun metamail-buffer (&optional viewmode buffer nodisplay) "Process current buffer through `metamail'. Optional argument VIEWMODE specifies the value of the EMACS_VIEW_MODE environment variable (defaulted to 1). Optional argument BUFFER specifies a buffer to be filled (nil means current). Optional argument NODISPLAY non-nil means buffer is not redisplayed as output is inserted." (interactive "p") (metamail-region (point-min) (point-max) viewmode buffer nodisplay)) ;;;###autoload (defun metamail-region (beg end &optional viewmode buffer nodisplay) "Process current region through 'metamail'. Optional argument VIEWMODE specifies the value of the EMACS_VIEW_MODE environment variable (defaulted to 1). Optional argument BUFFER specifies a buffer to be filled (nil means current). Optional argument NODISPLAY non-nil means buffer is not redisplayed as output is inserted." (interactive "r\np") (let ((curbuf (current-buffer)) (buffer-read-only nil) (metafile (make-temp-file "metamail")) (option-environment (list (format "EMACS_VIEW_MODE=%d" (if (numberp viewmode) viewmode 1))))) (save-excursion ;; Gee! Metamail does not ouput to stdout if input comes from ;; stdin. (let ((selective-display nil)) ;Disable ^M to nl translation. (write-region beg end metafile nil 'nomessage)) (if buffer (set-buffer buffer)) (setq buffer-read-only nil) ;; Clear destination buffer. (if (eq curbuf (current-buffer)) (delete-region beg end) (delete-region (point-min) (point-max))) ;; We have to pass the environment variable KEYHEADS to display ;; all header fields. Metamail should have an optional argument ;; to pass such information directly. (let ((process-environment (append process-environment metamail-environment option-environment)) (coding-system-for-read 'undecided)) (apply (function call-process) metamail-program-name nil t ;Output to current buffer (not nodisplay) ;Force redisplay (append metamail-switches (list "-m" (or metamail-mailer-name "emacs")) (list metafile)))) ;; `metamail' may not delete the temporary file! (condition-case error (delete-file metafile) (error nil)) ))) (provide 'metamail) ;;; metamail.el ends here