[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 1865c0d 04/11: Added support for `mode-line-mode-menu'
From: |
Phil |
Subject: |
[elpa] master 1865c0d 04/11: Added support for `mode-line-mode-menu' |
Date: |
Wed, 13 Jul 2016 13:25:58 +0000 (UTC) |
branch: master
commit 1865c0d5599d12cb42814941ccba77b0fc070cab
Author: Phil Sainty <address@hidden>
Commit: Phil Sainty <address@hidden>
Added support for `mode-line-mode-menu'
---
delight.el | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 52 insertions(+), 8 deletions(-)
diff --git a/delight.el b/delight.el
index 840d03e..8e88e2e 100644
--- a/delight.el
+++ b/delight.el
@@ -1,10 +1,10 @@
-;;; delight.el - A dimmer switch for your lighter text.
+;;; delight.el --- A dimmer switch for your lighter text.
;;
;; Author: Phil S.
;; URL: http://www.emacswiki.org/emacs/DelightedModes
-;; Version: 1.02
+;; Version: 1.03
-;; Commentary:
+;;; Commentary:
;;
;; Enables you to customise the mode names displayed in the mode line.
;;
@@ -52,9 +52,12 @@
;;; Changelog:
;;
-;; 1.02 - Bug fix for missing 'cl requirement for destructuring-bind macro.
-;; 1.01 - Added support for using the keyword :major as the FILE argument
-;; for major modes, to avoid also processing them as minor modes.
+;; 1.03 (2014-05-30) Added support for `mode-line-mode-menu'.
+;; 1.02 (2014-05-04) Bug fix for missing 'cl requirement for
+;; destructuring-bind macro.
+;; 1.01 (2014-05-04) Allow the keyword :major as the FILE argument for
+;; major modes, to avoid also processing them as minor modes.
+;; 1.00 (2013-06-25) Initial release.
;;; Code:
@@ -81,7 +84,8 @@ replacement buffer-local `mode-name' value to use when a
buffer changes to
that mode.
In both cases VALUE is commonly a string, but may in fact contain any valid
-mode-line construct. See `mode-line-format' for details.
+mode-line construct. For details see the `mode-line-format' variable, and
+Info node `(elisp) Mode Line Format'.
The FILE argument is passed through to `eval-after-load'. If FILE is nil then
the mode symbol is passed as the required feature. Both of these cases are
@@ -99,7 +103,46 @@ to prevent the mode being treated as a minor mode."
(eval-after-load (or file mode)
`(let ((minor-delight (assq ',mode minor-mode-alist)))
(when minor-delight
- (setcar (cdr minor-delight) ',value)))))))))
+ (setcar (cdr minor-delight) ',value)
+ (delight-mode-line-mode-menu ',mode ',value)))))))))
+
+(defun delight-mode-line-mode-menu (mode value)
+ "Delight `mode-line-mode-menu' (the \"Toggle minor modes\" menu)
+so that the Lighter text displayed in the menu matches that displayed in
+the mode line (when such menu items exist).
+
+The expected naming scheme for the menu items is: \"Friendly name (Lighter)\"
+e.g.: \"Highlight changes (Chg)\".
+
+We replace the \"Lighter\" portion of that with our delighted VALUE, for the
+specified MODE, unless VALUE is empty/nil, in which case we remove the text
+and parentheses altogether.
+
+If the delighted VALUE is not a string and not nil, we do nothing."
+ (when (string-or-null-p value)
+ (let* ((menu-keymap mode-line-mode-menu)
+ (menu-item (assq mode (cdr menu-keymap))))
+ (when menu-item
+ ;; Lighter text is typically prefixed with a space to separate
+ ;; it from the preceding lighter. We need to trim that space.
+ (let* ((trimmed-value (if (and value (string-match "\\`\\s-+" value))
+ (replace-match "" t t value)
+ value))
+ (wrapped-value (if (> (length trimmed-value) 0)
+ (concat " (" trimmed-value ")")
+ ""))
+ (menu-def (cdr menu-item))
+ (label (cadr menu-def))
+ (new-label (and (stringp label)
+ (or (string-match "\\s-+(.+?)\\s-*\\'" label)
+ (string-match "\\s-*\\'" label))
+ (replace-match wrapped-value t t label))))
+ (when new-label
+ ;; Pure storage is used for the default menu items, so we
+ ;; cannot modify those objects directly.
+ (setq menu-def (copy-sequence menu-def))
+ (setf (cadr menu-def) new-label)
+ (define-key menu-keymap (vector mode) menu-def)))))))
(defun delight-major-mode ()
"Delight the 'pretty name' of the current buffer's major mode
@@ -120,3 +163,4 @@ When `mode-name' is displayed in other contexts (such as in
the
ad-do-it))
(provide 'delight)
+;;; delight.el ends here
- [elpa] master updated (a1cdea0 -> 1dca70f), Phil, 2016/07/13
- [elpa] master 1dca70f 11/11: externals-list: Add delight, Phil, 2016/07/13
- [elpa] master 35e5d31 03/11: Bug fix for missing 'cl requirement for destructuring-bind macro, Phil, 2016/07/13
- [elpa] master e0fe27b 01/11: Original release., Phil, 2016/07/13
- [elpa] master e38a9f1 02/11: Added support for FILE argument :major, Phil, 2016/07/13
- [elpa] master 0882ecb 05/11: Respect `inhibit-mode-name-delight' when already set, Phil, 2016/07/13
- [elpa] master d31e024 06/11: Support FILE value t, meaning the minor MODE is already loaded, Phil, 2016/07/13
- [elpa] master ca6b614 10/11: Add 'packages/delight/' from commit 'cd037ed41ae29dda89e36ff2ac8637aea96acded', Phil, 2016/07/13
- [elpa] master d23fb65 08/11: Added 'Maintainer' header, Phil, 2016/07/13
- [elpa] master 1865c0d 04/11: Added support for `mode-line-mode-menu',
Phil <=
- [elpa] master cd037ed 09/11: Changed the URL header to point to Savannah, Phil, 2016/07/13
- [elpa] master 3c19dee 07/11: Updated v1.05 for Savannah and GNU ELPA, Phil, 2016/07/13