にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 |

10年ぶりに部屋に入るとコウモリや猫の巣窟だった

Nucleus CMS

2009-03-12 14:21:56 JST-9 | akebia | Nucleus | コメント | トラックバック | 履歴

NP_GeSHi2でソースコードを表示すると、何故か空行にスペースが1つ入って表示されます。また、空行に元々空白類があった場合、その空白類が1つのスペースに置き換わって表示されます。このような動作を無効にするパッチを作ってみました。このパッチは<pre>タグを使った場合のみに効果があります。

現在のパッチは、空行に元々空白類があった場合、それを削除せずにスルーさせます。削除した方がよい場合には、以前のものを使うことができます。

対応するNP_GeSHi2のバージョンは、0.1。対応するGeSHiのバージョンは、パッチの「! define('GESHI_VERSION',…」の部分で判断して下さい。パージョンが多少違っていても、実際にパッチを当ててみて期待した動作をすれば問題ないかも?

このパッチを適用するには、先ず、元の「NP_GeSHi2.php」と同じディレクトリに、「NP_GeSHi2.php.patch」を置いて、そのディレクトリをカレントディレクトリとして、下記のコマンドを実行して下さい。

patch -b < NP_GeSHi2.php.patch

システムによって改行コードの問題があります。「patchコマンドの簡単な使い方」を参照して下さい。

次に、元の「geshi.php」と同じディレクトリに、「geshi.php.patch」を置いて、そのディレクトリをカレントディレクトリとして、下記のコマンドを実行して下さい。

patch -b < geshi.php.patch

Windowsで実行する場合には、元の「geshi.php」の改行コードをDOSスタイルに変換しておく必要があります。パッチのファイルの最後には改行コードが必要なので、コピペして最後が改行コードにならなかった時には、手動で改行コードを入れて下さい。

オリジナルのNP_GeSHi2は、ソースコードを囲んだ<pre>タグを出力時には削除してた気がするのですが、このパッチを当てたNP_GeSHi2は<pre>タグを削除せずに出力します。(<code>タグを使った場合の動作はオリジナルと変わりません。)オプションの「Header for pre」は、<pre>の直前、「Footer for pre」は、</pre>の直後に挿入されます。

<pre>タグが出力されるということは、長い行のソースコードを表示されると、ページが横に長くなってしまうのですが、その問題は、「[ CSS ] pre でも改行を生かしたまま折り返す | Bowz::Notebook:」というようのを使って解決できると思います。

NP_MarkdownEditorを使っている場合には、admin-mde.cssに、たとえば、下記のようなのを書き加えます。

div#mde-prevmore pre, div#mde-prevbody pre{
	white-space: -moz-pre-wrap; /* Mozilla */
	white-space: -pre-wrap;     /* Opera 4-6 */
	white-space: -o-pre-wrap;   /* Opera 7 */
	white-space: pre-wrap;      /* CSS3 */
	word-wrap: break-word;      /* IE 5.5+ */
}

ちなみに、「geshi.php.patch」を適用したgeshiは、MediaWikiのSyntaxHighlight_GeSHiにも流用できるみたいです。あけび猫が「SyntaxHighlight_GeSHi-MW1.14-r45462」で試したところでは、geshiを入れ替えるだけで効果があり、SyntaxHighlight_GeSHiにはパッチは不要みたいでした。やってみて、なかなか効果が出ない場合には、FileCacheを削除したり、memcachedを再起動させたりするとよいと思います。

MyMiniCity 人気ブログランキングへ

  1. GeSHi 改行が入る (1)
  2. GeSHi ブログ 改行が入る (1)
  3. 行に空白 入らない (1)

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/akebia/