更改emacs文本模式的边距

Maj*_*ggs 4 emacs hook elisp margins

我发现改变emacs边距的唯一方法就是这样:

(add-hook 'window-configuration-change-hook
          (lambda ()
            (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 24 24)))
Run Code Online (Sandbox Code Playgroud)

我想仅在文本模式下调用此设置,并在更改为其他模式时更改回来.有点天真,我试过这个:

(add-hook 'text-mode-hook
          (lambda ()
            (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 24 24)))
Run Code Online (Sandbox Code Playgroud)

但它不起作用.只有在文本模式下缓冲区才能更改边距的正确代码是什么?

Lin*_*cer 7

即使您可以使用设置边距set-window-margins,一旦您以任何方式更改窗口,它们就会丢失.更好的解决方案是设置变量left-margin-widthright-margin-width.例如:

(defun my-set-margins ()
  "Set margins in current buffer."
  (setq left-margin-width 24)
  (setq right-margin-width 24))

(add-hook 'text-mode-hook 'my-set-margins)
Run Code Online (Sandbox Code Playgroud)