在emacs窗口中居中文本

时间:2011-12-01 23:28:06

标签: emacs latex

在一个孤独的emacs框架内,我经常在编辑70列文本文件(LaTeX)和120列程序(.h / .cpp文件)之间切换。我想继续使用一个emacs框架,而无需调整大小或创建其他框架。

这是问题所在。我的窗口宽度适合编辑120列程序,但在扩展文本编辑会话期间,70列出现在窗口的左侧。在一台笔记本电脑前的一天结束时,我的脖子似乎已经向左侧半永久性倾斜。

您是否了解使文本显示居中的方法,同时仍然使文本文件在右侧保持锯齿状?

3 个答案:

答案 0 :(得分:6)

您可以尝试通过增加条纹尺寸来缩小框架。例如:

(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)以包含您希望拥有大条纹的任何模式。

答案 1 :(得分:0)

EmacsWiki在shrink-wrapping frames上有一个页面。您可以使用那里引用的库和代码根据需要自动缩小和增长Emacs框架。

答案 2 :(得分:0)

;; 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"。