2019-04-11#vscode#sde#sourcekit-lsp#langserver#lsp

SDE 2.7.0 released

Today I released the new 2.7.0 update to SDE for VS Code and the companion project sourcekite has been updated, too.

The new sourcekite 0.5.0 now supports Swift 5, but drops support for Swift 3. If you still need support for Swift 3.1, I also tagged 0.4.2.

Since 2.6.0, SDE already supported Apple‘s official sourcekit-lsp by using the "sde.languageServerMode": "langserver" and the swift.languageServerPath setting. As announced in Apples SourceKit-LSP and SDE Roadmap SDE 2.7.0 now explicitly mirrors official SourceKit-LSP settings like sourcekit-lsp.serverPath and sourcekit-lsp.toolchainPath. These settings will only be respected when explicitly setting "sde.languageServerMode": "sourcekit-lsp".

I‘d suggest you to configure both sourcekit-lsp and sourcekite configs. Depending on your project, you may swap out the actually used LSP by updating sde.languageServerMode. Both LSP implementations have different benefits. Apple‘s SourceKit-LSP is easier to install, under active development and more robust. On the other hand SDE‘s LSP is more flexible in terms of settings, works for standalone Swift files, Xcode projects (through manual configuration) and handles modules differently.

Upgrade if you use SourceKit-LSP

In your settings replace your "sde.languageServerMode": "langserver" with "sde.languageServerMode": "sourcekit-lsp" and swift.languageServerPath with sourcekit-lsp.serverPath.

That‘s it.

Upgrade if you use Sourcekite

Clone the latest version of sourcekite and open the repo within your terminal.

On Linux: assuming you have already linked your sourcekitdInProc, you simply need to run swift build -Xlinker -l:sourcekitdInProc -c release and overwrite your old binary.

On macOS: Run make install LIB_DIR=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/lib if you have multiple Swift toolchains installed and make install LIB_DIR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib otherwise to install the new build to /usr/local/bin/sourcekite. If you used a different path, override it by adding PREFIX=<your-path>.

Your swift.path.sourcekite should still be valid. Make sure to restart your VS Code before further development.

Upgrade if you use Ryan Lovelett‘s LangserverSwift

You have no upgrade steps to do, but you are now able to additionally use SourceKit-LSP.

Install SourceKit-LSP and let the global sourcekit-lsp.serverPath point to the release binary. Now you can swap your language server inside different projects by overriding sde.languageServerMode.

Though as Ryan‘s Langserver is no longer maintained, I‘d recommend you to set your default sde.languageServerMode to sourcekite or sourcekit-lsp.