Skip to content
A Rails plugin that provides helpers to highlight code with pretty TextMate-style highlighting.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


** NOTE: You must install ultraviolet *before* installing this plugin. Follow the instructions below.

This plugin allows you to add TextMate themed syntax highlighting to your views.

It requires the Ultraviolet gem, which requires TextPow, which requires oniguruma (both the gem and the system library).

Oniguruma is a regular expression library used by TextPow in order to properly parse TextMate syntax/language files.
It's relatively easy to install, here is the URL for the library:

Then you need to do
  $ gem install ultraviolet  
which should install ultraviolet, textpow, and oniguruma.

Lastly, in order for this plugin to properly copy the syntax CSS files from ultraviolet, ultraviolet must already be installed. In other words, you need to install ultraviolet before installing this plugin.

The plugin comes with a generator for the stylesheets for the different themes.
  # to see a list of themes
  $ script/generate syntax_css list
  # to copy all the themes to public/stylesheets/syntax
  $ script/generate syntax_css all
  # to copy a single theme to public/stylesheets/syntax
  $ script/generate syntax_css theme_name

The plugin adds 2 view helper methods: code and syntax_css

code (helper method) usage

  code(some_ruby_code, :theme => "twilight", :lang => "ruby", :line_numbers => true)
lang and line_numbers are optional. lang will default to plain_text and line_numbers will default to true.
It is *HIGHLY* recommended that you fragment_cache or some other type of caching for code fragments (TextPow and/or Ultraviolet have some speed issues).

theme can be an array, and one will be chosen at random.

you can set defaults in an initializer:

  # config/initializers/tm_syntax_config.rb
  TmSyntaxHighlighting.defaults = {:theme => "sunburst", :line_numbers => true, :lang => "ruby"}
again, theme can be an array and will be chosen at random.

syntax_css (helper_method) usage
lastly, the syntax_css method will include the stylesheet tags for the themes

you can call it with a theme name

or if you call it with no options, it will include all the css files for the themes used in this request

  code(some_ruby_code, :theme => "twilight")
  code(some_more_ruby_code, :theme => "sunburst")
  syntax_css # yields stylesheet tags for both twilight and sunburst

You can’t perform that action at this time.