Icarus is a Nova extension providing Swift, C, C++, and Objective-C language support.
If you're just looking to use the Icarus extension, you can download it from the Extension Library directly within Nova.
Icarus adds:
Intelligence is provided using SourceKit-LSP from the Swift open-source project. This language server provides support for Swift natively and uses clangd
behind the scenes for C-family languages.
Debugging is supported using LLDB.framework, distributed with both Apple's Xcode tools and the standalone Swift toolchain.
The Icarus project consists of several parts:
Submitting feedback on Icarus is welcomed via GitHub issues in this project. Please take the following considerations into account when filing or replying to issues:
If you would like to contribute directly to the Icarus project, you are welcomed to clone this repository and submit pull requests with improvements and fixes.
Code contributions should be formatted in accordance and consistency with the rest of the project, which (with occasional exception) takes its styling practices from the examples of the wider Swift open-source community:
All pull requests will be reviewed by the core team at Panic before being merged into the main branch.
Out of the box, a copy of this repository requires only that the debug adapter (LLDBAdapter
) be built from source using Swift Package Manager and placed in the Executables/
directory of the Icarus.novaextension
bundle. If this is not done, everything else will work, but attempts to invoke the debugger will fail.
To build the debug adapter, you can either use the built-in Nova tasks for the DebugAdapter subproject directory or invoke SwiftPM directly:
cd DebugAdaptor
swift build --product LLDBAdapter --configuration release
cp .build/release/LLDBAdapter ../Icarus.novaextension/Executables/LLDBAdapter
Once this is done, the extension bundle can be loaded into Nova as a development extension for testing.
Icarus is part of Panic's open-source initiatives. We highly value the diversity of the community and encourage developers from all walks of life, skillsets, and backgrounds to contribute.
Panic is dedicated to providing a harassment-free experience for everyone, regardless of gender identity and expression, sexual orientation, disability, mental illness, neurotype, physical appearance, body, age, race, ethnicity, nationality, language, or religion. We do not tolerate harassment of participants in any form. We reserve the right to ban users from our initiatives at any time and for any reason.
If you have questions or concerns, do not hesitate to contact us via github@panic.com
.
The Swift logo and mascot is of a diving swallow. Icarus is the name of a character from an ancient Greek legend whose father fashioned wings of feather and wax so the two might escape a prison. When Icarus flew too close to the sun, the wax melted and he fell into the sea. Swallow, wings, sea (as in "C"), and dev tools that might fly too close to the sun. Too much?
Oh, and the logo is a reference to Hades from Supergiant Games.
The following components are or were utilized in some way or another for the Icarus project: