[pLog-svn] r1743 - in plugins/trunk: . plogeshi plogeshi/class plogeshi/class/action plogeshi/class/plogeshi plogeshi/class/view plogeshi/inc plogeshi/inc/geshi plogeshi/inc/geshi/CVS plogeshi/locale plogeshi/styles plogeshi/templates

oscar at devel.plogworld.net oscar at devel.plogworld.net
Tue Apr 5 18:15:40 GMT 2005


Author: oscar
Date: 2005-04-05 18:15:39 +0000 (Tue, 05 Apr 2005)
New Revision: 1743

Added:
   plugins/trunk/plogeshi/
   plugins/trunk/plogeshi/class/
   plugins/trunk/plogeshi/class/action/
   plugins/trunk/plogeshi/class/action/pluginplogeshiconfigaction.class.php
   plugins/trunk/plogeshi/class/action/pluginplogeshiupdateconfigaction.class.php
   plugins/trunk/plogeshi/class/plogeshi/
   plugins/trunk/plogeshi/class/plogeshi/plogeshi.class.php
   plugins/trunk/plogeshi/class/view/
   plugins/trunk/plogeshi/class/view/pluginplogeshiconfigview.class.php
   plugins/trunk/plogeshi/inc/
   plugins/trunk/plogeshi/inc/geshi.php
   plugins/trunk/plogeshi/inc/geshi/
   plugins/trunk/plogeshi/inc/geshi/CVS/
   plugins/trunk/plogeshi/inc/geshi/CVS/Entries
   plugins/trunk/plogeshi/inc/geshi/CVS/Repository
   plugins/trunk/plogeshi/inc/geshi/CVS/Root
   plugins/trunk/plogeshi/inc/geshi/actionscript.php
   plugins/trunk/plogeshi/inc/geshi/ada.php
   plugins/trunk/plogeshi/inc/geshi/apache.php
   plugins/trunk/plogeshi/inc/geshi/asm.php
   plugins/trunk/plogeshi/inc/geshi/asp.php
   plugins/trunk/plogeshi/inc/geshi/bash.php
   plugins/trunk/plogeshi/inc/geshi/c.php
   plugins/trunk/plogeshi/inc/geshi/c_mac.php
   plugins/trunk/plogeshi/inc/geshi/caddcl.php
   plugins/trunk/plogeshi/inc/geshi/cadlisp.php
   plugins/trunk/plogeshi/inc/geshi/cpp.php
   plugins/trunk/plogeshi/inc/geshi/csharp.php
   plugins/trunk/plogeshi/inc/geshi/css-gen.cfg
   plugins/trunk/plogeshi/inc/geshi/css.php
   plugins/trunk/plogeshi/inc/geshi/delphi.php
   plugins/trunk/plogeshi/inc/geshi/html4strict.php
   plugins/trunk/plogeshi/inc/geshi/java.php
   plugins/trunk/plogeshi/inc/geshi/javascript.php
   plugins/trunk/plogeshi/inc/geshi/lisp.php
   plugins/trunk/plogeshi/inc/geshi/lua.php
   plugins/trunk/plogeshi/inc/geshi/mpasm.php
   plugins/trunk/plogeshi/inc/geshi/nsis.php
   plugins/trunk/plogeshi/inc/geshi/objc.php
   plugins/trunk/plogeshi/inc/geshi/oobas.php
   plugins/trunk/plogeshi/inc/geshi/oracle8.php
   plugins/trunk/plogeshi/inc/geshi/pascal.php
   plugins/trunk/plogeshi/inc/geshi/perl.php
   plugins/trunk/plogeshi/inc/geshi/php-brief.php
   plugins/trunk/plogeshi/inc/geshi/php.php
   plugins/trunk/plogeshi/inc/geshi/python.php
   plugins/trunk/plogeshi/inc/geshi/qbasic.php
   plugins/trunk/plogeshi/inc/geshi/smarty.php
   plugins/trunk/plogeshi/inc/geshi/sql.php
   plugins/trunk/plogeshi/inc/geshi/vb.php
   plugins/trunk/plogeshi/inc/geshi/vbnet.php
   plugins/trunk/plogeshi/inc/geshi/visualfoxpro.php
   plugins/trunk/plogeshi/inc/geshi/xml.php
   plugins/trunk/plogeshi/leeme.txt
   plugins/trunk/plogeshi/locale/
   plugins/trunk/plogeshi/locale/locale_en_UK.php
   plugins/trunk/plogeshi/locale/locale_es_ES.php
   plugins/trunk/plogeshi/pluginplogeshi.class.php
   plugins/trunk/plogeshi/readme.txt
   plugins/trunk/plogeshi/styles/
   plugins/trunk/plogeshi/styles/plogeshi.css
   plugins/trunk/plogeshi/templates/
   plugins/trunk/plogeshi/templates/config.template
Log:
added the 'plogeshi' plugin, that allows to dynamically colour pieces of code (c++, c, php, java) using GeSHi (http://qbnz.com/highlighter/index.php)
Thanks Rodrigo Perez!!1


Added: plugins/trunk/plogeshi/class/action/pluginplogeshiconfigaction.class.php
===================================================================
--- plugins/trunk/plogeshi/class/action/pluginplogeshiconfigaction.class.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/class/action/pluginplogeshiconfigaction.class.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,26 @@
+<?php
+
+	include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+	include_once( PLOG_CLASS_PATH."plugins/plogeshi/class/view/pluginplogeshiconfigview.class.php" );		
+
+	/**
+	 * shows a form with the current configuration
+	 */
+	class PluginPloGeSHiConfigAction extends AdminAction
+	{
+		
+		function PluginPloGeSHiConfigAction( $actionInfo, $request )
+		{
+			$this->AdminAction( $actionInfo, $request );
+		}
+		
+		function perform()
+		{
+            $this->_view = new PluginPlogeshiConfigView( $this->_blogInfo );
+			
+			$this->setCommonData();
+			
+			return true;
+		}
+	}
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/class/action/pluginplogeshiupdateconfigaction.class.php
===================================================================
--- plugins/trunk/plogeshi/class/action/pluginplogeshiupdateconfigaction.class.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/class/action/pluginplogeshiupdateconfigaction.class.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,58 @@
+<?php
+
+	include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+	include_once( PLOG_CLASS_PATH."plugins/plogeshi/class/view/pluginplogeshiconfigview.class.php" );		
+		
+	/**
+	 * updates the plugin configuration
+	 */
+	class PluginPloGeshiUpdateConfigAction extends AdminAction
+	{
+	
+		var $_pluginEnabled;
+		
+		function PluginPloGeshiUpdateConfigAction( $actionInfo, $request )
+		{
+			$this->AdminAction( $actionInfo, $request );
+		}
+		
+		function validate()
+		{
+			$this->_pluginEnabled = $this->_request->getValue( "pluginEnabled" );
+			$this->_pluginEnabled = ($this->_pluginEnabled != "" );			
+			return true;
+		}
+		        
+		function perform()
+		{
+			// and check which smiley set we should be using, or if none, then the default one
+			$blogSettings = $this->_blogInfo->getSettings();
+			$blogSettings->setValue( "plugin_plogeshi_enabled", $this->_pluginEnabled );
+			$this->_blogInfo->setSettings( $blogSettings ); 
+			
+			// save the blogs settings
+			$blogs = new Blogs();
+			if( !$blogs->updateBlog( $this->_blogInfo->getId(), $this->_blogInfo )) {
+				$this->_view = new PluginPloGeshiConfigView( $this->_blogInfo );
+				$this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
+				$this->setCommonData();
+				
+				return false;
+			}
+			
+			// if everything went ok...
+			$this->_blogInfo->setSettings( $blogSettings );
+			$this->_session->setValue( "blogInfo", $this->_blogInfo );
+			$this->saveSession();
+			
+			$this->_view = new PluginPloGeshiConfigView( $this->_blogInfo );
+			$this->_view->setSuccessMessage( $this->_locale->tr("plogeshi_settings_saved_ok"));
+			$this->setCommonData();
+
+			// clear the cache
+			CacheControl::resetBlogCache( $this->_blogInfo->getId());			
+            
+			return true;
+		}
+	}
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/class/plogeshi/plogeshi.class.php
===================================================================
--- plugins/trunk/plogeshi/class/plogeshi/plogeshi.class.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/class/plogeshi/plogeshi.class.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,237 @@
+<?
+
+	include_once( PLOG_CLASS_PATH."class/object/object.class.php" );
+	
+	class PloGeshi extends Object
+	{
+	
+		function colorText ( $text )
+		{
+			return $this->parse( $text );
+		}
+	
+		/**
+		* The main parser function. Accepts raw data and returns
+		* valid xhtml
+		*/  
+		function parse($text){
+			global $parser;
+			global $conf;
+			$table   = array();
+			$hltable = array();
+			
+			//preparse
+			$text = $this->preparse($text,$table,$hltable);
+			
+			//padding with a newline
+			$text  = "\n".$text."\n";
+			
+			#for link matching
+			$urls = '(https?|telnet|gopher|file|wais|ftp|ed2k|irc)';
+			$ltrs = '\w';
+			$gunk = '/\#~:.?+=&%@!\-';
+			$punc = '.:?\-;,';
+			$host = $ltrs.$punc;
+			$any  = $ltrs.$gunk.$punc;
+			
+			/* first pass */
+			
+			//preformated texts
+			$this->firstpass($table,$text,"#<code( (\w+))?>(.*?)</code>#se","\$this->preformat('\\3','code','\\2')");
+			
+			
+			/* second pass for simple formating */
+			$text = $this->simpleformat($text);
+			
+			/* third pass - insert the matches from 1st pass */
+			reset($table);
+			while (list($key, $val) = each($table)) {
+				$text = str_replace($key,$val,$text);
+			}
+	
+			/* remove empty paragraphs */
+			$text = preg_replace('"<p>\n*</p>"','',$text);
+			
+			/* remove padding */
+			$text = trim($text);
+			return $text;
+		}
+		
+		
+		/**
+		* This preparses the text by walking it line by line. This
+		* is the only place where linenumbers are still available (needed
+		* for section edit. Some precautions have to be taken to not change
+		* any noparse block.
+		*/
+		function preparse($text,&$table,&$hltable){
+			$lines = split("\n",$text);
+			
+			//prepare a tokens for paragraphs
+			// comento este texto porque me agrega un parrafo en la noticia <p> {noticia} </p>
+			/*
+			$po = $this->mkToken();
+			$table[$po] = "<p>";
+			$pc = $this->mkToken();
+			$table[$pc] = "</p>";
+			*/
+			
+			for ($l=0; $l<count($lines); $l++){
+				//temporay line holder
+				$line = $lines[$l];
+				
+				//look for end of multiline noparse areas
+				if($noparse){
+					if(preg_match("#^.*?$noparse#",$line)){
+						$noparse = '';
+						$line = preg_replace("#^.*?$noparse#",$line,1);
+					}else{
+						continue;
+					}
+				}
+				
+				if(!$noparse){
+					//skip indented lines
+					if(preg_match('#^(  |\t)#',$line)) continue;
+					//remove norparse areas which open and close on the same line
+					$line = preg_replace("#<code( (\w+))?>(.*?)</code>#","",$line);
+					//check for start of multiline noparse areas
+					if(preg_match('#^.*?<(code)( (\w+))?>#',$line,$matches)){
+						list($noparse) = split(" ",$matches[1]); //remove options
+						$noparse = '</'.$noparse.'>';
+						continue;
+					}elseif(preg_match('#^.*?%%#',$line)){
+						$noparse = '%%';
+						continue;
+					}
+				}
+				
+				//handle headlines
+				if(preg_match('/^(\s)*(==+)(.+?)(==+)(\s*)$/',$lines[$l],$matches)){
+					//get token
+					$tk = $this->tokenize_headline($hltable,$matches[2],$matches[3],$l);
+					//replace line with token
+					$lines[$l] = $tk;
+				}
+				
+				//handle paragraphs
+				if(empty($lines[$l])){
+					$lines[$l] = "$pc\n$po";
+				}
+			}
+			
+			//reassemble full text
+			$text = join("\n",$lines);
+			//open first and close last paragraph
+			$text = "$po\n$text\n$pc";
+			
+			return $text;
+		}
+		
+		function firstpass(&$table,&$text,$regexp,$replace,$lpad='',$rpad=''){
+			//extended regexps have to be disabled for inserting the token
+			//and later reenabled when handling the actual code:
+			$ext='';
+			if(substr($regexp,-1) == 'e'){
+				$ext='e';
+				$regexp = substr($regexp,0,-1);
+			}
+			
+			while(preg_match($regexp,$text,$matches)){
+				$token = $this->mkToken();
+				$match = $matches[0];
+				$text  = preg_replace($regexp,$lpad.$token.$rpad,$text,1);
+				$table[$token] = preg_replace($regexp.$ext,$replace,$match);
+			}
+		}
+		
+		/**
+		* Simple text formating and typography is done here
+		*/
+		function simpleformat($text){
+			$text = preg_replace('/\'\'(.+?)\'\'/s','<code>\1</code>',$text);  //code
+			return $text;
+		}
+	
+		/**
+		* This function adds some information about the given headline
+		* to a lookuptable to be processed later. Returns a unique token
+		* that idetifies the headline later
+		*/
+		function tokenize_headline(&$hltable,$pre,$hline,$lno){
+			switch (strlen($pre)){
+				case 2:
+					$lvl = 5;
+					break;
+				case 3:
+					$lvl = 4;
+					break;
+				case 4:
+					$lvl = 3;
+					break;
+				case 5:
+					$lvl = 2;
+					break;
+				default:
+					$lvl = 1;
+					break;
+			}
+			$token = $this->mkToken();
+			$hltable[] = array( 'name'  => htmlspecialchars(trim($hline)),
+					'level' => $lvl,
+					'line'  => $lno,
+					'token' => $token );
+			return $token;
+		}
+		
+		function mkToken(){
+			return '~'.md5(uniqid(rand(), true)).'~';
+		}
+		
+		function preformat($text,$type,$option=''){
+			//unescape
+			$text = str_replace('\\"','"',$text);
+			
+			if($type == 'php' && !$conf['phpok']) $type='file';
+			if($type == 'html' && !$conf['htmlok']) $type='file';
+			
+			switch ($type){
+				case 'code':
+					if(empty($option)){
+						//$text = htmlspecialchars($text);
+						$text = $this->unhtmlspecialchars($text);
+						$text = '<pre class="code">'.$text.'</pre>';
+					}else{
+						//strip leading blank line
+						$text = $this->unhtmlspecialchars($text);
+						$text = preg_replace('/^\s*?\n/','',$text);
+						//use geshi for highlighting
+						require_once( PLOGESHI_GESHI_PATH . "geshi.php");
+						$geshi = new GeSHi($text, strtolower($option), PLOGESHI_GESHI_PATH . "geshi");
+						$geshi->enable_classes();
+						$geshi->set_header_type(GESHI_HEADER_PRE);
+									$geshi->set_overall_class('code');
+						$geshi->set_link_target($conf['target']['extern']);
+						$text = $geshi->parse_code();
+						
+					}
+					$text = "</p>\n".$text."\n<p>";
+					break;
+			}
+			return $text;
+		}
+	
+		function unhtmlspecialchars( $string )
+		{
+			$string = str_replace ( '&amp;', '&', $string );
+			$string = str_replace ( '&#039;', '\'', $string );
+			$string = str_replace ( '&quot;', '\"', $string );
+			$string = str_replace ( '&lt;', '<', $string );
+			$string = str_replace ( '&gt;', '>', $string );
+			
+			return $string;
+		}	
+	
+	
+	}
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/class/view/pluginplogeshiconfigview.class.php
===================================================================
--- plugins/trunk/plogeshi/class/view/pluginplogeshiconfigview.class.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/class/view/pluginplogeshiconfigview.class.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,26 @@
+<?php
+	
+	include_once( PLOG_CLASS_PATH."class/view/admin/adminplugintemplatedview.class.php" );
+
+	/**
+	 * implements the main view of the feed reader plugin
+	 */
+	class PluginPloGeshiConfigView extends AdminPluginTemplatedView
+	{
+
+		function PluginPloGeshiConfigView( $blogInfo )
+		{
+			$this->AdminPluginTemplatedView( $blogInfo, "plogeshi", "config" );
+		}
+		
+		function render()
+		{
+			$blogSettings = $this->_blogInfo->getSettings();
+			$pluginEnabled = $blogSettings->getValue( "plugin_plogeshi_enabled" );
+			// create a view and export the settings to the template
+			$this->setValue( "pluginEnabled", $pluginEnabled );
+			
+			parent::render();
+		}
+	}
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/CVS/Entries
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/CVS/Entries	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/CVS/Entries	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,38 @@
+/actionscript.php/0/dummy timestamp//
+/ada.php/0/dummy timestamp//
+/apache.php/0/dummy timestamp//
+/asm.php/0/dummy timestamp//
+/asp.php/0/dummy timestamp//
+/bash.php/0/dummy timestamp//
+/caddcl.php/0/dummy timestamp//
+/cadlisp.php/0/dummy timestamp//
+/c_mac.php/0/dummy timestamp//
+/c.php/0/dummy timestamp//
+/cpp.php/0/dummy timestamp//
+/csharp.php/0/dummy timestamp//
+/css-gen.cfg/0/dummy timestamp//
+/css.php/0/dummy timestamp//
+/delphi.php/0/dummy timestamp//
+/html4strict.php/0/dummy timestamp//
+/java.php/0/dummy timestamp//
+/javascript.php/0/dummy timestamp//
+/lisp.php/0/dummy timestamp//
+/lua.php/0/dummy timestamp//
+/mpasm.php/0/dummy timestamp//
+/nsis.php/0/dummy timestamp//
+/objc.php/0/dummy timestamp//
+/oobas.php/0/dummy timestamp//
+/oracle8.php/0/dummy timestamp//
+/pascal.php/0/dummy timestamp//
+/perl.php/0/dummy timestamp//
+/php-brief.php/0/dummy timestamp//
+/php.php/0/dummy timestamp//
+/python.php/0/dummy timestamp//
+/qbasic.php/0/dummy timestamp//
+/smarty.php/0/dummy timestamp//
+/sql.php/0/dummy timestamp//
+/vbnet.php/0/dummy timestamp//
+/vb.php/0/dummy timestamp//
+/visualfoxpro.php/0/dummy timestamp//
+/xml.php/0/dummy timestamp//
+D

Added: plugins/trunk/plogeshi/inc/geshi/CVS/Repository
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/CVS/Repository	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/CVS/Repository	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1 @@
+geshi/1.0.6/geshi

Added: plugins/trunk/plogeshi/inc/geshi/CVS/Root
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/CVS/Root	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/CVS/Root	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1 @@
+:ext:oracleshinoda at cvs.sf.net:/cvsroot/geshi

Added: plugins/trunk/plogeshi/inc/geshi/actionscript.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/actionscript.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/actionscript.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,199 @@
+<?php
+/*************************************************************************************
+ * actionscript.php
+ * ----------------
+ * Author: Steffen Krause (Steffen.krause at muse.de)
+ * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Actionscript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Actionscript',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'#include', 'for', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'dowhile',
+			'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in'
+			),
+		2 => array(
+			'null', 'false', 'true', 'var',
+			'default', 	'function', 'class',
+			'new', '_global'
+			),
+		3 => array(
+			'#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe',
+			'_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot',
+			'_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes',
+			'_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs',
+			'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty',
+			'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild',
+			'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie',
+			'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background',
+			'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent',
+			'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime',
+			'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller',
+			'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt',
+			'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat',
+			'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem',
+			'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField',
+			'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date',
+			'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN',
+			'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled',
+			'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',
+			'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor',
+			'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand',
+			'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal',
+			'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus',
+			'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds',
+			'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress',
+			'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle',
+			'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot',
+			'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',
+			'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
+			'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop',
+			'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',
+			'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',
+			'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',
+			'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements',
+			'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install',
+			'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',
+			'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',
+			'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',
+			'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection',
+			'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',
+			'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',
+			'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',
+			'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',
+			'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame',
+			'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object',
+			'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut',
+			'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',
+			'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',
+			'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',
+			'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',
+			'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',
+			'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position',
+			'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap',
+			'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality',
+			'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField',
+			'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT',
+			'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY',
+			'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString',
+			'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain',
+			'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',
+			'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB',
+			'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle',
+			'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',
+			'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume',
+			'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings',
+			'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',
+			'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop',
+			'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',
+			'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex',
+			'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',
+			'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase',
+			'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined',
+			'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',
+			'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor',
+			'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width',
+			'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #0066CC;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(),
+	'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/ada.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/ada.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/ada.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,136 @@
+<?php
+/*************************************************************************************
+ * ada.php
+ * -------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/29
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Ada language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Removed apostrophe as string delimiter
+ *   -  Added URL support
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Ada',
+	'COMMENT_SINGLE' => array(1 => '--'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',
+			'is', 'loop', 'while', 'then', 'is', 'end', 'select', 'case', 'while',  'until',
+			'goto', 'return'
+			),
+		2 => array(
+			'abs', 'and', 'mod', 'not', 'or', 'rem', 'xor'
+		  	),
+		3 => array(
+			'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', 'at', 'body',
+			'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
+			'function', 'generic', 'in', 'limited', 'new', 'null', 'of', 'others', 'out', 'package', 'pragma',
+			'private', 'procedure', 'protected', 'raise', 'range', 'record', 'renames', 'requeue', 'reverse',
+			'separate', 'subtype', 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #00007f;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #46aa03; font-weight:bold;',
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #adadad; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #7f007f;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'METHODS' => array(
+			1 => 'color: #202020;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
+

Added: plugins/trunk/plogeshi/inc/geshi/apache.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/apache.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/apache.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,174 @@
+<?php
+/*************************************************************************************
+ * apache.php
+ * ----------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/29/07
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Apache language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/07/29)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Apache',
+	'COMMENT_SINGLE' => array(1 => '#'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		/*keywords*/
+	        1 => array(
+			'accessconfig','accessfilename','action','addalt',
+			'addaltbyencoding','addaltbytype','addcharset',
+			'adddefaultcharset','adddescription',
+			'addencoding','addhandler','addicon','addiconbyencoding',
+			'addiconbytype','addlanguage','addmodule','addmoduleinfo',
+			'addtype','agentlog','alias','aliasmatch',
+			'allow','allowconnect','allowoverride','anonymous',
+			'anonymous_authoritative','anonymous_logemail','anonymous_mustgiveemail',
+			'anonymous_nouserid','anonymous_verifyemail','authauthoritative',
+			'authdbauthoritative','authdbgroupfile','authdbmauthoritative',
+			'authdbmgroupfile','authdbmgroupfile','authdbuserfile','authdbmuserfile',
+			'authdigestfile','authgroupfile','authname','authtype',
+			'authuserfile','bindaddress','browsermatch','browsermatchnocase',
+			'bs2000account','cachedefaultexpire','cachedirlength','cachedirlevels',
+			'cacheforcecompletion','cachegcinterval','cachelastmodifiedfactor','cachemaxexpire',
+			'cachenegotiateddocs','cacheroot','cachesize','checkspelling',
+			'clearmodulelist','contentdigest','cookieexpires','cookielog',
+			'cookielog','cookietracking','coredumpdirectory','customlog',
+			'defaulticon','defaultlanguage','defaulttype','define',
+			'deny','directory','directorymatch','directoryindex',
+			'documentroot','errordocument','errorlog','example',
+			'expiresactive','expiresbytype','expiresdefault','extendedstatus',
+			'fancyindexing','files','filesmatch','forcetype',
+			'group','header','headername','hostnamelookups',
+			'identitycheck','ifdefine','ifmodule','imapbase',
+			'imapdefault','imapmenu','include','indexignore',
+			'indexoptions','keepalive','keepalivetimeout','languagepriority',
+			'limit','limitexcept','limitrequestbody','limitrequestfields',
+			'limitrequestfieldsize','limitrequestline','listen','listenbacklog',
+			'loadfile','loadmodule','location','locationmatch',
+			'lockfile','logformat','loglevel','maxclients',
+			'maxkeepaliverequests','maxrequestsperchild','maxspareservers','metadir',
+			'metafiles','metasuffix','mimemagicfile','minspareservers',
+			'mmapfile','namevirtualhost','nocache','options','order',
+			'passenv','pidfile','port','proxyblock','proxydomain',
+			'proxypass','proxypassreverse','proxyreceivebuffersize','proxyremote',
+			'proxyrequests','proxyvia','qsc','readmename',
+			'redirect','redirectmatch','redirectpermanent','redirecttemp',
+			'refererignore','refererlog','removehandler','require',
+			'resourceconfig','rewritebase','rewritecond','rewriteengine',
+			'rewritelock','rewritelog','rewriteloglevel','rewritemap',
+			'rewriteoptions','rewriterule','rlimitcpu','rlimitmem',
+			'rlimitnproc','satisfy','scoreboardfile','script',
+			'scriptalias','scriptaliasmatch','scriptinterpretersource','scriptlog',
+			'scriptlogbuffer','scriptloglength','sendbuffersize',
+			'serveradmin','serveralias','servername','serverpath',
+			'serverroot','serversignature','servertokens','servertype',
+			'setenv','setenvif','setenvifnocase','sethandler',
+			'singlelisten','startservers','threadsperchild','timeout',
+			'transferlog','typesconfig','unsetenv','usecanonicalname',
+			'user','userdir','virtualhost','virtualdocumentroot',
+			'virtualdocumentrootip','virtualscriptalias','virtualscriptaliasip',
+			'xbithack','from','all'
+		  ),
+		/*keyords 2*/
+		2 => array(
+			'on','off','standalone','inetd',
+			'force-response-1.0','downgrade-1.0','nokeepalive',
+			'ndexes','includes','followsymlinks','none',
+			'x-compress','x-gzip'
+		)
+	),
+	'SYMBOLS' => array(
+		'(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #00007f;',
+			2 => 'color: #0000ff;',
+			),
+		'COMMENTS' => array(
+			1 => 'color: #adadad; font-style: italic;',
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #7f007f;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
+

Added: plugins/trunk/plogeshi/inc/geshi/asm.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/asm.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/asm.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,200 @@
+<?php
+/*************************************************************************************
+ * asm.php
+ * -------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/27
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * x86 Assembler language file for GeSHi.
+ * Words are from SciTe configuration file (based on NASM syntax)
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ *   -  Added binary and hexadecimal regexps
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'assembler',
+	'COMMENT_SINGLE' => array(1 => ';'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		/*CPU*/
+		1 => array(
+		       'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp',
+			'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc',
+			'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp',
+			'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
+			'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop',
+			'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov',
+			'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf',
+			'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw',
+			'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat',
+			'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw',
+			'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr',
+			'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf',
+			'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd',
+			'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae',
+			'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe',
+			'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp',
+			'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock',
+			'rep','repe','repne','repnz','repz'
+		  ),
+		/*FPU*/
+		2 => array(
+			  'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
+			 'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
+   			 'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
+			 'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
+			 'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
+			 'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
+			 'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
+			 'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
+			 'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
+			 'fstenvd','fucom','fucomp','fucompp'
+		    ),
+		/*registers*/
+		3 => array(
+			'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl',
+			'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx',
+			 'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7'
+			),
+		/*Directive*/
+		4 => array(
+			  '186','286','286c','286p','287','386','386c','386p','387','486','486p',
+			 '8086','8087','alpha','break','code','const','continue','cref','data','data?',
+			'dosseg','else','elseif','endif','endw','err','err1','err2','errb',
+			 'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef',
+			 'errnz','exit','fardata','fardata?','if','lall','lfcond','list','listall',
+			 'listif','listmacro','listmacroall',' model','no87','nocref','nolist',
+			 'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack',
+			  'startup','tfcond','type','until','untilcxz','while','xall','xcref',
+			  'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dosseg','dq',
+			  'dt','dup','dw','echo','else','elseif','elseif1','elseif2','elseifb','elseifdef','elseifdif',
+			  'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end',
+			  'endif','endm','endp','ends','eq',' equ','even','exitm','extern','externdef','extrn','for',
+			  'forc','ge','goto','group','high','highword','if','if1','if2','ifb','ifdef','ifdif',
+			  'ifdifi','ife',' ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke',
+			  'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset',
+			  'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out',
+			  'page','popcontext','proc','proto','ptr','public','purge','pushcontext','record',
+			  'repeat','rept','seg','segment','short','size','sizeof','sizestr','struc','struct',
+			  'substr','subtitle','subttl','textequ','this','title','type','typedef','union','while','width',
+			  '.model', '.stack', '.code', '.data'
+
+		    ),
+
+		/*Operands*/
+		5 => array(
+			 '@b','@f','addr','basic','byte','c','carry?','dword',
+			 'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword',
+			 'real4',' real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte',
+			 'vararg','word','zero?','flat','near32','far32',
+			 'abs','all','assumes','at','casemap','common','compact',
+			 'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack','flat',
+			 'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory',
+			 'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique',
+			 'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing',
+			 'notpublic','oldmacros','oldstructs','os_dos','para','private','prologue','radix',
+			 'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses'
+			)
+		),
+	'SYMBOLS' => array(
+		'[', ']', '(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #00007f;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #46aa03; font-weight:bold;',
+			4 => 'color: #0000ff;',
+			5 => 'color: #0000ff;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #adadad; font-style: italic;',
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #7f007f;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #ff0000;',
+			1 => 'color: #ff0000;'
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		0 => '[0-9a-fA-F][0-9a-fA-F]*[hH]',
+		1 => '[01][01]*[bB]'
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/asp.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/asp.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/asp.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,153 @@
+<?php
+/*************************************************************************************
+ * asp.php
+ * --------
+ * Author: Amit Gupta (http://blog.igeek.info/)
+ * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/13
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * ASP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/13 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Include all the functions, keywords etc that I have missed
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'ASP',
+	'COMMENT_SINGLE' => array(1 => "'", 2 => '//'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => 0,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'include', 'file', 'Dim', 'Option', 'Explicit', 'Implicit', 'Set', 'Select', 'ReDim', 'Preserve',
+			'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT',
+			'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 'Response', 'Server', 'ADODB', 'Session', 'Application',
+			'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG',
+			'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte',
+			'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global'
+			),
+		2 => array(
+			'Null', 'Nothing', 'And',
+			'False', '&lt;%', '%&gt;',
+			'&lt;script language=', '&lt;/script&gt;',
+			'True', 'var', 'Or', 'BOF', 'EOF',
+			'Function', 'Class', 'New', 'Sub'
+			),
+		3 => array(
+			'CreateObject', 'Write', 'Redirect', 'Cookies', 'BinaryRead', 'ClientCertificate', 'Form', 'QueryString',
+			'ServerVariables', 'TotalBytes', 'AddHeader', 'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl',
+			'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 'ExpiresAbsolute', 'Flush()', 'IsClientConnected',
+			'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 'Abandon', 'Lock', 'UnLock', 'Command', 'Fields',
+			'Properties', 'Property', 'Send', 'Replace', 'InStr', 'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second',
+			'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious',
+			'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll'
+			)
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #990099; font-weight: bold;',
+			2 => 'color: #0000ff; font-weight: bold;',
+			3 => 'color: #330066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #008000;',
+			2 => 'color: #ff6600;',
+			'MULTI' => 'color: #008000;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #006600; font-weight:bold'
+			),
+		'STRINGS' => array(
+			0 => 'color: #cc0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #800000;'
+			),
+		'METHODS' => array(
+			1 => 'color: #9900cc;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #006600; font-weight: bold'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			0 => '',
+			1 => '',
+			2 => '',
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+	'SCRIPT_DELIMITERS' => array(
+		0 => array(
+			'<%' => '%>'
+			),
+		1 => array(
+			'<script language="vbscript" runat="server">' => '</script>'
+			),
+		2 => array(
+			'<script language="javascript" runat="server">' => '</script>'
+			)
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => true,
+		1 => true,
+		2 => true,
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/bash.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/bash.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/bash.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,130 @@
+<?php
+/*************************************************************************************
+ * bash.php
+ * --------
+ * Author: Andreas Gohr (andi at splitbrain.org)
+ * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * BASH language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/20 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Get symbols working
+ * * Highlight builtin vars
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Bash',
+	'COMMENT_SINGLE' => array(1 => '#'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function',
+			'if', 'in', 'select', 'then', 'until', 'while', 'time'
+			),
+		3 => array(
+			'source', 'alias', 'bg', 'bind', 'break', 'builtin', 'cd', 'command',
+			'compgen', 'complete', 'continue', 'declare', 'typeset', 'dirs',
+			'disown', 'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc',
+			'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'kill', 'let',
+			'local', 'logout', 'popd', 'printf', 'pushd', 'pwd', 'read', 'readonly',
+			'return', 'set', 'shift', 'shopt', 'suspend', 'test', 'times', 'trap',
+			'type', 'ulimit', 'umask', 'unalias', 'unset', 'wait'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => true,
+		3 => true,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #0000ff;',
+			1 => 'color: #0000ff;',
+			2 => 'color: #0000ff;'
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		3 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
+		1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
+		2 => "([a-zA-Z_][a-zA-Z0-9_]*)="
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/c.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/c.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/c.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,144 @@
+<?php
+/*************************************************************************************
+ * c.php
+ * -----
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Contributors:
+ *  - Jack Lloyd (lloyd at randombit.net)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.4)
+ *   -  Added a couple of new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *  -  Get a list of inbuilt functions to add (and explore C more
+ *     to complete this rather bare language file
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'C',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'if', 'return', 'while', 'case', 'continue', 'default',
+			'do', 'else', 'for', 'switch', 'goto'
+			),
+		2 => array(
+			'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
+			),
+		3 => array(
+			'printf', 'cout'
+			),
+		4 => array(
+			'auto', 'char', 'const', 'double',  'float', 'int', 'long',
+			'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+			'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t'
+			),
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;',
+			4 => 'color: #993333;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #339933;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #202020;',
+			2 => 'color: #202020;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/c_mac.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/c_mac.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/c_mac.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,176 @@
+<?php
+/*************************************************************************************
+ * c_mac.php
+ * ---------
+ * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * C for Macs language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'C',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'if', 'return', 'while', 'case', 'continue', 'default',
+			'do', 'else', 'for', 'switch', 'goto'
+			),
+		2 => array(
+			'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
+			'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+			'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+			'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+			'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+			'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+			'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+			'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+			'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+			'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+			'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+			'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+			// Mac-specific constants:
+			'kCFAllocatorDefault'
+			),
+		3 => array(
+			'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+			'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+			'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+			'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+			'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+			'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+			'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+			'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+			'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+			'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+			'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+			'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+			'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+			'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+			'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+			'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+			'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+			'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+			'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+			),
+		4 => array(
+			'auto', 'char', 'const', 'double',  'float', 'int', 'long',
+			'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+			'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+			'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+			'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+			// Mac-specific types:
+			'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',
+			'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef',
+			'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 'CFMutableStringRef', 'CFNotificationRef',
+			'CFNotificationRef', 'CFReadStreamRef', 'CFNull', 'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',
+			'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',
+			'CFMutableArrayRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',
+			'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 'CFPlugInRef', 'CFPlugInInstanceRef',
+			'CFRunLoopRef', 'CFRunLoopObserverRef', 'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',
+			'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',
+			'CFXMLTreeRef'
+			),
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0000ff;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #0000dd;',
+			4 => 'color: #0000ff;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #ff0000;',
+			2 => 'color: #339900;',
+			'MULTI' => 'color: #ff0000; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #666666; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #000000;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #666666;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #0000dd;'
+			),
+		'METHODS' => array(
+			1 => 'color: #00eeff;',
+			2 => 'color: #00eeff;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #000000;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/caddcl.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/caddcl.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/caddcl.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,127 @@
+<?php
+/*************************************************************************************
+ * caddcl.php
+ * ----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * CAD DCL (Dialog Control Language) file for GeSHi.
+ *
+ * DCL for AutoCAD 12 or later and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/1!/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'CADDCL',
+	'COMMENT_SINGLE' => array(1 => '//'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',
+			'column','concatenation','button','dialog','edit_box','image','image_button',
+			'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',
+			'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',
+			'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',
+			'text_part','toggle',
+			'action','alignment','allow_accept','aspect_ratio','big_increment',
+			'children_alignment','children_fixed_height',
+			'children_fixed_width','color',
+			'edit_limit','edit_width','fixed_height','fixed_width',
+			'height','initial_focus','is_cancel','is_default',
+			'is_enabled','is_tab_stop','is-bold','key','label','layout','list',
+			'max_value','min_value','mnemonic','multiple_select','password_char',
+			'small_increment','tabs','tab_truncate','value','width',
+			'false','true','left','right','centered','top','bottom',
+			'dialog_line','dialog_foreground','dialog_background',
+			'graphics_background','black','red','yellow','green','cyan',
+			'blue','magenta','whitegraphics_foreground',
+			'horizontal','vertical'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/cadlisp.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/cadlisp.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/cadlisp.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,187 @@
+<?php
+/*************************************************************************************
+ * cadlisp.php
+ * -----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * AutoCAD/IntelliCAD Lisp language file for GeSHi.
+ *
+ * For AutoCAD V.12..2005 and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'CADLISP',
+	'COMMENT_SINGLE' => array(1 => ";"),
+	'COMMENT_MULTI' => array(";|" => "|;"),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',
+			'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',
+			'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',
+			'atoms-family','autoarxload','autoload','Boole','boundp','caddr',
+			'cadr','car','cdr','chr','client_data_tile','close','command','cond',
+			'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',
+			'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',
+			'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',
+			'end_image','end_list','entdel','entget','entlast','entmake',
+			'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',
+			'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',
+			'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',
+			'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',
+			'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',
+			'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',
+			'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',
+			'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',
+			'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',
+			'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',
+			'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',
+			'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',
+			'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',
+			'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',
+			'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',
+			'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',
+			'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',
+			'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',
+			'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',
+			'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',
+			'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',
+			'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',
+			'vlax-curve-getEndParam','vlax-curve-getEndPoint',
+			'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',
+			'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',
+			'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',
+			'vlax-curve-getStartParam','vlax-curve-getStartPoint',
+			'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',
+			'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',
+			'vlax-get-object','vlax-get-or-create-object','vlax-get-property',
+			'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',
+			'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',
+			'vlax-make-safearray','vlax-make-variant','vlax-map-collection',
+			'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',
+			'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',
+			'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',
+			'vlax-safearray-get-dim','vlax-safearray-get-element',
+			'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',
+			'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',
+			'vlax-typeinfo-available-p','vlax-variant-change-type',
+			'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',
+			'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',
+			'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',
+			'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',
+			'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',
+			'vl-filename-base','vl-filename-directory','vl-filename-extension',
+			'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',
+			'vl-get-resource','vlisp-compile','vl-list-exported-functions',
+			'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',
+			'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',
+			'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',
+			'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',
+			'vlr-current-reaction-name','vlr-data','vlr-data-set',
+			'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',
+			'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',
+			'vl-registry-descendents','vl-registry-read','vl-registry-write',
+			'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',
+			'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',
+			'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',
+			'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',
+			'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',
+			'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',
+			'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',
+			'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',
+			'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',
+			'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',
+			'vl-string-mismatch','vl-string-position','vl-string-right-trim',
+			'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',
+			'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',
+			'vl-vbarun','vl-vlx-loaded-p'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/cpp.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/cpp.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/cpp.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,174 @@
+<?php
+/*************************************************************************************
+ * cpp.php
+ * -------
+ * Author: Dennis Bayer (Dennis.Bayer at mnifh-giessen.de)
+ * Contributors:
+ *  - M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ *  - Jack Lloyd (lloyd at randombit.net)
+ * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/27
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * C++ language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.2)
+ *  -  Added several new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.1)
+ *  -  Added StdCLib function and constant names, changed color scheme to
+ *     a cleaner one. (M. Uli Kusterer)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'C++',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
+			'switch', 'while'
+			),
+		2 => array(
+			'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
+			'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+			'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+			'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+			'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+			'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+			'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+			'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+			'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+			'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+			'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+			'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+			'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
+			'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
+			'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid'
+			),
+		3 => array(
+			'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
+			'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+			'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+			'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+			'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+			'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+			'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+			'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+			'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+			'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+			'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+			'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+			'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+			'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+			'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+			'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+			'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+			'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+			'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+			'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+			),
+		4 => array(
+			'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
+			'register', 'short', 'shortint', 'signed', 'static', 'struct',
+			'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+			'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+			'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+			),
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0000ff;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #0000dd;',
+			4 => 'color: #0000ff;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #ff0000;',
+			2 => 'color: #339900;',
+			'MULTI' => 'color: #ff0000; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #666666; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #000000;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #666666;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #0000dd;'
+			),
+		'METHODS' => array(
+			1 => 'color: #00eeff;',
+			2 => 'color: #00eeff;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #000000;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
+
+

Added: plugins/trunk/plogeshi/inc/geshi/csharp.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/csharp.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/csharp.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,229 @@
+<?php
+/*************************************************************************************
+ * csharp.php
+ * ----------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * C# language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *  -  Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+	'LANG_NAME' => 'CSharp',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue',
+			'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
+			'finally', 'fixed', 'for', 'foreach', 'goto', 'if', 'implicit',
+			'in', 'internal', 'lock', 'namespace', 'null', 'operator', 'out',
+			'override', 'params', 'private', 'protected', 'public', 'readonly',
+			'ref', 'return', 'sealed', 'stackalloc', 'static', 'switch', 'this',
+			'throw', 'true', 'try', 'unsafe', 'using', 'virtual', 'void', 'while'
+			),
+		2 => array(
+			'#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
+			'#line', '#region', '#undef', '#warning'
+			),
+		3 => array(
+			'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
+			),
+		4 => array(
+			'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
+			'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
+			'short', 'string', 'struct', 'uint', 'ulong', 'ushort'
+			),
+		5 => array(
+			'Microsoft.Win32',
+			'System',
+			'System.CodeDOM',
+			'System.CodeDOM.Compiler',
+			'System.Collections',
+			'System.Collections.Bases',
+			'System.ComponentModel',
+			'System.ComponentModel.Design',
+			'System.ComponentModel.Design.CodeModel',
+			'System.Configuration',
+			'System.Configuration.Assemblies',
+			'System.Configuration.Core',
+			'System.Configuration.Install',
+			'System.Configuration.Interceptors',
+			'System.Configuration.Schema',
+			'System.Configuration.Web',
+			'System.Core',
+			'System.Data',
+			'System.Data.ADO',
+			'System.Data.Design',
+			'System.Data.Internal',
+			'System.Data.SQL',
+			'System.Data.SQLTypes',
+			'System.Data.XML',
+			'System.Data.XML.DOM',
+			'System.Data.XML.XPath',
+			'System.Data.XML.XSLT',
+			'System.Diagnostics',
+			'System.Diagnostics.SymbolStore',
+			'System.DirectoryServices',
+			'System.Drawing',
+			'System.Drawing.Design',
+			'System.Drawing.Drawing2D',
+			'System.Drawing.Imaging',
+			'System.Drawing.Printing',
+			'System.Drawing.Text',
+			'System.Globalization',
+			'System.IO',
+			'System.IO.IsolatedStorage',
+			'System.Messaging',
+			'System.Net',
+			'System.Net.Sockets',
+			'System.NewXml',
+			'System.NewXml.XPath',
+			'System.NewXml.Xsl',
+			'System.Reflection',
+			'System.Reflection.Emit',
+			'System.Resources',
+			'System.Runtime.InteropServices',
+			'System.Runtime.InteropServices.Expando',
+			'System.Runtime.Remoting',
+			'System.Runtime.Serialization',
+			'System.Runtime.Serialization.Formatters',
+			'System.Runtime.Serialization.Formatters.Binary',
+			'System.Security',
+			'System.Security.Cryptography',
+			'System.Security.Cryptography.X509Certificates',
+			'System.Security.Permissions',
+			'System.Security.Policy',
+			'System.Security.Principal',
+			'System.ServiceProcess',
+			'System.Text',
+			'System.Text.RegularExpressions',
+			'System.Threading',
+			'System.Timers',
+			'System.Web',
+			'System.Web.Caching',
+			'System.Web.Configuration',
+			'System.Web.Security',
+			'System.Web.Services',
+			'System.Web.Services.Description',
+			'System.Web.Services.Discovery',
+			'System.Web.Services.Protocols',
+			'System.Web.UI',
+			'System.Web.UI.Design',
+			'System.Web.UI.Design.WebControls',
+			'System.Web.UI.Design.WebControls.ListControls',
+			'System.Web.UI.HtmlControls',
+			'System.Web.UI.WebControls',
+			'System.WinForms',
+			'System.WinForms.ComponentModel',
+			'System.WinForms.Design',
+			'System.Xml',
+			'System.Xml.Serialization',
+			'System.Xml.Serialization.Code',
+			'System.Xml.Serialization.Schema'
+			),
+		),
+	'SYMBOLS' => array(
+		'+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
+		'(', ')', '{', '}', '[', ']'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0600FF;',
+			2 => 'color: #FF8000; font-weight: bold;',
+			3 => 'color: #008000;',
+			4 => 'color: #FF0000;',
+			5 => 'color: #000000;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #008080; font-style: italic;',
+			2 => 'color: #008080;',
+			'MULTI' => 'color: #008080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #008080; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #000000;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #808080;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #FF0000;'
+			),
+		'METHODS' => array(
+			1 => 'color: #0000FF;',
+			2 => 'color: #0000FF;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #008000;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/css-gen.cfg
===================================================================

Added: plugins/trunk/plogeshi/inc/geshi/css.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/css.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/css.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,177 @@
+<?php
+/*************************************************************************************
+ * css.php
+ * -------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/18
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * CSS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Changed regexps to catch "-" symbols
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Improve or drop regexps for class/id/psuedoclass highlighting
+ * * Re-look at keywords - possibly to make several CSS language
+ *   files, all with different versions of CSS in them
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+
+$language_data = array (
+	'LANG_NAME' => 'CSS',
+	'COMMENT_SINGLE' => array(1 => '@'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"', "'"),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'aqua', 'azimuth', 'background-attachment', 'background-color',
+			'background-image', 'background-position', 'background-repeat',
+			'background', 'black', 'blue', 'border-bottom-color', 'border-bottom-style',
+			'border-bottom-width', 'border-left-color', 'border-left-style',
+			'border-left-width', 'border-right', 'border-right-color',
+			'border-right-style', 'border-right-width', 'border-top-color',
+			'border-top-style', 'border-top-width','border-bottom', 'border-collapse',
+			'border-left', 'border-width', 'border-color', 'border-spacing',
+			'border-style', 'border-top', 'border',  'bottom', 'caption-side',
+			'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+			'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+			'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+			'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+			'font-weight', 'font', 'height', 'left', 'letter-spacing', 'line-height',
+			'list-style', 'list-style-image', 'list-style-position', 'list-style-type',
+			'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin',
+			'marker-offset', 'marks', 'max-height', 'max-width', 'min-height',
+			'min-width', 'orphans', 'outline', 'outline-color', 'outline-style',
+			'outline-width', 'overflow', 'padding-bottom', 'padding-left',
+			'padding-right', 'padding-top', 'padding', 'page', 'page-break-after',
+			'page-break-before', 'page-break-inside', 'pause-after', 'pause-before',
+			'pause', 'pitch', 'pitch-range',  'play-during', 'position', 'quotes',
+			'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation',
+			'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration',
+			'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+			'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows',
+			'width', 'word-spacing', 'z-index'
+			),
+		2 => array(
+			'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid',
+			'baseline', 'behind', 'below', 'bidi-override', 'blink', 'block', 'bold', 'bolder', 'both',
+			'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', 'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive',
+			'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+			'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded',
+			'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia',
+			'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher',
+			'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline',
+			'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana',
+			'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low',
+			'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace',
+			'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize',
+			'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline',
+			'pointer', 'portrait', 'purple', 'px',
+			'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards',
+			's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square',
+			'static', 'status-bar', 'super', 'sw-resize',
+			'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent',
+			'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url',
+			'visible',
+			'w-resize', 'wait', 'white', 'wider',
+			'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small',
+			'yellow', 'yes'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', ':', ';'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => true,
+		2 => true
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #000000; font-weight: bold;',
+			2 => 'color: #993333;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #a1a100;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			0 => 'color: #cc00cc;',
+			1 => 'color: #6666ff;',
+			2 => 'color: #3333ff;',
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		0 => '\#[a-zA-Z0-9\-]+\s+\{',
+		1 => '\.[a-zA-Z0-9\-]+\s',
+		2 => ':[a-zA-Z0-9\-]+\s'
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/delphi.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/delphi.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/delphi.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,159 @@
+<?php
+/*************************************************************************************
+ * delphi.php
+ * ----------
+ * Author: Járja Norbert (jnorbi at vipmail.hu)
+ * Copyright: (c) 2004 Járja Norbert, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/26
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Delphi (Object Pascal) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Delphi',
+	'COMMENT_SINGLE' => array(1 => '//'),
+	'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
+	'CASE_KEYWORDS' => 0,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'And', 'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 'Do', 'DownTo', 'Else',
+			'End', 'Except', 'File', 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',
+			'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Packed', 'Procedure', 'Program', 'Property', 'Raise', 'Record',
+			'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor'
+			),
+		2 => array(
+			'nil', 'false', 'true', 'var', 'type', 'const'
+			),
+		3 => array(
+			'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',
+			'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',
+			'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',
+			'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',
+			'CurrToStrF', 'Date', 'DateTimeToFileDate', 'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',
+			'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',
+			'DupeString', 'EncodeDate', 'EncodeDateTime', 'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 'ExtractFileDir',
+			'ExtractFileDrive', 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',
+			'FileDateToDateTime', 'FileExists', 'FilePos', 'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',
+			'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',
+			'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',
+			'InputQuery', 'Int', 'IntToHex', 'IntToStr', 'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',
+			'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',
+			'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',
+			'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',
+			'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',
+			'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',
+			'StrToFloat', 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 'Tan',
+			'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',
+
+			'Append', 'AppendStr', 'Assign', 'AssignFile', 'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',
+			'ChDir', 'Close', 'CloseFile', 'Continue', 'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',
+			'DecodeTime', 'Delete', 'Dispose', 'EndThread', 'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',
+			'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',
+			'ProcessPath', 'Randomize', 'Read', 'ReadLn', 'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',
+			'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',
+			'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 'WriteLn'
+			),
+		4 => array(
+			'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',
+			'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',
+			'PExtended', 'PInt64', 'Pointer', 'PShortString', 'PString', 'PVariant', 'PWideChar', 'PWideString',
+			'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',
+			'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 'TList', 'TObject', 'TOpenDialog', 'TPoint',
+			'TPrintDialog', 'TRect', 'TReplaceFlags', 'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',
+			'TThreadFunc', 'Variant', 'WideChar', 'WideString', 'Word'
+			),
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #000000; font-weight: bold;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;',
+			4 => 'color: #993333;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;'
+			),
+		'REGEXPS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => '',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/html4strict.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/html4strict.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/html4strict.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,254 @@
+<?php
+/*************************************************************************************
+ * html4strict.php
+ * ---------------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * HTML 4.01 strict language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added INS and DEL
+ *   -  Removed the background colour from tags' styles
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check that only HTML4 strict attributes are highlighted
+ * * Eliminate empty tags that aren't allowed in HTML4 strict
+ * * Split to several files - html4trans, xhtml1 etc
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'HTML',
+	'COMMENT_SINGLE' => array(),
+	'COMMENT_MULTI' => array('<!--' => '-->'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			),
+		2 => array(
+			'&lt;a&gt;', '&lt;abbr&gt;', '&lt;acronym&gt;', '&lt;address&gt;', '&lt;applet&gt;',
+			'&lt;a', '&lt;abbr', '&lt;acronym', '&lt;address', '&lt;applet',
+			'&lt;/a&gt;', '&lt;/abbr&gt;', '&lt;/acronym&gt;', '&lt;/address&gt;', '&lt;/applet&gt;',
+			'&lt;/a', '&lt;/abbr', '&lt;/acronym', '&lt;/address', '&lt;/applet',
+
+			'&lt;base&gt;', '&lt;basefont&gt;', '&lt;bdo&gt;', '&lt;big&gt;', '&lt;blockquote&gt;', '&lt;body&gt;', '&lt;br&gt;', '&lt;button&gt;', '&lt;b&gt;',
+			'&lt;base', '&lt;basefont', '&lt;bdo', '&lt;big', '&lt;blockquote', '&lt;body', '&lt;br', '&lt;button', '&lt;b',
+			'&lt;/base&gt;', '&lt;/basefont&gt;', '&lt;/bdo&gt;', '&lt;/big&gt;', '&lt;/blockquote&gt;', '&lt;/body&gt;', '&lt;/br&gt;', '&lt;/button&gt;', '&lt;/b&gt;',
+			'&lt;/base', '&lt;/basefont', '&lt;/bdo', '&lt;/big', '&lt;/blockquote', '&lt;/body', '&lt;/br', '&lt;/button', '&lt;/b',
+
+			'&lt;caption&gt;', '&lt;center&gt;', '&lt;cite&gt;', '&lt;code&gt;', '&lt;colgroup&gt;', '&lt;col&gt;',
+			'&lt;caption', '&lt;center', '&lt;cite', '&lt;code', '&lt;colgroup', '&lt;col',
+			'&lt;/caption&gt;', '&lt;/center&gt;', '&lt;/cite&gt;', '&lt;/code&gt;', '&lt;/colgroup&gt;', '&lt;/col&gt;',
+			'&lt;/caption', '&lt;/center', '&lt;/cite', '&lt;/code', '&lt;/colgroup', '&lt;/col',
+
+			'&lt;dd&gt;', '&lt;del&gt;', '&lt;dfn&gt;', '&lt;dir&gt;', '&lt;div&gt;', '&lt;dl&gt;', '&lt;dt&gt;',
+			'&lt;dd', '&lt;del', '&lt;dfn', '&lt;dir', '&lt;div', '&lt;dl', '&lt;dt',
+			'&lt;/dd&gt;', '&lt;/del&gt;', '&lt;/dfn&gt;', '&lt;/dir&gt;', '&lt;/div&gt;', '&lt;/dl&gt;', '&lt;/dt&gt;',
+			'&lt;/dd', '&lt;/del', '&lt;/dfn', '&lt;/dir', '&lt;/div', '&lt;/dl', '&lt;/dt',
+
+			'&lt;em&gt;',
+			'&lt;em',
+			'&lt;/em&gt;',
+			'&lt;/em',
+
+			'&lt;fieldset&gt;', '&lt;font&gt;', '&lt;form&gt;', '&lt;frame&gt;', '&lt;frameset&gt;',
+			'&lt;fieldset', '&lt;font', '&lt;form', '&lt;frame', '&lt;frameset',
+			'&lt;/fieldset&gt;', '&lt;/font&gt;', '&lt;/form&gt;', '&lt;/frame&gt;', '&lt;/frameset&gt;',
+			'&lt;/fieldset', '&lt;/font', '&lt;/form', '&lt;/frame', '&lt;/frameset',
+
+			'&lt;h1&gt;', '&lt;h2&gt;', '&lt;h3&gt;', '&lt;h4&gt;', '&lt;h5&gt;', '&lt;h6&gt;', '&lt;head&gt;', '&lt;hr&gt;', '&lt;html&gt;',
+			'&lt;h1', '&lt;h2', '&lt;h3', '&lt;h4', '&lt;h5', '&lt;h6', '&lt;head', '&lt;hr', '&lt;html',
+			'&lt;/h1&gt;', '&lt;/h2&gt;', '&lt;/h3&gt;', '&lt;/h4&gt;', '&lt;/h5&gt;', '&lt;/h6&gt;', '&lt;/head&gt;', '&lt;/hr&gt;', '&lt;/html&gt;',
+			'&lt;/h1', '&lt;/h2', '&lt;/h3', '&lt;/h4', '&lt;/h5', '&lt;/h6', '&lt;/head', '&lt;/hr', '&lt;/html',
+
+			'&lt;iframe&gt;', '&lt;ilayer&gt;', '&lt;img&gt;', '&lt;input&gt;', '&lt;ins&gt;', '&lt;isindex&gt;', '&lt;i&gt;',
+			'&lt;iframe', '&lt;ilayer', '&lt;img', '&lt;input', '&lt;ins', '&lt;isindex', '&lt;i',
+			'&lt;/iframe&gt;', '&lt;/ilayer&gt;', '&lt;/img&gt;', '&lt;/input&gt;', '&lt;/ins&gt;', '&lt;/isindex&gt;', '&lt;/i&gt;',
+			'&lt;/iframe', '&lt;/ilayer', '&lt;/img', '&lt;/input', '&lt;/ins', '&lt;/isindex', '&lt;/i',
+
+			'&lt;kbd&gt;',
+			'&lt;kbd',
+			'&t;/kbd&gt;',
+			'&lt;/kbd',
+
+			'&lt;label&gt;', '&lt;legend&gt;', '&lt;link&gt;', '&lt;li&gt;',
+			'&lt;label', '&lt;legend', '&lt;link', '&lt;li',
+			'&lt;/label&gt;', '&lt;/legend&gt;', '&lt;/link&gt;', '&lt;/li&gt;',
+			'&lt;/label', '&lt;/legend', '&lt;/link', '&lt;/li',
+
+			'&lt;map&gt;', '&lt;meta&gt;',
+			'&lt;map', '&lt;meta',
+			'&lt;/map&gt;', '&lt;/meta&gt;',
+			'&lt;/map', '&lt;/meta',
+
+			'&lt;noframes&gt;', '&lt;noscript&gt;',
+			'&lt;noframes', '&lt;noscript',
+			'&lt;/noframes&gt;', '&lt;/noscript&gt;',
+			'&lt;/noframes', '&lt;/noscript',
+
+			'&lt;object&gt;', '&lt;ol&gt;', '&lt;optgroup&gt;', '&lt;option&gt;',
+			'&lt;object', '&lt;ol', '&lt;optgroup', '&lt;option',
+			'&lt;/object&gt;', '&lt;/ol&gt;', '&lt;/optgroup&gt;', '&lt;/option&gt;',
+			'&lt;/object', '&lt;/ol', '&lt;/optgroup', '&lt;/option',
+
+			'&lt;param&gt;', '&lt;pre&gt;', '&lt;p&gt;',
+			'&lt;param', '&lt;pre', '&lt;p',
+			'&lt;/param&gt;', '&lt;/pre&gt;', '&lt;/p&gt;',
+			'&lt;/param', '&lt;/pre', '&lt;/p',
+
+			'&lt;q&gt;',
+			'&lt;q',
+			'&lt;/q&gt;',
+			'&lt;/q',
+
+			'&lt;samp&gt;', '&lt;script&gt;', '&lt;select&gt;', '&lt;small&gt;', '&lt;span&gt;', '&lt;strike&gt;', '&lt;strong&gt;', '&lt;style&gt;', '&lt;sub&gt;', '&lt;sup&gt;', '&lt;s&gt;',
+			'&lt;samp', '&lt;script', '&lt;select', '&lt;small', '&lt;span', '&lt;strike', '&lt;strong', '&lt;style', '&lt;sub', '&lt;sup', '&lt;s',
+			'&lt;/samp&gt;', '&lt;/script&gt;', '&lt;/select&gt;', '&lt;/small&gt;', '&lt;/span&gt;', '&lt;/strike&gt;', '&lt;/strong&gt;', '&lt;/style&gt;', '&lt;/sub&gt;', '&lt;/sup&gt;', '&lt;/s&gt;',
+			'&lt;/samp', '&lt;/script', '&lt;/select', '&lt;/small', '&lt;/span', '&lt;/strike', '&lt;/strong', '&lt;/style', '&lt;/sub', '&lt;/sup', '&lt;/s',
+
+			'&lt;table&gt;', '&lt;tbody&gt;', '&lt;td&gt;', '&lt;textarea&gt;', '&lt;text&gt;', '&lt;tfoot&gt;', '&lt;thead&gt;', '&lt;th&gt;', '&lt;title&gt;', '&lt;tr&gt;', '&lt;tt&gt;',
+			'&lt;table', '&lt;tbody', '&lt;td', '&lt;textarea', '&lt;text', '&lt;tfoot', '&lt;tfoot', '&lt;thead', '&lt;th', '&lt;title', '&lt;tr', '&lt;tt',
+			'&lt;/table&gt;', '&lt;/tbody&gt;', '&lt;/td&gt;', '&lt;/textarea&gt;', '&lt;/text&gt;', '&lt;/tfoot&gt;', '&lt;/thead', '&lt;/tfoot', '&lt;/th&gt;', '&lt;/title&gt;', '&lt;/tr&gt;', '&lt;/tt&gt;',
+			'&lt;/table', '&lt;/tbody', '&lt;/td', '&lt;/textarea', '&lt;/text', '&lt;/tfoot', '&lt;/tfoot', '&lt;/thead', '&lt;/th', '&lt;/title', '&lt;/tr', '&lt;/tt',
+
+			'&lt;ul&gt;', '&lt;u&gt;',
+			'&lt;ul', '&lt;u',
+			'&lt;/ul&gt;', '&lt;/ul&gt;',
+			'&lt;/ul', '&lt;/u',
+
+			'&lt;var&gt;',
+			'&lt;var',
+			'&lt;/var&gt;',
+			'&lt;/var',
+
+			'&gt;', '&lt;'
+			),
+		3 => array(
+			'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
+			'background', 'bgcolor', 'border',
+			'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
+			'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
+			'enctype',
+			'face', 'for', 'frame', 'frameborder',
+			'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
+			'id', 'ismap',
+			'label', 'lang', 'language', 'link', 'longdesc',
+			'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
+			'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+			'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
+			'profile', 'prompt',
+			'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+			'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+			'tabindex', 'target', 'text', 'title', 'type',
+			'usemap',
+			'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
+			'width'
+			)
+		),
+	'SYMBOLS' => array(
+		'/', '='
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			0 => 'color: #00bbdd;',
+			1 => 'color: #ddbb00;',
+			2 => 'color: #009900;'
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => 'http://december.com/html/4/element/{FNAME}.html',
+		3 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+	'SCRIPT_DELIMITERS' => array(
+		0 => array(
+			'<!DOCTYPE' => '>'
+			),
+		1 => array(
+			'&' => ';'
+			),
+		2 => array(
+			'<' => '>'
+			)
+	),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => false,
+		1 => false,
+		2 => true
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/java.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/java.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/java.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,1402 @@
+<?php
+/*************************************************************************************
+ * java.php
+ * --------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Java language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/08/05 (1.0.2)
+ *   -  Added URL support
+ *   -  Added keyword "this", as bugs in GeSHi class ironed out
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ *   -  Added extra missed keywords
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Compact the class names like the first few have been
+ *   and eliminate repeats
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Java',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => 'import'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'for', 'foreach', 'if', 'elseif', 'else', 'while', 'do',
+			'switch', 'case'
+			),
+		2 => array(
+			'null', 'return', 'false', 'final', 'true', 'public',
+			'private', 'protected', 'extends', 'break', 'class',
+			'new', 'try', 'catch', 'throws', 'finally', 'implements',
+			'interface', 'throw', 'native', 'synchronized', 'this'
+			),
+		3 => array(
+			'AbstractAction', 'AbstractBorder', 'AbstractButton', 'AbstractCellEditor',
+			'AbstractCollection', 'AbstractColorChooserPanel', 'AbstractDocument',
+			'AbstractDocument.AttributeContext', 'AbstractDocument.Content',
+			'AbstractDocument.ElementEdit', 'AbstractLayoutCache',
+			'AbstractLayoutCache.NodeDimensions', 'AbstractList', 'AbstractListModel',
+			'AbstractMap', 'AbstractMethodError', 'AbstractSequentialList',
+			'AbstractSet', 'AbstractTableModel', 'AbstractUndoableEdit', 'AbstractWriter',
+			'AccessControlContext', 'AccessControlException', 'AccessController',
+			'AccessException', 'Accessible', 'AccessibleAction', 'AccessibleBundle',
+			'AccessibleComponent', 'AccessibleContext', 'AccessibleHyperlink',
+			'AccessibleHypertext', 'AccessibleIcon', 'AccessibleObject',
+			'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle',
+			'AccessibleRole', 'AccessibleSelection', 'AccessibleState',
+			'AccessibleStateSet', 'AccessibleTable', 'AccessibleTableModelChange',
+			'AccessibleText', 'AccessibleValue', 'Acl', 'AclEntry', 'AclNotFoundException',
+			'Action', 'ActionEvent', 'ActionListener', 'ActionMap', 'ActionMapUIResource',
+			'Activatable', 'ActivateFailedException', 'ActivationDesc',
+			'ActivationException', 'ActivationGroup', 'ActivationGroupDesc',
+			'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationID',
+			'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem',
+			'Activator', 'ActiveEvent', 'Adjustable', 'AdjustmentEvent', 'AdjustmentListener',
+			'Adler32', 'AffineTransform', 'AffineTransformOp', 'AlgorithmParameterGenerator',
+			'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParameterSpec',
+			'AlgorithmParametersSpi', 'AllPermission', 'AlphaComposite', 'AlreadyBound',
+			'AlreadyBoundException', 'AlreadyBoundHelper', 'AlreadyBoundHolder',
+			'AncestorEvent', 'AncestorListener', 'Annotation', 'Any', 'AnyHolder',
+			'AnySeqHelper', 'AnySeqHolder', 'Applet', 'AppletContext', 'AppletInitializer',
+			'AppletStub', 'ApplicationException', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float',
+			'Area', 'AreaAveragingScaleFilter', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
+			'ArithmeticException', 'Array', 'ArrayIndexOutOfBoundsException',
+			'ArrayList', 'Arrays', 'ArrayStoreException', 'AsyncBoxView',
+			'Attribute', 'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute',
+			'AttributedString', 'AttributeInUseException', 'AttributeList',
+			'AttributeModificationException', 'Attributes', 'Attributes.Name',
+			'AttributeSet', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute',
+			'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute',
+			'AudioClip', 'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFileReader',
+			'AudioFileWriter', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream',
+			'AudioPermission', 'AudioSystem', 'AuthenticationException',
+			'AuthenticationNotSupportedException', 'Authenticator', 'Autoscroll',
+			'AWTError', 'AWTEvent', 'AWTEventListener', 'AWTEventMulticaster',
+			'AWTException', 'AWTPermission', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
+			'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_TYPECODE',
+			'BadKind', 'BadLocationException', 'BandCombineOp', 'BandedSampleModel','BasicArrowButton',
+			'BasicAttribute', 'BasicAttributes', 'BasicBorders', 'BasicBorders.ButtonBorder',
+			'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder',
+			'BasicBorders.RadioButtonBorder', 'BasicBorders.SplitPaneBorder',
+			'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI',
+			'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor',
+			'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource',
+			'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI',
+			'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI',
+			'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane',
+			'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel',
+			'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI',
+			'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'BasicPasswordFieldUI',
+			'BasicPermission', 'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
+			'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI',
+			'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI',
+			'BasicSliderUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicStroke',
+			'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI',
+			'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret',
+			'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
+			'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI',
+			'BatchUpdateException', 'BeanContext', 'BeanContextChild',
+			'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy',
+			'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener',
+			'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider',
+			'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent',
+			'BeanContextServiceRevokedListener', 'BeanContextServices',
+			'BeanContextServicesListener', 'BeanContextServicesSupport',
+			'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport',
+			'BeanContextSupport.BCSIterator', 'BeanDescriptor', 'BeanInfo', 'Beans',
+			'BevelBorder', 'BigDecimal', 'BigInteger', 'BinaryRefAddr', 'BindException',
+			'Binding', 'BindingHelper', 'BindingHolder', 'BindingIterator',
+			'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations',
+			'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper',
+			'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView', 'Book', 'Boolean',
+			'BooleanControl', 'BooleanControl.Type', 'BooleanHolder', 'BooleanSeqHelper',
+			'BooleanSeqHolder', 'Border', 'BorderFactory', 'BorderLayout', 'BorderUIResource',
+			'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource',
+			'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource',
+			'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource',
+			'BorderUIResource.TitledBorderUIResource', 'BoundedRangeModel', 'Bounds',
+			'Box', 'Box.Filler', 'BoxedValueHelper', 'BoxLayout', 'BoxView',
+			'BreakIterator', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp',
+			'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter',
+			'Button', 'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte', 'ByteArrayInputStream',
+			'ByteArrayOutputStream', 'ByteHolder', 'ByteLookupTable', 'Calendar',
+			'CallableStatement', 'CannotProceed', 'CannotProceedException', 'CannotProceedHelper',
+			'CannotProceedHolder', 'CannotRedoException', 'CannotUndoException',
+			'Canvas', 'CardLayout', 'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
+			'CellEditorListener', 'CellRendererPane', 'Certificate', 'Certificate.CertificateRep',
+			'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException',
+			'CertificateFactory', 'CertificateFactorySpi', 'CertificateNotYetValidException',
+			'CertificateParsingException', 'ChangedCharSetException', 'ChangeEvent',
+			'ChangeListener', 'Character', 'Character.Subset', 'Character.UnicodeBlock',
+			'CharacterIterator', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException',
+			'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'Checkbox', 'CheckboxGroup',
+			'CheckboxMenuItem', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum',
+			'Choice', 'ChoiceFormat', 'Class', 'ClassCastException', 'ClassCircularityError',
+			'ClassDesc', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException',
+			'Clip', 'Clipboard', 'ClipboardOwner', 'Clob', 'Cloneable', 'CloneNotSupportedException',
+			'CMMException', 'CodeSource', 'CollationElementIterator', 'CollationKey',
+			'Collator', 'Collection', 'Collections', 'Color', 'ColorChooserComponentFactory',
+			'ColorChooserUI', 'ColorConvertOp', 'ColorModel', 'ColorSelectionModel',
+			'ColorSpace', 'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel', 'ComboBoxUI',
+			'ComboPopup', 'COMM_FAILURE', 'CommunicationException', 'Comparable',
+			'Comparator', 'Compiler', 'CompletionStatus', 'CompletionStatusHelper',
+			'Component', 'ComponentAdapter', 'ComponentColorModel', 'ComponentEvent',
+			'ComponentInputMap', 'ComponentInputMapUIResource', 'ComponentListener',
+			'ComponentOrientation', 'ComponentSampleModel', 'ComponentUI', 'ComponentView',
+			'Composite', 'CompositeContext', 'CompositeName','CompositeView', 'CompoundBorder',
+			'CompoundControl', 'CompoundControl.Type', 'CompoundEdit', 'CompoundName',
+			'ConcurrentModificationException', 'ConfigurationException', 'ConnectException',
+			'ConnectException', 'ConnectIOException', 'Connection', 'Constructor',
+			'Container', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener',
+			'ContentHandler', 'ContentHandlerFactory', 'ContentModel', 'Context', 'ContextList',
+			'ContextNotEmptyException', 'ContextualRenderedImageFactory', 'Control',
+			'Control.Type', 'ControlFactory', 'ControllerEventListener', 'ConvolveOp',
+			'CRC32', 'CRL', 'CRLException', 'CropImageFilter', 'CSS', 'CSS.Attribute',
+			'CTX_RESTRICT_SCOPE', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float',
+			'Current', 'CurrentHelper', 'CurrentHolder', 'CurrentOperations', 'Cursor',
+			'Customizer', 'CustomMarshal', 'CustomValue', 'DATA_CONVERSION', 'DatabaseMetaData',
+			'DataBuffer', 'DataBufferByte', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort',
+			'DataFlavor', 'DataFormatException', 'DatagramPacket', 'DatagramSocket',
+			'DatagramSocketImpl', 'DatagramSocketImplFactory', 'DataInput', 'DataInputStream',
+			'DataLine', 'DataLine.Info', 'DataOutput', 'DataOutputStream', 'DataOutputStream',
+			'DataTruncation', 'Date', 'DateFormat', 'DateFormatSymbols', 'DebugGraphics',
+			'DecimalFormat', 'DecimalFormatSymbols', 'DefaultBoundedRangeModel',
+			'DefaultButtonModel', 'DefaultCaret', 'DefaultCellEditor', 'DefaultColorSelectionModel',
+			'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultEditorKit',
+			'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction',
+			'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction',
+			'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction',
+			'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction,',
+			'DefaultFocusManager', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter',
+			'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel',
+			'DefaultListSelectionModel', 'DefaultMenuLayout', 'DefaultMetalTheme',
+			'DefaultMutableTreeNode', 'DefaultSingleSelectionModel', 'DefaultStyledDocument',
+			'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec',
+			'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel',
+			'DefaultTableModel', 'DefaultTextUI', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer',
+			'DefaultTreeModel', 'DefaultTreeSelectionModel', 'DefinitionKind', 'DefinitionKindHelper',
+			'Deflater', 'DeflaterOutputStream', 'Delegate', 'DesignMode', 'DesktopIconUI',
+			'DesktopManager', 'DesktopPaneUI', 'DGC', 'Dialog', 'Dictionary', 'DigestException',
+			'DigestInputStream', 'DigestOutputStream', 'Dimension', 'Dimension2D',
+			'DimensionUIResource', 'DirContext', 'DirectColorModel', 'DirectoryManager',
+			'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DnDConstants',
+			'Document', 'DocumentEvent', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType',
+			'DocumentListener', 'DocumentParser', 'DomainCombiner', 'DomainManager',
+			'DomainManagerOperations', 'Double', 'DoubleHolder', 'DoubleSeqHelper',
+			'DoubleSeqHolder', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer',
+			'DragSource', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent',
+			'DragSourceEvent', 'DragSourceListener', 'Driver', 'DriverManager',
+			'DriverPropertyInfo', 'DropTarget', 'DropTarget.DropTargetAutoScroller',
+			'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent',
+			'DropTargetEvent', 'DropTargetListener', 'DSAKey', 'DSAKeyPairGenerator',
+			'DSAParameterSpec', 'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
+			'DSAPublicKey', 'DSAPublicKeySpec', 'DTD', 'DTDConstants', 'DynamicImplementation',
+			'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct',
+			'DynUnion', 'DynValue', 'EditorKit', 'Element', 'ElementIterator', 'Ellipse2D',
+			'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder', 'EmptyStackException',
+			'EncodedKeySpec', 'Entity', 'EnumControl', 'EnumControl.Type','Enumeration',
+			'Environment', 'EOFException', 'Error', 'EtchedBorder', 'Event', 'EventContext',
+			'EventDirContext', 'EventListener', 'EventListenerList', 'EventObject', 'EventQueue',
+			'EventSetDescriptor', 'Exception', 'ExceptionInInitializerError', 'ExceptionList',
+			'ExpandVetoException', 'ExportException', 'ExtendedRequest', 'ExtendedResponse',
+			'Externalizable', 'FeatureDescriptor', 'Field', 'FieldNameHelper',
+			'FieldPosition', 'FieldView', 'File', 'FileChooserUI', 'FileDescriptor',
+			'FileDialog', 'FileFilter', 'FileFilter', 'FileInputStream', 'FilenameFilter',
+			'FileNameMap', 'FileNotFoundException', 'FileOutputStream', 'FilePermission',
+			'FileReader', 'FileSystemView', 'FileView', 'FileWriter', 'FilteredImageSource',
+			'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter',
+			'FixedHeightLayoutCache', 'FixedHolder', 'FlatteningPathIterator', 'FlavorMap',
+			'Float', 'FloatControl', 'FloatControl.Type', 'FloatHolder', 'FloatSeqHelper',
+			'FloatSeqHolder', 'FlowLayout', 'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
+			'FocusEvent', 'FocusListener', 'FocusManager', 'Font', 'FontFormatException',
+			'FontMetrics', 'FontRenderContext', 'FontUIResource', 'Format', 'FormatConversionProvider',
+			'FormView', 'Frame', 'FREE_MEM', 'GapContent', 'GeneralPath', 'GeneralSecurityException',
+			'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector',
+			'GlyphView',
+			'GlyphView.GlyphPainter',
+			'GradientPaint',
+			'GraphicAttribute',
+			'Graphics',
+			'Graphics2D',
+			'GraphicsConfigTemplate',
+			'GraphicsConfiguration',
+			'GraphicsDevice',
+			'GraphicsEnvironment',
+			'GrayFilter',
+			'GregorianCalendar',
+			'GridBagConstraints',
+			'GridBagLayout',
+			'GridLayout',
+			'Group',
+			'Guard',
+			'GuardedObject',
+			'GZIPInputStream',
+			'GZIPOutputStream',
+			'HasControls',
+			'HashMap',
+			'HashSet',
+			'Hashtable',
+			'HierarchyBoundsAdapter',
+			'HierarchyBoundsListener',
+			'HierarchyEvent',
+			'HierarchyListener',
+			'Highlighter',
+			'Highlighter.Highlight',
+			'Highlighter.HighlightPainter',
+			'HTML',
+			'HTML.Attribute',
+			'HTML.Tag',
+			'HTML.UnknownTag',
+			'HTMLDocument',
+			'HTMLDocument.Iterator',
+			'HTMLEditorKit',
+			'HTMLEditorKit.HTMLFactory',
+			'HTMLEditorKit.HTMLTextAction',
+			'HTMLEditorKit.InsertHTMLTextAction',
+			'HTMLEditorKit.LinkController',
+			'HTMLEditorKit.Parser',
+			'HTMLEditorKit.ParserCallback',
+			'HTMLFrameHyperlinkEvent',
+			'HTMLWriter',
+			'HttpURLConnection',
+			'HyperlinkEvent',
+			'HyperlinkEvent.EventType',
+			'HyperlinkListener',
+			'ICC_ColorSpace',
+			'ICC_Profile',
+			'ICC_ProfileGray',
+			'ICC_ProfileRGB',
+			'Icon',
+			'IconUIResource',
+			'IconView',
+			'IdentifierHelper',
+			'Identity',
+			'IdentityScope',
+			'IDLEntity',
+			'IDLType',
+			'IDLTypeHelper', 'IDLTypeOperations',
+			'IllegalAccessError',
+			'IllegalAccessException',
+			'IllegalArgumentException',
+			'IllegalComponentStateException',
+			'IllegalMonitorStateException',
+			'IllegalPathStateException',
+			'IllegalStateException',
+			'IllegalThreadStateException',
+			'Image',
+			'ImageConsumer',
+			'ImageFilter',
+			'ImageGraphicAttribute',
+			'ImageIcon',
+			'ImageObserver',
+			'ImageProducer',
+			'ImagingOpException',
+			'IMP_LIMIT',
+			'IncompatibleClassChangeError',
+			'InconsistentTypeCode',
+			'IndexColorModel',
+			'IndexedPropertyDescriptor',
+			'IndexOutOfBoundsException',
+			'IndirectionException',
+			'InetAddress',
+			'Inflater',
+			'InflaterInputStream',
+			'InheritableThreadLocal',
+			'InitialContext',
+			'InitialContextFactory',
+			'InitialContextFactoryBuilder',
+			'InitialDirContext',
+			'INITIALIZE',
+			'Initializer',
+			'InitialLdapContext',
+			'InlineView',
+			'InputContext',
+			'InputEvent',
+			'InputMap',
+			'InputMapUIResource',
+			'InputMethod',
+			'InputMethodContext',
+			'InputMethodDescriptor',
+			'InputMethodEvent',
+			'InputMethodHighlight',
+			'InputMethodListener',
+			'InputMethodRequests',
+			'InputStream',
+			'InputStream',
+			'InputStream',
+			'InputStreamReader',
+			'InputSubset',
+			'InputVerifier',
+			'Insets',
+			'InsetsUIResource',
+			'InstantiationError',
+			'InstantiationException',
+			'Instrument',
+			'InsufficientResourcesException',
+			'Integer',
+			'INTERNAL',
+			'InternalError', 'InternalFrameAdapter',
+			'InternalFrameEvent',
+			'InternalFrameListener',
+			'InternalFrameUI',
+			'InterruptedException',
+			'InterruptedIOException',
+			'InterruptedNamingException',
+			'INTF_REPOS',
+			'IntHolder',
+			'IntrospectionException',
+			'Introspector',
+			'INV_FLAG',
+			'INV_IDENT',
+			'INV_OBJREF',
+			'INV_POLICY',
+			'Invalid',
+			'INVALID_TRANSACTION',
+			'InvalidAlgorithmParameterException',
+			'InvalidAttributeIdentifierException',
+			'InvalidAttributesException',
+			'InvalidAttributeValueException',
+			'InvalidClassException',
+			'InvalidDnDOperationException',
+			'InvalidKeyException',
+			'InvalidKeySpecException',
+			'InvalidMidiDataException',
+			'InvalidName',
+			'InvalidName',
+			'InvalidNameException',
+			'InvalidNameHelper',
+			'InvalidNameHolder',
+			'InvalidObjectException',
+			'InvalidParameterException',
+			'InvalidParameterSpecException',
+			'InvalidSearchControlsException',
+			'InvalidSearchFilterException',
+			'InvalidSeq',
+			'InvalidTransactionException',
+			'InvalidValue',
+			'InvocationEvent',
+			'InvocationHandler',
+			'InvocationTargetException',
+			'InvokeHandler',
+			'IOException',
+			'IRObject',
+			'IRObjectOperations', 'IstringHelper', 'ItemEvent', 'ItemListener',
+			'ItemSelectable', 'Iterator', 'JApplet', 'JarEntry', 'JarException',
+			'JarFile', 'JarInputStream', 'JarOutputStream', 'JarURLConnection',
+			'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser',
+			'JComboBox',
+			'JComboBox.KeySelectionManager',
+			'JComponent',
+			'JDesktopPane',
+			'JDialog',
+			'JEditorPane',
+			'JFileChooser',
+			'JFrame',
+			'JInternalFrame',
+			'JInternalFrame.JDesktopIcon',
+			'JLabel',
+			'JLayeredPane',
+			'JList',
+			'JMenu',
+			'JMenuBar',
+			'JMenuItem',
+			'JobAttributes',
+			'JobAttributes.DefaultSelectionType',
+			'JobAttributes.DestinationType',
+			'JobAttributes.DialogType',
+			'JobAttributes.MultipleDocumentHandlingType',
+			'JobAttributes.SidesType',
+			'JOptionPane',
+			'JPanel',
+			'JPasswordField',
+			'JPopupMenu',
+			'JPopupMenu.Separator',
+			'JProgressBar',
+			'JRadioButton',
+			'JRadioButtonMenuItem',
+			'JRootPane',
+			'JScrollBar',
+			'JScrollPane',
+			'JSeparator',
+			'JSlider',
+			'JSplitPane',
+			'JTabbedPane',
+			'JTable',
+			'JTableHeader',
+			'JTextArea',
+			'JTextComponent',
+			'JTextComponent.KeyBinding', 'JTextField',
+			'JTextPane',
+			'JToggleButton',
+			'JToggleButton.ToggleButtonModel',
+			'JToolBar',
+			'JToolBar.Separator',
+			'JToolTip',
+			'JTree',
+			'JTree.DynamicUtilTreeNode',
+			'JTree.EmptySelectionModel',
+			'JViewport',
+			'JWindow',
+			'Kernel',
+			'Key',
+			'KeyAdapter',
+			'KeyEvent',
+			'KeyException',
+			'KeyFactory',
+			'KeyFactorySpi',
+			'KeyListener',
+			'KeyManagementException',
+			'Keymap',
+			'KeyPair',
+			'KeyPairGenerator',
+			'KeyPairGeneratorSpi',
+			'KeySpec',
+			'KeyStore',
+			'KeyStoreException',
+			'KeyStoreSpi',
+			'KeyStroke',
+			'Label',
+			'LabelUI',
+			'LabelView',
+			'LastOwnerException',
+			'LayeredHighlighter',
+			'LayeredHighlighter.LayerPainter',
+			'LayoutManager',
+			'LayoutManager2',
+			'LayoutQueue',
+			'LdapContext',
+			'LdapReferralException',
+			'Lease',
+			'LimitExceededException',
+			'Line',
+			'Line.Info',
+			'Line2D',
+			'Line2D.Double',
+			'Line2D.Float',
+			'LineBorder',
+			'LineBreakMeasurer',
+			'LineEvent',
+			'LineEvent.Type',
+			'LineListener',
+			'LineMetrics',
+			'LineNumberInputStream',
+			'LineNumberReader',
+			'LineUnavailableException',
+			'LinkageError',
+			'LinkedList',
+			'LinkException',
+			'LinkLoopException',
+			'LinkRef',
+			'List',
+			'List',
+			'ListCellRenderer',
+			'ListDataEvent',
+			'ListDataListener',
+			'ListIterator',
+			'ListModel',
+			'ListResourceBundle',
+			'ListSelectionEvent',
+			'ListSelectionListener',
+			'ListSelectionModel',
+			'ListUI',
+			'ListView',
+			'LoaderHandler',
+			'Locale',
+			'LocateRegistry',
+			'LogStream',
+			'Long',
+			'LongHolder',
+			'LongLongSeqHelper',
+			'LongLongSeqHolder',
+			'LongSeqHelper',
+			'LongSeqHolder',
+			'LookAndFeel',
+			'LookupOp',
+			'LookupTable',
+			'MalformedLinkException',
+			'MalformedURLException',
+			'Manifest', 'Map',
+			'Map.Entry',
+			'MARSHAL',
+			'MarshalException',
+			'MarshalledObject',
+			'Math',
+			'MatteBorder',
+			'MediaTracker',
+			'Member',
+			'MemoryImageSource',
+			'Menu',
+			'MenuBar',
+			'MenuBarUI',
+			'MenuComponent',
+			'MenuContainer',
+			'MenuDragMouseEvent',
+			'MenuDragMouseListener',
+			'MenuElement',
+			'MenuEvent',
+			'MenuItem',
+			'MenuItemUI',
+			'MenuKeyEvent',
+			'MenuKeyListener',
+			'MenuListener',
+			'MenuSelectionManager',
+			'MenuShortcut',
+			'MessageDigest',
+			'MessageDigestSpi',
+			'MessageFormat',
+			'MetaEventListener',
+			'MetalBorders',
+			'MetalBorders.ButtonBorder',
+			'MetalBorders.Flush3DBorder',
+			'MetalBorders.InternalFrameBorder',
+			'MetalBorders.MenuBarBorder',
+			'MetalBorders.MenuItemBorder',
+			'MetalBorders.OptionDialogBorder',
+			'MetalBorders.PaletteBorder',
+			'MetalBorders.PopupMenuBorder',
+			'MetalBorders.RolloverButtonBorder',
+			'MetalBorders.ScrollPaneBorder',
+			'MetalBorders.TableHeaderBorder',
+			'MetalBorders.TextFieldBorder',
+			'MetalBorders.ToggleButtonBorder',
+			'MetalBorders.ToolBarBorder',
+			'MetalButtonUI',
+			'MetalCheckBoxIcon',
+			'MetalCheckBoxUI',
+			'MetalComboBoxButton',
+			'MetalComboBoxEditor',
+			'MetalComboBoxEditor.UIResource',
+			'MetalComboBoxIcon',
+			'MetalComboBoxUI',
+			'MetalDesktopIconUI',
+			'MetalFileChooserUI',
+			'MetalIconFactory',
+			'MetalIconFactory.FileIcon16',
+			'MetalIconFactory.FolderIcon16',
+			'MetalIconFactory.PaletteCloseIcon',
+			'MetalIconFactory.TreeControlIcon',
+			'MetalIconFactory.TreeFolderIcon',
+			'MetalIconFactory.TreeLeafIcon',
+			'MetalInternalFrameTitlePane',
+			'MetalInternalFrameUI',
+			'MetalLabelUI',
+			'MetalLookAndFeel',
+			'MetalPopupMenuSeparatorUI',
+			'MetalProgressBarUI',
+			'MetalRadioButtonUI',
+			'MetalScrollBarUI',
+			'MetalScrollButton',
+			'MetalScrollPaneUI',
+			'MetalSeparatorUI',
+			'MetalSliderUI',
+			'MetalSplitPaneUI',
+			'MetalTabbedPaneUI',
+			'MetalTextFieldUI',
+			'MetalTheme',
+			'MetalToggleButtonUI',
+			'MetalToolBarUI',
+			'MetalToolTipUI',
+			'MetalTreeUI',
+			'MetaMessage',
+			'Method',
+			'MethodDescriptor',
+			'MidiChannel',
+			'MidiDevice',
+			'MidiDevice.Info',
+			'MidiDeviceProvider',
+			'MidiEvent',
+			'MidiFileFormat',
+			'MidiFileReader',
+			'MidiFileWriter',
+			'MidiMessage',
+			'MidiSystem',
+			'MidiUnavailableException',
+			'MimeTypeParseException',
+			'MinimalHTMLWriter',
+			'MissingResourceException',
+			'Mixer',
+			'Mixer.Info',
+			'MixerProvider',
+			'ModificationItem',
+			'Modifier',
+			'MouseAdapter',
+			'MouseDragGestureRecognizer',
+			'MouseEvent',
+			'MouseInputAdapter',
+			'MouseInputListener',
+			'MouseListener',
+			'MouseMotionAdapter',
+			'MouseMotionListener',
+			'MultiButtonUI',
+			'MulticastSocket',
+			'MultiColorChooserUI',
+			'MultiComboBoxUI',
+			'MultiDesktopIconUI',
+			'MultiDesktopPaneUI',
+			'MultiFileChooserUI',
+			'MultiInternalFrameUI',
+			'MultiLabelUI', 'MultiListUI',
+			'MultiLookAndFeel',
+			'MultiMenuBarUI',
+			'MultiMenuItemUI',
+			'MultiOptionPaneUI',
+			'MultiPanelUI',
+			'MultiPixelPackedSampleModel',
+			'MultipleMaster',
+			'MultiPopupMenuUI',
+			'MultiProgressBarUI',
+			'MultiScrollBarUI',
+			'MultiScrollPaneUI',
+			'MultiSeparatorUI',
+			'MultiSliderUI',
+			'MultiSplitPaneUI',
+			'MultiTabbedPaneUI',
+			'MultiTableHeaderUI',
+			'MultiTableUI',
+			'MultiTextUI',
+			'MultiToolBarUI',
+			'MultiToolTipUI',
+			'MultiTreeUI',
+			'MultiViewportUI',
+			'MutableAttributeSet',
+			'MutableComboBoxModel',
+			'MutableTreeNode',
+			'Name',
+			'NameAlreadyBoundException',
+			'NameClassPair',
+			'NameComponent',
+			'NameComponentHelper',
+			'NameComponentHolder',
+			'NamedValue',
+			'NameHelper',
+			'NameHolder',
+			'NameNotFoundException',
+			'NameParser',
+			'NamespaceChangeListener',
+			'NameValuePair',
+			'NameValuePairHelper',
+			'Naming',
+			'NamingContext',
+			'NamingContextHelper',
+			'NamingContextHolder',
+			'NamingContextOperations',
+			'NamingEnumeration',
+			'NamingEvent',
+			'NamingException',
+			'NamingExceptionEvent',
+			'NamingListener',
+			'NamingManager',
+			'NamingSecurityException',
+			'NegativeArraySizeException',
+			'NetPermission',
+			'NO_IMPLEMENT',
+			'NO_MEMORY',
+			'NO_PERMISSION',
+			'NO_RESOURCES',
+			'NO_RESPONSE',
+			'NoClassDefFoundError',
+			'NoInitialContextException', 'NoninvertibleTransformException',
+			'NoPermissionException',
+			'NoRouteToHostException',
+			'NoSuchAlgorithmException',
+			'NoSuchAttributeException',
+			'NoSuchElementException',
+			'NoSuchFieldError',
+			'NoSuchFieldException',
+			'NoSuchMethodError',
+			'NoSuchMethodException',
+			'NoSuchObjectException',
+			'NoSuchProviderException',
+			'NotActiveException',
+			'NotBoundException',
+			'NotContextException',
+			'NotEmpty',
+			'NotEmptyHelper',
+			'NotEmptyHolder',
+			'NotFound',
+			'NotFoundHelper',
+			'NotFoundHolder',
+			'NotFoundReason',
+			'NotFoundReasonHelper',
+			'NotFoundReasonHolder',
+			'NotOwnerException',
+			'NotSerializableException',
+			'NullPointerException',
+			'Number',
+			'NumberFormat', 'NumberFormatException', 'NVList',
+			'OBJ_ADAPTER', 'Object', 'OBJECT_NOT_EXIST', 'ObjectChangeListener',
+			'ObjectFactory',
+			'ObjectFactoryBuilder',
+			'ObjectHelper',
+			'ObjectHolder',
+			'ObjectImpl', 'ObjectImpl',
+			'ObjectInput',
+			'ObjectInputStream',
+			'ObjectInputStream.GetField',
+			'ObjectInputValidation',
+			'ObjectOutput',
+			'ObjectOutputStream',
+			'ObjectOutputStream.PutField',
+			'ObjectStreamClass',
+			'ObjectStreamConstants',
+			'ObjectStreamException',
+			'ObjectStreamField',
+			'ObjectView',
+			'ObjID',
+			'Observable',
+			'Observer',
+			'OctetSeqHelper',
+			'OctetSeqHolder',
+			'OMGVMCID',
+			'OpenType',
+			'Operation',
+			'OperationNotSupportedException',
+			'Option',
+			'OptionalDataException',
+			'OptionPaneUI',
+			'ORB',
+			'OutOfMemoryError',
+			'OutputStream',
+			'OutputStreamWriter',
+			'OverlayLayout',
+			'Owner',
+			'Package',
+			'PackedColorModel',
+			'Pageable',
+			'PageAttributes',
+			'PageAttributes.ColorType',
+			'PageAttributes.MediaType',
+			'PageAttributes.OrientationRequestedType',
+			'PageAttributes.OriginType',
+			'PageAttributes.PrintQualityType',
+			'PageFormat',
+			'Paint',
+			'PaintContext',
+			'PaintEvent',
+			'Panel',
+			'PanelUI',
+			'Paper',
+			'ParagraphView',
+			'ParagraphView',
+			'ParameterBlock',
+			'ParameterDescriptor',
+			'ParseException',
+			'ParsePosition',
+			'Parser',
+			'ParserDelegator',
+			'PartialResultException',
+			'PasswordAuthentication',
+			'PasswordView',
+			'Patch',
+			'PathIterator',
+			'Permission',
+			'Permission',
+			'PermissionCollection',
+			'Permissions',
+			'PERSIST_STORE',
+			'PhantomReference',
+			'PipedInputStream',
+			'PipedOutputStream',
+			'PipedReader',
+			'PipedWriter',
+			'PixelGrabber',
+			'PixelInterleavedSampleModel',
+			'PKCS8EncodedKeySpec',
+			'PlainDocument',
+			'PlainView',
+			'Point',
+			'Point2D',
+			'Point2D.Double',
+			'Point2D.Float',
+			'Policy',
+			'Policy',
+			'PolicyError',
+			'PolicyHelper',
+			'PolicyHolder',
+			'PolicyListHelper',
+			'PolicyListHolder',
+			'PolicyOperations', 'PolicyTypeHelper',
+			'Polygon',
+			'PopupMenu',
+			'PopupMenuEvent',
+			'PopupMenuListener',
+			'PopupMenuUI',
+			'Port',
+			'Port.Info',
+			'PortableRemoteObject',
+			'PortableRemoteObjectDelegate',
+			'Position',
+			'Position.Bias',
+			'PreparedStatement',
+			'Principal',
+			'Principal',
+			'PrincipalHolder',
+			'Printable',
+			'PrinterAbortException',
+			'PrinterException',
+			'PrinterGraphics',
+			'PrinterIOException',
+			'PrinterJob',
+			'PrintGraphics',
+			'PrintJob',
+			'PrintStream',
+			'PrintWriter',
+			'PRIVATE_MEMBER',
+			'PrivateKey',
+			'PrivilegedAction',
+			'PrivilegedActionException',
+			'PrivilegedExceptionAction',
+			'Process',
+			'ProfileDataException',
+			'ProgressBarUI',
+			'ProgressMonitor',
+			'ProgressMonitorInputStream',
+			'Properties',
+			'PropertyChangeEvent',
+			'PropertyChangeListener',
+			'PropertyChangeSupport',
+			'PropertyDescriptor',
+			'PropertyEditor',
+			'PropertyEditorManager',
+			'PropertyEditorSupport',
+			'PropertyPermission',
+			'PropertyResourceBundle',
+			'PropertyVetoException',
+			'ProtectionDomain',
+			'ProtocolException',
+			'Provider',
+			'ProviderException',
+			'Proxy',
+			'PUBLIC_MEMBER',
+			'PublicKey',
+			'PushbackInputStream',
+			'PushbackReader',
+			'QuadCurve2D',
+			'QuadCurve2D.Double',
+			'QuadCurve2D.Float',
+			'Random',
+			'RandomAccessFile', 'Raster', 'RasterFormatException', 'RasterOp',
+			'Reader', 'Receiver', 'Rectangle', 'Rectangle2D', 'Rectangle2D.Double',
+			'Rectangle2D.Float', 'RectangularShape', 'Ref', 'RefAddr', 'Reference',
+			'Referenceable', 'ReferenceQueue', 'ReferralException',
+			'ReflectPermission', 'Registry', 'RegistryHandler', 'RemarshalException',
+			'Remote', 'RemoteCall', 'RemoteException', 'RemoteObject', 'RemoteRef',
+			'RemoteServer',
+			'RemoteStub',
+			'RenderableImage',
+			'RenderableImageOp',
+			'RenderableImageProducer',
+			'RenderContext',
+			'RenderedImage',
+			'RenderedImageFactory',
+			'Renderer',
+			'RenderingHints',
+			'RenderingHints.Key',
+			'RepaintManager',
+			'ReplicateScaleFilter',
+			'Repository',
+			'RepositoryIdHelper',
+			'Request',
+			'RescaleOp',
+			'Resolver',
+			'ResolveResult',
+			'ResourceBundle',
+			'ResponseHandler',
+			'ResultSet',
+			'ResultSetMetaData',
+			'ReverbType',
+			'RGBImageFilter',
+			'RMIClassLoader',
+			'RMIClientSocketFactory',
+			'RMIFailureHandler',
+			'RMISecurityException',
+			'RMISecurityManager',
+			'RMIServerSocketFactory',
+			'RMISocketFactory',
+			'Robot',
+			'RootPaneContainer',
+			'RootPaneUI',
+			'RoundRectangle2D',
+			'RoundRectangle2D.Double',
+			'RoundRectangle2D.Float',
+			'RowMapper',
+			'RSAKey',
+			'RSAKeyGenParameterSpec',
+			'RSAPrivateCrtKey',
+			'RSAPrivateCrtKeySpec',
+			'RSAPrivateKey',
+			'RSAPrivateKeySpec',
+			'RSAPublicKey',
+			'RSAPublicKeySpec',
+			'RTFEditorKit',
+			'RuleBasedCollator',
+			'Runnable',
+			'Runtime',
+			'RunTime',
+			'RuntimeException',
+			'RunTimeOperations',
+			'RuntimePermission',
+			'SampleModel',
+			'SchemaViolationException',
+			'Scrollable',
+			'Scrollbar',
+			'ScrollBarUI',
+			'ScrollPane',
+			'ScrollPaneConstants',
+			'ScrollPaneLayout',
+			'ScrollPaneLayout.UIResource',
+			'ScrollPaneUI',
+			'SearchControls',
+			'SearchResult',
+			'SecureClassLoader',
+			'SecureRandom',
+			'SecureRandomSpi',
+			'Security',
+			'SecurityException',
+			'SecurityManager',
+			'SecurityPermission',
+			'Segment',
+			'SeparatorUI',
+			'Sequence',
+			'SequenceInputStream',
+			'Sequencer',
+			'Sequencer.SyncMode',
+			'Serializable',
+			'SerializablePermission',
+			'ServantObject',
+			'ServerCloneException',
+			'ServerError', 'ServerException',
+			'ServerNotActiveException',
+			'ServerRef',
+			'ServerRequest',
+			'ServerRuntimeException',
+			'ServerSocket',
+			'ServiceDetail',
+			'ServiceDetailHelper',
+			'ServiceInformation',
+			'ServiceInformationHelper',
+			'ServiceInformationHolder',
+			'ServiceUnavailableException',
+			'Set',
+			'SetOverrideType',
+			'SetOverrideTypeHelper',
+			'Shape',
+			'ShapeGraphicAttribute',
+			'Short',
+			'ShortHolder',
+			'ShortLookupTable',
+			'ShortMessage',
+			'ShortSeqHelper',
+			'ShortSeqHolder',
+			'Signature',
+			'SignatureException',
+			'SignatureSpi',
+			'SignedObject',
+			'Signer',
+			'SimpleAttributeSet',
+			'SimpleBeanInfo',
+			'SimpleDateFormat',
+			'SimpleTimeZone',
+			'SinglePixelPackedSampleModel',
+			'SingleSelectionModel',
+			'SizeLimitExceededException',
+			'SizeRequirements',
+			'SizeSequence',
+			'Skeleton',
+			'SkeletonMismatchException',
+			'SkeletonNotFoundException',
+			'SliderUI',
+			'Socket',
+			'SocketException',
+			'SocketImpl',
+			'SocketImplFactory',
+			'SocketOptions',
+			'SocketPermission',
+			'SocketSecurityException',
+			'SoftBevelBorder',
+			'SoftReference',
+			'SortedMap',
+			'SortedSet',
+			'Soundbank',
+			'SoundbankReader',
+			'SoundbankResource',
+			'SourceDataLine',
+			'SplitPaneUI',
+			'SQLData',
+			'SQLException',
+			'SQLInput',
+			'SQLOutput', 'SQLPermission',
+			'SQLWarning',
+			'Stack',
+			'StackOverflowError',
+			'StateEdit',
+			'StateEditable',
+			'StateFactory',
+			'Statement',
+			'Streamable',
+			'StreamableValue',
+			'StreamCorruptedException',
+			'StreamTokenizer',
+			'StrictMath',
+			'String',
+			'StringBuffer',
+			'StringBufferInputStream',
+			'StringCharacterIterator',
+			'StringContent',
+			'StringHolder',
+			'StringIndexOutOfBoundsException',
+			'StringReader',
+			'StringRefAddr',
+			'StringSelection',
+			'StringTokenizer',
+			'StringValueHelper',
+			'StringWriter',
+			'Stroke',
+			'Struct',
+			'StructMember',
+			'StructMemberHelper',
+			'Stub',
+			'StubDelegate',
+			'StubNotFoundException',
+			'Style',
+			'StyleConstants',
+			'StyleConstants.CharacterConstants',
+			'StyleConstants.ColorConstants',
+			'StyleConstants.FontConstants',
+			'StyleConstants.ParagraphConstants',
+			'StyleContext',
+			'StyledDocument',
+			'StyledEditorKit',
+			'StyledEditorKit.AlignmentAction',
+			'StyledEditorKit.BoldAction',
+			'StyledEditorKit.FontFamilyAction',
+			'StyledEditorKit.FontSizeAction',
+			'StyledEditorKit.ForegroundAction',
+			'StyledEditorKit.ItalicAction',
+			'StyledEditorKit.StyledTextAction',
+			'StyledEditorKit.UnderlineAction',
+			'StyleSheet',
+			'StyleSheet.BoxPainter',
+			'StyleSheet.ListPainter',
+			'SwingConstants',
+			'SwingPropertyChangeSupport',
+			'SwingUtilities',
+			'SyncFailedException',
+			'Synthesizer',
+			'SysexMessage',
+			'System',
+			'SystemColor', 'SystemException',
+			'SystemFlavorMap',
+			'TabableView',
+			'TabbedPaneUI',
+			'TabExpander',
+			'TableCellEditor',
+			'TableCellRenderer',
+			'TableColumn',
+			'TableColumnModel',
+			'TableColumnModelEvent',
+			'TableColumnModelListener',
+			'TableHeaderUI',
+			'TableModel',
+			'TableModelEvent',
+			'TableModelListener',
+			'TableUI',
+			'TableView',
+			'TabSet',
+			'TabStop',
+			'TagElement',
+			'TargetDataLine',
+			'TCKind',
+			'TextAction',
+			'TextArea',
+			'TextAttribute',
+			'TextComponent',
+			'TextEvent',
+			'TextField',
+			'TextHitInfo',
+			'TextLayout',
+			'TextLayout.CaretPolicy',
+			'TextListener',
+			'TextMeasurer',
+			'TextUI',
+			'TexturePaint',
+			'Thread',
+			'ThreadDeath',
+			'ThreadGroup',
+			'ThreadLocal',
+			'Throwable',
+			'Tie',
+			'TileObserver',
+			'Time',
+			'TimeLimitExceededException',
+			'Timer',
+			'Timer',
+			'TimerTask',
+			'Timestamp',
+			'TimeZone',
+			'TitledBorder',
+			'ToolBarUI',
+			'Toolkit',
+			'ToolTipManager',
+			'ToolTipUI',
+			'TooManyListenersException',
+			'Track',
+			'TRANSACTION_REQUIRED',
+			'TRANSACTION_ROLLEDBACK',
+			'TransactionRequiredException',
+			'TransactionRolledbackException',
+			'Transferable',
+			'TransformAttribute',
+			'TRANSIENT',
+			'Transmitter',
+			'Transparency',
+			'TreeCellEditor',
+			'TreeCellRenderer',
+			'TreeExpansionEvent',
+			'TreeExpansionListener',
+			'TreeMap',
+			'TreeModel',
+			'TreeModelEvent',
+			'TreeModelListener',
+			'TreeNode',
+			'TreePath',
+			'TreeSelectionEvent',
+			'TreeSelectionListener',
+			'TreeSelectionModel',
+			'TreeSet',
+			'TreeUI',
+			'TreeWillExpandListener',
+			'TypeCode',
+			'TypeCodeHolder',
+			'TypeMismatch',
+			'Types',
+			'UID',
+			'UIDefaults',
+			'UIDefaults.ActiveValue',
+			'UIDefaults.LazyInputMap',
+			'UIDefaults.LazyValue',
+			'UIDefaults.ProxyLazyValue', 'UIManager',
+			'UIManager.LookAndFeelInfo',
+			'UIResource',
+			'ULongLongSeqHelper',
+			'ULongLongSeqHolder',
+			'ULongSeqHelper',
+			'ULongSeqHolder',
+			'UndeclaredThrowableException',
+			'UndoableEdit',
+			'UndoableEditEvent',
+			'UndoableEditListener',
+			'UndoableEditSupport',
+			'UndoManager',
+			'UnexpectedException',
+			'UnicastRemoteObject',
+			'UnionMember',
+			'UnionMemberHelper',
+			'UNKNOWN',
+			'UnknownError',
+			'UnknownException',
+			'UnknownGroupException',
+			'UnknownHostException',
+			'UnknownHostException',
+			'UnknownObjectException',
+			'UnknownServiceException',
+			'UnknownUserException',
+			'UnmarshalException',
+			'UnrecoverableKeyException',
+			'Unreferenced',
+			'UnresolvedPermission',
+			'UnsatisfiedLinkError',
+			'UnsolicitedNotification',
+			'UnsolicitedNotificationEvent',
+			'UnsolicitedNotificationListener',
+			'UNSUPPORTED_POLICY',
+			'UNSUPPORTED_POLICY_VALUE',
+			'UnsupportedAudioFileException',
+			'UnsupportedClassVersionError',
+			'UnsupportedEncodingException',
+			'UnsupportedFlavorException',
+			'UnsupportedLookAndFeelException',
+			'UnsupportedOperationException',
+			'URL',
+			'URLClassLoader',
+			'URLConnection',
+			'URLDecoder',
+			'URLEncoder',
+			'URLStreamHandler',
+			'URLStreamHandlerFactory',
+			'UserException',
+			'UShortSeqHelper',
+			'UShortSeqHolder',
+			'UTFDataFormatException',
+			'Util',
+			'UtilDelegate',
+			'Utilities',
+			'ValueBase',
+			'ValueBaseHelper',
+			'ValueBaseHolder',
+			'ValueFactory',
+			'ValueHandler',
+			'ValueMember',
+			'ValueMemberHelper',
+			'VariableHeightLayoutCache',
+			'Vector',
+			'VerifyError',
+			'VersionSpecHelper',
+			'VetoableChangeListener',
+			'VetoableChangeSupport',
+			'View',
+			'ViewFactory',
+			'ViewportLayout',
+			'ViewportUI',
+			'VirtualMachineError',
+			'Visibility',
+			'VisibilityHelper',
+			'VM_ABSTRACT',
+			'VM_CUSTOM',
+			'VM_NONE',
+			'VM_TRUNCATABLE',
+			'VMID',
+			'VoiceStatus',
+			'Void',
+			'WCharSeqHelper',
+			'WCharSeqHolder',
+			'WeakHashMap',
+			'WeakReference',
+			'Window',
+			'WindowAdapter',
+			'WindowConstants',
+			'WindowEvent', 'WindowListener',
+			'WrappedPlainView',
+			'WritableRaster',
+			'WritableRenderedImage',
+			'WriteAbortedException',
+			'Writer',
+			'WrongTransaction',
+			'WStringValueHelper',
+			'X509Certificate',
+			'X509CRL',
+			'X509CRLEntry',
+			'X509EncodedKeySpec',
+			'X509Extension',
+			'ZipEntry',
+			'ZipException',
+			'ZipFile',
+			'ZipInputStream',
+			'ZipOutputStream',
+			'ZoneView',
+			'_BindingIteratorImplBase',
+			'_BindingIteratorStub',
+			'_IDLTypeStub',
+			'_NamingContextImplBase',
+			'_NamingContextStub',
+			'_PolicyStub',
+			'_Remote_Stub '
+			),
+		4 => array(
+			'static', 'void', 'double', 'int', 'real', 'boolean', 'byte'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => true,
+		4 => true
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #aaaadd; font-weight: bold;',
+			4 => 'color: #993333;'
+			),
+		'COMMENTS' => array(
+			1=> 'color: #808080; font-style: italic;',
+			2=> 'color: #a1a100;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;',
+			2 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.google.com/search?q=allinurl%3A{FNAME}+java.sun.com&bntl=1',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/javascript.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/javascript.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/javascript.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,146 @@
+<?php
+/*************************************************************************************
+ * javascript.php
+ * --------------
+ * Author: Ben Keen (ben.keen at gmail.com)
+ * Copyright: (c) 2004 Ben Keen (ben.keen at gmail.com), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * JavaScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+  'LANG_NAME' => 'JAVASCRIPT',
+  'COMMENT_SINGLE' => array(1 => '//'),
+  'COMMENT_MULTI' => array('/*' => '*/'),
+  'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+  'QUOTEMARKS' => array("'", '"'),
+  'ESCAPE_CHAR' => '\\',
+  'KEYWORDS' => array(
+    1 => array(
+      'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+      'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+      'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
+      'while', 'write', 'with'
+      ),
+    2 => array(
+      'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+      'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+      'protected', 'public', 'super', 'true', 'use', 'var'
+      ),
+    3 => array(
+
+      // common functions for Window object
+      'alert', 'back', 'blur', 'close', 'confirm', 'focus', 'forward', 'home',
+      'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+      'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'status',
+      'stop',
+      )
+    ),
+  'SYMBOLS' => array(
+    '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+    ),
+  'CASE_SENSITIVE' => array(
+    GESHI_COMMENTS => false,
+    1 => false,
+    2 => false,
+    3 => false
+    ),
+  'STYLES' => array(
+    'KEYWORDS' => array(
+      1 => 'color: #000066; font-weight: bold;',
+      2 => 'color: #003366; font-weight: bold;',
+      3 => 'color: #000066;'
+      ),
+    'COMMENTS' => array(
+      1 => 'color: #009900; font-style: italic;',
+      'MULTI' => 'color: #009900; font-style: italic;'
+      ),
+    'ESCAPE_CHAR' => array(
+      0 => 'color: #000099; font-weight: bold;'
+      ),
+    'BRACKETS' => array(
+      0 => 'color: #66cc66;'
+      ),
+    'STRINGS' => array(
+      0 => 'color: #3366CC;'
+      ),
+    'NUMBERS' => array(
+      0 => 'color: #CC0000;'
+      ),
+    'METHODS' => array(
+      1 => 'color: #006600;'
+      ),
+    'SYMBOLS' => array(
+      0 => 'color: #66cc66;'
+      ),
+    'REGEXPS' => array(
+      0 => 'color: #0066FF;'
+      ),
+    'SCRIPT' => array(
+      0 => '',
+      1 => '',
+      2 => '',
+      3 => ''
+      )
+    ),
+  'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => ''
+  	),
+  'OOLANG' => true,
+  'OBJECT_SPLITTERS' => array(
+  	1 => '.'
+	),
+  'REGEXPS' => array(
+    0 => "/.*/([igm]*)?"         // matches js reg exps
+    ),
+  'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+  'SCRIPT_DELIMITERS' => array(
+    0 => array(
+      '<script type="text/javascript">' => '</script>'
+      ),
+    1 => array(
+      '<script language="javascript">' => '</script>'
+      )
+    ),
+  'HIGHLIGHT_STRICT_BLOCK' => array(
+    0 => true,
+    1 => true
+  )
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/lisp.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/lisp.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/lisp.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,131 @@
+<?php
+/*************************************************************************************
+ * lisp.php
+ * --------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Generic Lisp language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'LISP',
+	'COMMENT_SINGLE' => array(1 => ';'),
+	'COMMENT_MULTI' => array(';|' => '|;'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+		  'not','defun','princ',
+		  'eval','apply','funcall','quote','identity','function',
+		  'complement','backquote','lambda','set','setq','setf',
+		  'defun','defmacro','gensym','make','symbol','intern',
+		  'symbol','name','symbol','value','symbol','plist','get',
+		  'getf','putprop','remprop','hash','make','array','aref',
+		  'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',
+		  'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',
+		  'caadar','caaddr','cadaar','cadadr','caddar','cadddr',
+		  'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',
+		  'cdddar','cddddr','cons','list','append','reverse','last','nth',
+		  'nthcdr','member','assoc','subst','sublis','nsubst',
+		  'nsublis','remove','length','list','length',
+		  'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',
+		  'rplacd','nconc','delete','atom','symbolp','numberp',
+		  'boundp','null','listp','consp','minusp','zerop','plusp',
+		  'evenp','oddp','eq','eql','equal','cond','case','and','or',
+		  'let','l','if','prog','prog1','prog2','progn','go','return',
+		  'do','dolist','dotimes','catch','throw','error','cerror','break',
+		  'continue','errset','baktrace','evalhook','truncate','float',
+		  'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',
+		  'random','logand','logior','logxor','lognot','bignums','logeqv',
+		  'lognand','lognor','logorc2','logtest','logbitp','logcount',
+		  'integer','length','nil'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			0 => 'color: #202020;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/lua.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/lua.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/lua.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,132 @@
+<?php
+/*************************************************************************************
+ * lua.php
+ * -------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * LUA language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'LUA',
+	'COMMENT_SINGLE' => array(1 => "--"),
+	'COMMENT_MULTI' => array('--[[' => ']]'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'and','break','do','else','elseif','end','false','for','function','if',
+			'in','local','nil','not','or','repeat','return','then','true','until','while',
+			'_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',
+			'print','tonumber','tostring','type','unpack',
+			'_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',
+			'_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',
+			'rawget','rawset','require','sort','tinsert','tremove',
+			'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',
+			'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',
+			'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',
+			'openfile','closefile','readfrom','writeto','appendto',
+			'remove','rename','flush','seek','tmpfile','tmpname','read','write',
+			'clock','date','difftime','execute','exit','getenv','setlocale','time',
+			'_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',
+			'rawegal','rawget','rawset','require','setfenv','setmetatable','xpcall',
+			'string','table','math','coroutine','io','os','debug',
+			'string.byte','string.char','string.dump','string.find','string.len',
+			'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',
+			'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',
+			'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',
+			'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',
+			'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',
+			'coroutine.create','coroutine.resume','coroutine.status',
+			'coroutine.wrap','coroutine.yield',
+			'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',
+			'io.stdin','io.stdout','io.stderr',
+			'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',
+			'os.setlocale','os.time','os.tmpname'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '=', ';'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => true
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/mpasm.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/mpasm.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/mpasm.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,160 @@
+<?php
+/*************************************************************************************
+ * mpasm.php
+ * ---------
+ * Author: Bakalex (bakalex at gmail.com)
+ * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/12/6
+ * Last Modified: $Date: 2005/01/29 02:12:58 $
+ *
+ * Microchip Assembler language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ *  - First Release
+ *
+ * TODO (updated 2005/12/6)
+ * -------------------------
+ *
+ * For the moment, i've only added PIC16C6X registers. We need more (PIC16F/C7x/8x,
+ * PIC10, PIC18 and dsPIC registers).
+ * Must take a look to dsPIC instructions.
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Microchip Assembler',
+	'COMMENT_SINGLE' => array(1 => ';'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		/*Directive Language*/
+		4 => array(
+			'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 'ERROR-LEVEL', '#INCLUDE', 'LIST',
+			'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 'SET', 'SPACE', 'SUBTITLE',
+			'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 'ENDW', 'IF', 'IFDEF', 'IFNDEF',
+			'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 'DATA', 'DB', 'DE', 'DT', 'DW',
+			'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 'EXITM', 'EXPAND', 'LOCAL',
+			'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 'EXTERN', 'GLOBAL', 'IDATA',
+			'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 'UDATA_SHR'
+		  ),
+		/* 12&14-bit Specific Instruction Set*/
+		1 => array(
+			'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 'option', 'retlw', 'sleep',
+			'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 'comf', 'decf', 'decfsz', 'incf',
+			'incfsz', 'iorwf', 'movf', 'movwf', 'nop', 'rlf', 'rrf', 'subwf', 'swapf', 'xorwf',
+			'bcf', 'bsf', 'btfsc', 'btfss',
+			'addlw', 'iorlw', 'retfie', 'return', 'sublw', 'xorlw', 'addcf', 'adddcf', 'b', 'bc', 'bdc',
+			'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 'lcall', 'lgoto', 'movfw',
+			'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 'skpnc', 'skpndc', 'skpnz', 'skpz',
+			'subcf', 'subdcf', 'tstf'
+		    ),
+		/* 16-bit Specific Instructiob Set */
+		2 => array (
+			'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 'tablwt', 'tlrd', 'tlwt',
+			'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 'rrcf', 'rrncf', 'setf', 'subwfb',
+			'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 'infsnz', 'tstfsz', 'lfsr', 'bnn',
+			'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'
+		    ),
+		/* Registers */
+		3 => array(
+			'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 'PORTB', 'PORTC', 'PORTD', 'PORTE',
+			'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 'T1CON', 'TMR2', 'T2CON', 'TMR2L',
+			'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',
+			'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 'OPTION', 'TRISA', 'TRISB', 'TRISC',
+			'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 'SSPSTAT', 'TXSTA', 'SPBRG'
+		    ),
+		/*Operands*/
+		5 => array(
+			 'high','low'
+			)
+		),
+	'SYMBOLS' => array(
+		'[', ']', '(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #00007f;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #007f00;',
+			4 => 'color: #46aa03; font-weight:bold;',
+			5 => 'color: #7f0000;',
+			6 => 'color: #7f0000;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #adadad; font-style: italic;',
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #7f007f;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #ff0000;',
+			1 => 'color: #ff0000;'
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		0 => '[0-9a-fA-F][0-9a-fA-F]*[hH]',
+		1 => '[01][01]*[bB]'
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/nsis.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/nsis.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/nsis.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,164 @@
+<?php
+/*************************************************************************************
+ * nsis.php
+ * --------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/29/07
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * NullSoft Installer System language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'nsis',
+	'COMMENT_SINGLE' => array(1 => ';'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'",'"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'What','Abort','AddSize','AllowRootDirInstall','AutoCloseWindow',
+			'BGGradient','BrandingText','BringToFront','CRCCheck','Call','CallInstDLL','Caption','ClearErrors',
+			'CompletedText','ComponentText','CopyFiles','CreateDirectory','CreateShortCut','Delete',
+			'DeleteINISec','DeleteINIStr','DeleteRegKey','DeleteRegValue','DetailPrint','DetailsButtonText',
+			'DirShow','DirText','DisabledBitmap','EnabledBitmap','EnumRegKey','EnumRegValue','Exch','Exec',
+			'ExecShell','ExecWait','ExpandEnvStrings','File','FileClose','FileErrorText','FileOpen','FileRead',
+			'FileReadByte','FileSeek','FileWrite','FileWriteByte','FindClose','FindFirst','FindNext','FindWindow',
+			'Function','FunctionEnd','GetCurrentAddress','GetDLLVersionLocal','GetDllVersion','GetFileTime',
+			'GetFileTimeLocal','GetFullPathName','GetFunctionAddress','GetLabelAddress','GetTempFileName',
+			'Goto','HideWindow','Icon','IfErrors','IfFileExists','IfRebootFlag','InstProgressFlags','InstType',
+			'InstallButtonText','InstallColors','InstallDir','InstallDirRegKey','IntCmp','IntCmpU','IntFmt','IntOp',
+			'IsWindow','LicenseData','LicenseText','MessageBox','MiscButtonText','Name','OutFile','Pop','Push',
+			'Quit','RMDir','ReadEnvStr','ReadINIStr','ReadRegDword','ReadRegStr','Reboot','RegDLL','Rename',
+			'Return','SearchPath','Section','SectionDivider','SectionEnd','SectionIn','SendMessage','SetAutoClose',
+			'SetCompress','SetCompressor','SetDatablockOptimize','SetDateSave','SetDetailsPrint','SetDetailsView','SetErrors',
+			'SetFileAttributes','SetOutPath','SetOverwrite','SetRebootFlag','ShowInstDetails','ShowUninstDetails',
+			'SilentInstall','SilentUnInstall','Sleep','SpaceTexts','StrCmp','StrCpy','StrLen','SubCaption','UnRegDLL',
+			'UninstallButtonText','UninstallCaption','UninstallEXEName','UninstallIcon','UninstallSubCaption',
+			'UninstallText','WindowIcon','WriteINIStr','WriteRegBin','WriteRegDword','WriteRegDWORD','WriteRegExpandStr',
+			'WriteRegStr','WriteUninstaller','SectionGetFlags','SectionSetFlags','SectionSetText','SectionGetText',
+			'LogText','LogSet','CreateFont','SetShellVarContext','SetStaticBkColor','SetBrandingImage','PluginDir',
+			'SubSectionEnd','SubSection','CheckBitmap','ChangeUI','SetFont','AddBrandingImage','XPStyle','Var',
+			'LangString','!define','!undef','!ifdef','!ifndef','!endif','!else','!macro','!echo','!warning','!error','!verbose',
+			'!macroend','!insertmacro','!system','!include','!cd','!packhdr','!addplugindir'
+		  ),
+		2 => array(
+			'$0','$1','$2','$3','$4','$5','$6','$7','$8','$9',
+			'$R0','$R1','$R2','$R3','$R4','$R5','$R6','$R7','$R8','$R9','$CMDLINE','$DESKTOP',
+			'$EXEDIR','$HWNDPARENT','$INSTDIR','$OUTDIR','$PROGRAMFILES','${NSISDIR}',
+			'$QUICKLAUNCH','$SMPROGRAMS','$SMSTARTUP','$STARTMENU','$SYSDIR','$TEMP','$WINDIR'
+		    ),
+		3 => array(
+			'ARCHIVE','FILE_ATTRIBUTE_ARCHIVE','FILE_ATTRIBUTE_HIDDEN',
+			'FILE_ATTRIBUTE_NORMAL','FILE_ATTRIBUTE_OFFLINE','FILE_ATTRIBUTE_READONLY',
+			'FILE_ATTRIBUTE_SYSTEM','FILE_ATTRIBUTE_TEMPORARY','HIDDEN','HKCC','HKCR','HKCU',
+			'HKDD','HKEY_CLASSES_ROOT','HKEY_CURRENT_CONFIG','HKEY_CURRENT_USER','HKEY_DYN_DATA',
+			'HKEY_LOCAL_MACHINE','HKEY_PERFORMANCE_DATA','HKEY_USERS','HKLM','HKPD','HKU','IDABORT',
+			'IDCANCEL','IDIGNORE','IDNO','IDOK','IDRETRY','IDYES','MB_ABORTRETRYIGNORE','MB_DEFBUTTON1',
+			'MB_DEFBUTTON2','MB_DEFBUTTON3','MB_DEFBUTTON4','MB_ICONEXCLAMATION',
+			'MB_ICONINFORMATION','MB_ICONQUESTION','MB_ICONSTOP','MB_OK','MB_OKCANCEL',
+			'MB_RETRYCANCEL','MB_RIGHT','MB_SETFOREGROUND','MB_TOPMOST','MB_YESNO','MB_YESNOCANCEL',
+			'NORMAL','OFFLINE','READONLY','SW_SHOWMAXIMIZED','SW_SHOWMINIMIZED','SW_SHOWNORMAL',
+			'SYSTEM','TEMPORARY','auto','colored','false','force','hide','ifnewer','nevershow','normal',
+			'off','on','show','silent','silentlog','smooth','true','try'
+		   ),
+		4 => array(
+			'MyFunction','MySomethingElse'
+		)
+	),
+	'SYMBOLS' => array(
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #00007f;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #46aa03; font-weight:bold;',
+			4 => 'color: #0000ff;',
+			),
+		'COMMENTS' => array(
+			1 => 'color: #adadad; font-style: italic;',
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #7f007f;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => '',
+		4 => ''
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/objc.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/objc.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/objc.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,241 @@
+<?php
+/*************************************************************************************
+ * objc.php
+ * --------
+ * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Objective C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Objective C',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'if', 'return', 'while', 'case', 'continue', 'default',
+			'do', 'else', 'for', 'switch', 'goto'
+			),
+		2 => array(
+			'NULL', 'false', 'break', 'true', 'enum', 'nil', 'Nil', 'errno', 'EDOM',
+			'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+			'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+			'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+			'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+			'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+			'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+			'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+			'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+			'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+			'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+			'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC'
+			),
+		3 => array(
+			'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+			'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+			'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+			'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+			'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+			'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+			'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+			'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+			'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+			'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+			'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+			'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+			'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+			'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+			'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+			'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+			'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+			'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+			'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+			),
+		4 => array(   // Data types:
+			'auto', 'char', 'const', 'double',  'float', 'int', 'long',
+			'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+			'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+			'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+			'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+			// OpenStep/GNUstep/Cocoa:
+			'SEL', 'id', 'NSRect', 'NSRange', 'NSPoint', 'NSZone', 'Class', 'IMP', 'BOOL',
+			// OpenStep/GNUstep/Cocoa @identifiers
+			'@selector', '@class', '@protocol', '@interface', '@implementation', '@end',
+			'@private', '@protected', '@public', '@try', '@throw', '@catch', '@finally',
+			'@encode', '@defs', '@synchronized'
+			),
+        5 => array( // OpenStep/GNUstep/Cocoa Foundation
+			'NSAppleEventDescriptor', 'NSNetService', 'NSAppleEventManager',
+			'NSNetServiceBrowser', 'NSAppleScript', 'NSNotification', 'NSArchiver',
+			'NSNotificationCenter', 'NSArray', 'NSNotificationQueue', 'NSAssertionHandler',
+			'NSNull', 'NSAttributedString', 'NSNumber', 'NSAutoreleasePool',
+			'NSNumberFormatter', 'NSBundle', 'NSObject', 'NSCachedURLResponse',
+			'NSOutputStream', 'NSCalendarDate', 'NSPipe', 'NSCharacterSet', 'NSPort',
+			'NSClassDescription', 'NSPortCoder', 'NSCloneCommand', 'NSPortMessage',
+			'NSCloseCommand', 'NSPortNameServer', 'NSCoder', 'NSPositionalSpecifier',
+			'NSConditionLock', 'NSProcessInfo', 'NSConnection', 'NSPropertyListSerialization',
+			'NSCountCommand', 'NSPropertySpecifier', 'NSCountedSet', 'NSProtocolChecker',
+			'NSCreateCommand', 'NSProxy', 'NSData', 'NSQuitCommand', 'NSDate',
+			'NSRandomSpecifier', 'NSDateFormatter', 'NSRangeSpecifier', 'NSDecimalNumber',
+			'NSRecursiveLock', 'NSDecimalNumberHandler', 'NSRelativeSpecifier',
+			'NSDeleteCommand', 'NSRunLoop', 'NSDeserializer', 'NSScanner', 'NSDictionary',
+			'NSScriptClassDescription', 'NSDirectoryEnumerator', 'NSScriptCoercionHandler',
+			'NSDistantObject', 'NSScriptCommand', 'NSDistantObjectRequest',
+			'NSScriptCommandDescription', 'NSDistributedLock', 'NSScriptExecutionContext',
+			'NSDistributedNotificationCenter', 'NSScriptObjectSpecifier', 'NSEnumerator',
+			'NSScriptSuiteRegistry', 'NSError', 'NSScriptWhoseTest', 'NSException',
+			'NSSerializer', 'NSExistsCommand', 'NSSet', 'NSFileHandle', 'NSSetCommand',
+			'NSFileManager', 'NSSocketPort', 'NSFormatter', 'NSSocketPortNameServer',
+			'NSGetCommand', 'NSSortDescriptor', 'NSHost', 'NSSpecifierTest', 'NSHTTPCookie',
+			'NSSpellServer', 'NSHTTPCookieStorage', 'NSStream', 'NSHTTPURLResponse',
+			'NSString', 'NSIndexSet', 'NSTask', 'NSIndexSpecifier', 'NSThread',
+			'NSInputStream', 'NSTimer', 'NSInvocation', 'NSTimeZone', 'NSKeyedArchiver',
+			'NSUnarchiver', 'NSKeyedUnarchiver', 'NSUndoManager', 'NSLock',
+			'NSUniqueIDSpecifier', 'NSLogicalTest', 'NSURL', 'NSMachBootstrapServer',
+			'NSURLAuthenticationChallenge', 'NSMachPort', 'NSURLCache', 'NSMessagePort',
+			'NSURLConnection', 'NSMessagePortNameServer', 'NSURLCredential',
+			'NSMethodSignature', 'NSURLCredentialStorage', 'NSMiddleSpecifier',
+			'NSURLDownload', 'NSMoveCommand', 'NSURLHandle', 'NSMutableArray',
+			'NSURLProtectionSpace', 'NSMutableAttributedString', 'NSURLProtocol',
+			'NSMutableCharacterSet', 'NSURLRequest', 'NSMutableData', 'NSURLResponse',
+			'NSMutableDictionary', 'NSUserDefaults', 'NSMutableIndexSet', 'NSValue',
+			'NSMutableSet', 'NSValueTransformer', 'NSMutableString', 'NSWhoseSpecifier',
+			'NSMutableURLRequest', 'NSXMLParser', 'NSNameSpecifier'
+		),
+		6 => array( // OpenStep/GNUstep/Cocoa AppKit
+			'NSActionCell', 'NSOpenGLPixelFormat', 'NSAffineTransform', 'NSOpenGLView',
+			'NSAlert', 'NSOpenPanel', 'NSAppleScript Additions', 'NSOutlineView',
+			'NSApplication', 'NSPageLayout', 'NSArrayController', 'NSPanel',
+			'NSATSTypesetter', 'NSParagraphStyle', 'NSPasteboard', 'NSBezierPath',
+			'NSPDFImageRep', 'NSBitmapImageRep', 'NSPICTImageRep', 'NSBox', 'NSPopUpButton',
+			'NSBrowser', 'NSPopUpButtonCell', 'NSBrowserCell', 'NSPrinter', 'NSPrintInfo',
+			'NSButton', 'NSPrintOperation', 'NSButtonCell', 'NSPrintPanel', 'NSCachedImageRep',
+			'NSProgressIndicator', 'NSCell', 'NSQuickDrawView', 'NSClipView', 'NSResponder',
+			'NSRulerMarker', 'NSColor', 'NSRulerView', 'NSColorList', 'NSSavePanel',
+			'NSColorPanel', 'NSScreen', 'NSColorPicker', 'NSScroller', 'NSColorWell',
+			'NSScrollView', 'NSComboBox', 'NSSearchField', 'NSComboBoxCell',
+			'NSSearchFieldCell', 'NSControl', 'NSSecureTextField', 'NSController',
+			'NSSecureTextFieldCell', 'NSCursor', 'NSSegmentedCell', 'NSCustomImageRep',
+			'NSSegmentedControl', 'NSDocument', 'NSShadow', 'NSDocumentController',
+			'NSSimpleHorizontalTypesetter', 'NSDrawer', 'NSSlider', 'NSEPSImageRep',
+			'NSSliderCell', 'NSEvent', 'NSSound', 'NSFileWrapper', 'NSSpeechRecognizer',
+			'NSFont', 'NSSpeechSynthesizer', 'NSFontDescriptor', 'NSSpellChecker',
+			'NSFontManager', 'NSSplitView', 'NSFontPanel', 'NSStatusBar', 'NSForm',
+			'NSStatusItem', 'NSFormCell', 'NSStepper', 'NSGlyphGenerator', 'NSStepperCell',
+			'NSGlyphInfo', 'NSGraphicsContext', 'NSTableColumn', 'NSHelpManager',
+			'NSTableHeaderCell', 'NSImage', 'NSTableHeaderView', 'NSImageCell', 'NSTableView',
+			'NSImageRep', 'NSTabView', 'NSImageView', 'NSTabViewItem', 'NSInputManager',
+			'NSText', 'NSInputServer', 'NSTextAttachment', 'NSLayoutManager',
+			'NSTextAttachmentCell', 'NSMatrix', 'NSTextContainer', 'NSMenu', 'NSTextField',
+			'NSMenuItem', 'NSTextFieldCell', 'NSMenuItemCell', 'NSTextStorage', 'NSMenuView',
+			'NSTextTab', 'NSMovie', 'NSTextView', 'NSMovieView', 'NSToolbar', 'NSToolbarItem',
+			'NSMutableParagraphStyle', 'NSTypesetter', 'NSNib', 'NSNibConnector',
+			'NSUserDefaultsController', 'NSNibControlConnector', 'NSView',
+			'NSNibOutletConnector', 'NSWindow', 'NSObjectController', 'NSWindowController',
+			'NSOpenGLContext', 'NSWorkspace', 'NSOpenGLPixelBuffer'
+		)
+	),
+	'SYMBOLS' => array(
+		'(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false,
+		6 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0000ff;',
+			2 => 'color: #0000ff;',
+			3 => 'color: #0000dd;',
+			4 => 'color: #0000ff;',
+			5 => 'color: #0000ff;',
+			6 => 'color: #0000ff;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #ff0000;',
+			2 => 'color: #339900;',
+			'MULTI' => 'color: #ff0000; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #666666; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #002200;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #666666;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #0000dd;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #002200;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+		4 => '',
+		5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/{FNAME}.html',
+		6 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/{FNAME}.html'
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/oobas.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/oobas.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/oobas.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,132 @@
+<?php
+/*************************************************************************************
+ * oobas.php
+ * ---------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * OpenOffice.org Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'OpenOffice.org Basic',
+	'COMMENT_SINGLE' => array(1 => "'"),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'dim','private','public','global','as','if','redim','true','set',
+			'byval',
+			'false','bool','double','integer','long','object','single','variant',
+			'msgbox','print','inputbox','green','blue','red','qbcolor',
+			'rgb','open','close','reset','freefile','get','input','line',
+			'put','write','loc','seek','eof','lof','chdir','chdrive',
+			'curdir','dir','fileattr','filecopy','filedatetime','fileexists',
+			'filelen','getattr','kill','mkdir','name','rmdir','setattr',
+			'dateserial','datevalue','day','month','weekday','year','cdatetoiso',
+			'cdatefromiso','hour','minute','second','timeserial','timevalue',
+			'date','now','time','timer','erl','err','error','on','error','goto','resume',
+			'and','eqv','imp','not','or','xor','mod','','atn','cos','sin','tan','log',
+			'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',
+			'it','then','else','select','case','iif','do','loop','for','next',
+			'while','wend','gosub','return','goto','on','goto','call','choose','declare',
+			'end','exit','freelibrary','function','rem','stop','sub','switch','with',
+			'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',
+			'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',
+			'space','string','format','lcase','left','lset','ltrim','mid','right',
+			'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',
+			'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',
+			'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',
+			'createunostruct','createunoservice','getprocessservicemanager',
+			'createunodialog','createunolistener','createunovalue','thiscomponent',
+			'globalscope'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '='
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/oracle8.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/oracle8.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/oracle8.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,489 @@
+<?php
+/*************************************************************************************
+ * oracle8.php
+ * -----------
+ * Author: Guy Wicks (Guy.Wicks at rbs.co.uk)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.2 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 02:06:01 $
+ *
+ * Oracle 8 language file for GeSHi
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Oracle 8',
+	'COMMENT_SINGLE' => array(1 => '--'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+	'QUOTEMARKS' => array("'", '"', '`'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;
+		6 => array(
+			),
+
+//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;
+		5 => array(
+			),
+
+//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;
+		4 => array(
+			),
+
+//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;
+		3 => array(
+			),
+//Put ORACLE reserved keywords here (8.1.7).  I like mine uppercase.
+		1 => array(
+			'ABS',
+			'ACCESS',
+			'ACOS',
+			'ADD',
+			'ADD_MONTHS',
+			'ALL',
+			'ALTER',
+			'ANALYZE',
+			'AND',
+			'ANY',
+			'ARRAY',
+			'AS',
+			'ASC',
+			'ASCII',
+			'ASIN',
+			'ASSOCIATE',
+			'AT',
+			'ATAN',
+			'ATAN2',
+			'AUDIT',
+			'AUTHID',
+			'AVG',
+			'BEGIN',
+			'BETWEEN',
+			'BFILENAME',
+			'BINARY_INTEGER',
+			'BITAND',
+			'BODY',
+			'BOOLEAN',
+			'BULK',
+			'BY',
+			'CALL',
+			'CASCADE',
+			'CASE',
+			'CEIL',
+			'CHAR',
+			'CHAR_BASE',
+			'CHARTOROWID',
+			'CHECK',
+			'CHR',
+			'CLOSE',
+			'CLUSTER',
+			'COALESCE',
+			'COLLECT',
+			'COLUMN',
+			'COMMENT',
+			'COMMIT',
+			'COMPRESS',
+			'CONCAT',
+			'CONNECT',
+			'CONSTANT',
+			'CONSTRAINT',
+			'CONSTRAINTS',
+			'CONTEXT',
+			'CONTROLFILE',
+			'CONVERT',
+			'CORR',
+			'COS',
+			'COSH',
+			'COST',
+			'COUNT',
+			'COVAR_POP',
+			'COVAR_SAMP',
+			'CREATE',
+			'CUME_DIST',
+			'CURRENT',
+			'CURRVAL',
+			'CURSOR',
+			'DATABASE',
+			'DATE',
+			'DAY',
+			'DECIMAL',
+			'DECLARE',
+			'DECODE',
+			'DEFAULT',
+			'DELETE',
+			'DENSE_RANK',
+			'DEREF',
+			'DESC',
+			'DIMENSION',
+			'DIRECTORY',
+			'DISASSOCIATE',
+			'DISTINCT',
+			'DO',
+			'DROP',
+			'DUMP',
+			'ELSE',
+			'ELSIF',
+			'EMPTY_BLOB',
+			'EMPTY_CLOB',
+			'END',
+			'EXCEPTION',
+			'EXCLUSIVE',
+			'EXEC',
+			'EXECUTE',
+			'EXISTS',
+			'EXIT',
+			'EXP',
+			'EXPLAIN',
+			'EXTENDS',
+			'EXTRACT',
+			'FALSE',
+			'FETCH',
+			'FILE',
+			'FIRST_VALUE',
+			'FLOAT',
+			'FLOOR',
+			'FOR',
+			'FORALL',
+			'FROM',
+			'FUNCTION',
+			'GOTO',
+			'GRANT',
+			'GREATEST',
+			'GROUP',
+			'GROUPING',
+			'HAVING',
+			'HEAP',
+			'HEXTORAW',
+			'HOUR',
+			'IDENTIFIED',
+			'IF',
+			'IMMEDIATE',
+			'IN',
+			'INCREMENT',
+			'INDEX',
+			'INDEXTYPE',
+			'INDICATOR',
+			'INITCAP',
+			'INITIAL',
+			'INSERT',
+			'INSTR',
+			'INSTRB',
+			'INTEGER',
+			'INTERFACE',
+			'INTERSECT',
+			'INTERVAL',
+			'INTO',
+			'IS',
+			'ISOLATION',
+			'JAVA',
+			'KEY',
+			'LAG',
+			'LAST_DAY',
+			'LAST_VALUE',
+			'LEAD',
+			'LEAST',
+			'LENGTH',
+			'LENGTHB',
+			'LEVEL',
+			'LIBRARY',
+			'LIKE',
+			'LIMITED',
+			'LINK',
+			'LN',
+			'LOCK',
+			'LOG',
+			'LONG',
+			'LOOP',
+			'LOWER',
+			'LPAD',
+			'LTRIM',
+			'MAKE_REF',
+			'MATERIALIZED',
+			'MAX',
+			'MAXEXTENTS',
+			'MIN',
+			'MINUS',
+			'MINUTE',
+			'MLSLABEL',
+			'MOD',
+			'MODE',
+			'MODIFY',
+			'MONTH',
+			'MONTHS_BETWEEN',
+			'NATURAL',
+			'NATURALN',
+			'NEW',
+			'NEW_TIME',
+			'NEXT_DAY',
+			'NEXTVAL',
+			'NLS_CHARSET_DECL_LEN',
+			'NLS_CHARSET_ID',
+			'NLS_CHARSET_NAME',
+			'NLS_INITCAP',
+			'NLS_LOWER',
+			'NLS_UPPER',
+			'NLSSORT',
+			'NOAUDIT',
+			'NOCOMPRESS',
+			'NOCOPY',
+			'NOT',
+			'NOWAIT',
+			'NTILE',
+			'NULL',
+			'NULLIF',
+			'NUMBER',
+			'NUMBER_BASE',
+			'NUMTODSINTERVAL',
+			'NUMTOYMINTERVAL',
+			'NVL',
+			'NVL2',
+			'OCIROWID',
+			'OF',
+			'OFFLINE',
+			'ON',
+			'ONLINE',
+			'OPAQUE',
+			'OPEN',
+			'OPERATOR',
+			'OPTION',
+			'OR',
+			'ORDER',
+			'ORGANIZATION',
+			'OTHERS',
+			'OUT',
+			'OUTLINE',
+			'PACKAGE',
+			'PARTITION',
+			'PCTFREE',
+			'PERCENT_RANK',
+			'PLAN',
+			'PLS_INTEGER',
+			'POSITIVE',
+			'POSITIVEN',
+			'POWER',
+			'PRAGMA',
+			'PRIMARY',
+			'PRIOR',
+			'PRIVATE',
+			'PRIVILEGES',
+			'PROCEDURE',
+			'PROFILE',
+			'PUBLIC',
+			'RAISE',
+			'RANGE',
+			'RANK',
+			'RATIO_TO_REPORT',
+			'RAW',
+			'RAWTOHEX',
+			'REAL',
+			'RECORD',
+			'REF',
+			'REFTOHEX',
+			'REGR_AVGX',
+			'REGR_AVGY',
+			'REGR_COUNT',
+			'REGR_INTERCEPT',
+			'REGR_R2',
+			'REGR_SLOPE',
+			'REGR_SXX',
+			'REGR_SXY',
+			'REGR_SYY',
+			'RELEASE',
+			'RENAME',
+			'REPLACE',
+			'RESOURCE',
+			'RETURN',
+			'RETURNING',
+			'REVERSE',
+			'REVOKE',
+			'ROLE',
+			'ROLLBACK',
+			'ROUND',
+			'ROW',
+			'ROW_NUMBER',
+			'ROWID',
+			'ROWIDTOCHAR',
+			'ROWNUM',
+			'ROWS',
+			'ROWTYPE',
+			'RPAD',
+			'RTRIM',
+			'SAVEPOINT',
+			'SCHEMA',
+			'SECOND',
+			'SEGMENT',
+			'SELECT',
+			'SEPERATE',
+			'SEQUENCE',
+			'SESSION',
+			'SET',
+			'SHARE',
+			'SIGN',
+			'SIN',
+			'SINH',
+			'SIZE',
+			'SMALLINT',
+			'SOUNDEX',
+			'SPACE',
+			'SQL',
+			'SQLCODE',
+			'SQLERRM',
+			'SQRT',
+			'START',
+			'STATISTICS',
+			'STDDEV',
+			'STDDEV_POP',
+			'STDDEV_SAMP',
+			'STOP',
+			'SUBSTR',
+			'SUBSTRB',
+			'SUBTYPE',
+			'SUCCESSFUL',
+			'SUM',
+			'SYNONYM',
+			'SYS_CONTEXT',
+			'SYS_GUID',
+			'SYSDATE',
+			'SYSTEM',
+			'TABLE',
+			'TABLESPACE',
+			'TAN',
+			'TANH',
+			'TEMPORARY',
+			'THEN',
+			'TIME',
+			'TIMESTAMP',
+			'TIMEZONE_ABBR',
+			'TIMEZONE_HOUR',
+			'TIMEZONE_MINUTE',
+			'TIMEZONE_REGION',
+			'TIMING',
+			'TO',
+			'TO_CHAR',
+			'TO_DATE',
+			'TO_LOB',
+			'TO_MULTI_BYTE',
+			'TO_NUMBER',
+			'TO_SINGLE_BYTE',
+			'TRANSACTION',
+			'TRANSLATE',
+			'TRIGGER',
+			'TRIM',
+			'TRUE',
+			'TRUNC',
+			'TRUNCATE',
+			'TYPE',
+			'UI',
+			'UID',
+			'UNION',
+			'UNIQUE',
+			'UPDATE',
+			'UPPER',
+			'USE',
+			'USER',
+			'USERENV',
+			'USING',
+			'VALIDATE',
+			'VALUE',
+			'VALUES',
+			'VAR_POP',
+			'VAR_SAMP',
+			'VARCHAR',
+			'VARCHAR2',
+			'VARIANCE',
+			'VIEW',
+			'VSIZE',
+			'WHEN',
+			'WHENEVER',
+			'WHERE',
+			'WHILE',
+			'WITH',
+			'WORK',
+			'WRITE',
+			'YEAR',
+			'ZONE'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '=', '<', '>', '|'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #ff0000;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		),
+
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/pascal.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/pascal.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/pascal.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,145 @@
+<?php
+/*************************************************************************************
+ * pascal.php
+ * ----------
+ * Author: Tux (tux at inamil.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/26
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Pascal language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  Added support for symbols
+ * 2004/07/27 (0.9.1)
+ *   -  Pascal is OO language. Some new words.
+ * 2004/07/26 (0.9.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Pascal',
+	'COMMENT_SINGLE' => array(1 => '//'),
+	'COMMENT_MULTI' => array('{' => '}','(*' => '*)'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'if', 'while', 'until', 'repeat', 'default',
+			'do', 'else', 'for', 'switch', 'goto','label','asm','begin','end',
+			'assembler','case', 'downto', 'to','div','mod','far','forward','in','inherited',
+			'inline','interrupt','label','library','not','var','of','then','stdcall',
+			'cdecl','end.','raise','try','except','name','finally','resourcestring','override','overload',
+			'default','public','protected','private','property','published','stored','catch'
+			),
+		2 => array(
+			'nil', 'false', 'break', 'true', 'function', 'procedure','implementation','interface',
+			'unit','program','initialization','finalization','uses'
+			),
+		3 => array(
+			'abs', 'absolute','and','arc','arctan','chr','constructor','destructor',
+			'dispose','cos','eof','eoln','exp','get','index','ln','new','xor','write','writeln',
+			'shr','sin','sqrt','succ','pred','odd','read','readln','ord','ordinal','blockread','blockwrite'
+			),
+		4 => array(
+			'array', 'char', 'const', 'boolean',  'real', 'integer', 'longint',
+			'word', 'shortint', 'record','byte','bytebool','string',
+			'type','object','export','exports','external','file','longbool','pointer','set',
+			'packed','ansistring','union'
+			),
+		),
+	'SYMBOLS' => array(
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => '',
+			4 => 'color: #993333;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #339933;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #202020;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => '',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/perl.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/perl.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/perl.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,162 @@
+<?php
+/*************************************************************************************
+ * perl.php
+ * --------
+ * Author: Andreas Gohr (andi at splitbrain.org), Ben Keen (ben.keen at gmail.com)
+ * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Perl language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/20 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * LABEL:
+ * * string comparison operators
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Perl',
+	'COMMENT_SINGLE' => array(1 => '#'),
+	'COMMENT_MULTI' => array( '=pod' => '=cut'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', 'while', 'foreach', 'my',
+			'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 'our',
+			'reset', 'continue','and', 'cmp', 'ne'
+			),
+		2 => array(
+			'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', '__WARN__', 'BEGIN',
+			'STDIN', 'STDOUT', 'STDERR'
+			),
+		3 => array(
+			'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless',
+			'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 'chr',
+			'chroot', 'close', 'closedir', 'connect', 'continue', 'cos',
+			'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 'die',
+			'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 'endprotoent',
+			'endpwent', 'endservent', 'eof', 'eval', 'exec', 'exists', 'exit',
+			'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 'formline',
+			'getc', 'getgrent', 'getgrgid', 'getgrnam', 'gethostbyaddr',
+			'gethostbyname', 'gethostent', 'getlogin', 'getnetbyaddr', 'getnetbyname',
+			'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',
+			'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',
+			'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',
+			'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',
+			'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',
+			'last', 'lc', 'lcfirst', 'length', 'link', 'listen', 'local',
+			'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',
+			'msgrcv', 'msgsnd', 'my', 'next', 'no', 'oct', 'open', 'opendir',
+			'ord', 'our', 'pack', 'package', 'pipe', 'pop', 'pos', 'print',
+			'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',
+			'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',
+			'recv', 'redo', 'ref', 'rename', 'require', 'return',
+			'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',
+			'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',
+			'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',
+			'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',
+			'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',
+			'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',
+			'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',
+			'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',
+			'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',
+			'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',
+			'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => true,
+		2 => true,
+		3 => true,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;',
+			2 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #0000ff;',
+			4 => 'color: #009999;',
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		3 => 'http://www.perldoc.com/perl5.6/pod/func/{FNAME}.html'
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '-&gt;',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
+		4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>

Added: plugins/trunk/plogeshi/inc/geshi/php-brief.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/php-brief.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/php-brief.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,162 @@
+<?php
+/*************************************************************************************
+ * php-brief.php
+ * -------------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/02
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * PHP language file for GeSHi (brief version).
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ *  -  Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Remove more functions that are hardly used
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'PHP',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'include', 'require', 'include_once', 'require_once',
+			'for', 'as', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+			'return', 'break'
+			),
+		2 => array(
+			'null', '__LINE__', '__FILE__',
+			'false', '&lt;?php', '?&gt;',
+			'true', 'var', 'default',
+			'function', 'class', 'new', '&amp;new'
+			),
+		3 => array(
+			'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
+			'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+			'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
+			'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+			'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+			'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
+			'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+			'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
+			'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
+			'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
+			'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+			'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+			'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+			)
+		),
+	'SYMBOLS' => array(
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;',
+			2 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #0000ff;'
+			),
+		'SCRIPT' => array(
+			0 => '',
+			1 => '',
+			2 => '',
+			3 => ''
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.php.net/{FNAME}',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '-&gt;',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+		),
+	'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+	'SCRIPT_DELIMITERS' => array(
+		'<?php' => '?>',
+		'<?' => '?>',
+		'<%' => '%>',
+		'<script language="php">' => '</script>'
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => true,
+		1 => true,
+		2 => true,
+		3 => true
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/php.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/php.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/php.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,346 @@
+<?php
+/*************************************************************************************
+ * php.php
+ * --------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * PHP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/25 (1.0.3)
+ *  -  Added support for multiple object splitters
+ *  -  Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ *  -  Added URL support
+ *  -  Added extra constants
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ *   (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'PHP',
+	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+	'COMMENT_MULTI' => array('/*' => '*/'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'include', 'require', 'include_once', 'require_once',
+			'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+			'return', 'break'
+			),
+		2 => array(
+			'null', '__LINE__', '__FILE__',
+			'false', '&lt;?php', '?&gt;', '&lt;?',
+			'&lt;script language', '&lt;/script&gt;',
+			'true', 'var', 'default',
+			'function', 'class', 'new', '&amp;new',
+			'__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
+			'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
+			'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
+			'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+			'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
+			'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
+			'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+			),
+		3 => array(
+			'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+			'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+			'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+			'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+			'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct',
+			'xml_parse','xml_get_error_code','xml_get_current_line_number','xml_get_current_column_number','xml_get_current_byte_index','xml_error_string',
+			'wordwrap','wddx_serialize_vars','wddx_serialize_value','wddx_packet_start','wddx_packet_end','wddx_deserialize',
+			'wddx_add_vars','vsprintf','vprintf','virtual','version_compare','var_export',
+			'var_dump','utf8_encode','utf8_decode','usort','usleep','user_error',
+			'urlencode','urldecode','unserialize','unregister_tick_function','unpack','unlink',
+			'unixtojd','uniqid','umask','uksort','ucwords','ucfirst',
+			'uasort','trim','trigger_error','touch','token_name','token_get_all',
+			'tmpfile','time','textdomain','tempnam','tanh','tan',
+			'system','syslog','symlink','substr_replace','substr_count','substr',
+			'strval','strtr','strtoupper','strtotime','strtolower','strtok',
+			'strstr','strspn','strrpos','strrev','strrchr','strpos',
+			'strncmp','strncasecmp','strnatcmp','strnatcasecmp','strlen','stristr',
+			'stripslashes','stripcslashes','strip_tags','strftime','stream_wrapper_register','stream_set_write_buffer',
+			'stream_set_timeout','stream_set_blocking','stream_select','stream_register_wrapper','stream_get_meta_data','stream_filter_prepend',
+			'stream_filter_append','stream_context_set_params','stream_context_set_option','stream_context_get_options','stream_context_create','strcspn',
+			'strcoll','strcmp','strchr','strcasecmp','str_word_count','str_shuffle',
+			'str_rot13','str_replace','str_repeat','str_pad','stat','sscanf',
+			'srand','sqrt','sql_regcase','sprintf','spliti','split',
+			'soundex','sort','socket_writev','socket_write','socket_strerror','socket_shutdown',
+			'socket_setopt','socket_set_timeout','socket_set_option','socket_set_nonblock','socket_set_blocking','socket_set_block',
+			'socket_sendto','socket_sendmsg','socket_send','socket_select','socket_recvmsg','socket_recvfrom',
+			'socket_recv','socket_readv','socket_read','socket_listen','socket_last_error','socket_iovec_set',
+			'socket_iovec_free','socket_iovec_fetch','socket_iovec_delete','socket_iovec_alloc','socket_iovec_add','socket_getsockname',
+			'socket_getpeername','socket_getopt','socket_get_status','socket_get_option','socket_create_pair','socket_create_listen',
+			'socket_create','socket_connect','socket_close','socket_clear_error','socket_bind','socket_accept',
+			'sleep','sizeof','sinh','sin','similar_text','shuffle',
+			'show_source','shmop_write','shmop_size','shmop_read','shmop_open','shmop_delete',
+			'shmop_close','shm_remove_var','shm_remove','shm_put_var','shm_get_var','shm_detach',
+			'shm_attach','shell_exec','sha1_file','sha1','settype','setlocale',
+			'setcookie','set_time_limit','set_socket_blocking','set_magic_quotes_runtime','set_include_path','set_file_buffer',
+			'set_error_handler','session_write_close','session_unset','session_unregister','session_start','session_set_save_handler',
+			'session_set_cookie_params','session_save_path','session_register','session_regenerate_id','session_name','session_module_name',
+			'session_is_registered','session_id','session_get_cookie_params','session_encode','session_destroy','session_decode',
+			'session_cache_limiter','session_cache_expire','serialize','sem_remove','sem_release','sem_get',
+			'sem_acquire','rtrim','rsort','round','rmdir','rewinddir',
+			'rewind','restore_include_path','restore_error_handler','reset','rename','register_tick_function',
+			'register_shutdown_function','realpath','readlink','readgzfile','readfile','readdir',
+			'read_exif_data','rawurlencode','rawurldecode','range','rand','rad2deg',
+			'quotemeta','quoted_printable_decode','putenv','proc_open','proc_close','printf',
+			'print_r','prev','preg_split','preg_replace_callback','preg_replace','preg_quote',
+			'preg_match_all','preg_match','preg_grep','pow','posix_uname','posix_ttyname',
+			'posix_times','posix_strerror','posix_setuid','posix_setsid','posix_setpgid','posix_setgid',
+			'posix_seteuid','posix_setegid','posix_mkfifo','posix_kill','posix_isatty','posix_getuid',
+			'posix_getsid','posix_getrlimit','posix_getpwuid','posix_getpwnam','posix_getppid','posix_getpid',
+			'posix_getpgrp','posix_getpgid','posix_getlogin','posix_getgroups','posix_getgrnam','posix_getgrgid',
+			'posix_getgid','posix_geteuid','posix_getegid','posix_getcwd','posix_get_last_error','posix_errno',
+			'posix_ctermid','pos','popen','pi','phpversion','phpinfo',
+			'phpcredits','php_uname','php_sapi_name','php_logo_guid','php_ini_scanned_files','pg_update',
+			'pg_untrace','pg_unescape_bytea','pg_tty','pg_trace','pg_setclientencoding','pg_set_client_encoding',
+			'pg_send_query','pg_select','pg_result_status','pg_result_seek','pg_result_error','pg_result',
+			'pg_query','pg_put_line','pg_port','pg_ping','pg_pconnect','pg_options',
+			'pg_numrows','pg_numfields','pg_num_rows','pg_num_fields','pg_meta_data','pg_lowrite',
+			'pg_lounlink','pg_loreadall','pg_loread','pg_loopen','pg_loimport','pg_loexport',
+			'pg_locreate','pg_loclose','pg_lo_write','pg_lo_unlink','pg_lo_tell','pg_lo_seek',
+			'pg_lo_read_all','pg_lo_read','pg_lo_open','pg_lo_import','pg_lo_export','pg_lo_create',
+			'pg_lo_close','pg_last_oid','pg_last_notice','pg_last_error','pg_insert','pg_host',
+			'pg_getlastoid','pg_get_result','pg_get_pid','pg_get_notify','pg_freeresult','pg_free_result',
+			'pg_fieldtype','pg_fieldsize','pg_fieldprtlen','pg_fieldnum','pg_fieldname','pg_fieldisnull',
+			'pg_field_type','pg_field_size','pg_field_prtlen','pg_field_num','pg_field_name','pg_field_is_null',
+			'pg_fetch_row','pg_fetch_result','pg_fetch_object','pg_fetch_assoc','pg_fetch_array','pg_fetch_all',
+			'pg_exec','pg_escape_string','pg_escape_bytea','pg_errormessage','pg_end_copy','pg_delete',
+			'pg_dbname','pg_copy_to','pg_copy_from','pg_convert','pg_connection_status','pg_connection_reset',
+			'pg_connection_busy','pg_connect','pg_cmdtuples','pg_close','pg_clientencoding','pg_client_encoding',
+			'pg_cancel_query','pg_affected_rows','pfsockopen','pclose','pathinfo','passthru',
+			'parse_url','parse_str','parse_ini_file','pack','overload','output_reset_rewrite_vars',
+			'output_add_rewrite_var','ord','openssl_x509_read','openssl_x509_parse','openssl_x509_free','openssl_x509_export_to_file',
+			'openssl_x509_export','openssl_x509_checkpurpose','openssl_x509_check_private_key','openssl_verify','openssl_sign','openssl_seal',
+			'openssl_public_encrypt','openssl_public_decrypt','openssl_private_encrypt','openssl_private_decrypt','openssl_pkey_new','openssl_pkey_get_public',
+			'openssl_pkey_get_private','openssl_pkey_free','openssl_pkey_export_to_file','openssl_pkey_export','openssl_pkcs7_verify','openssl_pkcs7_sign',
+			'openssl_pkcs7_encrypt','openssl_pkcs7_decrypt','openssl_open','openssl_get_publickey','openssl_get_privatekey','openssl_free_key',
+			'openssl_error_string','openssl_csr_sign','openssl_csr_new','openssl_csr_export_to_file','openssl_csr_export','openlog',
+			'opendir','octdec','ob_start','ob_list_handlers','ob_implicit_flush','ob_iconv_handler',
+			'ob_gzhandler','ob_get_status','ob_get_level','ob_get_length','ob_get_flush','ob_get_contents',
+			'ob_get_clean','ob_flush','ob_end_flush','ob_end_clean','ob_clean','number_format',
+			'nl_langinfo','nl2br','ngettext','next','natsort','natcasesort',
+			'mysql_unbuffered_query','mysql_thread_id','mysql_tablename','mysql_table_name','mysql_stat','mysql_selectdb',
+			'mysql_select_db','mysql_result','mysql_real_escape_string','mysql_query','mysql_ping','mysql_pconnect',
+			'mysql_numrows','mysql_numfields','mysql_num_rows','mysql_num_fields','mysql_listtables','mysql_listfields',
+			'mysql_listdbs','mysql_list_tables','mysql_list_processes','mysql_list_fields','mysql_list_dbs','mysql_insert_id',
+			'mysql_info','mysql_get_server_info','mysql_get_proto_info','mysql_get_host_info','mysql_get_client_info','mysql_freeresult',
+			'mysql_free_result','mysql_fieldtype','mysql_fieldtable','mysql_fieldname','mysql_fieldlen','mysql_fieldflags',
+			'mysql_field_type','mysql_field_table','mysql_field_seek','mysql_field_name','mysql_field_len','mysql_field_flags',
+			'mysql_fetch_row','mysql_fetch_object','mysql_fetch_lengths','mysql_fetch_field','mysql_fetch_assoc','mysql_fetch_array',
+			'mysql_escape_string','mysql_error','mysql_errno','mysql_dropdb','mysql_drop_db','mysql_dbname',
+			'mysql_db_query','mysql_db_name','mysql_data_seek','mysql_createdb','mysql_create_db','mysql_connect',
+			'mysql_close','mysql_client_encoding','mysql_affected_rows','mysql','mt_srand','mt_rand',
+			'mt_getrandmax','move_uploaded_file','money_format','mktime','mkdir','min',
+			'microtime','method_exists','metaphone','memory_get_usage','md5_file','md5',
+			'mbsubstr','mbstrrpos','mbstrpos','mbstrlen','mbstrcut','mbsplit',
+			'mbregex_encoding','mberegi_replace','mberegi','mbereg_search_setpos','mbereg_search_regs','mbereg_search_pos',
+			'mbereg_search_init','mbereg_search_getregs','mbereg_search_getpos','mbereg_search','mbereg_replace','mbereg_match',
+			'mbereg','mb_substr_count','mb_substr','mb_substitute_character','mb_strwidth','mb_strtoupper',
+			'mb_strtolower','mb_strrpos','mb_strpos','mb_strlen','mb_strimwidth','mb_strcut',
+			'mb_split','mb_send_mail','mb_regex_set_options','mb_regex_encoding','mb_preferred_mime_name','mb_parse_str',
+			'mb_output_handler','mb_language','mb_internal_encoding','mb_http_output','mb_http_input','mb_get_info',
+			'mb_eregi_replace','mb_eregi','mb_ereg_search_setpos','mb_ereg_search_regs','mb_ereg_search_pos','mb_ereg_search_init',
+			'mb_ereg_search_getregs','mb_ereg_search_getpos','mb_ereg_search','mb_ereg_replace','mb_ereg_match','mb_ereg',
+			'mb_encode_numericentity','mb_encode_mimeheader','mb_detect_order','mb_detect_encoding','mb_decode_numericentity','mb_decode_mimeheader',
+			'mb_convert_variables','mb_convert_kana','mb_convert_encoding','mb_convert_case','max','mail',
+			'magic_quotes_runtime','ltrim','lstat','long2ip','log1p','log10',
+			'log','localtime','localeconv','linkinfo','link','levenshtein',
+			'lcg_value','ksort','krsort','key_exists','key','juliantojd',
+			'join','jewishtojd','jdtounix','jdtojulian','jdtojewish','jdtogregorian',
+			'jdtofrench','jdmonthname','jddayofweek','is_writeable','is_writable','is_uploaded_file',
+			'is_subclass_of','is_string','is_scalar','is_resource','is_real','is_readable',
+			'is_object','is_numeric','is_null','is_nan','is_long','is_link',
+			'is_integer','is_int','is_infinite','is_float','is_finite','is_file',
+			'is_executable','is_double','is_dir','is_callable','is_bool','is_array',
+			'is_a','iptcparse','iptcembed','ip2long','intval','ini_set',
+			'ini_restore','ini_get_all','ini_get','ini_alter','in_array','import_request_variables',
+			'implode','image_type_to_mime_type','ignore_user_abort','iconv_set_encoding','iconv_get_encoding','iconv',
+			'i18n_mime_header_encode','i18n_mime_header_decode','i18n_ja_jp_hantozen','i18n_internal_encoding','i18n_http_output','i18n_http_input',
+			'i18n_discover_encoding','i18n_convert','hypot','htmlspecialchars','htmlentities','html_entity_decode',
+			'highlight_string','highlight_file','hexdec','hebrevc','hebrev','headers_sent',
+			'header','gzwrite','gzuncompress','gztell','gzseek','gzrewind',
+			'gzread','gzputs','gzpassthru','gzopen','gzinflate','gzgetss',
+			'gzgets','gzgetc','gzfile','gzeof','gzencode','gzdeflate',
+			'gzcompress','gzclose','gregoriantojd','gmstrftime','gmmktime','gmdate',
+			'glob','gettype','gettimeofday','gettext','getservbyport','getservbyname',
+			'getrusage','getrandmax','getprotobynumber','getprotobyname','getopt','getmyuid',
+			'getmypid','getmyinode','getmygid','getmxrr','getlastmod','getimagesize',
+			'gethostbynamel','gethostbyname','gethostbyaddr','getenv','getdate','getcwd',
+			'getallheaders','get_resource_type','get_required_files','get_parent_class','get_object_vars','get_meta_tags',
+			'get_magic_quotes_runtime','get_magic_quotes_gpc','get_loaded_extensions','get_included_files','get_include_path','get_html_translation_table',
+			'get_extension_funcs','get_defined_vars','get_defined_functions','get_defined_constants','get_declared_classes','get_current_user',
+			'get_class_vars','get_class_methods','get_class','get_cfg_var','get_browser','fwrite',
+			'function_exists','func_num_args','func_get_args','func_get_arg','ftruncate','ftp_systype',
+			'ftp_ssl_connect','ftp_size','ftp_site','ftp_set_option','ftp_rmdir','ftp_rename',
+			'ftp_rawlist','ftp_quit','ftp_pwd','ftp_put','ftp_pasv','ftp_nlist',
+			'ftp_nb_put','ftp_nb_get','ftp_nb_fput','ftp_nb_fget','ftp_nb_continue','ftp_mkdir',
+			'ftp_mdtm','ftp_login','ftp_get_option','ftp_get','ftp_fput','ftp_fget',
+			'ftp_exec','ftp_delete','ftp_connect','ftp_close','ftp_chdir','ftp_cdup',
+			'ftok','ftell','fstat','fsockopen','fseek','fscanf',
+			'frenchtojd','fread','fputs','fpassthru','fopen','fnmatch',
+			'fmod','flush','floor','flock','floatval','filetype',
+			'filesize','filepro_rowcount','filepro_retrieve','filepro_fieldwidth','filepro_fieldtype','filepro_fieldname',
+			'filepro_fieldcount','filepro','fileperms','fileowner','filemtime','fileinode',
+			'filegroup','filectime','fileatime','file_get_contents','file_exists','file',
+			'fgetss','fgets','fgetcsv','fgetc','fflush','feof',
+			'fclose','ezmlm_hash','extract','extension_loaded','expm1','explode',
+			'exp','exif_thumbnail','exif_tagname','exif_read_data','exif_imagetype','exec',
+			'escapeshellcmd','escapeshellarg','error_reporting','error_log','eregi_replace','eregi',
+			'ereg_replace','ereg','end','easter_days','easter_date','each',
+			'doubleval','dngettext','dl','diskfreespace','disk_total_space','disk_free_space',
+			'dirname','dir','dgettext','deg2rad','defined','define_syslog_variables',
+			'define','decoct','dechex','decbin','debug_zval_dump','debug_backtrace',
+			'deaggregate','dcngettext','dcgettext','dba_sync','dba_replace','dba_popen',
+			'dba_optimize','dba_open','dba_nextkey','dba_list','dba_insert','dba_handlers',
+			'dba_firstkey','dba_fetch','dba_exists','dba_delete','dba_close','date',
+			'current','ctype_xdigit','ctype_upper','ctype_space','ctype_punct','ctype_print',
+			'ctype_lower','ctype_graph','ctype_digit','ctype_cntrl','ctype_alpha','ctype_alnum',
+			'crypt','create_function','crc32','count_chars','count','cosh',
+			'cos','copy','convert_cyr_string','constant','connection_status','connection_aborted',
+			'compact','closelog','closedir','clearstatcache','class_exists','chunk_split',
+			'chr','chown','chop','chmod','chgrp','checkdnsrr',
+			'checkdate','chdir','ceil','call_user_method_array','call_user_method','call_user_func_array',
+			'call_user_func','cal_to_jd','cal_info','cal_from_jd','cal_days_in_month','bzwrite',
+			'bzread','bzopen','bzflush','bzerrstr','bzerror','bzerrno',
+			'bzdecompress','bzcompress','bzclose','bindtextdomain','bindec','bind_textdomain_codeset',
+			'bin2hex','bcsub','bcsqrt','bcscale','bcpow','bcmul',
+			'bcmod','bcdiv','bccomp','bcadd','basename','base_convert',
+			'base64_encode','base64_decode','atanh','atan2','atan','assert_options',
+			'assert','asort','asinh','asin','arsort','array_walk',
+			'array_values','array_unshift','array_unique','array_sum','array_splice','array_slice',
+			'array_shift','array_search','array_reverse','array_reduce','array_rand','array_push',
+			'array_pop','array_pad','array_multisort','array_merge_recursive','array_merge','array_map',
+			'array_keys','array_key_exists','array_intersect_assoc','array_intersect','array_flip','array_filter',
+			'array_fill','array_diff_assoc','array_diff','array_count_values','array_chunk','array_change_key_case',
+			'apache_setenv','apache_response_headers','apache_request_headers','apache_note','apache_lookup_uri','apache_get_version',
+			'apache_child_terminate','aggregation_info','aggregate_properties_by_regexp','aggregate_properties_by_list','aggregate_properties','aggregate_methods_by_regexp',
+			'aggregate_methods_by_list','aggregate_methods','aggregate','addslashes','addcslashes','acosh',
+			'acos','abs','_','echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;',
+			2 => 'color: #000000; font-weight: bold;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;',
+			2 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #0000ff;'
+			),
+		'SCRIPT' => array(
+			0 => '',
+			1 => '',
+			2 => '',
+			3 => ''
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.php.net/{FNAME}',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '-&gt;',
+		2 => '::'
+		),
+	'REGEXPS' => array(
+		0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*",
+		),
+	'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+	'SCRIPT_DELIMITERS' => array(
+		0 => array(
+			'<?php' => '?>'
+			),
+		1 => array(
+			'<?' => '?>'
+			),
+		2 => array(
+			'<%' => '%>'
+			),
+		3 => array(
+			'<script language="php">' => '</script>'
+			)
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => true,
+		1 => true,
+		2 => true,
+		3 => true
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/python.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/python.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/python.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,143 @@
+<?php
+/*************************************************************************************
+ * python.php
+ * ----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Python language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Python',
+	'COMMENT_SINGLE' => array(1 => '#'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'and','assert','break','class','continue','def','del','elif','else','except','exec','finally','for','from',
+			'global','if','import','in','is','lambda','map','not','None','or','pass','print','raise','range','return',
+			'try','while','abs','apply','callable','chr','cmp','coerce','compile','complex','delattr','dir','divmod',
+			'eval','execfile','filter','float','getattr','globals','group','hasattr','hash','hex','',
+			'id','input','int','intern','isinstance','issubclass','joinfields','len','list','local','long',
+			'max','min','match','oct','open','ord','pow','raw_input','reduce','reload','repr','round',
+			'search','setattr','setdefault','slice','str','splitfields','unichr','unicode','tuple','type',
+			'vars','xrange','zip','__abs__','__add__','__and__','__call__','__cmp__','__coerce__',
+			'__del__','__delattr__','__delitem__','__delslice__','__div__','__divmod__',
+			'__float__','__getattr__','__getitem__','__getslice__','__hash__','__hex__',
+			'__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__','__ior__','__ixor__',
+			'__ilshift__','__irshift__','__invert__','__int__','__init__','__len__','__long__','__lshift__',
+			'__mod__','__mul__','__neg__','__nonzero__','__oct__','__or__','__pos__','__pow__',
+			'__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
+			'__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__',
+			'__setattr__','__setitem__','__setslice__','__str__','__sub__','__xor__',
+			'__bases__','__class__','__dict__','__methods__','__members__','__name__',
+			'__version__','ArithmeticError','AssertionError','AttributeError','EOFError','Exception',
+			'FloatingPointError','IOError','ImportError','IndentationError','IndexError',
+			'KeyError','KeyboardInterrupt','LookupError','MemoryError','NameError','OverflowError',
+			'RuntimeError','StandardError','SyntaxError','SystemError','SystemExit','TabError','TypeError',
+			'ValueError','ZeroDivisionError','AST','','atexit','BaseHTTPServer','Bastion',
+			'cmd','codecs','commands','compileall','copy','CGIHTTPServer','Complex','dbhash',
+			'dircmp','dis','dospath','dumbdbm','emacs','find','fmt','fnmatch','ftplib',
+			'getopt','glob','gopherlib','grep','htmllib','httplib','ihooks','imghdr','imputil',
+			'linecache','lockfile','macpath','macurl2path','mailbox','mailcap',
+			'mimetools','mimify','mutex','math','Mimewriter','newdir','ni','nntplib','ntpath','nturl2path',
+			'os','ospath','pdb','pickle','pipes','poly','popen2','posixfile','posixpath','profile','pstats','pyclbr',
+			'pyexpat','Para','quopri','Queue','rand','random','regex','regsub','rfc822',
+			'sched','sgmllib','shelve','site','sndhdr','string','sys','snmp',
+			'SimpleHTTPServer','StringIO','SocketServer',
+			'tb','tempfile','toaiff','token','tokenize','traceback','tty','types','tzparse',
+			'Tkinter','unicodedata','urllib','urlparse','util','uu','UserDict','UserList',
+			'wave','webbrowser','whatsound','whichdb','whrandom','xdrlib','xml','xmlpackage',
+			'zmod','array','struct','self',
+			)
+		),
+	'SYMBOLS' => array(
+			'(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => true
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #202020;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/qbasic.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/qbasic.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/qbasic.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,146 @@
+<?php
+/*************************************************************************************
+ * qbasic.php
+ * ----------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * QBasic/QuickBASIC language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ *   -  Removed unnessecary slashes from some keywords
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Make sure all possible combinations of keywords with
+ *   a space in them (EXIT FOR, END SELECT) are added
+ *   to the first keyword group
+ * * Update colours, especially for the first keyword group
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+$language_data = array (
+	'LANG_NAME' => 'QBasic/QuickBASIC',
+	'COMMENT_SINGLE' => array(1 => "'", 2 => 'REM'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF',
+			'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'RETURN', 'RESUME', 'SELECT',
+			'CASE', 'UNTIL'
+			),
+		3 => array(
+			'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 'APPEND', 'AS', 'ASC', 'ATN',
+			'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL', 'CALL', 'CALLS', 'CASE',
+			'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHDIR', 'CHR$', 'CINT', 'CIRCLE', 'CLEAR',
+			'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 'CONST', 'COS', 'CSNG',
+			'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 'CVSMDF', 'DATA', 'DATE$',
+			'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 'DEFLNG', 'DEFSNG', 'DEFSTR',
+			'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 'EOF', 'EQV', 'ERASE',
+			'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 'EXP', 'FIELD', 'FILEATTR',
+			'FILES', 'FIX', 'FRE', 'FREEFILE', 'FUNCTION', 'GET', 'HEX$', 'IMP', 'INKEY$',
+			'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 'IOCTL', 'IOCTL$', 'IS',
+			'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LET', 'LINE', 'LIST', 'LOC',
+			'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'UNLOCK', 'LONG', 'LPOS', 'LPRINT',
+			'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 'MKI$', 'MKL$',
+			'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 'ON', 'PEN', 'PLAY',
+			'STRIG', 'TIMER', 'UEVENT', 'OPEN', 'OPTION', 'BASE', 'OR', 'OUT', 'OUTPUT',
+			'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 'POKE', 'POS', 'PRESET',
+			'PRINT', 'USING', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 'READ', 'REDIM', 'RESET',
+			'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 'RUN', 'SADD', 'SCREEN',
+			'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 'SIN', 'SINGLE', 'SLEEP',
+			'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 'STOP', 'STR$', 'STRIG',
+			'STRING', 'STRING$', 'SUB', 'SWAP', 'SYSTEM', 'TAB', 'TAN', 'TIME$', 'TIMER',
+			'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 'UNLOCK', 'USING', 'VAL',
+			'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 'WINDOW', 'WRITE', 'XOR'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		3 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #a1a100;',
+			3 => 'color: #000066;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080;',
+			2 => 'color: #808080;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		3 => 'http://www.qbasicnews.com/qboho/qck{FNAME}.shtml'
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/smarty.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/smarty.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/smarty.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,167 @@
+<?php
+/*************************************************************************************
+ * smarty.php
+ * ----------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Smarty template language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *  -  Initial Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'Smarty',
+	'COMMENT_SINGLE' => array(),
+	'COMMENT_MULTI' => array('{*' => '*}'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'$smarty', 'now', 'const', 'capture', 'config', 'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',
+			'config_load', 'foreach', 'foreachelse', 'include', 'include_php', 'insert', 'if', 'elseif', 'else', 'php',
+			'sectionelse', 'clear_all_cache', 'clear_cache', 'is_cached', 'from', 'item'
+			),
+		2 => array(
+			'capitalize', 'count_characters', 'cat', 'count_paragraphs', 'count_sentences', 'count_words', 'date_format',
+			'default', 'escape', 'indent', 'lower', 'nl2br', 'regex_replace', 'replace', 'spacify', 'string_format',
+			'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap'
+			),
+		3 => array(
+			'assign', 'counter', 'cycle', 'debug', 'eval', 'fetch', 'html_checkboxes', 'html_image', 'html_options',
+			'html_radios', 'html_select_date', 'html_select_time', 'html_table', 'math', 'mailto', 'popup_init',
+			'popup', 'textformat'
+			),
+		4 => array(
+			'$template_dir', '$compile_dir', '$config_dir', '$plugins_dir', '$debugging', '$debug_tpl',
+			'$debugging_ctrl', '$autoload_filters', '$compile_check', '$force_compile', '$caching', '$cache_dir',
+			'$cache_lifetime', '$cache_handler_func', '$cache_modified_check', '$config_overwrite',
+			'$config_booleanize', '$config_read_hidden', '$config_fix_newlines', '$default_template_handler_func',
+			'$php_handling', '$security', '$secure_dir', '$security_settings', '$trusted_dir', '$left_delimiter',
+			'$right_delimiter', '$compiler_class', '$request_vars_order', '$request_use_auto_globals',
+			'$error_reporting', '$compile_id', '$use_sub_dirs', '$default_modifiers', '$default_resource_type'
+			),
+		5 => array(
+			'append', 'append_by_ref', 'assign', 'assign_by_ref', 'clear_all_assign', 'clear_all_cache',
+			'clear_assign', 'clear_cache', 'clear_compiled_tpl', 'clear_config', 'config_load', 'display',
+			'fetch', 'get_config_vars', 'get_registered_object', 'get_template_vars', 'is_cached',
+			'load_filter', 'register_block', 'register_compiler_function', 'register_function',
+			'register_modifier', 'register_object', 'register_outputfilter', 'register_postfilter',
+			'register_prefilter', 'register_resource', 'trigger_error', 'template_exists', 'unregister_block',
+			'unregister_compiler_function', 'unregister_function', 'unregister_modifier', 'unregister_object',
+			'unregister_outputfilter', 'unregister_postfilter', 'unregister_prefilter', 'unregister_resource'
+			),
+		6 => array(
+			'name', 'assign', 'file', 'scope', 'global', 'key', 'once', 'script',
+			'loop', 'start', 'step', 'max', 'show', 'values', 'value'
+			),
+		7 => array(
+			'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 'mod'
+			),
+		),
+	'SYMBOLS' => array(
+		'/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false,
+		6 => false,
+		7 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0600FF;',		//Functions
+			2 => 'color: #008000;',		//Modifiers
+			3 => 'color: #0600FF;',		//Custom Functions
+			4 => 'color: #804040;',		//Variables
+			5 => 'color: #008000;',		//Methods
+			6 => 'color: #6A0A0A;',		//Attributes
+			7 => 'color: #D36900;'		//Text-based symbols
+			),
+		'COMMENTS' => array(
+			'MULTI' => 'color: #008080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #D36900;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #D36900;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'URLS' => array(
+		1 => 'http://smarty.php.net/{FNAME}',
+		2 => 'http://smarty.php.net/{FNAME}',
+		3 => 'http://smarty.php.net/{FNAME}',
+		4 => 'http://smarty.php.net/{FNAME}',
+		5 => 'http://smarty.php.net/{FNAME}',
+		6 => '',
+		7 => 'http://smarty.php.net/{FNAME}'
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+	'SCRIPT_DELIMITERS' => array(
+		0 => array(
+			'{' => '}'
+			)
+	),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => true
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/sql.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/sql.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/sql.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,136 @@
+<?php
+/*************************************************************************************
+ * sql.php
+ * -------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * SQL language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *  -  Added "`" string delimiter
+ *  -  Added "#" single comment starter
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ *  -  Added many more keywords (mostly MYSQL keywords)
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Add all keywords
+ * * Split this to several sql files - mysql-sql, ansi-sql etc
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'SQL',
+	'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => 1,
+	'QUOTEMARKS' => array("'", '"', '`'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array(
+			'ALL', 'ASC', 'AS',  'ALTER', 'AND', 'ADD', 'AUTO_INCREMENT',
+			'BETWEEN', 'BINARY', 'BOTH', 'BY', 'BOOLEAN',
+			'CHANGE', 'CHECK', 'COLUMNS', 'COLUMN', 'CROSS','CREATE',
+			'DATABASES', 'DATABASE', 'DATA', 'DELAYED', 'DESCRIBE', 'DESC',  'DISTINCT', 'DELETE', 'DROP', 'DEFAULT',
+			'ENCLOSED', 'ESCAPED', 'EXISTS', 'EXPLAIN',
+			'FIELDS', 'FIELD', 'FLUSH', 'FOR', 'FOREIGN', 'FUNCTION', 'FROM',
+			'GROUP', 'GRANT',
+			'HAVING',
+			'IGNORE', 'INDEX', 'INFILE', 'INSERT', 'INNER', 'INTO', 'IDENTIFIED', 'IN', 'IS', 'IF',
+			'JOIN',
+			'KEYS', 'KILL','KEY',
+			'LEADING', 'LIKE', 'LIMIT', 'LINES', 'LOAD', 'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LEFT', 'LANGUAGE',
+			'MODIFY',
+			'NATURAL', 'NOT', 'NULL', 'NEXTVAL',
+			'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTFILE', 'OR', 'OUTER', 'ON',
+			'PROCEEDURE','PROCEDURAL', 'PRIMARY',
+			'READ', 'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', 'RETURN', 'REVOKE', 'RLIKE', 'RIGHT',
+			'SHOW', 'SONAME', 'STATUS', 'STRAIGHT_JOIN', 'SELECT', 'SETVAL', 'SET',
+			'TABLES', 'TEMINATED', 'TO', 'TRAILING','TRUNCATE', 'TABLE', 'TEMPORARY', 'TRIGGER', 'TRUSTED',
+			'UNIQUE', 'UNLOCK', 'USE', 'USING', 'UPDATE', 'UNSIGNED',
+			'VALUES', 'VARIABLES', 'VIEW',
+			'WITH', 'WRITE', 'WHERE',
+			'ZEROFILL',
+			'XOR',
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')', '=', '<', '>', '|'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #993333; font-weight: bold;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080; font-style: italic;',
+			2 => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/vb.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/vb.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/vb.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,150 @@
+<?php
+/*************************************************************************************
+ * vb.php
+ * ------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * Visual Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+ $language_data = array (
+	'LANG_NAME' => 'Visual Basic',
+	'COMMENT_SINGLE' => array(1 => "'"),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'as', 'err', 'boolean', 'and', 'or', 'recordset', 'unload', 'to',
+			'integer','long','single','new','database','nothing','set','close',
+			'open','print','split','line','field','querydef','instrrev',
+			'abs','array','asc','ascb','ascw','atn','avg','me',
+			'cbool','cbyte','ccur','cdate','cdbl','cdec','choose','chr','chrb','chrw','cint','clng',
+			'command','cos','count','createobject','csng','cstr','curdir','cvar','cvdate','cverr',
+			'date','dateadd','datediff','datepart','dateserial','datevalue','day','ddb','dir','doevents',
+			'environ','eof','error','exp',
+			'fileattr','filedatetime','filelen','fix','format','freefile','fv',
+			'getallstrings','getattr','getautoserversettings','getobject','getsetting',
+			'hex','hour','iif','imestatus','input','inputb','inputbox','instr','instb','int','ipmt',
+			'isarray','isdate','isempty','iserror','ismissing','isnull','isnumeric','isobject',
+			'lbound','lcase','left','leftb','len','lenb','loadpicture','loc','lof','log','ltrim',
+			'max','mid','midb','min','minute','mirr','month','msgbox',
+			'now','nper','npv','oct','partition','pmt','ppmt','pv','qbcolor',
+			'rate','rgb','right','rightb','rnd','rtrim',
+			'second','seek','sgn','shell','sin','sln','space','spc','sqr','stdev','stdevp','str',
+			'strcomp','strconv','string','switch','sum','syd',
+			'tab','tan','time','timer','timeserial','timevalue','trim','typename',
+			'ubound','ucase','val','var','varp','vartype','weekday','year',
+			'appactivate','base','beep','call','case','chdir','chdrive','const',
+			'declare','defbool','defbyte','defcur','defdate','defdbl','defdec','defint',
+			'deflng','defobj','defsng','defstr','deftype','defvar','deletesetting','dim','do',
+			'else','elseif','end','enum','erase','event','exit','explicit',
+			'false','filecopy','for','foreach','friend','function','get','gosub','goto',
+			'if','implements','kill','let','lineinput','lock','loop','lset','mkdir','name','next','not',
+			'onerror','on','option','private','property','public','put','raiseevent','randomize',
+			'redim','rem','reset','resume','return','rmdir','rset',
+			'savepicture','savesetting','sendkeys','setattr','static','sub',
+			'then','true','type','unlock','wend','while','width','with','write',
+			'vbabort','vbabortretryignore','vbapplicationmodal','vbarray',
+			'vbbinarycompare','vbblack','vbblue','vbboolean','vbbyte','vbcancel',
+			'vbcr','vbcritical','vbcrlf','vbcurrency','vbcyan','vbdataobject',
+			'vbdate','vbdecimal','vbdefaultbutton1','vbdefaultbutton2',
+			'vbdefaultbutton3','vbdefaultbutton4','vbdouble','vbempty',
+			'vberror','vbexclamation','vbfirstfourdays','vbfirstfullweek',
+			'vbfirstjan1','vbformfeed','vbfriday','vbgeneraldate','vbgreen',
+			'vbignore','vbinformation','vbinteger','vblf','vblong','vblongdate',
+			'vblongtime','vbmagenta','vbmonday','vbnewline','vbno','vbnull',
+			'vbnullchar','vbnullstring','vbobject','vbobjecterror','vbok','vbokcancel',
+			'vbokonly','vbquestion','vbred','vbretry','vbretrycancel','vbsaturday',
+			'vbshortdate','vbshorttime','vbsingle','vbstring','vbsunday',
+			'vbsystemmodal','vbtab','vbtextcompare','vbthursday','vbtuesday',
+			'vbusesystem','vbusesystemdayofweek','vbvariant','vbverticaltab',
+			'vbwednesday','vbwhite','vbyellow','vbyes','vbyesno','vbyesnocancel',
+			'vbnormal','vbdirectory'
+			)
+		),
+	'SYMBOLS' => array(
+		'(', ')'
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		1 => false
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #b1b100;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: #808080;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099;'
+			),
+		'SCRIPT' => array(
+			),
+		'REGEXPS' => array(
+			)
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/vbnet.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/vbnet.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/vbnet.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,200 @@
+<?php
+/*************************************************************************************
+ * vbnet.php
+ * ---------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * VB.NET language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *  -  Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+	'LANG_NAME' => 'vb.net',
+	'COMMENT_SINGLE' => array(1 => "'"),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '',
+	'KEYWORDS' => array(
+		1 => array(
+			'3DDKSHADOW', '3DHIGHLIGHT', '3DLIGHT', 'ABORT', 'ABORTRETRYIGNORE', 'ACTIVEBORDER',
+			'ACTIVETITLEBAR', 'ALIAS', 'APPLICATIONMODAL', 'APPLICATIONWORKSPACE', 'ARCHIVE',
+			'BACK', 'BINARYCOMPARE', 'BLACK', 'BLUE', 'BUTTONFACE', 'BUTTONSHADOW', 'BUTTONTEXT',
+			'CANCEL', 'CDROM', 'CR', 'CRITICAL', 'CRLF', 'CYAN', 'DEFAULT', 'DEFAULTBUTTON1',
+			'DEFAULTBUTTON2', 'DEFAULTBUTTON3', 'DESKTOP', 'DIRECTORY', 'EXCLAMATION', 'FALSE',
+			'FIXED', 'FORAPPENDING', 'FORMFEED', 'FORREADING', 'FORWRITING', 'FROMUNICODE',
+			'GRAYTEXT', 'GREEN', 'HIDDEN', 'HIDE', 'HIGHLIGHT', 'HIGHLIGHTTEXT', 'HIRAGANA',
+			'IGNORE', 'INACTIVEBORDER', 'INACTIVECAPTIONTEXT', 'INACTIVETITLEBAR', 'INFOBACKGROUND',
+			'INFORMATION', 'INFOTEXT', 'KATAKANALF', 'LOWERCASE', 'MAGENTA', 'MAXIMIZEDFOCUS',
+			'MENUBAR', 'MENUTEXT', 'METHOD', 'MINIMIZEDFOCUS', 'MINIMIZEDNOFOCUS', 'MSGBOXRIGHT',
+			'MSGBOXRTLREADING', 'MSGBOXSETFOREGROUND', 'NARROW', 'NEWLINE', 'NO', 'NORMAL',
+			'NORMALFOCUS', 'NORMALNOFOCUS', 'NULLSTRING', 'OBJECTERROR', 'OK', 'OKCANCEL', 'OKONLY',
+			'PROPERCASE', 'QUESTION', 'RAMDISK', 'READONLY', 'RED', 'REMOTE', 'REMOVABLE', 'RETRY',
+			'RETRYCANCEL', 'SCROLLBARS', 'SYSTEMFOLDER', 'SYSTEMMODAL', 'TAB', 'TEMPORARYFOLDER',
+			'TEXTCOMPARE', 'TITLEBARTEXT', 'TRUE', 'UNICODE', 'UNKNOWN', 'UPPERCASE', 'VERTICALTAB',
+			'VOLUME', 'WHITE', 'WIDE', 'WIN16', 'WIN32', 'WINDOWBACKGROUND', 'WINDOWFRAME',
+			'WINDOWSFOLDER', 'WINDOWTEXT', 'YELLOW', 'YES', 'YESNO', 'YESNOCANCEL'
+			),
+		2 => array(
+			'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 'ByRef', 'ByVal', 'BEGINEPILOGUE',
+			'Else', 'Empty', 'Error', 'ENDPROLOGUE', 'EXTERNALSOURCE', 'ENVIRON', 'For',
+			'Friend', 'GET', 'HANDLES', 'Input', 'Is', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT',
+			'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 'NOTINHERITABLE',
+			'NOTOVERRIDABLE', 'OFF', 'On', 'Option', 'Optional', 'OVERRIDABLE', 'ParamArray',
+			'Print', 'Private', 'Property', 'Public', 'Resume', 'Seek', 'Static', 'Step',
+			'String', 'SHELL', 'SENDKEYS', 'SET', 'Then', 'Time', 'To', 'THROW', 'WithEvents'
+			),
+		3 => array(
+			'COLLECTION', 'DEBUG', 'DICTIONARY', 'DRIVE', 'DRIVES', 'ERR', 'FILE', 'FILES',
+			'FILESYSTEMOBJECT', 'FOLDER', 'FOLDERS', 'TEXTSTREAM'
+			),
+		4 => array(
+			'BOOLEAN', 'BYTE', 'DATE', 'DECIMIAL', 'DOUBLE', 'INTEGER', 'LONG', 'OBJECT',
+			'SINGLE STRING'
+			),
+		5 => array(
+			'ADDRESSOF', 'AND', 'BITAND', 'BITNOT', 'BITOR', 'BITXOR',
+			'GETTYPE', 'LIKE', 'MOD', 'NOT', 'ORXOR'
+			),
+		6 => array(
+			'APPACTIVATE', 'BEEP', 'CALL', 'CHDIR', 'CHDRIVE', 'CLASS', 'CASE', 'CATCH',
+			'DECLARE', 'DELEGATE', 'DELETESETTING', 'DIM', 'DO', 'DOEVENTS', 'END', 'ENUM',
+			'EVENT', 'EXIT', 'EACH', 'FUNCTION', 'FINALLY', 'IF', 'IMPORTS', 'INHERITS',
+			'INTERFACE', 'IMPLEMENTS', 'KILL', 'LOOP', 'MIDB', 'NAMESPACE', 'OPEN', 'PUT',
+			'RAISEEVENT', 'RANDOMIZE', 'REDIM', 'REM', 'RESET', 'SAVESETTING', 'SELECT',
+			'SETATTR', 'STOP', 'SUB', 'SYNCLOCK', 'STRUCTURE', 'SHADOWS', 'SWITCH',
+			'TIMEOFDAY', 'TODAY', 'TRY', 'WIDTH', 'WITH', 'WRITE', 'WHILE'
+			),
+		7 => array(
+			'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CBOOL', 'CBYTE', 'CCHAR',
+			'CCHR', 'CDATE', 'CDBL', 'CDEC', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW',
+			'CINT', 'CLNG', 'CLNG8', 'CLOSE', 'COBJ', 'COMMAND', 'COMMAND$', 'CONVERSION',
+			'COS', 'CREATEOBJECT', 'CSHORT', 'CSTR', 'CURDIR', 'CTYPE', 'CVDATE', 'DATEADD',
+			'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$',
+			'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER',
+			'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER',
+			'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 'GETATTRGETOBJECT', 'GETSETTING',
+			'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 'INPUTB', 'INPUTB$', 'INPUTBOX',
+			'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 'ISARRAY', 'ISDATE', 'ISEMPTY',
+			'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 'LBOUND', 'LCASE', 'LCASE$',
+			'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',
+			'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 'MKDIR', 'MONTH', 'MONTHNAME',
+			'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 'PARTITION', 'PMT', 'PPMT', 'PV',
+			'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',
+			'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 'SPC', 'SPLIT', 'STR', 'STR$',
+			'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 'TAB', 'TAN', 'TIMEOFDAY',
+			'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND',
+			'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR'
+			),
+		8 => array(
+			'ANY', 'ATN', 'CALENDAR', 'CIRCLE', 'CURRENCY', 'DEFBOOL', 'DEFBYTE', 'DEFCUR',
+			'DEFDATE', 'DEFDBL', 'DEFDEC', 'DEFINT', 'DEFLNG', 'DEFOBJ', 'DEFSNG', 'DEFSTR',
+			'DEFVAR', 'EQV', 'GOSUB', 'IMP', 'INITIALIZE', 'ISMISSING', 'LET', 'LINE', 'LSET',
+			'RSET', 'SGN', 'SQR', 'TERMINATE', 'VARIANT', 'VARTYPE', 'WEND'
+			),
+		),
+	'SYMBOLS' => array(
+		'&', '&=', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '\\', '\\=',
+		'^', '^='
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		5 => false,
+		6 => false,
+		7 => false,
+		8 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: #0600FF;',		//Constants
+			2 => 'color: #FF8000;',		//Keywords
+			3 => 'color: #008000;',		//Data Types
+			4 => 'color: #FF0000;',		//Objects
+			5 => 'color: #804040;',		//Operators
+			6 => 'color: #0600FF;',		//Statements
+			7 => 'color: #0600FF;',		//Functions
+			8 => 'color: #0600FF;'		//Deprecated
+			),
+		'COMMENTS' => array(
+			1 => 'color: #008080; font-style: italic;',
+			2 => 'color: #008080;',
+			'MULTI' => 'color: #008080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #008080; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #000000;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #808080;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #FF0000;'
+			),
+		'METHODS' => array(
+			1 => 'color: #0000FF;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #008000;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'URLS' => array(
+		1 => '',
+		2 => '',
+		3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+		4 => ''
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 =>'.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/visualfoxpro.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/visualfoxpro.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/visualfoxpro.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,444 @@
+<?php
+/*************************************************************************************
+ * visualfoxpro.php
+ * ----------------
+ * Author: Roberto Armellin (r.armellin at tin.it)
+ * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/17
+ * Last Modified: 2004/09/18
+ *
+ * Visual FoxPro language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/10/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'VFP',
+	'COMMENT_SINGLE' => array(1 => "//", 2 => "\n*"),
+	'COMMENT_MULTI' => array(),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array('"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		1 => array('Case', 'Else', '#Else', 'Then',
+			'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 'Endif', 'Endprintjob',
+			'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',
+			'#Elif','#Else','#Endif','#Define','#If','#Include',
+			'#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',
+			'Case','Define','Do','Else','Endcase','Enddefine',
+			'Enddo','Endfor','Endfunc','Endif','Endprintjob','Endproc',
+			'Endscan','Endtext','Endwith','For','Function','Hidden',
+			'If','Local','Lparameter','Lparameters','Next','Otherwise',
+			'Parameters','Printjob','Procedure','Protected','Public','Scan',
+			'Text','Then','While','With','?','??',
+			'???','Abs','Accept','Access','Aclass','Acopy',
+			'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',
+			'Adel','Adir','Aelement','Aerror','Afields','Afont',
+			'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',
+			'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',
+			'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',
+			'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',
+			'At_c','Atan','Atc','Atcc','Atcline','Atline',
+			'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',
+			'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',
+			'BinToC','Bintoc','Bitand','Bitclear','Bitlshift','Bitnot',
+			'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',
+			'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',
+			'CToBin','Calculate','Call','Capslock','Cd','Cdow',
+			'Ceiling','Central','Change','Char','Chdir','Chr',
+			'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',
+			'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',
+			'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',
+			'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',
+			'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',
+			'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',
+			'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',
+			'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctobin','Ctod','Ctot',
+			'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',
+			'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',
+			'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',
+			'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',
+			'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',
+			'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',
+			'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',
+			'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',
+			'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',
+			'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',
+			'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',
+			'Dmy','DoDefault','DoEvents','Doc','Doevents','Dow',
+			'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',
+			'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',
+			'End','Eof','Erase','Evaluate','Event','Eventtracking',
+			'Exclude','Exclusive','Exit','Exp','Export','External',
+			'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',
+			'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',
+			'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',
+			'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',
+			'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',
+			'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',
+			'Fputs','Fread','French','Fseek','Fsize','Fv',
+			'Fwrite','Gather','German','GetPem','Getbar','Getcolor',
+			'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',
+			'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',
+			'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',
+			'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',
+			'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',
+			'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',
+			'Indbc','Index','Indexseek','Inkey','Inlist','Input',
+			'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',
+			'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',
+			'Isexclusive','Isflocked','Ishosted','Islower','Isreadonly','Isrlocked',
+			'Isupper','Italian','Japan','Join','Justdrive','Justext',
+			'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'
+			),
+		2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',
+			'Lenc','Length','Likec','Lineno','LoadPicture','Loadpicture',
+			'Locate','Locfile','Log','Log10','Logout','Lookup',
+			'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',
+			'Mcol','Md','Mdown','Mdx','Mdy','Memlines',
+			'Menu','Messagebox','Minute','Mkdir','Mline','Modify',
+			'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',
+			'Mtdll','Mton','Mwindow','Native','Ndx','Network',
+			'NoFilter','Nodefault','Normalize','Note','Now','Ntom',
+			'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',
+			'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',
+			'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',
+			'Oracle','Order','Os','Outer','PCount','Pack',
+			'PacketSize','Padc','Padl','Padr','Payment','Pcol',
+			'PemStatus','Pi','Pivot','Play','Pop','Popup',
+			'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',
+			'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',
+			'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',
+			'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',
+			'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',
+			'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',
+			'Remove','Rename','Repeat','Replace','Replicate','Report',
+			'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',
+			'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',
+			'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',
+			'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',
+			'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',
+			'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',
+			'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',
+			'Save','SavePicture','Savepicture','ScaleUnits','Scatter','Scols',
+			'Scroll','Sec','Second','Seek','Select','SendUpdates',
+			'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',
+			'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',
+			'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',
+			'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',
+			'Store','Str','Strconv','Strtofile','Strtran','Stuff',
+			'Stuffc','Substr','Substrc','Substring','Sum','Suspend',
+			'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',
+			'Tableupdate','TagCount','TagNo','Tan','Target','This',
+			'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',
+			'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',
+			'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',
+			'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',
+			'UpdateType','Updated','Upper','Upsizing','Usa','Use',
+			'UseMemoSize','Used','Val','Validate','Varread','Vartype',
+			'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',
+			'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',
+			'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',
+			'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',
+			'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',
+			'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',
+			'_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',
+			'_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',
+			'_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',
+			'_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',
+			'_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',
+			'_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',
+			'_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',
+			'_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',
+			'_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',
+			'_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',
+			'_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',
+			'_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',
+			'_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',
+			'_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',
+			'_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',
+			'_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',
+			'_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',
+			'_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',
+			'_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',
+			'_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',
+			'_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',
+			'_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',
+			'_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',
+			'_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',
+			'_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',
+			'_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',
+			'_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',
+			'_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',
+			'_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',
+			'_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',
+			'_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',
+			'_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',
+			'_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',
+			'_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',
+			'_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',
+			'_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',
+			'_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',
+			'_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',
+			'_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',
+			'_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',
+			'_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',
+			'_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',
+			'_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',
+			'_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',
+			'_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',
+			'_vfp','Additive','After','Again','Aindent','Alignright',
+			'All','Alt','Alternate','And','Ansi','Any',
+			'Aplabout','App','Array','As','Asc','Ascending',
+			'Ascii','At','Attributes','Automatic','Autosave','Avg',
+			'Bar','Before','Bell','Between','Bitmap','Blank',
+			'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',
+			'Buffers','By','Candidate','Carry','Cascade','Catalog',
+			'Cdx','Center','Century','Cga','Character','Check',
+			'Classlib','Clock','Cnt','Codepage','Collate','Color',
+			'Com1','Com2','Command','Compact','Compatible','Compress',
+			'Confirm','Connection','Connections','Connstring','Console','Copies',
+			'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',
+			'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',
+			'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',
+			'Descending','Design','Development','Device','Dif','Disabled',
+			'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',
+			'Driver','Duplex','Echo','Editwork','Ega25','Ega43',
+			'Ems','Ems64','Encrypt','Encryption','Environment','Escape',
+			'Events','Exact','Except','Exe','Exists','Expression',
+			'Extended','F','Fdow','Fetch','Field','Fields',
+			'File','Files','Fill','Fixed','Float','Foldconst',
+			'Font','Footer','Force','Foreign','Fox2x','Foxplus',
+			'Free','Freeze','From','Fullpath','Fw2','Fweek',
+			'Get','Gets','Global','Group','Grow','Halfheight',
+			'Having','Heading','Headings','Helpfilter','History','Hmemory',
+			'Hours','Id','In','Indexes','Information','Instruct',
+			'Int','Integer','Intensity','Intersect','Into','Is',
+			'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',
+			'Ledit','Level','Library','Like','Linked','Lock',
+			'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',
+			'Mackey','Macros','Mark','Master','Max','Maxmem',
+			'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',
+			'Menus','Messages','Middle','Min','Minimize','Minus',
+			'Mod','Modal','Module','Mono43','Movers','Multilocks',
+			'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',
+			'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',
+			'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',
+			'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',
+			'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'
+			),
+		3 => array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',
+			'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',
+			'Nosave','Noshadow','Noshow','Nospace','Not','Notab',
+			'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',
+			'Nowrap','Nozoom','Npv','Null','Number','Objects',
+			'Odometer','Of','Off','Oleobjects','Only','Optimize',
+			'Or','Orientation','Output','Outshow','Overlay','Overwrite',
+			'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',
+			'Path','Pattern','Pause','Pdox','Pdsetup','Pen',
+			'Pfs','Pixels','Plain','Popups','Precision','Preference',
+			'Preview','Primary','Printer','Printquality','Procedures','Production',
+			'Program','Progwork','Project','Prompt','Query','Random',
+			'Range','Readborder','Readerror','Record','Recover','Redit',
+			'Reference','References','Relative','Remote','Reprocess','Resource',
+			'Rest','Restrict','Rgb','Right','Row','Rowset',
+			'Rpd','Runtime','Safety','Same','Sample','Say',
+			'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',
+			'Selection','Shadows','Shared','Sheet','Shell','Shift',
+			'Shutdown','Single','Some','Sortwork','Space','Sql',
+			'Standalone','Status','Std','Step','Sticky','String',
+			'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',
+			'System','T','Tab','Tables','Talk','Tedit',
+			'Textmerge','Time','Timeout','Titles','Tmpfiles','To',
+			'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',
+			'Typeahead','Udfparms','Union','Unique','Userid','Users',
+			'Values','Var','Verb','Vga25','Vga50','Views',
+			'Volume','Where','Windows','Wk1','Wk3','Wks',
+			'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',
+			'Xl5','Xl8','Xls','Y','Yresolution','Zoom',
+			'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',
+			'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',
+			'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',
+			'Build','CheckIn','CheckOut','Circle','Clear','ClearData',
+			'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',
+			'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',
+			'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',
+			'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',
+			'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',
+			'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',
+			'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',
+			'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',
+			'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',
+			'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',
+			'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',
+			'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',
+			'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',
+			'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',
+			'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',
+			'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',
+			'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',
+			'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',
+			'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',
+			'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',
+			'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',
+			'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',
+			'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',
+			'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',
+			'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',
+			'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',
+			'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',
+			'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',
+			'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',
+			'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',
+			'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',
+			'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',
+			'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',
+			'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',
+			'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',
+			'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',
+			'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',
+			'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',
+			'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',
+			'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',
+			'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',
+			'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',
+			'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',
+			'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',
+			'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',
+			'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',
+			'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',
+			'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',
+			'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'
+			),
+		4 => array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',
+			'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',
+			'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',
+			'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',
+			'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',
+			'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',
+			'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',
+			'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',
+			'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',
+			'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',
+			'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',
+			'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',
+			'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',
+			'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',
+			'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',
+			'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',
+			'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',
+			'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',
+			'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',
+			'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',
+			'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',
+			'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',
+			'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',
+			'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',
+			'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',
+			'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',
+			'ServerProject','ShowTips','ShowWindow','Sizable','Size<height>','Size<maxlength>',
+			'Size<width>','Skip','SkipForm','Sorted','SourceType','Sparse',
+			'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',
+			'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',
+			'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',
+			'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',
+			'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',
+			'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',
+			'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',
+			'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',
+			'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',
+			'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',
+			'CommandButton','CommandGroup','Container','Control','Cursor','Custom',
+			'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',
+			'General','Grid','Header','HyperLink','Image','Label',
+			'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',
+			'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',
+			'Relation','Session','Shape','Spinner','TextBox' ,'Toolbar'
+			),
+		),
+	'SYMBOLS' => array("!", "@", "$", "%", "(", ")", "-", "+", "=", "/", "{", "}", "[", "]", ":", ";", ",", "	", ".", "*", "&"),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => true,
+		1 => false,
+		2 => false,
+		3 => false,
+		4 => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			1 => 'color: blue;',
+			2 => 'color: blue;',
+			3 => 'color: blue;',
+			4 => 'color: blue;'
+			),
+		'COMMENTS' => array(
+			1 => 'color: green; font-style: italic;',
+			2 => 'color: green font-style: italic;',
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: blue;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			1 => 'color: #006600;'
+			),
+		'SYMBOLS' => array(
+			0 => 'color: blue;'
+			),
+		'REGEXPS' => array(
+			),
+		'SCRIPT' => array(
+			)
+		),
+	'OOLANG' => true,
+	'OBJECT_SPLITTERS' => array(
+		1 => '.'
+		),
+	'REGEXPS' => array(
+		),
+	'STRICT_MODE_APPLIES' => GESHI_NEVER,
+	'SCRIPT_DELIMITERS' => array(
+		),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi/xml.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi/xml.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi/xml.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,145 @@
+<?php
+/*************************************************************************************
+ * xml.php
+ * -------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/01
+ * Last Modified: $Date: 2005/01/29 01:48:39 $
+ *
+ * XML language file for GeSHi. Based on the idea/file by Christian Weiske
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check regexps work and correctly highlight XML stuff and nothing else
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+	'LANG_NAME' => 'HTML',
+	'COMMENT_SINGLE' => array(),
+	'COMMENT_MULTI' => array('<!--' => '-->'),
+	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+	'QUOTEMARKS' => array("'", '"'),
+	'ESCAPE_CHAR' => '\\',
+	'KEYWORDS' => array(
+		),
+	'SYMBOLS' => array(
+		),
+	'CASE_SENSITIVE' => array(
+		GESHI_COMMENTS => false,
+		),
+	'STYLES' => array(
+		'KEYWORDS' => array(
+			),
+		'COMMENTS' => array(
+			'MULTI' => 'color: #808080; font-style: italic;'
+			),
+		'ESCAPE_CHAR' => array(
+			0 => 'color: #000099; font-weight: bold;'
+			),
+		'BRACKETS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'STRINGS' => array(
+			0 => 'color: #ff0000;'
+			),
+		'NUMBERS' => array(
+			0 => 'color: #cc66cc;'
+			),
+		'METHODS' => array(
+			),
+		'SYMBOLS' => array(
+			0 => 'color: #66cc66;'
+			),
+		'SCRIPT' => array(
+			0 => 'color: #00bbdd;',
+			1 => 'color: #ddbb00;',
+			2 => 'color: #339933;',
+			3 => 'color: #009900;'
+			),
+		'REGEXPS' => array(
+			0 => 'color: #000066;',
+			1 => 'font-weight: bold; color: black;',
+			2 => 'font-weight: bold; color: black;',
+			)
+		),
+	'URLS' => array(
+		),
+	'OOLANG' => false,
+	'OBJECT_SPLITTERS' => array(
+		),
+	'REGEXPS' => array(
+		0 => array(
+			GESHI_SEARCH => '(((xml:)?[a-z\-]+))(=)',
+			GESHI_REPLACE => '\\1',
+			GESHI_MODIFIERS => 'i',
+			GESHI_BEFORE => '',
+			GESHI_AFTER => '\\4'
+			),
+		1 => array(
+			GESHI_SEARCH => '(&lt;/?[a-z0-9]*(&gt;)?)',
+			GESHI_REPLACE => '\\1',
+			GESHI_MODIFIERS => 'i',
+			GESHI_BEFORE => '',
+			GESHI_AFTER => ''
+			),
+		2 => array(
+			GESHI_SEARCH => '((/)?&gt;)',
+			GESHI_REPLACE => '\\1',
+			GESHI_MODIFIERS => 'i',
+			GESHI_BEFORE => '',
+			GESHI_AFTER => ''
+			)
+		),
+	'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+	'SCRIPT_DELIMITERS' => array(
+		0 => array(
+			'<!DOCTYPE' => '>'
+			),
+		1 => array(
+			'&' => ';'
+			),
+		2 => array(
+			'<![CDATA[' => ']]>'
+			),
+		3 => array(
+			'<' => '>'
+			)
+	),
+	'HIGHLIGHT_STRICT_BLOCK' => array(
+		0 => false,
+		1 => false,
+		2 => false,
+		3 => true
+		)
+);
+
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/inc/geshi.php
===================================================================
--- plugins/trunk/plogeshi/inc/geshi.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/inc/geshi.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,2604 @@
+<?php
+/*************************************************************************************
+ * geshi.php
+ * ---------
+ * Author: Nigel McNie (oracle.shinoda at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie
+ * Release Version: 1.0.6
+ * CVS Revision Version: $Revision: 1.4 $
+ * Date Started: 2004/05/20
+ * Last Modified: $Date: 2005/01/29 10:36:06 $
+ *
+ * The GeSHi class for Generic Syntax Highlighting. Please refer to the documentation
+ * at http://qbnz.com/highlighter/documentation.php for more information about how to
+ * use this class.
+ *
+ * For changes, release notes, TODOs etc, see the relevant files in the docs/ directory
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+
+//
+// GeSHi Constants
+// You should use these constant names in your programs instead of
+// their values - you never know when a value may change in a future
+// version
+//
+
+// For the future (though this may never be realised)
+define('GESHI_OUTPUT_HTML', 0);
+
+// Shouldn't be used by your program
+define('GESHI_COMMENTS', 0);
+
+// Error detection - use these to analyse faults
+define('GESHI_ERROR_NO_INPUT', 1);
+define('GESHI_ERROR_NO_SUCH_LANG', 2);
+define('GESHI_ERROR_FILE_NOT_READABLE', 3);
+// Human error messages - added in 1.0.2
+$_GESHI_ERRORS = array(
+	GESHI_ERROR_NO_INPUT => 'No source code inputted',
+	GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language {LANGUAGE} (using path {PATH})',
+	GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for load_from_file was not readable'
+);
+
+// Line numbers - use with enable_line_numbers()
+define('GESHI_NO_LINE_NUMBERS', 0);
+define('GESHI_NORMAL_LINE_NUMBERS', 1);
+define('GESHI_FANCY_LINE_NUMBERS', 2);
+
+// Strict mode - shouldn't be used by your scripts
+define('GESHI_NEVER', 0);
+define('GESHI_MAYBE', 1);
+define('GESHI_ALWAYS', 2);
+
+// Container HTML type - use these (added in 1.0.1)
+define('GESHI_HEADER_DIV', 1);
+define('GESHI_HEADER_PRE', 2);
+
+// Capatalisation constants - use these (added in 1.0.1)
+define('GESHI_CAPS_NO_CHANGE', 0);
+define('GESHI_CAPS_UPPER', 1);
+define('GESHI_CAPS_LOWER', 2);
+
+// Link style constants - use these (added in 1.0.2)
+define('GESHI_LINK', 0);
+define('GESHI_HOVER', 1);
+define('GESHI_ACTIVE', 2);
+define('GESHI_VISITED', 3);
+
+// Important string starter/finisher - use these (added in 1.0.2).
+// Note that if you change these, they should be as-is: i.e., don't
+// write them as if they had been run through @htmlentities()
+define('GESHI_START_IMPORTANT', '<BEGIN GeSHi>');
+define('GESHI_END_IMPORTANT', '<END GeSHi>');
+
+// Advanced regexp handling - don't use these (added in 1.0.2)
+define('GESHI_SEARCH', 0);
+define('GESHI_REPLACE', 1);
+define('GESHI_MODIFIERS', 2);
+define('GESHI_BEFORE', 3);
+define('GESHI_AFTER', 4);
+
+// Begin Class GeSHi
+class GeSHi
+{
+	//
+	// Data Fields
+	//
+
+	// Basic fields
+	var $source = '';                     // The source code to highlight
+	var $language = '';                   // The language to use when highlighting
+	var $language_data = array();         // The data for the language used
+	var $language_path = 'geshi/';        // The path to the language files
+	var $error = false;                   // The error message associated with an error
+	var $strict_mode = false;             // Whether highlighting is strict or not
+	var $use_classes = false;             // Whether to use classes
+	var $header_type = GESHI_HEADER_PRE;  // The type of header to use
+	var $lexic_permissions = array();     // Array of permissions for which lexics should be highlighted
+	// Added in 1.0.2 basic fields
+	var $time = 0;                        // The time it took to parse the code
+	var $header_content = '';             // The content of the header block
+	var $footer_content = '';             // The content of the footer block
+	var $header_content_style = '';       // The style of the header block
+	var $footer_content_style = '';       // The style of the footer block
+	var $link_styles = array();           // The styles for hyperlinks in the code
+	var $enable_important_blocks = true;  // Whether important blocks should be recognised or not
+	var $important_styles = 'font-weight: bold; color: red;'; // Styles for important parts of the code
+	var $add_ids = false;                 // Whether css IDs should be added to the code
+	var $highlight_extra_lines = array(); // Lines that should be highlighted extra
+	var $highlight_extra_lines_style = 'color: #cc0; background-color: #ffc;';// Styles of extra-highlighted lines
+	var $line_numbers_start = 1;          // Number at which line numbers should start at
+
+	// Style fields
+	var $overall_style = '';              // The overall style for this code block
+	// The style for the actual code
+	var $code_style = 'font-family: \'Courier New\', Courier, monospace; font-weight: normal;';
+	var $overall_class = '';              // The overall class for this code block
+	var $overall_id = '';                 // The overall id for this code block
+	// Line number styles
+	var $line_style1 = 'font-family: \'Courier New\', Courier, monospace; color: black; font-weight: normal; font-style: normal;';
+	var $line_style2 = 'font-weight: bold;';
+	var $line_numbers = GESHI_NO_LINE_NUMBERS; // Flag for how line numbers are displayed
+	var $line_nth_row = 0;                // The "nth" value for fancy line highlighting
+
+	// Misc
+	var $tab_width = 8;                   // A value for the size of tab stops.
+	var $max_tabs = 20;                   // Maximum number of spaces per tab
+	var $min_tabs = 0;                    // Minimum  "   "    "    "    "
+	var $link_target = '';                // default target for keyword links
+	var $encoding = 'ISO-8859-1';         // The encoding to use for @htmlentities() calls
+
+	// Deprecated/unused
+	var $output_format = GESHI_OUTPUT_HTML;
+
+
+	/**
+	 * constructor: GeSHi
+	 * ------------------
+	 * Creates a new GeSHi object, with source and language
+	 */
+	function GeSHi ($source, $language, $path = 'geshi/')
+	{
+		$this->source = $source;
+		// Security, just in case :)
+		$language = preg_replace('#[^a-zA-Z0-9\-\_]#', '', $language);
+		$this->language = strtolower($language);
+		$this->language_path = ( substr($path, strlen($path) - 1, 1) == '/' ) ? $path : $path . '/';
+		$this->load_language();
+	}
+
+
+	//
+	// Error methods
+	//
+
+	/**
+	 * method: error
+	 * -------------
+	 * Returns an error message associated with the last GeSHi operation,
+	 * or false if no error has occured
+	 */
+	function error()
+	{
+		global $_GESHI_ERRORS;
+		if ( $this->error != 0 )
+		{
+			$msg = $_GESHI_ERRORS[$this->error];
+			$debug_tpl_vars = array(
+				'{LANGUAGE}' => $this->language,
+				'{PATH}' => $this->language_path
+			);
+			foreach ( $debug_tpl_vars as $tpl => $var )
+			{
+				$msg = str_replace($tpl, $var, $msg);
+			}
+			return "<br /><strong>GeSHi Error:</strong> $msg (code $this->error)<br />";
+		}
+		return false;
+	}
+
+
+	//
+	// Getters
+	//
+
+	/**
+	 * get_language_name()
+	 * ---------------
+	 * Gets a human-readable language name (thanks to Simon Patterson
+	 * for the idea :))
+	 */
+	function get_language_name()
+	{
+		if ( $this->error == GESHI_ERROR_NO_SUCH_LANG )
+		{
+			return $this->language_data['LANG_NAME'] . ' (Unknown Language)';
+		}
+		return $this->language_data['LANG_NAME'];
+	}
+
+
+	//
+	// Setters
+	//
+
+	/**
+	 * method: set_source
+	 * ------------------
+	 * Sets the source code for this object
+	 */
+	function set_source ( $source )
+	{
+		$this->source = $source;
+	}
+
+
+	/**
+	 * method: set_language
+	 * --------------------
+	 * Sets the language for this object
+	 */
+	function set_language ( $language )
+	{
+		$language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language);
+		$this->language = strtolower($language);
+		// Load the language for parsing
+		$this->load_language();
+	}
+
+
+	/**
+	 * method: set_language_path
+	 * -------------------------
+	 * Sets the path to the directory containing the language files. NOTE
+	 * that this path is relative to the directory of the script that included
+	 * geshi.php, NOT geshi.php itself.
+	 */
+	function set_language_path ( $path )
+	{
+		$this->language_path = ( substr($path, strlen($path) - 1, 1) == '/' ) ? $path : $path . '/';
+	}
+
+
+	/**
+	 * method: set_header_type
+	 * -----------------------
+	 * Sets the type of header to be used. If GESHI_HEADER_DIV is used,
+	 * the code is surrounded in a <div>. This means more source code but
+	 * more control over tab width and line-wrapping. GESHI_HEADER_PRE
+	 * means that a <pre> is used - less source, but less control. Default
+	 * is GESHI_HEADER_PRE
+	 */
+	function set_header_type ( $type )
+	{
+		$this->header_type = $type;
+	}
+
+
+	/**
+	 * method: set_overall_style
+	 * -------------------------
+	 * Sets the styles for the code that will be outputted
+	 * when this object is parsed. The style should be a
+	 * string of valid stylesheet declarations
+	 */
+	function set_overall_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->overall_style .= $style;
+		}
+		else
+		{
+			$this->overall_style = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_overall_class
+	 * -------------------------
+	 * Sets the overall classname for this block of code. This
+	 * class can then be used in a stylesheet to style this object's
+	 * output
+	 */
+	function set_overall_class ( $class )
+	{
+		$this->overall_class = $class;
+	}
+
+
+	/**
+	 * method: set_overall_id
+	 * ----------------------
+	 * Sets the overall id for this block of code. This id can then
+	 * be used in a stylesheet to style this object's output
+	 */
+	function set_overall_id ( $id )
+	{
+		$this->overall_id = $id;
+	}
+
+
+	/**
+	 * method: enable_classes
+	 * ----------------------
+	 * Sets whether CSS classes should be used to highlight the source. Default
+	 * is off, calling this method with no arguments will turn it on
+	 */
+	function enable_classes ( $flag = true )
+	{
+		$this->use_classes = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_code_style
+	 * ----------------------
+	 * Sets the style for the actual code. This should be a string
+	 * containing valid stylesheet declarations. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 *
+	 * NOTE: Use this method to override any style changes you made to
+	 * the line numbers if you are using line numbers, else the line of
+	 * code will have the same style as the line number! Consult the
+	 * GeSHi documentation for more information about this.
+	 */
+	function set_code_style ( $style, $preserve_defaults )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->code_style .= $style;
+		}
+		else
+		{
+			$this->code_style = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_line_style
+	 * ----------------------
+	 * Sets the styles for the line numbers. This should be a string
+	 * containing valid stylesheet declarations. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_line_style ( $style1, $style2 = '', $preserve_defaults = false )
+	{
+		if ( is_bool($style2) )
+		{
+			$preserve_defaults = $style2;
+			$style2 = '';
+		}
+		if ( $preserve_defaults )
+		{
+			$this->line_style1 .= $style1;
+			$this->line_style2 .= $style2;
+		}
+		else
+		{
+			$this->line_style1 = $style1;
+			$this->line_style2 = $style2;
+		}
+	}
+
+
+	/**
+	 * method: enable_line_numbers
+	 * ---------------------------
+	 * Sets whether line numbers should be displayed. GESHI_NO_LINE_NUMBERS = not displayed,
+	 * GESHI_NORMAL_LINE_NUMBERS = displayed, GESHI_FANCY_LINE_NUMBERS = every nth line a
+	 * different class. Default is for no line numbers to be used
+	 */
+	function enable_line_numbers ( $flag, $nth_row = 5 )
+	{
+		$this->line_numbers = $flag;
+		$this->line_nth_row = $nth_row;
+	}
+
+
+	/**
+	 * method: set_keyword_group_style
+	 * -------------------------------
+	 * Sets the style for a keyword group. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_keyword_group_style ( $key, $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['KEYWORDS'][$key] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['KEYWORDS'][$key] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_keyword_group_highlighting
+	 * --------------------------------------
+	 * Turns highlighting on/off for a keyword group
+	 */
+	function set_keyword_group_highlighting ( $key, $flag = true )
+	{
+		$this->lexic_permissions['KEYWORDS'][$key] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_comments_style
+	 * --------------------------
+	 * Sets the styles for comment groups.  If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_comments_style ( $key, $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['COMMENTS'][$key] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['COMMENTS'][$key] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_comments_highlighting
+	 * ---------------------------------
+	 * Turns highlighting on/off for comment groups
+	 */
+	function set_comments_highlighting ( $key, $flag = true )
+	{
+		$this->lexic_permissions['COMMENTS'][$key] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_escape_characters_style
+	 * -----------------------------------
+	 * Sets the styles for escaped characters. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_escape_characters_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['ESCAPE_CHAR'][0] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['ESCAPE_CHAR'][0] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_escape_characters_highlighting
+	 * ------------------------------------------
+	 * Turns highlighting on/off for escaped characters
+	 */
+	function set_escape_characters_highlighting ( $flag = true )
+	{
+		$this->lexic_permissions['ESCAPE_CHAR'] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_brackets_style
+	 * --------------------------
+	 * Sets the styles for brackets. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 *
+	 * This method is DEPRECATED: use set_symbols_style instead.
+	 * This method will be removed in 1.2.X
+	 */
+	function set_brackets_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['BRACKETS'][0] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['BRACKETS'][0] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_brackets_highlighting
+	 * ---------------------------------
+	 * Turns highlighting on/off for brackets
+	 *
+	 * This method is DEPRECATED: use set_symbols_highlighting instead.
+	 * This method will be remove in 1.2.X
+	 */
+	function set_brackets_highlighting ( $flag )
+	{
+		$this->lexic_permissions['BRACKETS'] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_symbols_style
+	 * --------------------------
+	 * Sets the styles for symbols. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_symbols_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['SYMBOLS'][0] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['SYMBOLS'][0] = $style;
+		}
+		// For backward compatibility
+		$this->set_brackets_style ( $style, $preserve_defaults );
+	}
+
+
+	/**
+	 * method: set_symbols_highlighting
+	 * ---------------------------------
+	 * Turns highlighting on/off for symbols
+	 */
+	function set_symbols_highlighting ( $flag )
+	{
+		$this->lexic_permissions['SYMBOLS'] = ( $flag ) ? true : false;
+		// For backward compatibility
+		$this->set_brackets_highlighting ( $flag );
+	}
+
+
+	/**
+	 * method: set_strings_style
+	 * -------------------------
+	 * Sets the styles for strings. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_strings_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['STRINGS'][0] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['STRINGS'][0] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_strings_highlighting
+	 * --------------------------------
+	 * Turns highlighting on/off for strings
+	 */
+	function set_strings_highlighting ( $flag )
+	{
+		$this->lexic_permissions['STRINGS'] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_numbers_style
+	 * -------------------------
+	 * Sets the styles for numbers. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_numbers_style ( $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['NUMBERS'][0] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['NUMBERS'][0] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_numbers_highlighting
+	 * --------------------------------
+	 * Turns highlighting on/off for numbers
+	 */
+	function set_numbers_highlighting ( $flag )
+	{
+		$this->lexic_permissions['NUMBERS'] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_methods_style
+	 * -------------------------
+	 * Sets the styles for methods. $key is a number that references the
+	 * appropriate "object splitter" - see the language file for the language
+	 * you are highlighting to get this number. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_methods_style ( $key, $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['METHODS'][$key] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['METHODS'][$key] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_methods_highlighting
+	 * --------------------------------
+	 * Turns highlighting on/off for methods
+	 */
+	function set_methods_highlighting ( $flag )
+	{
+		$this->lexic_permissions['METHODS'] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_regexps_style
+	 * -------------------------
+	 * Sets the styles for regexps. If $preserve_defaults is
+	 * true, then styles are merged with the default styles, with the
+	 * user defined styles having priority
+	 */
+	function set_regexps_style ( $key, $style, $preserve_defaults = false )
+	{
+		if ( $preserve_defaults )
+		{
+			$this->language_data['STYLES']['REGEXPS'][$key] .= $style;
+		}
+		else
+		{
+			$this->language_data['STYLES']['REGEXPS'][$key] = $style;
+		}
+	}
+
+
+	/**
+	 * method: set_regexps_highlighting
+	 * --------------------------------
+	 * Turns highlighting on/off for regexps
+	 */
+	function set_regexps_highlighting ( $key, $flag )
+	{
+		$this->lexic_permissions['REGEXPS'][$key] = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_case_sensitivity
+	 * ----------------------------
+	 * Sets whether a set of keywords are checked for in a case sensitive manner
+	 */
+	function set_case_sensitivity ( $key, $case )
+	{
+		$this->language_data['CASE_SENSITIVE'][$key] = ( $case ) ? true : false;
+	}
+
+
+	/**
+	 * method: set_case_keywords
+	 * -------------------------
+	 * Sets the case that keywords should use when found. Use the constants:
+	 *   GESHI_CAPS_NO_CHANGE: leave keywords as-is
+	 *   GESHI_CAPS_UPPER: convert all keywords to uppercase where found
+	 *   GESHI_CAPS_LOWER: convert all keywords to lowercase where found
+	 * Method added in 1.0.1
+	 */
+	function set_case_keywords ( $case )
+	{
+		$this->language_data['CASE_KEYWORDS'] = $case;
+	}
+
+
+	/**
+	 * method: set_tab_width
+	 * ---------------------
+	 * Sets how many spaces a tab is substituted for
+	 * This method will probably be re-engineered later to allow customisability
+	 * in the maximum and minimum number of tabs without mutulating data fields.
+	 */
+	function set_tab_width ( $width )
+	{
+		if ( $width > $this->max_tabs ) $width = $this->max_tabs;
+		if ( $width < $this->min_tabs ) $width = $this->min_tabs;
+		$this->tab_width = $width;
+	}
+
+
+	/**
+	 * method: enable_strict_mode
+	 * --------------------------
+	 * Enables/disables strict highlighting. Default is off, calling this
+	 * method without parameters will turn it on. See documentation
+	 * for more details on strict mode and where to use it
+	 */
+	function enable_strict_mode ( $mode = true )
+	{
+		$this->strict_mode = ( $mode ) ? true : false;
+		// Turn on strict mode no matter what if language should always
+		// be in strict mode
+		if ( $this->language_data['STRICT_MODE_APPLIES'] == GESHI_ALWAYS )
+		{
+			$this->strict_mode = true;
+		}
+		// Turn off strict mode no matter what if language should never
+		// be in strict mode
+		elseif ( $this->language_data['STRICT_MODE_APPLIES'] == GESHI_NEVER )
+		{
+			$this->strict_mode = false;
+		}
+	}
+
+
+	/**
+	 * method: disable_highlighting
+	 * ----------------------------
+	 * Disables all highlighting
+	 */
+	function disable_highlighting ()
+	{
+		foreach ( $this->language_data['KEYWORDS'] as $key => $words )
+		{
+			$this->lexic_permissions['KEYWORDS'][$key] = false;
+		}
+		foreach ( $this->language_data['COMMENT_SINGLE'] as $key => $comment )
+		{
+			$this->lexic_permissions['COMMENTS'][$key] = false;
+		}
+		// Multiline comments
+		$this->lexic_permissions['COMMENTS']['MULTI'] = false;
+		// Escape characters
+		$this->lexic_permissions['ESCAPE_CHAR'] = false;
+		// Brackets
+		$this->lexic_permissions['BRACKETS'] = false;
+		// Strings
+		$this->lexic_permissions['STRINGS'] = false;
+		// Numbers
+		$this->lexic_permissions['NUMBERS'] = false;
+		// Methods
+		$this->lexic_permissions['METHODS'] = false;
+		// Symbols
+		$this->lexic_permissions['SYMBOLS'] = false;
+		// Script
+		$this->lexic_permissions['SCRIPT'] = false;
+		// Regexps
+		foreach ( $this->language_data['REGEXPS'] as $key => $regexp )
+		{
+			$this->lexic_permissions['REGEXPS'][$key] = false;
+		}
+		// Context blocks
+		$this->enable_important_blocks = false;
+	}
+
+
+	/**
+	 * method: enable_highlighting
+	 * ---------------------------
+	 * Enables all highlighting
+	 */
+	function enable_highlighting ()
+	{
+		foreach ( $this->language_data['KEYWORDS'] as $key => $words )
+		{
+			$this->lexic_permissions['KEYWORDS'][$key] = true;
+		}
+		foreach ( $this->language_data['COMMENT_SINGLE'] as $key => $comment )
+		{
+			$this->lexic_permissions['COMMENTS'][$key] = true;
+		}
+		// Multiline comments
+		$this->lexic_permissions['COMMENTS']['MULTI'] = true;
+		// Escape characters
+		$this->lexic_permissions['ESCAPE_CHAR'] = true;
+		// Brackets
+		$this->lexic_permissions['BRACKETS'] = true;
+		// Strings
+		$this->lexic_permissions['STRINGS'] = true;
+		// Numbers
+		$this->lexic_permissions['NUMBERS'] = true;
+		// Methods
+		$this->lexic_permissions['METHODS'] = true;
+		// Symbols
+		$this->lexic_permissions['SYMBOLS'] = true;
+		// Script
+		$this->lexic_permissions['SCRIPT'] = true;
+		// Regexps
+		foreach ( $this->language_data['REGEXPS'] as $key => $regexp )
+		{
+			$this->lexic_permissions['REGEXPS'][$key] = true;
+		}
+		// Context blocks
+		$this->enable_important_blocks = true;
+	}
+
+
+	/**
+	 * method: get_language_name_from_extension
+	 * ----------------------------------------
+	 * Given a file extension, this method returns either a valid geshi language
+	 * name, or the empty string if it couldn't be found
+	 */
+	function get_language_name_from_extension ( $extension, $lookup = array() )
+	{
+		if ( !$lookup )
+		{
+			$lookup = array(
+				'actionscript' => array('as'),
+				'ada' => array('a', 'ada', 'adb', 'ads'),
+				'apache' => array('conf'),
+				'asm' => array('ash', 'asm'),
+				'asp' => array('asp'),
+				'bash' => array('sh'),
+				'c' => array('c'),
+				'c_mac' => array('c'),
+				'caddcl' => array(),
+				'cadlisp' => array(),
+				'cpp' => array('cpp'),
+				'csharp' => array(),
+				'css' => array('css'),
+				'delphi' => array('dpk'),
+				'html4strict' => array('html', 'htm'),
+				'java' => array('java'),
+				'javascript' => array('js'),
+				'lisp' => array('lisp'),
+				'lua' => array('lua'),
+				'mpasm' => array(),
+				'nsis' => array(),
+				'objc' => array(),
+				'oobas' => array(),
+				'oracle8' => array(),
+				'pascal' => array('pas'),
+				'perl' => array('pl', 'pm'),
+				'php' => array('php', 'php5', 'phtml', 'phps'),
+				'python' => array('py'),
+				'qbasic' => array('bi'),
+				'smarty' => array(),
+				'vb' => array('bas'),
+				'vbnet' => array(),
+				'visualfoxpro' => array(),
+				'xml' => array('xml')
+			);
+		}
+
+		foreach ( $lookup as $lang => $extensions )
+		{
+			foreach ( $extensions as $ext )
+			{
+				if ( $ext == $extension )
+				{
+					return $lang;
+				}
+			}
+		}
+		return '';
+	}
+
+	/**
+	 * Method: load_from_file
+	 * ----------------------
+	 * Given a file name, this method loads its contents in, and attempts
+	 * to set the language automatically. An optional lookup table can be
+	 * passed for looking up the language name.
+	 *
+	 * The language table is in the form
+	 * <pre>array(
+	 *   'lang_name' => array('extension', 'extension', ...),
+	 *   'lang_name' ...
+	 * );</pre>
+	 */
+	function load_from_file ( $file_name, $lookup = array() )
+	{
+		if ( is_readable($file_name) )
+		{
+			$this->set_source(implode('', file($file_name)));
+			$this->set_language($this->get_language_name_from_extension(substr(strrchr($file_name, '.'), 1), $lookup));
+		}
+		else
+		{
+			$this->error = GESHI_ERROR_FILE_NOT_READABLE;
+		}
+	}
+
+	/**
+	 * method: add_keyword
+	 * -------------------
+	 * Adds a keyword to a keyword group for highlighting
+	 */
+	function add_keyword( $key, $word )
+	{
+		$this->language_data['KEYWORDS'][$key][] = $word;
+	}
+
+
+	/**
+	 * method: remove_keyword
+	 * ----------------------
+	 * Removes a keyword from a keyword group
+	 */
+	function remove_keyword ( $key, $word )
+	{
+		$this->language_data['KEYWORDS'][$key] = array_diff($this->language_data['KEYWORDS'][$key], array($word));
+	}
+
+
+	/**
+	 * method: add_keyword_group
+	 * -------------------------
+	 * Creates a new keyword group
+	 */
+	function add_keyword_group ( $key, $styles, $case_sensitive = true, $words = array() )
+	{
+		if ( !is_array($words) )
+		{
+			$words = array($words);
+		}
+		$this->language_data['KEYWORDS'][$key] = $words;
+		$this->lexic_permissions['KEYWORDS'][$key] = true;
+		$this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive;
+		$this->language_data['STYLES']['KEYWORDS'][$key] = $styles;
+	}
+
+
+	/**
+	 * method: remove_keyword_group
+	 * ----------------------------
+	 * Removes a keyword group
+	 */
+	function remove_keyword_group ( $key )
+	{
+		unset($this->language_data['KEYWORDS'][$key]);
+		unset($this->lexic_permissions['KEYWORDS'][$key]);
+		unset($this->language_data['CASE_SENSITIVE'][$key]);
+		unset($this->language_data['STYLES']['KEYWORDS'][$key]);
+	}
+
+
+	/**
+	 * method: set_header_content
+	 * --------------------------
+	 * Sets the content of the header block
+	 */
+	function set_header_content ( $content )
+	{
+		$this->header_content = $content;
+	}
+
+
+	/**
+	 * method: set_footer_content
+	 * --------------------------
+	 * Sets the content of the footer block
+	 */
+	function set_footer_content ( $content )
+	{
+		$this->footer_content = $content;
+	}
+
+
+	/**
+	 * method: set_header_content_style
+	 * --------------------------------
+	 * Sets the style for the header content
+	 */
+	function set_header_content_style ( $style )
+	{
+		$this->header_content_style = $style;
+	}
+
+
+	/**
+	 * method: set_footer_content_style
+	 * --------------------------------
+	 * Sets the style for the footer content
+	 */
+	function set_footer_content_style ( $style )
+	{
+		$this->footer_content_style = $style;
+	}
+
+
+	/**
+	 * method: set_url_for_keyword_group
+	 * ---------------------------------
+	 * Sets the base URL to be used for keywords
+	 */
+	function set_url_for_keyword_group ( $group, $url )
+	{
+		$this->language_data['URLS'][$group] = $url;
+	}
+
+
+	/**
+	 * method: set_link_styles
+	 * -----------------------
+	 * Sets styles for links in code
+	 */
+	function set_link_styles ( $type, $styles )
+	{
+		$this->link_styles[$type] = $styles;
+	}
+
+
+	/**
+	* method: set_link_target
+	* -----------------------
+	* Sets the target for links in code
+	*/
+	function set_link_target ( $target )
+	{
+		if ( empty( $target ) )
+		{
+			$this->link_target = '';
+		}
+		else
+		{
+			$this->link_target = ' target="' . $target . '" ';
+		}
+	}
+
+
+	/**
+	 * method: set_important_styles
+	 * ----------------------------
+	 * Sets styles for important parts of the code
+	 */
+	function set_important_styles ( $styles )
+	{
+		$this->important_styles = $styles;
+	}
+
+
+	/**
+	 * method: enable_important_blocks
+	 * -------------------------------
+	 * Sets whether context-important blocks are highlighted
+	 */
+	function enable_important_blocks ( $flag )
+	{
+		$this->enable_important_blocks = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: enable_ids
+	 * ------------------
+	 * Whether CSS IDs should be added to each line
+	 */
+	function enable_ids ( $flag = true )
+	{
+		$this->add_ids = ( $flag ) ? true : false;
+	}
+
+
+	/**
+	 * method: highlight_lines_extra
+	 * -----------------------------
+	 * Specifies which lines to highlight extra
+	 */
+	function highlight_lines_extra ( $lines )
+	{
+		if ( is_array($lines) )
+		{
+			foreach ( $lines as $line )
+			{
+				$this->highlight_extra_lines[intval($line)] = intval($line);
+			}
+		}
+		else
+		{
+			$this->highlight_extra_lines[intval($lines)] = intval($lines);
+		}
+	}
+
+
+	/**
+	 * method: set_highlight_lines_extra_style
+	 * ---------------------------------------
+	 * Sets the style for extra-highlighted lines
+	 */
+	function set_highlight_lines_extra_style ( $styles )
+	{
+		$this->highlight_extra_lines_style = $styles;
+	}
+
+
+	/**
+	 * method: start_line_numbers_at
+	 * -----------------------------
+	 * Sets what number line numbers should start at. Should
+	 * be a positive integer, and will be converted to one.
+	 */
+	function start_line_numbers_at ( $number )
+	{
+		$this->line_numbers_start = abs(intval($number));
+	}
+
+
+	/**
+	 * method: set_encoding
+	 * --------------------
+	 * Sets the encoding used for @htmlentities(), for international
+	 * support.
+	 */
+	function set_encoding ( $encoding )
+	{
+		$this->encoding = $encoding;
+	}
+
+
+	/**
+	 * method: parse_code()
+	 * --------------------
+	 * Returns the code in $this->source, highlighted and surrounded by the
+	 * nessecary HTML. This should only be called ONCE, cos it's SLOW!
+	 * If you want to highlight the same source multiple times, you're better
+	 * off doing a whole lot of str_replaces to replace the <<span>>s
+	 */
+	function parse_code()
+	{
+		// Start the timer
+		$start_time = microtime();
+
+		// Firstly, if there is an error, we won't highlight
+		// FUTURE: maybe an option to try to force highlighting anyway?
+		if ( $this->error )
+		{
+			$result = $this->header();
+			if ( $this->header_type != GESHI_HEADER_PRE )
+			{
+				$result .= $this->indent(@htmlentities($this->source, ENT_COMPAT, $this->encoding));
+			}
+			else
+			{
+				$result .= @htmlentities($this->source, ENT_COMPAT, $this->encoding);
+			}
+			// Stop Timing
+			$this->set_time($start_time, microtime());
+			return $result . $this->footer();
+		}
+
+		// Add spaces for regular expression matching and line numbers
+		$code = ' ' . $this->source . ' ';
+		// Replace all newlines to a common form.
+		$code = str_replace("\r\n", "\n", $code);
+		$code = str_replace("\r", "\n", $code);
+
+		// Initialise various stuff
+		$length = strlen($code);
+		$STRING_OPEN = '';
+		$CLOSE_STRING = false;
+		$ESCAPE_CHAR_OPEN = false;
+		$COMMENT_MATCHED = false;
+		// Turn highlighting on if strict mode doesn't apply to this language
+		$HIGHLIGHTING_ON = ( !$this->strict_mode ) ? true : '';
+		// Whether to highlight inside a block of code
+		$HIGHLIGHT_INSIDE_STRICT = false;
+		$stuff_to_parse = '';
+		$result = '';
+
+		// "Important" selections are handled like multiline comments
+		if ( $this->enable_important_blocks )
+		{
+			$this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = GESHI_END_IMPORTANT;
+		}
+
+
+		if ( $this->strict_mode )
+		{
+			// Break the source into bits. Each bit will be a portion of the code
+			// within script delimiters - for example, HTML between < and >
+			$parts = array(0 => array(0 => ''));
+			$k = 0;
+			for ( $i = 0; $i < $length; $i++ )
+			{
+				$char = substr($code, $i, 1);
+				if ( !$HIGHLIGHTING_ON )
+				{
+					foreach ( $this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters )
+					{
+						foreach ( $delimiters as $open => $close )
+						{
+							// Get the next little bit for this opening string
+							$check = substr($code, $i, strlen($open));
+							// If it matches...
+							if ( $check == $open )
+							{
+								// We start a new block with the highlightable
+								// code in it
+								$HIGHLIGHTING_ON = $open;
+								$i += strlen($open) - 1;
+								++$k;
+								$char = $open;
+								$parts[$k][0] = $char;
+
+								// No point going around again...
+								break(2);
+							}
+						}
+					}
+				}
+				else
+				{
+					foreach ( $this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters )
+					{
+						foreach ( $delimiters as $open => $close )
+						{
+							if ( $open == $HIGHLIGHTING_ON )
+							{
+								// Found the closing tag
+								break(2);
+							}
+						}
+					}
+					// We check code from our current position BACKWARDS. This is so
+					// the ending string for highlighting can be included in the block
+					$check = substr($code, $i - strlen($close) + 1, strlen($close));
+					if ( $check == $close )
+					{
+						$HIGHLIGHTING_ON = '';
+						// Add the string to the rest of the string for this part
+						$parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
+						++$k;
+						$parts[$k][0] = '';
+						$char = '';
+					}
+				}
+				$parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
+			}
+			$HIGHLIGHTING_ON = '';
+		}
+		else
+		{
+			// Not strict mode - simply dump the source into
+			// the array at index 1 (the first highlightable block)
+			$parts = array(
+				1 => array(
+					0 => '',
+					1 => $code
+				)
+			);
+		}
+
+		// Now we go through each part. We know that even-indexed parts are
+		// code that shouldn't be highlighted, and odd-indexed parts should
+		// be highlighted
+		foreach ( $parts as $key => $data )
+		{
+			$part = $data[1];
+			// If this block should be highlighted...
+			if ( $key % 2 )
+			{
+				if ( $this->strict_mode )
+				{
+					// Find the class key for this block of code
+					foreach ( $this->language_data['SCRIPT_DELIMITERS'] as $script_key => $script_data )
+					{
+						foreach ( $script_data as $open => $close )
+						{
+							if ( $data[0] == $open )
+							{
+								break(2);
+							}
+						}
+					}
+
+					if ( $this->language_data['STYLES']['SCRIPT'][$script_key] != '' && $this->lexic_permissions['SCRIPT'] )
+					{
+						// Add a span element around the source to
+						// highlight the overall source block
+						if ( !$this->use_classes && $this->language_data['STYLES']['SCRIPT'][$script_key] != '' )
+						{
+							$attributes = ' style="' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '"';
+						}
+						else
+						{
+							$attributes = ' class="sc' . $script_key . '"';
+						}
+						$result .= "<span$attributes>";
+					}
+				}
+
+				if ( !$this->strict_mode || $this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key] )
+				{
+					// Now, highlight the code in this block. This code
+					// is really the engine of GeSHi (along with the method
+					// parse_non_string_part).
+					$length = strlen($part);
+					for ( $i = 0; $i < $length; $i++ )
+					{
+						// Get the next char
+						$char = substr($part, $i, 1);
+						// Is this char the newline and line numbers being used?
+						if ( ($this->line_numbers != GESHI_NO_LINE_NUMBERS || count($this->highlight_extra_lines) > 0) && $char == "\n" )
+						{
+							// If so, is there a string open? If there is, we should end it before
+							// the newline and begin it again (so when <li>s are put in the source
+							// remains XHTML compliant)
+							// NOTE TO SELF: This opens up possibility of config files specifying
+							// that languages can/cannot have multiline strings???
+							if ( $STRING_OPEN )
+							{
+								if ( !$this->use_classes )
+								{
+									$attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+								}
+								else
+								{
+									$attributes = ' class="st0"';
+								}
+								$char = '</span>' . $char . "<span$attributes>";
+							}
+						}
+						// Is this a match of a string delimiter?
+						elseif ( $char == $STRING_OPEN )
+						{
+							if ( ($this->lexic_permissions['ESCAPE_CHAR'] && $ESCAPE_CHAR_OPEN) || ($this->lexic_permissions['STRINGS'] && !$ESCAPE_CHAR_OPEN) )
+							{
+								$char .= '</span>';
+							}
+							if ( !$ESCAPE_CHAR_OPEN )
+							{
+								$STRING_OPEN = '';
+								$CLOSE_STRING = true;
+							}
+							$ESCAPE_CHAR_OPEN = false;
+						}
+						// Is this the start of a new string?
+						elseif ( in_array( $char, $this->language_data['QUOTEMARKS'] ) && ($STRING_OPEN == '') && $this->lexic_permissions['STRINGS'] )
+						{
+							$STRING_OPEN = $char;
+							if ( !$this->use_classes )
+							{
+								$attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+							}
+							else
+							{
+								$attributes = ' class="st0"';
+							}
+							$char = "<span$attributes>" . $char;
+
+							$result .= $this->parse_non_string_part( $stuff_to_parse );
+							$stuff_to_parse = '';
+						}
+						// Is this an escape char?
+						elseif ( ($char == $this->language_data['ESCAPE_CHAR']) && ($STRING_OPEN != '') )
+						{
+							if ( !$ESCAPE_CHAR_OPEN )
+							{
+								$ESCAPE_CHAR_OPEN = true;
+								if ( $this->lexic_permissions['ESCAPE_CHAR'] )
+								{
+									if ( !$this->use_classes )
+									{
+										$attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . '"';
+									}
+									else
+									{
+										$attributes = ' class="es0"';
+									}
+									$char = "<span$attributes>" . $char;
+								}
+							}
+							else
+							{
+								$ESCAPE_CHAR_OPEN = false;
+								if ( $this->lexic_permissions['ESCAPE_CHAR'] )
+								{
+									$char .= '</span>';
+								}
+							}
+						}
+						elseif ( $ESCAPE_CHAR_OPEN )
+						{
+							if ( $this->lexic_permissions['ESCAPE_CHAR'] )
+							{
+								$char .= '</span>';
+							}
+							$ESCAPE_CHAR_OPEN = false;
+							$test_str = $char;
+						}
+						elseif ( $STRING_OPEN == '' )
+						{
+							// Is this a multiline comment?
+							foreach ( $this->language_data['COMMENT_MULTI'] as $open => $close )
+							{
+								$com_len = strlen($open);
+								$test_str = substr( $part, $i, $com_len );
+								$test_str_match = $test_str;
+								if ( $open == $test_str )
+								{
+									$COMMENT_MATCHED = true;
+									if ( $this->lexic_permissions['COMMENTS']['MULTI'] || $test_str == GESHI_START_IMPORTANT )
+									{
+										if ( $test_str != GESHI_START_IMPORTANT )
+										{
+											if ( !$this->use_classes )
+											{
+												$attributes = ' style="' . $this->language_data['STYLES']['COMMENTS']['MULTI'] . '"';
+											}
+											else
+											{
+												$attributes = ' class="coMULTI"';
+											}
+											$test_str = "<span$attributes>" . @htmlentities($test_str, ENT_COMPAT, $this->encoding);
+										}
+										else
+										{
+											if ( !$this->use_classes )
+											{
+												$attributes = ' style="' . $this->important_styles . '"';
+											}
+											else
+											{
+												$attributes = ' class="imp"';
+											}
+											// We don't include the start of the comment if it's an
+											// "important" part
+											$test_str = "<span$attributes>";
+										}
+									}
+									else
+									{
+										$test_str = @htmlentities($test_str, ENT_COMPAT, $this->encoding);
+									}
+
+									$close_pos = strpos( $part, $close, $i + strlen($close) );
+
+									if ( $close_pos === false )
+									{
+										$close_pos = strlen($part);
+									}
+
+									// Short-cut through all the multiline code
+									$rest_of_comment = @htmlentities(substr($part, $i + $com_len, $close_pos - $i), ENT_COMPAT, $this->encoding);
+									if ( ($this->lexic_permissions['COMMENTS']['MULTI'] || $test_str_match == GESHI_START_IMPORTANT) && ($this->line_numbers != GESHI_NO_LINE_NUMBERS || count($this->highlight_extra_lines) > 0) )
+									{
+										// strreplace to put close span and open span around multiline newlines
+										$test_str .= str_replace("\n", "</span>\n<span$attributes>", $rest_of_comment);
+									}
+									else
+									{
+										$test_str .= $rest_of_comment;
+									}
+
+									if ( $this->lexic_permissions['COMMENTS']['MULTI'] || $test_str_match == GESHI_START_IMPORTANT )
+									{
+										$test_str .= '</span>';
+									}
+									$i = $close_pos + $com_len - 1;
+									// parse the rest
+									$result .= $this->parse_non_string_part( $stuff_to_parse );
+									$stuff_to_parse = '';
+									break;
+								}
+							}
+							// If we haven't matched a multiline comment, try single-line comments
+							if ( !$COMMENT_MATCHED )
+							{
+								foreach ( $this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark )
+								{
+									$com_len = strlen($comment_mark);
+									$test_str = substr( $part, $i, $com_len );
+									if ( $this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] )
+									{
+										$match = ( $comment_mark == $test_str );
+									}
+									else
+									{
+										$match = ( strtolower($comment_mark) == strtolower($test_str) );
+									}
+									if ( $match )
+									{
+										$COMMENT_MATCHED = true;
+										if ( $this->lexic_permissions['COMMENTS'][$comment_key] )
+										{
+											if ( !$this->use_classes )
+											{
+												$attributes = ' style="' . $this->language_data['STYLES']['COMMENTS'][$comment_key] . '"';
+											}
+											else
+											{
+												$attributes = ' class="co' . $comment_key . '"';
+											}
+											$test_str = "<span$attributes>" . @htmlentities($this->change_case($test_str), ENT_COMPAT, $this->encoding);
+										}
+										else
+										{
+											$test_str = @htmlentities($test_str, ENT_COMPAT, $this->encoding);
+										}
+										$close_pos = strpos( $part, "\n", $i );
+										if ( $close_pos === false )
+										{
+											$close_pos = strlen($part);
+										}
+										$test_str .= @htmlentities(substr($part, $i + $com_len, $close_pos - $i - $com_len), ENT_COMPAT, $this->encoding);
+										if ( $this->lexic_permissions['COMMENTS'][$comment_key] )
+										{
+											$test_str .= "</span>";
+										}
+										$test_str .= "\n";
+										$i = $close_pos;
+										// parse the rest
+										$result .= $this->parse_non_string_part( $stuff_to_parse );
+										$stuff_to_parse = '';
+										break;
+									}
+								}
+							}
+						}
+						// Otherwise, convert it to HTML form
+						elseif ( $STRING_OPEN != '' )
+						{
+							if ( strtolower($this->encoding) == 'utf-8' )
+							{
+								//only escape <128 (we don't want to break multibyte chars)
+								if ( ord($char) < 128 )
+								{
+									$char = htmlentities($char, ENT_COMPAT, $this->encoding);
+								}
+							}
+							else
+							{
+								//encode everthing
+								$char = htmlentities($char, ENT_COMPAT, $this->encoding);
+							}
+						}
+						// Where are we adding this char?
+						if ( !$COMMENT_MATCHED )
+						{
+							if ( ($STRING_OPEN == '') && !$CLOSE_STRING )
+							{
+								$stuff_to_parse .= $char;
+							}
+							else
+							{
+								$result .= $char;
+								$CLOSE_STRING = false;
+							}
+						}
+						else
+						{
+							$result .= $test_str;
+							$COMMENT_MATCHED = false;
+						}
+					}
+					// Parse the last bit
+					$result .= $this->parse_non_string_part( $stuff_to_parse );
+					$stuff_to_parse = '';
+				}
+				else
+				{
+					$result .= @htmlentities($part, ENT_COMPAT, $this->encoding);
+				}
+				// Close the <span> that surrounds the block
+				if ( $this->strict_mode && $this->lexic_permissions['SCRIPT'] )
+				{
+					$result .= '</span>';
+				}
+			}
+			// Else not a block to highlight
+			else
+			{
+				$result .= @htmlentities($part, ENT_COMPAT, $this->encoding);
+			}
+		}
+
+		// Parse the last stuff (redundant?)
+		$result .= $this->parse_non_string_part( $stuff_to_parse );
+
+		// Lop off the very first and last spaces
+		$result = substr($result, 1, strlen($result) - 1);
+
+		// Are we still in a string?
+		if ( $STRING_OPEN )
+		{
+			$result .= '</span>';
+		}
+
+		// We're finished: stop timing
+		$this->set_time($start_time, microtime());
+
+		return $this->finalise($result);
+	}
+
+	/**
+	 * method: indent
+	 * --------------
+	 * Swaps out spaces and tabs for HTML indentation. Not needed if
+	 * the code is in a pre block...
+	 */
+	function indent ( $result )
+	{
+            /// Replace tabs with the correct number of spaces
+            if (false !== strpos($result, "\t")) {
+                $lines = explode("\n", $result);
+                foreach ($lines as $key => $line) {
+                    if (false === strpos($line, "\t")) {
+                        $lines[$key] = $line;
+                        continue;
+                    }//echo 'checking line ' . $key . '<br />';
+
+                    $pos = 0;
+                    $tab_width = $this->tab_width;
+                    $length = strlen($line);
+                    $result_line = '';
+
+                    //echo '<pre>line: ' . htmlspecialchars($line) . '</pre>';
+                    $IN_TAG = false;
+                    for ($i = 0; $i < $length; $i++) {
+                        $char = substr($line, $i, 1);
+                        // Simple engine to work out whether we're in a tag.
+                        // If we are we modify $pos. This is so we ignore HTML
+                        // in the line and only workout the tab replacement
+                        // via the actual content of the string
+                        // This test could be improved to include strings in the
+                        // html so that < or > would be allowed in user's styles
+                        // (e.g. quotes: '<' '>'; or similar)
+                        if ($IN_TAG && '>' == $char) {
+                            $IN_TAG = false;
+                            $result_line .= '>';
+                            ++$pos;
+                        } elseif (!$IN_TAG && '<' == $char) {
+                            $IN_TAG = true;
+                            $result_line .= '<';
+                            ++$pos;
+                        } elseif (!$IN_TAG && '&' == $char) {
+                            //echo "matched &amp; in line... ";
+                            $substr = substr($line, $i + 3, 4);
+                            //$substr_5 = substr($line, 5, 1);
+                            $posi = strpos($substr, ';');
+                            if (false !== $posi) {
+                                //echo "found entity at $posi\n";
+                                $pos += $posi + 3;
+                            }
+                            $result_line .= '&';
+                        } elseif (!$IN_TAG && "\t" == $char) {
+                            $str = '';
+                            // OPTIMISE - move $strs out. Make an array:
+                            // $tabs = array(
+                            //  1 => '&nbsp;',
+                            //  2 => '&nbsp; ',
+                            //  3 => '&nbsp; &nbsp;' etc etc
+                            // to use instead of building a string every time
+                            $strs = array(0 => '&nbsp;', 1 => ' ');
+                            //echo "building (pos=$pos i=$i) (" . ($i - $pos) . ") " . ($tab_width - (($i - $pos) % $tab_width)) . " spaces\n";
+                            for ($k = 0; $k < ($tab_width - (($i - $pos) % $tab_width)); $k++) $str .= $strs[$k % 2];
+                            $result_line .= $str;
+                            //$pos--;
+                            $pos++;
+                            //$pos -= $tab_width-1;
+
+                            if (false === strpos($line, "\t", $i + 1)) {
+                                //$lines[$key] = $result_line;
+                                //echo 'got here';
+                                $result_line .= substr($line, $i + 1);
+                                break;
+                            }
+                        } elseif ( $IN_TAG ) {
+                            ++$pos;
+                            $result_line .= $char;
+                        } else {
+                            $result_line .= $char;
+                            //++$pos;
+                        }
+                    }
+                    $lines[$key] = $result_line;
+                }
+                $result = implode("\n", $lines);
+            }
+		// Other whitespace
+		$result = str_replace('  ', '&nbsp; ', $result);
+		$result = str_replace('  ', ' &nbsp;', $result);
+		$result = str_replace("\n ", "\n&nbsp;", $result);
+		//$result = str_replace("\t", $this->get_tab_replacement(), $result);
+		if ( $this->line_numbers == GESHI_NO_LINE_NUMBERS )
+		{
+			$result = nl2br($result);
+		}
+		return $result;
+	}
+
+	/**
+	 * method: change_case
+	 * -------------------
+	 * Changes the case of a keyword for those languages where a change is asked for
+	 */
+	function change_case ( $instr )
+	{
+		if ( $this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_UPPER )
+		{
+			return strtoupper($instr);
+		}
+		elseif ( $this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_LOWER )
+		{
+			return strtolower($instr);
+		}
+		return $instr;
+	}
+
+
+	/**
+	 * method: add_url_to_keyword
+	 * --------------------------
+	 * Adds a url to a keyword where needed.
+	 * Added in 1.0.2
+	 */
+	function add_url_to_keyword ( $keyword, $group, $start_or_end )
+	{
+		if ( isset($this->language_data['URLS'][$group]) && $this->language_data['URLS'][$group] != '' && substr($keyword, 0, 5) != '&lt;/' )
+		{
+			// There is a base group for this keyword
+
+			if ( $start_or_end == 'BEGIN' )
+			{
+				// HTML workaround... not good form (tm) but should work for 1.0.X
+				$keyword = ( substr($keyword, 0, 4) == '&lt;' ) ? substr($keyword, 4) : $keyword;
+				$keyword = ( substr($keyword, -4) == '&gt;' ) ? substr($keyword, 0, strlen($keyword) - 4) : $keyword;
+				if ( $keyword != '' )
+				{
+					$keyword = ( $this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : strtolower($keyword);
+					return '<|UR1|"' . str_replace(array('{FNAME}', '.'), array(@htmlentities($keyword, ENT_COMPAT, $this->encoding), '<DOT>'), $this->language_data['URLS'][$group]) . '">';
+				}
+				return '';
+			}
+			else
+			{
+				return '</a>';
+			}
+		}
+	}
+
+
+	/**
+	 * method: parse_non_string_part
+	 * -----------------------------
+	 * Takes a string that has no strings or comments in it, and highlights
+	 * stuff like keywords, numbers and methods.
+	 */
+	function parse_non_string_part ( &$stuff_to_parse )
+	{
+		$stuff_to_parse = ' ' . quotemeta(@htmlentities($stuff_to_parse, ENT_COMPAT, $this->encoding));
+		// These vars will disappear in the future
+		$func = '$this->change_case';
+		$func2 = '$this->add_url_to_keyword';
+
+
+		//
+		// Regular expressions
+		//
+		foreach ( $this->language_data['REGEXPS'] as $key => $regexp )
+		{
+			if ( $this->lexic_permissions['REGEXPS'][$key] )
+			{
+				if ( is_array($regexp) )
+				{
+					$stuff_to_parse = preg_replace( "#" . $regexp[GESHI_SEARCH] . "#{$regexp[GESHI_MODIFIERS]}", "{$regexp[GESHI_BEFORE]}<|!REG3XP$key!>{$regexp[GESHI_REPLACE]}|>{$regexp[GESHI_AFTER]}", $stuff_to_parse);
+				}
+				else
+				{
+					$stuff_to_parse = preg_replace( "#(" . $regexp . ")#", "<|!REG3XP$key!>\\1|>", $stuff_to_parse);
+				}
+			}
+		}
+
+		//
+		// Highlight numbers. This regexp sucks... anyone with a regexp that WORKS
+		// here wins a cookie if they send it to me. At the moment there's two doing
+		// almost exactly the same thing, except the second one prevents a number
+		// being highlighted twice (eg <span...><span...>5</span></span>)
+		// Put /NUM!/ in for the styles, which gets replaced at the end.
+		//
+		if ( $this->lexic_permissions['NUMBERS'] && preg_match('#[0-9]#', $stuff_to_parse ) )
+		{
+			$stuff_to_parse = preg_replace('#([^a-zA-Z0-9\#])([0-9]+)([^a-zA-Z0-9])#', "\\1<|/NUM!/>\\2|>\\3", $stuff_to_parse);
+			$stuff_to_parse = preg_replace('#([^a-zA-Z0-9\#>])([0-9]+)([^a-zA-Z0-9])#', "\\1<|/NUM!/>\\2|>\\3", $stuff_to_parse);
+		}
+
+		// Highlight keywords
+		// if there is a couple of alpha symbols there *might* be a keyword
+		if ( preg_match('#[a-zA-Z]{2,}#', $stuff_to_parse) )
+		{
+			foreach ( $this->language_data['KEYWORDS'] as $k => $keywordset )
+			{
+				if ( $this->lexic_permissions['KEYWORDS'][$k] )
+				{
+					foreach ( $keywordset as $keyword )
+					{
+						$keyword = quotemeta($keyword);
+						//
+						// This replacement checks the word is on it's own (except if brackets etc
+						// are next to it), then highlights it. We don't put the color=" for the span
+						// in just yet - otherwise languages with the keywords "color" or "or" have
+						// a fit.
+						//
+						if ( false !== stristr($stuff_to_parse, $keyword ) )
+						{
+							$stuff_to_parse .= ' ';
+							// Might make a more unique string for putting the number in soon
+							// Basically, we don't put the styles in yet because then the styles themselves will
+							// get highlighted if the language has a CSS keyword in it (like CSS, for example ;))
+							$styles = "/$k/";
+							$keyword = quotemeta($keyword);
+							if ( $this->language_data['CASE_SENSITIVE'][$k] )
+							{
+								$stuff_to_parse = preg_replace("#([^a-zA-Z0-9\$_\|\.\#;>])($keyword)([^a-zA-Z0-9_<\|%\-&])#e", "'\\1' . $func2('\\2', '$k', 'BEGIN') . '<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END') . '\\3'", $stuff_to_parse);
+							}
+							else
+							{
+								// Change the case of the word.
+								$stuff_to_parse = preg_replace("#([^a-zA-Z0-9\$_\|\.\#;>])($keyword)([^a-zA-Z0-9_<\|%\-&])#ie", "'\\1' . $func2('\\2', '$k', 'BEGIN') . '<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END') . '\\3'", $stuff_to_parse);
+							}
+							$stuff_to_parse = substr($stuff_to_parse, 0, strlen($stuff_to_parse) - 1);
+						}
+					}
+				}
+			}
+		}
+
+		//
+		// Now that's all done, replace /[number]/ with the correct styles
+		//
+		foreach ( $this->language_data['KEYWORDS'] as $k => $kws )
+		{
+			if ( !$this->use_classes )
+			{
+				$attributes = ' style="' . $this->language_data['STYLES']['KEYWORDS'][$k] . '"';
+			}
+			else
+			{
+				$attributes = ' class="kw' . $k . '"';
+			}
+			$stuff_to_parse = str_replace("/$k/", $attributes, $stuff_to_parse);
+		}
+
+		// Put number styles in
+		if ( !$this->use_classes && $this->lexic_permissions['NUMBERS'] )
+		{
+			$attributes = ' style="' . $this->language_data['STYLES']['NUMBERS'][0] . '"';
+		}
+		else
+		{
+			$attributes = ' class="nu0"';
+		}
+		$stuff_to_parse = str_replace('/NUM!/', $attributes, $stuff_to_parse);
+
+		//
+		// Highlight methods and fields in objects
+		//
+		if ( $this->lexic_permissions['METHODS'] && $this->language_data['OOLANG'] )
+		{
+			foreach ( $this->language_data['OBJECT_SPLITTERS'] as $key => $splitter )
+			{
+				if ( false !== stristr($stuff_to_parse, $splitter) )
+				{
+					if ( !$this->use_classes )
+					{
+						$attributes = ' style="' . $this->language_data['STYLES']['METHODS'][$key] . '"';
+					}
+					else
+					{
+						$attributes = ' class="me' . $key . '"';
+					}
+					$stuff_to_parse = preg_replace("#(" . quotemeta($this->language_data['OBJECT_SPLITTERS'][$key]) . "[\s]*)([a-zA-Z\*\(][a-zA-Z0-9_\*]*)#", "\\1<|$attributes>\\2|>", $stuff_to_parse);
+				}
+			}
+		}
+
+		//
+		// Highlight brackets. Yes, I've tried adding a semi-colon to this list.
+		// You try it, and see what happens ;)
+		// TODO: Fix lexic permissions not converting entities if shouldn't
+		// be highlighting regardless
+		//
+		if ( $this->lexic_permissions['BRACKETS'] )
+		{
+			$code_entities_match = array('[', ']', '(', ')', '{', '}');
+			if ( !$this->use_classes )
+			{
+				$code_entities_replace = array(
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#91;|>',
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#93;|>',
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#40;|>',
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#41;|>',
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#123;|>',
+					'<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">&#125;|>',
+				);
+			}
+			else
+			{
+				$code_entities_replace = array(
+					'<| class="br0">&#91;|>',
+					'<| class="br0">&#93;|>',
+					'<| class="br0">&#40;|>',
+					'<| class="br0">&#41;|>',
+					'<| class="br0">&#123;|>',
+					'<| class="br0">&#125;|>',
+				);
+			}
+			$stuff_to_parse = str_replace( $code_entities_match,  $code_entities_replace, $stuff_to_parse );
+		}
+
+		//
+		// Add class/style for regexps
+		//
+		foreach ( $this->language_data['REGEXPS'] as $key => $regexp )
+		{
+			if ( $this->lexic_permissions['REGEXPS'][$key] )
+			{
+				if ( !$this->use_classes )
+				{
+					$attributes = ' style="' . $this->language_data['STYLES']['REGEXPS'][$key] . '"';
+				}
+				else
+				{
+					$attributes = ' class="re' . $key . '"';
+				}
+				$stuff_to_parse = str_replace("!REG3XP$key!", "$attributes", $stuff_to_parse);
+			}
+		}
+
+		// Replace <DOT> with . for urls
+		$stuff_to_parse = str_replace('<DOT>', '.', $stuff_to_parse);
+		// Replace <|UR1| with <a href= for urls also
+		if ( isset($this->link_styles[GESHI_LINK]) )
+		{
+			if ( $this->use_classes )
+			{
+				$stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
+			}
+			else
+			{
+				$stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse);
+			}
+		}
+		else
+		{
+			$stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
+		}
+
+		//
+		// NOW we add the span thingy ;)
+		//
+
+		$stuff_to_parse = str_replace('<|', '<span', $stuff_to_parse);
+		$stuff_to_parse = str_replace ( '|>', '</span>', $stuff_to_parse );
+
+		return substr(stripslashes($stuff_to_parse), 1);
+	}
+
+	/**
+	 * method: set_time
+	 * ----------------
+	 * Sets the time taken to parse the code
+	 */
+	function set_time ( $start_time, $end_time )
+	{
+		$start = explode(' ', $start_time);
+		$end = explode(' ', $end_time);
+		$this->time = $end[0] + $end[1] - $start[0] - $start[1];
+	}
+
+	/**
+	 * method: get_time
+	 * ----------------
+	 * Gets the time taken to parse the code
+	 */
+	function get_time ()
+	{
+		return $this->time;
+	}
+
+	/**
+	 * method: load_language
+	 * ---------------------
+	 * Gets language information and stores it for later use
+	 */
+	function load_language ()
+	{
+		$file_name = $this->language_path . $this->language . '.php';
+		if ( !is_readable($file_name))
+		{
+			$this->error = GESHI_ERROR_NO_SUCH_LANG;
+			return;
+		}
+		require($file_name);
+		// Perhaps some checking might be added here later to check that
+		// $language data is a valid thing but maybe not
+		$this->language_data = $language_data;
+		// Set strict mode if should be set
+		if ( $this->language_data['STRICT_MODE_APPLIES'] == GESHI_ALWAYS )
+		{
+			$this->strict_mode = true;
+		}
+		// Set permissions for all lexics to true
+		// so they'll be highlighted by default
+		$this->enable_highlighting();
+		// Set default class for CSS
+		$this->overall_class = $this->language;
+	}
+
+	/**
+	 * method: get_tab_replacement
+	 * ---------------------------
+	 * Gets the replacement string for tabs in the source code. Useful for
+	 * HTML highlighting, where tabs don't mean anything to a browser.
+	 */
+	 /*
+	function get_tab_replacement ()
+	{
+		$i = 0;
+		$result = '';
+		while ( $i < $this->tab_width )
+		{
+			$i++;
+			if ( $i % 2 == 0 )
+			{
+				$result .= ' ';
+			}
+			else
+			{
+				$result .= '&nbsp;';
+			}
+		}
+		return $result;
+	}
+	*/
+
+	/**
+	 * method: finalise
+	 * ----------------
+	 * Takes the parsed code and various options, and creates the HTML
+	 * surrounding it to make it look nice.
+	 */
+	function finalise ( $parsed_code )
+	{
+		// Remove end parts of important declarations
+		// This is BUGGY!! My fault for bad code: fix coming in 1.2
+		if ( $this->enable_important_blocks && (strstr($parsed_code, @htmlentities(GESHI_START_IMPORTANT, ENT_COMPAT, $this->encoding)) === false) )
+		{
+			$parsed_code = str_replace(@htmlentities(GESHI_END_IMPORTANT, ENT_COMPAT, $this->encoding), '', $parsed_code);
+		}
+
+		// Add HTML whitespace stuff if we're using the <div> header
+		if ( $this->header_type == GESHI_HEADER_DIV )
+		{
+			$parsed_code = $this->indent($parsed_code);
+		}
+
+		// If we're using line numbers, we insert <li>s and appropriate
+		// markup to style them (otherwise we don't need to do anything)
+		if ( $this->line_numbers != GESHI_NO_LINE_NUMBERS )
+		{
+			// If we're using the <pre> header, we shouldn't add newlines because
+			// the <pre> will line-break them (and the <li>s already do this for us)
+			$ls = ( $this->header_type != GESHI_HEADER_PRE ) ? "\n" : '';
+			// Get code into lines
+			$code = explode("\n", $parsed_code);
+			// Set vars to defaults for following loop
+			$parsed_code = '';
+			$i = 0;
+			// Foreach line...
+			foreach ( $code as $line )
+			{
+				$line = ( $line ) ? $line : '&nbsp;';
+				// If this is a "special line"...
+				if ( $this->line_numbers == GESHI_FANCY_LINE_NUMBERS && $i % $this->line_nth_row == ($this->line_nth_row - 1) )
+				{
+					// Set the attributes to style the line
+					if ( $this->use_classes )
+					{
+						$attr = ' class="li2"';
+						$def_attr = ' class="de2"';
+					}
+					else
+					{
+						$attr = ' style="' . $this->line_style2 . '"';
+						// This style "covers up" the special styles set for special lines
+						// so that styles applied to special lines don't apply to the actual
+						// code on that line
+						$def_attr = ' style="' . $this->code_style . '"';
+					}
+					// Span or div?
+					$start = "<div$def_attr>";
+					$end = '</div>';
+				}
+				else
+				{
+					if ( $this->use_classes )
+					{
+						$def_attr = ' class="de1"';
+					}
+					else
+					{
+						$def_attr = ' style="' . $this->code_style . '"';
+					}
+					// Reset everything
+					$attr = '';
+					// Span or div?
+					$start = "<div$def_attr>";
+					$end = '</div>';
+				}
+
+				++$i;
+				// Are we supposed to use ids? If so, add them
+				if ( $this->add_ids )
+				{
+					$attr .= " id=\"{$this->overall_id}-{$i}\"";
+				}
+				if ( $this->use_classes && in_array($i, $this->highlight_extra_lines) )
+				{
+					$attr .= " class=\"ln-xtra\"";
+				}
+				if ( !$this->use_classes && in_array($i, $this->highlight_extra_lines) )
+				{
+					$attr .= " style=\"{$this->highlight_extra_lines_style}\"";
+				}
+
+				// Add in the line surrounded by appropriate list HTML
+				$parsed_code .= "<li$attr>$start$line$end</li>$ls";
+			}
+		}
+		else
+		{
+			// No line numbers, but still need to handle highlighting lines extra.
+			// Have to use divs so the full width of the code is highlighted
+			$code = explode("\n", $parsed_code);
+			$parsed_code = '';
+			$i = 0;
+			foreach ( $code as $line )
+			{
+				// Make lines have at least one space in them if they're empty
+				$line = ( $line ) ? $line : '&nbsp;';
+				if ( in_array(++$i, $this->highlight_extra_lines) )
+				{
+					if ( $this->use_classes )
+					{
+						//$id = ( $this->overall_id != '' ) ? $this->overall_id . "-$i" : $this->overall_class . "-$i";
+						$parsed_code .= '<div class="ln-xtra">';
+					}
+					else
+					{
+						$parsed_code .= "<div style=\"{$this->highlight_extra_lines_style}\">";
+					}
+					$parsed_code .= $line . "</div>\n";
+				}
+				else
+				{
+					$parsed_code .= $line . "\n";
+				}
+			}
+		}
+
+		// purge some unnecessary stuff
+		$parsed_code = preg_replace('#<span[^>]+>(\s*)</span>#', '\\1', $parsed_code);
+		$parsed_code = preg_replace('#<div[^>]+>(\s*)</div>#', '\\1', $parsed_code);
+
+		if ( $this->header_type == GESHI_HEADER_PRE )
+		{
+			// enforce line numbers when using pre
+			$parsed_code = str_replace('<li></li>', '<li>&nbsp;</li>', $parsed_code);
+		}
+
+		return $this->header() . chop($parsed_code) . $this->footer();
+	}
+
+
+	/**
+	 * method: header
+	 * --------------
+	 * Creates the header for the code block (with correct attributes)
+	 */
+	function header ()
+	{
+		// Get attributes needed
+		$attributes = $this->get_attributes();
+
+		/*if ( $this->use_classes )
+		{*/
+			$ol_attributes = '';
+		/*}
+		else
+		{
+			//$ol_attributes = ' style="margin: 0;"';
+		}*/
+
+		if ( $this->line_numbers_start != 1 )
+		{
+			$ol_attributes .= ' start="' . $this->line_numbers_start . '"';
+		}
+
+		// Get the header HTML
+		$header = $this->format_header_content();
+
+		// Work out what to return and do it
+		if ( $this->line_numbers != GESHI_NO_LINE_NUMBERS )
+		{
+			if ( $this->header_type == GESHI_HEADER_PRE )
+			{
+				return "<pre$attributes>$header<ol$ol_attributes>";
+			}
+			elseif ( $this->header_type == GESHI_HEADER_DIV )
+			{
+				return "<div$attributes>$header<ol$ol_attributes>";
+			}
+		}
+		else
+		{
+			if ( $this->header_type == GESHI_HEADER_PRE )
+			{
+				return "<pre$attributes>$header";
+			}
+			elseif ( $this->header_type == GESHI_HEADER_DIV )
+			{
+				return "<div$attributes>$header";
+			}
+		}
+	}
+
+
+	/**
+	 * method: format_header_content
+	 * -----------------------------
+	 * Returns the header content, formatted for output
+	 */
+	function format_header_content ()
+	{
+		$header = $this->header_content;
+		if ( $header )
+		{
+			if ( $this->header_type == GESHI_HEADER_PRE )
+			{
+				$header = str_replace("\n", '', $header);
+			}
+			$header = $this->replace_keywords($header);
+
+			if ( $this->use_classes )
+			{
+				$attr = ' class="head"';
+			}
+			else
+			{
+				$attr = " style=\"{$this->header_content_style}\"";
+			}
+			return "<div$attr>$header</div>";
+		}
+	}
+
+
+	/**
+	 * method: footer
+	 * --------------
+	 * Returns the footer for the code block. Ending newline removed in 1.0.2
+	 */
+	function footer ()
+	{
+		$footer_content = $this->format_footer_content();
+
+		if ( $this->header_type == GESHI_HEADER_DIV )
+		{
+			if ( $this->line_numbers != GESHI_NO_LINE_NUMBERS )
+			{
+				return "</ol>$footer_content</div>";
+			}
+			return "$footer_content</div>";
+		}
+		else
+		{
+			if ( $this->line_numbers != GESHI_NO_LINE_NUMBERS )
+			{
+				return "</ol>$footer_content</pre>";
+			}
+			return "$footer_content</pre>";
+		}
+	}
+
+
+	/**
+	 * method: format_footer_content
+	 * -----------------------------
+	 * Returns the footer content, formatted for output
+	 */
+	function format_footer_content ()
+	{
+		$footer = $this->footer_content;
+		if ( $footer )
+		{
+			if ( $this->header_type == GESHI_HEADER_PRE )
+			{
+				$footer = str_replace("\n", '', $footer);;
+			}
+			$footer = $this->replace_keywords($footer);
+
+			if ( $this->use_classes )
+			{
+				$attr = ' class="foot"';
+			}
+			else
+			{
+				$attr = " style=\"{$this->footer_content_style}\">";
+			}
+			return "<div$attr>$footer</div>";
+		}
+	}
+
+
+	/**
+	 * method: replace_keywords
+	 * ----------------------
+	 * Replaces certain keywords in the header and footer with
+	 * certain configuration values
+	 */
+	function replace_keywords ( $instr )
+	{
+		$keywords = $replacements = array();
+
+		$keywords[] = '<TIME>';
+		$replacements[] = number_format($this->get_time(), 3);
+
+		$keywords[] = '<LANGUAGE>';
+		$replacements[] = $this->language;
+
+		$keywords[] = '<VERSION>';
+		$replacements[] = '1.0.6';
+
+		return str_replace($keywords, $replacements, $instr);
+	}
+
+	/**
+	 * method: get_attributes
+	 * ----------------------
+	 * Gets the CSS attributes for this code
+	 */
+	function get_attributes ()
+	{
+		$attributes = '';
+
+		if ( $this->overall_class != '' && $this->use_classes )
+		{
+			$attributes .= " class=\"{$this->overall_class}\"";
+		}
+		if ( $this->overall_id != '' )
+		{
+			$attributes .= " id=\"{$this->overall_id}\"";
+		}
+		if ( $this->overall_style != '' && !$this->use_classes )
+		{
+			$attributes .= ' style="' . $this->overall_style . '"';
+		}
+		return $attributes;
+	}
+
+
+	/**
+	 * method: get_stylesheet
+	 * ----------------------
+	 * Returns a stylesheet for the highlighted code. If $economy mode
+	 * is true, we only return the stylesheet declarations that matter for
+	 * this code block instead of the whole thing
+	 */
+	function get_stylesheet ( $economy_mode = true )
+	{
+		// If there's an error, chances are that the language file
+		// won't have populated the language data file, so we can't
+		// risk getting a stylesheet...
+		if ( $this->error )
+		{
+			return '';
+		}
+		// First, work out what the selector should be. If there's an ID,
+		// that should be used, the same for a class. Otherwise, a selector
+		// of '' means that these styles will be applied anywhere
+		$selector = ( $this->overall_id != '' ) ? "#{$this->overall_id} " : '';
+		$selector = ( $selector == '' && $this->overall_class != '' ) ? ".{$this->overall_class} " : $selector;
+
+		// Header of the stylesheet
+		if ( !$economy_mode )
+		{
+			$stylesheet = "/**\n * GeSHi Dynamically Generated Stylesheet\n * --------------------------------------\n * Dynamically generated stylesheet for {$this->language}\n * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\n * GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter)\n */\n";
+ 		}
+		else
+		{
+			$stylesheet = '/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */' . "\n";
+		}
+
+		// Set the <ol> to have no effect at all if there are line numbers
+		// (<ol>s have margins that should be destroyed so all layout is
+		// controlled by the set_overall_style method, which works on the
+		// <pre> or <div> container). Additionally, set default styles for lines
+		if ( !$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS )
+		{
+			//$stylesheet .= "$selector, {$selector}ol, {$selector}ol li {margin: 0;}\n";
+			$stylesheet .= "$selector.de1, $selector.de2 {{$this->code_style}}\n";
+		}
+
+		// Add overall styles
+		if ( !$economy_mode || $this->overall_style != '' )
+		{
+			$stylesheet .= "$selector {{$this->overall_style}}\n";
+		}
+
+		// Add styles for links
+		foreach ( $this->link_styles as $key => $style )
+		{
+			if ( !$economy_mode || $key == GESHI_LINK && $style != '' )
+			{
+				$stylesheet .= "{$selector}a:link {{$style}}\n";
+			}
+			if ( !$economy_mode || $key == GESHI_HOVER && $style != '' )
+			{
+				$stylesheet .= "{$selector}a:hover {{$style}}\n";
+			}
+			if ( !$economy_mode || $key == GESHI_ACTIVE && $style != '' )
+			{
+				$stylesheet .= "{$selector}a:active {{$style}}\n";
+			}
+			if ( !$economy_mode || $key == GESHI_VISITED && $style != '' )
+			{
+				$stylesheet .= "{$selector}a:visited {{$style}}\n";
+			}
+		}
+
+		// Header and footer
+		if ( !$economy_mode || $this->header_content_style != '' )
+		{
+			$stylesheet .= "$selector.head {{$this->header_content_style}}\n";
+		}
+		if ( !$economy_mode || $this->footer_content_style != '' )
+		{
+			$stylesheet .= "$selector.foot {{$this->footer_content_style}}\n";
+		}
+
+		// Styles for important stuff
+		if ( !$economy_mode || $this->important_styles != '' )
+		{
+			$stylesheet .= "$selector.imp {{$this->important_styles}}\n";
+		}
+
+
+		// Styles for lines being highlighted extra
+		if ( !$economy_mode || count($this->highlight_extra_lines) )
+		{
+			/*foreach ( $this->highlight_extra_lines as $line )
+			{
+				$id = ( $this->overall_id != '' ) ? $this->overall_id . "-$line" : $this->overall_class . "-$line";
+				$stylesheet .= "$selector#$id,";
+			}*/
+			$stylesheet .= "$selector.ln-xtra {{$this->highlight_extra_lines_style}}\n";
+		}
+
+
+		// Simple line number styles
+		if ( !$economy_mode || ($this->line_numbers != GESHI_NO_LINE_NUMBERS && $this->line_style1 != '') )
+		{
+			$stylesheet .= "{$selector}li {{$this->line_style1}}\n";
+		}
+
+		// If there is a style set for fancy line numbers, echo it out
+		if ( !$economy_mode || ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && $this->line_style2 != '') )
+		{
+			$stylesheet .= "{$selector}li.li2 {{$this->line_style2}}\n";
+		}
+
+
+		foreach ( $this->language_data['STYLES']['KEYWORDS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && (!$this->lexic_permissions['KEYWORDS'][$group] || $styles == '')) )
+			{
+				$stylesheet .= "$selector.kw$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['COMMENTS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['COMMENTS'][$group]) )
+			{
+				$stylesheet .= "$selector.co$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['ESCAPE_CHAR']) )
+			{
+				$stylesheet .= "$selector.es$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['SYMBOLS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['BRACKETS']) )
+			{
+				$stylesheet .= "$selector.br$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['STRINGS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['STRINGS']) )
+			{
+				$stylesheet .= "$selector.st$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['NUMBERS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['NUMBERS']) )
+			{
+				$stylesheet .= "$selector.nu$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['METHODS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['METHODS']) )
+			{
+				$stylesheet .= "$selector.me$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['SCRIPT'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') /*&& !($economy_mode && !$this->lexic_permissions['SCRIPT'])*/ )
+			{
+				$stylesheet .= "$selector.sc$group {{$styles}}\n";
+			}
+		}
+		foreach ( $this->language_data['STYLES']['REGEXPS'] as $group => $styles )
+		{
+			if ( !$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && !$this->lexic_permissions['REGEXPS'][$group]) )
+			{
+				$stylesheet .= "$selector.re$group {{$styles}}\n";
+			}
+		}
+
+		return $stylesheet;
+	}
+
+} // End Class GeSHi
+
+
+if ( !function_exists('geshi_highlight') )
+{
+	/**
+	* function: geshi_highlight
+	* -------------------------
+	* Easy way to highlight stuff. Behaves just like highlight_string
+	*/
+	function geshi_highlight ( $string, $language, $path, $return = false )
+	{
+		$geshi = new GeSHi($string, $language, $path);
+		$geshi->set_header_type(GESHI_HEADER_DIV);
+		if ( $return )
+		{
+			return str_replace('<div>', '<code>', str_replace('</div>', '</code>', $geshi->parse_code()));
+		}
+		echo str_replace('<div>', '<code>', str_replace('</div>', '</code>', $geshi->parse_code()));
+		if ( $geshi->error() )
+		{
+			return false;
+		}
+		return true;
+	}
+}
+
+?>

Added: plugins/trunk/plogeshi/leeme.txt
===================================================================
--- plugins/trunk/plogeshi/leeme.txt	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/leeme.txt	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,39 @@
+Plugin: PloGeSHi
+Autor: Rodrigo Perez (http://www.bilson.cl)
+Fecha: 2005/04/04
+Version: 1.0-1
+
+Este plugin permite colorear sintaxis usando GeSHi (http://qbnz.com/highlighter/)
+Incluye GeSHi 1.0.6
+Este plugin tambien incluye codigo tomado de dokuwiki (http://wiki.splitbrain.org/)
+
+Si usted desea actualizar geshi, descargue la nueva  versión de GeSHi y reemplace los archivos ubicados en la carpeta "plugins/plogeshi/inc"
+
+
+Instalación:
+
+1.- Descomprimir en el directorio "plugins"
+
+Configuración:
+
+1. Habilite o deshabilite PloGeSHi en su panel de control de pLog
+
+Uso:
+
+<code php>
+if($a=10)
+{
+        echo "a = 10";
+}
+else
+{
+        echo "a != 10";
+}
+     
+echo rtfm();
+      
+function rtfm()
+{
+        return ("Read The Fucking Manual!!");
+}       
+</code>

Added: plugins/trunk/plogeshi/locale/locale_en_UK.php
===================================================================
--- plugins/trunk/plogeshi/locale/locale_en_UK.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/locale/locale_en_UK.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,9 @@
+<?php
+$messages["plogeshi_plugin"] = "PloGeSHi";
+$messages["plogeshi_update"] = "Reload";
+$messages["plogeshi_reset"] = "Reset";
+$messages["plogeshi_label_enable"] = "Enable";
+$messages["plogeshi_plugin_enabled"] = "Enable PloGeSHi";
+$messages["plogeshi_label_config"] = "Configure";
+$messages["plogeshi_settings_saved_ok"] = "Configuration saved";
+?>

Added: plugins/trunk/plogeshi/locale/locale_es_ES.php
===================================================================
--- plugins/trunk/plogeshi/locale/locale_es_ES.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/locale/locale_es_ES.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,9 @@
+<?php
+$messages["plogeshi_plugin"] = "PloGeSHi";
+$messages["plogeshi_update"] = "Actualizar";
+$messages["plogeshi_reset"] = "Resetear";
+$messages["plogeshi_label_enable"] = "Habilitar";
+$messages["plogeshi_plugin_enabled"] = "Habilitar PloGeSHi";
+$messages["plogeshi_label_config"] = "Configuracion";
+$messages["plogeshi_settings_saved_ok"] = "Configuracion guardada exitosamente";
+?>

Added: plugins/trunk/plogeshi/pluginplogeshi.class.php
===================================================================
--- plugins/trunk/plogeshi/pluginplogeshi.class.php	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/pluginplogeshi.class.php	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,109 @@
+<?php
+
+	include_once( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );	
+	include_once( PLOG_CLASS_PATH."plugins/plogeshi/class/plogeshi/plogeshi.class.php" );
+
+	define( "PLOGESHI_PATH", PLOG_CLASS_PATH . "plugins/plogeshi/" );
+	define( "PLOGESHI_GESHI_PATH", PLOGESHI_PATH ."inc/" );
+	
+	class PluginPloGeSHi extends PluginBase
+	{
+		var $_pluginEnabled;
+		var $_ploGeshi;
+
+		function PluginPloGeSHi()
+		{
+			// ---
+			// set some information
+			// ---
+			$this->id = "plogeshi";
+			$this->author = "Rodrigo Pérez (bilson)";
+			$this->desc = "This plugin allows to color bits of code using GeSHi. Please use the following syntax
+			              anywhere in your posts:<br/><br/>
+			              &lt;code php&gt;<br/>
+			              &nbsp;&nbsp; // place here your PHP code here<br/>
+			              &nbsp;&nbsp;...<br/>
+			              &lt;/code&gt;
+			              <br/><br/>
+			              Other common formats supported by <a href=\"http://qbnz.com/highlighter/\">GeSHi</a>
+			              include: <b>Actionscript, ASM, ASP, Bash, C,
+			              C#, C++, CSS, Delphi, HTML, Java, Javascript, Lisp,
+			              Objective C,
+			              Pascal, Perl, PHP, Python, Smarty, SQL, VB.NET, Visual BASIC, XML</b>.<br/><br/>
+			              Simply enclose your code within &lt;code <i>code-identifier</i>&gt;...&lt;/code&gt;
+			              and use any of the languages above as the value for <i>code-identifier</i>.";
+			              	
+			$this->locales = Array( 'es_ES', 'en_UK' );
+			
+			$this->_ploGeshi = new PloGeSHi();
+			
+	
+			$this->init();  
+		}
+
+		function init()
+		{
+			// ---
+			// register actions for this plugin plus an option in the menu
+			// ---
+			$this->registerAdminAction( "PloGeSHiConfig", "PluginPloGeSHiConfigAction" );
+			$this->registerAdminAction( "updatePloGeSHiConfig", "PluginPloGeSHiUpdateConfigAction" );
+			
+			// ---
+			// register actions for this plugin plus an option in the menu
+			// ---
+			$menu =& Menu::getMenu();
+			$this->addMenuEntry( "/menu/Manage/managePosts", "PloGeSHi", "admin.php?op=PloGeSHiConfig", "" );
+			
+			// ---
+			// register the event we are going to need
+			$this->registerNotification( EVENT_TEXT_FILTER );
+		}
+
+		function register()
+		{
+			$blogSettings = $this->blogInfo->getSettings();
+			$this->_pluginEnabled = $blogSettings->getValue( "plugin_plogeshi_enabled" );
+		}
+
+		function isEnabled()
+		{
+			return $this->_pluginEnabled;
+		}
+
+		
+		
+		function _colorText( $post  )
+		{
+			// modify the text...
+			return $this->_ploGeshi->colorText( $post );
+		}
+		
+		/**
+		 * Receives and processes events
+		 *
+		 * @param eventType
+		 * @param params
+		 */
+		function process( $eventType, $params )
+		{
+			// if the plugin is diabled, return
+			$settings = $this->blogInfo->getSettings();
+			if( !$settings->getValue( "plugin_plogeshi_enabled" ))
+				return true;
+
+			// prevent other events
+			if( $eventType != EVENT_TEXT_FILTER ) {
+					throw( new Exception( "PloGeshi only receive EVENT_TEXT_RENDER events" ));
+					die();
+			}
+
+			$rg =& $this->blogInfo->getBlogRequestGenerator();
+			$baseUrl = $rg->getBaseUrl();
+			$cssUrl = $baseUrl."/plugins/plogeshi/styles/plogeshi.css";
+	
+			$css = '<link rel="stylesheet" type="text/css" href="' . $cssUrl . '" />';
+			$params[ "text" ] = $css . $this->_colorText( $params[ "text" ] );
+		}
+	}
+?>
\ No newline at end of file

Added: plugins/trunk/plogeshi/readme.txt
===================================================================
--- plugins/trunk/plogeshi/readme.txt	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/readme.txt	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,39 @@
+Plugin: PloGeSHi
+Author: Rodrigo Perez (http://www.bilson.cl)
+Release Date: 2005/04/04
+Version: 1.0-1
+
+This plugin allows to color syntax using GeSHi (http://qbnz.com/highlighter/)
+Include GeSHi 1.0.6
+This plugin also include code from dokuwiki (http://wiki.splitbrain.org/)
+
+If you want upgrage geshi, download new version of geshi and replace files in folder "plugins/plogeshi/inc"
+
+
+Install:
+
+1.- Uncompress in folder "plugins"
+
+Configure:
+
+1. Enable or disable PloGeSHi plugin in pLog control center
+
+Usage:
+
+<code php>
+if($a=10)
+{
+	echo "a = 10";
+}
+else
+{
+	echo "a != 10";
+}
+     
+echo rtfm();
+      
+function rtfm()
+{
+	return ("Read The F*cking Manual!!");
+}
+</code>

Added: plugins/trunk/plogeshi/styles/plogeshi.css
===================================================================
--- plugins/trunk/plogeshi/styles/plogeshi.css	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/styles/plogeshi.css	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,49 @@
+/* Code highlighting with GeSHi */
+
+/* code blocks by indention */
+pre.pre {
+  font-size: 100%;
+  padding: 0.5em;
+  border: 1px dashed #8cacbb;
+  color: Black;
+  background-color: #f7f9fa;
+  overflow: auto;
+}
+
+/* code blocks by code tag */
+pre.code {
+  font-size: 100%;
+  padding: 0.5em;
+  border: 1px dashed #8cacbb;
+  color: Black;
+  background-color: #f7f9fa;
+  overflow: auto;
+}
+
+/* inline code words */
+code {
+  font-size: 100%;
+}
+
+/* syntax highlighting code */
+.code .br0	{ color: #66cc66; }
+.code .co1	{ color: #808080; font-style: italic; }
+.code .co2	{ color: #808080; font-style: italic; }
+.code .coMULTI	{ color: #808080; font-style: italic; }
+.code .es0	{ color: #000099; font-weight: bold; }
+.code .kw1	{ color: #b1b100; }
+.code .kw2	{ color: #000000; font-weight: bold; }
+.code .kw3	{ color: #000066; } 
+.code .kw4	{ color: #993333; }
+.code .kw5	{ color: #0000ff; }
+.code .me0	{ color: #006600; }
+.code .nu0	{ color: #cc66cc; }
+.code .re0	{ color: #0000ff; }
+.code .re1	{ color: #0000ff; }
+.code .re2	{ color: #0000ff; }
+.code .re4	{ color: #009999; }
+.code .sc0	{ color: #00bbdd; }
+.code .sc1	{ color: #ddbb00; }
+.code .sc2	{ color: #009900; }
+.code .st0	{ color: #ff0000; }
+

Added: plugins/trunk/plogeshi/templates/config.template
===================================================================
--- plugins/trunk/plogeshi/templates/config.template	2005-04-05 16:12:38 UTC (rev 1742)
+++ plugins/trunk/plogeshi/templates/config.template	2005-04-05 18:15:39 UTC (rev 1743)
@@ -0,0 +1,25 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=PloGeSHi title=$locale->tr("plogeshi_plugin")}
+<form id="PloGeSHiSettings"  name="PloGeSHiSettings" method="post">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("plogeshi_label_config")}</legend> 
+  {include file="$admintemplatepath/successmessage.template"}
+  {include file="$admintemplatepath/errormessage.template"} 
+  <div class="field">
+   <label for="pluginEnabled">{$locale->tr("plogeshi_label_enable")}</label>
+   <span class="required"></span>
+   <div class="formHelp">
+    <input class="checkbox" type="checkbox" name="pluginEnabled" id="pluginEnabled" {if $pluginEnabled} checked="checked" {/if} value="1" />{$locale->tr("plogeshi_plugin_enabled")}
+   </div>
+  </div>
+
+
+ </fieldset>
+ <div class="buttons"> 
+  <input type="hidden" name="op" value="updatePloGeSHiConfig" />
+  <input type="reset" name="{$locale->tr("plogeshi_reset")}" />
+  <input type="submit" name="{$locale->tr("plogeshi_update_settings")}" value="{$locale->tr("plogeshi_update")}" />
+ </div>
+</form>
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file




More information about the pLog-svn mailing list