Archive for August, 2007

Search within a folder in Textmate

Ever wanted to search within a folder (or multiple folders) directly within Textmate? If you’ve ever tried doing full-project search, you know that it’s painfully slow. Thanks to Henrik Nyh, you can use grep instead of the built-in search, but his version only work on the full project. If you want, for example, to constrain your search to just the app folder in a Rails project, you’d have to make a new Textmate project, and search within there.

To simplify things, I expanded Henrik’s original work to support file contexts. If you select one or more folders in the project drawer, the search will be constrained to the selected contexts. If you select more than one context, the results for each context will be displayed sequentially, so you’ll see, for instance, all the results within the “app” folder and all the results within the “config” folder cleanly demarcated.

As with the original plugin by Henrik, this version does not support regular expressions, but it does return the results as clickable textmate URLs, which is nice. It also rebinds the apple-shift-f key, but you can easily change that if you want.

My updates are available as a bundle called “Wycats” — I hope to update this plugin to support regex as well as release additional useful items in the bundle.

Webrick Anywhere

I’ve lately found myself frequently in a situation where I had a directory structure that I wanted to be able to easily browse like a server. One common reason for me was a desire to browse work I was doing on my Mac on Parallels.

Rails uses Webrick to quickly mount its directory structure, and since my needs were very lightweight, I decided to investigate how I could set up webrick to mount a directory structure on a particular port. The result: a small script called server.rb which you can drop into any folder and call via ruby server.rb [PORT]. It’ll default to port 2000.

The code is almost entirely the example code from the Webrick library, but there are a few modification. Bon Apetit!