emacs/lsp-mode + goplsでGo用のLSP環境を設定する


1 min read
emacs/lsp-mode + goplsでGo用のLSP環境を設定する

Language Server Protocol(以下LSP)はこれまでエディタ/IDEが独自に実装する必要があった、補完や定義参照、静的解析によるエラー分析などをサービスとして実現するためのプロトコルです。
LSPを実装したクライアントは、Language Serverを提供している言語であれば何でも補完や定義参照、静的解析といった便利機能を使用することができます。

Microsoftが2016年にその仕様を公開してから、多くのエディタ用のLSPのクライアント実装が作られ、また各種言語用のLanguage Serverも公開されています。

Go言語も例に漏れずLanguage Serverの実装がいくつか存在します。今回は準公式提供のgoplsを使用して設定してみます。
もちろんemacsにも複数のLSP Client実装がありますが、今回はlsp-modeを使用します。

まずはemacs用のパッケージをインストールします。次のモノをpackage-installpackage-list-packagesか、そのあたりでよしなにインストールします。

  • lsp-mode
  • lsp-ui
  • company-lsp

インストールできたら、(私はuse-packageを使っているので)設定ファイルにuse-packageの設定を入れておきます。ついでにgo用の設定も入れておきましょう。

;; Golang
(defun lsp-go-install-save-hooks()
  (add-hook 'before-save-hook #'lsp-format-buffer t t)
  (add-hook 'before-save-hook #'lsp-organize-imports t t))

(use-package go-mode
  :ensure t
  :mode (("\\.go\\'" . go-mode))
  :init
  (add-hook 'go-mode-hook #'lsp-go-install-save-hooks))

;; Language Server
(use-package lsp-mode
  :ensure t
  :hook
  (go-mode . lsp-deferred)
  :commands (lsp lsp-deferred))

(use-package lsp-ui
  :ensure t
  :commands lsp-ui-mode)

(use-package company-lsp
  :ensure t
  :commands company-lsp)

goplsのインストールもしましょう。

$ go get golang.org/x/tools/gopls@latest

これで完了です!


Flutter環境構築 with emacs
Previous article

Flutter環境構築 with emacs

ここ数日、FlutterでAndroidアプリを書く、ということに入門してみています。 Androidアプリの開発自体は大分前(無印Galaxy Sを使っていた頃なので、EclairとかFroyoとかの頃)にすこしだけやったことがあるんですが、そのころと比べるとかなり簡単に、きれいなアプリがシュッと動いて、ちょっとばかし感動しています。 扨、Flutter/Android開発の環境構築ですが、ほとんどのドキュメントがAndroid Studioを前提としており、私のようなemacsユーザがどうしたらいいのか、ちょっとばかし躓きそうなので、メモがてら残しておきます。 なお、基本的な手順は公式サイトに準じます。また、環境はmacOS Catalina バージョン


Related Articles

go-openapi を書き直しています
2 min read
net/http.ClientにHookをかける
3 min read
Raspberry Pi zero W + IR
4 min read

GO TOP

🎉 You've successfully subscribed to something tech.!
OK