AppCode 2017.1: improved Swift support, new code generation features, and more
Hi, Habr! We recently released AppCode 2017.1, now we are preparing the first update - it's time to tell about all the changes in this version.
Swift
Language support
We have implemented support for many changes in Swift 3, among which we especially want to mention:
SE-0005 - improved and autocompletion, and navigation, and in general the Objective-C and Swift bundle AppCode began to understand much better: ')
SE-0062 - learned how to #keyPath expressions with #keyPath (and changes to the #selector syntax too):
SE-0091 - refined auto completion for the keywords prefix , postfix , infix and implemented correct navigation between the statement of the operator in the protocol and its implementation. In addition, you can now quickly generate a stub for such operators via Override / Implement :
SE-0033 - supported import of constants from Objective-C using __attribute__((swift_wrapper(struct))) and __attribute__((swift_wrapper(enum)))
In the previous version, we implemented the ability to create variables, functions, methods, and even class properties from their uses. And in this we did the same for types (classes, structures, enums, protocols) and their initializers:
Override / Implement
Override / Implement ( ^O / ^I ) allows you to generate definitions for several methods of a class or protocol at once. In AppCode 2017.1, we made the Override / Implement dialog for Swift more convenient, and the code generation more correct:
Elements in the dialog are now shown hierarchically:
For initializers, the type is always ( convenience / required ).
Class method overloads are correctly generated, and we no longer offer overloading static methods.
Optional methods are offered only if Override (^ O) is called
Autocompletion
Now AppCode can filter the list of autocompletion for methods and functions not only by their names, but also by the names of their parameters:
In addition, we have added the keywords dynamic , lazy , postfix , prefix and indirect to the autocompletion list, where necessary.
Structure view
We were asked to add a display of comments like //MARK , //TODO and //FIXME for Swift to the Structure view ( ⌘7 ) and the File Structure popup-window ( ⌥F12 ), and here we did it:
If you only need a list of //TODO and //FIXME , you can, as before, use the TODO view ( ⌘6 ):
C ++
By tradition, improvements in C ++ support implemented by the CLion team are also available in AppCode. You can read about them in this post in section C ++ 14 and C ++ 17 .
IDE
Build messages
In the message window of the assembly ( ⌘0 ), you can filter messages by type:
Xcode-like breakpoints
By default, clicking on the breakpoint in IntelliJ products removes it, which can sometimes interfere (for example, if the breakpoint is triggered in the event of a certain condition specified in its settings). Now you can avoid this situation by selecting Drag to the editor area in the Preferences | Preferences |Build, Execution, Deployment |Debugger |Remove breakpoint:
Emoji Support
Like all JetBrains products, AppCode now correctly displays emoji in the code editor and various IDE windows:
Find in Path
The Find-Path full-text search window has changed - the interface has become more concise, the need to switch between several tabs in the window has disappeared:
Demo
A small demo (in English) with a demonstration of new features from our developer lawyer Phil Nash:
That's all - read about other features of the product on our website , stay tuned to our English-language blog , and ask any questions you may have in the comments to this post.