2

我正在使用以下代码段为 Emacs 缓冲区的两个边缘设置 1 个字符的边距(感谢 zev!):

(add-hook 'window-configuration-change-hook
      (lambda ()
        (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 1 1)))

但是,我还希望有另一种配置,它可以给我非常宽的左右边距(比如 30 个字符)。我如何分配一个热键来在这两种状态之间切换,可能在所有缓冲区上

我尝试了以下方法:

(global-set-key [(control f10)]
(add-hook 'window-configuration-change-hook
      (lambda ()
        (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30))))

但是得到了这个错误:

Wrong type argument: commandp, ((lambda nil (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30)) (lambda nil (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 1 1)) frame-local-variables-check)

我哪里错了?感谢您的任何解释。干杯!

编辑:

我很清楚暗房模式可以提供如此大的边距。但它似乎并不能在我的 XP 上完美运行。

4

1 回答 1

2

这应该可以帮助您:

(global-set-key [C-f10]
     (lambda ()
     (interactive)
     (set-window-margins (car (get-buffer-window-list (current-buffer) nil t)) 30 30)))

您的示例不起作用,因为 global-set-key 期望第二个参数是 a command,因此出现错误。你的关键定义也有点奇怪。

对于您的评论:

(walk-windows (lambda (window) (set-window-margins window 30 30)) nil t)
于 2011-11-09T12:42:51.747 回答