【问题标题】:how to stop Emacs from opening new buffers when following a link in customization如何在自定义链接中阻止 Emacs 打开新缓冲区
【发布时间】:2011-06-19 15:50:54
【问题描述】:

在 Emacs 中自定义选项时会出现问题。每次我单击链接时,都会创建一个新缓冲区。如何强制 Emacs 使用单缓冲区?

【问题讨论】:

    标签: emacs buffer customization


    【解决方案1】:

    试试这个:

    (defadvice custom-buffer-create (before my-advice-custom-buffer-create)
      "Exit the current Customize buffer before creating a new one, unless there are modified widgets."
      (if (eq major-mode 'Custom-mode)
          (let ((custom-buffer-done-kill t)
                (custom-buffer-modified nil))
            (mapc (lambda (widget)
                    (and (not custom-buffer-modified)
                         (eq (widget-get widget :custom-state) 'modified)
                         (setq custom-buffer-modified t)))
                  custom-options)
            (if (not custom-buffer-modified)
                (Custom-buffer-done)))))
    (ad-activate 'custom-buffer-create)
    

    【讨论】:

    • 编辑:将建议从 customize-group 更改为 custom-buffer-create
    • 请注意,如果您尚未在当前自定义缓冲区中保存更改,当您更改为新缓冲区时,您将丢失这些编辑。
    • 解决了上一条评论中的问题。欢迎对代码进行改进。
    • 这正是我想要的。谢谢你。至于 ibuffer,我现在不需要它,因为我是 emacs noobie。也许在未来。再次感谢。
    【解决方案2】:

    作为我最初的答案(我自己不倾向于使用)的替代方案,我想我可能会建议您在完成自定义内容后处理摆脱大量自定义缓冲区的其他方法。

    首先,请注意,只需按 q 将“根据 `custom-buffer-done-kill' 退出当前自定义缓冲区”(即,要么埋掉它,要么杀死它)。

    其次是使用Mx kill-matching-buffers RET \*Customize RET (然后逐一确认),不过这样有点繁琐.

    我实际上会使用ibuffer

    如果您还没有使用它,我建议将 C-x C-b 绑定到 ibuffer,这是对默认 list-buffers 的极大增强替代。我喜欢它主要是因为它的filtering and grouping abilities,但除此之外它还可以做很多事情。

      (global-set-key (kbd "C-x C-b") 'ibuffer)
    

    我还使用当前可以找到的建议 here at the Emacs Wiki 以便 ibuffer 始终以我选择的缓冲区打开。

    完成后,从自定义缓冲区中,C-x C-b * M RET D y 将杀死所有自定义缓冲区。那就是:

    • C-x C-b 打开 ibuffer(点在当前自定义缓冲区条目上)
    • * M 按主要模式标记缓冲区...
    • RET ...选择模式(默认为所选缓冲区的主要模式,否则输入Custom-mode RET
    • D y 杀死所有标记的缓冲区

    试试看;你可能会喜欢它。 Searching for ibuffer 将提供其他方便的用途。

    例如,您可以使用/ n ^\* RET / g tmp RET 将所有以* 开头的缓冲区分隔到一个“tmp”组中,这样它们就不会弄乱您更可能感兴趣的缓冲区组。

    与任何主要模式一样,使用 C-h m 来阅读内置文档。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2010-12-22
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多