Здравствуйте!
Проблема такая: пишу свою функцию для центровки листа. Это очень удобно особенно на широкоформатных мониторах. Получилась такая простая toggle-функция:
(defun fringe-toggle ()
(interactive)
;; use a property “state”. Value is t or nil
(if (get 'fringe-toggle 'state)
(progn
(fringe-mode nil)
(put 'fringe-toggle 'state nil))
(progn
(fringe-mode '(200 . 200))
(put 'fringe-toggle 'state t))))
И вот ударила меня мысль в голову, сделать такую функцию, чтобы не вводить точные значения 200 . 200, а сначала определить ширину окна, после чего рассчитать ширину поля от ширины окна, тогда функция будет универсальной и пропорционально центровать буфер.
Беда в том, что я не могу никак понять. как можно заменить числа выражениями и как узнать ширину окна в emacs. Попытки поставить выражения вместо чисел приводя к ошибки формата. А вариант:
(defun my-set-margins ()
"Set margins in current buffer."
(setq left-margin-width 200)
(setq right-margin-width 200))
(add-hook 'text-mode-hook 'my-set-margins)
не работает вообще.