unit Highlighter; { Global variables } var Highlighter: TMenuItem; HighlighterAdd: TMenuItem; // THighLighter = (hlNone, hlPascal, hlCBuilder, hlSql, hlPython, // hlJava, hlVB, hlHtml, hlPerl, hlIni); { function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string): TMenuItem; } procedure InitHighlighter; begin Highlighter := nil; Highlighter := NewItem('&Highlighter', 0, False, True, 0, nil {ignored - always must be nil}, 'miHighlighter'); MainWindow.Menu.Items.Insert(MainWindow.Menu.Items.Count - 1, Highlighter); AddHighlighter('None', 0, 'N', 'miHighlighterNone'); AddHighlighter('Pascal', 1, 'P', 'miHighlighterPascal'); AddHighlighter('C++', 2, 'C', 'miHighlighterCBuilder'); AddHighlighter('SQL', 3, 'S', 'miHighlighterSQL'); AddHighlighter('Java', 5, 'J', 'miHighlighterJava'); AddHighlighter('Html', 7, 'H', 'miHighlighterHtml'); AddHighlighter('Ini', 9, 'I', 'miHighlighterIni'); end; procedure AddHighlighter(Caption: string; Index: Integer; Key: string; ComponentName: string); var ShiftState: TShiftState; begin ShiftState := [ssCtrl, ssAlt]; HighlighterAdd := NewItem(Caption, ShortCut(ord(Key), ShiftState), False, True, 0, 0, ComponentName); HighlighterAdd.OnClick := HighlighterClick; HighlighterAdd.Tag := Index; Highlighter.Add(HighlighterAdd); end; procedure HighlighterClick(Sender: TObject); begin Editor.Highlighter := Sender.Tag; Editor.LoadColors; end; procedure OpenHighlighter(FileName: string); begin if Cmp(Copy(FileName, Length(FileName) - 3, 4), '.ini') then begin Editor.Highlighter := 9; Editor.LoadColors; end; end; end.