{"id":157,"date":"2007-07-02T19:27:00","date_gmt":"2007-07-02T18:27:00","guid":{"rendered":"http:\/\/bar-solutions.com\/wordpress\/?p=157"},"modified":"2007-07-02T19:29:00","modified_gmt":"2007-07-02T18:29:00","slug":"automatic-syntax-highlighting","status":"publish","type":"post","link":"https:\/\/blog.bar-solutions.com\/?p=157","title":{"rendered":"Automatic Syntax Highlighting&#8230;"},"content":{"rendered":"<p>In <a title=\"Writer Zone\" href=\"http:\/\/windowslivewriter.spaces.live.com\/\" target=\"_blank\">Windows Live Writer<\/a> you can add <a title=\"Windows Live Gallery\" href=\"http:\/\/gallery.live.com\/default.aspx?pl=8\" target=\"_blank\">Plugins<\/a> that do certain things for you. One of those things is to add syntax highlighting to your postings.<\/p>\n<p>I found a <a title=\"Steve Dunn's web site\" href=\"http:\/\/dunnhq.com\/codeformatterforwindowslivewriter\" target=\"_blank\">Code Formatter for Windows Live Writer<\/a> that does just about all you need, except of course for PL\/SQL (and Delphi) code. Doing some more searching on the internet, brought me to <a title=\"Me, Myself and Delphi: Windows Live Writer, Spell Checker, Pascal Code Formatting\" href=\"http:\/\/memyselfanddelphi.blogspot.com\/2007\/06\/windows-live-writer-spell-checker.html\" target=\"_blank\">this page<\/a>. On this page is explained how to implement code formatting for Delphi Code. It was done relatively easy by placing a new XML file in the languages folder and overwriting one file in your plugins folder. (scroll down to &#8216;Wrap up&#8217; to find the instructions).<\/p>\n<p><!--more--><\/p>\n<p>Now, that&#8217;s part of the issue solved, how about that PL\/SQL code.<\/p>\n<p>I have this code:<\/p>\n<blockquote>\n<p><font face=\"Terminal\" size=\"1\">CREATE OR REPLACE FUNCTION betwnstr (<br \/>&nbsp;&nbsp; string_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; VARCHAR2<br \/>&nbsp;, start_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PLS_INTEGER<br \/>&nbsp;, end_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp; PLS_INTEGER<br \/>&nbsp;, inclusive_in&nbsp;&nbsp; IN&nbsp;&nbsp; BOOLEAN := TRUE<br \/>)<br \/>&nbsp;&nbsp; RETURN VARCHAR2<br \/>IS<br \/>&nbsp;&nbsp; v_start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PLS_INTEGER;<br \/>&nbsp;&nbsp; v_numchars&nbsp;&nbsp; PLS_INTEGER;<br \/>BEGIN<br \/>&nbsp;&nbsp; IF&nbsp;&nbsp;&nbsp; string_in IS NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OR (start_in &lt; 0 AND end_in &gt; 0)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OR (start_in &gt; 0 AND end_in &lt; 0)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OR (start_in &lt; 0 AND end_in &gt; start_in)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OR (start_in &gt; 0 AND end_in &lt; start_in)<br \/>&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN NULL;<br \/>&nbsp;&nbsp; ELSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF start_in &lt; 0<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_numchars := ABS (end_in) &#8211; ABS (start_in) + 1;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_start := GREATEST (end_in, -1 * LENGTH (string_in));<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSIF start_in = 0<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_start := 1;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_numchars := ABS (end_in) &#8211; ABS (v_start) + 1;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_start := start_in;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_numchars := ABS (end_in) &#8211; ABS (v_start) + 1;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF; <\/font> <\/p>\n<p><font face=\"Terminal\" size=\"1\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT NVL (inclusive_in, FALSE)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_start := v_start + 1;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_numchars := v_numchars &#8211; 2;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF; <\/font> <\/p>\n<p><font face=\"Terminal\" size=\"1\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN (SUBSTR (string_in, v_start, v_numchars));<br \/>&nbsp;&nbsp; END IF;<br \/>END betwnstr;<\/font> <\/p>\n<\/blockquote>\n<p>And I want to easily format it into this:  <\/p>\n<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4084b9d4-3318-4e72-aead-b261fa535a91\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 401px; padding-top: 0px\">\n<pre style=\"background-color:White;;overflow: none;;font-family:Verdana;font-size:11.25\"><div><!--\r\n\r\nCode highlighting produced by Actipro CodeHighlighter (freeware)\r\nhttp:\/\/www.CodeHighlighter.com\/\r\n\r\n--><span style=\"color: #0000FF; \">CREATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">REPLACE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> betwnstr (\r\n   string_in      <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">   <\/span><span style=\"color: #0000FF; \">VARCHAR2<\/span><span style=\"color: #000000; \">\r\n , start_in       <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">   <\/span><span style=\"color: #0000FF; \">PLS_INTEGER<\/span><span style=\"color: #000000; \">\r\n , end_in         <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">   <\/span><span style=\"color: #0000FF; \">PLS_INTEGER<\/span><span style=\"color: #000000; \">\r\n , inclusive_in   <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">   <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \"> :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">TRUE<\/span><span style=\"color: #000000; \">\r\n)\r\n   <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">VARCHAR2<\/span><span style=\"color: #000000; \">\r\n<\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\r\n   v_start      <\/span><span style=\"color: #0000FF; \">PLS_INTEGER<\/span><span style=\"color: #000000; \">;\r\n   v_numchars   <\/span><span style=\"color: #0000FF; \">PLS_INTEGER<\/span><span style=\"color: #000000; \">;\r\n<\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\r\n   <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \">    string_in <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">NULL<\/span><span style=\"color: #000000; \">\r\n      <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> (start_in <\/span><span style=\"color: #000000; \">&lt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">AND<\/span><span style=\"color: #000000; \"> end_in <\/span><span style=\"color: #000000; \">&gt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \">)\r\n      <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> (start_in <\/span><span style=\"color: #000000; \">&gt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">AND<\/span><span style=\"color: #000000; \"> end_in <\/span><span style=\"color: #000000; \">&lt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \">)\r\n      <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> (start_in <\/span><span style=\"color: #000000; \">&lt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">AND<\/span><span style=\"color: #000000; \"> end_in <\/span><span style=\"color: #000000; \">&gt;<\/span><span style=\"color: #000000; \"> start_in)\r\n      <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> (start_in <\/span><span style=\"color: #000000; \">&gt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">AND<\/span><span style=\"color: #000000; \"> end_in <\/span><span style=\"color: #000000; \">&lt;<\/span><span style=\"color: #000000; \"> start_in)\r\n   <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \">\r\n      <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">NULL<\/span><span style=\"color: #000000; \">;\r\n   <\/span><span style=\"color: #0000FF; \">ELSE<\/span><span style=\"color: #000000; \">\r\n      <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \"> start_in <\/span><span style=\"color: #000000; \">&lt;<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \">\r\n      <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \">\r\n         v_numchars :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> ABS (end_in) <\/span><span style=\"color: #000000; \">-<\/span><span style=\"color: #000000; \"> ABS (start_in) <\/span><span style=\"color: #000000; \">+<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\r\n         v_start :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> GREATEST (end_in, <\/span><span style=\"color: #000000; \">-<\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #000000; \">*<\/span><span style=\"color: #000000; \"> LENGTH (string_in));\r\n      <\/span><span style=\"color: #0000FF; \">ELSIF<\/span><span style=\"color: #000000; \"> start_in <\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">0<\/span><span style=\"color: #000000; \">\r\n      <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \">\r\n         v_start :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\r\n         v_numchars :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> ABS (end_in) <\/span><span style=\"color: #000000; \">-<\/span><span style=\"color: #000000; \"> ABS (v_start) <\/span><span style=\"color: #000000; \">+<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\r\n      <\/span><span style=\"color: #0000FF; \">ELSE<\/span><span style=\"color: #000000; \">\r\n         v_start :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> start_in;\r\n         v_numchars :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> ABS (end_in) <\/span><span style=\"color: #000000; \">-<\/span><span style=\"color: #000000; \"> ABS (v_start) <\/span><span style=\"color: #000000; \">+<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\r\n      <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \">;\r\n\r\n      <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">NOT<\/span><span style=\"color: #000000; \"> NVL (inclusive_in, <\/span><span style=\"color: #0000FF; \">FALSE<\/span><span style=\"color: #000000; \">)\r\n      <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \">\r\n         v_start :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> v_start <\/span><span style=\"color: #000000; \">+<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\r\n         v_numchars :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> v_numchars <\/span><span style=\"color: #000000; \">-<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">2<\/span><span style=\"color: #000000; \">;\r\n      <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \">;\r\n\r\n      <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> (SUBSTR (string_in, v_start, v_numchars));\r\n   <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \">;\r\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> betwnstr;<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<\/p>\n<p>So I decided to create my own XML file to do the syntax highlighting using this plugin. You can download the XML file <a title=\"PLSQL Syntax highlighting\" href=\"http:\/\/bar-solutions.com\/wordpress\/wp-content\/uploads\/2007\/07\/ActiproSoftware.PLSQL.zip\" target=\"_blank\">here<\/a>. Please note that I am not an expert on the subject of these XML files, so if you have any ideas on how to make the XML file better, please don&#8217;t hesitate to contact me and maybe we can make the PL\/SQL code formatter better.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Windows Live Writer you can add Plugins that do certain things for you. One of those things is to add syntax highlighting to your postings. I found a Code Formatter for Windows Live Writer that does just about all you need, except of course for PL\/SQL (and Delphi) code. Doing some more searching on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2,5,4],"tags":[],"class_list":["post-157","post","type-post","status-publish","format-standard","hentry","category-delphi","category-oracle","category-plsql","category-tools"],"_links":{"self":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts\/157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=157"}],"version-history":[{"count":0,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts\/157\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}