aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann2000-12-12 10:20:52 +0000
committerGerd Moellmann2000-12-12 10:20:52 +0000
commit5610cefd51c8c43b5dbc7692105988a55ea83781 (patch)
tree060c8b90e37f41a9566b3a872380a989f2b6dd03
parentfc40e2152fdfbf0168189902f432dc43990c9475 (diff)
downloademacs-5610cefd51c8c43b5dbc7692105988a55ea83781.tar.gz
emacs-5610cefd51c8c43b5dbc7692105988a55ea83781.zip
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'."
235 nil) 235 nil)
236 236
237 237
238(defun glasses-change (beg end old-len) 238(defun glasses-change (beg end &optional old-len)
239 "After-change function updating glass overlays." 239 "After-change function updating glass overlays."
240 (let ((beg-line (save-excursion (goto-char beg) (line-beginning-position))) 240 (let ((beg-line (save-excursion (goto-char beg) (line-beginning-position)))
241 (end-line (save-excursion (goto-char end) (line-end-position)))) 241 (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'."
246;;; Minor mode definition 246;;; Minor mode definition
247 247
248 248
249(defvar glasses-mode nil
250 "Mode variable for `glasses-mode'.")
251(make-variable-buffer-local 'glasses-mode)
252
253(add-to-list 'minor-mode-alist
254 (list 'glasses-mode
255 (propertize " o^o"
256 'local-map (make-mode-line-mouse2-map
257 'glasses-mode)
258 'help-echo "mouse-2: turn off Glasses mode")))
259
260;;;###autoload 249;;;###autoload
261(defun glasses-mode (&optional arg) 250(define-minor-mode glasses-mode
262 "Minor mode for making identifiers likeThis readable. 251 "Minor mode for making identifiers likeThis readable.
263When this mode is active, it tries to add virtual separators (like underscores) 252When this mode is active, it tries to add virtual separators (like underscores)
264at places they belong to." 253at places they belong to."
265 (interactive "P") 254 nil " o^o" nil
266 (let ((new-flag (if (null arg) 255 (save-excursion
267 (not glasses-mode) 256 (save-restriction
268 (> (prefix-numeric-value arg) 0)))) 257 (widen)
269 (unless (eq new-flag glasses-mode) 258 ;; We erase all the overlays anyway, to avoid dual sight in some
270 (save-excursion 259 ;; circumstances
271 (save-restriction 260 (glasses-make-unreadable (point-min) (point-max))
272 (widen) 261 (if glasses-mode
273 ;; We erase the all overlays anyway, to avoid dual sight in some 262 (progn
274 ;; circumstances 263 (jit-lock-register 'glasses-change)
275 (glasses-make-unreadable (point-min) (point-max)) 264 (add-hook 'local-write-file-hooks
276 (if new-flag 265 'glasses-convert-to-unreadable nil t))
277 (progn 266 (jit-lock-unregister 'glasses-change)
278 (glasses-make-readable (point-min) (point-max)) 267 (remove-hook 'local-write-file-hooks
279 (make-local-hook 'after-change-functions) 268 'glasses-convert-to-unreadable t)))))
280 (add-hook 'after-change-functions 'glasses-change nil t)
281 (add-hook 'local-write-file-hooks
282 'glasses-convert-to-unreadable nil t))
283 (remove-hook 'after-change-functions 'glasses-change t)
284 (remove-hook 'local-write-file-hooks
285 'glasses-convert-to-unreadable t))))
286 (setq glasses-mode new-flag)
287 (force-mode-line-update))))
288 269
289 270
290;;; Announce 271;;; Announce