Downloads
Wiki
Build CodeLite
Devs
|
Main /
AddingNewLexerAdding new syntax highlight is a rather simple task (assuming the desired lexer exists in the Scintilla stack). Under codelite's lexer settings folder ( ~/.codelite/lexers or APPDATA\CodeLite\lexers) you will find 2 files:
Each XML file represents a complete color scheme. Add your lexer XML element at the end of the XML file, but before the enclosing </Lexers> tag When adding a new lexer, it is best copying from one of the existing lexers and modifying it ( to get a working skeleton ) Each lexer is enclosed under the <Lexer></Lexer> tags For example: <Lexer Name="MyLexer" StylingWithinPreProcessor="yes" Id="76"> </Lexer> The lexer's "Id" property must exist. Below is the list of available lexers and their respective IDs: wxSTC_LEX_CONTAINER 0 wxSTC_LEX_NULL 1 wxSTC_LEX_PYTHON 2 wxSTC_LEX_CPP 3 wxSTC_LEX_HTML 4 wxSTC_LEX_XML 5 wxSTC_LEX_PERL 6 wxSTC_LEX_SQL 7 wxSTC_LEX_VB 8 wxSTC_LEX_PROPERTIES 9 wxSTC_LEX_ERRORLIST 10 wxSTC_LEX_MAKEFILE 11 wxSTC_LEX_BATCH 12 wxSTC_LEX_XCODE 13 wxSTC_LEX_LATEX 14 wxSTC_LEX_LUA 15 wxSTC_LEX_DIFF 16 wxSTC_LEX_CONF 17 wxSTC_LEX_PASCAL 18 wxSTC_LEX_AVE 19 wxSTC_LEX_ADA 20 wxSTC_LEX_LISP 21 wxSTC_LEX_RUBY 22 wxSTC_LEX_EIFFEL 23 wxSTC_LEX_EIFFELKW 24 wxSTC_LEX_TCL 25 wxSTC_LEX_NNCRONTAB 26 wxSTC_LEX_BULLANT 27 wxSTC_LEX_VBSCRIPT 28 wxSTC_LEX_BAAN 31 wxSTC_LEX_MATLAB 32 wxSTC_LEX_SCRIPTOL 33 wxSTC_LEX_ASM 34 wxSTC_LEX_CPPNOCASE 35 wxSTC_LEX_FORTRAN 36 wxSTC_LEX_F77 37 wxSTC_LEX_CSS 38 wxSTC_LEX_POV 39 wxSTC_LEX_LOUT 40 wxSTC_LEX_ESCRIPT 41 wxSTC_LEX_PS 42 wxSTC_LEX_NSIS 43 wxSTC_LEX_MMIXAL 44 wxSTC_LEX_CLW 45 wxSTC_LEX_CLWNOCASE 46 wxSTC_LEX_LOT 47 wxSTC_LEX_YAML 48 wxSTC_LEX_TEX 49 wxSTC_LEX_METAPOST 50 wxSTC_LEX_POWERBASIC 51 wxSTC_LEX_FORTH 52 wxSTC_LEX_ERLANG 53 wxSTC_LEX_OCTAVE 54 wxSTC_LEX_MSSQL 55 wxSTC_LEX_VERILOG 56 wxSTC_LEX_KIX 57 wxSTC_LEX_GUI4CLI 58 wxSTC_LEX_SPECMAN 59 wxSTC_LEX_AU3 60 wxSTC_LEX_APDL 61 wxSTC_LEX_BASH 62 wxSTC_LEX_ASN1 63 wxSTC_LEX_VHDL 64 wxSTC_LEX_CAML 65 wxSTC_LEX_BLITZBASIC 66 wxSTC_LEX_PUREBASIC 67 wxSTC_LEX_HASKELL 68 wxSTC_LEX_PHPSCRIPT 69 wxSTC_LEX_TADS3 70 wxSTC_LEX_REBOL 71 wxSTC_LEX_SMALLTALK 72 wxSTC_LEX_FLAGSHIP 73 wxSTC_LEX_CSOUND 74 wxSTC_LEX_FREEBASIC 75 wxSTC_LEX_INNOSETUP 76 wxSTC_LEX_OPAL 77 wxSTC_LEX_SPICE 78 wxSTC_LEX_D 79 wxSTC_LEX_CMAKE 80 wxSTC_LEX_GAP 81 wxSTC_LEX_PLM 82 wxSTC_LEX_PROGRESS 83 wxSTC_LEX_ABAQUS 84 wxSTC_LEX_ASYMPTOTE 85 wxSTC_LEX_R 86 wxSTC_LEX_MAGIK 87 wxSTC_LEX_POWERSHELL 88 wxSTC_LEX_MYSQL 89 wxSTC_LEX_PO 90 wxSTC_LEX_TAL 91 wxSTC_LEX_COBOL 92 wxSTC_LEX_TACL 93 wxSTC_LEX_SORCUS 94 wxSTC_LEX_POWERPRO 95 wxSTC_LEX_NIMROD 96 wxSTC_LEX_SML 97 wxSTC_LEX_MARKDOWN 98 wxSTC_LEX_TXT2TAGS 99 wxSTC_LEX_A68K 100 wxSTC_LEX_MODULA 101 wxSTC_LEX_COFFEESCRIPT 102 wxSTC_LEX_TCMD 103 wxSTC_LEX_AVS 104 wxSTC_LEX_ECL 105 wxSTC_LEX_OSCRIPT 106 wxSTC_LEX_VISUALPROLOG 107 Next, edit the keywords set. If you don't need more than one keyword set, you can leave the other keywords empty. For more information about which lexer requires more than one keyword set, refer to http://scintilla.org/ <KeyWords0>my space delimited key word set</KeyWords0> <KeyWords1></KeyWords1> <KeyWords2></KeyWords2> <KeyWords3></KeyWords3> Edit the file extensions so CodeLite can assign the new lexer to them: <Extensions>*.ext;*.ext2;*.lal</Extensions> Last, the 'properties' section. Each lexer has several lexical states, and each of those can be assigned a different visual style (for example, in the C++ lexer, a comment is a state, so you might want to assign it a different colour and font; a preprocessor line is also a state which you would usually choose to colour differently; and so on and so forth). Each of the above lexers, has a predefined state. to see the full list of states per lexer, search at wxStyledTextCtrl header file (a wxWidgets wrapper for Scintilla) For example, the C++ lexer has the following states (scintilla's states are numbered from 0-n) - it is recommended to leave the 'Face' property empty; CodeLite will choose one for you from the FIXED WIDTH font family: <Property Id="0" Name="Default" Bold="no" Face="" Colour="#808080" BgColour="#FFFFFF" Size="9"/> <Property Id="1" Name="Comment" Bold="no" Face="" Colour="#008000" BgColour="#FFFFFF" Size="9"/> <Property Id="2" Name="Keyword" Bold="no" Face="" Colour="#0000FF" BgColour="#FFFFFF" Size="9"/> <Property Id="3" Name="Parameter" Bold="no" Face="" Colour="#800040" BgColour="#FFFFFF" Size="9"/> <Property Id="4" Name="Section" Bold="no" Face="" Colour="#400000" BgColour="#C8C891" Size="9"/> <Property Id="5" Name="Preprocessor" Bold="no" Face="" Colour="#808080" BgColour="#FFFFFF" Size="9"/> <Property Id="6" Name="Preprocessor (inline)" Bold="no" Face="" Colour="#808080" BgColour="#FFFFFF" Size="9"/> <Property Id="7" Name="Pascal comment" Bold="no" Face="" Colour="#008000" BgColour="#FFFFFF" Size="9"/> <Property Id="8" Name="Pascal keyword" Bold="no" Face="" Colour="#0000FF" BgColour="#FFFFFF" Size="9"/> <Property Id="9" Name="User defined keyword" Bold="no" Face="" Colour="#800080" BgColour="#FFFFFF" Size="9"/> <Property Id="10" Name="Double quoted string" Bold="no" Face="" Colour="#808080" BgColour="#FFFFFF" Size="9"/> <Property Id="11" Name="Single quoted string" Bold="no" Face="" Colour="#800000" BgColour="#FFFFFF" Size="9"/> Where:
Ids -1 to -3 and 33 to 35, and 37-38 are special; they should be in every new lexer you add: <Property Id="-1" Name="Fold Margin" Bold="no" Face="" Colour="#FFFFFF" BgColour="#D0D0D0" Size="9"/> <Property Id="-2" Name="Text Selection" Bold="no" Face="" Colour="#000000" BgColour="#C0C0C0" Size="9"/> <Property Id="-3" Name="Caret Colour" Bold="no" Face="" Colour="#000000" BgColour="#000000" Size="9"/> <Property Id="33" Name="Line Numbers" Bold="no" Face="" Colour="#004080" BgColour="#FFFFFF" Size="9"/> <Property Id="34" Name="Brace match" Bold="no" Face="" Colour="#000000" BgColour="#8BBF86" Size="9"/> <Property Id="35" Name="Brace bad match" Bold="no" Face="" Colour="#000000" BgColour="#FF0000" Size="9"/> <Property Id="37" Name="Indent Guide" Bold="no" Italic="no" Underline="no" Face="" Colour="#C0C0C0" BgColour="#FFFFFF" Size="9"/> <Property Id="38" Name="Calltip" Bold="no" Italic="no" Underline="no" Face="" Colour="#C0C0C0" BgColour="#FFFFFF" Size="9"/> |