diff options
| author | Dave Love | 2000-02-09 12:18:48 +0000 |
|---|---|---|
| committer | Dave Love | 2000-02-09 12:18:48 +0000 |
| commit | 5e1cddda2b88b41743aa89b134bce7c453c23679 (patch) | |
| tree | 0069a00146b72dd6bbf04ec0ab7adfd75fd2e8b0 | |
| parent | 25566a3ca73611035faee076267eedb678448345 (diff) | |
| download | emacs-5e1cddda2b88b41743aa89b134bce7c453c23679.tar.gz emacs-5e1cddda2b88b41743aa89b134bce7c453c23679.zip | |
(mode-line-input-method-map): New variable.
(mode-line-mule-info): Use it; fix last change.
(mode-line-mode-menu): Move definition.
(mode-line-mouse-sensitive-p): Deleted.
(mode-line-mode-name): Don't use mode-line-mouse-sensitive-p.
(make-mode-line-mouse-sensitive): Deleted. Body moved to top level.
| -rw-r--r-- | lisp/bindings.el | 161 |
1 files changed, 73 insertions, 88 deletions
diff --git a/lisp/bindings.el b/lisp/bindings.el index 9477e91f2fb..c24911f3d3e 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el | |||
| @@ -62,37 +62,38 @@ corresponding to the mode line clicked." | |||
| 62 | (force-mode-line-update)))) | 62 | (force-mode-line-update)))) |
| 63 | map)) | 63 | map)) |
| 64 | 64 | ||
| 65 | (defvar mode-line-input-method-map | ||
| 66 | (let ((map (make-sparse-keymap))) | ||
| 67 | (define-key map [mode-line mouse-2] | ||
| 68 | (lambda (e) | ||
| 69 | (interactive "e") | ||
| 70 | (save-selected-window | ||
| 71 | (select-window | ||
| 72 | (posn-window (event-start e))) | ||
| 73 | (toggle-input-method) | ||
| 74 | (force-mode-line-update)))) | ||
| 75 | (define-key map [mode-line mouse-3] | ||
| 76 | (lambda (e) | ||
| 77 | (interactive "e") | ||
| 78 | (save-selected-window | ||
| 79 | (select-window | ||
| 80 | (posn-window (event-start e))) | ||
| 81 | (describe-current-input-method)))) | ||
| 82 | (purecopy map))) | ||
| 83 | |||
| 65 | (defvar mode-line-mule-info | 84 | (defvar mode-line-mule-info |
| 66 | `("" | 85 | `("" |
| 67 | (current-input-method | 86 | (current-input-method |
| 68 | ("" (:eval | 87 | (:eval |
| 69 | (if current-input-method | 88 | (propertize current-input-method-title |
| 70 | (propertize | 89 | 'help-echo (concat ,(purecopy "Input method: ") |
| 71 | current-input-method-title | 90 | current-input-method |
| 72 | 'help-echo (concat ,(purecopy "Input method: ") | 91 | ,(purecopy ". mouse-2 toggles, \ |
| 73 | current-input-method | 92 | mouse-3 describes")) |
| 74 | ". mouse-2 toggles, mouse-3 describes") | 93 | 'local-map mode-line-input-method-map))) |
| 75 | 'local-map ,(purecopy | 94 | ,(propertize "%Z" |
| 76 | (let ((map (make-sparse-keymap))) | 95 | 'help-echo (purecopy "Coding system information: \ |
| 77 | (define-key map [mode-line mouse-2] | 96 | see M-x describe-coding-system"))) |
| 78 | (lambda (e) | ||
| 79 | (interactive "e") | ||
| 80 | (save-selected-window | ||
| 81 | (select-window | ||
| 82 | (posn-window (event-start e))) | ||
| 83 | (toggle-input-method) | ||
| 84 | (force-mode-line-update)))) | ||
| 85 | (define-key map [mode-line mouse-3] | ||
| 86 | (lambda (e) | ||
| 87 | (interactive "e") | ||
| 88 | (save-selected-window | ||
| 89 | (select-window | ||
| 90 | (posn-window (event-start e))) | ||
| 91 | (describe-input-method)))) | ||
| 92 | map))))))) | ||
| 93 | ,(propertize | ||
| 94 | "%Z" 'help-echo | ||
| 95 | (purecopy "Coding system information: see M-x describe-coding-system"))) | ||
| 96 | "Mode-line control for displaying information of multilingual environment. | 97 | "Mode-line control for displaying information of multilingual environment. |
| 97 | Normally it displays current input method (if any activated) and | 98 | Normally it displays current input method (if any activated) and |
| 98 | mnemonics of the following coding systems: | 99 | mnemonics of the following coding systems: |
| @@ -197,6 +198,9 @@ Switch to the most recently selected buffer other than the current one." | |||
| 197 | (interactive) | 198 | (interactive) |
| 198 | (switch-to-buffer (other-buffer))) | 199 | (switch-to-buffer (other-buffer))) |
| 199 | 200 | ||
| 201 | (defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\ | ||
| 202 | Menu of mode operations in the mode line.") | ||
| 203 | |||
| 200 | (defun mode-line-mode-menu-1 (event) | 204 | (defun mode-line-mode-menu-1 (event) |
| 201 | (interactive "e") | 205 | (interactive "e") |
| 202 | (save-selected-window | 206 | (save-selected-window |
| @@ -210,36 +214,25 @@ Switch to the most recently selected buffer other than the current one." | |||
| 210 | (defun mode-line-mode-name () "\ | 214 | (defun mode-line-mode-name () "\ |
| 211 | Return a string to display in the mode line for the current mode name." | 215 | Return a string to display in the mode line for the current mode name." |
| 212 | (let (length (result mode-name)) | 216 | (let (length (result mode-name)) |
| 213 | (when mode-line-mouse-sensitive-p | 217 | (let ((local-map (get-text-property 0 'local-map result)) |
| 214 | (let ((local-map (get-text-property 0 'local-map result)) | 218 | (help-echo (get-text-property 0 'help-echo result))) |
| 215 | (help-echo (get-text-property 0 'help-echo result))) | 219 | (setq result (copy-sequence result)) |
| 216 | (setq result (copy-sequence result)) | 220 | ;; Add `local-map' property if there isn't already one. |
| 217 | ;; Add `local-map' property if there isn't already one. | 221 | (when (and (null local-map) |
| 218 | (when (and (null local-map) | 222 | (null (next-single-property-change 0 'local-map result))) |
| 219 | (null (next-single-property-change 0 'local-map result))) | 223 | (put-text-property 0 (length result) |
| 220 | (put-text-property 0 (length result) | 224 | 'local-map mode-line-minor-mode-keymap result)) |
| 221 | 'local-map mode-line-minor-mode-keymap result)) | 225 | ;; Add `help-echo' property if there isn't already one. |
| 222 | ;; Add `help-echo' property if there isn't already one. | 226 | (when (and (null help-echo) |
| 223 | (when (and (null help-echo) | 227 | (null (next-single-property-change 0 'help-echo result))) |
| 224 | (null (next-single-property-change 0 'help-echo result))) | 228 | (put-text-property 0 (length result) |
| 225 | (put-text-property 0 (length result) | 229 | 'help-echo "mouse-3: minor mode menu" result))) |
| 226 | 'help-echo "mouse-3: minor mode menu" result)))) | ||
| 227 | result)) | 230 | result)) |
| 228 | 231 | ||
| 229 | (defmacro bound-and-true-p (var) | 232 | (defmacro bound-and-true-p (var) |
| 230 | "Return the value of symbol VAR if it is bound, else nil." | 233 | "Return the value of symbol VAR if it is bound, else nil." |
| 231 | `(and (boundp (quote ,var)) ,var)) | 234 | `(and (boundp (quote ,var)) ,var)) |
| 232 | 235 | ||
| 233 | (defvar mode-line-mouse-sensitive-p nil "\ | ||
| 234 | Non-nil means mode line has been made mouse-sensitive.") | ||
| 235 | |||
| 236 | (defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\ | ||
| 237 | Menu of mode operations in the mode line.") | ||
| 238 | |||
| 239 | ;; These bindings were defined inside | ||
| 240 | ;; `make-mode-line-mouse-sensitive', but then invoking `x-popup-menu' | ||
| 241 | ;; with `mode-line-mode-menu' lost because the menu items were in | ||
| 242 | ;; purespace. | ||
| 243 | (define-key mode-line-mode-menu [abbrev-mode] | 236 | (define-key mode-line-mode-menu [abbrev-mode] |
| 244 | `(menu-item ,(purecopy "Abbrev") abbrev-mode | 237 | `(menu-item ,(purecopy "Abbrev") abbrev-mode |
| 245 | :button (:toggle . abbrev-mode))) | 238 | :button (:toggle . abbrev-mode))) |
| @@ -274,42 +267,34 @@ Menu of mode operations in the mode line.") | |||
| 274 | `(menu-item ,(purecopy "Overwrite") overwrite-mode | 267 | `(menu-item ,(purecopy "Overwrite") overwrite-mode |
| 275 | :button (:toggle . overwrite-mode))) | 268 | :button (:toggle . overwrite-mode))) |
| 276 | 269 | ||
| 277 | (defun make-mode-line-mouse-sensitive () | 270 | (defun mode-line-mode-menu (event) |
| 278 | (when (and window-system | 271 | (interactive "@e") |
| 279 | (not mode-line-mouse-sensitive-p)) | 272 | (x-popup-menu event mode-line-mode-menu)) |
| 280 | (setq mode-line-mouse-sensitive-p t) | 273 | |
| 281 | (defun mode-line-mode-menu (event) | 274 | ;; Add menu of buffer operations to the buffer identification part |
| 282 | (interactive "@e") | 275 | ;; of the mode line. |
| 283 | (x-popup-menu event mode-line-mode-menu)) | 276 | (let ((map (make-sparse-keymap))) |
| 284 | 277 | (define-key map [mode-line mouse-1] 'mode-line-other-buffer) | |
| 285 | ;; Add menu of buffer operations to the buffer identification part | 278 | (define-key map [header-line mouse-1] 'mode-line-other-buffer) |
| 286 | ;; of the mode line. | 279 | (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer) |
| 287 | (let ((map (make-sparse-keymap))) | 280 | (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer) |
| 288 | (define-key map [mode-line mouse-1] 'mode-line-other-buffer) | 281 | (define-key map [mode-line mouse-2] 'bury-buffer) |
| 289 | (define-key map [header-line mouse-1] 'mode-line-other-buffer) | 282 | (define-key map [header-line mouse-2] 'bury-buffer) |
| 290 | (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer) | 283 | (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu) |
| 291 | (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer) | 284 | (define-key map [header-line down-mouse-3] 'mouse-buffer-menu) |
| 292 | (define-key map [mode-line mouse-2] 'bury-buffer) | 285 | (setq mode-line-buffer-identification-keymap map) |
| 293 | (define-key map [header-line mouse-2] 'bury-buffer) | 286 | (setq-default mode-line-buffer-identification |
| 294 | (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu) | 287 | (list (propertize "%12b" |
| 295 | (define-key map [header-line down-mouse-3] 'mouse-buffer-menu) | 288 | 'face '(:weight bold) |
| 296 | (setq mode-line-buffer-identification-keymap map) | 289 | 'help-echo (purecopy "mouse-1: other \ |
| 297 | (setq-default mode-line-buffer-identification | 290 | buffer, mouse-2: prev, M-mouse-2: next, mouse-3: buffer menu") |
| 298 | (list (propertize "%12b" | 291 | 'local-map map)))) |
| 299 | 'face '(:weight bold) | 292 | |
| 300 | 'help-echo | 293 | ;; Menu of minor modes. |
| 301 | "mouse-1: other buffer, mouse-2: \ | 294 | (let ((map (make-sparse-keymap))) |
| 302 | prev, M-mouse-2: next, mouse-3: buffer menu" | 295 | (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) |
| 303 | 'local-map map)))) | 296 | (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) |
| 304 | 297 | (setq mode-line-minor-mode-keymap map)) | |
| 305 | ;; Menu of minor modes. | ||
| 306 | (let ((map (make-sparse-keymap))) | ||
| 307 | (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) | ||
| 308 | (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) | ||
| 309 | (setq mode-line-minor-mode-keymap map)) | ||
| 310 | |||
| 311 | (force-mode-line-update))) | ||
| 312 | |||
| 313 | 298 | ||
| 314 | ;; These variables are used by autoloadable packages. | 299 | ;; These variables are used by autoloadable packages. |
| 315 | ;; They are defined here so that they do not get overridden | 300 | ;; They are defined here so that they do not get overridden |