ADD: Feature [0000830] "Additional file extensions for syntax highlighters"

This commit is contained in:
Alexander Koblov 2014-03-21 17:36:07 +00:00
commit a98cfe4670
4 changed files with 133 additions and 6 deletions

View file

@ -302,6 +302,7 @@ var
J: LongWord;
begin
TargetHighlighter.Tag:= SourceHighlighter.Tag;
TargetHighlighter.DefaultFilter:= SourceHighlighter.DefaultFilter;
for J:= 0 to SourceHighlighter.AttrCount - 1 do
begin
TargetHighlighter.Attribute[J].Background:= SourceHighlighter.Attribute[J].Background;
@ -351,6 +352,7 @@ begin
if Assigned(Highlighter) then
begin
Highlighter.Tag := Config.GetAttr(FormNode, 'Tag', 1);
Highlighter.DefaultFilter:= Config.GetValue(FormNode, 'DefaultFilter', Highlighter.DefaultFilter);
AttributeNode := Config.FindNode(FormNode, 'Attribute');
if Assigned(AttributeNode) then
begin
@ -402,6 +404,7 @@ var
FormNode := Config.AddNode(Root, 'Highlighter');
Config.SetAttr(FormNode, 'Tag', Highlighter.Tag);
Config.SetAttr(FormNode, 'Name', Highlighter.LanguageName);
Config.SetValue(FormNode, 'DefaultFilter', Highlighter.DefaultFilter);
for J:= 0 to Highlighter.AttrCount - 1 do
begin
Attribute:= Highlighter.Attribute[J];

View file

@ -29,21 +29,122 @@ inherited frmOptionsEditorColors: TfrmOptionsEditorColors
Left = 0
Height = 21
Top = 3
Width = 356
Width = 326
BorderSpacing.Top = 3
ItemHeight = 13
OnChange = cmbLanguageChange
Style = csDropDownList
TabOrder = 0
end
object stFileExtensions: TStaticText
object pnlFileExtensions: TPanel
AnchorSideBottom.Side = asrBottom
Left = 359
Left = 329
Height = 21
Top = 3
Width = 321
Width = 351
AutoSize = True
BevelOuter = bvNone
ClientHeight = 21
ClientWidth = 351
TabOrder = 1
object edtFileExtensions: TEdit
Left = 0
Height = 21
Top = 0
Width = 305
Align = alClient
TabOrder = 0
end
object btnResetMask: TSpeedButton
Left = 328
Height = 21
Hint = 'Reset'
Top = 0
Width = 23
Align = alRight
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
000200000008000000120000001D000000271212126315151575151515751515
157515151575151515751515157515151575151515751212125E000000000000
000100000004000000090000000F0000001438383871ECECECFFE8E8E8FFE8E8
E8FFE8E8E8FFE8E8E8FFE8E8E8FFE8E8E8FFECECECFF38383871000000000000
0000000000000000000000000000373737004949496EEAEAEAFFCBCBCBFFCBCB
CBFFCBCBCBFFCBCBCBFFEAEAEAFF666666FFEAEAEAFF4949496E0B0B0B000404
040000000000000000003E3E3E00525252005252526DEEEEEEFFC8C8C8FFFFFF
FFFFFFFFFFFFC8C8C8FFF1F1F1FFEDEDEDFFEEEEEEFF5252526D151515000D0D
0D00191919581515157515151575151515752D2D2DAF8C8C8CFF747474FF9494
94FF949494FF7C7C7CFFC4C4C4FFC4C4C4FFF1F1F1FF5C5C5C6C151515000D0D
0D0038383871ECECECFFE8E8E8FFE8E8E8FFE8E8E8FFE8E8E8FFE8E8E8FFE8E8
E8FFECECECFFD8D8D8FFFFFFFFFFC0C0C0FFF6F6F6FF6464646A191919581515
1575353535B1EAEAEAFF262626FF262626FF262626FF262626FFEAEAEAFF6666
66FFEAEAEAFFD8D8D8FFFFFFFFFFBBBBBBFFF9F9F9FF6C6C6C6938383871ECEC
ECFFA8A8A8FFEEEEEEFF2A2A2AFF3C3C3CFF3C3C3CFF2A2A2AFFF1F1F1FFEDED
EDFFEEEEEEFF9F9F9FFFADADADFFADADADFFFDFDFDFF747474684949496EEAEA
EAFFADA639FFF1F1F1FF2E2E2EFF424242FF424242FF343434FF2E2E2EFF2E2E
2EFFF1F1F1FFD8D8D8FFFFFFFFFFFFFFFFFFFFFFFFFF7A7A7A675252526DEEEE
EEFFB2AB3CFFF6F6F6FF333333FF4A4A4AFF4A4A4AFF4A4A4AFF4A4A4AFF3333
33FFF6F6F6FF7F7F7F947F7F7F667F7F7F667F7F7F667F7F7F4D5C5C5C6CF1F1
F1FFB6AE3FFFF9F9F9FF383838FF505050FF505050FF505050FF505050FF3838
38FFF9F9F9FF7F7F7F4D8080800080808000808080007F7F7F006464646AF6F6
F6FFB9B242FFFDFDFDFF3B3B3BFF3B3B3BFF3B3B3BFF3B3B3BFF3B3B3BFF3B3B
3BFFFDFDFDFF747474688080800080808000808080007F7F7F006C6C6C69F9F9
F9FFBCB544FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF7A7A7A677C7C7C0080808000808080007F7F7F0074747468FDFD
FDFFC9C13CFFBFB745FFBFB745FFBFB745FFBFB745FFBFB745FFCBCBCBFF7B7B
7BA47F7F7F667F7F7F4D747474007E7E7E00808080007F7F7F007A7A7A67FFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7A
7A677A7A7A007A7A7A007A7A7A007A7A7A007F7F7F007F7F7F007F7F7F4D7F7F
7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F
7F4D7E7E7E007E7E7E007E7E7E005F5F5F000000000000000000
}
OnClick = btnResetMaskClick
end
object btnSaveMask: TSpeedButton
Left = 305
Height = 21
Hint = 'Save'
Top = 0
Width = 23
Align = alRight
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000BA6A368FB969
35B5B86935EEB76835FFB56835FFB46734FFB26634FFB06533FFAE6433FFAC63
32FFAA6232FFA96132FFA86031FFA76031FEA66031F1A86131C4BA6A35DEEBC6
ADFFEAC5ADFFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB
F8FFFEFBF8FFFEFBF8FFFEFBF8FFC89A7CFFC79879FFA76031EDBA6B37FEEDCA
B3FFE0A27AFFFEFAF7FF62C088FF62C088FF62C088FF62C088FF62C088FF62C0
88FF62C088FF62C088FFFDF9F6FFCA8D65FFC99B7CFFA76031FEBB6C38FFEECC
B6FFE1A27AFFFEFAF7FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDC
C2FFBFDCC2FFBFDCC2FFFDF9F6FFCD9068FFCC9E81FFA86132FFBB6B38FFEFCE
B8FFE1A279FFFEFAF7FF62C088FF62C088FF62C088FF62C088FF62C088FF62C0
88FF62C088FF62C088FFFDF9F6FFCF936AFFCEA384FFAA6132FFBA6A36FFEFD0
BBFFE2A27AFFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB
F8FFFEFBF8FFFEFBF8FFFEFBF8FFD3966DFFD2A78AFFAB6232FFBB6A36FFF0D2
BEFFE2A37AFFE2A37AFFE1A37AFFE2A37BFFE1A37BFFE0A178FFDE9F77FFDD9F
76FFDC9D74FFD99B72FFD89971FFD69970FFD5AB8EFFAD6333FFBB6A36FFF2D5
C2FFE3A37AFFE3A37AFFE2A37BFFE2A37BFFE2A47BFFE1A279FFE0A178FFDEA0
77FFDE9E75FFDC9D74FFDA9B73FFD99B73FFDAB095FFAF6433FFBB6A36FFF2D8
C5FFE3A47BFFE3A37AFFE3A47AFFE2A47BFFE2A37BFFE1A37BFFE1A279FFDFA0
77FFDE9F76FFDD9E74FFDB9C72FFDC9D74FFDDB59AFFB16534FFBB6B36FFF4D9
C7FFE6A67DFFC88C64FFC98D65FFC98E67FFCB926CFFCB926DFFCA9069FFC88C
65FFC88C64FFC88C64FFC88C64FFDA9C74FFE1BA9FFFB36634FFBB6B36FEF4DC
C9FFE7A77DFFF9ECE1FFF9ECE1FFF9EDE3FFFCF4EEFFFDFAF7FFFDF7F3FFFAED
E5FFF7E7DBFFF7E5D9FFF6E5D8FFDEA077FFE4BEA4FFB46734FFBC6B36FAF5DD
CCFFE7A87EFFFAF0E8FFFAF0E8FFC98D66FFFAF0E9FFFDF8F3FFFEFAF8FFFCF4
EFFFF9E9DFFFF7E7DBFFF7E5D9FFE0A278FFE7C2A9FFB66835FFBC6B36F0F6DF
D0FFE8A87EFFFCF6F1FFFCF6F1FFC88C64FFFAF1E9FFFBF4EEFFFDFAF7FFFDF9
F6FFFAF0E8FFF8E8DDFFF7E6DBFFE1A37AFFEFD5C3FFB76935FEBC6B36D8F6DF
D1FFE9AA80FFFEFAF6FFFDFAF6FFC88C64FFFBF3EEFFFBF1EAFFFCF6F2FFFEFB
F8FFFCF6F1FFF9ECE2FFF8E7DBFFEED0BAFFECD0BDFFBB703EF8BC6B369BF6E0
D1FFF7E0D1FFFEFBF8FFFEFBF7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9
F6FFFDFAF7FFFBF1EBFFF8E9DFFEECD0BDFBC9895EECB5693563BC6B3671BC6B
3690BC6B36CCBC6B36EEBC6B36FABB6B36FEBB6B36FFBB6A36FFBB6A36FFBC6C
39FFBD6E3BFFBB6D3AFFBB6B38EFBB703ECBB6693554FFFFFF00
}
OnClick = btnSaveMaskClick
end
end
end
object PnlTop2: TPanel[1]

View file

@ -1,3 +1,5 @@
TFRMOPTIONSEDITORCOLORS.BTNRESETMASK.HINT=Reset
TFRMOPTIONSEDITORCOLORS.BTNSAVEMASK.HINT=Save
TFRMOPTIONSEDITORCOLORS.FOREGROUNDLABEL.CAPTION=Fo&reground
TFRMOPTIONSEDITORCOLORS.BACKGROUNDLABEL.CAPTION=Bac&kground
TFRMOPTIONSEDITORCOLORS.FOREGROUNDUSEDEFAULTCHECKBOX.CAPTION=Fo&reground

View file

@ -46,6 +46,7 @@ type
cmbLanguage: TComboBox;
ColorPreview: TSynEdit;
ColumnPosBevel: TPanel;
edtFileExtensions: TEdit;
ForegroundColorBox: TColorBox;
ForeGroundLabel: TLabel;
ForeGroundUseDefaultCheckBox: TCheckBox;
@ -61,8 +62,10 @@ type
pnlTop: TPanel;
PnlTop2: TPanel;
pnlUnderline: TPanel;
btnSaveMask: TSpeedButton;
btnResetMask: TSpeedButton;
Splitter1: TSplitter;
stFileExtensions: TStaticText;
pnlFileExtensions: TPanel;
tbtnGlobal: TToolButton;
tbtnLocal: TToolButton;
TextBoldCheckBox: TCheckBox;
@ -87,6 +90,8 @@ type
TextUnderlineRadioPanel: TPanel;
ToolBar1: TToolBar;
ToolButton3: TToolButton;
procedure btnResetMaskClick(Sender: TObject);
procedure btnSaveMaskClick(Sender: TObject);
procedure FrameStyleBoxDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure cmbLanguageChange(Sender: TObject);
@ -224,6 +229,21 @@ begin
end;
end;
procedure TfrmOptionsEditorColors.btnSaveMaskClick(Sender: TObject);
begin
FCurrentHighlighter.DefaultFilter:= FCurrentHighlighter.LanguageName + ' (' + edtFileExtensions.Text + ')|' + edtFileExtensions.Text;
end;
procedure TfrmOptionsEditorColors.btnResetMaskClick(Sender: TObject);
begin
with TSynCustomHighlighterClass(FCurrentHighlighter.ClassType).Create(nil) do
begin
FCurrentHighlighter.DefaultFilter:= DefaultFilter;
edtFileExtensions.Text:= Copy(FCurrentHighlighter.DefaultFilter, Pos('|', FCurrentHighlighter.DefaultFilter) + 1, MaxInt);
Free;
end;
end;
procedure TfrmOptionsEditorColors.cmbLanguageChange(Sender: TObject);
var
I: LongInt;
@ -233,7 +253,8 @@ begin
AttributeList:= TStringList.Create;
try
FCurrentHighlighter:= TSynCustomHighlighter(cmbLanguage.Items.Objects[cmbLanguage.ItemIndex]);
stFileExtensions.Caption:= Copy(FCurrentHighlighter.DefaultFilter, 1, Pos('|', FCurrentHighlighter.DefaultFilter) - 1);
pnlFileExtensions.Enabled:= not (FCurrentHighlighter is TSynPlainTextHighlighter);
edtFileExtensions.Text:= Copy(FCurrentHighlighter.DefaultFilter, Pos('|', FCurrentHighlighter.DefaultFilter) + 1, MaxInt);
ColorPreview.Lines.Text:= FHighl.GetSampleSource(FCurrentHighlighter);
if ColorPreview.Lines.Text = EmptyStr then
try