Временно изменить размер текста в режиме строки и минибуфера?

10

Работая с другими людьми за общим монитором или через общий доступ к экрану (например, Google Hangout), я часто использую text-scale-adjust( C-x C-+), чтобы другим было легче читать мой экран.

Я хотел бы иметь возможность временно увеличить размер текста строки режима и минибуфера в выбранном кадре. Такая возможность уже существует? Если нет, я мог бы подумать, как написать это сам ... в конце концов.

Колин Фрейзер
источник

Ответы:

9

Масштабирование текста увеличивает текст определенного буфера везде, где он отображается.

То, что вы хотите сделать, это увеличить конкретный кадр, а не просто масштабировать текст определенного буфера.

Команды zoom-in, zoom-outи zoom-in/out библиотеки zoom-frm.elпозволяют вам делать обе эти вещи легко и постепенно.

С клавиатуры команда zoom-in/out- это все, что вам нужно - используйте ее вместо text-scale-adjust:

(define-key ctl-x-map [(control ?+)] 'zoom-in/out)
(define-key ctl-x-map [(control ?-)] 'zoom-in/out)
(define-key ctl-x-map [(control ?=)] 'zoom-in/out)
(define-key ctl-x-map [(control ?0)] 'zoom-in/out)

Вы можете связать zoom-inи zoom-outс колесом мыши поворотов :

(global-set-key (vector (list 'control mouse-wheel-down-event)) 'zoom-in)
(global-set-key (vector (list 'control mouse-wheel-up-event))   'zoom-out)

Я также связываю их для масштабирования щелчком мыши :

(global-set-key [S-mouse-1]    'zoom-in)
(global-set-key [C-S-mouse-1]  'zoom-out)
;; Get rid of `mouse-set-font' or `mouse-appearance-menu':
(global-set-key [S-down-mouse-1] nil)

Эти zoom-frm.elкоманды могут вести себя как text-scale-adjust, масштабирование буфер везде , где она отображается, или же они могут увеличить весь один кадр (все его окна, в том числе minibuffers; его режим линию; его полосу прокрутки; и т.д.).

Нажмите C-uв любое время, используя эти команды для переключения между масштабированием буфера и масштабированием кадра . Тип масштабирования (буфер или кадр), который вы получаете по умолчанию, определяется опцией zoom-frame/buffer. C-uс командой масштабирования переключает опцию.

Нарисовалась
источник
5

C-x C-0/-/=Привязки по умолчанию отлично справляются с изменением размера шрифта. Но они применяются только к буферу, где они используются. Они не изменяют размеры шрифта для текста вне буфера, например, в строке состояния, мини-буфере или других буферах.

Функция ниже также изменяет размер шрифта в этих областях, глобально.

Вы можете использовать default-font-size-ptпеременную, чтобы установить размер шрифта по умолчанию для каждого сеанса emacs.

(setq default-font-size-pt 12)

(defun modi/font-size-adj (&optional arg)
  "The default C-x C-0/-/= bindings do an excellent job of font resizing.
They, though, do not change the font sizes for the text outside the buffer,
example in mode-line. Below function changes the font size in those areas too.

M-<NUM> M-x modi/font-size-adj increases font size by NUM points if NUM is +ve,
                               decreases font size by NUM points if NUM is -ve
                               resets    font size if NUM is 0."
  (interactive "p")
  (if (= arg 0)
      (setq font-size-pt default-font-size-pt)
    (setq font-size-pt (+ font-size-pt arg)))
  ;; The internal font size value is 10x the font size in points unit.
  ;; So a 10pt font size is equal to 100 in internal font size value.
  (set-face-attribute 'default nil :height (* font-size-pt 10)))

(defun modi/font-size-incr ()  (interactive) (modi/font-size-adj +1))
(defun modi/font-size-decr ()  (interactive) (modi/font-size-adj -1))
(defun modi/font-size-reset () (interactive) (modi/font-size-adj 0))

(modi/font-size-reset) ; Initialize font-size-pt var to the default value

Корректировка шрифта может быть осуществлена ​​с помощью hydraпакета.

(require 'hydra)
(defhydra hydra-font-resize
    (global-map "C-M-=")
  "font-resize"
  ("-"   modi/font-size-decr  "Decrease")
  ("="   modi/font-size-incr  "Increase")
  ("0"   modi/font-size-reset "Reset to default size"))

Примеры использования:

  • Увеличить шрифт на 4 пункта C-M-= = = = =
  • Уменьшить шрифт на 6 пунктов C-M-= - - - - - -
  • Сбросить шрифт до установленного размера точки по умолчанию C-M-= 0
  • Вы не совсем уверены, какой размер шрифта вы хотите иметь, большим или маленьким :) C-M-= = = = - - = = - - 0 - - = =

Не стесняйтесь менять C-M-=префикс на любой другой по своему вкусу.

Каушал Моди
источник