【问题标题】:How to apply changes to emacs .el files如何将更改应用到 emacs .el 文件
【发布时间】:2011-10-11 17:56:29
【问题描述】:

如何将更改应用到 emacs .el 文件?

我做了以下事情:

  1. # locate buff-menu

/usr/share/emacs/22.1/lisp/buff-menu.el.gz
/usr/share/emacs/22.1/lisp/buff-menu.elc

  1. 修改/usr/share/emacs/22.1/lisp/buff-menu.el.gz - 在Buffer-menu-select 文档部分添加一些自定义字母。

  2. # rm /usr/share/emacs/22.1/lisp/buff-menu.elc

  3. 字节编译/usr/share/emacs/22.1/lisp/buff-menu.el.gz

启动 emacs 并查看 Buffer-menu-select 的旧描述

【问题讨论】:

  • 您确定要修改系统安装的库吗?未来的系统更新可能会消除这些更改。
  • jtahlborn:尝试可能不同,但问题仍然存在。
  • 你确定这是你唯一的 buff-menu 副本吗? locate 可能会过时,您所描述的内容应该会导致您修改后的 buff-menu 代码运行。
  • M-x locate-library 在 Emacs 中告诉你什么?您还应该在 *Messages* 缓冲区中看到加载库时加载库的位置。
  • 如果您确实需要编辑文件,find-library 可以直接将您带到那里(但同样,您几乎肯定不需要)。

标签: emacs lisp elisp


【解决方案1】:

如果您告诉我们您到底想要什么,我们可以更轻松地回答您 去做。事实上,定制 Emacs 的正确方法是 更改 Emacs 系统库中的 .el。

  • 要更改定义,您可以:

    • 使用建议(查看defadvice 的文档)
    • 使用新的defun,您将在eval-after-load 中进行评估

      (eval-after-load 'buff-menu
         '(defun Buffer-menu-mark ()
             "do nothing"
             (interactive)))
      
  • 要添加键绑定,您可以再次使用eval-after-load

        (eval-after-load 'buff-menu
           '(define-key Buffer-menu-mode-map "M" 'Buffer-menu-mark))
    

【讨论】:

  • 我想改变windows的布局方式。当使用m*Buffer List* 窗口中选择2 个或更多缓冲区然后键入v 时,我已经得到了所有带有水平分隔符的标记缓冲区。但我想要一个垂直分隔符,或者一个窗口矩阵。
  • 查看代码源后,需要重新定义Buffer-menu-select,所以使用我给出的第二种形式(这个例子的建议似乎很弱)。在你的 .emacs 添加: (eval-after-load 'buff-menu '(defun Buffer-menu-select () ......)) 你“只是”必须用修改后的版本替换那些......
  • 感谢您为我提供了扩展和自定义 Emacs 的正确且通用的方法。我不介意这很常见 - 完全重写默认函数。
  • 普通我不知道,但是elisp permit-it,我已经用过了。大多数时候,一个建议就足够了,但如果没有,我会毫不犹豫。
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多