Emacs lsp-mode の導入はすでに済んでいたので、今度は dap-mode を導入してデバッグをしたい。
いろいろ躓きながらなんとか導入はできたので備忘録として残します
あまり文献もなかったので。。。
環境
私の作業環境はこちらです
- macOS BigSur 11.2.3
- GNU Emacs 27.1
- Go 1.15
- Node.js v14.4.0
必要なツールのインストール
まずはGoの言語サーバである gopls
のインストール
$ go get golang.org/x/tools/gopls@latest
次にデバッグ用のプログラムをインストール、VSCode向けの拡張プログラムが使えるとのことなので、そちらの準備をします
こちらは Node.js でのビルドが必要なようです
// リポジトリのクローン
$ git clone https://github.com/golang/vscode-go
$ cd vscode-go
// 必要なJSモジュール群をインストール
$ npm install
// 拡張プログラムのビルド
$ npm run compile
Emacsの設定
これで必要なツールは揃ったのでここからはEmacsの設定ファイルを編集します。
前提として、私は straight.el というパッケージ管理ツールを使用しています
他のツールを使っている場合は適宜読み替えてください
straight.el の導入についても記事を書いているので興味のある方はそちらも見てみてください
https://qiita.com/yoooz/items/8a97642086611892f4c3
(use-package dap-mode
:defer t
:after lsp-mode
:config
(dap-mode 1)
(dap-auto-configure-mode 1)
(require 'dap-hydra)
(require 'dap-go)
:custom
(dap-auto-configure-features '(sessions locals breakpoints expressions repl controls tooltip))
(dap-go-debug-path "path/to/vscode-go/repository")
(dap-go-debug-program `("node", (f-join dap-go-debug-path "dist/debugAdapter.js")))
)
注意
dap-mode
に同梱されている dap-go
のデフォルトだと、下記変数のデフォルト値ではうまくいきませんでしたので、上記のように設定しています
- dap-go-debug-path
- dap-go-debug-program
使い方
設定が完了したらEmacsを再起動するか設定を反映して、Go のプログラムファイルを開きます
エディタの左側、フリンジ部分をクリックすることで ブレークポイントを設定することができます
ブレークポイントを設定したらデバッグ起動しましょう
M-x dap-debug
どの設定を使用するか聞かれるので Go Launch File Configuration
を選択(もしくは入力)してください
下記のようなWindow構成となり、デバッグが可能になります
終わりに
以上で dap-mode
の導入は完了です
dap-mode
自体の機能についてはまだこれから触って行くつもりです
VSCode や Goland のような便利ツールを使うのもいいですが、EmacsやVimの方が小回りが効いたりするので、気が向いたときに改造していくのは楽しいですね