TextMate News

Anything vaguely related to TextMate and macOS.

Beta versus release versions

As some may have noticed, beta 6 was released as an unofficial release (i.e. even if you’ve enabled beta checks in the software update preferences, it wouldn’t appear). Dan asked if these unofficial versions were to be considered more as alphas than betas, so let me clarify on how I view beta versions (since I don’t think there is any consensus on what alpha and beta versions really mean).

Update: Now it’s 1.1 beta 12 (but please read this entry before just downloading, this beta requires 10.3.9 or higher). Beta 12 includes these bundles: C/C++, CSS, Diff, HTML, Language Definition, Latex, Markdown, Math, Objective-C, PHP, Property List, Ruby, Source, Subversion, Text Utilities, Unix Shell, and Web Searches. For additional bundles you’ll currently need to do a svn checkout.

Generally I want people to use beta versions over release versions, because beta versions have more features (and often bug fixes). The reason I call them betas are:

  • stuff in beta versions are work-in-progress, so e.g. you may have a text field in a dialog which isn’t functional yet, and
  • initially I did beta releases almost daily, and I don’t want to force users (who don’t need the latest cutting edge version) to go through the trouble of daily updates.

Beta 6 is definitely better than beta 5 when it comes to features, but the theme system is very much work in progress (more than usual) so,

  • you need to do a svn checkout of the bundles repository to really use beta 6 (nothing is included, and if you do not do the checkout or set a selection color, it will freeze when you make a selection!),
  • we (me and the bundle contributers) haven’t stabilized fully yet on language naming conventions and thus, not all languages look as good (with regard to syntax coloring) as beta 5 (although you can easier customize these colors with beta 6 than you could with beta 5),

So, if you don’t mind doing the svn checkout and you won’t write long letters to bugs (at) macromates about broken syntax colors or how this theme editor could be much better, then I’d say: go for beta 6!

You can also read the online release notes. Scroll down to the details on the new scope system, this stuff is freaking fantastic! The improvements in the actual parsing (heredoc support, full recursion, etc) will be detailed in beta 7 (which should be out in a few days). This beta is probably also going to be unofficial, but I hope to have beta 8 out as an official beta before friday. And then I’ll start to blog about these new features.

categories General

46 Comments

24 April 2005

by Anonymous

From your description of what your betas are, you might want to call them alphas. I think the usual logic is that alpha software is missing features (like your example of a text field that isn’t functional yet), while beta is basically feature complete, but hasn’t been tested very much and is likely to still have bugs (which is why it’s still beta).

But whatever you call it, keep up the god work! =)

Beta 7 doesn’t work here on G4/OSX 10.4 8A369 (late Tiger beta). Starts up fine, loads my project, but on trying to show a file (I’ve tried php, css, and release notes from the Help menu) hangs and needs a Force Quit.

Beta 6 loads up, manages to show me the file, although with no syntax coloring and the mouse pointer is white when hovering over the text buffer area. It crashed when I’ve opened the ‘View/Language/Edit Languages’ window (the ‘View/Language’ menu is empty except for ‘Edit…’).

Beta 5 works just fine.

Well, yes… as stated, you ABSOLUTELY NEED to check out the stuff from the repository!

so beta 9 is the new beta 8? ;)

26 April 2005

by Sam Stephenson

Thanks for sharing this with us Alan. :-)

b7 is the best TextMate ever!

One question: will TM ever get a ‘proper’ functions popup? The one in the ObjC bundle is nice, but it’s yet another window for me to find and manage. I’d prefer a menu or a drawer in the document window.

It doesn’t have to be a language-specific feature - just make it a ‘saved regex patterns’ item in the language bundle.

TextMate is really shaping up nicely, and I’m trying to get used to not having the menu, but it’s not going too well :}

John: yes, I’m slowly introducing the function popup. You can see the first draft of it in the navigation menu, it works by making a query on the document using the scope-specific settings, which by default set everything named ‘function-name’ to be in the symbols popup.

It’s still very much work in progress though, and the appearance of it will most likely be more like the file chooser (i.e. with filtering), and showing some context – mainly with this current stuff I’m testing if the language definition files are good enough to tell it what should be in the list.

Doing it like this has the advantage that it works with mixed language files and it’ll also allow popup lists for other than ‘function-name’ (e.g. ‘included-file’ or similar). But probably I’ll allow a per language override to gather the symbols.

29 April 2005

by Jay Soffian

Any idea when a split editor window feature will be available? TextMate is looking good, but it’s frustrating on a regular basis not having a split editor. :-(

BTW, how fleshed out do you want a bundle to be before it’s contributed? I’ve started working on a bundle for the MoinMoin wiki syntax and unfortunately I got far enough to make me happy so I stopped working on it, but it’s still quite incomplete.

j.

29 April 2005

by Barrett Clark

I finally got my syntax highlighting almost where I wanted them, and was really looking forward to the syntax tool. I had trouble because at least one of my syntaxes borrowed from other syntaxes. For example, the OpenADP syntax includes from Ruby (which I don’t program in at the moment).

I d/led the new beta and subversion checkout, and have noticed that the HTML, OpenADP, and Perl templates are not there anymore. The TCL and PHP (formerly smarty?) stuff has also changed a lot. I can’t get the new version to work with the Perl plist that I setup.

The JS and CSS stuff looks good. Seems a bit odd that there would be JS and CSS syntaxes without an HTML syntax.

Should I submit my Perl stuff? I’m not sure that it’s ready for prime time….

29 April 2005

by Barrett Clark

scratch my HTML syntax comment – i noticed that there was an HTML syntax as part of the OpenACS syntax, so that’s where i had seen that.

~B

Jay: I may add a roadmap to the wiki, but that’s unlikely to be within the next month, where my focus is on finishing the features I’m currently working on, and not about giving ETA’s for the next batch of features, sorry!

With regard to bundles, if you think it may have value for other users then it sounds like it would be a good idea to add it to the subversion repository. If you write me privately (with a desired username) then I can give you an account.


Barrett: I’m not sure what you actually downloaded. There’s both a Perl bundle and a HTML bundle in the repository.

02 May 2005

by Vanja Bucic

I am running Beta5 on Tiger and I am noticing HUGE slowdown when scrolling. Page-up, page-down, mouse scroll, and keyboard scroll make one of my CPUs to go 100%, and it is painfully slow.
I am editing Ruby code with default color scheme.
Running Tiger on DP G5, 1GB RAM.

Can anybody else confirm this behavior?
Thanks.

03 May 2005

by Vanja Bucic

Acquiring svn is such a pain…
Here is what had to be installed (beyond rebuilding and installing darwin ports):
apr 0.9.6
db-4.2.52
expat-1.95.8
libiconv-1.9.2
apr-util 0.9.6
neon-0.24.7
subversion-1.1.4

And it took some time to download and rebuild those packages.

Is there a way you could set up a nightly cron job to check it out locally and make a downloadable package? svn path is just too troublesome and invasive.

Thanks

Vanja:

There are downloadable installers for Subversion that don’t require any of that… the one that works the best is put together by Martin Ott, and lives at:

http://www.codingmonkeys.de/mbo/

It works just ducky with Tiger, too.

Metissian has another set of self-contained Subversion packages – they’re the ones I use.

I also use the SCPlugin at Tigris.org. It’s a little weak in some places (notably the Finder badges not updating properly), but they’re currently rewriting large portions of it; this will also remove the dependancy on external Subversion packages.

I use the command-line client to do the initial checkout, then update/refresh using the plugin.

Damn. Somehow I messed up the SCPlugin link.

http://scplugin.tigris.org/

This has probably been mentioned elsehwere, but the biggest thing I miss from SubEtha is the function navigator popup at the top of the page… any chance of that making it into the app?

Vanja: If you still have problems with slow scrolling, you can try to run (from Terminal.app) “sample TextMate 10”, this will sample what TextMate does for 10 seconds, so while it samples, scroll around. It writes a log to /tmp (it outputs the filename) which you can send me. Text layout is however very slow on the Mac, so it’s not unlikely that scrolling is cpu-intensive (when you scroll entire pages). Unlike e.g. NSTextView, TextMate currently does very little caching of the text layout.

As for subversion, as others mentioned, there are binary distributions. While I could make a snapshot of the repository, the repository is really only meant for svn-savvy users. A snapshot of the repository is normally included with betas, but was left out from the unofficial beta 6 and 7 because these were released (first) to people working with the stuff in the repository (because this needed to be updated to beta 6, so it made no sense to include it).

Ryan: yes, this has been mentioned elsewhere, like in the 6th comment on this entry, followed by a reply in the 7th! :)

05 May 2005

by Vanja Bucic

Thanks for the clarification about the subversion (but ‘get the latest nightly build’ would be sweet as well).
As for the slowness of Beta5, it happened after an upgrade to Tiger. TextMate was always fast on my mac (DP G5), but after the upgrade the TextMate took my computer to its knees. It was happening only with heavily colored areas (I was editing ruby). Plain files with no syntax coloring were fine.
Now I am running Beta7 with no slowdowns at all. Not sure what changed (syntax coloring code?).
Thanks again for your patience.

I was hoping the alpha slider in the new beta would let me have semi transparent backgrounds but no luck :( It’s really useful to be able to see a web page or something while I’m working in TextMate. Any chance of that happening? I asked for this in SEE, but they seem to spend most of their time and effort coming up with reasons not to implement stuff, and excuses for why bugs aren’t really bugs.

John: I now let the alpha value set for the document background turn the text view part of the window transparent (so you’ll have that for beta 8 ).

08 May 2005

by Kenny

Hi Allan,

thanks for keeping us up to date with this weblog. I was about to fire off an email to ask where the updates to 1.1b5 were, but I see that you’re hard at work on it.

Like many others, I’m really just waiting for a function pop-up and setting breakpoints for xcode for my life to be complete : )

K

sweet! i now have my translucent windows in b8 and am a happy camper :D

Is there any progress report on the next beta? I’m using beta 8, and have just gotten to the point where I can’t use it anymore – on my 1.33 GHz 12” PB, writing PHP/HTML pages that have lines with more than 40 or 50 characters in them has become so galacially slow that I get 20 or 30 characters ahead of the input. I’m hoping that this is just the rawness of the new syntax highlighting system (I assume it is), but it’s made it so that I have to use another text editor for my day-to-day HTML editing tasks. :(

Oh, please may we on the bleeding edge get languages built in to beta 9?

I refuse to become a subversion expert just to get a functioning version of my new favorite editor. I don’t want to go backwards and loose my beautiful transparent windows. :)

Jason: Yes, that’s the rawness of the new system it is significantly better in beta 9, which should be a noticeable improvement also compared to beta 5 (before the new syntax system).

As for progress report, should you really be using beta versions? From your post it sounds like I’m doing you a disservice by releasing betas early, seeing how it sends you off to other editors.

Jamie: There actually is a reason why I don’t include the bundles and name these unofficial betas! ;) But seeing the amount of downloads I get for these, and the extra svn support I now have to provide, I might just include a repository snapshot with beta 9.

I’m not sure how “should” plays here – I’m happy to use betas, but the difficulty of rolling back (which I didn’t immediately recognize until I had done the entire svn checkout and then realized that it’d be a little bit harder to roll back than just draging an older beta back into my Apps folder) makes it perhaps a little less palatable for me. That being said, my actual development environment is still running b5; it’s my laptop (which is a de facto dev environment only on weekends when I need to do something but don’t want to drive into work!) that is paining me right now.

All that being said, I’m anxious to see what b9 has in store… so I’ll continue my daily checks to discover it when it appears!

How’s the progress coming on a non-SVN-required release/build/tag of either beta 8 or 9?

18 May 2005

by anonymous

I agree with the first poster who said, “From your description of what your betas are, you might want to call them alphas.”

Admittedly, terminology doesn’t mean much these days, but there used to be meaningful distinctions between “Alpha”, “Beta” and “Release Candidate”. Technically, if it’s feature incomplete, it’s an Alpha. If it’s feature complete but still requires testing, it’s Beta. If you think it’s release-ready, but you want to send it for one more round of testing, and if there are no MAJOR bugs it’ll be released as-is, it’s a release candidate.

I don’t mean to be too pedantic, but if you stick to this naming convention, I think users will have a better idea of what to expect.

Thanks for the fixes in beta 9, finally got the Dark theme working without having to tweak a hundred settings! ;-)

One suggestion for the future:

  • Selecting text and setting the color can be a bit tricky to find one that looks good on a dark theme. The transparency helps but I find I still get text that comes too close in contrast to be visible. i.e. think white on white, etc. How about a highlight that inverts the color of the syntax being selected? Not sure if this is easy, processing intensive or even possible. Just a thought.

  • Chock up one more vote for a split window… grin - Yeah, I know, I know, it’s involved and you are working on a solution… One can dream can’t he?

Thanks for making TextMate, it’s a very good editor; I’m digging it!

21 May 2005

by Jay Jansheski

Since I am a doofus and I don’t know what I’m doing, I had some trouble with the SVN business. For anyone else having trouble, here’s what I did to get the latest beta (at this time, beta 9) working on OS X 10.4.

1) Closed TextMate, downloaded the latest version, opened the disk image, dragged the app to the Applications folder.

2) Went to http://metissian.com/projects/macosx/subversion/ and downloaded the latest release candidate of the subversion client (1.2.0 RC2 at this time). Opened the disk image, double clicked the pkg to install.

3) Added /usr/local/bin to the path by opening the ‘profile’ file (/private/etc/profile on my machine) and changed the line

PATH=”/bin:/sbin:/usr/bin:/usr/sbin”

to

PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin”

4) deletes’ folder in /Library/Application Support/TextMate. (This step may only be necessary if, like me, you created a ‘Bundles’ folder on a previous, unsuccessful attempt at the svn checkout.)

5) Opened terminal, executed commands under “Doing a Checkout” at https://wiki.macromates.com/Main/SubversionCheckout, which at this time are

mkdir -p /Library/Application\ Support/TextMate
cd /Library/Application\ Support/TextMate
export LC_CTYPE=en_US.UTF-8 # assuming you don't have this setup already
svn --username anon --password anon co http://svn.textmate.org/trunk

Then went and ate a sandwich while the checkout was happening. When I came back, I opened TextMate and was rewarded right away with semi-transparent document windows. Neat.

22 May 2005

by Jay Jansheski

Step 4 should start, “Deleted the ‘Bundles’ folder”. Sorry about that.

23 May 2005

by Max Noel

Okay, just tried b9, and it’s very good, except from one problem. When I launch TextMate, there’s a 15-second delay before any of the language modes (and themes if anything but “simple” is selected – and in fact pretty much anything that comes from a bundle) become available, during which there is however a significant amount of HDD thrashing.

I assume this is because TextMate loads all the available bundles on startup – all ~30 megs thereof, and on my Powerbook’s 4200 rpm hard drive, it shows.

A solution to that problem could be to only identify and classify bundles on application startup, deferring the actual loading until they’re needed.

I’m mostly thinking of language definitions here: until the user activates a definition or opens a file that requests it, all the editor needs to know about a language definition is 1. That it is a language definition; 2. Its name; and 3. What file types it’s supposed to handle (if any).

Can you do that?

Ryan: I included a minimal set of bundles and settings in b10, I’ll probably do a b11 release in a few days with it all.

Matt: yes, I should add some way to affect selected text. I’ll put that on the to-do.

Max: if it was easy to fix, I would do it. But I do need the key bindings from each bundle item when the user press a key, the tab-triggers when he uses tab, the scopes to decide if it should be active, the name if he opens the menus etc. – so it’s difficult not to load the entire thing. What I will do (in the future) is cache these things in one or more files, and then only load these on startup, and load the actual items when needed. For now though, delete all the bundles you don’t need, and possibly convert the plists to binary format using: plutil -convert binary1 «file». I did this for all bundles included with b10. If you remove your local checkout, does b10 have the language support loaded in reasonable time?

27 May 2005

by Max Noel

1 or 2 seconds after application startup in b11… That’s much better, yeah. Thanks.

27 May 2005

by Nicolas Cianca

I like having the list of functions in a window (cmd-shift-T) instead of a menu. It would be great if the window could be made sticky as that would really make navigating code a snap. If the window was sticky, it would be awesome if it’s function list would change when a user select a different source file.

I’d also love to be able to change the font size (make it smaller) and maybe the typeface as well. You could probably do away with the Cancel & OK buttons on the window as well, as they consume space and seem redundant (e.g. just ESC or close the window to “cancel” or double click a function to go to it’s location on the source).

29 May 2005

by Sune Simonsen

Allan Odgaard
Is there a reason why you don’t just make the scope, the bundle the command is in. And make a global scope for things you want in al modes. Then you wouldn’t have to load all the bundles.

I might be talking gibberish.

Sune: yes, there’s a reason! :)

The scope is much more than just “file extension”. For example HTML files can embed PHP, CSS, JavaScript, Ruby, or what ever you want (e.g. in the recent Ruby syntax, you can embed C/C++ code, shell scripts a.s.o. in Ruby here-docs.

There are also bundles like e.g. the source bundle which define context sensitive behavior on e.g. ‘enter’ based on the scope.

And there are many other things which utilize scope in a much more complex way than just file type.

So this would be a severe limitation of possibilities, and the motivation for this limitation? so that Max won’t have to wait 1-2 seconds on his 4200 rpm hard drive (in which TM should be fully responsive btw, it just won’t have the proper syntax highlight).

And as mentioned above, there are things I can do to avoid having to load all the individual files (by using a cache).

30 May 2005

by Sune Simonsen

Allan Odgaard: Seams reasonable, and quite nice.
I just think speed is very important for a text editor.
The reason why i use editors like emacs instead of a
full-blown IDE is speed and customizability.

By the way this is the best editor I’ve ever tried, and I had my
share of editors :-)

Keep up the good work

  • Sune SImonsen

06 June 2005

by Mark Patterson

I’ve just started using 1.1b12, and I really like the way the spell check now doesn’t get confused with words next to tags in html, and I like the clear highlighting of intermingled php and html.

One quibble is that sections of javascipt embedded in html pages are not highligted. Is this a known weakness? Or have I got something wrong with my settings?

06 June 2005

by Mark Patterson

Ah, no, somehow the check spelling as you type had got switched off. Sorry.

07 June 2005

by Kidbrax

I am unable to do a subversion checkout due to our firewall at work. Please just implement JavaScript highlighting into the b12 download. Any ideas on how to do a svn checkout behind a firewall?

Kidbrax: since the JavaScript bundle only contain this language file you can just download it with a browser.

In the bundle editor, make a new bundle and a new language for that bundle, and paste the contents of the above file, or copy over the created language with the file downloaded.

10 June 2005

by Kidbrax

Allan,
Thanks, getting the JS that way solved my problem.

Kidbrax, are you able to use the web from work? Subversion uses HTTP for communication; if you can browse the web, you shouldn’t have any problem doing a subversion checkout. (That’s one of its beauties!)

15 June 2005

by Benjamin

Jason: That’s true for the most part, but if kidbrax is behind a proxy (even a transparent one) then there is a chance that subversion won’t work. The proxy server that you are behind needs to support the different subversion HTTP methods that it uses (such as: PROPFIND, REPORT, MERGE, MKACTIVITY, CHECKOUT, etc).