=== CodeColorer ===
Contributors: kpumuk
Tags: code, snippet, syntax, highlight, highlighting, color, geshi
Requires at least: 2.7.0
Tested up to: 2.8.4
Stable tag: 0.9.3
CodeColorer is a syntax highlighting plugin which allows to insert code
snippets into blog posts. Supports color themes, code in RSS, comments.
== Description ==
CodeColorer is the plugin which allows you to insert code snippets into the
post with nice syntax highlighting.
Plugin based on GeSHi library, which supports most languages. CodeColorer has
various nice features:
* syntax highlighting in RSS feeds
* syntax highlighting of single line of code (inline)
* syntax highlighting of code in comments
* line numbers
* automatic links to the documentation inserting
* code block intelligent scroll detection (short code would have short block,
for long one block height would be fixed and scrollbar would appear)
* predefined color themes (Slush & Poppies, Blackboard, Dawn, Mac Classic,
Twitlight, Vibrant Ink)
* syntax colors customization in CSS file
* code protect from mangling by Wordpress (for example, quotes, double-dashes,
and others would look just right as you entered)
= Translations =
Thank you all guys, who submitted translations to your language. CodeColorer
is currently available in following languages:
* English
* Russian – Русский
* Ukrainian – Українська
* Belarusian – Беларуский (thanks to И. Фадков)
* German – German (Deutsch) (thanks to Fabian Schulz and Michael Gutbier)
* Hebrew – עִבְרִית (thanks to Yaron Ofer)
* Italian – Italiano (thanks to CodeSnippet)
* Polish – Polski (thanks to Andrzej Pindor)
* Simplified Chinese – 简化字 (thanks to liuxiangqian)
* Spanish – Español (thanks to Sergio Díaz)
* Spanish (Colombia) (thanks to Diego Alberto Bernal)
* Turkish – Türkçe (thanks to Hasan Akgöz)
Want to help me with translation? It's easy!
1. Install Poedit.
2. Download codecolorer.pot file.
3. Click *File/New catalog from .pot file* and select *codecolorer.pop*
you've just downloaded.
4. Enter project name (something like **CodeColorer 0.9.1**), your name
and email address, select a language you want to translate to and
click *OK*.
5. Enter a filename like **codecolorer-en_EN** and click *Save*.
6. Translate all strings one by one.
7. Send me a `.po` file with a translation to kpumuk@kpumuk.info.
Do not forget a link to add to CodeColorer project home page.
8. Thank you!
To fix existing translation, just open corresponding .po file
from codecolorer/languages folder in Poedit, and add missing or
update existing strings.
= Support =
If you have any suggestions, found a bug, wanted to contribute a
translation to your language, or just wanted to say "thank
you",– feel free to email me kpumuk@kpumuk.info.
Promise, I will answer every email I received.
If you want to contribute your code, see the *Development* section under
the *Other Notes* tab.
== Installation ==
1. Download and unpack plugin files to **wp-content/plugins/codecolorer**
directory.
2. Enable **CodeColorer** plugin on your *Plugins* page in *Site Admin*.
3. Go to the *Options/CodeColorer* page in *Site Admin* and change plugin's
options as you wish.
4. Use `[cc lang="lang"]code[/cc]` or `code` syntax to
insert code snippet into the post (you could skip `lang="lang"`, in this
case code would be in CodeColorer's code block, but without syntax
highlighting). Also you can use `[cci lang="lang"]code[/cci]` to format
inline code (see the "inline" option description).
5. Have fun!
= Syntax =
To insert code snippet into your post (or comment) you should use
`[cc lang="lang"]code[/cc]` or `code` syntax. Starting
from version 0.6.0 you could specify additional CodeColorer options inside
`[cc]` tag:
[cc lang="php" tab_size="2" lines="40"]
// some code
[/cc]
Note: You should always use double quotes or single quotes around the parameter
value. Boolean values could be passed using string *true* or *false*, *on* or
*off*, number *1* or *0*.
= Short codes =
Starting from CodeColorer 0.8.6 you can use short codes to insert code
snippets. The short code in common looks like `[ccM_LANG]`, where **LANG** is
your programming language, and **M** is the one or more of following modes:
* **i** – *inline*
* **e** – *escaped*
* **s** – *strict*
* **n** – *line_numbers*
* **b** – *no_border*
* **w** – *no_wrap*
* **l** – *no_links*
Small letter means **enabled**, capital – **disabled**. Examples:
*PHP code with links enabled and line numbers disabled:*
[cclN_php]
echo "hello"
[/cclN_php]
*Already escaped HTML code:*
[ccie_html]<html>[/ccie_html]
*Ruby code without wrapping having tab size equal to 4:*
[ccW_ruby tab_size="4"]
attr_accessor :title
[/ccW_ruby]
More examples could be found on the CodeColorer Examples
page. You can find modes explained below.
= Possible parameters =
* **lang** (*string*) – source language.
* **tab_size** (*integer*) – how many spaces would represent TAB symbol.
* **lines** (*integer*) – how many lines would be block height without scroll;
could be set to *-1* to remove vertical scrollbar.
* **width** (*integer* or *string*) – block width.
* **height** (*integer* or *string*) – height in pixels; used when lines number
is greater then "lines" value.
* **rss_width** (*integer* or *string*) – block width in RSS feeds.
* **theme** (*string*) – color theme (default, blackboard, dawn, mac-classic,
twitlight, vibrant).
* **first_line** (*integer*) – a number of the first line in the block.
* **escaped** (*boolean*) – when *true* special HTML sequences like `<` or
`[` will be treated as encoded (in this example as `<` and `[`
respectively.)
* **line_numbers** (*boolean*) – when *true* line numbers will be added.
* **no_links** (*boolean*) – when *false* keywords will be represented as links
to manual.
* **inline** (*boolean*) – when *true* forces code block to render inside
``. Used to paste a single line of code into the regular text.
* **strict** (*boolean*) – when *true* strict mode
will be enabled. By default CodeColorer tries to guess whether strict mode is
needed, so this option allows to force it on or off when automatic suggestion
is wrong.
* **nowrap** (*boolean*) – when *false* no horizontal scrollbar will be shown;
instead code will be wrapped in the end of code box.
* **noborder** (*boolean*) – when *true* no border will be shown around the
code block.
* **no_cc** (*boolean*) – when *true* the syntax in code block will not be
highlighted, code will be rendered inside `` tag.
You can use special tag `[cci]` instead of `[cc]` to force inline mode:
[cci lang="php"]some code[/cci]
Most of these parameters could be configured via the CodeColorer options page.
To insert example of CodeColorer short codes you can use something like this:
[cce_bash]
[cc lang="html"]
CodeColorer short code colorized
[/cc]
[/cce_bash]
== Frequently Asked Questions ==
= How do I can customize CodeColorer CSS rules? =
Go to the *Options/CodeColorer* page in Site Admin and change the
"Custom CSS Styles" option.
= I see < instead of < (or other HTML entities like >, &, ") in my code. =
You should use `[cc escaped="true"]` or `[cce]` in the visual editor when
inserting code into the post.
= Does it highlights my code on server or client side? =
CodeColorer performs code highlighting on the server, you could see HTML of
the highlighted code in page source.
= Is it produces valid XHTML source? =
Yes, resulting XHTML is completely valid.
= Could my visitors insert their code snippets in comments? =
Yes, CodeColorer supports code highlighting in comments using the same syntax,
as you use in your blog posts.
= How can I disable syntax highlighting for a particular `` block? =
Use `` option for your code block.
= I have updated the plugin to the newest version and now I keep getting following warnings: =
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/wordpress/wp-content/plugins/codecolorer/lib/geshi.php on line 3599
Remove all files from the **wp-content/plugins/codecolorer** folder and unpack
an archive with plugin again (thanks to
Anatoliy 'TLK' Kolesnick).
== Screenshots ==
1. Ruby syntax highlighting without scrollbars (Vibrant theme).
2. Ruby syntax highlighting with scrollbars (Twitlight theme).
3. Inline code syntax highlighting.
4. Settings page.
== Changelog ==
= 0.9.3 (August 20, 2009) =
* Quicktag added (replaces default `code` button).
* TinyMCE plugin added to insert code snippets (temporarily disabled).
* Added German translation (thanks to Fabian Schulz and Michael Gutbier).
* Added Spanish translation (thanks to Sergio Díaz).
* Added Turkish translation (thanks to Hasan Akgöz).
* Added Polish translation (thanks to Andrzej Pindor).
* Added Spanish (Colombia) translation (thanks to Diego Alberto Bernal)
* Added Hebrew translation (thanks to Yaron Ofer).
* Fixed problem with PHP 4 (thanks to Conan Chou, Алексей Таранец, Martijn van Iersel).
= 0.9.2 (August 1, 2009) =
* Fixed a problem where CodeColorer blocked other plugins on the
*Plugins* page (thanks to Scott Schulz).
= 0.9.1 (August 1, 2009) =
* Fixed code protection in comments.
* Added a notice shown on admin panel when another GeSHi library found.
CodeColorer will work with another GeSHi-based plugins side-by-side.
* Added a .pot file for translators.
* Added notification about incomplete translation.
* Added ability to disable notifications.
= 0.9.0 (July 30, 2009) =
* Great refactoring performed. CodeColorer requires WordPress at least 2.7 now.
* Fixed 0 and 1 parsing for options.
* Fixed disabled CodeColorer blocks rendering.
* Fixed default theme CSS class, and shortcodes processing.
You can find complete changelog on the CodeColorer history
page.
== Supported languages ==
Here is list of supported by CodeColorer languages: abap, actionscript, actionscript3, ada, apache, applescript, apt\_sources, asm, asp, autoit, avisynth, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c\_mac, caddcl, cadlisp, cfdg, cfm, cil, cmake, cobol, cpp-qt, cpp, csharp, css, d, dcs, delphi, diff, div, dos, dot, eiffel, email, erlang, fo, fortran, freebasic, genero, gettext, glsl, gml, gnuplot, groovy, haskell, hq9plus, html4strict, idl, ini, inno, intercal, io, java, java5, javascript, kixtart, klonec, klonecpp, latex, lisp, locobasic, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, make, matlab, mirc, modula3, mpasm, mxml, mysql, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle11, oracle8, pascal, per, perl, php-brief, php, pic16, pixelbender, plsql, povray, powershell, progress, prolog, properties, providex, python, qbasic, rails, rebol, reg, robots, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, tcl, teraterm, text, thinbasic, tsql, typoscript, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xml, xorg\_conf, xpp, yaml, z80.
== Development ==
Sources of this plugin are available both in SVN and Git:
* WordPress SVN repository
* GitHub
Feel free to check them out, make your changes and send me patches.
Promise, I will apply every patch (of course, if they add a value to the
product). Email for patches, suggestions, or bug reports:
kpumuk@kpumuk.info.
== Customization ==
Syntax coloring is highly customizable: you could change color scheme for all
languages or for specific language. You could find CodeColorer CSS in
**wp-content/plugins/codecolorer/codecolorer.css** file. To change colors for
all languages edit lines below *Color scheme* section.
There is simple mapping exists between Textmate color themes and CodeColorer
ones:
/* "Slush & Poppies" color scheme (default) */
.codecolorer-container, .codecolorer { color: #000000; background-color: #F1F1F1; }
/* Comment */
.codecolorer .co0, .codecolorer .co1, .codecolorer .co2, .codecolorer .co3, .codecolorer .co4, .codecolorer .coMULTI { color: #406040; font-style: italic; }
/* Constant */
.codecolorer .nu0, .codecolorer .re3 { color: #0080A0; }
/* String */
.codecolorer .st0, .codecolorer .st_h, .codecolorer .es0, .codecolorer .es1 { color: #C03030; }
/* Entity */
.codecolorer .me1, .codecolorer .me2 { color: #0080FF; }
/* Keyword */
.codecolorer .kw1, .codecolorer .kw2, .codecolorer .sy1 { color: #2060A0; }
/* Storage */
.codecolorer .kw3, .codecolorer .kw4, .codecolorer .kw5, .codecolorer .re2 { color: #008080; }
/* Variable */
.codecolorer .re0, .codecolorer .re1 { color: #A08000; }
/* Global color */
.codecolorer .br0, .codecolorer .sy0 { color: #000000; }
Check the **codecolorer.css** file to get more examples.