Author: nosuke
Date: Sat May 5 05:24:44 2007
New Revision: 4548
Modified:
trunk/emacs/uim-candidate.el
trunk/emacs/uim-keymap.el
trunk/emacs/uim-var.el
trunk/emacs/uim.el
Log:
* emacs/uim-keymap.el
* emacs/uim-var.el
* emacs/uim.el
* emacs/uim-candidate.el
- Improve font-lock-mode support
Modified: trunk/emacs/uim-candidate.el
==============================================================================
--- trunk/emacs/uim-candidate.el (original)
+++ trunk/emacs/uim-candidate.el Sat May 5 05:24:44 2007
@@ -68,6 +68,11 @@
(setq mark-base (point-marker))
;;(uim-debug (format "before: %s" (marker-position mark-base)))
+ ;; save font-lock face
+ (when uim-xemacs
+ (uim-overwrite-font-face uim-candidate-original-start
+ uim-candidate-original-end))
+
;; save original string
(setq uim-candidate-original-str
(buffer-substring uim-candidate-original-start
Modified: trunk/emacs/uim-keymap.el
==============================================================================
--- trunk/emacs/uim-keymap.el (original)
+++ trunk/emacs/uim-keymap.el Sat May 5 05:24:44 2007
@@ -116,7 +116,7 @@
;; for uim-preedit-map
;; menu-bar/tool-bar operation must be avoided
- (define-key uim-preedit-map [vertical-scroll-bar] 'ignore)
+ (define-key uim-preedit-map [vertical-scroll-bar] nil)
(define-key uim-preedit-map [mode-line] nil)
(define-key uim-preedit-map [vertical-line] nil)
Modified: trunk/emacs/uim-var.el
==============================================================================
--- trunk/emacs/uim-var.el (original)
+++ trunk/emacs/uim-var.el Sat May 5 05:24:44 2007
@@ -382,17 +382,13 @@
(uim-deflocalvar uim-preedit-keymap-enabled nil)
-;; save font-lock mode
-(uim-deflocalvar uim-font-lock-mode nil)
-(uim-deflocalvar uim-font-lock-verbose nil)
+(uim-deflocalvar uim-after-change-functions nil)
+(uim-deflocalvar uim-fontification-functions nil)
;; save top point of current window to lock scroll
(uim-deflocalvar uim-window-force-scrolled nil)
(uim-deflocalvar uim-buffer-read-only nil)
-
-;; list of font faces for emulating font-lock mode looks
-(uim-deflocalvar uim-facelist nil)
;; save current menubar temporally for XEmacs
(uim-deflocalvar uim-menubar-temp nil)
Modified: trunk/emacs/uim.el
==============================================================================
--- trunk/emacs/uim.el (original)
+++ trunk/emacs/uim.el Sat May 5 05:24:44 2007
@@ -792,17 +792,17 @@
(uim-wait-recv serial))))
-;;
-;; Save face property
-;;
-(defun uim-get-face-list (start end)
+;; for XEmacs
+(defun uim-overwrite-font-face (start end)
(let ((facelist '()) tail face)
(catch 'face-loop
(while t
(setq tail
(next-single-property-change start 'face (current-buffer) end))
(if (setq face (get-text-property start 'face))
- (setq uim-facelist (cons (list face start tail) uim-facelist)))
+ (if (atom face)
+ (put-text-property start tail 'face
+ (cons face nil))))
(setq start tail)
(if (= start end)
(throw 'face-loop t))))
@@ -810,64 +810,6 @@
)
-
-;;
-;; Save face property of the window
-;; Save only displayed region
-(defun uim-get-facelist-window (win)
- (select-window win)
- (let (end)
- (save-excursion
- (goto-char (window-end nil t))
- (vertical-motion (window-height))
- (setq end (point)))
- (save-excursion
- (uim-get-face-list (window-start) end)
- )
- ))
-
-
-;;
-;; Save face property of windows which are displaying the current buffer.
-;;
-(defun uim-get-facelist-buffer ()
- (save-selected-window
- (mapcar 'uim-get-facelist-window
- (get-buffer-window-list (current-buffer) t 'visible))
- uim-facelist))
-
-
-;;
-;; Disable font-lock mode
-;; This function should be called only when the font-lock-mode is
-;; already in use
-;;
-(defun uim-disable-font-lock-mode ()
- ;; save and disable font-lock-mode
- (setq uim-font-lock-mode font-lock-mode)
- (setq uim-font-lock-verbose font-lock-verbose)
- (when font-lock-mode
- (font-lock-mode 0)
- (setq font-lock-verbose nil)))
-
-
-;;
-;; Eable font-lock mode
-;;
-(defun uim-enable-font-lock-mode ()
- (when uim-font-lock-mode
- (font-lock-mode uim-font-lock-mode)
- (setq font-lock-verbose uim-font-lock-verbose)))
-
-
-;;
-;; Restore face property
-;;
-(defun uim-put-face (facelist)
- (put-text-property (nth 1 facelist) (nth 2 facelist)
- 'face (car facelist)))
-
-
;;
;; Update font
;;
@@ -888,33 +830,30 @@
uim-candidate-selected-face
uim-candidate-nth-face)))
-;;
-;; Lock appearance of buffer
-;;
-(defun uim-freeze-buffer ()
- (let (facelists)
- (setq uim-facelist nil)
- (uim-get-facelist-buffer)
- ;(setq facelists (uim-get-face-list 1 (point-max)))
- (if (memq 'font-lock features)
- (progn
- (uim-disable-font-lock-mode)
- (mapcar 'uim-put-face uim-facelist)))
- )
- (setq uim-buffer-frozen t))
+(defun uim-freeze-buffer ()
+ (when (not uim-buffer-frozen)
+ (setq uim-after-change-functions after-change-functions)
+ (setq after-change-functions nil)
+
+ (when (boundp 'fontification-functions)
+ (setq uim-fontification-functions fontification-functions)
+ (setq fontification-functions nil))
+ (setq uim-buffer-frozen t))
+ )
-;;
-;; Unlock appearance of buffer
-;;
(defun uim-unfreeze-buffer ()
- (let (facelists)
- (if (memq 'font-lock features)
- (uim-enable-font-lock-mode))
- )
- (setq uim-buffer-frozen nil))
+ (when uim-buffer-frozen ;; avoid multiple unfreeze
+ (setq after-change-functions uim-after-change-functions)
+ (setq uim-after-change-functions nil)
+
+ (when (boundp 'fontification-functions)
+ (setq fontification-functions uim-fontification-functions)
+ (setq uim-fontification-functions nil))
+
+ (setq uim-buffer-frozen nil)))
@@ -1104,8 +1043,8 @@
(defun uim-leave-preedit-mode ()
(uim-disable-preedit-keymap)
- (uim-unfreeze-buffer)
(setq buffer-read-only uim-buffer-read-only)
+ (uim-unfreeze-buffer)
)