I prefer `[time nick message] (map escape-html [time nick message])`. And why is the `re-matches` indented so weird? I guess it's a bit long to fit on the same line as its binding form, and those are always awkward. I've started using a neat trick I saw in someone's blog post recently:

```clj
(let [[_ time action nick message]
      ,,(re-matches #"\[(.+?)\] (\*?)(.+?):? (.+)" line)])
```

There the commas serve to "indent" in a way that emacs will stop trying to "fix". You don't have to use it here, since it may just be a passing fancy of mine, but I thought I'd mention it in case you like it.