Tag Archives: sublime text

My Sublime Text 2 setup

I’ve posted before about my ever-deepening love for this excellent text-editor-come-IDE, but I haven’t shared the specifics of my Sublime Text 2 configuration, so for the geeks out there, here’s the gazillionth post on this topic.

1. Install Sublime Text 2

Do what it says on the box. Nothing should go wrong. If it does, quit coding on Linux and use one of the other two supported platforms.

(That was a joke. I haven’t tested the Linux version, that’s all.)

2. Install Sublime Package Control

There’s a package for pretty much anything you might want to do with Sublime Text 2, but managing them manually can be a bit of a pain. Sublime Package Control looks after installing them for you, and automagically updates them – silently – in the background. (Unless you’re a control freak and tell it not to.)

The Sublime console method has worked flawlessly for me.

3. Install the Soda theme and syntax highlighting

Sublime Text 2 is pretty, but the Soda theme makes it prettier.

From the Tools menu, select Command Palette and find Package Control: Install Package. (You’ll do this for each upcoming package installation.)

Select Theme – Soda.

Almost done. Now, for pretty syntax highlighting, follow these instructions.

No pretty UI yet? Don’t worry, we’ll make that happen in the next step.

4. Update Sublime Text 2 preferences

Go to Preferences > Settings – User from the main Sublime Text 2 menu, and your user preferences file will open. It’s JSON-formatted and almost empty, which is confusing at first, but makes sense once you dig in. All of the options available to you are explained in Preferences > Settings – Default.

Here’s how I have mine configured (note the “theme” and “color_scheme” entries):

{
    "auto_complete_commit_on_tab": false,
    "auto_match_enabled": false,
    "color_scheme": "Packages/User/Espresso Soda.tmTheme",
    "drag_text": false,
    "file_exclude_patterns":
    [
        "*.pyc",
        "*.pyo",
        "*.exe",
        "*.dll",
        "*.obj",
        "*.o",
        "*.a",
        "*.lib",
        "*.so",
        "*.dylib",
        "*.ncb",
        "*.sdf",
        "*.suo",
        "*.pdb",
        "*.idb",
        ".DS_Store",
        "*.class",
        "*.psd",
        "*.db",
        "*.bak"
    ],
    "find_selected_text": true,
    "folder_exclude_patterns":
    [
        ".svn",
        ".git",
        ".hg",
        "CVS"
    ],
    "font_face": "Source Code Pro",
    "font_size": 10,
    "highlight_line": true,
    "highlight_modified_tabs": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "show_full_path": true,
    "tab_size": 4,
    "theme": "Soda Light.sublime-theme",
    "translate_tabs_to_spaces": true,
    "trim_trailing_white_space_on_save": true
}

5. Install SublimeCodeIntel and sublimelint

Project-wide code completion, function tooltips and jump-to-declaration are provided by the SublimeCodeIntel package. Syntax error highlighting is provided by sublimelint. Install both using the method described above (be careful not to accidentally install similarly named packages). Both should work out of the box (on Mac OS X, anyway – on Windoze you might need to add interpreters to your PATH for sublimelint to work).

Update: I also install the VBScript package. Its code completion isn’t very smart, but then VBScript isn’t very smart either.

6. Configure “build” systems

I’ve already posted about how I use Sublime Text 2’s build system for PHP and JSON formatting.

7. Restart and get to work!

I’ve found that new themes don’t “take” fully until Sublime Text 2 is restarted. Your mileage may vary.

Custom code formatters in Sublime Text 2

I’m starting to fall in love with Sublime Text 2. It’s the text editor I’ve been looking for since I’ve been editing text.

It’s fast (instant startup, no lag ever). It’s truly cross-platform (looks, feels and runs identically on OS X and Windows). It works beautifully out-of-the-box, but there are plugins galore. It has split windows. It has code completion. It’s pretty.

I could go on.

Anyway, having written my own PHP and JSON beautifiers, I was looking for a quick-and-dirty way of integrating them into ST2 (i.e. without wrapping them up in a dedicated plugin – I’m not fluent with Python yet). Turns out ST2’s build system is almost perfect for this.

Go to Tools > Build System > New Build System, and drop something like this in the window that opens:

{
    "cmd": ["php", "/path/to/pretty.php", "$file"],
    "selector": "source.json"
}

Now, assuming there’s a PHP CLI binary on your path, you’re done! Press Cmd+B in a JSON file and it will be “built”, i.e. formatted.

There’s only one shortcoming I’m aware of: Sublime Text 2 doesn’t check for changes in the source file post-build. So you’ll need to use your favourite method to force a file reload.