Emacs27的js-mode可以告别js2和rjsx了

不愧是巨硬。

请问有在用eslint和prettier吗

TS项目我用 LSP + Prettier

公司的老JS项目我用 LSP(补全)+ Eslint(flycheck backend)+ Prettier

那必须得用,无限好用,配合flycheck

TS用了什么mode啊?特别是tsx,js-mode跟typescript-mode的indent都非常的诡异……

JS和TS的major mode都是typescript-mode,只是提供了最基本的功能和syntax highlighting,其实差别不大的。你说的indent诡异是什么?其实配合prettier后,indent什么的都不重要了。

例如说在tsx里,SubComponent2这样的按了tab之后缩进就会变成下面这样的没有层次感的

<Component1>
<SubComponent2/>
</Component1>

是的,毕竟那不是js/ts的syntax。

或者试试用web-mode:GitHub - ananthakumaran/tide: Tide - TypeScript Interactive Development Environment for Emacs

只开个js2/rjsx不卡吧,js2都维护了这么多年了。。开了lsp是卡,我在ts文件里用lsp-mode明显不顺滑。tide没试过。和上面一位朋友说的一样,卡一点又不是不能用,忍就完了,过两年生态一更新,就有不卡的用法了。

你们说卡的该不会是在js文件里开了lsp吧?非ts文件开个lsp能干啥……tabnine+xref-js2(约等于tags但是它用rg实时搜索,不用操心维护tags文件)不香吗。装完了xref-js2再把两个find-definition一混合:

(defun jester/js2-jump-or-xref-definition ()
    "`js2-jump-to-definition' if we can, `xref-find-definitions' if can't or already at import statement."
    (interactive)
    (if (save-excursion
          (beginning-of-line)
          (search-forward "import " nil t))
        (xref-find-definitions (xref-backend-identifier-at-point (xref-find-backend)))
      (condition-case err
          (js2-jump-to-definition)
        (xref-find-definitions (xref-backend-identifier-at-point (xref-find-backend))))))

楼主没说这个花花绿绿的上色是同一个symbol同样颜色,我看到图的第一反应是“是不是傻”……不过了解之后感觉还是普通的syntax highlight + 手动symbol-overlay更好?

我被Paul Graham 洗脑了,不用静态语言的,不想要类型声型的。
如何是好啊?急……

动态类型有很多啊,还是可以很开心的。