Author Topic: Syntax Highlighting for Forum Code Posts  (Read 3666 times)

0 Members and 1 Guest are viewing this topic.

kryton9

  • Hero Member
  • *****
  • Posts: 721
Syntax Highlighting for Forum Code Posts
« on: June 09, 2011, 09:37:15 PM »
Guys, it would be nice if code presented in posts were syntax highlighted. Here is one that generates some really beautiful looking code and is open source.
http://alexgorbatchev.com/SyntaxHighlighter/

Here you can see the code highlighted on a website that uses this program.
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++Structures.html

John

  • Hero Member
  • *****
  • Posts: 3607
Re: Syntax Highlighting for Forum Code Posts
« Reply #1 on: June 09, 2011, 10:57:26 PM »
Ken,

Simple Machines forum does support this add-on syntax highlighter. If you find one that does, please let us know.

John

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4205
    • Oxygen Basic
Re: Syntax Highlighting for Forum Code Posts
« Reply #2 on: June 09, 2011, 11:20:10 PM »
This one originates from the same author:

http://custom.simplemachines.org/mods/index.php?mod=2109

Are these packages accessible for custom programming?

Charles
« Last Edit: June 09, 2011, 11:26:36 PM by Charles Pegge »

John

  • Hero Member
  • *****
  • Posts: 3607
Re: Syntax Highlighting for Forum Code Posts
« Reply #3 on: June 10, 2011, 09:42:34 AM »
Here is a syntax .js for thinBasic.

Code: Text
  1. /**
  2.  * SyntaxHighlighter
  3.  * http://alexgorbatchev.com/SyntaxHighlighter
  4.  *
  5.  * SyntaxHighlighter is donationware. If you are using it, please donate.
  6.  * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
  7.  *
  8.  * @version
  9.  * 3.0.83 (July 02 2010)
  10.  *
  11.  * @copyright
  12.  * Copyright (C) 2004-2010 Alex Gorbatchev.
  13.  *
  14.  * @license
  15.  * Dual licensed under the MIT and GPL licenses.
  16.  */
  17. ;(function()
  18. {
  19.         // CommonJS
  20.         typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
  21.  
  22.         function Brush()
  23.         {
  24.  
  25.                 var CoreKeywords =      ' TBMain uses byval byref declare global local dword wend cos sin type as long function not string quad ' +
  26.                                         ' sub exit alias asciiz integer if then else step for next end wen Variant When While With double single ' +
  27.                                         ' static value dim ReDim Preserve parse to ext return number byte Extended Int Boolean ' +
  28.                                         ' log loge log10 str iif rnd rndf DegToRad Incr Decr Ubound In Sqr' +
  29.                                         ' format msgbox new timer export call rgb callback TrimFull ucase lcase mcase reset ' +
  30.                                         ' true false or and optional Function_NParams LOINT HIINT ' +
  31.                                         ' EndIf Len Asc Val Trim Mid Repeat at Using StrPtr Join ParseCount ParseSet' +
  32.                                         ' crlf spc nul ControlID ' +
  33.                                         ' Begin Const ' +
  34.                                         ' SELECT CASE DO LOOP ERR ' +
  35.                                         ' ARRAY SCAN COLLATE ASSIGN MOD ' +
  36.                                         ' HiResTimer_Init HiResTimer_Get HiResTimer_Get GetTickCount HiResTimer_Delta ' +
  37.                                         ' APP_SourcePath ' +
  38.                                         ' POINTAPI CHARRANGE ' +
  39.                                         ' Inside Between Outside IsTrue IsFalse Stop Shift Right Left Iterate Until ' +
  40.                                         ' LoWrd HiWrd IsPrime IFF' +
  41.                                         ' ';
  42.  
  43.                 var COM_Module =        ' COM_CreateObject COM_Succeeded COM_CallMethod COM_GetProperty COM_Release ' +
  44.                                         ' ';
  45.  
  46.                 var Console_Module =    ' Console_Write Write Console_Writeline Writeline Console_Waitkey Waitkey ' +
  47.                                         ' Print PrintL PrintAt ' +
  48.                                         ' Console_PrintAt Console_GetTextAttribute Console_SetTextAttribute Console_SetCursorPosition Console_ReadLine ' +
  49.                                         ' ';
  50.  
  51.                 var DT_Module =         ' DT_DateToSec DT_SecToDate DT_GetDate ' +
  52.                                         ' ';
  53.  
  54.                 var Eval_Module =       ' Evaluate Eval_String Eval_Number ' +
  55.                                         ' ';
  56.  
  57.                 var FILE_Module =       ' FILE_Open FILE_Load FILE_Save ' +
  58.                                         ' ';
  59.  
  60.                 var OS_Module =         ' OS_GetComputerName ' +
  61.                                         ' ';
  62.  
  63.                 var Oxygen_Module =     ' o2_basic o2_exec o2_error ' +
  64.                                         ' ';
  65.  
  66.                 var UI_Module =         ' MLGRID_Get MLGRID_Put MLGrid_SetSelected ' +
  67.                                         ' Dialog CONTROL ADD label button FONT Pixels Checkbox Check ' +
  68.                                         ' set minsize SHOW Modal Modeless DoEvents ' +
  69.                                         ' CBMSG Handle CBHNDL CBCTLMSG CBWPARAM CBLPARAM cbctl get text State Client ' +
  70.                                         ' Canvas Textbox ' +
  71.                                         ' Callback_Message Callback_Control_Message Callback_Handle Callback_Handle Callback_Control ' +
  72.                                         ' Canvas_Window Canvas_Attach Canvas_Clear Canvas_Polygon Canvas_Redraw Canvas_Width Canvas_WaitKey ' +
  73.                                         ' Canvas_Box Canvas_Ellipse Canvas_Arc Canvas_Line Canvas_Scale Canvas_BitmapRender Canvas_GetDC ' +
  74.                                         ' Win_GetCursorPos Win_ScreenToClient Menu PopUp ' +
  75.                                         ' Canvas_BitmapGetFileInfo Control_SetText Win_ClientToScreen SendMessage ' +
  76.                                         ' ';
  77.  
  78.                 var UIAdv_Module =      ' WebBrowser_zoom ' +
  79.                                         ' WebBrowser WebBrowser_Create WebBrowser_Busy WebBrowser_ForwardMessage  ' +
  80.                                         ' WebBrowser_GoBack WebBrowser_GoForward WebBrowser_GoHome WebBRowser_LocationURL  ' +
  81.                                         ' WebBRowser_LocationName WebBrowser_Navigate WebBrowser_Navigate2 WebBrowser_Stop  ' +
  82.                                         ' WebBrowser_Refresh WebBrowser_ReadyState WebBrowser_Zoom ' +
  83.                                         ' ';
  84.  
  85.                 var TBGL_Module =       ' TBGL_GetWindowKeyState TBGL_GetFrameRate TBGL_Camera TBGL_GetWindowClient TBGL_Rotate ' +
  86.                                         ' TBGL_SetLightParameter TBGL_DrawFrame TBGL_ClearFrame TBGL_UseLighting TBGL_UseLightSource ' +
  87.                                         ' TBGL_MouseGetPosX TBGL_MouseGetPosY TBGL_CallingWindow TBGL_UnBindPeriodicFunction ' +
  88.                                         ' TBGL_CreateWindowEx TBGL_ShowWindow TBGL_IsWindow TBGL_ResetKeyState TBGL_DestroyWindow ' +
  89.                                         ' TBGL_EntityGetFreeID TBGL_EntityCreateFuncSlot TBGL_EntitySetUserData TBGL_EntityEnumByDataSignature ' +
  90.                                         ' TBGL_TexturingQuery TBGL_EvaluatePOTMatch TBGL_MakeTexture TBGL_Viewport TBGL_RenderMatrix3D ' +
  91.                                         ' TBGL_RenderToTexture TBGL_Color TBGL_BlendFunc TBGL_RenderMatrix2D TBGL_PushStateProtect ' +
  92.                                         ' TBGL_PushState TBGL_BindTexture TBGL_PushMatrix TBGL_Translate TBGL_CallList TBGL_PopMatrix ' +
  93.                                         ' TBGL_PopState TBGL_PopStateProtect TBGL_EntityGetUserDataPointer TBGL_EntityTurn ' +
  94.                                         ' TBGL_Box TBGL_CallingEntity TBGL_EntitySetColor TBGL_EntitySetAmbient ' +
  95.                                         ' TBGL_BindCanvas TBGL_SceneCreate TBGL_EntityCreateCamera TBGL_EntitySetPos TBGL_BeginPoly TBGL_EndPoly ' +
  96.                                         ' TBGL_TexCoord2D TBGL_BackColor TBGL_EntitySetTargetPos TBGL_NewList TBGL_EndList TBGL_Vertex TBGL_Normal ' +
  97.                                         ' TBGL_EntityCreateDLSlot TBGL_EntityCreateSphere TBGL_EntityCreateLight TBGL_GetAsyncKeyState ' +
  98.                                         ' TBGL_ResetMatrix TBGL_SceneRender TBGL_EntityPush TBGL_EntityGetAngleXY TBGL_CanvasBound ' +
  99.                                         ' ';
  100.  
  101.                 var WMI_Module =        ' WMI_GetData ' +
  102.                                         ' ';
  103.  
  104.                 var SAPI_Module =       ' SAPI_Speak ' +
  105.                                         ' ';
  106.  
  107.                 var VBREGEXP_Module =   ' VBREGEXP_New VBRegExp_SetPattern VBREGEXP_SetIgnoreCase VBRegExp_SetGlobal VBRegExp_Execute ' +
  108.                                         ' VBMatchCollection_GetCount VBMatchCollection_GetItem VBMatch_GetFirstIndex VBMatch_Getlength ' +
  109.                                         ' VBMatch_GetValue VBREGEXP_Release ' +
  110.                                         ' ';
  111.  
  112.                 var Equates =           ' WM_CLOSE WM_COMMAND WM_INITDIALOG BN_CLICKED WS_POPUP WS_VISIBLE WS_CAPTION WS_SYSMENU WS_MINIMIZEBOX ' +
  113.                                         ' HWND_DESKTOP SW_HIDE SW_SHOW WM_LBUTTONDOWN WM_MOUSEMOVE CANVAS_FILLSTYLE_SOLID MAX_PATH ' +
  114.                                         ' VK_ESCAPE WS_CLIPCHILDREN TAB CRLF WM_DESTROY WM_RBUTTONDOWN MF_ENABLED NULL TPM_LEFTALIGN TPM_RIGHTBUTTON TPM_RETURNCMD' +
  115.                                         ' WS_CHILD WS_OVERLAPPEDWINDOW ' +
  116.                                         ' ';
  117.  
  118.                 this.regexList = [
  119.                         { regex: /'.*$/gm,                                              css: 'comments'         },      // one line comments
  120.                         { regex: SyntaxHighlighter.regexLib.doubleQuotedString,         css: 'string'           },      // strings
  121.                         { regex: /^\s*#.*/gmi,                                          css: 'preprocessor'     },      // preprocessor tags like #region and #endregion
  122.                         { regex: new RegExp(this.getKeywords(CoreKeywords), 'gmi'),     css: 'corekeyword'      },      // Core keyword
  123.                         { regex: new RegExp(this.getKeywords(Equates), 'gmi'),          css: 'equates'          },      // Equates
  124.                         { regex: new RegExp(this.getKeywords(COM_Module), 'gmi'),       css: 'modulekeyword'    },      // Modules keyword
  125.                         { regex: new RegExp(this.getKeywords(Console_Module), 'gmi'),   css: 'modulekeyword'    },      // Modules keyword
  126.                         { regex: new RegExp(this.getKeywords(DT_Module), 'gmi'),        css: 'modulekeyword'    },      // Modules keyword
  127.                         { regex: new RegExp(this.getKeywords(Eval_Module), 'gmi'),      css: 'modulekeyword'    },      // Modules keyword
  128.                         { regex: new RegExp(this.getKeywords(FILE_Module), 'gmi'),      css: 'modulekeyword'    },      // Modules keyword
  129.                         { regex: new RegExp(this.getKeywords(OS_Module), 'gmi'),        css: 'modulekeyword'    },      // Modules keyword
  130.                         { regex: new RegExp(this.getKeywords(Oxygen_Module), 'gmi'),    css: 'modulekeyword'    },      // Modules keyword
  131.                         { regex: new RegExp(this.getKeywords(UI_Module), 'gmi'),        css: 'modulekeyword'    },      // Modules keyword
  132.                         { regex: new RegExp(this.getKeywords(UIAdv_Module), 'gmi'),     css: 'modulekeyword'    },      // Modules keyword
  133.                         { regex: new RegExp(this.getKeywords(WMI_Module), 'gmi'),       css: 'modulekeyword'    },      // Modules keyword
  134.                         { regex: new RegExp(this.getKeywords(SAPI_Module), 'gmi'),      css: 'modulekeyword'    },      // Modules keyword
  135.                         { regex: new RegExp(this.getKeywords(TBGL_Module), 'gmi'),      css: 'modulekeyword'    },      // Modules keyword
  136.                         { regex: new RegExp(this.getKeywords(VBREGEXP_Module), 'gmi'),  css: 'modulekeyword'    }       // Modules keyword
  137.                         ];
  138.  
  139.                 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
  140.         };
  141.  
  142.         Brush.prototype = new SyntaxHighlighter.Highlighter();
  143.         Brush.aliases   = ['thinbasic', 'tb'];
  144.  
  145.         SyntaxHighlighter.brushes.Vb = Brush;
  146.  
  147.         // CommonJS
  148.         typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
  149. })();
  150.  

It might be a start to getting O2h working here. I installed this package and it should be syntax highlighting the above JavaScript code. I haven't figured out yet what is keeping from working.
« Last Edit: June 11, 2011, 03:17:34 AM by o2admin »

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4205
    • Oxygen Basic
Re: Syntax Highlighting for Forum Code Posts
« Reply #4 on: June 10, 2011, 11:41:35 AM »
Thanks John.

I switched back to the default theme and your syntax highlighting comes to life!

It has obviously been patched, so we could derive a more customised theme from it as per theme1.

Charles
« Last Edit: June 10, 2011, 12:12:42 PM by o2admin »

John

  • Hero Member
  • *****
  • Posts: 3607
Re: Syntax Highlighting for Forum Code Posts
« Reply #5 on: June 10, 2011, 12:25:14 PM »
I missed the fact that you are using a non-standard theme. Nice catch.

Let me know if there is anything I can do to help you with this. I don't feel qualified to build your O2h syntax .js file. Maybe Eros would be willing to give you a hand.

« Last Edit: June 10, 2011, 12:30:54 PM by JRS »