emacs:手动切换模式时,模式挂钩被绕过

emacs:手动切换模式时,模式挂钩被绕过,emacs,dot-emacs,Emacs,Dot Emacs,在my.emacs中,有以下模式挂钩: (取消我的html模式挂钩() (互动) (设置标签宽度4 ;这将确保使用制表符而不是空格 缩进制表符(模式t) ) (取消我的javascript模式挂钩() (互动) (设置标签宽度4 ;这将确保使用制表符而不是空格 缩进制表符(模式t) ) (添加钩子“javascript模式钩子”我的javascript模式钩子) (添加钩子“html模式钩子”我的html模式钩子) 现在,当我打开一个.html时,它就像预期的那样工作,打开.js也是如此 但是

在my
.emacs
中,有以下模式挂钩:

(取消我的html模式挂钩()
(互动)
(设置标签宽度4
;这将确保使用制表符而不是空格
缩进制表符(模式t)
)
(取消我的javascript模式挂钩()
(互动)
(设置标签宽度4
;这将确保使用制表符而不是空格
缩进制表符(模式t)
)
(添加钩子“javascript模式钩子”我的javascript模式钩子)
(添加钩子“html模式钩子”我的html模式钩子)
现在,当我打开一个
.html
时,它就像预期的那样工作,打开
.js
也是如此


但是,当打开
.html
并手动通过
M-x JavaScript模式
切换到JavaScript时,
我的JavaScript模式钩子
未运行的(至少选项卡宽度切换到8)。当我手动切换模式时,如何使该钩子运行?

在命名上似乎有一个可怕的模糊性,即
javascript模式钩子和
js模式钩子在打开javascript文件时被识别并在启动时运行


但是,当手动切换到JavaScript时,只运行
js模式钩子
js模式
javascript模式
都会触发
javascript
模式(至少它们在状态行中显示为
(javascript)
),因此有人厌倦了键入“avscript”字母,并将其从“javascript”中踢出但是忘了清理一些混乱…

恐怕没有
javascript模式挂钩。当然不是默认的

javascript模式
js模式
的别名,这意味着只定义了
js模式挂钩
。然而,变量别名也是一件事——我建议您
M-x报告emacs bug
,并询问
javascript模式挂钩
是否可以定义为
js模式挂钩
的变量别名。只要
defvaralias
是自动加载的(与模式的别名一起,因此在您使用它之前),我相信它会按预期工作

因此,正如我所预料的那样,我无法重现/确认您的断言,即在打开
.js
文件的情况下,
javascript模式挂钩
“按预期工作”。您的代码在Emacs 26.3或27.0.90中都不是这样的