Updating my WordPress CodeHighlighterPlus to GeSHi 1.0.9.0
Thursday, March 28th, 2019This morning I decided to see if I couldn't fix the Swift highlighting on this blog by updating to the latest GeSHi 1.0.9.0 - which is now using PHP 7, and as it turns out, so is HostMonster, so I'm in luck! 🙂 At the same time, I really wanted to document all the components and links so that this post makes it a lot easier to update things later.
As a point of reference, the CodeHighlighterPlus project is based off the CodeHighlighter WordPress plugin, and it's not bad - it's just not been updated in many years, and there are a lot of added languages in that time. Still... I tip my hat to the original authors, as I couldn't have done it without them.
The steps to do this required a little digging, but that wasn't bad - in that I had a few posts about this process already, and so let's just repeat them here to make sure it's all clear for the next time. I started by making sure that my local CodeHighlighterPlus plugin was up-to-date with the GitHub repo. All good, so let's get the latest code from GeSHi, and just overlay it on the local repo. Replace where necessary, and then we're up to date with GeSHi... but it's not really cleaned up the way I like it.
The next thing was to update the geshi.php file for a few changes. The first thing I wanted to tackle with CodeHighlighterPlus was the line numbers. There was far too much space between the lines in a code sample with line numbers. This is corrected simply in the style for the lines:
/** * Line number styles * @var string */ protected $line_style1 = 'font-weight: normal; vertical-align:top;'; /** * Line number styles for fancy lines * @var string */ protected $line_style2 = 'font-weight: bold; vertical-align:top;';
to:
/** * Line number styles * @var string */ protected $line_style1 = 'margin: 0; font-weight: normal; vertical-align:top;'; /** * Line number styles for fancy lines * @var string */ protected $line_style2 = 'margin: 0; font-weight: bold; vertical-align:top;';
The last change is for the blank lines that start, and end, the code section when you use line numbers. It's just plain annoying. Change:
// Get code into lines /** NOTE: memorypeak #2 */
to:
// Get code into lines /** NOTE: memorypeak #2 */ // remove a blank first and last line } }
and we are good to go with the changes to the code. Check everything in, push it up to GitHub and we're ready to deploy it.
At this point, I just need to deploy this to each of the WordPress sites on my server - and that's as simple as:
$ cd public_html/blog/wp-content/plugins/CodeHighlighterPlus $ git pull
where blog is the directory in the WordPress content for the specific blog I'm working with. I simply use GitHub as the mechanism of deployment - with a pull system to make sure it doesn't mess too much stuff up.
In this release of GeSHi, we now have support for the following languages:
4cs e magiksf qml 6502acme ecmascript make racket 6502kickass eiffel mapbasic rails 6502tasm email mathematica rbs 68000devpac epc matlab rebol abap erlang mercury reg actionscript euphoria metapost rexx actionscript3 ezt mirc robots ada f1 mk-61 rpmspec aimms falcon mmix rsplus algol68 fo modula2 ruby apache fortran modula3 rust applescript freebasic mpasm sas apt_sources freeswitch mxml sass arm fsharp mysql scala asm gambas nagios scheme asp gdb netrexx scilab asymptote genero newlisp scl autoconf genie nginx sdlbasic autohotkey gettext nimrod smalltalk autoit glsl nsis smarty avisynth gml oberon2 spark awk gnuplot objc sparql bascomavr go objeck sql bash groovy ocaml-brief standardml basic4gl gwbasic ocaml stonescript batch haskell octave swift bf haxe oobas systemverilog biblatex hicest oorexx tcl bibtex hq9plus oracle11 tclegg blitzbasic html4strict oracle8 teraterm bnf html5 oxygene texgraph boo icon oz text c idl parasail thinbasic c_loadrunner ini parigp tsql c_mac inno pascal twig c_winapi intercal pcre typoscript caddcl io per unicon cadlisp ispfpanel perl upc ceylon j perl6 urbi cfdg java pf uscript cfm java5 phix vala chaiscript javascript php-brief vb chapel jcl php vbnet cil jquery pic16 vbscript clojure julia pike vedit cmake julia.bak pixelbender verilog cobol kixtart pli vhdl coffeescript klonec plsql vim cpp-qt klonecpp postgresql visualfoxpro cpp-winapi kotlin postscript visualprolog cpp latex povray whitespace csharp lb powerbuilder whois css ldif powershell winbatch cuesheet lisp proftpd xbasic d llvm progress xml dart locobasic prolog xojo dcl logtalk properties xorg_conf dcpu16 lolcode providex xpp dcs lotusformulas purebasic xyscript delphi lotusscript pycon yaml diff lscript pys60 z80 div lsl2 python zxbasic dos lua q dot m68k qbasic
And with the addition of Swift, I have highlighting on all the code snippets I've been adding. Very nice!