[Mew-Win32 00204] Re: text/x-rot13-47-48
Hideyuki SHIRAI
Shirai at example.com
1998年 2月 9日 (月) 13:28:21 JST
白井です。
From: 山口 さん曰く
Subject: [Mew-Win32 00203] Re: text/x-rot13-47-48
Message-ID: <19980209123644V.yamagus at example.com>
Date: Mon, 9 Feb 1998 12:35:27 +0900
山口> Shirai> 2.2. "R"で、"F"モードの様な感じで"xxx.rot"というファイルをオープ
山口> Shirai> ンするようにしました。"\C-cr"でそのバッファをcaesar符号化します。
山口> Shirai>
山口> Shirai> # もともと、"F"でマルチパートなメールを作るのがめんどくさいので、
山口> Shirai> # "R"もめんどくさいインタフェースですけれど。
山口> Shirai> # 少しは楽かな、ということで。
山口>
山口> おー、とってもいい感じです。 :-)
どうもどうもです。読むだけじゃつまらないので『どうしようかなぁ』
と結構考えたところです。
山口> 設定例のコメントなんですが、個人的に思った点を少し。
山口> 1. (define-key ...)は、全部mew-init-hook内でOKだと思います。
山口> 意味的には現状の方がいいかもしれませんが…。
そのようですね。
# 実は、それぞれのhookでちゃんと定義しないといけないのかと思っていた。^^;
# 覚えていてくれるとは知らなかったのです。
山口> 2. (define-key mew-virtual-mode-map "\C-cr" 'mew-summary-insert-xrot)
山口> もあると、virtual-modeでもワクワクです。
すっかり忘れていました。Thank you です。
山口> 3. コメントじゃなくて、標準設定にしちゃっていいと思います。
というわけで、もともと、mew-caesar 自体が mew-initの中で、
require や load されるものなので add-hook を外しました。
X-Rot13のに平文でコメントしてしまいますが……
山口> Shirai> 調子にのって(そそのかされて?)作ってみました。
山口> Shirai> # まとわりつく子供たちを足げにしながら、土曜日に書いた……
山口>
山口> 家族を犠牲にしてまで…。 ^^;
日曜日には家族サービスしたもん。
# だから大丈夫というものでも無いけれども。
山口> 私のPC、大掃除しても異音がとまりません。 ;_;
山口> なんだか、電源ファンじゃなくディスクのような気もしてきました…。
山口> #でも、ケース開けると音がしなくて、どこから出てるのかわからない。 ;_;
会社の愛機のSS-20/M152なのですが、半年に一度はふたを空けて掃除し
ないと、とたんに機嫌が悪くなります。
よく落ちるようになったけど、原因がわからなかったときがあるのです
が、CPUボード(2枚がさね)の下側の放熱板にびっちりとつまった埃を見
たときは、ちょっと、衝撃的でした。
# ^^;;; と冷汗がたら〜〜り。
## それまでも何回かふたを開けてファン回りとか掃除したのだけど、
## 見えないCPUボードは盲点でした。
### これに気付くまで、結構時間かかったし。
ケースを開けると音がしないのは、やっぱりファン+空気の流れが原因
ではないのでしょうか。最近のPC-ATはファンが止まると、まず、HDが
ダメージ受けるという噂を聞いたことがあります。
# で、うちの研究所長のPCのHDが、この間壊れた。
-------------- next part --------------
;; -*- emacs-lisp -*-
;; mew-caesar.el --- Caesarean rotation package for Mew.
;;
;; "Hideyuki SHIRAI" <Shirai at example.com>
;; Created: "02/07/1998"
;; Revised: "02/08/1998"
;; Don't byte-compile this file.
;;
;; To use mew-caesar.el, install (tm|SEMI) package
;; , and, put the following codes in your .emacs.
;;
;; (add-hook 'mew-init-hook
;; (lambda ()
;; (require 'mew-caesar)))
;;
;; (setq mew-caesar-use-tm t|nil)
;; ;; caesar package select t => tm:caesar-region
;; ;; nil => mule-caesar-region
;;
(defconst mew-caesar-version "mew-caesar.el 0.10")
(defvar mew-caesar-use-tm nil
"nil require \"SEMI\", t require \"tm\".")
(define-key mew-summary-mode-map "\C-cr" 'mew-summary-insert-xrot)
(define-key mew-virtual-mode-map "\C-cr" 'mew-summary-insert-xrot)
(define-key mew-draft-attach-map "R" 'mew-attach-find-new-rotfile)
(setq mew-mime-content-type-text-list
(append
'("Text/X-Rot13-47-48")
mew-mime-content-type-text-list))
(setq mew-mime-content-type-list
(append
'("Text/X-Rot13-47-48")
mew-mime-content-type-list))
(setq mew-mime-content-type
(append
'(("text/x-rot13-47-48" "\\.rot$" nil mew-prog-xrot mew-icon-text)
("text/x-rot13.*" "\\.rot$" nil mew-prog-xrot mew-icon-text))
mew-mime-content-type))
(defvar mew-prog-xrot '(mew-mime-text/x-rot () nil))
(defconst mew-ct-rot13 "Text/X-Rot13-47-48")
(defconst mew-rot13-suffix ".rot")
(defun mew-mime-text/x-rot (begin end &optional params)
(if (> end begin)
(save-excursion
(set-buffer (mew-buffer-message))
(let ((buffer-read-only nil))
(insert " # # ###### ####### ####### # #####\n"
" # # # # # # # ## # #\n"
" # # # # # # # # # #\n"
" # ##### ###### # # # # #####\n"
" # # # # # # # # #\n"
" # # # # # # # # # #\n"
" # # # # ####### # ##### #####\n"
"\n")
(insert "To save this part, type "
(substitute-command-keys
"\\<mew-summary-mode-map>\\[mew-summary-save].")
"\nTo display this part in Message mode, type "
(substitute-command-keys
"\\<mew-summary-mode-map>\\[mew-summary-insert-xrot]."))
(insert "\n\n-------------------- Original \"X-ROT13\" follows --------------------\n")
(insert-buffer-substring (mew-current-get 'cache) begin end)
))))
(defun mew-summary-insert-xrot ()
(interactive)
(let* ((ofld-msg (mew-current-get 'message))
(msg (mew-summary-message-number))
(part (mew-summary-part-number))
(buf (buffer-name)))
(if (or msg (not part))
(let ((mew-analysis nil))
(mew-summary-display))
(unwind-protect
(progn
(mew-summary-toggle-disp-msg 'on)
(mew-window-configure buf 'message)
(set-buffer (mew-buffer-message))
(let* ((buffer-read-only nil)
(syntax (mew-cache-decode-syntax (mew-cache-hit ofld-msg)))
(stx (mew-syntax-get-entry-strnum syntax part))
(begin (mew-syntax-get-begin stx))
(end (mew-syntax-get-end stx)))
(erase-buffer)
(insert-buffer-substring (mew-current-get 'cache) begin end)
(goto-char (point-min))
(mew-whole-buffer-caesar)))
(pop-to-buffer buf)))
))
(defun mew-attach-find-new-rotfile ()
"Open a new Caesar rotation file into a buffer on \".\" in attachments."
(interactive)
(if (not (mew-attach-not-line012-1))
(message "Can't find a new file here.")
(let* ((nums (mew-attach-nums))
(subdir (mew-attach-expand-path mew-encode-syntax nums))
(mimedir (mew-expand-folder (mew-draft-to-mime (buffer-name))))
file filepath)
;; mimedir / {subdir/} dir
(if (not (equal subdir ""))
(setq mimedir (expand-file-name subdir mimedir)))
;; mimedir / file
(setq filepath (mew-random-filename mimedir mew-rot13-suffix))
(if (null filepath)
(message "Could not make a text file, sorry.")
(setq file (file-name-nondirectory filepath))
(setq mew-encode-syntax
(mew-syntax-insert-entry
mew-encode-syntax
nums
(mew-encode-syntax-single file (list mew-ct-rot13))))
(mew-encode-syntax-print mew-encode-syntax)
;;
(find-file filepath)
(message " Don't forget \"mew-whole-buffer-caesar(\C-cr)\".")
;; buffer switched
(local-set-key "\C-c\C-q" 'mew-kill-buffer)
(local-set-key "\C-cr" 'mew-whole-buffer-caesar)
))
))
(defun mew-whole-buffer-caesar ()
"Caesar rotation in whole buffer."
(interactive)
(let ()
(save-excursion
(if mew-caesar-use-tm
(progn
(require 'tm-def)
(mark-whole-buffer)
(tm:caesar-region))
(progn
(require 'mule-caesar)
(mule-caesar-region (point-min) (point-max)))))))
(provide 'mew-caesar)
;;
Mew-win32 メーリングリストの案内