📄 syneditactions.pas
字号:
{-------------------------------------------------------------------------------
单元: SynEditActions.pas
作者: 姚乔锋
日期: 2004.11.26
说明: 一些关于SynEdit的动作
版本: 1.00
-------------------------------------------------------------------------------}
unit SynEditActions;
interface
{$I Synedit.inc}
uses
Windows, Classes, Clipbrd, Forms, Controls, SysUtils, Dialogs, Graphics,
SynEdit, SynMemo, SynEditTextBuffer, SynEditHighlighter, SynEditPrint,
SynEditExport, SynEditTypes, SynEditKeyCmds, SynEditMiscClasses, ActnList,
SynEditMiscProcs, SynMsgDialog, SynEditStrRes, SynEditSearcher, SynEditor,
SynExportHTML, SynExportRTF, SynExportTeX, SynUniHighlighter, Printers,
SynEditSource, IniFiles, SynCompletionProposal,
SynUniFormatNativeXml20, SimpleXML, SynUniFormatNativeXml,
{$IFDEF SPELLCHECK}
SynSpellCheck,
{$ENDIF}
SynAutoCorrect;
type
TSynCustomManager = class;
TSynHighlighterItem = class(TCollectionItem)
private
FHighlighter: TSynCustomHighlighter;
FCodeTemplate: TSynAutoComplete;
FCodeInsight : TSynCompletionProposal;
FFileName: string;
FLoad : Boolean;
FFullFileName : string;
procedure SetHighlighter(const Value: TSynCustomHighlighter);
procedure setCodeTemplate(const Value: TSynAutoComplete);
procedure setCodeInsight(const Value: TSynCompletionProposal);
protected
function GetDisplayName: string; override;
public
procedure Assign(Source: TPersistent); override;
procedure Load;
published
property FileName : string read FFileName write FFilename;
property CodeInsight : TSynCompletionProposal read fCodeInsight write setCodeInsight;
property CodeTemplate : TSynAutoComplete read fCodeTemplate write setCodeTemplate;
property Highlighter : TSynCustomHighlighter read FHighlighter write SetHighlighter;
end;
TSynHighlighters = class(TCollection)
private
FManager : TSynCustomManager;
FDefaultLanguage: string;
function GetHighlighter(Index: Integer): TSynCustomHighlighter;
procedure SetHighlighter(Index: Integer;
const Value: TSynCustomHighlighter);
function GetDefaultLanguageIndex: Integer;
function GetItem(Index: Integer): TSynHighlighterItem;
procedure SetItem(Index: Integer; const Value: TSynHighlighterItem);
public
procedure HighlighterAssignTo(Editor : TCustomSynEdit; NewIndex : Integer);
function IndexOfFileName(FileName : string): Integer;
function IndexOfLanguage(Language : string): Integer;
procedure RemoveHighlighter(Highlighter: TSynCustomHighlighter);
property Items[Index: Integer]: TSynHighlighterItem read GetItem write SetItem;
property Highlighters[Index: Integer]: TSynCustomHighlighter read GetHighlighter write SetHighlighter;
property DefaultLanguageIndex: Integer read GetDefaultLanguageIndex;
published
property DefaultLanguage: string read FDefaultLanguage write FDefaultLanguage;
end;
TSynManagerEditorEvent = procedure(Sender : TObject; index : Integer) of object;
TSynManagerCreateIniEvent = procedure(Sender : TObject; const FileName : string;
var Ini : TCustomIniFile) of object;
TSynCustomManager = class(TComponent)
private
FSynEditors : TStrings;
FOnAddEditor : TSynManagerEditorEvent;
FOnDeleteEditor : TSynManagerEditorEvent;
FSynEditor: TCustomSynEditor;
FHighlighters: TSynHighlighters;
FHighlightersPath: string;
FFilter: string;
fAutoCorrect : TSynAutoCorrect;
FAutoCorrectIni : string;
fAutoCorrectLoad : Boolean;
FEditorSourceIni: string;
FEditorSource: TSynEditSource;
fEditorSourceLoad : Boolean;
fOnCreateIniFile: TSynManagerCreateIniEvent;
{$IFDEF SPELLCHECK}
FSpellCheckIni: string;
fSpellCheck : TSynSpellCheck;
fSpellCheckLoad : Boolean;
{$ENDIF}
FLoaded : Boolean;
FAutoLoad: Boolean;
FAutoSave: Boolean;
function GetSynEditorCount: integer;
function GetSynEditors(Index: integer): TCustomSynEditor;
procedure SetSynEditor(const Value: TCustomSynEditor);
procedure SetEditorSource(const Value: TSynEditSource);
procedure SetHighlighters(const Value: TSynHighlighters);
procedure SetAutoCorrect(const Value: TSynAutoCorrect);
{$IFDEF SPELLCHECK}
procedure SetSpellCheck(const Value: TSynSpellCheck);
{$ENDIF}
protected
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
procedure Loaded; override;
public
constructor Create(AOwner : TComponent); override;
procedure BeforeDestruction; override;
destructor Destroy; override;
property AutoLoad : Boolean read FAutoLoad write FAutoLoad;
property AutoSave : Boolean read FAutoSave write FAutoSave;
property AutoCorrect : TSynAutoCorrect read fAutoCorrect write SetAutoCorrect;
{$IFDEF SPELLCHECK}
property SpellCheck : TSynSpellCheck read fSpellCheck write SetSpellCheck;
{$ENDIF}
property SynEditor : TCustomSynEditor read FSynEditor write SetSynEditor;
property EditorSource : TSynEditSource read FEditorSource write SetEditorSource;
property Highlighters : TSynHighlighters read FHighlighters write SetHighlighters;
function GetFilters: string;
property Filter : string read FFilter write FFilter;
property Editors[Index : integer] : TCustomSynEditor read GetSynEditors;
property EditorCount : integer read GetSynEditorCount;
function AddEditor(SynEditor : TCustomSynEditor): integer;
procedure DeleteEditor(SynEditor : TCustomSynEditor);
property OnAddEditor : TSynManagerEditorEvent read FOnAddEditor write FOnAddEditor;
property OnDeleteEditor : TSynManagerEditorEvent read FOnDeleteEditor write FOnDeleteEditor;
procedure Load;
procedure Save;
function CreateIniFile(FileName : string) : TCustomIniFile;
property HighlightersPath: string read FHighlightersPath write FHighlightersPath;
procedure SaveHighlighters(Dir : string);
procedure LoadHighlighters(Dir : string);
property EditorSourceIni: string read FEditorSourceIni write FEditorSourceIni;
procedure SaveEditorSource(FileName : string);
procedure LoadEditorSource(FileName : string);
property AutoCorrectIni: string read FAutoCorrectIni write FAutoCorrectIni;
procedure SaveAutoCorrect(FileName : string);
procedure LoadAutoCorrect(FileName : string);
{$IFDEF SPELLCHECK}
property SpellCheckIni: string read FSpellCheckIni write FSpellCheckIni;
procedure SaveSpellCheck(FileName : string);
procedure LoadSpellCheck(FileName : string);
{$ENDIF}
property OnCreateIniFile : TSynManagerCreateIniEvent read fOnCreateIniFile write fOnCreateIniFile;
end;
TSynManager = class(TSynCustomManager)
published
property AutoLoad;
property AutoSave;
property AutoCorrect;
property AutoCorrectIni;
{$IFDEF SPELLCHECK}
property SpellCheck;
property SpellCheckIni;
{$ENDIF}
property Highlighters;
property HighlightersPath;
property EditorSource;
property EditorSourceIni;
property Filter;
property SynEditor;
property OnAddEditor;
property OnDeleteEditor;
property OnCreateIniFile;
end;
TSynBaseAction = class(TCustomAction)
public
constructor Create(AOwner: TComponent); override;
function HandlesTarget(Target: TObject): Boolean; override;
procedure UpdateTarget(Target: TObject); override;
published
property AutoCheck;
property Caption;
property Checked;
property Enabled;
property GroupIndex;
property HelpContext;
property HelpKeyword;
property HelpType;
property Hint;
property ImageIndex;
property ShortCut;
property SecondaryShortCuts;
property Visible;
property OnHint;
end;
TSynCustomAction = class(TSynBaseAction)
private
FSynEdit: TCustomSynEditor;
procedure SetSynEdit(const Value: TCustomSynEditor);
protected
FActiveSynEdit : TCustomSynEditor;
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
function SynEditAllocated(Target: TObject) : Boolean;
public
function HandlesTarget(Target: TObject): Boolean; override;
published
property SynEdit : TCustomSynEditor read FSynEdit write SetSynEdit;
end;
TSynAction = class(TAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
TSynEditExecuteEvent =
procedure(Sender : TObject; SynEdit : TCustomSynEdit) of object;
TSynEditUpdateEvent =
function (Sender : TObject; SynEdit : TCustomSynEdit): Boolean of object;
TSynEditAction = class(TSynCustomAction)
private
FOnExecute: TSynEditExecuteEvent;
FOnUpdate: TSynEditUpdateEvent;
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
published
property OnUpdate : TSynEditUpdateEvent read FOnUpdate write FOnUpdate;
property OnExecute : TSynEditExecuteEvent read FOnExecute write FOnExecute;
end;
TSynChangeAction = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
end;
TSynChangeSelectAction = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
end;
TaSynReadOnly = class(TSynCustomAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynNormalSelect = class(TSynCustomAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynColumnSelect = class(TSynCustomAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynLineSelect = class(TSynCustomAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
//说明 执行synedit的undo(撒消)功能
TaSynUndo = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
//说明 执行synedit的redo(重做)功能
TaSynRedo = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
//说明 执行synedit的Cut(剪切)功能
TaSynCut = class(TSynChangeSelectAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynAppendCut = class(TSynChangeSelectAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//说明 执行synedit的Copy(复制)功能
TaSynCopy = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynAppendCopy = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
//说明 执行synedit的Paste(粘贴)功能
TaSynPaste = class(TSynCustomAction)
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
end;
//删除下一个字符,相当于按delete键
TaSynDeleteNextchar = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除上一个字符,相当于按BackSpace键
TaSynDeleteLastChar = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除到当前词的词尾处
TaSynDeleteWordToEnd = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除到当前词的词首处
TaSynDeleteWordToStart = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除当前光标处的词
TaSynDeleteWord = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除到当前行的行尾处
TaSynDeleteLineToEnd = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除到当前行的行首处
TaSynDeleteLineToStart = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//删除当前光标处的行
TaSynDeleteLine = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//清除全部内容
TaSynClearAll = class(TSynChangeAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择全部
TaSynSelectAll = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择当前行
TaSynSelectLine = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择下一行
TaSynSelectNextLine = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择上一行
TaSynSelectLastLine = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择当前光标处的词
TaSynSelectWrod = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择光标后下一个词
TaSynSelectNextWord = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
//选择光标前上一个词
TaSynSelectLastWord = class(TSynCustomAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TaSynGotoBookmark = class(TSynCustomAction)
private
fBookmark: Integer;
public
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -