[前のメッセージ (日付順)]  [次のメッセージ (日付順)]
[前のメッセージ (スレッド順)]  [次のメッセージ (スレッド順)]
[日付によるインデックス]  [スレッド・インデックス]  [記事検索]

Re: crude patch to toggle annotation display



>>>>>   [Sat, 22 Jan 2005 16:34:07 +0000 (UTC)]
>>>>>   key@xxxxxxxxxxxxx writes:

>  もう一通、三田です。


>  annotation と上手く付き合うための小さなパッチを作ってみました。
>  簡単なものですが、annotation を「見たい時だけ」見られることを目
> 標にしています。

三田さん,申し訳ございません.本当に.

今日発見したので若干の modification をして commit させていただきま
した.

変数は, skk-annotation-toggle-display-char のみ新設しました.あと
は skk-show-annotation の値で判断するようにしました.理由は,後のち
カスタマイズ機能を考えたときにその方が作りやすいからです.

現在の custom の機能でもこんな感じで設定できます.

> 変換時に註釈を表示する?:
>     ( ) 常に表示
>     ( ) 候補一覧では非表示
>     ( ) ミニバッファでは非表示
>     (*) 候補一覧とミニバッファでは非表示
>     ( ) 非表示

修正すべき点はご指摘いただけると幸いです.
Index: ChangeLog
===================================================================
RCS file: /circus/cvsroot/skk/main/ChangeLog,v
retrieving revision 1.914
diff -u -r1.914 ChangeLog
--- ChangeLog	11 Dec 2005 07:50:51 -0000	1.914
+++ ChangeLog	11 Dec 2005 11:34:57 -0000
@@ -1,3 +1,30 @@
+2005-01-23  MITA Yuusuke  <clefs@xxxxxxxxxxxxxx>
+
+	Modified on 2005-12-11 by Tetsuo Tsukamoto <czkmt@xxxxxxxxxxxxxxx>
+
+	* skk-annotation.el (skk-annotation-display-p):
+	(skk-annotation-toggle-display-p):
+
+	New functions.
+
+	(skk-annotation-show-1): When `skk-annotation-display-p' returns
+	nil for minibuf and SKK is in minibuffer, do not show notes.
+
+	* skk-cus.el (skk-cus-params-visual): Modify custom type for
+	skk-show-annotation.
+
+	* skk-vars.el (skk-show-annotation): Modify custom type.
+	Accept (not list) (not minibuf) or (not list minibuf).
+
+	(skk-annotation-toggle-display-char): New variable.
+
+	* skk.el (skk-henkan-show-candidates): If the last event is
+	skk-annotation-toggle-display-char, call
+	`skk-annotation-toggle-display-p'.
+
+	(skk-henkan-show-candidate-subr): When `skk-annotation-display-p'
+	returns nil for list, turn off notes.
+
 2005-12-11  Tetsuo Tsukamoto  <czkmt@xxxxxxxxxxxxxxx>
 
 	* experimental/bayesian/skk-bayesian.el:
Index: skk-annotation.el
===================================================================
RCS file: /circus/cvsroot/skk/main/skk-annotation.el,v
retrieving revision 1.25
diff -u -r1.25 skk-annotation.el
--- skk-annotation.el	23 Dec 2004 03:53:33 -0000	1.25
+++ skk-annotation.el	11 Dec 2005 11:34:57 -0000
@@ -189,6 +189,10 @@
    ((and skk-annotation-show-as-message
 	 (not (skk-in-minibuffer-p)))
     (skk-annotation-show-as-message annotation))
+   ((and (not (skk-annotation-display-p 'minibuf))
+	 (skk-in-minibuffer-p))
+    ;; do nothing
+    nil)
    (t
     (skk-annotation-show-buffer annotation))))
 
@@ -373,6 +377,42 @@
 	 (when (re-search-forward ";[^/]*" end t)
 	   (delete-region (match-beginning 0) (match-end 0))))))))
 
+;;;###autoload
+(defun skk-annotation-display-p (test)
+  (cond ((eq skk-show-annotation nil)
+	 nil)
+	((and (listp skk-show-annotation)
+	      (eq (car skk-show-annotation) 'not)
+	      ;; (not ...)
+	      (memq test skk-show-annotation))
+	 ;; (not list), (not minibuf) or (not list minibuf)
+	 nil)
+	(t
+	 ;; non-nil
+	 t)))
+
+;;;###autoload
+(defun skk-annotation-toggle-display-p ()
+  (interactive)
+  (cond ((eq skk-show-annotation nil)
+	 ;; do nothing
+	 nil)
+	((and (listp skk-show-annotation)
+	      (eq (car skk-show-annotation) 'not))
+	 ;; (not ...)
+	 (cond ((memq 'list skk-show-annotation)
+		(if (eq (length skk-show-annotation) 2)
+		    ;; (not list) -> t  i.e. turn on
+		    (setq skk-show-annotation t)
+		  ;; (not list minibuf) -> (not minibuf)
+		  (setq skk-show-annotation '(not minibuf))))
+	       (t
+		;; (not minibuf) -> (not list minibuf)  i.e. turn off
+		(setq skk-show-annotation '(not list minibuf)))))
+	(t
+	 ;; non-nil -> (not list)  i.e. turn off
+	 (setq skk-show-annotation '(not list)))))
+
 (defun skk-annotation-last-word-1 (function)
   ;; funcall FUNCTION with BEG and END where BEG and END are markers.
   (let ((inhibit-quit t)
Index: skk-cus.el
===================================================================
RCS file: /circus/cvsroot/skk/main/skk-cus.el,v
retrieving revision 1.17
diff -u -r1.17 skk-cus.el
--- skk-cus.el	1 Dec 2005 14:40:11 -0000	1.17
+++ skk-cus.el	11 Dec 2005 11:34:57 -0000
@@ -54,7 +54,14 @@
     (skk-japanese-message-and-error
      (const :tag "メッセージは日本語で通知する" t) "")
     (skk-show-annotation
-     (const :tag "変換時に註釈を表示する" t) "")))
+     (radio :tag "変換時に註釈を表示する?"
+	    (const :tag "常に表示" t)
+	    (const :tag "候補一覧では非表示" (not list))
+	    (const :tag "ミニバッファでは非表示" (not minibuf))
+	    (const :tag "候補一覧とミニバッファでは非表示"
+		   (not list minibuf))
+	    (const :tag "非表示" nil))
+     "")))
 
 (defconst skk-cus-params-ui
   '((skk-egg-like-newline
Index: skk-vars.el
===================================================================
RCS file: /circus/cvsroot/skk/main/skk-vars.el,v
retrieving revision 1.139
diff -u -r1.139 skk-vars.el
--- skk-vars.el	10 Dec 2005 03:54:00 -0000	1.139
+++ skk-vars.el	11 Dec 2005 11:34:58 -0000
@@ -3272,15 +3272,25 @@
 (defvar skk-lookup-module-list nil)
 (defvar skk-lookup-prefix-and-kana-map nil)
 
-;; SKK-ANNORTATION related variables.
+;; SKK-ANNOTATION related variables.
 (defcustom skk-show-annotation nil
   "*Non-nil であれば、註釈を表示する。
 辞書の候補に含まれる `;' 以降の文字列を変換の際、注記として\
 エコーエリア、または別 Window に表示する。"
-  :type 'boolean
+  :type '(radio (const :tag "常に表示" t)
+		(const :tag "候補一覧では非表示" (not list))
+		(const :tag "ミニバッファでは非表示" (not minibuf))
+		(const :tag "候補一覧とミニバッファでは非表示"
+		       (not list minibuf))
+		(const :tag "非表示" nil))
   :group 'skk-annotation
   :group 'skk-misc)
 
+(defcustom skk-annotation-toggle-display-char ?^
+  "*エコーエリアで候補表示中にアノテーション表示を切り替えるキーキャラクタ。"
+  :type 'character
+  :group 'skk-keybinds)
+
 (defcustom skk-annotation-function nil
   "*annotation を表示するかどうかのチェック時にコールされる関数。
 non-nil を返すと annotation を表示する。annotation の対象とする文字列
Index: skk.el
===================================================================
RCS file: /circus/cvsroot/skk/main/skk.el,v
retrieving revision 1.309
diff -u -r1.309 skk.el
--- skk.el	11 Dec 2005 06:42:28 -0000	1.309
+++ skk.el	11 Dec 2005 11:34:58 -0000
@@ -1863,6 +1863,8 @@
 		      (t
 		       ;; 一つ前の候補群をエコーエリアに表示する。
 		       (setq reverse t))))
+		    ((eq char skk-annotation-toggle-display-char)
+		     (skk-annotation-toggle-display-p))
 		    ((skk-key-binding-member
 		      key
 		      '(keyboard-quit
@@ -1903,15 +1905,22 @@
 	    (while (> max-candidates count)
 	      (setq e (nth count candidates))
 	      (if e
-		  (setq v (cons (progn
-				  (when (and (skk-numeric-p) (consp e))
-				    (setq e (cdr e)))
-				  (cond
-				   ((not (skk-lisp-prog-p e))
-				    e)
-				   ((skk-eval-string e))
-				   (t e)))
-				v)
+		  (setq v (cons
+			   (progn
+			     (when (and (not (skk-annotation-display-p 'list))
+					(string-match ";" e))
+					;; annotation の存在だけを知らせる。
+			       (setq e (concat
+					(substring e 0 (match-beginning 0))
+					";")))
+			     (when (and (skk-numeric-p) (consp e))
+			       (setq e (cdr e)))
+			     (cond
+			      ((not (skk-lisp-prog-p e))
+			       e)
+			      ((skk-eval-string e))
+			      (t e)))
+			   v)
 			count (1+ count))
 		(setq count max-candidates)))
 	    (nreverse v)))
-- 
Tetsuo Tsukamoto