IDE: Allow user to create own custom IDE macros and install them to IDE by using packages. Issue #23502, patch from Cyrax

git-svn-id: trunk@39909 -
This commit is contained in:
juha 2013-01-20 09:34:35 +00:00
parent e03de76fde
commit d451ec6672
12 changed files with 28 additions and 48 deletions

View File

@ -9,7 +9,8 @@ uses
Dialogs, Buttons, ExtCtrls, StdCtrls, FileUtil, ButtonPanel, Dialogs, Buttons, ExtCtrls, StdCtrls, FileUtil, ButtonPanel,
BasicCodeTools, BasicCodeTools,
IDEHelpIntf, IDEHelpIntf,
IDEProcs, InputHistory, LazarusIDEStrConsts, EnvironmentOpts, TransferMacros; IDEProcs, InputHistory, LazarusIDEStrConsts, EnvironmentOpts, TransferMacros,
MacroDefIntf;
type type
TIDEDirective = ( TIDEDirective = (

View File

@ -41,7 +41,7 @@ uses
FileProcs, CodeToolsCfgScript, CodeToolsStructs, FileProcs, CodeToolsCfgScript, CodeToolsStructs,
// IDEIntf // IDEIntf
SrcEditorIntf, ProjectIntf, MacroIntf, IDEDialogs, IDEExternToolIntf, SrcEditorIntf, ProjectIntf, MacroIntf, IDEDialogs, IDEExternToolIntf,
CompOptsIntf, LazIDEIntf, CompOptsIntf, LazIDEIntf, MacroDefIntf,
// IDE // IDE
LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, InputHistory, LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, InputHistory,
EditDefineTree, ProjectResources, MiscOptions, LazConf, EnvironmentOpts, EditDefineTree, ProjectResources, MiscOptions, LazConf, EnvironmentOpts,

View File

@ -41,7 +41,7 @@ uses
Dialogs, LazConfigStorage, Laz2_XMLCfg, LazUTF8, Dialogs, LazConfigStorage, Laz2_XMLCfg, LazUTF8,
// IDEIntf // IDEIntf
ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf, ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf,
CompOptsIntf, IDEExternToolIntf, IDEDialogs, CompOptsIntf, IDEExternToolIntf, IDEDialogs, MacroDefIntf,
// IDE // IDE
IDEProcs, LazarusIDEStrConsts, IDETranslations, LazConf, IDEProcs, LazarusIDEStrConsts, IDETranslations, LazConf,
IDEOptionDefs, TransferMacros, Debugger; IDEOptionDefs, TransferMacros, Debugger;

View File

@ -44,7 +44,7 @@ interface
uses uses
Classes, SysUtils, strutils, contnrs, LCLProc, Forms, Controls, Buttons, Classes, SysUtils, strutils, contnrs, LCLProc, Forms, Controls, Buttons,
Dialogs, FileUtil, Laz2_XMLCfg, lazutf8classes, Graphics, ComCtrls, ExtCtrls, Dialogs, FileUtil, Laz2_XMLCfg, lazutf8classes, Graphics, ComCtrls, ExtCtrls,
StdCtrls, DefineTemplates, CodeToolManager, TransferMacros, StdCtrls, DefineTemplates, CodeToolManager, TransferMacros, MacroDefIntf,
LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs, AboutFrm; LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs, AboutFrm;
type type

View File

@ -54,7 +54,7 @@ uses
CodeToolsConfig, ExprEval, FileProcs, DefineTemplates, CodeToolsConfig, ExprEval, FileProcs, DefineTemplates,
BasicCodeTools, CodeToolsCfgScript, CodeToolManager, CodeCache, BasicCodeTools, CodeToolsCfgScript, CodeToolManager, CodeCache,
// IDEIntf // IDEIntf
PropEdits, CompOptsIntf, ProjectIntf, MacroIntf, LazIDEIntf, PropEdits, CompOptsIntf, ProjectIntf, MacroIntf, MacroDefIntf, LazIDEIntf,
// IDE // IDE
CompOptsModes, ProjectResources, LazConf, W32Manifest, ProjectIcon, CompOptsModes, ProjectResources, LazConf, W32Manifest, ProjectIcon,
LazarusIDEStrConsts, CompilerOptions, LazarusIDEStrConsts, CompilerOptions,

View File

@ -57,7 +57,7 @@ uses
SynExportHTML, SynHighlighterPas, SynExportHTML, SynHighlighterPas,
// Intf // Intf
SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf, SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf,
IDEWindowIntf, ProjectIntf, IDEWindowIntf, ProjectIntf, MacroDefIntf,
// IDE units // IDE units
IDEDialogs, LazarusIDEStrConsts, IDECommands, EditorOptions, IDEDialogs, LazarusIDEStrConsts, IDECommands, EditorOptions,
EnvironmentOpts, WordCompletion, FindReplaceDialog, IDEProcs, IDEOptionDefs, EnvironmentOpts, WordCompletion, FindReplaceDialog, IDEProcs, IDEOptionDefs,

View File

@ -46,33 +46,9 @@ unit TransferMacros;
interface interface
uses Classes, SysUtils, LCLProc, FileUtil, FileProcs, LazarusIDEStrConsts, uses Classes, SysUtils, LCLProc, FileUtil, FileProcs, LazarusIDEStrConsts,
MacroIntf; MacroIntf, MacroDefIntf;
type type
TTransferMacro = class;
TOnSubstitution = procedure(TheMacro: TTransferMacro; const MacroName: string;
var s:string; const Data: PtrInt; var Handled, Abort: boolean;
Depth: integer) of object;
TMacroFunction = function(const s: string; const Data: PtrInt;
var Abort: boolean): string of object;
TTransferMacroFlag = (
tmfInteractive
);
TTransferMacroFlags = set of TTransferMacroFlag;
TTransferMacro = class
public
Name: string;
Value: string;
Description: string;
MacroFunction: TMacroFunction;
Flags: TTransferMacroFlags;
constructor Create(AName, AValue, ADescription:string;
AMacroFunction: TMacroFunction; TheFlags: TTransferMacroFlags);
end;
{ TTransferMacroList } { TTransferMacroList }
@ -130,6 +106,7 @@ type
function StrHasMacros(const s: string): boolean; override; function StrHasMacros(const s: string): boolean; override;
function SubstituteMacros(var s: string): boolean; override; function SubstituteMacros(var s: string): boolean; override;
function IsMacro(const Name: string): boolean; override; function IsMacro(const Name: string): boolean; override;
procedure Add(NewMacro: TTransferMacro);override;
end; end;
var var
@ -165,18 +142,6 @@ begin
CTIncreaseChangeStamp(BuildMacroChangeStamp); CTIncreaseChangeStamp(BuildMacroChangeStamp);
end; end;
{ TTransferMacro }
constructor TTransferMacro.Create(AName, AValue, ADescription:string;
AMacroFunction: TMacroFunction; TheFlags: TTransferMacroFlags);
begin
Name:=AName;
Value:=AValue;
Description:=ADescription;
MacroFunction:=AMacroFunction;
Flags:=TheFlags;
end;
{ TTransferMacroList } { TTransferMacroList }
constructor TTransferMacroList.Create; constructor TTransferMacroList.Create;
@ -578,6 +543,11 @@ begin
Result:=GlobalMacroList.FindByName(Name)<>nil; Result:=GlobalMacroList.FindByName(Name)<>nil;
end; end;
procedure TLazIDEMacros.Add(NewMacro: TTransferMacro);
Begin
GlobalMacroList.Add(NewMacro);
end;
procedure InternalInit; procedure InternalInit;
var var
c: char; c: char;

View File

@ -22,7 +22,7 @@
<Description Value="IDEIntf - the interface units for the Lazarus IDE"/> <Description Value="IDEIntf - the interface units for the Lazarus IDE"/>
<License Value="Modified LPGL2"/> <License Value="Modified LPGL2"/>
<Version Major="1"/> <Version Major="1"/>
<Files Count="69"> <Files Count="70">
<Item1> <Item1>
<Filename Value="actionseditor.lfm"/> <Filename Value="actionseditor.lfm"/>
<Type Value="LFM"/> <Type Value="LFM"/>
@ -300,6 +300,10 @@
<Filename Value="oifavoriteproperties.pas"/> <Filename Value="oifavoriteproperties.pas"/>
<UnitName Value="OIFavouriteProperties"/> <UnitName Value="OIFavouriteProperties"/>
</Item69> </Item69>
<Item70>
<Filename Value="macrodefintf.pas"/>
<UnitName Value="macrodefintf"/>
</Item70>
</Files> </Files>
<LazDoc Paths="docs"/> <LazDoc Paths="docs"/>
<i18n> <i18n>

View File

@ -18,7 +18,7 @@ uses
newfield, NewItemIntf, ObjectInspector, ObjInspStrConsts, PackageIntf, newfield, NewItemIntf, ObjectInspector, ObjInspStrConsts, PackageIntf,
ProjectIntf, ProjectResourcesIntf, PropEdits, PropEditUtils, SrcEditorIntf, ProjectIntf, ProjectResourcesIntf, PropEdits, PropEditUtils, SrcEditorIntf,
StatusBarPropEdit, StringsPropEditDlg, TextTools, TreeViewPropEdit, StatusBarPropEdit, StringsPropEditDlg, TextTools, TreeViewPropEdit,
CompOptsIntf, OIFavoriteProperties, LazarusPackageIntf; CompOptsIntf, OIFavoriteProperties, MacroDefIntf, LazarusPackageIntf;
implementation implementation

View File

@ -21,7 +21,7 @@ unit MacroIntf;
interface interface
uses uses
Classes, SysUtils, LazFileUtils; Classes, SysUtils, LazFileUtils, MacroDefIntf;
type type
{ TIDEMacros - macros for paths and compiler settings } { TIDEMacros - macros for paths and compiler settings }
@ -41,6 +41,7 @@ type
// file utility functions // file utility functions
function CreateAbsoluteSearchPath(var SearchPath: string; function CreateAbsoluteSearchPath(var SearchPath: string;
const BaseDirectory: string): boolean; const BaseDirectory: string): boolean;
procedure Add(NewMacro: TTransferMacro);virtual;
end; end;
var var
@ -136,5 +137,9 @@ begin
SearchPath:=MinimizeSearchPath(LazFileUtils.CreateAbsoluteSearchPath(SearchPath,BaseDir)); SearchPath:=MinimizeSearchPath(LazFileUtils.CreateAbsoluteSearchPath(SearchPath,BaseDir));
end; end;
procedure TIDEMacros.Add(NewMacro: TTransferMacro);
Begin
end;
end. end.

View File

@ -48,7 +48,7 @@ uses
Forms, FileProcs, FileUtil, AVL_Tree, LazConfigStorage, Laz2_XMLCfg, Forms, FileProcs, FileUtil, AVL_Tree, LazConfigStorage, Laz2_XMLCfg,
BasicCodeTools, CodeToolsCfgScript, DefineTemplates, CodeToolManager, BasicCodeTools, CodeToolsCfgScript, DefineTemplates, CodeToolManager,
CodeCache, CodeToolsStructs, CodeCache, CodeToolsStructs,
PropEdits, LazIDEIntf, MacroIntf, PackageIntf, IDEOptionsIntf, PropEdits, LazIDEIntf, MacroIntf, MacroDefIntf, PackageIntf, IDEOptionsIntf,
EditDefineTree, CompilerOptions, CompOptsModes, IDEOptionDefs, EditDefineTree, CompilerOptions, CompOptsModes, IDEOptionDefs,
LazarusIDEStrConsts, IDEProcs, ComponentReg, LazarusIDEStrConsts, IDEProcs, ComponentReg,
TransferMacros, FileReferenceList, PublishModule; TransferMacros, FileReferenceList, PublishModule;

View File

@ -53,7 +53,7 @@ uses
CodeToolManager, DirectoryCacher, CodeToolManager, DirectoryCacher,
// IDEIntf, // IDEIntf,
SrcEditorIntf, IDEExternToolIntf, IDEDialogs, IDEMsgIntf, PackageIntf, SrcEditorIntf, IDEExternToolIntf, IDEDialogs, IDEMsgIntf, PackageIntf,
CompOptsIntf, LazIDEIntf, CompOptsIntf, LazIDEIntf, MacroDefIntf,
// package registration // package registration
LazarusPackageIntf, LazarusPackageIntf,
// IDE // IDE