【发布时间】:2011-11-04 10:58:00
【问题描述】:
我想重新定义现有函数foo,但仅限于特定缓冲区。
(defun foo ()
(message "Not done:("))
我希望这样可以:
(make-local-variable 'foo)
(fset 'foo #'(lambda () (message "Done!")))
但事实并非如此。 有什么想法吗?
[编辑: 或者,因为函数绑定到一个键,只为当前缓冲区修改绑定就足够了。但我不知道该怎么做。本地键盘映射由主要模式下的所有缓冲区共享。修改它会修改该主模式下所有缓冲区中的绑定。
我能想到的唯一丑陋的解决方案是为整个缓冲区设置一个键映射文本属性。这是唯一的方法吗?]
【问题讨论】:
-
您真正想要解决的问题是什么?也许有一种不同的方法会更好。你怎么知道你什么时候想要“完成!”和“未完成:(”?
-
@Trey 包的帮助模式具有导航功能(跳转到部分)。它简短而优雅。但是对于一种非常特定类型的帮助文件,我需要不同的行为。我没有将功能构建到函数中,而是希望能够在本地重新定义它。您的回答实际上符合我的要求。
标签: function emacs elisp buffer local