AppCode Basics: First Start

When you get into a new car you, normally, do something before you start the engine. Right?
You adjust the mirrors and seats; you check where the most important switches are and how they work. Let's quickly do the same about getting into AppCode.

On the Welcome screen you can start a new or open an existing Xcode project. All Xcode project templates are available inside the New Project wizard. To open an existing project just locate its .xcodeproj file on the disc or checkout the project from a version control system if it is not on your disc.


Here are some of the concepts of AppCode UI may want to know:

1 — Code editors with tabs
2 — Tool-window: specialized secondary windows attached to the bottom and sides of the workspace and provide access to typical tasks such as project management, source code search and navigation, running and debugging, integration with version control systems, etc.
3 — Tool-window buttons: buttons that show/hide tool-windows. Numbers near window names indicate keyboard accessors, e.g. Project tool window can be accessed with Cmd-1.
4 — Project view tool-window: a tool-window that's open by default.
5 — Navigation Bar
6 — Run/Debug Toolbar

These are the key UI elements you'll notice once your project is open.

AppCode is a complex and highly customizable development environment. You can quickly change the IDE look using the options under View menu or dive into IDE Settings dialog where you can configure IDE and Project settings.

AppCode allows customizing virtually anything. Walk through the Settings sections to know what you can change. To help you find a needed configuration option quickly a search field is available.

One of the important concepts of AppCode and all JetBrains products is a higher productivity via extensive keyboard use. You can do everything from the keyboard inside the IDE and you can customize the keyboard hotkeys as well. AppCode comes with 2 keymap schemes bundled: "Default" and "IntelliJ IDEA". If you are familiar with IntelliJ IDEA, you may find "IntelliJ IDEA" keymap more comfortable, while the "Default" keymap is more Mac-style.

To memorize AppCode shortcuts faster, open the keymap reference using Help | Default Keymap Reference and print it.

AppCode is also an extensible IDE. There is a number of useful plugins available. You can find them in IDE Settings | Plugins section. Review the installed plugins and those available in the repository. Note that you can disable some plugins you don't want them, e.g. you never use CVS --- you may turn it off.

If you want the powers of both worlds, Vim editing capabilities and AppCode's code knowledge and others — install the ideaVim plugin and enjoy!

AppCode Basics: Code Navigation

Efficient project code navigation is critical, and not only when you try to research someone's code but for your own one, when a project gets bigger. And effective ways to explore and navigate code is one of key areas we focus on in creating the AppCode IDE. However, since no two projects are alike, and each developer has their own habits and practices, we have designed different sets of navigation commands to suit both keyboard addicts and mouse maniacs. Choose what's right for you, but consider checking the other options, too.

Generally, code navigation in AppCode can be divided into 3 major kinds:

  1. from a usage to declaration
  2. from a declaration to usages
  3. through classes hierarchy

But let's review them all with examples.

When working on your own project, you often know which file or class you want to open and edit. The fastest way to do this is to use Go to Class... (Cmd+O) or Go to File... (Cmd+Shift+O).

If you know precisely, that you want to get to a definition of MyFavoriteVariable, use Go to Symbol (Cmd+Shift+O)

The above options offer very comprehensive functionality. For instance, you can use CamelHumps to save some key presses, or wildcards for file/path matching (see the screenshots). And of course they work for every file type AppCode knows be it Objectve-C files, HTML, JavaScript, etc.

Quickly navigate through class hierarchy using the gutter navigation icons:

Other options include:

Just open the "Go To" menu and you'll see the whole list with their keyboard shortcuts. These are the options that are worth trying and remembering and that you'll need daily, if not hourly.

In addition to just navigating the code tree AppCode offers advanced code view and search options.
The specific views include:

All three views are shown on the below screenshot and allow to quickly navigate to the corresponding source code.

Additionally, there's a "Quick Lookup" options:

And finally, the last in this section but probably one of the utmost importance — Usage Search.

Thanks to AppCode's ultimate knowledge of your project code you can easily find out where some object is being used, be it a class, a function, a variable or a resource such as image file.

Just put a caret on a symbol in the editor or select a file in project view and hit Alt+F7, select where to search and see the results in a special view broken down into categories such as Variable declaration, Usage in Import, etc. Of course, you can instantly get to any found line of code from here.

Alternatively hit Cmd+Alt+F7 and see the same results instantly in a popup window.
Pick a place you want to jump to and hit Enter to open it in the editor.

We're referencing keyboard hotkeys here. You can learn them all from the printable keymap reference. It is also available in AppCode under Help | Default Keymap Reference menu.

AppCode Basics: coding, code generation, intentions

...coming soon

{include:Coding, Code Generation, Intentions}

AppCode Basics: code analysis, quick-fixes, refactoring

...coming soon

# On-the-fly error and quality checking
# Inspections
# Quick-fixes

AppCode Basics: unit testing with OCUnit

...coming soon

# TBD

AppCode Basics: debugger

...coming soon

# TBD

AppCode Basics: VCS

...coming soon

# TBD

h2. {anchor:h.f3afcgc0nhx}{*}Separate posts ideas*

Color coded files
JavaScript, HTML, CSS
Productivity Guide
Macros recorder
i18n
navigation bar
Quick lists
\\
[{color:#000099}{+}http{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+://+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}www{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+.+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}youtube{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+.+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}com{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+/+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}watch{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+?+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}v{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}+=\_+{color}|http://www.youtube.com/watch?v=_ublfXNLnMA][{color:#000099}{+}ublfXNLnMA{+}{color}|http://www.youtube.com/watch?v=_ublfXNLnMA]
[{color:#000099}{+}http{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+://+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}jetbrains{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+.+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}dzone{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+.+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}com{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+/+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}articles{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+/+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}navigation{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+\-+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}inside{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}+\-+{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine][{color:#000099}{+}rubymine{+}{color}|http://jetbrains.dzone.com/articles/navigation-inside-rubymine]