Why 2.0 is not Developed in the Open

I got a letter asking me why I didn’t use the 1.0 model for developing 2.0, that is, released 1.0 when it reached “usable” and then incrementally improved it.

Read the rest of the post »

Interactive Input

Prior to r1509 TextMate had a very neat feature: you could run (⌘R) a piece of C, Ruby, Python, Shell Script, etc. and if the code (directly or indirectly) read from its standard input then a dialog would be shown prompting the user for input.

Read the rest of the post »

Snow Leopard

I created a wiki page detailing Snow Leopard compatibility issues.

Presently two exist which have workarounds described on that page. I will release a new build shortly (that means, I planned to have it out by now ;) ) which incorporate these workarounds.

There are (or may be) issues with some of the bundle commands written in ruby (as Snow Leopard ships with ruby 1.8.7, which isn’t 100% backwards compatible). We will address these as we see them over the next weeks/months and updated versions should appear in the Subversion repository.

Before you Upgrade

If you do a clean install of Snow Leopard, make sure you have your TextMate license key handy! It can be requested from this page. If you have changed your email address since you bought the program then you can copy/paste the license key from the application by using the “Change License…” button in the dialog which appears when you select the TextMate → Registration… menu item.

My Other Blog

In an earlier post I wrote that “I am trying to slowly turn this boat” referring to the lack of posts to this blog, and that “I have enlisted a technical writer to help bring this blog back to life”. Well, almost two months later, and no real sign of change, and plenty of comments on the post calling me out on that.

Read the rest of the post »

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 »