On 2014-04-14 00:15, Allan Odgaard wrote:

I have conventions about how to format my code because it makes it
easier to read. Allowing to work with the code using simple text
utilities is a bonus.

Of course, I do that as well. I have very strict guide lines. But not because want to be able to use tools on the text.

And making a tool (based on a language parser) that can answer the
“questions” I have about my source code is infeasible, yet search works
amazingly well, and can be applied to revision history as well, say I
want to ask things like, “was this function ever called outside module
X”?

I'm not saying that isn't useful.

For me, asking where a thing is defined or called from is a subset
of what I ask, hence why I never felt the need for a dedicated tool to
answer that single question, as it would come with a different
workflows, and while I may start by asking “where is this called”, I may
extend it to “where is it called with ‘true’ as second argument” or
similiar.

The tool should obviously be able to handle a lot more. Here's a list of useful features that Xcode has based on libclang:

* Syntax highlighting. I'm not sure if Xcode does this but other IDE's like Eclipse for Java does semantic syntax highlighting. That is, it can highlight an instance variable differently compared to a an other variable

* Refactoring. Xcode only has renaming so far but other IDE's support more features

* Go to definition. Finds the correct definition even for overloaded methods, handle macros as well. I can't stress enough how useful this is for a code base you basically know nothing about

* Autocomplete. Knows the context and take advantage of that. That is, it will only show method available for the object of that particular type. It can also sort (not sure if Xcode does this) based on the return value:

int foo = object.ba|

Sort methods starting with "ba" and which returns "int" first. The autocomplete list also shows the documentation rendered for each completion suggestion. This is also a very useful feature for unfamiliar code bases. I basically learned the Java API's with the autocomplete in Eclipse

* Inline errors/warnings

* Fix-it. For simple errors Xcode can show suggestions how to fix the errors. Clang does this on the command line as well but when it's integrated in to Xcode it makes it very convenient by just clicking a button

* The same library is used by both the IDE and the compiler, meaning they'll always be in sync

Not related to Clang but:

* Inline git blame and history

* A nice split view for comparison of the history

And a lot more. You should really try Xcode, just to see what the competition has to offer. Actually, in general, I think it's almost irresponsible to not know ones competitors.

I’d also like to point out that a lot of things rely on naming or
formatting conventions without people calling it a tooling failure
(often the opposite). Take something like ARC, it relies on Cocoa
methods starting with ‘init’ or ‘new’ to return retained objects.

I think Objective-C has many flaws. This particular case would probably have been better with some form of annotation or attribute attached to these methods.

I would be happy to learn about better workflows, that is why I asked
you why you felt Xcode was better for working with the TextMate source
code (as a non-Xcode user myself).

Ok, cool. In general I do prefer TextMate when it comes to text editing and source control. But in this case Xcode has some really useful features that I miss in TextMate. Since I don't work so much on this code base I prefer to use TextMate. Most of the time is spent on reading source code and exploring.

At work, where I'm using Ruby eight hours per day, I use TextMate and could probably not use anything else. I have tried RubyMine, an IDE with many features mentioned above. I liked the accurate autocomplete and go to definition, I was even surprised that they work so well for Ruby. But I couldn't stand the rest of the editor. The snippets, commands and other stuff in TextMate is hard to beat.

--
/Jacob Carlborg

_______________________________________________
textmate-dev mailing list
textmate-dev@lists.macromates.com
http://lists.macromates.com/listinfo/textmate-dev

Reply via email to