Beachball

Problem: TextMate beach-balls when (re)activated. Note: this issue appears to be vastly improved under Leopard.

Reason: When you re-activate TextMate, it will check all folder references in your project for updates. When a project is huge or the files are stored on a network mounted volume, this operation is known to be very slow.

A few workarounds that might help you:

  1. Filter unwanted files from the project. For example if this is a Rails project, you can exclude the log, vendor (maybe only vendor/rails), and tmp folders.
  2. Work with a “static project” instead of a folder reference. This effectively means drag just the source files you need to the project drawer (after creating a new project) rather than dragging folders. A script exists to clone a folder into such a static project, this gives the same structure as dragging the folder would, but will not update the folder structure — to use the script: save as build_project.sh and chmod a+x build_project.sh (in Terminal) and run it like this: ./build_project.sh «folder» > myproject.tmproj
  3. Work locally instead of over the network.
  4. Try ReMate (direct download link) — this is a third-party plug-in and not officially supported.

None of these workarounds are silver bullets, for a real fix you’ll have to wait for TextMate 2.0 (no ETA given).


Problem: TextMate beach-balls when loading an (XML / SQL dump) file.

Reason: TextMate (in the current release) does not deal well with long lines. Often auto-generated XML or SQL dumps are without line breaks. It improves performance slightly to enable soft wrap, but working with the file can be very slow.

If you want to open the file only for reading, you can word wrap it prior to opening it by running the following from Terminal:

fold -sw80 «file»|mate

This will word-wrap it to 80 columns and pipe the result to TextMate (assumes that you have installed the mate helper command, see Terminal Usage in the Help menu for that).

For XML you can also use (to pretty-print the XML, rather than word wrap it):

xmllint --format [--html] «file»|mate

Here give --html if the file is actually HTML.


See also Find in Project