在Emacs中切换缓冲区时保持获取模式名称
我的Emacs中有一个奇怪的东西,我找不到它,每次切换缓冲区时,我都会收到带有主模式名称的消息,即使我调用函数“我得到的是在Emacs中切换缓冲区时保持获取模式名称,emacs,buffer,elisp,major-mode,Emacs,Buffer,Elisp,Major Mode,我的Emacs中有一个奇怪的东西,我找不到它,每次切换缓冲区时,我都会收到带有主模式名称的消息,即使我调用函数“我得到的是minibuffer非活动模式” 在我的.emacs文件中(我认为)唯一的全局函数(适用于所有模式)是: 如何找到添加这个烦人东西的地方?在每个模式上可以执行哪些不同的钩子?在普通的Emacs中没有主模式函数。无论配置中的函数是什么,它都可能负责显示您看到的消息 您希望修复代码(根据Stefan的评论),但您可能还希望研究该非标准函数: M-xfind函数RETmain模式R
minibuffer非活动模式”
在我的.emacs文件中(我认为)唯一的全局函数(适用于所有模式)是:
如何找到添加这个烦人东西的地方?在每个模式上可以执行哪些不同的钩子?在普通的Emacs中没有
主模式
函数。无论配置中的函数是什么,它都可能负责显示您看到的消息
您希望修复代码(根据Stefan的评论),但您可能还希望研究该非标准函数:
M-x
find函数
RETmain模式
RET在“emacs-q”中会发生这种情况吗?如果是这样的话,“emacs-Q”会发生这种情况吗?如果“emacs-q”删除了这一点,我建议您对配置文件进行“二进制搜索”(有选择地评估部分配置文件,直到找到罪魁祸首)。主模式
不是一个函数,因此在您引用的代码中,您希望将(intern(主模式))
替换为主模式
(因为主模式
的值已经是一个内部符号)。您看到的最烦人的消息是什么?您在使用的源代码中尝试了grep
ping该消息了吗?@Stefan它告诉我们主模式是一个函数和一个变量。@绘制消息是主模式变量的值。我不能grep它。是的,我有(defun major mode()(交互式)(消息(符号名称主模式)))
在my functions.el.TanksI中,我会去掉这个函数——它看起来是这样写的,你可以用M-x主模式RET
检查当前缓冲区的模式符号,但是你可以用M-:主模式RET
做同样的事情,所以真的不需要它。此外,message
返回nil
始终,因此该值不会是变量主模式
的值(更不用说该变量的值是一个符号,因此它不需要是intern
ed)。总之,该代码在多个方面被误导。
(add-hook 'after-change-major-mode-hook (lambda ()
(if (not (memql (intern (major-mode))
'(fundamental-mode
erc-mode
text-mode
sql-mode)))
(local-set-key (kbd "RET")
'new-line-and-indent-fix))))