概要
具体的な設定方法等については Emacs で LSP(Language Server Protocol) を使用した Java IDE 環境 (実践編) をご覧ください。
Ubuntu にて OpenJDK/Maven/IntelliJ IDEAインストールしてIDEによる開発環境を作成したのですが、Emacsのヘヴィユーザの私としてはやはりどうも馴染めません。
Emacsで同様の環境が構築できないかを探ります。
行いたいことは、下記の通りです。
- ソースコードに基づく補完
- 部分的なコードの実行、デバッグ、テストの実行
初期調査
どうやら、LSP(Language Server Protocol)を使用するEmacsパッケージを使用することでやりたいことができそうです。
下記が参考となった動画、ページです。
- My IDE is too heavy so I moved to Emacs(Renato Athaydes)
- EmacsでJava開発をする時eglotではなくlsp-modeを使えば割とあっさり構築完了しました – ncaq
- How Emacs became my awesome Java editing environment – Torstein Krause Johansen – EmacsConf 2019
上記ページから私が理解したことは下記です。
- LSPは、自動補完、定義への移動、シンボルの参照などの機能をツールに依存せずに汎用的に提供するためのプロトコル。
- 元々は Visual Studio Code で使用するために Microsoft が開発したもの
- C,C++,Java,Python,Go… など多数の言語に対応している
- Javaの場合、LSPに対応した Language server、LSP client それぞれ複数の実装が存在する
LSP(Language Server Protocol)
Language Server Protocol - Wikipedia
Langserver.org
LSPの概念の説明、言語と Language Server、LSP Client の対応関係などが説明されています。
Overview
What is the Language Server Protocol?Implementing support for features like autocomplete, goto definition, or documentation on hover for a programming langua...
Specification
This document describes the 3.17.x version of the language server protocol. An implementation for node of the 3.17.x version of the protocol can be found here.
Microsoftによる解説と仕様が記載されています。
language server protocolについて (前編) - Qiita
(今のところ前後編に分ける予定ですが、追記したり構成が変更になったりするかもしれません。予定は未定。)2016年6月に、Microsoftがlanguage server protocolという仕…
language server protocolの存在意義、コード アクションとCode Lensの解説など、非常に参考になります。
Language server
提供されている Language server
Javaの場合、少なくとも下記3つが提供されているようです。
- Eclipse JDT Language Server
- github.com/eclipse/eclipse.jdt.ls
- Maintainer : Eclipse Foundation, Red Hat, Microsoft
- java-language-server
- github.com/georgewfraser/vscode-javac
- Maintainer : georgewfraser
- Language Server for Java by Apache NetBeans
- marketplace.visualstudio.com/items?itemName=ASF.apache-netbeans-java
- Maintainer : Apache NetBeans
LSP client
lsp-mode と lsp-java
lsp-mode と lsp-java の機能・役割については補完関係にあります。
lsp-mode
lsp-mode は Java に限らず、様々な言語に対応する Emacs 上の LSP Client です。
Installation - LSP Mode - LSP support for Emacs
Language Server Protocol Support for Emacs
GitHub - emacs-lsp/lsp-mode: Emacs client/library for the Language Server Protocol
Emacs client/library for the Language Server Protocol - emacs-lsp/lsp-mode
lsp-java
lsp-mode の Java 部分に対応する LSP Client のようです。 Eclipse JDT Language Server (jdt.ls) を自動的にビルド・インストールする仕組みが含まれています。
LSP Java
GitHub - emacs-lsp/lsp-java: lsp-mode java
lsp-mode :heart: java. Contribute to emacs-lsp/lsp-java development by creating an account on GitHub.
その他
VSCode のおかげで Vim の開発環境がめちゃくちゃ良くなった|たかやま
=== 追記 === 2020年になって、どんな環境でやっているのかも書いた。 === 追記ここまで === Qiita でちろっと書いたのですけど、最近 Ruby / PHP を書く機会がちょこちょこあるんで、せっかくだからと Vim での開発環境構築に勤しんでおりました。 数年ぶりに ...
Java Programming in Emacs
Introduction In this tutorial, I will go through setting up Emacs for Java development. The installation part will be fairly simple, as we will use my java spec...