当我使用
在emacs中更改边缘时 (set-fringe-mode 0)
影响所有窗口。有没有办法只更改一个窗口的条纹大小?我想根据我正在工作的窗口的模式来改变边缘(让我们说一个边缘用于有代码的窗口,另一个用于编辑标记),我目前还不能这样做。
非常感谢!
函数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
)。
set-window-fringes
将在缓冲区本地的基础上执行此操作,因此在模式启动钩子中沿着(set-window-fringes nil 8 8)
行对其进行调用,其中8(或您喜欢的任何内容)指的是左侧和右侧的像素宽度。例如,对于文本模式:
(add-hook 'text-mode-hook
(lambda ()
(set-window-fringes nil 8 8)))