CSS Tools Coda Plugin

I’ve been using Coda on a more consistent basis lately, primarily due to the inclusion of third party plugins. As I work, I’ll find myself missing a few features from TextMate bundles. Since it’s terribly easy to write your own Coda plugin, I’m going to make a consistent effort to write and maintain a small library of plugins over the coming months.

CSS Tools

My latest plugin finds its roots in an article I wrote not too long ago; CSS Organization Methods and Writing Style. In the article, I took a quick look at a small rift that brought up quite a bit of conversation in the Web community. There are two distinct camps, it seems, when it comes to people who write CSS. There is one side that writes their CSS properties on a single line, and another that will devote a line to each property in a selector. Personally I’m in the ’single line’ camp, but I absolutely understand why other authors prefer multi line.

I came up with a proposed solution; reformat your CSS. That tool uses CSSTidy to allow a simple transformation of your CSS formatting. It will retain any comments, and leaves all properties as written (instead of converting to shorthand, for example.)

Basically, CSS Tools brings that functionality to Coda. You’re able to convert a style sheet from single line to multi line and vice versa. You’re also able to compress your CSS if you’d like. Take a look:

I plan on making the plugin more elaborate over the coming weeks, hopefully beefing up the template which handles reformatting, as well as providing more methods for compression, possibly the ability to include your own CSSTidy template for processing.

Download CSS Tools

Version 1.0.1
February 4, 2009 – Attempt to fix issues with plugin failing to execute commands
Version 1.0
December 15, 2008 – Initial release

There's a conversation brewing

  1. Appreciate you releasing this plugin. I haven’t committed to Coda 100% just yet, but at least your CSS Tools will be waiting for me when I do. I’m still missing cold folding. Is there a plugin out there for that yet?

  2. Great work John, thanks a lot. This will come in very handy. Good luck fixing your JavaScript plugin too, looks like it would be just as useful!

    Derek, I don’t think code folding would be possible to implement properly as a plugin. It would really require an update to Coda’s chrome.

  3. @Derek: I’m doing my best to fully commit. I’ve been a die hard TextMate user for quite some time, but editors (specifically for front end Web development) are making a lot of advancement lately and I’m trying to keep an open mind. I’ve got to believe Panic is working on an implementation of code folding, as the current plugin architecture, as Sam mentioned, won’t support anything like that (yet).

    @Sam Rayner: Thanks! I hope you (and other designers) find the plugins helpful, especially as more features are added.

  4. Wow. Great work! I can’t wait to use this with my CSS files, let alone the CSS files I get from the other guys in the office.

    Some use tabs, some use spaces, some write one-line CSS, and others use more space than you can shake a stick at. This will make my workflow so much easier to handle.

    Thanks again!

  5. wow, great plugin! now i have no reason to have Dreamweaver on my computer! Handing over unformated css it pretty embrassing.

    Just one thing. some of my css is layout as such:
    ul.nice-menu-down li.menuparent:hover,
    #header-region ul.nice-menu-down li.menuparent:hover,
    #header-region ul.nice-menu-down li.over
    {
    }
    gets formated into one line even with multiline. I assume multline means only the styles and not the tags. I really would love to keep the tags multiline.

  6. Great work – this will come in handy for me. +1 for multi-line selectors. Code folding will be a welcome addition to Coda!

  7. The plugin looks great, but doesn’t work for me. After Double-Clicking the downloaded and unzipped file, the plugin is available in Coda. But nothings happens after clicking one of the four options… Other plugins work fine for me. Any suggestions?

  8. @matze
    same problem here :/

  9. @Matze, @David: The plugin does check to make sure that the saved file has an extension of “css” — do you happen to be working with an unsaved document?

  10. No, I’m working with an .css-file on a server, connection per ftp (but I think coda is saving that file on the hd to edit it..right?)

  11. Great plugin, this will save me a lot of time, thanks.

    Just one note, when doing any form of reformat or compress the quotes on @import are removed.

    e.g.

    @import ’style-header.css’;

    becomes

    @import style-header.css;

  12. no chance, it dosnt work.

  13. Sorry to hear about the troubles people are having with this plugin! I’m going to hop back in the code, and start with some fresh installs of Coda to see if I can replicate the plugin blatantly not working. Thanks so much for the other reports, I’ll be sure to try and come up with some fixes. The plugin is based on CSSTidy so some of the formatting issues may take a bit to solve.

  14. Hey Jonathan,

    Great work, on the plugins and content of your site.. always great to probe the minds of other developers! Greatly appreciated.

    As for the CSS plugin.. my whole team wants it,.. but we cannot get it to work. In the hopes of helping solve the issue, here are some specs of our working systems:

    Intel iMac 24″
    MAC OS X 10.5.6
    Coda 1.6
    Local files, all with .css extensions

    When selecting ‘Reformat > Single Line’ nothing happens,.. so, I tried selecting css text in the file.. no change.. none of the other menu options produce results, or errors for that matter, either.

    Thanks again!
    J

  15. Terribly sorry about the plugin simply not working for a number of you. I’ve just now published what I hope is a fix for the issue. If anyone can check it out and see if their test case no longer fails that would be superb. Thanks in advance!

  16. Hi there, just downloaded and tried the plugin. Looks cool but there’s still some issues:

    - Above mentioned stripping of quotes around @import rules. (@import url(“reset.css”);)

    - the Curly brackets in @media screen, tv, projection {} rules are being stripped as well.

  17. many thanks, it’ really good

  18. very cool! thanks, man! :)

  19. brilliant! can you create on for formatting HTML next? :)

  20. Does this work with coda 1.6.1 ? It doesn’t show up in the plugin list.

    mac 10.4.11 Tiger

  21. Thank you very much for the feedback and notes on the plugin, I’m anxious to try and implement some of the much needed fixes and will post anything I’ve got as soon as I’ve got it!

    @notha: The plugin should definitely be working in the latest releases of Coda. Have you tried upgrading to 1.6.3?

  22. Using 1.6.3, it doesn’t show up in the plugin list even though it’s in the plugin folder

  23. The 1.0 version appears in the plugin list but the 1.0.1 does not.

  24. I really like the idea of some of the compression features such as a situation where you have combined files and have multiple selectors that could be combined together. However somewhere along the line I was convinced that using camel back in my code had it’s advantages and I agree. Example:

    #thisDiv {
    your compression medium or high turns it into
    #thisdiv {
    which renders the file useless. I just downloaded and checked the newer plugin, same thing. If you could fix this it would be awesome.

  25. Thanks so much for this!

  26. Works perfectly here.

    Only problem with compressing Wordpress css files is that the first lines of commented code are getting removed. Is there a way to leave those few lines there?

    Keep up the good work!

  27. Awesome plugin, Jonathan.

    Question: There’s no license information associated with it. I’d like to make some modifications–would that be okay (I’d be happy to share my changes back to you &/or the community).

    Thanks, mate!
    -Luke

  28. i looked for such a plugin – but now, it is not working. i’ve a G4 PowerBook and a Dua-G5 PowerMac – i tested the Plugin on the office-iMac (intel) and it worked. Why the plugin did not apear in the plugin-menu on PPC – or how can i get it work?

  29. Thanks for this. I nearly did started to write a plugin with these exact features, glad to find I didn’t have to.

  30. Couple of notes, though: It seems to strip CSS properties that it doesn’t know, like -webkit-text-shadow. This is kind of a big deal for me.

  31. Looks like great work, Jonathan – however, can’t get it to work on my (old) PowerBook G4.

    It is installed, apparently, but it doesn’t show up on the plugins menu.

    Is it Intel-only?

  32. can you make it to be able to put a extra blank after “:” for each property e.g. “float: left;” instead of “float:left”. thanks

  33. Sorry, but it’s still useless.

  34. overflow-y: scroll; disappears after compression.

  35. Nice. I was thinking about making the same plugin. But now I can skip that thanks to you. =)

  36. Fantastic! Indeed, with this plugin, I can stop going back and forth to Dreamweaver to beautify my CSS.

  37. I just wanted to say thank you! I use this plugin every day, it’s such a simple thing, but it makes life so easy to be able to switch between multi-line and single line.

  38. I think I’ve read somewhere in a interview w/ people from Panic that code folding is one of the features coming in Coda 2.0. So hopefully we don’t have to wait that long.

  39. Hi,

    the single line transformation seems not working properly with for example:
    html * { … }
    lines.

    maybe you can fix this ? Everything else is working very well, but i need this (html *) within my yaml stylesheets.

  40. I found bugs in “Reformat Multi Line” like breaking css code.
    Would you please correct program?
    thank you.

    === BEFORE ===
    blockquote p {
    margin: 1em 0 1em 0;
    padding: 0 1em;
    }
    blockquote blockquote {
    margin: 0.2em 0;
    padding: 0.2em 0 0.2em 0.2em;
    }
    code, pre code {
    font-family: “Courier New”, “Osaka-等幅”, “MS Pゴシック”, monospace;
    }

    === AFTER ===
    blockquote p {
    margin:1em 0; <- here
    padding:0 1em;
    }
    blockquote blockquote {
    margin:.2em 0;
    padding:.2em 0 .2em .2em; <- here (zero has gone)
    }
    code,pre code {
    font-family:"Courier New", Osaka-等幅, "MS Pゴシック", monospace; <- here (double-quote has disappeared)
    }

  41. Very nice, but it strips all the -webkit* and -moz* properties. Any idea when this is fixed?

  42. After the upgrade to snow leopard I cant get plugin to work, I reinstalled but nothing happens when I try to use it. any reports on this?

    thanx

    coda 1.6.10

  43. Thanks everyone for the bug reports. Unfortunately they seem to be a results of CSSTidy itself, but I will do my best to take a look as soon as possible. If you’re so inclined, please feel free to extract the plugin and check things out on that level as well!

    @Davor: I haven’t had any issues with it myself, but will check on a few more machines to see if I can replicate.

  44. Love this plugin! – I am a recovering Dreamweaver user – and there are still some things I miss from DW – but plugins like this remind me why I moved to Coda.
    Thanks!

  45. Awesome plugin, its is exactly what I was looking for

  46. Thanks for the plugin, the video looks great. And, unfortunately, that ist all: I also see the plugin after the installation, but nothing happens to any css-file I tested :(

    I hope you can solve the issue! :)

  47. Same here. Installed on Leopard with Coda 1.6.10. Plugin appears but does not work. Are there any other CSS formatting solutions for Coda? Thanks!

  48. Wow, thanks man. That is an extremely helpful plug-in

By all means, contribute