2018/12/25

Recent entries from same category

  1. VimConf 2023 Tiny に参加しました
  2. Vim で Go 言語を書くために行った引越し作業 2020年度版
  3. Vim をモダンな IDE に変える LSP の設定
  4. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  5. VimConf 2019 を終えて

先日、Go Advent Calendar の記事の中で Language Server について書きました。

Big Sky :: gocode やめます(そして Language Server へ)

はじめに まず始めに言っておかなければなりません。 gocode 今まで本当にありがとう この記事は、Go 言語歴10年になる僕がこれまで愛用してきた Go 言語のコード補完ソフトウェア gocode...

https://mattn.kaoriya.net/software/lang/go/20181217000056.htm

僕は Vim を使っていて、幾らかの言語の開発環境は vim-lsp に移行できたのですが C/C++ を扱うケースだけ vim-lsp に移行できず vim-clang を使ってきました。C/C++ は clangd という Language Server を使うのだけど何故か clangd サーバがうまく補完候補を出してくれませんでした。調べてみると clangd は vim-clang の様に .clang ファイルを読み取ってくれず、compile_commands.json というファイルを読み取っているらしいのです。フォーマットは以下の様になっています。

[
 {
  "directory": "C:/dev/foo",
  "arguments": [
   "gcc",
   "-c",
   "-I.",
   "-DWIN32",
   "-s",
   "foo.c",
   "-o",
   "foo.o"
  ],
  "file": "foo.c"
 }
]

一つ二つなら自分で書く事も出来るのですが、ソースファイルが沢山ある場合にこんなの作ってられません。cmake を使っているプロジェクトであればこれを自動で生成してくれる方法があるらしいのですが、Makefile からは作ってくれません。これを自動で作る方法無いかなと調べていたら compiledb というコマンドがある事に気付きました。

GitHub - nickdiego/compiledb: Tool for generating Clang's JSON Compilation Database files for make-based build systems.

Compilation Database Generator Tool for generating Clang's JSON Compilation Database file for GNU ma...

https://github.com/nickdiego/compiledb

このコマンドを以下の様にインストールします。

pip3 install compiledb

インストールしたらいつもの make の手順に compiledb を付けて以下の様に実行します。

compiledb make

すると全てのビルドが終わったタイミングで compile_commands.json が生成されます。後は vim-lsp から補完を行えば vim-clang よりも高速に入力補完が行える様になります。

快適~

Posted at by