しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

VSCodeでSwift5.1のSourceKit-LSPを動かす

SwiftPMも本格的に使えそうなので、SourceKit-LSPを試してみました。

SourceKit-LSPは外部エディタ向けの、Swiftコードの補完やジャンプなどの機能を提供するLanguage Server Protocolです。
VScodeやVimなどのテキストエディタなどで利用することが出来ます。

Toolchainのインストール

こちらから、使いたいバージョンのtoolchainをいれます。
RELEASEがついているものが安定版です。
Ubuntuユーザーは、動かない組み合わせ等があるので注意が必要です。

macの場合、.pkgでインストールしたものは/Library/Developer/Toolchains/などに入っています。

sourcekit-lspのビルド

github.com

こちらのレポジトリからcloneして、ビルドします。

2019年10月時点では、ビルドにSwift5.1以上を要求されたので、手元のバージョンをswift --versionで確認してみてください。
macユーザーはXcode11に付属しているので、そちらが入っていれば大丈夫なはずです。

最新のバージョンを使わない場合は、適当なタグをcheckoutしてください。 RELEASEのtoolchainを使う場合は、-c releaseを指定してください。

git clone git@github.com:apple/sourcekit-lsp.git
cd sourcekit-lsp
swift build -c release

ビルドしたsourcekit-lsp.build/releaseに生成されます。

sourcekit-lspは、後から絶対パスをVSCodeの設定で指定するか、以下のように適当なパスの通っている場所に移します。

mv .build/release/sourcekit-lsp /usr/local/bin

Dockerを使ってビルド

Ubuntuで使う人は、Docker Hubに公式のイメージがあるので、pullしてそちらのコンテナを使ってください。
(Swift5.1.1はUbuntu用の脆弱性パッチが入ったバージョンなので、5.1.0ではなく5.1.1推奨です)

docker pull swift
docker run -itv /path/to/sourcekit-lsp:/home/sourcekit-lsp swift /bin/bash
root@6a514ecb5877: cd /home/sourcekit-lsp
root@6a514ecb5877: swift build -c release

VSCode向けのVSIXプラグインのビルドとインストール

sourcekit-lsp/Editors/vscode at master · apple/sourcekit-lsp

先ほどcloneしてきたレポジトリの中のEditors/vscodeにプラグインのソースがあります。

こちらのソースは、ビルドにnpmを利用します。
インストールされていない場合、Homebrewなどで入れておきます。(有名なので割愛)

READMEに従ってパッケージをビルドします。

cd Editors/vscode
npm run createDevPackage

outディレクトリの中にパッケージを(.vsix)が生成されるので、拡張機能タブのInstall from VSIX...から入れます。

f:id:scior:20191027215004p:plain

sourcekit-lspとtoolchainのパス指定

VSCodeのプラグイン設定から、toolchainのパスを指定します。
先ほどsourcekit-lspを移さなかった人は、そちらの絶対パスも指定します。

f:id:scior:20191027215025p:plain

感想

普通のiOS開発の場合は、UIKitなどの補完が効かないのがしんどいのでXcodeかなと思います。
Linuxユーザーや、各種研究用などそれ以外の用途なら、まだ動いていない部分もありそうですが、実用できると思います。

f:id:scior:20191027215707p:plain