有没有办法只在Emacs中改变窗口的条纹大小?

时间:2014-06-07 06:23:57

标签: emacs

当我使用

更改emacs中的条纹时
 (set-fringe-mode 0)

它会影响所有窗口。有没有办法只改变一个窗口的条纹尺寸?我想改变边缘取决于我正在处理的窗口的模式(让我们说一个边缘用于有代码的窗口,另一个用于编辑markdown)我目前还没能这样做。 / p>

非常感谢!

2 个答案:

答案 0 :(得分:5)

函数set-window-fringes允许您自定义特定窗口的条纹:

(set-window-fringes (selected-window) 0 0)

这会将当前窗口左右边缘的宽度设置为0像素。您可以更改值以满足您的需要(第一个数字参数控制左边缘的宽度,第二个数字参数控制右边缘的宽度)。

您可以在函数中将调用包装到set-window-fringes,并将该函数添加到要为其自定义边缘的模式的挂钩中:

(defun hide-fringes ()
  (set-window-fringes (selected-window) 0 0))

(add-hook 'markdown-mode-hook 'hide-fringes)

请注意,您也可以使用lambda函数(如@Dan建议的那样),但在向钩子添加自定义代码时,最好将其包装在函数中以便能够轻松实现再次从钩子中删除(通过remove-hook)。

答案 1 :(得分:0)

set-window-fringes将在缓冲区本地的基础上执行此操作,因此在模式启动挂钩中沿(set-window-fringes nil 8 8)行调用它,其中8s(或您喜欢的任何内容)引用左右像素宽度。所以,例如对于文本模式:

(add-hook 'text-mode-hook
          (lambda ()
            (set-window-fringes nil 8 8)))