react项目里用了js后缀,结果每次新文件打开都识别成 js2-mode
看了看是根据有没有import React 这行来决定是不是rsjx-mode 的
现在每次都得手动调
有没有什么方法可以打开前,就加入import 这行呢?
可能没说明白,再详细说一下
操作步骤:
因为rjsx-mode 是根据 文件第一行 import React
来匹配的
所以,看起来关键就是,创建文件后,打开前,能插入一段代码就好了,还不能每次都插入,需要要能选择
SPQR
2
试试use-package的magic handler?
dcsjx
3
这个不就是识别mode吗?
现在问题是,要识别的内容还不存在,所以识别的不是想要的
设置auto-mode-alist不可以吗?
如果用了auto insert,那打开其它其它项目或者其它人写的文件都会自动插入内容了,不是很好吧
这个是 based on file extension or the major mode ,现在问题就是 从extension 识别到的major mode,不是想要的major mode
不是很理解你的需求,如果要在创建文件时自动插入内容,auto insert mode是可以的
我又编辑了一下,
auto insert mode 也是根据mode来的,而mode本身有歧义的地方,有时候对,有时候不对,所以不灵
操作步骤: 新建一个文件, abc.js ,打开后,被识别是 js2-mode
但是,实际上,想要一个react文件,应该是 rjsx-mode,
而rjsx-mode 是根据 文件第一行 import React 来匹配的(空文件,没有这一行,所以识别是js2-mode)
可以写个函数专门创建特殊的js文件,创建完后调用(insert “import …”)即可。
这样就有了第一行,可以自动进入rjsx-mode了。
lawrsp
11
起来应该行,我去查查insert,还不太会写elisp
lawrsp
12
insert是当前buffer啊,还是要打开,有什么方法是后台insert的吗?
(defun create-react-js-file ()
(interactive)
(let ((file-path (read-file-name "Create react js file:")))
(when file-path
(find-file file-path)
(insert "import React"))))
(global-set-key (kbd "<f3>") #'create-react-js-file)
获取新文件路径 => 打开文件 => 添加文件头 => 绑定快捷键
这样应该可以用了。
SPQR
14
应该有规则能 自动 区分这两种 Mode,比如默认用 js2-mode,只有在特殊条件下(比如特定项目目录或者包含特定文件名)使用 rsjx-mode。没有的话自己定一个。
每次都需要手动选择的话,照样很烦人吧,跟 M-x rsjx-mode 差不多烦人吧?
话说现在Emacs自带的js-mode
就很好用了啊,自带jsx-mode
js文件里面如果有import React
就会自动转换成jsx-mode
lawrsp
19
还是差一些的,一口气敲完 vs 敲-等待-再敲,感受还是不一样的
wsug
20
有些不解,楼主是怎么创建文件的,我用默认的c-x c-f创建文件时文件直接就打开了,这是一步操作,是怎么分开两步的,实际我基本不用c-x c-f,用的是counsel-find-file,这个创建文件成功后文件就直接打开了,也没有“ 创建文件后,打开文件前”这个情况,emacs里我还没遇到过,还是说楼主是在其它地方创建的文件,然后在emacs里面打开?