上原です。
stkユーザの皆様、あけましておめでとうございます。
新年お楽しみ企画と題しまして、

「ハンドルの宛先をwnnの漢字変換時みたく選択するパッチ(非公式)」

を作りました。

【patchのあて方】

このメールの後ろの方を切り取って、例えばpatというファイル名でセーブし、
stk.elのあるディレクトリで

     patch < pat

とするとstk.elが書き変わります。もとのstk.elを保存しておく事を忘れない
ように。

【使い方】

     >

がハンドルの選択コマンドに割り当てられます。選択中に止めたいときは

     C-g

を押せばいいです。">"自体を入力したい時は

    C-q >

で良いでしょう。cannaを使っている場合、フェンスモードでの

     >

が確定とハンドル選択を行います。


【問題点】

cannaを使っている場合、 wnnを読み込む事でなんかcannaが動かなくなるんで、
改めてM-x cannaしてください。

【余談】

wnn v4のメニュー関数を使ってますので、古いnemacsでは動くかどうか…。ま
たメニュー関数を使うために eggのパッケージまるごとロードしているので 
cannaの利用者にとっては非効率窮まりないです。なぜこういうふうにしたか
というと cannaのメニュー関数の利用方法が分からなかったからです。本来な
らメニュー関数を自前で書き下したりするのが環境に依存しなくていいと思い
ます。
【実行確認】

実行確認はcanna版muleで行いました。


*** stk.el.org  Fri Oct 15 10:12:49 1993
--- stk.el      Tue Jan  4 23:21:48 1994
***************
*** 350,355 ****
--- 350,360 ----
  ;;; chat (rtc or cb at nifty) mode
  ;;; 
  
+ (if (boundp 'WNN4)
+     nil
+   (require 'egg)
+   (load "wnn4-egg"))
+ 
  (defvar handle-regexp-list nil) ;; see pickup-handle
  (defvar reply-regexp-list nil) ;; see auto-reply
  (defvar handle-list nil) ; see clear-handle-list
***************
*** 361,369 ****
  (defvar chat-mode-map nil)
  (defvar chat-saving-config nil)
  
! (defvar handle-calling-prefix ">")
! (defvar handle-calling-postfix "")
! (defvar chat-window-height 4)
  (defvar handle-window-width 16)
  
  (defvar kermit-reply-list 
--- 366,374 ----
  (defvar chat-mode-map nil)
  (defvar chat-saving-config nil)
  
! (defvar handle-calling-prefix "＞")
! (defvar handle-calling-postfix "さん")
! (defvar chat-window-height 10)
  (defvar handle-window-width 16)
  
  (defvar kermit-reply-list 
***************
*** 516,522 ****
    (auto-reply-body kermit-reply-list))
  
  (defvar is-window-handle nil)
! (defvar handle-window-visible t)
  
  (defun stk-switch-handle ()
    (interactive)
--- 521,527 ----
    (auto-reply-body kermit-reply-list))
  
  (defvar is-window-handle nil)
! (defvar handle-window-visible nil)
  
  (defun stk-switch-handle ()
    (interactive)
***************
*** 524,529 ****
--- 529,585 ----
    (setup-screen)
    handle-window-visible)
  
+ ;;
+ ;; 宛先ハンドル指定のメニュー選択
+ ;; '94 1/4 by J.Uehara
+ ;; 
+ (defun grep(expr list)
+   "perlのgrep関数、のようなもの"
+   (cond ((null list)
+        nil)
+       ((apply expr (list (car list)))
+        (cons (car list)
+              (grep expr (cdr list))))
+       (t
+        (grep expr (cdr list)))
+       ))
+ 
+ (defun popup-used-handle(item list)
+   "ハンドルリストLISTの先頭にITEMを移動。すげえ効率が悪い ^^;"
+   (append
+    (grep '(lambda (x) (string= item (car (cdr x)))) list)
+    (grep '(lambda (x) (not (string= item (car (cdr x))))) list)))
+ 
+ (defun chat-select-and-insert-handle(arg)
+   "発言の宛先をメニューから選択する"
+   (interactive "p")
+   (condition-case
+       ERR
+       (let ((select
+            ;; wnnのかな漢字変換メニュー関数だよ
+            (menu:select-from-menu
+             (list 'menu
+                   "ハンドル:"
+                   (mapcar '(lambda (e) (car (cdr e)))
+                           handle-list)))))
+       ;; 選択したハンドルにprefixとpostfixをつけて挿入
+       (insert-string handle-calling-prefix
+                      select
+                      handle-calling-postfix)
+       ;; 選択したハンドルを候補のトップに
+       (setq handle-list (popup-used-handle select handle-list)))
+     (quit
+        (self-insert-command arg))))
+ 
+ ;; cannaのフェンスモードで同様に">"を使うためのハッキング
+ (if (boundp 'CANNA)
+     (define-key canna-mode-map ">"
+       '(lambda (arg) (interactive "p")
+        (let ((last-command-char 13))
+          (canna-functional-insert-command arg))
+        (canna-do-function canna-func-kakutei)
+        (chat-select-and-insert-handle arg))))
+ 
  (defun setup-screen()
    "Setup and redraw screen all."
    (interactive)
***************
*** 634,639 ****
--- 690,696 ----
    (define-key chat-mode-map "\C-cf" 'get-char)
    (define-key chat-mode-map "\C-c\C-c" 'kermit-send-command)
    (define-key chat-mode-map "\C-c\C-q" 'chat-quit)
+   (define-key chat-mode-map ">" 'chat-select-and-insert-handle)
  
    (setq chat-saving-config (current-window-configuration))
    (setq kermit-filter-hook nil)  ;; うううう
***************
*** 802,808 ****
          (kermit-send-string 
           (format "%s[%02d:%02d:%02d]" 
                   stk-string hour minute second))
!         (kermit-send-string "/ust2")
          (kermit-send-string "/u")
          (sit-for stk-time)
          (setq second (+ second stk-time))
--- 859,865 ----
          (kermit-send-string 
           (format "%s[%02d:%02d:%02d]" 
                   stk-string hour minute second))
! ;       (kermit-send-string "/ust2")
          (kermit-send-string "/u")
          (sit-for stk-time)
          (setq second (+ second stk-time))
-----------------------------------------------
January (GCC03454, uehara@yh.ntts.co.jp)
