X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-play.el;h=7cccb51bcbbd2aad3bff952945735fe0a4ca632c;hb=ace2649e360bb4cde7a008d8fdeff56322866269;hp=25610c09424e36de27944af1911afb6a27dba6cf;hpb=579918fb4ea3379e8f99a3d44b03283e6bc9a3ea;p=elisp%2Fsemi.git diff --git a/mime-play.el b/mime-play.el index 25610c0..7cccb51 100644 --- a/mime-play.el +++ b/mime-play.el @@ -29,9 +29,9 @@ (require 'mime-view) (require 'alist) (require 'filename) +(require 'ccl) (eval-when-compile - (require 'mime-text) (condition-case nil (require 'bbdb) (error (defvar bbdb-buffer-name nil))) @@ -51,7 +51,7 @@ (erase-buffer) (insert ";;; " (file-name-nondirectory file) "\n") (insert "\n;; This file is generated automatically by " - mime-view-version-string "\n\n") + mime-view-version "\n\n") (insert ";;; Code:\n\n") (pp `(setq mime-acting-situation-example-list ',mime-acting-situation-example-list) @@ -229,7 +229,7 @@ specified, play as it. Default MODE is \"play\"." (if (cdr ret) (let ((rest ret) (max-score 0) - max-escore + (max-escore 0) max-examples max-situations) (while rest @@ -325,9 +325,9 @@ specified, play as it. Default MODE is \"play\"." (name (mime-entity-safe-filename entity))) (setq name (if (and name (not (string= name ""))) - (expand-file-name name mime-temp-directory) + (expand-file-name name temporary-file-directory) (make-temp-name - (expand-file-name "EMI" mime-temp-directory)) + (expand-file-name "EMI" temporary-file-directory)) )) (mime-write-entity-content entity name) (message "External method is starting...") @@ -352,7 +352,8 @@ specified, play as it. Default MODE is \"play\"." (remove-alist 'mime-mailcap-method-filename-alist process) (message (format "%s %s" process event))) -(defvar mime-echo-window-is-shared-with-bbdb t +(defvar mime-echo-window-is-shared-with-bbdb + (module-installed-p 'bbdb) "*If non-nil, mime-echo window is shared with BBDB window.") (defvar mime-echo-window-height @@ -370,23 +371,22 @@ window.") "Show mime-echo buffer to display MIME-playing information." (get-buffer-create mime-echo-buffer-name) (let ((the-win (selected-window)) - (win (get-buffer-window mime-echo-buffer-name)) + (win (get-buffer-window mime-echo-buffer-name))) + (unless win + (unless (and mime-echo-window-is-shared-with-bbdb + (condition-case nil + (setq win (get-buffer-window bbdb-buffer-name)) + (error nil))) + (select-window (get-buffer-window mime-preview-buffer)) + (setq win (split-window-vertically + (- (window-height) + (if (functionp mime-echo-window-height) + (funcall mime-echo-window-height) + mime-echo-window-height) + ))) ) - (or win - (if (and mime-echo-window-is-shared-with-bbdb - (boundp 'bbdb-buffer-name) - (setq win (get-buffer-window bbdb-buffer-name)) - ) - (set-window-buffer win mime-echo-buffer-name) - (select-window (get-buffer-window mime-preview-buffer)) - (setq win (split-window-vertically - (- (window-height) - (if (functionp mime-echo-window-height) - (funcall mime-echo-window-height) - mime-echo-window-height) - ))) - (set-window-buffer win mime-echo-buffer-name) - )) + (set-window-buffer win mime-echo-buffer-name) + ) (select-window win) (goto-char (point-max)) (if forms @@ -544,7 +544,7 @@ It is registered to variable `mime-preview-quitting-method-alist'." (goto-char (mime-entity-point-min entity)) (let* ((root-dir (expand-file-name - (concat "m-prts-" (user-login-name)) mime-temp-directory)) + (concat "m-prts-" (user-login-name)) temporary-file-directory)) (id (cdr (assoc "id" cal))) (number (cdr (assoc "number" cal))) (total (cdr (assoc "total" cal))) @@ -680,7 +680,7 @@ It is registered to variable `mime-preview-quitting-method-alist'." (search-forward name) )) -(defvar mime-raw-browse-url-function (function mime-browse-url)) +(defvar mime-raw-browse-url-function mime-browse-url-function) (defun mime-view-message/external-url (entity cal) (let ((url (cdr (assoc "url" cal)))) @@ -691,6 +691,14 @@ It is registered to variable `mime-preview-quitting-method-alist'." ;;; @ rot13-47 ;;; +(define-ccl-program translate-string + '(4 + (loop + (read-multibyte-character r1 r2) + (translate-character r0 r1 r2) + (write-multibyte-character r1 r2) + (repeat)))) + (defun mime-view-caesar (entity situation) "Internal method for mime-view to display ROT13-47-48 message." (let* ((new-name (format "%s-%s" (buffer-name) @@ -705,8 +713,27 @@ It is registered to variable `mime-preview-quitting-method-alist'." ) (setq buffer-read-only nil) (erase-buffer) - (mime-text-insert-decoded-body entity) + (let ((enable-character-translation nil)) + (mime-insert-text-content entity)) (mule-caesar-region (point-min) (point-max)) + (let ((str (buffer-string)) + (status (make-vector 9 nil)) + (table + (catch 'tbl + (let ((i 0) e) + (while (and (< i (length translation-table-vector)) + (setq e (aref translation-table-vector i))) + (if (eq (cdr e) standard-translation-table-for-decode) + (throw 'tbl i)) + (setq i (1+ i))) + nil)))) + (when table + (aset status 0 table) + (delete-region (point-min) (point-max)) + (insert (ccl-execute-on-string + 'translate-string + status + str)))) (set-buffer-modified-p nil) (set-buffer mother) (view-buffer new-name)