Hi,
I'm using Win32::GUI::Scintilla package for my text editor and highlighting multiple words (with whitespace), like this ;
"This is a test" chars and whitespace highlighting but this code, not highlighting whitespace chars.
How do i do this? "This is a test" (with whitespace highlight)
Thank you, Regards...
here is my codes;
# perl -v
use strict;
use Win32::GUI;
use Win32::GUI::Scintilla;
my %faces = ( 'times' => 'Times New Roman',
'mono' => 'Courier New',
'helv' => 'Lucida Console',
'lucida' => 'Lucida Console',
'other' => 'Comic Sans MS',
'size' => '10',
'size2' => '9',
'backcol'=> '#FFFFFF',
'backcolorhight' => '#28C50F',
);
my $KEYWORD = q{
this is a test};
# main Window
my $Window = new Win32::GUI::Window (
-name => "Window",
-title => "Perl Editor",
-pos => [100, 100],
-size => [400, 400],
) or die "new Window";
my $Editor = $Window->AddScintilla (
-name => "Editor",
-pos => [0, 0],
-size => [400, 400],
-addexstyle => WS_EX_CLIENTEDGE,
) or die "new Edit";
# Init editor
Editor();
# Event loop
$Window->Show();
Win32::GUI::Dialog();
sub Editor {
#perl lexer
$Editor->SetLexer(Win32::GUI::Scintilla::SCLEX_PERL);
# Set Perl Keyword
$Editor->SetKeyWords(0, $KEYWORD);
# Win32::GUI::Scintilla::KEYWORDSET_MAX
# $Editor->SetKeyWords(0, $D);
$Editor->SetProperty("fold", "1");
$Editor->SetProperty("tab.timmy.whinge.level", "1");
# Indenetation
$Editor->SetIndentationGuides(1);
$Editor->SetUseTabs(1);
$Editor->SetTabWidth(3);
$Editor->SetIndent(3);
# Edge Mode
$Editor->SetEdgeMode(Win32::GUI::Scintilla::EDGE_LINE);
# $Editor->SetEdgeMode(Win32::GUI::Scintilla::EDGE_BACKGROUND);
$Editor->SetEdgeColumn(0);
$Editor->SetEdgeColour('00ff00');
$Editor->SetMarginTypeN(1, Win32::GUI::Scintilla::SC_MARGIN_NUMBER);
$Editor->SetMarginWidthN(1, 25);
$Editor->SetFoldMarginColour(1, '00E5FF');
$Editor->SetMarginTypeN(2, Win32::GUI::Scintilla::SC_MARGIN_SYMBOL);
$Editor->SetFoldMarginColour(2, '00E5FF');
$Editor->SetMarginMaskN(2, Win32::GUI::Scintilla::SC_MASK_FOLDERS);
$Editor->SetMarginSensitiveN(2, 1);
$Editor->SetMarginWidthN(2, 12);
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, Win32::GUI::Scintilla::SC_MARK_BOXPLUSCONNECTED);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#00FFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, Win32::GUI::Scintilla::SC_MARK_BOXMINUSCONNECTED);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID,'#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID,'#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, Win32::GUI::Scintilla::SC_MARK_TCORNER);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL,'#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL,'#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, Win32::GUI::Scintilla::SC_MARK_LCORNER);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, Win32::GUI::Scintilla::SC_MARK_VLINE);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, Win32::GUI::Scintilla::SC_MARK_BOXPLUS);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#000000');
$Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, Win32::GUI::Scintilla::SC_MARK_BOXMINUS);
$Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN,'#FFFFFF');
$Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN,'#000000');
# Define Style
$Editor->StyleClearAll();
# Global default styles for all languages
$Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_DEFAULT, "face:$faces{'mono'},size:$faces{'size'}");
$Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_LINENUMBER, "back:#CCFF00,fore:#FF00FF,face:$faces{mono},bold");
$Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_CONTROLCHAR, "face:$faces{mono}");
$Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold");
$Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold");
# White space
# $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DEFAULT, "back:$faces{'backcolorhight'},fore:#B3FF00,bold,size:$faces{'size2'}");
$Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_WORD , "underline,size:$faces{'size2'}");# "back:$faces{'backcolorhight'},fore:#B3FF00,bold,size:$faces{'size2'}"
}
# Main window event handler
sub Window_Terminate {-1}
sub Window_Resize {
if (defined $Window) {
my ($width, $height) = ($Window->GetClientRect)[2..3];
$Editor->Move (0, 0);
$Editor->Resize ($width, $height);
}
}