| サマリ | GeSHi を利用してソースコードを色分け表示する |
|---|---|
| リビジョン | 1.2 |
| 対応バージョン | 1.4.6 以降 |
| 作者 | revulo |
| ライセンス | GPLv2 |
様々な言語のソースコードを、構文ハイライトして表示するプラグインです。
PHP のコードを構文ハイライトして表示した例を以下に示します。
(ディレクトリ構成例)
pukiwiki/ ├ cache/ | └ geshi/ ‥‥ 変換した HTML ファイルのキャッシュ用ディレクトリ | ├ plugin/ | ├ geshi/ ‥‥ GeSHi のファイルを展開したディレクトリ | ├ geshi_config/ ‥‥ 設定ファイル用ディレクトリ | | ├ default.php ‥‥ 全言語に共通の設定 | | └ php.php.sample ‥‥ PHP 用の設定ファイルのサンプル | | (php.php にリネームすると色が変わります) | └ geshi.inc.php ‥‥ プラグイン本体 | └ skin/ └ geshi/ ‥‥ スタイルシート用ディレクトリ ├ default.css ‥‥ 各言語のデフォルトの設定 └ php.css.sample ‥‥ PHP 用スタイルシートのサンプル (php.css にリネームすると色が変わります)
geshi.inc.php プラグインのアーカイブファイルをダウンロードし、 PukiWiki をインストールしてあるディレクトリで展開します。
$ tar xvfz geshi-1.2.tar.gz
cache/geshi というディレクトリが作られるので、書き込み許可を与えて下さい。
$ chmod 777 cache/geshi
GeSHi 1.0.7.21 以降を用いる場合は、スタイルシートを別にダウンロードして、上書きコピーして下さい。
$ tar xvfz geshi_css-20081102.tar.gz $ mv geshi-1.0.8.1/* skin/geshi/
GeSHi のページ からアーカイブをダウンロードし、
PukiWiki の plugin ディレクトリで展開します。
UNIX 環境で展開した場合は、誰でもファイルを読めるようにパーミッションを変更して下さい。
$ cd plugin $ unzip geshi-1.0.8.1.zip $ chmod -R 755 geshi $ chmod 644 geshi/*.php geshi/*/*.php
あとは pukiwiki.ini.php の設定を以下のように変更して下さい。
define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0);
なお、以前のバージョンからバージョンアップする場合は、以下の点に注意して下さい。
書式は次のようになっています。
#geshi(オプション){{
……
ソースコード
……
}}
例えば、PHP 用の構文ハイライトをして行番号付きで表示するには、このように書きます。
#geshi(php,number){{
<?php
echo 'test';
?>
}}
オプションは次のようなものが指定できます。 複数のオプションを指定する場合は 「,」(カンマ) で区切って書いて下さい。 デフォルト値は、geshi.inc.php の PLUGIN_GESHI_DEFAULT_LANGUAGE などの値を設定することで変更できます。
geshi.inc.php の先頭部分で以下の値を設定することで、動作をカスタマイズできます。
バージョン 1.2 以降では、外部スタイルシートを利用できるようになりました。 skin/geshi ディレクトリにあるスタイルシートを自動的に読み込みます。
全言語に共通の設定をする場合は、default.css に追記して下さい。 例えば当サイトでは、default.css に次のように書いて背景色などを設定しています。
pre.geshi, pre.geshi li { background: #f7f7f7; /* ソースコードの部分の背景色 */ } pre.number { background: #e7e7ef; /* 行番号の背景色 */ } pre.geshi li { margin: 0; /* ボーダーや位置を微調整 */ margin-left: 3.5em; padding-left: 0.5em; border-left: 1px solid #bbb; }
各言語用の設定をする場合は、default.css を直接書き換えても良いですが、 (言語名).css にその言語の分の設定をコピーして、そちらを編集することをお勧めします。 PHP 用スタイルシートのサンプルを php.css.sample という名前で同梱してあるので、参考にして下さい。 このファイルを php.css にリネームすると表示が変わります。
スタイルシートに登場する .kw1 などのクラス名は、大体このような意味になっています。
ある部分の色を変更するのに、どのクラスのスタイルを設定し直せば良いのかは、 HTML のソースを見て対応を調べて下さい。
バージョン 0.7 以降では、
sonots さんのパッチ を取り込み、
plugin/geshi_config ディレクトリの設定ファイルによって各種設定ができるようになりました。
設定ファイルでは、GeSHi クラスのメソッドやプロパティが利用できます。 例えば、スタイルシートを利用しない設定にした場合でも、 default.php に次のように書くと背景色を指定できます。
<?php // 行番号を表示する場合 if ($geshi->line_numbers) { // 行番号の背景色 $geshi->set_overall_style('background: #e7e7ef;', true); // ソースコードの部分の背景色 $geshi->set_code_style('background: #f7f7f7;', true); } // 行番号を表示しない場合 else { // 全体の背景色 $geshi->set_overall_style('background: #f7f7f7;', true); } ?>
他にもいろいろな設定ができますが、何が設定できるのかは
GeSHi のマニュアル を見て下さい。
参考までに、有用そうな設定の例をいくつか挙げておきます。
また、設定ファイルを用いて、各言語の色分けの設定をすることも可能です。 PHP 用の設定ファイルのサンプルを php.php.sample という名前で同梱してあるので、参考にして下さい。 このファイルを php.php にリネームすると表示が変わります。
各言語用の設定ファイルを自分で作る場合は、 GeSHi のアーカイブに含まれている perl.php や java.php を plugin/geshi_config ディレクトリにコピーし、それを編集して下さい。 同梱されている php.php.sample のように、一部分だけを切り出しても構いません。 なお、KEYWORD の 1 といった項目が何を指すかは言語によって異なるので、 その辺りは各言語のファイルの中を見て判断して下さい。
現在のところ、行番号を表示した場合に以下のような問題があります。
同様の機能を持つプラグインが他にもあるのでまとめておきます。
| プラグイン名 | 使用ライブラリ |
| geshi.inc.php | |
| highlighter.inc.php | |
| prettify.inc.php | |
| shjs.inc.php | |
| 独自に実装 (PHP) | |