[Mew-dist 2340] From complete

H.Shirai/ 白井秀行 Shirai at example.com
1997年 10月 2日 (木) 20:46:20 JST


白井です。

Config:のcompleteを真似して、From:のcompleteを作ってみました。

From:のあとのスペースの処理がなんだなぁとは思っているのですが、
とりあえず動いているので、どなたかもっと素敵にして下さるとありが
たいです。

# これ以上のelispの知識は、私にはないもので。f(^^)

.emacsに
(setq mew-froms
      (cons mew-from
	    '("Hideyuki.Shirai <Shirai at example.com>"
	      "秀 <hide at example.com>"
	      "ほげほげ <hoge at example.com>"
	      )))
と書いて使います。

1.92b1からのdiffをつけます。

-------------- next part --------------
*** mew-1.92/mew-complete.el	Wed Aug  6 15:09:24 1997
--- mew-1.92+shirai//mew-complete.el	Thu Oct  2 20:16:13 1997
***************
*** 30,36 ****
      ("Dcc:"      . mew-complete-address)
      ("Bcc:"      . mew-complete-address)
      ("Reply-To:" . mew-complete-address)
!     ("From:"     . mew-complete-address)
      ("Fcc:"      . mew-complete-folder)
      ("Config:"   . mew-complete-config))
    "*Completion function alist concerned with the key"
--- 30,37 ----
      ("Dcc:"      . mew-complete-address)
      ("Bcc:"      . mew-complete-address)
      ("Reply-To:" . mew-complete-address)
! ;;    ("From:"     . mew-complete-address)
!     ("From:"     . mew-complete-from)
      ("Fcc:"      . mew-complete-folder)
      ("Config:"   . mew-complete-config))
    "*Completion function alist concerned with the key"
***************
*** 106,111 ****
--- 107,150 ----
      (display-completion-list all))
    )
  
+ ;; complete-from's
+ (defun mew-complete-from ()
+   (interactive)
+   (let ((word (mew-delete-field-content)))
+     (if (null word)
+ 	(if mew-from (insert mew-from))
+       (mew-complete
+        word
+        (mew-slide-pair mew-froms)
+        "from"
+        t) ;; use cdr
+       )))
+ 
+ (defun mew-delete-field-content ()
+   (end-of-line)
+   (let ((end (point)))
+     (beginning-of-line)
+     (if (eq (re-search-forward "^[A-Za-z][-A-Za-z0-9]*\: +" end t) nil)
+ 	(if (eq (re-search-forward "^[A-Za-z][-A-Za-z0-9]*\:" end t) nil)
+ 	    nil
+ 	  (let ((start (point)))
+ 	    (if (= start end)
+ 		(insert " ")
+ 	      (prog1
+ 		  (mew-buffer-substring start end)
+ 		(delete-region start end)
+ 		(insert " ")
+ 		(end-of-line)
+ 		))))
+       (let ((start (point)))
+ 	(if (= start end)
+ 	    nil
+ 	  (prog1
+ 	      (mew-buffer-substring start end)
+ 	    (delete-region start end)
+ 	    (end-of-line)
+ 	    ))))))
+ 
  ;;
  ;; Completion function
  ;;


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