X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-def.el;h=b7b778d255fcdb467de2ea4e5715962694a6898a;hb=3f0a567153bcfb4b432c942ca352388616fcb056;hp=f86e8b9efae565995d4842db7c60739209f68971;hpb=c904b2aacf2051c0dbe4fc0fa18d4950b1ce5cf5;p=elisp%2Fsemi.git diff --git a/mime-def.el b/mime-def.el index f86e8b9..b7b778d 100644 --- a/mime-def.el +++ b/mime-def.el @@ -1,12 +1,11 @@ ;;; mime-def.el --- definition module for SEMI -;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc. +;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko -;; Version: $Id: mime-def.el,v 0.51 1997-06-21 04:06:17 morioka Exp $ ;; Keywords: definition, MIME, multimedia, mail, news -;; This file is part of SEMI (SEMI is Emacs MIME Interfaces). +;; This file is part of SEMI (Spadework for Emacs MIME Interfaces). ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -25,8 +24,35 @@ ;;; Code: -(require 'cl) (require 'emu) +(require 'custom) + +(defgroup mime nil + "Emacs MIME Interfaces" + :group 'news + :group 'mail) + +(custom-handle-keyword 'default-mime-charset :group 'mime + 'custom-variable) + +(unless (fboundp 'butlast) + (defun butlast (x &optional n) + "Returns a copy of LIST with the last N elements removed." + (if (and n (<= n 0)) x + (nbutlast (copy-sequence x) n))) + + (defun nbutlast (x &optional n) + "Modifies LIST to remove the last N elements." + (let ((m (length x))) + (or n (setq n 1)) + (and (< n m) + (progn + (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil)) + x)))) + ) + +(defconst semi-version '("Nishiizumi" 1 1 3) + "Version name and numbers of SEMI-kernel package.") (autoload 'mule-caesar-region "mule-caesar" "Caesar rotation of current region." t) @@ -51,30 +77,32 @@ (defconst mime-echo-buffer-name "*MIME-echo*" "Name of buffer to display MIME-playing information.") -(defconst mime/temp-buffer-name " *MIME-temp*") +(defconst mime-temp-buffer-name " *MIME-temp*") ;;; @ definitions about MIME ;;; -(defconst mime/tspecials "][\000-\040()<>@,\;:\\\"/?.=") -(defconst mime/token-regexp (concat "[^" mime/tspecials "]+")) -(defconst mime-charset-regexp mime/token-regexp) - -(defconst mime/content-type-subtype-regexp - (concat mime/token-regexp "/" mime/token-regexp)) +(defconst mime-tspecials "][()<>@,\;:\\\"/?=") +(defconst mime-token-regexp (concat "[^" mime-tspecials "\000-\040]+")) +(defconst mime-charset-regexp mime-token-regexp) -(defconst mime/disposition-type-regexp mime/token-regexp) +(defconst mime-media-type/subtype-regexp + (concat mime-token-regexp "/" mime-token-regexp)) ;;; @ button ;;; -(defvar mime-button-face 'bold - "Face used for content-button or URL-button of MIME-Preview buffer.") +(defcustom mime-button-face 'bold + "Face used for content-button or URL-button of MIME-Preview buffer." + :group 'mime + :type 'face) -(defvar mime-button-mouse-face 'highlight - "Face used for MIME-preview buffer mouse highlighting.") +(defcustom mime-button-mouse-face 'highlight + "Face used for MIME-preview buffer mouse highlighting." + :group 'mime + :type 'face) (defsubst mime-add-button (from to function &optional data) "Create a button between FROM and TO with callback FUNCTION and DATA." @@ -89,6 +117,21 @@ ;;(add-text-properties from to (list 'keymap widget-keymap)) )) +(defsubst mime-insert-button (string function &optional data) + "Insert STRING as button with callback FUNCTION and DATA." + (save-restriction + (narrow-to-region (point)(point)) + (insert (concat "[" string "]")) + ;; (widget-push-button-value-create + ;; (widget-convert 'push-button + ;; :notify (lambda (&rest ignore) + ;; (mime-preview-play-current-entity) + ;; ) + ;; string)) + (insert "\n") + (mime-add-button (point-min)(point-max) function data) + )) + (defvar mime-button-mother-dispatcher nil) (defun mime-button-dispatcher (event) @@ -144,12 +187,12 @@ FUNCTION.") (defmacro pgp-function (method) "Return function to do service METHOD." - (` (car (cdr (assq (, method) (symbol-value 'pgp-function-alist))))) + `(cadr (assq ,method (symbol-value 'pgp-function-alist))) ) (mapcar (function (lambda (method) - (autoload (second method)(third method)) + (autoload (cadr method)(nth 2 method)) )) pgp-function-alist)