[Mew-dist 07738] mew-ff.el in 1.94b9

OBATA Noboru obata at example.com
1999年 2月 25日 (木) 14:43:19 JST


小幡です。

contrib/ に置いて頂いた mew-ff.el (定型文を挿入する) ですが、残
念ながら今のままでは、次のように怒られます。
Symbol's function definition is void: mew-fib-fill-by-alist

mew-ff.el を利用するためには、mew-fib.el に添付のパッチをあてな
いといけません。([Mew-dist 07559] で添付したものに僅かな修正をし
ています) このパッチも採用して頂けると嬉しいです。

パッチで修正される点は次のとおりです。今までの使い方をする限りで
は、動作に違いはない(はず)です。

- mew-fib-item-file から連想配列を作る処理と、連想配列から実際の
  置換を行う処理を分けました。後者を mew-ff.el から利用します。

- その置換処理で、置換後の文字列として変数や関数を記述できるよう
  にしました。([Mew-dist 07528] の後藤さんのコードを拝借しました)

-- 
小幡 昇 (obata at example.com)
-------------- next part --------------
--- mew-fib.el.orig	Mon Aug 24 23:45:18 1998
+++ mew-fib.el	Thu Feb 25 14:31:14 1999
@@ -11,7 +11,6 @@
 (require 'mew-func)
 
 (defvar mew-fib-item-file "~/.mew-fib")
-(defvar mew-fib-item-alist nil)
 
 (defun mew-fib-split (str)
   (let (ret match)
@@ -28,7 +27,6 @@
   (save-excursion
     (let ((fib-file (expand-file-name mew-fib-item-file))
 	  item val ret tmp-val)
-      (setq mew-fib-item-alist nil)
       (mew-set-buffer-tmp)
       (if (file-exists-p fib-file)
 	  (insert-file-contents fib-file))
@@ -43,12 +41,11 @@
 			       (mew-fib-split item)))))
       ret)))
 
-(defun mew-fib-fill-default ()
-  "Fill |>item<| from .mew-fib."
+(defun mew-fib-fill-by-alist (alist)
+  "Fill |>item<| by alist."
   (interactive)
   (save-excursion
     (let (begin end str)
-      (setq mew-fib-item-alist (mew-fib-make-alist))
       (goto-char (point-min))
       (while (re-search-forward "|>\\([^<]+\\)<|" nil t)
 	(setq begin (match-beginning 1)
@@ -56,8 +53,23 @@
 	      str (buffer-substring begin end))
 	(delete-region begin end)
 	(backward-char 2)
-	(insert (or (cdr (assoc (downcase str) mew-fib-item-alist)) str)))
-    )))
+	(insert (let ((obj (cdr (assoc (downcase str) alist))))
+                  (cond
+		   ((null obj) str)
+		   ((stringp obj) obj)
+		   ((functionp obj) (funcall obj))
+		   ((symbolp obj)
+		    (if (fboundp obj) (funcall obj)
+		      (if (and (boundp obj)
+			       (stringp (symbol-value obj)))
+			  (symbol-value obj))))
+                   (t str)))))
+      )))
+
+(defun mew-fib-fill-default ()
+  "Fill |>item<| from .mew-fib."
+  (interactive)
+  (mew-fib-fill-by-alist (mew-fib-make-alist)))
 
 (defun mew-fib-delete-frame ()
   "Delete all quotations, i.e. |> <|."


Mew-dist メーリングリストの案内