最近切到emacs29之后试用了一些自带的xxxx-ts-mode,但是觉得高亮还是不如外置的tree-sitter,想再慢慢调教一下高亮的规则。
但是我发现我的auto-mode-alist在别的一些操作之后会被修改。。。例如lsp-bridge调用了(treesit-parser-create 'typescript)
之后
内置的typescript-ts-mode.el
里有这么一段,就会把我的auto-mode-alist给改了
(if (treesit-ready-p 'typescript)
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode)))
这个不是autoload也不在函数里没法advice,有没有别的方法可以把它禁掉不?
因为不是eval once的东西,它是什么时候修改还是一个迷。treesit加载之后其实auto-mode-alist还没变化,因为一个parser都没有创建。
但用着用着我再打开一个新文件的时候发现major mode不一样了。。。
就是首次加载的时候运行一次:
完全可以在加载之后覆盖/修改:
(with-eval-after-load 'typescript-ts-mode
...)
啊好!我去试试
有点好奇如果是只加载一次的话,那是不是能找出加载的stack来呢?
因为我grep了我的配置以及安装的包都没有require这个文件
这其实很迷我没有找到是谁在加载这个东西。我的配置里没有,我安装的包也只是设置了typescript-ts-mode的hook
;;;###autoload
有了这个就不用 require 啦,而是在你执行 autoload 的函数的时候自动帮你 require