2011-12-01 77 views
4

内只有一个孤独emacs的帧为中心的文本我频繁地切换EDITTING 70列的文本文件(胶乳)和120列的程序文件(.h/.cpp文件)之间。我想继续使用一个emacs框架,而不调整它的大小或创建额外的框架。在emacs的窗口

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

你知道做居中显示文本的方法,同时也保证了文本文件保持在正确的锯齿?

+0

切换到希伯来语? (从右到左):P听起来好像你通常在一个*窗口中编辑* - 你是否会开放一个解决方案,它自动为你安排窗口 - 一个用于编辑代码的文本,两个并排用于文本(左边的是空的/未使用的)? –

+0

在两个窗口之间切换确实很容易。在Mac上,切换的按键甚至比emacs中的C-x o或C-x b业务更简短。但美观是不好的。因为我只需要emacs而没有其他任何东西,所以我的显示非常整洁:只有这一个窗口。有两个窗口意味着来自较低较大窗口的文本将可见并且混乱我的视图。 – Calaf

+0

您可以并排排列窗口,左侧空白窗口占50列。 –

回答

5

您可以尝试通过提高边缘的尺寸缩小了框架。例如:

(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

美妙的,但它是唯一有用的,如果它是自动的。如何在编辑.tex文件时触发这种情况,但在编辑.txt文件,Makefile或直接缓冲区时不会触发这种情况? – Calaf

+1

@Calaf我更新了解决方案的自动化答案,可以自定义以适应您的Emacs使用情况。 –

0

EmacsWiki对shrink-wrapping frames一页。您可以使用那里引用的库和代码来根据需要自动缩小和增大您的Emacs框架。

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”下面添加文件扩展名。

+0

用户试图获得帮助,使这个片段工作http://emacs.stackexchange.com/q/4112/115你能帮忙吗? (s)他没有足够的代表评论答案。 –