LINUX.ORG.RU

Помогите написать скрипт для Emacs :)


0

1

Хотелось бы иметь скрипт, который временно переключал(aka toggle) шрифт в текущем буфере на другой, не моноширинный.
Нужно для того, чтобы ЧИТАТЬ код. Забиндить set-default-font я и сам могу. Спасибо.
(на крайний случай toggle'инг default-font тоже сойдет)

Вот еще вопрос к знатокам: Как вы относитесь к easy customize? Кое-кто тут писал, что Ъ должны сами наполнять init скрипты, а по мне, так очень удобно конфигурировать Emacs через customize интерфейс. (переносить и объединять .emacs только неудобно, но who cares? — сейчас работает и ОК)

Хотелось бы иметь скрипт, который временно переключал(aka toggle) шрифт в текущем буфере на другой, не моноширинный.

set-frame-font

Как вы относитесь к easy customize?

нормально, пользуюсь иногда, правда устоявшиеся вещи обычно разношу по отдельным конфигам

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

set-frame-font

Уже ближе? А для буфера можно?
Не понятно еще как проверить текущий шрифт, чтобы реализовать toggle. Хочу что-то вроде такого, только для шрифта:

(if (eq (frame-parameter (next-frame) 'background-mode) 'dark)
    (light-theme)
  (dark-theme)))

nei8Adai
() автор топика
Ответ на: комментарий от nei8Adai

А для буфера можно?

повесить проверку к хуку на смену буфера

Не понятно еще как проверить текущий шрифт, чтобы реализовать toggle.

проще всего будет make-local-variable с флагом

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Спасибо, а я уже написал кое-чего.

(setq font-list 
      '((monospaced . "Ubuntu Mono-12")
      (nice . "Ubuntu-12")))

(setq font-selected 'monospaced)

(defun font-select (font)
  (set-frame-font (cdr (assq font font-list)))
  (setq font-selected font))

(defun font-toggle ()
  (interactive)
  (if (eq font-selected 'monospaced)
      (font-select 'nice)
    (font-select 'monospaced)))

(global-set-key (kbd "M-<f9>") 'font-toggle)

nei8Adai
() автор топика
Ответ на: комментарий от nei8Adai

Я так понимаю, с буфером только если костыль: при переключении на другой буфер, изменять шрифт во всех; так что вариант с set-frame-font меня устроит.

nei8Adai
() автор топика
Ответ на: комментарий от nei8Adai

с буфером только если костыль: при переключении на другой буфер, изменять шрифт во всех

да вроде нет, текущий достаточно отслеживать

на window-configuration-change-hook попробуй повеситься

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Версия 2.0

(setq font-list 
      '((monospaced . "Ubuntu Mono-12")
      (nice . "Ubuntu-11")))

(setq font-selected 'monospaced)
(make-variable-buffer-local 'font-selected)

(defun font-reset ()
  (set-frame-font (cdr (assq font-selected font-list))))

(defun font-select (font)
  (setq font-selected font)
  (font-reset))

(defun font-toggle ()
  (interactive)
  (if (eq font-selected 'monospaced)
      (font-select 'nice)
    (font-select 'monospaced)))

(add-hook 'window-configuration-change-hook 'font-reset)
(global-set-key (kbd "C-x o") (lambda ()
				(interactive)
				(other-window 1)
				(font-reset)))

(global-set-key (kbd "M-<f9>") 'font-toggle)
nei8Adai
() автор топика
Ответ на: Версия 2.0 от nei8Adai

(global-set-key (kbd «C-x o») (lambda ()

(interactive) (other-window 1) (font-reset)))

для этого можно просто использовать defadvice

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.