"Notepad2" from the swiss programmer Florian Balmer.
http://www.flos-freeware.ch/notepad2.html
Notepad2 is a free light-weight (and portable!) text editor with built in syntax highlighting for many programming languages.
But unfortunaltely it does not support the Purebasic syntax in the original edition from Florian.
I already asked Florian via email if he would implement the PureBasic syntax sheme, but unfortunately he has not done so. :-/
Florian also provides the full source code of Notepad2 on his website and so I wonder if there exists already some modifications of Notepad2 including the PB syntax sheme? I asked google, but my research was fruitless. :-/
there are some other Notepad2 mods, but not for the PureBasic syntax.
Does anyone know a modification of Notepad2 with implemented PureBasic syntax sheme?
If not, then I want to ask, if someone of you is able to compile the C/C++ code of Notepad2?
... if we have a look into the Styles.c file of the source code package, it looks not really difficult to me to extend the file with the PB syntax sheme.readme.txt from np2src.zip wrote:The Notepad2 Source Code
This package contains the full source code of Notepad2 4.1.24 for
Windows. Project files for Visual C++ 7.0 are included. Chances are
that Notepad2 can be rebuilt with other development tools, including
the free Visual C++ Express Edition, but I haven't tested this.
Code: Select all
/******************************************************************************
*
*
* Notepad2
*
* Styles.c
* Scintilla Style Management
*
* See Readme.txt for more information about this source code.
* Please send me your comments to this work.
*
* See License.txt for details about distribution and modification.
*
* (c) Florian Balmer 1996-2010
* florian.balmer@gmail.com
* http://www.flos-freeware.ch
*
*
******************************************************************************/
#define _WIN32_WINNT 0x501
#include <windows.h>
#include <commctrl.h>
#include <commdlg.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <stdio.h>
#include "dialogs.h"
#include "helpers.h"
#include "notepad2.h"
#include "scintilla.h"
#include "scilexer.h"
#include "edit.h"
#include "styles.h"
#include "resource.h"
#define MULTI_STYLE(a,b,c,d) ((a)|(b<<8)|(c<<16)|(d<<24))
KEYWORDLIST KeyWords_NULL = {
"", "", "", "", "", "", "", "", "" };
EDITLEXER lexDefault = { SCLEX_NULL, 63000, L"Default Text", L"txt; text; wtx; log; asc; doc; diz; nfo", L"", &KeyWords_NULL, {
/* 0 */ { STYLE_DEFAULT, 63100, L"Default Style", L"font:Lucida Console; size:10", L"" },
/* 1 */ { STYLE_LINENUMBER, 63101, L"Margins and Line Numbers", L"size:-2; fore:#FF0000", L"" },
/* 2 */ { STYLE_BRACELIGHT, 63102, L"Matching Braces", L"size:+1; bold; fore:#FF0000", L"" },
/* 3 */ { STYLE_BRACEBAD, 63103, L"Matching Braces Error", L"size:+1; bold; fore:#000080", L"" },
/* 4 */ { STYLE_CONTROLCHAR, 63104, L"Control Characters (Font)", L"size:-1", L"" },
/* 5 */ { STYLE_INDENTGUIDE, 63105, L"Indentation Guide (Color)", L"fore:#FFC000", L"" },
/* 6 */ { SCI_SETSELFORE+SCI_SETSELBACK, 63106, L"Selected Text (Colors)", L"back:#0A246A; eolfilled; alpha:95", L"" },
/* 7 */ { SCI_SETWHITESPACEFORE+SCI_SETWHITESPACEBACK+SCI_SETWHITESPACESIZE, 63107, L"Whitespace (Colors, Size 0-5)", L"fore:#FF4000", L"" },
/* 8 */ { SCI_SETCARETLINEBACK, 63108, L"Current Line Background (Color)", L"back:#FFFF00; alpha:50", L"" },
/* 9 */ { SCI_SETCARETFORE, 63109, L"Caret Foreground (Color)", L"", L"" },
/* 10 */ { SCI_SETCARETWIDTH, 63110, L"Caret Width (Size 1-3)", L"", L"" },
/* 11 */ { SCI_SETEDGECOLOUR, 63111, L"Long Line Marker (Colors)", L"fore:#FFC000", L"" },
/* 12 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63112, L"Extra Line Spacing (Size)", L"size:2", L"" },
/* 13 */ { STYLE_DEFAULT, 63113, L"2nd Default Style", L"font:Courier New; size:10", L"" },
/* 14 */ { STYLE_LINENUMBER, 63114, L"2nd Margins and Line Numbers", L"font:Tahoma; size:-2; fore:#FF0000", L"" },
/* 15 */ { STYLE_BRACELIGHT, 63115, L"2nd Matching Braces", L"bold; fore:#FF0000", L"" },
/* 16 */ { STYLE_BRACEBAD, 63116, L"2nd Matching Braces Error", L"bold; fore:#000080", L"" },
/* 17 */ { STYLE_CONTROLCHAR, 63117, L"2nd Control Characters (Font)", L"size:-1", L"" },
/* 18 */ { STYLE_INDENTGUIDE, 63118, L"2nd Indentation Guide (Color)", L"fore:#FFC000", L"" },
/* 19 */ { SCI_SETSELFORE+SCI_SETSELBACK, 63119, L"2nd Selected Text (Colors)", L"eolfilled", L"" },
/* 20 */ { SCI_SETWHITESPACEFORE+SCI_SETWHITESPACEBACK+SCI_SETWHITESPACESIZE, 63120, L"2nd Whitespace (Colors, Size 0-5)", L"fore:#FF4000", L"" },
/* 21 */ { SCI_SETCARETLINEBACK, 63121, L"2nd Current Line Background (Color)", L"", L"" },
/* 22 */ { SCI_SETCARETFORE, 63122, L"2nd Caret Foreground (Color)", L"", L"" },
/* 23 */ { SCI_SETCARETWIDTH, 63123, L"2nd Caret Width (Size 1-3)", L"", L"" },
/* 24 */ { SCI_SETEDGECOLOUR, 63124, L"2nd Long Line Marker (Colors)", L"fore:#FFC000", L"" },
/* 25 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63125, L"2nd Extra Line Spacing (Size)", L"", L"" },
{ -1, 00000, L"", L"", L"" } } };
KEYWORDLIST KeyWords_HTML = {
"a abbr accept accept-charset accesskey acronym action address align alink alt and applet archive "
"area article aside async audio autocomplete autofocus axis b background base basefont bb bdo "
"bgcolor big blockquote body border bordercolor br button canvas caption cellpadding cellspacing "
"center char charoff charset checkbox checked cite class classid clear code codebase codetype col "
"colgroup color cols colspan command compact content contenteditable contextmenu coords data "
"datafld dataformatas datagrid datalist datapagesize datasrc datetime dd declare defer del "
"details dfn dialog dir disabled div dl draggable dt em embed enctype event eventsource face "
"fieldset figure file font footer for form formaction formenctype formmethod formnovalidate "
"formtarget frame frameborder frameset h1 h2 h3 h4 h5 h6 head header headers height hidden hr "
"href hreflang hspace html http-equiv i id iframe image img input ins isindex ismap kbd keygen "
"label lang language leftmargin legend li link list longdesc manifest map marginheight "
"marginwidth mark max maxlength media menu meta meter method min multiple name nav noframes "
"nohref noresize noscript noshade novalidate nowrap object ol onblur onchange onclick ondblclick "
"onfocus onkeydown onkeypress onkeyup onload onmessage onmousedown onmousemove onmouseout "
"onmouseover onmouseup onreset onselect onsubmit onunload optgroup option output p param password "
"pattern ping placeholder pre profile progress prompt public q radio readonly rel required reset "
"rev reversed rows rowspan rp rt ruby rules s samp sandbox scheme scope scoped script scrolling "
"seamless section select selected shape size sizes small source span spellcheck src standby start "
"step strike strong style sub submit summary sup tabindex table target tbody td text textarea "
"tfoot th thead time title topmargin tr tt type u ul usemap valign value valuetype var version "
"video vlink vspace width xml xmlns !doctype",
"abstract boolean break byte case catch char class const continue debugger default delete do "
"double else enum export extends false final finally float for function goto if implements "
"import in instanceof int interface long native new null package private protected public "
"return short static super switch synchronized this throw throws transient true try typeof var "
"void volatile while with",
"and begin case call continue do each else elseif end erase error event exit false for function get "
"gosub goto if implement in load loop lset me mid new next not nothing on or property raiseevent "
"rem resume return rset select set stop sub then to true unload until wend while with withevents "
"attribute alias as boolean byref byte byval const compare currency date declare dim double enum "
"explicit friend global integer let lib long module object option optional preserve private property "
"public redim single static string type variant",
"and assert break class continue def del elif else except exec finally for from global if import in is "
"lambda None not or pass print raise return try while yield",
"__callstatic __class__ __dir__ __file__ __function__ __get __isset __line__ __method__ "
"__namespace__ __set __sleep __unset __wakeup abstract and argc argv array as break case catch "
"cfunction class clone const continue declare default define die do e_all e_error e_fatal "
"e_notice e_parse e_strict e_warning echo else elseif empty enddeclare endfor endforeach endif "
"endswitch endwhile eval exception exit extends false final for foreach function global goto "
"http_cookie_vars http_env_vars http_get_vars http_post_files http_post_vars http_server_vars if "
"implements include include_once instanceof interface isset list namespace new not null "
"old_function or parent php_self print private protected public require require_once return "
"static stdclass switch this throw true try unset use var virtual while xor",
"", "", "", "" };
EDITLEXER lexHTML = { SCLEX_HTML, 63001, L"Web Source Code", L"html; htm; asp; aspx; shtml; htd; xhtml; php; php3; phtml; htt; cfm; tpl; dtd; hta; htc", L"", &KeyWords_HTML, {
{ STYLE_DEFAULT, 63126, L"Default", L"", L"" },
{ MULTI_STYLE(SCE_H_TAG,SCE_H_TAGEND,0,0), 63136, L"HTML Tag", L"fore:#648000", L"" },
{ SCE_H_TAGUNKNOWN, 63137, L"HTML Unknown Tag", L"fore:#C80000; back:#FFFF80", L"" },
{ SCE_H_ATTRIBUTE, 63138, L"HTML Attribute", L"fore:#FF4000", L"" },
{ SCE_H_ATTRIBUTEUNKNOWN, 63139, L"HTML Unknown Attribute", L"fore:#C80000; back:#FFFF80", L"" },
{ SCE_H_VALUE, 63140, L"HTML Value", L"fore:#3A6EA5", L"" },
{ MULTI_STYLE(SCE_H_DOUBLESTRING,SCE_H_SINGLESTRING,0,0), 63141, L"HTML String", L"fore:#3A6EA5", L"" },
{ SCE_H_OTHER, 63142, L"HTML Other Inside Tag", L"fore:#3A6EA5", L"" },
{ MULTI_STYLE(SCE_H_COMMENT,SCE_H_XCCOMMENT,0,0), 63143, L"HTML Comment", L"fore:#646464", L"" },
{ SCE_H_ENTITY, 63144, L"HTML Entity", L"fore:#B000B0", L"" },
{ SCE_H_DEFAULT, 63256, L"HTML Element Text", L"", L"" },
{ MULTI_STYLE(SCE_H_XMLSTART,SCE_H_XMLEND,0,0), 63145, L"XML Identifier", L"bold; fore:#881280", L"" },
{ SCE_H_SGML_DEFAULT, 63237, L"SGML", L"fore:#881280", L"" },
{ SCE_H_CDATA, 63147, L"CDATA", L"fore:#646464", L"" },
{ MULTI_STYLE(SCE_H_ASP,SCE_H_ASPAT,0,0), 63146, L"ASP Start Tag", L"bold; fore:#000080", L"" },
//{ SCE_H_SCRIPT, L"Script", L"", L"" },
{ SCE_H_QUESTION, 63148, L"PHP Start Tag", L"bold; fore:#000080", L"" },
{ SCE_HPHP_DEFAULT, 63149, L"PHP Default", L"", L"" },
{ MULTI_STYLE(SCE_HPHP_COMMENT,SCE_HPHP_COMMENTLINE,0,0), 63157, L"PHP Comment", L"fore:#FF8000", L"" },
{ SCE_HPHP_WORD, 63152, L"PHP Keyword", L"bold; fore:#A46000", L"" },
{ SCE_HPHP_HSTRING, 63150, L"PHP String", L"fore:#008000", L"" },
{ SCE_HPHP_SIMPLESTRING, 63151, L"PHP Simple String", L"fore:#008000", L"" },
{ SCE_HPHP_NUMBER, 63153, L"PHP Number", L"fore:#FF0000", L"" },
{ SCE_HPHP_OPERATOR, 63158, L"PHP Operator", L"fore:#B000B0", L"" },
{ SCE_HPHP_VARIABLE, 63154, L"PHP Variable", L"italic; fore:#000080", L"" },
{ SCE_HPHP_HSTRING_VARIABLE, 63155, L"PHP String Variable", L"italic; fore:#000080", L"" },
{ SCE_HPHP_COMPLEX_VARIABLE, 63156, L"PHP Complex Variable", L"italic; fore:#000080", L"" },
{ MULTI_STYLE(SCE_HJ_DEFAULT,SCE_HJ_START,0,0), 63159, L"JS Default", L"", L"" },
{ MULTI_STYLE(SCE_HJ_COMMENT,SCE_HJ_COMMENTLINE,SCE_HJ_COMMENTDOC,0), 63160, L"JS Comment", L"fore:#646464", L"" },
{ SCE_HJ_KEYWORD, 63163, L"JS Keyword", L"bold; fore:#A46000", L"" },
{ SCE_HJ_WORD, 63162, L"JS Identifier", L"", L"" },
{ MULTI_STYLE(SCE_HJ_DOUBLESTRING,SCE_HJ_SINGLESTRING,SCE_HJ_STRINGEOL,0), 63164, L"JS String", L"fore:#008000", L"" },
{ SCE_HJ_REGEX, 63166, L"JS Regex", L"fore:#006633; back:#FFF1A8", L"" },
{ SCE_HJ_NUMBER, 63161, L"JS Number", L"fore:#FF0000", L"" },
{ SCE_HJ_SYMBOLS, 63165, L"JS Symbols", L"fore:#B000B0", L"" },
{ MULTI_STYLE(SCE_HJA_DEFAULT,SCE_HJA_START,0,0), 63167, L"ASP JS Default", L"", L"" },
{ MULTI_STYLE(SCE_HJA_COMMENT,SCE_HJA_COMMENTLINE,SCE_HJA_COMMENTDOC,0), 63168, L"ASP JS Comment", L"fore:#646464", L"" },
{ SCE_HJA_KEYWORD, 63171, L"ASP JS Keyword", L"bold; fore:#A46000", L"" },
{ SCE_HJA_WORD, 63170, L"ASP JS Identifier", L"", L"" },
{ MULTI_STYLE(SCE_HJA_DOUBLESTRING,SCE_HJA_SINGLESTRING,SCE_HJA_STRINGEOL,0), 63172, L"ASP JS String", L"fore:#008000", L"" },
{ SCE_HJA_REGEX, 63174, L"ASP JS Regex", L"fore:#006633; back:#FFF1A8", L"" },
{ SCE_HJA_NUMBER, 63169, L"ASP JS Number", L"fore:#FF0000", L"" },
{ SCE_HJA_SYMBOLS, 63173, L"ASP JS Symbols", L"fore:#B000B0", L"" },
{ MULTI_STYLE(SCE_HB_DEFAULT,SCE_HB_START,0,0), 63175, L"VBS Default", L"", L"" },
{ SCE_HB_COMMENTLINE, 63176, L"VBS Comment", L"fore:#646464", L"" },
{ SCE_HB_WORD, 63178, L"VBS Keyword", L"bold; fore:#B000B0", L"" },
{ SCE_HB_IDENTIFIER, 63180, L"VBS Identifier", L"", L"" },
{ MULTI_STYLE(SCE_HB_STRING,SCE_HB_STRINGEOL,0,0), 63179, L"VBS String", L"fore:#008000", L"" },
{ SCE_HB_NUMBER, 63177, L"VBS Number", L"fore:#FF0000", L"" },
{ MULTI_STYLE(SCE_HBA_DEFAULT,SCE_HBA_START,0,0), 63181, L"ASP VBS Default", L"", L"" },
{ SCE_HBA_COMMENTLINE, 63182, L"ASP VBS Comment", L"fore:#646464", L"" },
{ SCE_HBA_WORD, 63184, L"ASP VBS Keyword", L"bold; fore:#B000B0", L"" },
{ SCE_HBA_IDENTIFIER, 63186, L"ASP VBS Identifier", L"", L"" },
{ MULTI_STYLE(SCE_HBA_STRING,SCE_HBA_STRINGEOL,0,0), 63185, L"ASP VBS String", L"fore:#008000", L"" },
{ SCE_HBA_NUMBER, 63183, L"ASP VBS Number", L"fore:#FF0000", L"" },
//{ SCE_HP_START, L"Phyton Start", L"", L"" },
//{ SCE_HP_DEFAULT, L"Phyton Default", L"", L"" },
//{ SCE_HP_COMMENTLINE, L"Phyton Comment Line", L"", L"" },
//{ SCE_HP_NUMBER, L"Phyton Number", L"", L"" },
//{ SCE_HP_STRING, L"Phyton String", L"", L"" },
//{ SCE_HP_CHARACTER, L"Phyton Character", L"", L"" },
//{ SCE_HP_WORD, L"Phyton Keyword", L"", L"" },
//{ SCE_HP_TRIPLE, L"Phyton Triple", L"", L"" },
//{ SCE_HP_TRIPLEDOUBLE, L"Phyton Triple Double", L"", L"" },
//{ SCE_HP_CLASSNAME, L"Phyton Class Name", L"", L"" },
//{ SCE_HP_DEFNAME, L"Phyton Def Name", L"", L"" },
//{ SCE_HP_OPERATOR, L"Phyton Operator", L"", L"" },
//{ SCE_HP_IDENTIFIER, L"Phyton Identifier", L"", L"" },
//{ SCE_HPA_START, L"ASP Phyton Start", L"", L"" },
//{ SCE_HPA_DEFAULT, L"ASP Phyton Default", L"", L"" },
//{ SCE_HPA_COMMENTLINE, L"ASP Phyton Comment Line", L"", L"" },
//{ SCE_HPA_NUMBER, L"ASP Phyton Number", L"", L"" },
//{ SCE_HPA_STRING, L"ASP Phyton String", L"", L"" },
//{ SCE_HPA_CHARACTER, L"ASP Phyton Character", L"", L"" },
//{ SCE_HPA_WORD, L"ASP Phyton Keyword", L"", L"" },
//{ SCE_HPA_TRIPLE, L"ASP Phyton Triple", L"", L"" },
//{ SCE_HPA_TRIPLEDOUBLE, L"ASP Phyton Triple Double", L"", L"" },
//{ SCE_HPA_CLASSNAME, L"ASP Phyton Class Name", L"", L"" },
//{ SCE_HPA_DEFNAME, L"ASP Phyton Def Name", L"", L"" },
//{ SCE_HPA_OPERATOR, L"ASP Phyton Operator", L"", L"" },
//{ SCE_HPA_IDENTIFIER, L"ASP Phyton Identifier", L"", L"" },
{ -1, 00000, L"", L"", L"" } } };
[... cut...]
I would be very happy if someone out there could compile a "PB version" of Notepad2

