Bundles Repository Moved & Mirrored

A couple of important announcements went out over the TextMate mailing list related to revision control, affecting any users keeping up with the “bleeding edge” of bundle development.

Subversion Relocation

The URL of the main Subversion repository has been changed from the forgettable untypeable http://macromates.com/svn/Bundles/ to a much nicer http://svn.textmate.org/. We made this change a while ago, but we didn’t put in a redirect before because we weren’t sure the new server could handle the load (there were some problems with the first one). We are putting in the redirect now.

Subversion doesn’t handle this change gracefully (it will just report an error and fail), so anyone using svn to keep up with bundle development needs to manually update the checkout to the new location. Here are the steps required to relocate your checkout.

Read the rest of the post »

Working on It

Over the past two years, posts on this blog have slowed to just a trickle, and a number of TextMate users have asked about TextMate’s status, or publicly worried about its future. This blog post, the first I’ve written here in a long time, is an attempt to assuage those concerns and answer some of the most frequent questions.

In short, TextMate development is going strong: TextMate 2 isn’t done yet, but progress is steady, it is starting to take shape, and the end is in sight. The rewrite has been a slow and careful process, but the ideas behind it are exciting. I hope to publicly describe some new abstractions in the coming weeks and months. Moreover, the community continues to churn out new bundles and features for TextMate 1.5, and I’ve been building up a backlog of posts describing them. While I am not writing to announce a release date for TextMate 2, I do hope that this post will be the first in a series showing a bit more transparency.

Read the rest of the post »

ProjectPlus

There is a plug-in from Ciarán Walsh called ProjectPlus. It does SCM badgets (Git and SVN), Finder (color) labels, preserves project state between sessions, and lots more.

Bundles and GitHub

To make it possible to find TextMate bundles by automatic tools such as TextMate Gem and the new GetBundles bundle (currently in review) the naming convention proposed is to include .tmbundle in the name of your bundle project.

Presently most bundles at GitHub use -tmbundle but likely because a dot was previously not allowed in a project name.

Japanese Manual

Thanks to the work of Takaaki Kato there now is a Japanese TextMate manual.

A few things still need to be translated (there is an issue tracker) but it should already be very useful for people who prefer reading Japanese over English.

And no, this does not mean that a new CJK-compliant TextMate has been released. The best approach for using CJK with TextMate is still via the plug-in.

Working With History in Bash

Yesterday we talked about favorite bash features (on the ##textmate IRC channel). I figured it was worth posting mine to this blog, they mostly revolve around history, hence the title.

Read the rest of the post »

TextMate (Ruby) Tricks

John Muchow of Mac Developer Tips recently posted a screencast showing a neat way to debug your Ruby code.

Speaking of the Ruby bundle, Ciarán Walsh has a post about the design philosophy behind the mnemonics of the Ruby bundle and a few highlights.

And while there seems to be a preference for writing TextMate commands in Ruby, anything that you can run from a terminal (shell) can be used. A step-by-step tutorial about how to write TextMate commands in PHP is available at Ciarán’s blog. I pushed him to write this one, as I believe there are a lot of people who work with PHP in TextMate that never got around to writing custom commands in the false belief that they would have to learn elisp or some similarly obscure language :)

ExpanDrive — Seamless sftp mounts

Not so long ago Jonathan Ragan-Kelley mentioned ExpanDrive on the mailing list and I assume it is the same Jonathan R. quoted on their page as saying:

I’ve never seen TextMate work well on a network drive. With ExpanDrive, it’s a dream. And the drives stay mounted perfectly when I move my laptop between home and work.

John Gruber just posted a review about ExpanDrive in which he writes:

My first impression after reading ExpanDrive’s promotional description last week was that it sounded too good to be true. One week later, I’m pretty sure it actually is that good.

If it wasn’t clear from the above, ExpanDrive lets you mount remote sftp drives and it actually works! I.e. no long delays or dropped connection in the middle of a save. Their introductory price is $29.

2008-03-11: Update: There is a $5 discount for the first 100 who use UWQ0OUQZWIB1ZMTP as coupon code.

Changes — FileMerge Replacement

Changes Application Icon

Ian Baird recently released Changes which is an application to show differences between two folders and merge these intelligently.

I know this is not an uncommon task among many TextMate users, as I have received quite a lot of requests for building such functionality — Changes of course has TextMate integration, so this application will hopefully satisfy a lot of you.

Version 1.0 of Changes is available for $39.95 (free trial) but if you use TEXTMATE0308 as coupon code you can get it for $29.95 (offer lasts throughout March 2008).

Git Bundle

You may have read that a lot of prominent people have recently moved to Git and are loving it. I too am one of those who fancy this new kid on the block but never got very far with the bundle I started for it.

Fortunately Tim Harper recently picked up on my initial efforts and has done a great job at not only making this bundle functional but also downright impressive :)

The much improved Git bundle can be found at Gitorious and discussion about it can be directed to its Google Group.

For those too lazy to click the link above, here are the short install instructions:

mkdir -p /Library/Application\ Support/TextMate/Bundles
cd !$
git clone git://gitorious.org/git-tmbundle/mainline.git Git.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'

After having installed it you can press ⌃⌘T in TextMate and enter git to find the “Administration → Update Git Bundle” action. Use this to update the bundle (it will automatically reload after having performed the update).

From Bash to Z Shell

From Bash to Z Shell Book Cover

If your usage of Mac OS X is the slightest bit “technical” then you should do yourself the favor of getting familiar with the extremely powerful shell environment.

Even if you already know a dozen scripting languages far more expressive than the shell, there are still contexts in which the shell is just better suited for the job, and understanding the POSIX environment is knowledge that is very valuable even outside the shell.

James Edward Gray has a review of From Bash to Z Shell which sounds like just the book you want to pick up, quoting from his review:

I’ve already noticed dramatic differences. I’m using shell loops at the command-line now to process many files at once; I actually understand shell quoting and when to use which types of quotes and escapes to get the desired effect; I can easily strip off a file extension or get a directory name from a full path when I need one; I make constant use of the command history now whether I’m searching for a past command, correcting a typo, or just pulling a single argument out of a previous command for reuse in a new command; and I’ve written a few shell functions to provide shortcuts to my common tasks.

Eye on TextMate Bundles

Luke Daley took initiative to have FishEye index the TextMate Bundles repository.

A neat thing about FishEye (in addition to the “lines of code”-graph shown below) is that it allows per-folder RSS feeds.

Lines of code over time for the TextMate bundles

Read the rest of the post »

Right-Aligned Snippet Placeholders

The other day Abhi Beckert asked (on IRC) how to ensure right-aligned text in a snippet. That is, after the snippet has been first inserted, it reads:

# --------------------
#               Header
# --------------------

Here Header is a placeholder which we can overtype. When we fill in the actual header name (for example Configuration) the text should be formatted like:

# --------------------
#        Configuration
# --------------------

The trick to solving this problem is by using conditional insertions in the replacement string.

Read the rest of the post »

Logitech Control Center

Logitech Control Center Icon

Seems the infamous Logitech Control Center is back to wreak havoc.

They released a 2.4 update on the 20th of November and a week later a “mate error” thread surfaced on the mailing list, I have received a dozen support emails about the problem, and if you look at the comments for LCC at VersionTracker or MacUpdate, you’ll find that a lot of users are reporting problems with this update.

So my advice: uninstall LCC. And on a more general note, if something has worked fine for a year, and it suddenly breaks, consider what you did to alter your system in the last week before you write support, thanks! :)

TextMate Tips

I indirectly plugged Ciarán Walsh’s blog in a previous post about hacking TextMate. Though it is worth mentioning it again, especially the TextMate tips category.

Ale Muñoz (maintainer of the ActionScript bundle) runs a blog that has a Flash / ActionScript / TextMate focus, I haven’t linked to it before, so I hereby am making up for that.

Lastly let me send some link love to Thomas Aylott’s projects: his blog, post about his Leopard theme for TextMate, and BundleForge.

Leopard Issues

This post is meant to clarify a few Leopard related issues.

Read the rest of the post »

Open in TextMate

Open in TextMate allows you to open the current folder or selection from Finder as a TextMate project. There are a few scripts for this, but this one is the latest iteration and it comes with a nice icon that fits will into the Finder tool bar.

Open in TextMate tool bar item

Henrik also provides tool bar items for Open in Terminal and Glob Select which are definitely also worth checking out!

And for the records, this is not related to “Edit in TextMate

InputManagers on Leopard

Contrary to most rumors, input managers still work on Leopard (at least on my pre-GM seed), but for an input manager to be loaded there are now a few requirements it needs to fulfill.

Read the rest of the post »

Recursion in Regular Expressions

Robin Houston (author of the original proposal for extending regular expressions to support recursion) gave an example of how to use this feature to match properly nested parentheses on the TextMate mailing list.

Read the rest of the post »

File Type Detection (RSpec & Rails)

To enable the functionality offered for a given file type, it is important that TextMate actually detects it.

In this post I will go through the 3 steps used to detect your file’s type and then answer the question of how to make TextMate automatically recognize rspec files (for those who have bound .rb to Ruby on Rails).

Read the rest of the post »