diff lisp/egg/egg.el @ 215:1f0dabaa0855 r20-4b6

Import from CVS: tag r20-4b6
author cvs
date Mon, 13 Aug 2007 10:07:35 +0200
parents e45d5e7c476e
children 262b8bb4a523
line wrap: on
line diff
--- a/lisp/egg/egg.el	Mon Aug 13 10:06:48 2007 +0200
+++ b/lisp/egg/egg.el	Mon Aug 13 10:07:35 2007 +0200
@@ -64,8 +64,8 @@
 ; last master version
 ;;; (defvar egg-version "3.09" "Version number of this version of Egg. ")
 ;;; Last modified date: Fri Sep 25 12:59:00 1992
-(defvar egg-version "3.09 xemacs" "Version number of this version of Egg. ")
-;;; Last modified date: Wed Feb 05 20:45:00 1997
+(defvar egg-version "3.10 xemacs" "Version number of this version of Egg. ")
+;;; Last modified date: Wed Nov 29 20:45:00 1997
 
 ;;;;  修正要求リスト
 
@@ -73,6 +73,13 @@
 
 ;;;;  修正メモ
 
+;;; 97.10.29 modified by J.Hein <jareth@camelot-soft.com>
+;;; fix to get rid of problem with C-h/backspace fuckage when in fence mode. Note
+;;; that the entire egg-read-event thing is a hack and really needs to be re-implemented.
+;;; I REALLY don't like the bandaids there...
+;;; Also added the egg-mode function, and modified the behavior so that just loading
+;;; egg will not change the user's state.
+
 ;;; 97.2.05 modified by J.Hein <jhod@po.iijnet.or.jp>
 ;;; Lots of mods to make it XEmacs workable. Most fixes revolve around the fact that
 ;;; Mule/et al assumes that all events are keypress events unless specified otherwise.
@@ -406,7 +413,8 @@
 	ch key)
     (next-command-event event)
     (setq key (event-key event))
-    (if (key-press-event-p event)
+    (if (and (key-press-event-p event) 
+	     (not (event-matches-key-specifier-p event 'backspace)))
 	(if (eq 0 (event-modifier-bits event))
 	    (setq ch (or (event-to-character event) key))
 	  (if (eq 1 (event-modifier-bits event))
@@ -2177,10 +2185,6 @@
 	  egg:*input-mode* (default-value 'egg:*input-mode*)
 	  egg:*in-fence-mode* (default-value 'egg:*in-fence-mode*))))
   
-(if (boundp 'select-window-hook)
-    (add-hook 'select-window-hook 'egg:select-window-hook)
-  (add-hook 'minibuffer-exit-hook 'egg:minibuffer-exit-hook)
-  (add-hook 'minibuffer-entry-hook 'egg:minibuffer-entry-hook))
 
 ;;;
 ;;;
@@ -2188,36 +2192,7 @@
 
 (defvar its:*reset-modeline-format* nil)
 
-(if its:*reset-modeline-format*
-    (setq-default modeline-format
-		  (cdr modeline-format)))
-
-(if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
-    (setq-default 
-     modeline-format
-     (cons (list 'display-minibuffer-mode-in-minibuffer
-		 ;;; minibuffer mode in minibuffer
-		 (list 
-		  (list 'its:*previous-map* "<" "[")
-		  'mode-line-egg-mode
-		  (list 'its:*previous-map* ">" "]")
-		  )
-		       ;;;; minibuffer mode in mode line
-		 (list 
-		  (list 'minibuffer-window-selected
-			(list 'display-minibuffer-mode
-			      "m"
-			      " ")
-			" ")
-		  (list 'its:*previous-map* "<" "[")
-		  (list 'minibuffer-window-selected
-			(list 'display-minibuffer-mode
-			      'mode-line-egg-mode-in-minibuffer
-			      'mode-line-egg-mode)
-			'mode-line-egg-mode)
-		  (list 'its:*previous-map* ">" "]")
-		  ))
-	   modeline-format)))
+
 
 ;;;
 ;;; minibuffer でのモ・踉札鰭拾踉雑をするために nemacs 4 で定義された 
@@ -2246,7 +2221,6 @@
 	  mode-line-egg-mode str))
   (redraw-modeline t))
 
-(mode-line-egg-mode-update mode-line-egg-mode)
 
 ;;;
 ;;; egg mode line display
@@ -2583,6 +2557,7 @@
        (detach-extent egg:*fence-extent*) ))
 
 (defun enter-fence-mode ()
+
   ;; XEmacs change:
 ;  (buffer-disable-undo (current-buffer))
   (undo-boundary)
@@ -2704,8 +2679,9 @@
 ;; jhod: This seems bogus to me, as it should be called either after each
 ;; egg-self-insert, or after accepting input, but not both. Otherwise, I can't
 ;; really think of a use for it.
-(defvar egg-insert-after-hook nil "Hook to run when egg inserts a character
-in the buffer")
+(defvar egg-insert-after-hook nil
+  "Hook to run when egg inserts a character in the buffer")
+
 (make-variable-buffer-local 'egg-insert-after-hook)
 
 (defvar egg-exit-hook nil
@@ -2780,14 +2756,12 @@
   (egg:mode-line-display))
 
 (defun fence-mode-help-command ()
-  "Display documentation for fence-mode."
-  (interactive)
-  (let ((buf "*Help*"))
-    (if (eq (get-buffer buf) (current-buffer))
-	(henkan-quit)
-      (with-output-to-temp-buffer buf
-	(princ (substitute-command-keys "The keys that are defined for the fence mode here are:\\{fence-mode-map}"))
-	(print-help-return-message)))))
+  "Display fence mode help"
+  (interactive "_")
+  (let ((w (selected-window)))
+    (describe-function 'egg-mode)
+    (ding)
+    (select-window w)))
 
 (defvar fence-mode-map (make-keymap))
 
@@ -2815,7 +2789,6 @@
 (define-key fence-mode-map "\C-e" 'fence-end-of-line)
 (define-key fence-mode-map "\C-f" 'fence-forward-char)
 (define-key fence-mode-map "\C-g" 'fence-cancel-input)
-(define-key fence-mode-map "\C-h" 'fence-mode-help-command)
 (define-key fence-mode-map "\C-k" 'fence-kill-line)
 (define-key fence-mode-map "\C-l" 'fence-exit-mode)
 (define-key fence-mode-map "\C-m" 'fence-exit-mode)  ;;; RET
@@ -2828,7 +2801,8 @@
 (define-key fence-mode-map "\C-_" 'jis-code-input)
 (define-key fence-mode-map "\177" 'fence-backward-delete-char)
 (define-key fence-mode-map [delete] 'fence-backward-delete-char)
-(define-key fence-mode-map [backspace] 'fence-backward-delete-char)
+(define-key fence-mode-map 'backspace 'fence-backward-delete-char)
+(define-key fence-mode-map '(control h) 'fence-mode-help-command)
 (define-key fence-mode-map [right] 'fence-forward-char)
 (define-key fence-mode-map [left] 'fence-backward-char)
 
@@ -2886,46 +2860,85 @@
 	 ((consp code) (eval code))
 	 )))
 
-(define-key global-map "\C-^"  'special-symbol-input)
 
 (autoload 'busyu-input "egg-busyu" nil t)
 (autoload 'kakusuu-input "egg-busyu" nil t)
 
-;; put us into all existing buffer's modelines
-(if (not (featurep 'egg))
-    (mapc-internal
-     (lambda (buf) 
-       (save-excursion
-	 (set-buffer buf)
-	 (setq modeline-format (cons (list 'display-minibuffer-mode-in-minibuffer
+(defun egg-mode ()
+  "The keys that are defined for the fence mode in egg are:\\{fence-mode-map}"
+  (interactive)
+  (define-key global-map "\C-^"  'special-symbol-input)
+  (if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
+      (setq-default 
+       modeline-format
+       (cons (list 'display-minibuffer-mode-in-minibuffer
 		 ;;; minibuffer mode in minibuffer
-					   (list 
-					    (list 'its:*previous-map* "<" "[")
-					    'mode-line-egg-mode
-					    (list 'its:*previous-map* ">" "]")
-					    )
+		   (list 
+		    (list 'its:*previous-map* "<" "[")
+		    'mode-line-egg-mode
+		    (list 'its:*previous-map* ">" "]")
+		    )
 		       ;;;; minibuffer mode in mode line
-					   (list 
-					    (list 'minibuffer-window-selected
-						  (list 'display-minibuffer-mode
-							"m"
-							" ")
-						  " ")
-					    (list 'its:*previous-map* "<" "[")
-					    (list 'minibuffer-window-selected
-						  (list 'display-minibuffer-mode
-							'mode-line-egg-mode-in-minibuffer
-							'mode-line-egg-mode)
-						  'mode-line-egg-mode)
-					    (list 'its:*previous-map* ">" "]")
-					    ))
-				     modeline-format))))
-     (buffer-list)))
+		   (list 
+		    (list 'minibuffer-window-selected
+			  (list 'display-minibuffer-mode
+				"m"
+				" ")
+			  " ")
+		    (list 'its:*previous-map* "<" "[")
+		    (list 'minibuffer-window-selected
+			  (list 'display-minibuffer-mode
+				'mode-line-egg-mode-in-minibuffer
+				'mode-line-egg-mode)
+			  'mode-line-egg-mode)
+		    (list 'its:*previous-map* ">" "]")
+		    ))
+	     modeline-format)))
+  ;; put us into the modeline of all existing buffers
+  (mapc (lambda (buf)
+	  (save-excursion
+	    (set-buffer buf)
+	    (if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
+		(setq modeline-format
+		      (cons (list 'display-minibuffer-mode-in-minibuffer
+		 ;;; minibuffer mode in minibuffer
+				  (list 
+				   (list 'its:*previous-map* "<" "[")
+				   'mode-line-egg-mode
+				   (list 'its:*previous-map* ">" "]")
+				   )
+		       ;;;; minibuffer mode in mode line
+				  (list 
+				   (list 'minibuffer-window-selected
+					 (list 'display-minibuffer-mode
+					       "m"
+					       " ")
+					 " ")
+				   (list 'its:*previous-map* "<" "[")
+				   (list 'minibuffer-window-selected
+					 (list 'display-minibuffer-mode
+					       'mode-line-egg-mode-in-minibuffer
+					       'mode-line-egg-mode)
+					 'mode-line-egg-mode)
+				   (list 'its:*previous-map* ">" "]")
+				   ))
+			    modeline-format)))))
+	(buffer-list))
+  (if (boundp 'select-window-hook)
+      (add-hook 'select-window-hook 'egg:select-window-hook)
+    (add-hook 'minibuffer-exit-hook 'egg:minibuffer-exit-hook)
+    (add-hook 'minibuffer-entry-hook 'egg:minibuffer-entry-hook))
+  (mode-line-egg-mode-update mode-line-egg-mode)
+  (if its:*reset-modeline-format*
+      (setq-default modeline-format
+		    (cdr modeline-format)))
+
+  ;; if set-lang-environment has already been called,
+  ;; call egg-lang-switch-callback
+  (if (not (null current-language-environment))
+      (egg-lang-switch-callback))
+  )
 
 (provide 'egg)
 
-;; if set-lang-environment has already been called, call egg-lang-switch-callback
-(if (not (null current-language-environment))
-    (egg-lang-switch-callback))
-
 ;;; egg.el ends here