If you’re writing Swift code for iOS you’re most likely going to be doing so in Xcode. If you’re coding Swift to run on the server, you might want to check out an editor like Sublime Text. In this post we’ll show you how to use Sublime, the Decent Swift Syntax package and swiftformat together to write some nicely formatted Swift code.
Sublime Text
Installing Sublime is as easy as heading over to the Sublime Text website and clicking the download button appropriate for your platform. In this post we’ll be using macOS.
Once you’ve installed Sublime Text create a new file with File – New and then go to its Tools menu and select Command Palette. A search field will open. Start typing ‘package’ and select Package Control: Install Package.
The search field will change again to list available packages to install. Find and install Decent Swift Syntax. You’ll notice from here that files ending in .swift
will be inferred as containing the Swift language, and Decent Swift Syntax will go to work.
swiftformat
The Decent Swift Syntax package relies on swiftformat to do the heavy lifting of reformatting your Swift code. To install it you will want to use brew: brew install swiftformat
Two Spaces and a Gotcha
With the end of the spaces vs. tabs war, the new battlefront formed was whether to indent two spaces or four. Anyone with sense knows that the answer is two spaces, so at the top of your Swift file you can add // swiftformat:options --indent 2
in order to tell swiftformat
to format your code accordingly.
Now here is an interesting gotcha we you may find when writing closures. Let’s say our closure function signature is something like:
1 |
typealias ClosureSignature = (String, Int, Int) -> Void |
And we’re writing some code that supplies the closure, like:
1 2 3 |
getData { data, status, error in print(data) } |
If this is all you wrote and saved your code swiftformat
would happily replace status
and error
because they were unused arguments. Out of habit I save files often so it came as a bit of a surprise when my arguments started disappearing. Although swiftformat
has an stripunusedargs
option, it doesn’t appear to permit you to turn it off.