Emacs:如何设置边距以在分屏时自动调整?
Emacs: how to set margins to automatically adjust when in split-screen?
我是一名历史学家,试图配置 Emacs 以高效地撰写学术论文。考虑到这个目标,我决定向 Emacs 缓冲区添加边距。最终结果看起来像 this,并且是通过以下代码实现的:
;; Margins function
(defun my-set-margins ()
"Set margins in current buffer."
(setq left-margin-width 26)
(setq right-margin-width 26))
;; Add margins by default to a mode
(add-hook 'org-mode-hook 'my-set-margins)
问题是当我垂直分割屏幕时,边距使文本变得不可读。因此,我得出的结论是,有必要(1)让 Emacs 在垂直分屏期间自动删除边距,并在单屏时将它们放回去;或 (2) 创建一个键盘快捷键来切换边距。关于如何做的任何想法?提前致谢!
文档指出设置 left-margin-width
或 right-margin-width
不会立即影响 window。 window 中显示新缓冲区时会检查这些变量。因此,您可以通过调用 set-window-buffer
使更改生效。 https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Margins.html
以下函数检查边距是否大于 0,并根据其打开或关闭。我使用 f5
键将交互功能绑定到 global-map
。
(defun my-toggle-margins ()
"Set margins in current buffer."
(interactive)
(if (or (> left-margin-width 0) (> right-margin-width 0))
(progn
(setq left-margin-width 0)
(setq right-margin-width 0)
(set-window-buffer (selected-window) (current-buffer)))
(setq left-margin-width 26)
(setq right-margin-width 26)
(set-window-buffer (selected-window) (current-buffer))))
(global-set-key [f5] 'my-toggle-margins)
我是一名历史学家,试图配置 Emacs 以高效地撰写学术论文。考虑到这个目标,我决定向 Emacs 缓冲区添加边距。最终结果看起来像 this,并且是通过以下代码实现的:
;; Margins function
(defun my-set-margins ()
"Set margins in current buffer."
(setq left-margin-width 26)
(setq right-margin-width 26))
;; Add margins by default to a mode
(add-hook 'org-mode-hook 'my-set-margins)
问题是当我垂直分割屏幕时,边距使文本变得不可读。因此,我得出的结论是,有必要(1)让 Emacs 在垂直分屏期间自动删除边距,并在单屏时将它们放回去;或 (2) 创建一个键盘快捷键来切换边距。关于如何做的任何想法?提前致谢!
文档指出设置 left-margin-width
或 right-margin-width
不会立即影响 window。 window 中显示新缓冲区时会检查这些变量。因此,您可以通过调用 set-window-buffer
使更改生效。 https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Margins.html
以下函数检查边距是否大于 0,并根据其打开或关闭。我使用 f5
键将交互功能绑定到 global-map
。
(defun my-toggle-margins ()
"Set margins in current buffer."
(interactive)
(if (or (> left-margin-width 0) (> right-margin-width 0))
(progn
(setq left-margin-width 0)
(setq right-margin-width 0)
(set-window-buffer (selected-window) (current-buffer)))
(setq left-margin-width 26)
(setq right-margin-width 26)
(set-window-buffer (selected-window) (current-buffer))))
(global-set-key [f5] 'my-toggle-margins)