CLOVER🍀

That was when it all began.

Emacsに、csharp-mode+lsp-modeを導入する

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

先日、.NET(.NET Core)をUbuntu Linuxにインストールしてみたので、今度はEmacsでlsp-mode+C#を扱えるように
してみます。

Ubuntu Linux 20.04 LTSに、.NET 5.0/.NET Core 3.1をインストールしてみる - CLOVER🍀

言語は、C#にします。

LSP Mode - Language Server Protocol support for Emacs - LSP Mode - LSP support for Emacs

環境

使用しているEmacsのバージョンは、こちら。

$ emacs --version
GNU Emacs 26.3
Copyright (C) 2019 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

lsp-mode(20210330.1510)、lsp-ui(20210330.428)、company(20210330.1459)は、以下の設定で導入済みと
します。

;; lsp-mode
(require 'lsp-mode)
(setq gc-cons-threshold 100000000)
(setq read-process-output-max (* 1024 1024))
(setq lsp-completion-provider :capf)
(setq lsp-idle-delay 0.500)
(require 'lsp-ui)
(setq lsp-ui-imenu-enable t)
(setq lsp-headerline-breadcrumb-enable t)

;; company
(require 'company)
(global-company-mode t)
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 1)
(setq company-selection-wrap-around t)
(setq completion-ignore-case t)
(define-key company-active-map (kbd "C-n") 'company-select-next)
(define-key company-active-map (kbd "C-p") 'company-select-previous)
(define-key company-active-map (kbd "C-s") 'company-filter-candidates)

C# lsp-mode

C#向けのlsp-modeに関する情報は、こちら。

C# - LSP Mode - LSP support for Emacs

C#用のmode(csharp-mode)もインストールしておきましょう。バージョンは、20210328.2004でした。

GitHub - emacs-csharp/csharp-mode: A major-mode for editing C# in emacs

あとは、こちらを見ながら設定。

Installation / Vanilla Emacs

;; csharp-mode
(require 'lsp-mode)
(add-hook 'csharp-mode-hook #'lsp)

ドキュメントの手順に沿って、以下のコマンドを実行するとLanguage Serverがインストールされます。

M-x lsp-install-server RET csharp RET

C# - LSP Mode - LSP support for Emacs

これで、EmacsC#ソースコードを扱う時に、csharp-modeとlsp-modeと協調動作するようになります。

Language Serverは、こちらが使われるようです。バージョンは、1.37.8でした。

GitHub - OmniSharp/omnisharp-roslyn: OmniSharp server (HTTP, STDIO) based on Roslyn workspaces

こんなところで。