Центрирование текста в окне emacs - PullRequest
4 голосов
/ 02 декабря 2011

Внутри только одного одиночного фрейма Emacs я часто переключаюсь между редактированием текстовых файлов с 70 столбцами (LaTeX) и программами с 120 столбцами (файлы .h / .cpp). Я хотел бы продолжить использовать только один кадр Emacs, не меняя его размер и не создавая дополнительные кадры.

Вот проблема. Ширина моего окна примерно подходит для редактирования программ из 120 столбцов, но во время расширенных сеансов редактирования текста 70 столбцов появляются в левой части окна. В конце дня перед ноутбуком моя шея приобрела полупостоянный наклон влево.

Известен ли вам метод, позволяющий сделать текст центрированным, но текстовые файлы по-прежнему остаются неровными справа?

Ответы [ 3 ]

6 голосов
/ 02 декабря 2011

Вы можете попробовать сузить рамку, увеличив размер полосы.Например:

(set-fringe-style '(200 . 200))

будет срезать 200 пикселей с каждой стороны основной текстовой области, оставляя рабочую область на 400 пикселей более узкой, но по-прежнему центрированной.Чтобы вернуться к обычному виду,

(set-fringe-style 'default)

вернет бахрому к нормальному размеру.

И вы можете заключить это в некоторый совет, который может пригодиться вам, если вы придерживаетесьиспользование только одного окна:

(defadvice switch-to-buffer (after switch-to-buffer-adjust-fringe activate)
  "depending on major mode, switch fringe style"
  (if (memq major-mode '(latex-mode))
  (set-fringe-style '(200 . 200))
(set-fringe-style 'default)))

Примечание: Обновите список (latex-mode), чтобы он содержал любые режимы, которые вы хотите иметь большие полосы.

0 голосов
/ 19 мая 2014
;; Add left and right margins, when file is markdown or text.
(defun center-window (window) ""
  (let* ((current-extension (file-name-extension (or (buffer-file-name) "foo.unknown")))
         (max-text-width 80)
         (margin (max 0 (/ (- (window-width window) max-text-width) 2))))
    (if (and (not (string= current-extension "md"))
             (not (string= current-extension "txt")))
        ;; Do nothing if this isn't an .md or .txt file.
        ()
      (set-window-margins window margin margin))))

;; Adjust margins of all windows.
(defun center-windows () ""
  (walk-windows (lambda (window) (center-window window)) nil 1))

;; Listen to window changes.
(add-hook 'window-configuration-change-hook 'center-windows)

Добавьте ваши расширения файлов выше, ниже "md" и "txt".

0 голосов
/ 02 декабря 2011

EmacsWiki имеет страницу о термоусадочных фреймах .Вы можете использовать библиотеки и код, на которые есть ссылки, чтобы автоматически сжимать и увеличивать фрейм Emacs по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...