アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

WindowsでSwiftのサジェストを使用する

サジェストを使用するにはLanguage Server Protocol (LSP)を利用する。

MSが主導している、サジェストとかを共通のInterfaceで提供しよう的なプロジェクトです。
https://microsoft.github.io/language-server-protocol/

LSPのビルド

iOSは公式で用意しています。
https://github.com/apple/sourcekit-lsp

クローン

~/.swiftにクローンしました。

git clone git@github.com:apple/sourcekit-lsp.git

更にクローン

swift package update

ビルド

フルパスでないと失敗した。

swift build -Xcxx -I$HOME/.swift/swift-5.1.4/usr/lib/swift -Xcxx -I$HOME/.swift/swift-5.1.4/usr/lib/swift/Block

エラー

: 'sqlite3.h' file not found
#include <sqlite3.h>
         ^~~~~~~~~~~
1 error generated.
[84/280] Compiling llvmSupport YAMLParser.cpp

解決

sudo apt install libsqlite3-dev

エラー

/usr/bin/ld.gold: error: cannot find -lncurses
.build/checkouts/swift-llbuild/lib/llvm/Support/Unix/Process.inc:336: error: undefined reference to 'setupterm'
.build/checkouts/swift-llbuild/lib/llvm/Support/Unix/Process.inc:354: error: undefined reference to 'tigetnum'
.build/checkouts/swift-llbuild/lib/llvm/Support/Unix/Process.inc:358: error: undefined reference to 'set_curterm'
.build/checkouts/swift-llbuild/lib/llvm/Support/Unix/Process.inc:359: error: undefined reference to 'del_curterm'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
[0/1] Linking sourcekit-lsp

解決

sudo apt-get install lib32ncurses5-dev

nodeのインストール

nodeとnpmが必要になるので、無い場合は入れます。

nodebrewを入れる

wget git.io/nodebrew
perl nodebrew setup

PATHを追加しろと出るので追加します。

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

nodeを入れる

nodebrew install latest
nodebrew use latest

LSPのVisual Studio Code拡張のビルド

cd ~/.swift/sourcekit-lsp/Editors/vscode
npm run createDevPackage

セットアップ

LinuxVS Codeを準備しておきましょう。
https://code.visualstudio.com/docs/setup/linux

拡張のインストール

cd out
code --install-extension sourcekit-lsp-vscode-dev.vsix

設定

設定を開く
f:id:matsudamper:20200229054815p:plain

Extensions -> SourceKit-LSP
f:id:matsudamper:20200229054849p:plain

適切なPATHを設定。
f:id:matsudamper:20200229054925p:plain f:id:matsudamper:20200229055118p:plain

終了

入力補完

f:id:matsudamper:20200229055230p:plain

Docs

f:id:matsudamper:20200229055252p:plain

2020/02/29現在ではフォーマットはできないのでSwiftFormatを入れましょう。
f:id:matsudamper:20200229055401p:plain

参考サイト

https://qiita.com/h1na/items/a6a22e3ee0f86af829fd https://qiita.com/nukka123/items/8b1d3032dd6be20eedc1