mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-26 07:33:47 +00:00
Make text-scale-mode optionally adjust the header line
* lisp/face-remap.el (text-scale-remap-header-line-face): New buffer local variable. (text-scale-mode): Adjust header line if above variable is non-nil. (face-remap--clear-remappings, face-remap--remap-face): New defuns. * lisp/face-remap.el: Arrange to watch text-scale-mode-remapping. (text-scale--refresh): New function. * lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Use text-scale-remap-header-line. (Bug#41852)
This commit is contained in:
parent
83b5fcb001
commit
30c437752d
12
etc/NEWS
12
etc/NEWS
@ -1516,6 +1516,18 @@ mouse now pops up a TTY menu by default instead of running the command
|
||||
'tmm-menubar'. To restore the old behavior, set the user option
|
||||
'tty-menu-open-use-tmm' to non-nil.
|
||||
|
||||
** text-scale-mode
|
||||
|
||||
---
|
||||
*** text-scale-mode can now adjust font size of the header line.
|
||||
When the new buffer local variable 'text-scale-remap-header-line'
|
||||
is non-nil, 'text-scale-adjust' will also scale the text in the header
|
||||
line when displaying that buffer.
|
||||
|
||||
This is useful for major modes that arrange their display in a tabular
|
||||
form below the header line. It is enabled by default in
|
||||
'tabulated-list-mode' and its derived modes.
|
||||
|
||||
** xwidget-webkit mode
|
||||
|
||||
*** New xwidget commands.
|
||||
|
@ -767,6 +767,7 @@ as the ewoc pretty-printer."
|
||||
(setq-local revert-buffer-function #'tabulated-list-revert)
|
||||
(setq-local glyphless-char-display
|
||||
(tabulated-list-make-glyphless-char-display-table))
|
||||
(setq-local text-scale-remap-header-line t)
|
||||
;; Avoid messing up the entries' display just because the first
|
||||
;; column of the first entry happens to begin with a R2L letter.
|
||||
(setq bidi-paragraph-direction 'left-to-right)
|
||||
|
@ -229,6 +229,39 @@ Each positive or negative step scales the default face height by this amount."
|
||||
(defvar text-scale-mode-amount 0)
|
||||
(make-variable-buffer-local 'text-scale-mode-amount)
|
||||
|
||||
(defvar text-scale-remap-header-line nil
|
||||
"If non-nil, text scaling may change font size of header lines too.")
|
||||
(make-variable-buffer-local 'text-scale-header-line)
|
||||
|
||||
(defun text-scale--refresh (symbol newval operation where)
|
||||
"Watcher for `text-scale-remap-header-line'.
|
||||
See `add-variable-watcher'."
|
||||
(when (and (eq symbol 'text-scale-remap-header-line)
|
||||
(eq operation 'set)
|
||||
text-scale-mode)
|
||||
(with-current-buffer where
|
||||
(let ((text-scale-remap-header-line newval))
|
||||
(text-scale-mode 1)))))
|
||||
(add-variable-watcher 'text-scale-remap-header-line #'text-scale--refresh)
|
||||
|
||||
(defun face-remap--clear-remappings ()
|
||||
(dolist (remapping
|
||||
;; This is a bit messy to stay backwards compatible.
|
||||
;; In the future, this can be simplified to just use
|
||||
;; `text-scale-mode-remapping'.
|
||||
(if (consp (car-safe text-scale-mode-remapping))
|
||||
text-scale-mode-remapping
|
||||
(list text-scale-mode-remapping)))
|
||||
(face-remap-remove-relative remapping))
|
||||
(setq text-scale-mode-remapping nil))
|
||||
|
||||
(defun face-remap--remap-face (sym)
|
||||
(push (face-remap-add-relative sym
|
||||
:height
|
||||
(expt text-scale-mode-step
|
||||
text-scale-mode-amount))
|
||||
text-scale-mode-remapping))
|
||||
|
||||
(define-minor-mode text-scale-mode
|
||||
"Minor mode for displaying buffer text in a larger/smaller font.
|
||||
|
||||
@ -240,19 +273,19 @@ face size by the value of the variable `text-scale-mode-step'
|
||||
The `text-scale-increase', `text-scale-decrease', and
|
||||
`text-scale-set' functions may be used to interactively modify
|
||||
the variable `text-scale-mode-amount' (they also enable or
|
||||
disable `text-scale-mode' as necessary)."
|
||||
disable `text-scale-mode' as necessary).
|
||||
|
||||
If `text-scale-remap-header-line' is non-nil, also change
|
||||
the font size of the header line."
|
||||
:lighter (" " text-scale-mode-lighter)
|
||||
(when text-scale-mode-remapping
|
||||
(face-remap-remove-relative text-scale-mode-remapping))
|
||||
(face-remap--clear-remappings)
|
||||
(setq text-scale-mode-lighter
|
||||
(format (if (>= text-scale-mode-amount 0) "+%d" "%d")
|
||||
text-scale-mode-amount))
|
||||
(setq text-scale-mode-remapping
|
||||
(and text-scale-mode
|
||||
(face-remap-add-relative 'default
|
||||
:height
|
||||
(expt text-scale-mode-step
|
||||
text-scale-mode-amount))))
|
||||
(when text-scale-mode
|
||||
(face-remap--remap-face 'default)
|
||||
(when text-scale-remap-header-line
|
||||
(face-remap--remap-face 'header-line)))
|
||||
(force-window-update (current-buffer)))
|
||||
|
||||
(defun text-scale-min-amount ()
|
||||
|
Loading…
Reference in New Issue
Block a user