有没有办法只在Emacs中更改窗口的边缘尺寸?

有没有办法只在Emacs中更改窗口的边缘尺寸?,emacs,Emacs,当我在emacs中使用 (set-fringe-mode 0) 它影响所有窗口。有没有办法只改变一个窗口的条纹尺寸?我想根据我正在处理的窗口的模式来更改边缘(比如一个边缘用于有代码的窗口,另一个用于编辑标记),但目前我还不能这样做 非常感谢 功能设置窗口边缘允许您自定义特定窗口的边缘: (set-window-fringes (selected-window) 0 0) 这将当前窗口的左边缘和右边缘的宽度设置为0像素。您可以根据需要更改值(第一个数字参数控制左条纹的宽度,第二个数字参数控制

当我在emacs中使用

 (set-fringe-mode 0)
它影响所有窗口。有没有办法只改变一个窗口的条纹尺寸?我想根据我正在处理的窗口的模式来更改边缘(比如一个边缘用于有代码的窗口,另一个用于编辑标记),但目前我还不能这样做


非常感谢

功能
设置窗口边缘
允许您自定义特定窗口的边缘:

(set-window-fringes (selected-window) 0 0)
这将当前窗口的左边缘和右边缘的宽度设置为
0
像素。您可以根据需要更改值(第一个数字参数控制左条纹的宽度,第二个数字参数控制右条纹的宽度)

您可以将对
set window fronges
的调用包装在一个函数中,并将该函数添加到要自定义条纹的模式的挂钩中:

(取消隐藏条纹()
(设置窗口边缘(选定窗口)0)
(添加挂钩“降价模式挂钩”隐藏条纹)

请注意,您也可以为此目的使用
lambda
函数(正如@Dan所建议的),但在向挂钩添加自定义代码时,最好将其包装在函数中,以便能够轻松地再次将其从挂钩中移除(通过
移除挂钩
)。

设置窗口边缘将在缓冲区本地执行此操作,因此,在模式启动钩子中,沿着
(将窗口边缘设置为nil 8)
的线条调用它,其中8s(或任何您喜欢的)表示左右两侧的像素宽度。因此,例如,对于文本模式:

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

呜呜!你发原件的时候一定是在写我的答案@拉法:请接受@itsjeyd的回答。顺便说一下:第一个参数
nil
默认为所选窗口。@Dan是的,我想是这样的,你比我晚了几分钟。谢谢你做了一个好运动!!也许我们应该开始合作解决Emacs问题的CW答案…;)当然当人们很友好的时候,这个地方真是太棒了。