diff options
| author | Gerd Moellmann | 2000-12-12 10:20:52 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-12-12 10:20:52 +0000 |
| commit | 5610cefd51c8c43b5dbc7692105988a55ea83781 (patch) | |
| tree | 060c8b90e37f41a9566b3a872380a989f2b6dd03 | |
| parent | fc40e2152fdfbf0168189902f432dc43990c9475 (diff) | |
| download | emacs-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.el | 53 |
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. |
| 263 | When this mode is active, it tries to add virtual separators (like underscores) | 252 | When this mode is active, it tries to add virtual separators (like underscores) |
| 264 | at places they belong to." | 253 | at 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 |