Original project: http://code.google.com/p/qlcolorcode/
This is a Quick Look plug-in that renders source code with syntax highlighting, using the Highlight library.
To install Highlight, download the library manually, or use Homebrew
brew install highlight
To install the plug-in, just drag it to
You may need to create that folder if it doesn't already exist.
Alternative, if you use Homebrew Cask,
brew cask install qlcolorcode.
If you want to configure
QLColorCode, there are several
defaults commands that could be useful:
Setting the text encoding (default is
UTF-8). Two settings are required. The first sets Highlight's encoding, the second sets Webkit's:
defaults write org.n8gray.QLColorCode textEncoding UTF-16 defaults write org.n8gray.QLColorCode webkitTextEncoding UTF-16
Setting the font (default is
defaults write org.n8gray.QLColorCode font Monaco
Setting the font size (default is
defaults write org.n8gray.QLColorCode fontSizePoints 9
Setting the color style (default is
edit-xcode, see all available themes):
defaults write org.n8gray.QLColorCode hlTheme ide-xcode
Setting the thumbnail color style (deactivated by default):
defaults write org.n8gray.QLColorCode hlThumbTheme ide-xcode
Setting the maximum size (in bytes, deactivated by default) for previewed files:
defaults write org.n8gray.QLColorCode maxFileSize 1000000
Setting any extra command-line flags for Highlight (see below):
defaults write org.n8gray.QLColorCode extraHLFlags '-l -W'
Here are some useful 'highlight' command-line flags (from the man page):
-F, --reformat=<style> reformat output in given style. <style>=[ansi, gnu, kr, java, linux] -J, --line-length=<num> line length before wrapping (see -W, -V) -j, --line-number-length=<num> line number length incl. left padding -l, --line-numbers print line numbers in output file -t --replace-tabs=<num> replace tabs by num spaces -V, --wrap-simple wrap long lines without indenting function parameters and statements -W, --wrap wrap long lines -z, --zeroes fill leading space of line numbers with zeroes --kw-case=<upper|lower|capitalize> control case of case insensitive keywords
Warning: my fork uses an external
Highlight. It will attempt to find
highlight on your
PATH (so it should work out of the box for Homebrew and MacPorts), but if it can't find it, it'll use
/opt/local/bin/highlight (MacPorts default). This can be changed:
defaults write org.n8gray.QLColorCode pathHL /path/to/your/highlight
It is also possible to have the HTML preview converted to RTF. Using RTF allows the contents of the file to be displayed instead of an icon -- similar to QLStephen.
defaults write org.n8gray.QLColorCode rtfRender true
QLColorCode decompiles some formats:
- Java class. It requires jad installed at
- Compiled AppleScript. It requires
- Binary PLIST. It requires
QLColorCode enables some Highlight plug-ins :
- In all languages:
- Java (sources and classes):
Highlight can handle lots and lots of languages, but this plug-in will only be invoked for file types that the OS knows are type "source-code". Since the OS only knows about a limited number of languages, I've added Universal Type Identifier (UTI) declarations for several "interesting" languages. If I've missed your favorite language, take a look at the Info.plist file inside the plug-in bundle and look for the UTImportedTypeDeclarations section. I haven't added all the languages that Highlight can handle because it's rumored that having two conflicting UTI declarations for the same file extension can cause problems. Note that if you do edit the Info.plist file you need to nudge the system to tell it something has changed. Moving the plug-in to the desktop then back to its installed location should do the trick.
As an aside, by changing colorize.sh you can use this plug-in to render any file type that you can convert to HTML. Have fun, and let me know if you do anything cool!
Adding Language Types
- In Terminal.app (or any shell prompt), enter the command:
mdls -name kMDItemContentType /full/path/to/file.php
Use the path to any PHP file. The response will be:
kMDItemContentType = "public.php-script"
public.php-script is the type string needed in a later step.
- Again at a shell prompt, enter the command:
This will open Info.plist in Xcode.app.
- In Xcode.app's edit window for Info.plist, go to:
Document types > Item 0 > Document Content Type UTIs
(If the editor is showing raw keys, that's: CFBundleDocumentTypes > Item 0 > LSItemContentTypes)
Add an item for
public.php-script, the type string found in the first step.
Save the updated Info.plist file.
Try it in Finder. (It's usually unnecessary to move/return the QLColorCode extension, restart QuickLook, or restart the Finder, but it wouldn't be surprising that some users might need to do so.)