Having recently switched from SyntaxHighlighter MT to the SyntaxHighlighter Evolved plugin I was unable to get my custom Apache brush I use for .htaccess and *.conf files to work.
While searching for an answer I happened upon a better although seemingly unfinished version of an Apache brush, but still couldn’t get it work. A little further digging and I learnt that I needed to write a plugin to use a custom brush with SyntaxHighlighter Evolved.
syntaxhighlighter-evolved-apache.zip8KB4th June 2014
My version of the plugin is based on shApacheConfig.js by Riley Wills and while still very much a work in progress, provides adequate though not exhaustive highlighting. Any suggestions or modifications are extremely welcome.
The plugin defines two valid brush names: apache and conf either of which may be used in a <pre> tag or shortcode like so:
<pre class="brush: apache;"> </pre>
[apache] [/apache]
Installation instructions and further notes on usage can be found in the readme.txt file included in syntaxhighlighter-evolved-apache.zip.
The code snippets below are not necessarily working examples and are intended merely to demonstrate the brush’s highlighting capabilities.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
# # Do not add a slash at the end of the directory path. If you point # ServerRoot at a non-local disk, be sure to point the LockFile directive # at a local disk. If you wish to share the same ServerRoot for multiple # httpd daemons, you will need to change at least LockFile and PidFile. # ServerRoot "/Applications/XAMPP/xamppfiles" LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbd_module modules/mod_authn_dbd.so <IfDefine JUSTTOMAKEAPXSHAPPY> LoadModule php4_module modules/libphp4.so LoadModule php5_module modules/libphp5.so </IfDefine> <IfModule !mpm_winnt_module> <IfModule !mpm_netware_module> User nobody Group nogroup </IfModule> </IfModule> ServerAdmin you@example.com ServerName localhost DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs" # # First, we configure the "default" to be a very restrictive set of # features. # <Directory /> Options FollowSymLinks AllowOverride None #XAMPP Order deny,allow Deny from all </Directory> # # This should be changed to whatever you set DocumentRoot to. # <Directory "/Applications/XAMPP/xamppfiles/htdocs"> Options Indexes FollowSymLinks ExecCGI Includes AllowOverride All Order allow,deny Allow from all </Directory> # # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.html index.php index.htmls index.htm </IfModule> # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch> ErrorLog logs/error_log # # LogLevel: Control the number of messages logged to the error_log. # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. # LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> # You need to enable mod_logio.c to use %I and %O LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog logs/access_log common </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/Applications/XAMPP/xamppfiles/cgi-bin/" </IfModule> <IfModule cgid_module> Scriptsock logs/cgisock </IfModule> # # "/Applications/xampp/xamppfiles/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "/Applications/XAMPP/xamppfiles/phpmyadmin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> DefaultType text/plain <IfModule mime_module> TypesConfig etc/mime.type AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddHandler cgi-script .cgi .pl .asp AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule> MIMEMagicFile etc/magic # # Customizable error responses come in three flavors: # 1) plain text 2) local redirects 3) external redirects # # Some examples: ErrorDocument 500 "The server made a boo boo." ErrorDocument 404 /missing.html ErrorDocument 404 "/cgi-bin/missing_handler.pl" ErrorDocument 402 http://www.example.com/subscription_info.html EnableMMAP off EnableSendfile off # Server-pool management (MPM specific) Include /Applications/XAMPP/etc/extra/httpd-mpm.conf # Multi-language error messages Include /Applications/XAMPP/etc/extra/httpd-multilang-errordoc.conf <IfModule ssl_module> <IfDefine SSL> Include etc/extra/httpd-ssl.conf </IfDefine> </IfModule> # # Note: The following must must be present to support # starting without SSL on platforms with no /dev/random equivalent # but a statically compiled-in mod_ssl. # <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> #XAMPP Include etc/extra/httpd-xampp.conf # # Use name-based virtual hosting. # NameVirtualHost * # tech-otaku [AllowOveride All for WordPress installs to stop 404 Page Not Found errors. Source: http://codex.wordpress.org/Using_Permalinks#Using_.22Pretty.22_permalinks] <VirtualHost *> ServerName macbook.to DocumentRoot "/Users/steve/Sites/DOMAINS/tech-otaku.com" <Directory "/Users/steve/Sites/DOMAINS/tech-otaku.com"> Options Indexes FollowSymLinks Includes execCGI AllowOverride All Order Allow,Deny Allow From All </Directory> </VirtualHost>
Change Log
0.9.1 | Fixed Uncaught TypeError in shBrushApache.js | 2014-06-04 |
0.9.0 | Initial Release | 2013-04-05 |
E-VANCE
Glad you found it useful.
Regards, Steve.
Hey Steve,
thanks for the plugin, works like charm! I ran into the need to highlight some Apache-code with my newest blog-post and this came in very handy.
Keep it up & thanks again!
Hi. I’m the author of the Syntax Highlighter MT plugin, and was just curious why you decided to switch away.
Hi Chad,
I actually prefer your implementation over others, but upgrading from v1.0 recently caused problems with code highlighting on this site. I tried SyntaxHighlighter Evolved and apart from a few tweaks it appears to behave better.
Regards, Steve.
Yeah, that was a pretty bug update from 1.0 to 2.0. Sorry you ran into problems.
Hi Chad,
No worries and thanks for the update.
Regards, Steve.