summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2000-12-12 10:20:52 +0000
committerGerd Moellmann <gerd@gnu.org>2000-12-12 10:20:52 +0000
commit5610cefd51c8c43b5dbc7692105988a55ea83781 (patch)
tree060c8b90e37f41a9566b3a872380a989f2b6dd03
parentfc40e2152fdfbf0168189902f432dc43990c9475 (diff)
downloademacs-5610cefd51c8c43b5dbc7692105988a55ea83781.tar.gz
Use `define-minor-mode' for the minor mode
definition (patch by Stefan Monnier). (glasses-mode): Use jit-lock instead of `after-change-functions' (patch by Stefan Monnier).
-rw-r--r--lisp/progmodes/glasses.el53
1 files changed, 17 insertions, 36 deletions
diff --git a/lisp/progmodes/glasses.el b/lisp/progmodes/glasses.el
index 2b4fba4dfe8..f1c81fe44b5 100644
--- a/lisp/progmodes/glasses.el
+++ b/lisp/progmodes/glasses.el
@@ -235,7 +235,7 @@ recognized according to the current value of the variable `glasses-separator'."
nil)
-(defun glasses-change (beg end old-len)
+(defun glasses-change (beg end &optional old-len)
"After-change function updating glass overlays."
(let ((beg-line (save-excursion (goto-char beg) (line-beginning-position)))
(end-line (save-excursion (goto-char end) (line-end-position))))
@@ -246,45 +246,26 @@ recognized according to the current value of the variable `glasses-separator'."
;;; Minor mode definition
-(defvar glasses-mode nil
- "Mode variable for `glasses-mode'.")
-(make-variable-buffer-local 'glasses-mode)
-
-(add-to-list 'minor-mode-alist
- (list 'glasses-mode
- (propertize " o^o"
- 'local-map (make-mode-line-mouse2-map
- 'glasses-mode)
- 'help-echo "mouse-2: turn off Glasses mode")))
-
;;;###autoload
-(defun glasses-mode (&optional arg)
+(define-minor-mode glasses-mode
"Minor mode for making identifiers likeThis readable.
When this mode is active, it tries to add virtual separators (like underscores)
at places they belong to."
- (interactive "P")
- (let ((new-flag (if (null arg)
- (not glasses-mode)
- (> (prefix-numeric-value arg) 0))))
- (unless (eq new-flag glasses-mode)
- (save-excursion
- (save-restriction
- (widen)
- ;; We erase the all overlays anyway, to avoid dual sight in some
- ;; circumstances
- (glasses-make-unreadable (point-min) (point-max))
- (if new-flag
- (progn
- (glasses-make-readable (point-min) (point-max))
- (make-local-hook 'after-change-functions)
- (add-hook 'after-change-functions 'glasses-change nil t)
- (add-hook 'local-write-file-hooks
- 'glasses-convert-to-unreadable nil t))
- (remove-hook 'after-change-functions 'glasses-change t)
- (remove-hook 'local-write-file-hooks
- 'glasses-convert-to-unreadable t))))
- (setq glasses-mode new-flag)
- (force-mode-line-update))))
+ nil " o^o" nil
+ (save-excursion
+ (save-restriction
+ (widen)
+ ;; We erase all the overlays anyway, to avoid dual sight in some
+ ;; circumstances
+ (glasses-make-unreadable (point-min) (point-max))
+ (if glasses-mode
+ (progn
+ (jit-lock-register 'glasses-change)
+ (add-hook 'local-write-file-hooks
+ 'glasses-convert-to-unreadable nil t))
+ (jit-lock-unregister 'glasses-change)
+ (remove-hook 'local-write-file-hooks
+ 'glasses-convert-to-unreadable t)))))
;;; Announce