CLOVER🍀

That was when it all began.

JavaScriptでTypeScript Language Serverを使って、Emacs lsp-mode

これは、なにをしたくて書いたもの?

先日、TypeScriptの環境設定をした時に、Emacsのlsp-modeの設定をしたのですが。

はじめてのTypeScript(+tslint、Prettier、Emacs lsp-mode) - CLOVER🍀

そもそも対象の言語がJavaScript/TypeScriptなので、JavaScriptでも試してみようかなと。

js-mode+lsp-mode

というわけで、TypeScript Language Serverをjs-modeに適用してみます。

JavaScript/TypeScript (theia-ide) - LSP Mode - LSP support for Emacs

GitHub - typescript-language-server/typescript-language-server: TypeScript & JavaScript Language Server

以下のように、js-modeにlsp-modeが効くように設定。
※lsp-modeやcompanyの設定自体は済んでいるものとします

(use-package lsp-mode
  :ensure t
  :commands (lsp lsp-deferred)
  :hook (js-mode . lsp-deferred))

あと、タブの設定も変えておきました。

(add-hook 'js-mode-hook '(lambda () (setq js-indent-level 2)))

これで、js-modeが使われる時にlsp-mode+TypeScript Language Serverが有効になります。

こんな感じですね。Expressを使ってソースコードを書いている例です。

f:id:Kazuhira:20211101001728p:plain

requireで警告されるのですが、これをサジェスト通りに修正すると、むしろNode.jsでは動かなくなるので無視ですかね…。

f:id:Kazuhira:20211101001756p:plain

JavaScriptのバージョン指定は、設定では変えられそうな感じがしませんでした。

それでも、十分使えるでしょう。