comparison 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
comparison
equal deleted inserted replaced
214:c5d88c05e1e9 215:1f0dabaa0855
62 ;;; 62 ;;;
63 63
64 ; last master version 64 ; last master version
65 ;;; (defvar egg-version "3.09" "Version number of this version of Egg. ") 65 ;;; (defvar egg-version "3.09" "Version number of this version of Egg. ")
66 ;;; Last modified date: Fri Sep 25 12:59:00 1992 66 ;;; Last modified date: Fri Sep 25 12:59:00 1992
67 (defvar egg-version "3.09 xemacs" "Version number of this version of Egg. ") 67 (defvar egg-version "3.10 xemacs" "Version number of this version of Egg. ")
68 ;;; Last modified date: Wed Feb 05 20:45:00 1997 68 ;;; Last modified date: Wed Nov 29 20:45:00 1997
69 69
70 ;;;; $B=$@5MW5a%j%9%H(B 70 ;;;; $B=$@5MW5a%j%9%H(B
71 71
72 ;;;; read-hiragana-string, read-kanji-string $B$G;HMQ$9$kJ?2>L>F~NO%^%C%W$r(B roma-kana $B$K8GDj$7$J$$$GM_$7$$!%(B 72 ;;;; read-hiragana-string, read-kanji-string $B$G;HMQ$9$kJ?2>L>F~NO%^%C%W$r(B roma-kana $B$K8GDj$7$J$$$GM_$7$$!%(B
73 73
74 ;;;; $B=$@5%a%b(B 74 ;;;; $B=$@5%a%b(B
75
76 ;;; 97.10.29 modified by J.Hein <jareth@camelot-soft.com>
77 ;;; fix to get rid of problem with C-h/backspace fuckage when in fence mode. Note
78 ;;; that the entire egg-read-event thing is a hack and really needs to be re-implemented.
79 ;;; I REALLY don't like the bandaids there...
80 ;;; Also added the egg-mode function, and modified the behavior so that just loading
81 ;;; egg will not change the user's state.
75 82
76 ;;; 97.2.05 modified by J.Hein <jhod@po.iijnet.or.jp> 83 ;;; 97.2.05 modified by J.Hein <jhod@po.iijnet.or.jp>
77 ;;; Lots of mods to make it XEmacs workable. Most fixes revolve around the fact that 84 ;;; Lots of mods to make it XEmacs workable. Most fixes revolve around the fact that
78 ;;; Mule/et al assumes that all events are keypress events unless specified otherwise. 85 ;;; Mule/et al assumes that all events are keypress events unless specified otherwise.
79 ;;; Also modified to work with the new charset names and API 86 ;;; Also modified to work with the new charset names and API
404 unread-command-events to facilitate translation from Mule-2.3" 411 unread-command-events to facilitate translation from Mule-2.3"
405 (let ((event (make-event)) 412 (let ((event (make-event))
406 ch key) 413 ch key)
407 (next-command-event event) 414 (next-command-event event)
408 (setq key (event-key event)) 415 (setq key (event-key event))
409 (if (key-press-event-p event) 416 (if (and (key-press-event-p event)
417 (not (event-matches-key-specifier-p event 'backspace)))
410 (if (eq 0 (event-modifier-bits event)) 418 (if (eq 0 (event-modifier-bits event))
411 (setq ch (or (event-to-character event) key)) 419 (setq ch (or (event-to-character event) key))
412 (if (eq 1 (event-modifier-bits event)) 420 (if (eq 1 (event-modifier-bits event))
413 (setq ch 421 (setq ch
414 (if (characterp key) 422 (if (characterp key)
2175 (set-buffer (window-buffer (minibuffer-window))) 2183 (set-buffer (window-buffer (minibuffer-window)))
2176 (setq egg:*mode-on* (default-value 'egg:*mode-on*) 2184 (setq egg:*mode-on* (default-value 'egg:*mode-on*)
2177 egg:*input-mode* (default-value 'egg:*input-mode*) 2185 egg:*input-mode* (default-value 'egg:*input-mode*)
2178 egg:*in-fence-mode* (default-value 'egg:*in-fence-mode*)))) 2186 egg:*in-fence-mode* (default-value 'egg:*in-fence-mode*))))
2179 2187
2180 (if (boundp 'select-window-hook)
2181 (add-hook 'select-window-hook 'egg:select-window-hook)
2182 (add-hook 'minibuffer-exit-hook 'egg:minibuffer-exit-hook)
2183 (add-hook 'minibuffer-entry-hook 'egg:minibuffer-entry-hook))
2184 2188
2185 ;;; 2189 ;;;
2186 ;;; 2190 ;;;
2187 ;;; 2191 ;;;
2188 2192
2189 (defvar its:*reset-modeline-format* nil) 2193 (defvar its:*reset-modeline-format* nil)
2190 2194
2191 (if its:*reset-modeline-format* 2195
2192 (setq-default modeline-format
2193 (cdr modeline-format)))
2194
2195 (if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
2196 (setq-default
2197 modeline-format
2198 (cons (list 'display-minibuffer-mode-in-minibuffer
2199 ;;; minibuffer mode in minibuffer
2200 (list
2201 (list 'its:*previous-map* "<" "[")
2202 'mode-line-egg-mode
2203 (list 'its:*previous-map* ">" "]")
2204 )
2205 ;;;; minibuffer mode in mode line
2206 (list
2207 (list 'minibuffer-window-selected
2208 (list 'display-minibuffer-mode
2209 "m"
2210 " ")
2211 " ")
2212 (list 'its:*previous-map* "<" "[")
2213 (list 'minibuffer-window-selected
2214 (list 'display-minibuffer-mode
2215 'mode-line-egg-mode-in-minibuffer
2216 'mode-line-egg-mode)
2217 'mode-line-egg-mode)
2218 (list 'its:*previous-map* ">" "]")
2219 ))
2220 modeline-format)))
2221 2196
2222 ;;; 2197 ;;;
2223 ;;; minibuffer $B$G$N%b!<%II=<($r$9$k$?$a$K(B nemacs 4 $B$GDj5A$5$l$?(B 2198 ;;; minibuffer $B$G$N%b!<%II=<($r$9$k$?$a$K(B nemacs 4 $B$GDj5A$5$l$?(B
2224 ;;; minibuffer-preprompt $B$rMxMQ$9$k!%(B 2199 ;;; minibuffer-preprompt $B$rMxMQ$9$k!%(B
2225 ;;; 2200 ;;;
2244 mode-line-egg-mode-in-minibuffer str)) 2219 mode-line-egg-mode-in-minibuffer str))
2245 (setq display-minibuffer-mode nil 2220 (setq display-minibuffer-mode nil
2246 mode-line-egg-mode str)) 2221 mode-line-egg-mode str))
2247 (redraw-modeline t)) 2222 (redraw-modeline t))
2248 2223
2249 (mode-line-egg-mode-update mode-line-egg-mode)
2250 2224
2251 ;;; 2225 ;;;
2252 ;;; egg mode line display 2226 ;;; egg mode line display
2253 ;;; 2227 ;;;
2254 2228
2581 (and egg:*fence-face* 2555 (and egg:*fence-face*
2582 (extentp egg:*fence-extent*) 2556 (extentp egg:*fence-extent*)
2583 (detach-extent egg:*fence-extent*) )) 2557 (detach-extent egg:*fence-extent*) ))
2584 2558
2585 (defun enter-fence-mode () 2559 (defun enter-fence-mode ()
2560
2586 ;; XEmacs change: 2561 ;; XEmacs change:
2587 ; (buffer-disable-undo (current-buffer)) 2562 ; (buffer-disable-undo (current-buffer))
2588 (undo-boundary) 2563 (undo-boundary)
2589 (setq egg:*in-fence-mode* t 2564 (setq egg:*in-fence-mode* t
2590 egg:fence-buffer (current-buffer)) 2565 egg:fence-buffer (current-buffer))
2702 (egg:quit-egg-mode)) 2677 (egg:quit-egg-mode))
2703 2678
2704 ;; jhod: This seems bogus to me, as it should be called either after each 2679 ;; jhod: This seems bogus to me, as it should be called either after each
2705 ;; egg-self-insert, or after accepting input, but not both. Otherwise, I can't 2680 ;; egg-self-insert, or after accepting input, but not both. Otherwise, I can't
2706 ;; really think of a use for it. 2681 ;; really think of a use for it.
2707 (defvar egg-insert-after-hook nil "Hook to run when egg inserts a character 2682 (defvar egg-insert-after-hook nil
2708 in the buffer") 2683 "Hook to run when egg inserts a character in the buffer")
2684
2709 (make-variable-buffer-local 'egg-insert-after-hook) 2685 (make-variable-buffer-local 'egg-insert-after-hook)
2710 2686
2711 (defvar egg-exit-hook nil 2687 (defvar egg-exit-hook nil
2712 "Hook to run when egg exits. Should take two arguments START and END 2688 "Hook to run when egg exits. Should take two arguments START and END
2713 correspoding to character position.") 2689 correspoding to character position.")
2778 (if (not (null func)) 2754 (if (not (null func))
2779 (funcall func))) 2755 (funcall func)))
2780 (egg:mode-line-display)) 2756 (egg:mode-line-display))
2781 2757
2782 (defun fence-mode-help-command () 2758 (defun fence-mode-help-command ()
2783 "Display documentation for fence-mode." 2759 "Display fence mode help"
2784 (interactive) 2760 (interactive "_")
2785 (let ((buf "*Help*")) 2761 (let ((w (selected-window)))
2786 (if (eq (get-buffer buf) (current-buffer)) 2762 (describe-function 'egg-mode)
2787 (henkan-quit) 2763 (ding)
2788 (with-output-to-temp-buffer buf 2764 (select-window w)))
2789 (princ (substitute-command-keys "The keys that are defined for the fence mode here are:\\{fence-mode-map}"))
2790 (print-help-return-message)))))
2791 2765
2792 (defvar fence-mode-map (make-keymap)) 2766 (defvar fence-mode-map (make-keymap))
2793 2767
2794 (substitute-key-definition 'egg-self-insert-command 2768 (substitute-key-definition 'egg-self-insert-command
2795 'fence-self-insert-command 2769 'fence-self-insert-command
2813 (define-key fence-mode-map "\C-c" 'fence-cancel-input) 2787 (define-key fence-mode-map "\C-c" 'fence-cancel-input)
2814 (define-key fence-mode-map "\C-d" 'fence-delete-char) 2788 (define-key fence-mode-map "\C-d" 'fence-delete-char)
2815 (define-key fence-mode-map "\C-e" 'fence-end-of-line) 2789 (define-key fence-mode-map "\C-e" 'fence-end-of-line)
2816 (define-key fence-mode-map "\C-f" 'fence-forward-char) 2790 (define-key fence-mode-map "\C-f" 'fence-forward-char)
2817 (define-key fence-mode-map "\C-g" 'fence-cancel-input) 2791 (define-key fence-mode-map "\C-g" 'fence-cancel-input)
2818 (define-key fence-mode-map "\C-h" 'fence-mode-help-command)
2819 (define-key fence-mode-map "\C-k" 'fence-kill-line) 2792 (define-key fence-mode-map "\C-k" 'fence-kill-line)
2820 (define-key fence-mode-map "\C-l" 'fence-exit-mode) 2793 (define-key fence-mode-map "\C-l" 'fence-exit-mode)
2821 (define-key fence-mode-map "\C-m" 'fence-exit-mode) ;;; RET 2794 (define-key fence-mode-map "\C-m" 'fence-exit-mode) ;;; RET
2822 (define-key fence-mode-map [return] 'fence-exit-mode) 2795 (define-key fence-mode-map [return] 'fence-exit-mode)
2823 (define-key fence-mode-map "\C-q" 'its:select-previous-mode) 2796 (define-key fence-mode-map "\C-q" 'its:select-previous-mode)
2826 (define-key fence-mode-map "\C-z" 'eval-expression) 2799 (define-key fence-mode-map "\C-z" 'eval-expression)
2827 (define-key fence-mode-map "\C-\\" 'fence-toggle-egg-mode) 2800 (define-key fence-mode-map "\C-\\" 'fence-toggle-egg-mode)
2828 (define-key fence-mode-map "\C-_" 'jis-code-input) 2801 (define-key fence-mode-map "\C-_" 'jis-code-input)
2829 (define-key fence-mode-map "\177" 'fence-backward-delete-char) 2802 (define-key fence-mode-map "\177" 'fence-backward-delete-char)
2830 (define-key fence-mode-map [delete] 'fence-backward-delete-char) 2803 (define-key fence-mode-map [delete] 'fence-backward-delete-char)
2831 (define-key fence-mode-map [backspace] 'fence-backward-delete-char) 2804 (define-key fence-mode-map 'backspace 'fence-backward-delete-char)
2805 (define-key fence-mode-map '(control h) 'fence-mode-help-command)
2832 (define-key fence-mode-map [right] 'fence-forward-char) 2806 (define-key fence-mode-map [right] 'fence-forward-char)
2833 (define-key fence-mode-map [left] 'fence-backward-char) 2807 (define-key fence-mode-map [left] 'fence-backward-char)
2834 2808
2835 ;;;---------------------------------------------------------------------- 2809 ;;;----------------------------------------------------------------------
2836 ;;; 2810 ;;;
2884 ;; end of patch 2858 ;; end of patch
2885 (cond((stringp code) (insert code)) 2859 (cond((stringp code) (insert code))
2886 ((consp code) (eval code)) 2860 ((consp code) (eval code))
2887 ))) 2861 )))
2888 2862
2889 (define-key global-map "\C-^" 'special-symbol-input)
2890 2863
2891 (autoload 'busyu-input "egg-busyu" nil t) 2864 (autoload 'busyu-input "egg-busyu" nil t)
2892 (autoload 'kakusuu-input "egg-busyu" nil t) 2865 (autoload 'kakusuu-input "egg-busyu" nil t)
2893 2866
2894 ;; put us into all existing buffer's modelines 2867 (defun egg-mode ()
2895 (if (not (featurep 'egg)) 2868 "The keys that are defined for the fence mode in egg are:\\{fence-mode-map}"
2896 (mapc-internal 2869 (interactive)
2897 (lambda (buf) 2870 (define-key global-map "\C-^" 'special-symbol-input)
2898 (save-excursion 2871 (if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
2899 (set-buffer buf) 2872 (setq-default
2900 (setq modeline-format (cons (list 'display-minibuffer-mode-in-minibuffer 2873 modeline-format
2874 (cons (list 'display-minibuffer-mode-in-minibuffer
2901 ;;; minibuffer mode in minibuffer 2875 ;;; minibuffer mode in minibuffer
2902 (list 2876 (list
2903 (list 'its:*previous-map* "<" "[") 2877 (list 'its:*previous-map* "<" "[")
2904 'mode-line-egg-mode 2878 'mode-line-egg-mode
2905 (list 'its:*previous-map* ">" "]") 2879 (list 'its:*previous-map* ">" "]")
2906 ) 2880 )
2907 ;;;; minibuffer mode in mode line 2881 ;;;; minibuffer mode in mode line
2908 (list 2882 (list
2909 (list 'minibuffer-window-selected 2883 (list 'minibuffer-window-selected
2910 (list 'display-minibuffer-mode 2884 (list 'display-minibuffer-mode
2911 "m" 2885 "m"
2912 " ") 2886 " ")
2913 " ") 2887 " ")
2914 (list 'its:*previous-map* "<" "[") 2888 (list 'its:*previous-map* "<" "[")
2915 (list 'minibuffer-window-selected 2889 (list 'minibuffer-window-selected
2916 (list 'display-minibuffer-mode 2890 (list 'display-minibuffer-mode
2917 'mode-line-egg-mode-in-minibuffer 2891 'mode-line-egg-mode-in-minibuffer
2918 'mode-line-egg-mode) 2892 'mode-line-egg-mode)
2919 'mode-line-egg-mode) 2893 'mode-line-egg-mode)
2920 (list 'its:*previous-map* ">" "]") 2894 (list 'its:*previous-map* ">" "]")
2921 )) 2895 ))
2922 modeline-format)))) 2896 modeline-format)))
2923 (buffer-list))) 2897 ;; put us into the modeline of all existing buffers
2898 (mapc (lambda (buf)
2899 (save-excursion
2900 (set-buffer buf)
2901 (if (not (egg:find-symbol-in-tree 'mode-line-egg-mode modeline-format))
2902 (setq modeline-format
2903 (cons (list 'display-minibuffer-mode-in-minibuffer
2904 ;;; minibuffer mode in minibuffer
2905 (list
2906 (list 'its:*previous-map* "<" "[")
2907 'mode-line-egg-mode
2908 (list 'its:*previous-map* ">" "]")
2909 )
2910 ;;;; minibuffer mode in mode line
2911 (list
2912 (list 'minibuffer-window-selected
2913 (list 'display-minibuffer-mode
2914 "m"
2915 " ")
2916 " ")
2917 (list 'its:*previous-map* "<" "[")
2918 (list 'minibuffer-window-selected
2919 (list 'display-minibuffer-mode
2920 'mode-line-egg-mode-in-minibuffer
2921 'mode-line-egg-mode)
2922 'mode-line-egg-mode)
2923 (list 'its:*previous-map* ">" "]")
2924 ))
2925 modeline-format)))))
2926 (buffer-list))
2927 (if (boundp 'select-window-hook)
2928 (add-hook 'select-window-hook 'egg:select-window-hook)
2929 (add-hook 'minibuffer-exit-hook 'egg:minibuffer-exit-hook)
2930 (add-hook 'minibuffer-entry-hook 'egg:minibuffer-entry-hook))
2931 (mode-line-egg-mode-update mode-line-egg-mode)
2932 (if its:*reset-modeline-format*
2933 (setq-default modeline-format
2934 (cdr modeline-format)))
2935
2936 ;; if set-lang-environment has already been called,
2937 ;; call egg-lang-switch-callback
2938 (if (not (null current-language-environment))
2939 (egg-lang-switch-callback))
2940 )
2924 2941
2925 (provide 'egg) 2942 (provide 'egg)
2926 2943
2927 ;; if set-lang-environment has already been called, call egg-lang-switch-callback
2928 (if (not (null current-language-environment))
2929 (egg-lang-switch-callback))
2930
2931 ;;; egg.el ends here 2944 ;;; egg.el ends here