Editing Colorschemes for Sublime Text

Somewhat suprised to see how scarces the available information is, around the interwebs and in the docs, on the subject of creating colorschemes for Sublime Text, for such a popular text-editor. Here are some notes that may come handy when doing this yourself. Down at the bottom of this post one will find links to other resources.

On Mac OS X the colorschemes.tmTheme files can be found in the following directory from the terminal:

  $ cd /Users/USERNAME/Library/Application\ Support/Sublime\ Text\ 2/Packages/ 

Where <USERNAME> is the folder with your own (user)name.

I have this alias in my .bashrc for easy access from the terminal.

alias zsubl='cd  /Users/bram/Library/Application\ Support/Sublime\ Text\ 2/Packages/'

Workflow

First of all, having a visual reference for the colorscheme you are working on at hand is indispensable. Something which works really well in my experience is these kind of colorscheme labs, which basically are just simple webpages containing colorscheme color-tiles (using sixteen Sass variables for colors), and some syntax-highlighted code-samples. In order to make editing the colors less cumbersome, it helps to tweak the values for hue, saturation and lightness in the HSL format. Ones one is happy with the overall balance in the colorvalues, it's not that difficult to convert them to hex-values, (either from DevTools or some other trustworthy colortool,) and then manually copy those hex-values over to Base16-schemes.

Base16? A helpful tool can be this webapp on Heroku, but this will only get you so far. My workflow for editing the tmTheme colorscheme for Sublime continues with editing template files that come with Base16-builder, of which I host several versions for Base2Tone and other variations as well. After running the base16 command in the folder with the base16 executable bash-file, a whole lot of syntax-highlighting themes are generated from the commandline in the output-folder, as many as there are template files. Next copy those files over from the output folder (from the commandline) to the Packages/Color Scheme - folder. (Also not to forget removing the *.cache files in that same folder).

Helpful Hints

What you really want when editing, or iterating over an existing colorscheme, is hints for syntax-names which are used by the syntax-highlighting engine. This can be achieved when the command displayName is activated, and the function keys <Ctrl><Shift><P> are simultaneously pressed, while being with the cursor on a specific tag. This now will show the syntax-name in the left-bottom corner of the Sublime Text app-frame. Which makes me wonder how else one could know that the syntax-name for the “dot” in front of a class-name in CSS belongs to the syntax-group punctuation.definition.entity.css.

I have this line "command": "displayName" in my Preferences.sublime-settings file:

"color_scheme": "Packages/Color Scheme - Duotone/base16-duotone-darkspace.dark.tmTheme",
  "command": "displayName",
  "font_face": "FiraMono-Regular",
  "vintage_start_in_command_mode": true,
  "font_size": 14,
  "ignored_packages": [""],
  "theme": "Soda Dark.sublime-theme"
  }

One thing I found out is that you can be more or less specific with leaving out or adding those suffixes, so keyword selects also keyword.operator, but keyword.operator.sass will override both, which makes sense.

Screenshots

screenshot of javaScript file syntax-highlighted with DuoTone Dark colorscheme Screenshot of javaScript file, syntax-highlighted with DuoTone Dark colorscheme.

Demo

Resources

This article was also published on Codepen