Not a good mapping

In almost every Mac app I am aware of Cmd+UpArrow is a shortcut for "Move to top of file". AppCode uses it to jump into some kind of file chooser.

I think this is a really bad default behaviour. It goes against the grain and means that I have to learn an entirely new and unfamiliar behaviour for this app. I will remap this key but I think you just shouldn't do this kind of thing.

Edit: Or, rather, I would remap it if I could figure out what the mapping was, I can't see it in the KeyMap reference. It might be handy if the keymap editor allowed you to type a key and see what command it was mapped to. I have no idea what this is called.

Kind regards,

Matt

15 comments
Comment actions Permalink

Matt, you can find the shortcuts in the keymap with the shortcuts filter:
Screen Shot 2012-07-26 at 12.34.47 .png

As for the current shortcut, it is indeed in conflict with Mac layout, but we cannot change it in our default keymap, since it is used throughout all our products and on various platforms.
In the Xcode keymap, though, the shortcut is correctly mapped.

0
Comment actions Permalink

You can't change it? You mean it's technically impossible for you to change it?

Kind regards,

Matt

0
Comment actions Permalink

No, it is technically possible, but we cannot make such a change, since we have lots of users, who are used to current behavior.
As I said, the default keymap is used in all our products - in IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm. I guess you can see, that chaning a default keymap in this case is not justified.

And it is very easy to remap the key, anyway.

0
Comment actions Permalink

Hi Anton.

Did you read my post properly? I could not remap this key since I've no idea what function it's invoking, it doesn't seem to be in the default keymap reference, and I can't find a way of looking it up.

Further, if AppCode doesn't take the Objective-C development world by storm then I think it will be from the compound action little, in my opinion poor, decisions like this one.

You seem to have made a decision to emphasize the homogeneity of your own platform as if that's a benefit. As a (relatively) long-term Mac user coming to Xcode I don't care about your platform. I'd also wonder are you really expecting to draw users from IntelliJ to AppCode? Or from Xcode? Who is your target customer?

Mac users have a set of expectations about how apps should work. When you defy their expectations it had better be for a good reason. "All our other apps (on other platforms) work this way" is, to me, not a good reason.

Just my opinion. YMMV. etc.

Kind regards,

Matt

0
Comment actions Permalink

One good way to find out what its mapped to is to pick a random mapping and try to change it to cmd+up. You'll get a warning that its already mapped to Jump to Navigation Bar. Would be nice if we could search by key strokes.

You can turn off the navigation bar, it indicates where in the project structure you're currently working. If you like to keep the project in sync with the file you are working with and vice versa, select the 'gear cog' in the project window and select both autoscroll to and from source. I find it real handy.

A couple shortcuts I use all the time: CMD+O if you know the name of the class you want to work with just start typing and it'll list matches, hit enter to open file.  CTRL+O to implement overrides, and CTRL+I to implement delegate methods.

If you type a class name in your code that's not in scope, you'll be prompted to add the appropriate import or @class statement.

To find the keymap document, select the Help Menu/Default Keymap Reference

For templates a favorite is using propr and propa in your interface file, (doesn't show up in auto-completion for some reason). These generate retain and assign properties respectively along with their synthesize and dealloc statements. You can configure how the name of the iVar is generated and what syntax is used in the dealloc.

A powerful feature I use all the time: Right click on a method, property, class, etc and select Find Usages.

Another powerful feature I use all the time: Code Menu/Inspect Code  check the custom scope option for Project Files and hit ok. (Performing this for Whole Project can take a real long time.) Breath a sigh of relief at all the memory leaks and other issues you are now aware of.  I work on a large distributed team and this capabilty is a god-send.

In appCode you don't need to type [ ] just type the variable name space method name, once done AppCode adds the brackets.

CMD+SHIFT+Enter is another nice shortcut, it completes statemtents for you.

Finally, support from JetBrains is very good. I've submitted several feature requests and bugs that they've already addressed and will be available in the next drop. For example, we had an issue with someone releasing 'assigned' properties, I asked that this be flagged by code inspection and it will be in 1.6. Similarly we have a serious issue with strong references to 'self' in blocks, asked for this to be flagged by code inspection and it will be in 1.6.

0
Comment actions Permalink

Matt, I believe I did read your post propertly and understand it correctly.
And, as you can see - I have shown you how to find the action by a shortcut on the screenshot, have you tried it?

As to the other point, people who come from Xcode can easily set the familiar keymap in the preferences and feel like at home.
The Xcode keymap was bundled long after the default keymap so would have been even worse decision to change the default in some minor vesrion.

And yes, it is a benefit for many current users to have the familiar default keymap, since most of them are familiar with either our produces, or similar IDEs.

Anyway, this is indeed the decistion we have made but as more Xcode users jump on board, we'll think how to make life easier for them.

0
Comment actions Permalink

>One good way to find out what its mapped to is to pick a random mapping and try to change it to cmd+up.

That's a nice bit of lateral thinking Seamus, thanks.

>Finally, support from JetBrains is very good. I've submitted several feature requests and bugs that they've already addressed and will be available in the next drop.

Same here.

My point is not to bash JetBrains support so, since there's a risk that's how it's going down, let me clarify.

I am concerned. I am reasonably active in the #macdev Freenode IRC channel. There has always been an undercurrent of grumbling about Xcode which has sharpened in Xcode 4.

Yet what I do not see is a lot of people talking about AppCode as a good alternative. I've tried to raise it a couple of times and people do not seem interested. So I ask myself "Why is this so?"

One reason I think is that AppCode does not go the extra mile to conform to the expectations of Mac users, so much as JetBrains users. When selling a Windows Java IDE, or a C# IDE I think this is perhaps not such a big deal since the Windows platform does not, in general, push consistency.

Mac users value consistency, value apps meeting their expections, AppCode - I think - needs to go the extra mile (esp. because of it's Java inheritance).

So my point is that I *want* AppCode to be a success and I worry it's exactly because of a whole series of little decisions like this, that people might not choose to use it and, instead, endure Xcode.

Kind regards,

Matt

0
Comment actions Permalink

Anton my apologies, my eyes skipped right over the screenshot... I'm not sure why, I might claim old age & failing eyesight :)

Kind regards,

Matt

0
Comment actions Permalink

Okay let me suggest this.

The first time the user starts AppCode present a choice to select the Xcode keymap.

Even now, after a couple of weeks, I am reticent about switching keymaps since I *have* learned some of the shortcuts and I have no idea how much confusion it's going to cause me re-learning how to use AppCode (yes I know it's the Xcode shortcuts but learning is contextual and I've already learned somewhat about how AppCode works).

Kind regards,

Matt

0
Comment actions Permalink

Matt what you want to do is go to preferences, keymap, in the upper left is a Keymaps drop down, select the XCode key map. Enjoy.

Matt its a very good reason to keep the 'default' mapping consistent across their applications. All of their other IDE's run on Linux and Windows as well as Mac and yes many of us program for several platforms. I use ReSharper and IntelliJ, the consistent keymapping is a huge help.

Many iOS developers are coming from Windows and Linux, and we come with significantly higher expections from our IDE then what XCode provides and AppCode provides the features we expect: Support for all major source control system, (not just flavor of the year), true refactoring, much better auto completion, much better template support, insane number of configuration options, control of code formatting to the nth degree, code inspection that is years ahead of clang, and so on and so on.  And it was only release last fall and its getting better all the time.

You need to spend time and seriously learn AppCode to realize it's benefits over XCode, which a very very rudimentary IDE.

0
Comment actions Permalink

Seamus I think this is exactly the kind of attitude that can lead to failure on the Mac platform.

I don't want to get into a religious war, I'm just pointing out that Mac users come with expectations about behaviour that they value. You may decide to say "our way is better" and in some philosophical sense you may be right. You just won't attract all those users who disagree with you.

From my perspective it's better that AppCode be a success, I think that requires JetBrains compromise on their own platform homogeneity.

Of course we'll see and I have no idea what kind of numbers AppCode is doing, but based on the loose, anecdotal, sampling I've done of Mac developers of my acquaintance the signs are not encouraging.

Kind regards,

Matt

0
Comment actions Permalink

In my experience there are a couple reasons folks aren't interested in AppCode: 1) No Interface Builder, they don't want to juggle two IDE's. 2) XCode is from Apple there for its better, (I'm serious) 3) Inertia, folks don't want to learn a new IDE, they'd rather complain then find something better.

0
Comment actions Permalink

I guess I don't want to get too much further into this kind of argument, so let me leave it at this:

When you are fighting an incumbent, particularly a free incumbent that has important features you don't have yet (e.g. Interface builder, Core Data modeller, ...) it behoves you do to everything you can to smooth users into your path.

Kind regards,

Matt

0
Comment actions Permalink

I'm not really arguing, I was confused by your original post and we want the same thing: To extol the virtues of this awesome tool.

Of course its always better to smooth the path, but they do provide an XCode keymapping and I believe as part of the install or initial launch you are given the choice of keymap to use. I see no problem making the XCode keymap the default, its easy enough for those of us already familiar with their products to change it to the keymap we're used too.

However, in my experience this isn't a major problem with adoption. Like I said, in my experience its the fact that it doesn't have an Interface Builder that is a turn off. Folks I work with and go to user group meetings with won't even consider trying it because of this, until ... they see me working with it. A couple of guys I work with picked it up after watching me code. A couple have bought it simply for code inspection.

What will make AppCode a success is us. I believe this goes for all JetBrains products, they've been successful through of word-of-mouth.

0
Comment actions Permalink

Matt, Seamus,

we really appreciate your concerns and suggestions, surely we will think about everything you've said and will listen your further opinions.
We'll probable come up with something regarding keymap, just not right away.

Cheers!

0

Please sign in to leave a comment.