All Projects → vknabel → Vscode Swift Development Environment

vknabel / Vscode Swift Development Environment

Licence: apache-2.0
New home of Swift Development Environment for VS Code

Programming Languages

typescript
32286 projects
swift
15916 projects

Projects that are alternatives of or similar to Vscode Swift Development Environment

Advpl Vscode
Suporte para Advpl no VsCode
Stars: ✭ 132 (-3.65%)
Mutual labels:  vscode, vscode-extension
Vscode Neovim
VSCode Neovim Integration
Stars: ✭ 2,474 (+1705.84%)
Mutual labels:  vscode, vscode-extension
Vscode Apielements
VSCode extensions for API Elements (aka: API Blueprint and Swagger)
Stars: ✭ 117 (-14.6%)
Mutual labels:  vscode, vscode-extension
Vscode Elastic
Elasticsearch for VSCode
Stars: ✭ 130 (-5.11%)
Mutual labels:  vscode, vscode-extension
Vscode Browse Lite
🚀 An embedded browser in VS Code
Stars: ✭ 134 (-2.19%)
Mutual labels:  vscode, vscode-extension
Vscode Emacs Mcx
Awesome Emacs Keymap - VSCode emacs keybinding with multi cursor support
Stars: ✭ 135 (-1.46%)
Mutual labels:  vscode, vscode-extension
Vscode Go
Go extension for Visual Studio Code
Stars: ✭ 2,268 (+1555.47%)
Mutual labels:  vscode, vscode-extension
Vscode Azure Blockchain Ethereum
Blockchain extension for VS Code
Stars: ✭ 111 (-18.98%)
Mutual labels:  vscode, vscode-extension
Coddx Alpha
Coddx - a collection of tools that help developers program efficiently. One of the features is generating multiple files from templates quickly.
Stars: ✭ 132 (-3.65%)
Mutual labels:  vscode, vscode-extension
Doxdocgen
Generate doxygen documentation from source code in VS Code
Stars: ✭ 127 (-7.3%)
Mutual labels:  vscode, vscode-extension
Markdown Toc
MarkdownTOC(Table Of Contents) Plugin for Visual Studio Code.
Stars: ✭ 130 (-5.11%)
Mutual labels:  vscode, vscode-extension
Quicktype Vscode
VS Code extension to convert JSON to TypeScript, C#, Go, and many more
Stars: ✭ 131 (-4.38%)
Mutual labels:  vscode, vscode-extension
Vscode Swift
An extension for VS Code which provides support for the Swift language.
Stars: ✭ 132 (-3.65%)
Mutual labels:  vscode, vscode-extension
Vscode Scss
🔌 IntelliSense for Variables, Mixins and Functions in all Sass (SCSS syntax only) files.
Stars: ✭ 128 (-6.57%)
Mutual labels:  vscode, vscode-extension
Vscode Postgres
PostgreSQL extension for vscode providing explorer, highlighting, diagnostics, and intellisense
Stars: ✭ 117 (-14.6%)
Mutual labels:  vscode, vscode-extension
Vscode Language Pascal
Pascal language extension for Visual Studio Code
Stars: ✭ 117 (-14.6%)
Mutual labels:  vscode, vscode-extension
Vscode
Unibeautify for VSCode
Stars: ✭ 110 (-19.71%)
Mutual labels:  vscode, vscode-extension
I18n Ally
🌍 All in one i18n extension for VS Code
Stars: ✭ 1,931 (+1309.49%)
Mutual labels:  vscode, vscode-extension
Vs Swagger Viewer
Swagger Viewer lets you preview and validate Swagger 2.0 and OpenAPI files as you type in Visual Studio Code.
Stars: ✭ 126 (-8.03%)
Mutual labels:  vscode, vscode-extension
Vscode Auto Close Tag
Auto Close Tag for Visual Studio Code
Stars: ✭ 132 (-3.65%)
Mutual labels:  vscode, vscode-extension

Swift Development Environment

Build Status Visual Studio Code Version Swift Version SwiftPM compatible Platforms License Apache

SDE adds Swift code completion and hover help to Visual Studio Code on macOS and Linux.

Fork Notice: This is the new home of SDE initially been developed by @jinmingjian. It is now maintained by @vknabel. jinmingjian/sde is no longer maintained and does only support Swift 3. This fork supports Swift 3.1, 4 and 5.

preview

Installation

You have the choice between three different language server implementations.

sde.languageServerMode Comments Swift Versions Install
sourcekit-lsp default Apple's official one. Activley developed. 4 and 5 #Using sourcekit-lsp
sourcekite SDE's one. Actively maintained. 5 and older versions 3.1 and 4 #Using sourcekite
langserver RLovelett's LSP. Not maintained. 4.1, macOS only #Using Langserver Swift

sourcekit-lsp is easier to install and will be updated more frequently. On the other hand sourcekite treats standalone files, Xcode projects and SwiftPM modules differently and is more configurable. If you can't decide, you can install both and swap out the used LSP by setting sde.languageServerMode to sourcekite, sourcekit-lsp or langserver.

Using sourcekit-lsp

Note: on macOS SDE defaults to using your Xcode's Swift and sourcekit-lsp. In that case, SDE should work out of the box!

  1. Install SDE.
  2. Recent versions of Xcode ship with sourcekit-lsp, you can check its path running xcrun -f sourcekit-lsp. If not found, please install sourcekit-lsp.
  3. Set "sourcekit-lsp.serverPath": "absolute path to the sourcekit-lsp executable" and "sde.languageServerMode": "sourcekit-lsp".

Using sourcekite

  1. sourcekite does only work with SDE. Make sure you have it installed.

  2. Install the companion project sourcekite.

    $ git clone https://github.com/vknabel/sourcekite
    $ cd sourcekite
    
    # For Linux
    # Ensure you have libcurl4-openssl-dev installed (not pre-installed)
    # $ apt-get update && apt-get install libcurl4-openssl-dev
    # Ensure LD_LIBRARY_PATH contains /your/swift/usr/lib
    # And have $ sudo ln -s /your/swift/usr/lib/libsourcekitdInProc.so /usr/lib/libsourcekitdInProc.so
    $ make install PREFIX=/usr/local
    
    # For macOS
    $ make install PREFIX=/usr/local
    
  3. Add the absolute path to your compiled sourcekite binary swift.path.sourcekite to your vscode settings as /usr/local/sourcekite.

If you experience any problems during installation, file an issue. All kind of feedback helps especially when trying to automate this.

Using Langserver Swift

Besides sourcekit-lsp and sourcekite SDE allows you to use RLovelett/langserver-swift.

If you prefer using an alternative language server, set set sde.languageServerMode to langserver and let swift.languageServerPath point to your installed language server.

Though in most cases sourcekit-lsp and sourcekite should produce better results and performance.

Configuration

| Config | Type | Default | Description | | ---------------------------------- | ---------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | sourcekit-lsp.serverPath | string | | The path of the sourcekit-lsp executable. In SDE: defaults to the toolchain's sourcekit-lsp. | | sourcekit-lsp.toolchainPath | string | | The path of the swift toolchain. In SDE: defaults to Xcode's default toolchain. | | swift.languageServerPath | string | /usr/local/bin/langserver-swift | [DEPRECATED] The fully qualified path to the Swift Language Server executable. | | swift.path.sourcekite | string | | The fully path to the sourcekite(SDE's LS backend). | | swift.path.swift_driver_bin | string | /usr/bin/swift | The fully path to the swift driver binary. | | swift.path.shell | string | /bin/sh | The fully path to the shell binary. | | sde.sourcekit.compilerOptions | string[] | [] | Optional compiler options like the target or search paths. Will only be used as default. (debug | release).yaml builds will override these settings. | | swift.targets | object[] | [] | If SDE cannot reliably detect all targets, you can manually configure them. | | sde.enable | boolean | true | Enable SDE functionality | | sde.languageServerMode | string | sourcekite | Decides which language server should be used. sourcekite is the default LSP for SDE, sourcekit-lsp is Apple's official one and langserver is RLovelett's Langserver. | | sde.enableTracing.client | boolean | false | Enable tracing output for SDE client | | sde.enableTracing.LSPServer | boolean | false | Enable tracing output for SDE LS server | | sde.buildOnSave | boolean | true | Indicates wether SDE shall build the project on save. | | sde.swiftBuildingParams | string[] | ["build"] | The params that shall be passed to the swift command. | | swift.diagnosis.max_num_problems | number | 100 | Controls the maximum number of problems produced by the server. NOET: Not used now. |

Commands

Title Command
Build Package sde.commands.build
Restart Language Server sde.commands.restartLanguageServer
Run Default Target sde.commands.run
Run Target… sde.commands.selectRun
Restart Target sde.commands.restartRun
Stop Running Target sde.commands.stop
Clean Package sde.commands.clean

Contributors

FAQ

How to contribute to this project?

There are a lot of ways you could contribute to either this project or the Swift on VS Code itself. For more information head over to CONTRIBUTING.md.

How can I debug my SwiftPM project?

Debugging your Swift targets requires a different extension LLDB Debugger. You can follow this tutorial: vknabel.com/pages/Debugging-Swift-in-VS-Code.

How do I get autocompletion when using TensorFlow?

You can add the following configs. This will improve your autocompletion. Though currently the TensorFlow module will not be indexed yet.

// .vscode/settings.json example for TensorFlow
{
  "sde.swiftBuildingParams": ["build", "-Xlinker", "-ltensorflow"],
  "sde.languageServerMode": "sourcekite",
  "sourcekit-lsp.toolchainPath": "/Library/Developer/Toolchains/swift-tensorflow-RELEASE-0.3.1.xctoolchain",
  "swift.path.swift_driver_bin": "/Library/Developer/Toolchains/swift-tensorflow-RELEASE-0.3.1.xctoolchain/usr/bin/swift"
}

In case you find a way to get autocompletion for the TensorFlow module to work, please submit a PR or open an issue.

How do I get autocompletion for UIKit?

With sourcekite, you can add new autocompletion targets through your configuration.

// .vscode/settings.json example for iOS and WatchOS
{
  "swift.targets": [
    {
      "name": "YourApp",
      "path": "YourApp/YourApp",
      "sources": ["**/*.swift"],
      "compilerArguments": [
        "-sdk",
        "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk",
        "-target",
        "arm64-apple-ios11.0"
      ]
    },
    {
      "name": "YourWatchApp",
      "path": "YourApp/YourWatchExtension",
      "sources": ["**/*.swift"],
      "compilerArguments": [
        "-sdk",
        "/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk",
        "-target",
        "armv7k-apple-watchos4.0"
      ]
    }
  ]
}

Since Xcode 11.4, you may use its built-in support for sourcekit-lsp

// .vscode/settings.json example for iOS
{
  "sde.languageServerMode": "sourcekit-lsp",
  "sourcekit-lsp.serverPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp",
  "sourcekit-lsp.toolchainPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain",
  "sde.swiftBuildingParams": [
    "build",
    "-Xswiftc",
    "-sdk",
    "-Xswiftc",
    "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk",
    "-Xswiftc",
    "-target",
    "-Xswiftc",
    "arm64-apple-ios11.0"
  ]
}
// .vscode/settings.json example for WatchOS
{
  "sde.languageServerMode": "sourcekit-lsp",
  "sourcekit-lsp.serverPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp",
  "sourcekit-lsp.toolchainPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain",
  "sde.swiftBuildingParams": [
    "build",
    "-Xswiftc",
    "-sdk",
    "-Xswiftc",
    "/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk",
    "-Xswiftc",
    "-target",
    "-Xswiftc",
    "armv7k-apple-watchos4.0"
  ]
}

Build failed! What should I do?

Go to vscode OUTPUT window, then select SPM. The OUTPUT window will tell you what's wrong.

I'd like to have a different build paths than usually. How can I achieve that?

You can compile your app using a command like swift build --build-path "./.build-macos" on macOS and swift build --build-path "./.build-linux" on Linux, e.g. from within a docker container, you just need to add the appropriate building parameter:

// .vscode/settings.json
{
  "sde.swiftBuildingParams": [
    "build",
    "--build-path",
    "./.build-macos"
  ]
}

Other questions?

If so, file an issue, please :)

License

Apache License v2.

3rd-party Sources Thanks

  1. dbgmits, very nice structure of sources, but of which in my heavy modification to support non-MI and much more
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].