Check-in [2f70bda60e]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Mostly changes related to 64-bits layout. A few changes still lying around, never committed since 2015. :\
Timelines: family | ancestors | descendants | both | win64
Files: files | file ages | folders
SHA1: 2f70bda60e4bc1883c726df33363f7a434bd93e3
User & Date: tinus 2017-02-19 13:48:37
Context
2017-02-19
13:52
Added fossil settings file. check-in: 906812b373 user: tinus tags: win64
13:48
Mostly changes related to 64-bits layout. A few changes still lying around, never committed since 2015. :\ check-in: 2f70bda60e user: tinus tags: win64
13:41
Created new branch to add a 64-bit version of the plugin. Adjusted file info retrieval. Didn't work with WideString for some reason, so replaced it with regular strings (UnicodeString). check-in: 5000eb7a2e user: tinus tags: win64
Changes

Changes to src/LibNppPlugin/NppSimpleObjects.pas.

1
2
3
4

5
6
7
8
9
10
11
12
...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
...
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
....
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
....
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
....
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
....
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
....
1229
1230
1231
1232
1233
1234
1235

1236

1237
1238
1239
1240
1241
1242
1243
1244
1245

1246

1247
1248
1249
1250
1251
1252
1253
unit NppSimpleObjects;

interface
  uses

    Classes, TypInfo, {$IFDEF DELPHI}ObjAuto, ObjComAuto,{$ENDIF}
    NppPluginInterface, NppPluginConstants;

  type

{$IFDEF DELPHI}
  //////////////////////////////////////////////////////////////////////////////////////////////////
  TAutoObjectDispatch = class(TObjectDispatch)
................................................................................
    TWindowedObject = class
      protected
        FWindowHandle: THandle;
        FIsNpp: boolean;
      public
        constructor Create(AWindowHandle: THandle; ANppWindow: boolean = False);

        function SendMessage(const Message: Cardinal; wParam: NativeUInt = 0; lParam: NativeUInt = 0): NativeUInt; overload; virtual;
        function SendMessage(const Message: Cardinal; wParam: NativeUInt; lParam: Pointer): NativeUInt; overload; virtual;
        procedure PostMessage(const Message: Cardinal; wParam: NativeUInt = 0; lParam: NativeUInt = 0); overload; virtual;
        procedure PostMessage(const Message: Cardinal; wParam: NativeUInt; lParam: Pointer); overload; virtual;
    end;

    { -------------------------------------------------------------------------------------------- }
    TActiveDocument = class(TWindowedObject)
      private
        FPointer: Pointer;
        FPath: WideString;
................................................................................

    function GetApplication(const ANPPData: PNPPData = nil): TApplication;

////////////////////////////////////////////////////////////////////////////////////////////////////
implementation

uses
  Windows, SysUtils,
//  L_DebugLogger,
  NppScintillaConstants;

var
  Application: TApplication;
  TimedTextRangeMarks: TList;
  TRTimerID: Cardinal;
................................................................................
  if IsNpp then begin
    Result := GetMessageConstString(Message);
  end else begin
    Result := GetSciMessageConstString(Message);
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
function TWindowedObject.SendMessage(const Message: Cardinal; wParam, lParam: NativeUInt): NativeUInt;
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('SendMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: %d', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if SendMessageTimeout(FWindowHandle, Message, wParam, lParam, SMTO_NORMAL, 5000, @Result) = 0 then
................................................................................
    on E: Exception do begin
//      DebugWrite('SendMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
function TWindowedObject.SendMessage(const Message: Cardinal; wParam: NativeUInt; lParam: Pointer): NativeUInt;
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('SendMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: 0x%p', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if SendMessageTimeout(FWindowHandle, Message, wParam, Windows.LPARAM(lParam), SMTO_NORMAL, 5000, @Result) = 0 then
................................................................................
//      DebugWrite('SendMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;

{ ------------------------------------------------------------------------------------------------ }
procedure TWindowedObject.PostMessage(const Message: Cardinal; wParam, lParam: NativeUInt);
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('PostMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: %d', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if Windows.PostMessage(FWindowHandle, Message, wParam, Windows.LPARAM(lParam)) = False then
................................................................................
    on E: Exception do begin
//      DebugWrite('PostMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
procedure TWindowedObject.PostMessage(const Message: Cardinal; wParam: NativeUInt; lParam: Pointer);
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('PostMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: 0x%p', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if Windows.PostMessage(FWindowHandle, Message, wParam, Windows.LPARAM(lParam)) = False then
................................................................................
  else
    Result := Find(AText, AOptions);
end;
{ ------------------------------------------------------------------------------------------------ }
function TActiveDocument.Find(const AText: WideString; const AOptions, AStartPos, AEndPos: integer): TTextRange;
var
  TTF: RSciTextToFind;

begin

  if AStartPos < 0 then
    TTF.chrg.cpMin := 0
  else
    TTF.chrg.cpMin := AStartPos;
  if AEndPos < 0 then
    TTF.chrg.cpMax := High(TTF.chrg.cpMax)
  else
    TTF.chrg.cpMax := AEndPos;
  TTF.lpstrText := PAnsiChar(AdjustToCodePage(AText));

  if SendMessage(SCI_FINDTEXT, AOptions, @TTF) = High(Cardinal) then begin

    Result := nil;
//    DebugWrite(Format('Find("%s"; %d; %d; %d)', [AText, AOptions, AStartPos, AEndPos]),
//               'No match found');
  end else begin
    Result := TTextRange.Create(Self, TTF.chrgText.cpMin, TTF.chrgText.cpMax);
//    DebugWrite(Format('Find("%s"; %d; %d; %d)', [AText, AOptions, AStartPos, AEndPos]),
//               Format('Found match in range %d-%d', [TTF.chrgText.cpMin, TTF.chrgText.cpMax]));




>
|







 







|
|
|
|







 







|







 







|







 







|







 







|







 







|







 







>

>









>
|
>







1
2
3
4
5
6
7
8
9
10
11
12
13
...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
...
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
....
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
....
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
....
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
....
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
....
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
unit NppSimpleObjects;

interface
  uses
    Classes, TypInfo,
    Windows, {$IFDEF DELPHI}ObjAuto, ObjComAuto,{$ENDIF}
    NppPluginInterface, NppPluginConstants;

  type

{$IFDEF DELPHI}
  //////////////////////////////////////////////////////////////////////////////////////////////////
  TAutoObjectDispatch = class(TObjectDispatch)
................................................................................
    TWindowedObject = class
      protected
        FWindowHandle: THandle;
        FIsNpp: boolean;
      public
        constructor Create(AWindowHandle: THandle; ANppWindow: boolean = False);

        function SendMessage(const Message: UINT; wParam: WPARAM = 0; lParam: NativeUInt = 0): LRESULT; overload; virtual;
        function SendMessage(const Message: UINT; wParam: WPARAM; lParam: Pointer): LRESULT; overload; virtual;
        procedure PostMessage(const Message: UINT; wParam: WPARAM = 0; lParam: NativeUInt = 0); overload; virtual;
        procedure PostMessage(const Message: UINT; wParam: WPARAM; lParam: Pointer); overload; virtual;
    end;

    { -------------------------------------------------------------------------------------------- }
    TActiveDocument = class(TWindowedObject)
      private
        FPointer: Pointer;
        FPath: WideString;
................................................................................

    function GetApplication(const ANPPData: PNPPData = nil): TApplication;

////////////////////////////////////////////////////////////////////////////////////////////////////
implementation

uses
  SysUtils,
//  L_DebugLogger,
  NppScintillaConstants;

var
  Application: TApplication;
  TimedTextRangeMarks: TList;
  TRTimerID: Cardinal;
................................................................................
  if IsNpp then begin
    Result := GetMessageConstString(Message);
  end else begin
    Result := GetSciMessageConstString(Message);
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
function TWindowedObject.SendMessage(const Message: UINT; wParam: WPARAM; lParam: NativeUInt): LRESULT;
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('SendMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: %d', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if SendMessageTimeout(FWindowHandle, Message, wParam, lParam, SMTO_NORMAL, 5000, @Result) = 0 then
................................................................................
    on E: Exception do begin
//      DebugWrite('SendMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
function TWindowedObject.SendMessage(const Message: UINT; wParam: WPARAM; lParam: Pointer): LRESULT;
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('SendMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: 0x%p', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if SendMessageTimeout(FWindowHandle, Message, wParam, Windows.LPARAM(lParam), SMTO_NORMAL, 5000, @Result) = 0 then
................................................................................
//      DebugWrite('SendMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;

{ ------------------------------------------------------------------------------------------------ }
procedure TWindowedObject.PostMessage(const Message: UINT; wParam: WPARAM; lParam: NativeUInt);
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('PostMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: %d', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if Windows.PostMessage(FWindowHandle, Message, wParam, Windows.LPARAM(lParam)) = False then
................................................................................
    on E: Exception do begin
//      DebugWrite('PostMessage', Format('hWnd: %d; Error[%s]: %s', [FWindowHandle, E.ClassName, E.Message]));
      raise;
    end;
  end;
end;
{ ------------------------------------------------------------------------------------------------ }
procedure TWindowedObject.PostMessage(const Message: UINT; wParam: WPARAM; lParam: Pointer);
var
  MsgConst: string;
begin
  MsgConst := GetMsgConstString(Message, FIsNpp);
//  DebugWrite('PostMessage', Format('hWnd: %d; Message: %d%s; wParam: %d; lParam: 0x%p', [FWindowHandle, Message, MsgConst, wParam, lParam]));
  try
    if Windows.PostMessage(FWindowHandle, Message, wParam, Windows.LPARAM(lParam)) = False then
................................................................................
  else
    Result := Find(AText, AOptions);
end;
{ ------------------------------------------------------------------------------------------------ }
function TActiveDocument.Find(const AText: WideString; const AOptions, AStartPos, AEndPos: integer): TTextRange;
var
  TTF: RSciTextToFind;
  StartPos: LRESULT;
begin
  TTF := Default(RSciTextToFind);
  if AStartPos < 0 then
    TTF.chrg.cpMin := 0
  else
    TTF.chrg.cpMin := AStartPos;
  if AEndPos < 0 then
    TTF.chrg.cpMax := High(TTF.chrg.cpMax)
  else
    TTF.chrg.cpMax := AEndPos;
  TTF.lpstrText := PAnsiChar(AdjustToCodePage(AText));
  TTF.chrgText := TTF.chrg;
  StartPos := SendMessage(SCI_FINDTEXT, AOptions, @TTF);
  if StartPos = -1 then begin
    Result := nil;
//    DebugWrite(Format('Find("%s"; %d; %d; %d)', [AText, AOptions, AStartPos, AEndPos]),
//               'No match found');
  end else begin
    Result := TTextRange.Create(Self, TTF.chrgText.cpMin, TTF.chrgText.cpMax);
//    DebugWrite(Format('Find("%s"; %d; %d; %d)', [AText, AOptions, AStartPos, AEndPos]),
//               Format('Found match in range %d-%d', [TTF.chrgText.cpMin, TTF.chrgText.cpMax]));

Changes to src/U_JSEncode.pas.

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  end{case};
end {PerformConversion};

{ ------------------------------------------------------------------------------------------------ }
function DoEncodeJS(var Text: WideString): Integer; overload;
var
  CharIndex: integer;
  CharCode: UInt64;
  EntitiesReplaced: integer;
begin
  EntitiesReplaced := 0;

  for CharIndex := Length(Text) downto 1 do begin
    CharCode := Ord(Text[CharIndex]);
    if CharCode > 127 then begin







|







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  end{case};
end {PerformConversion};

{ ------------------------------------------------------------------------------------------------ }
function DoEncodeJS(var Text: WideString): Integer; overload;
var
  CharIndex: integer;
  CharCode: SmallInt;
  EntitiesReplaced: integer;
begin
  EntitiesReplaced := 0;

  for CharIndex := Length(Text) downto 1 do begin
    CharCode := Ord(Text[CharIndex]);
    if CharCode > 127 then begin

Changes to src/U_Npp_HTMLTag.pas.

40
41
42
43
44
45
46

47
48
49
50
51
52
53
...
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
var
  Npp: TNppPluginHTMLTag;

////////////////////////////////////////////////////////////////////////////////////////////////////
implementation

uses

  L_VersionInfoW, L_SpecialFolders,
  U_HTMLTagFinder, U_Entities, U_JSEncode;

{ ------------------------------------------------------------------------------------------------ }
procedure _commandFindMatchingTag(); cdecl;
begin
  npp.commandFindMatchingTag;
................................................................................
    DLLName := TSpecialFolders.DLLFullName;
    Version := TFileVersionInfo.Create(DLLName);
    try
      Text := Format('%s v%s'#13#10#13#10
                      + 'Plug-in location:'#9'%s'#13#10
                      + 'Config location:'#9'%s'#13#10
                      + 'Download:'#9'%s'#13#10#13#10
                      + '® %d %s - %s'#13#10
                      + '  a.k.a. %s - %s'#13#10#13#10
                      + 'Licensed under the %s - %s',
                     [ExtractFileName(DLLName), Version.FileVersion,
                      ExtractFilePath(DLLName),
                      App.ConfigFolder,
                      'http://fossil.2of4.net/npp_htmltag',
                      2011, 'Martijn Coppoolse', 'http://martijn.coppoolse.com/software',
                      'vor0nwe', 'http://sourceforge.net/users/vor0nwe',
                      'MPL 1.1', 'http://www.mozilla.org/MPL/MPL-1.1.txt']);
      MessageBox(App.WindowHandle, PChar(Text), PChar(Version.FileDescription), MB_ICONINFORMATION);
    finally
      FreeAndNil(Version);
    end;
  except







>







 







|






|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
...
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
var
  Npp: TNppPluginHTMLTag;

////////////////////////////////////////////////////////////////////////////////////////////////////
implementation

uses
  DateUtils,
  L_VersionInfoW, L_SpecialFolders,
  U_HTMLTagFinder, U_Entities, U_JSEncode;

{ ------------------------------------------------------------------------------------------------ }
procedure _commandFindMatchingTag(); cdecl;
begin
  npp.commandFindMatchingTag;
................................................................................
    DLLName := TSpecialFolders.DLLFullName;
    Version := TFileVersionInfo.Create(DLLName);
    try
      Text := Format('%s v%s'#13#10#13#10
                      + 'Plug-in location:'#9'%s'#13#10
                      + 'Config location:'#9'%s'#13#10
                      + 'Download:'#9'%s'#13#10#13#10
                      + '® 2011-%d %s - %s'#13#10
                      + '  a.k.a. %s - %s'#13#10#13#10
                      + 'Licensed under the %s - %s',
                     [ExtractFileName(DLLName), Version.FileVersion,
                      ExtractFilePath(DLLName),
                      App.ConfigFolder,
                      'http://fossil.2of4.net/npp_htmltag',
                      YearOf(Now), Version.LegalCopyright, 'http://martijn.coppoolse.com/software',
                      'vor0nwe', 'http://sourceforge.net/users/vor0nwe',
                      'MPL 1.1', 'http://www.mozilla.org/MPL/MPL-1.1.txt']);
      MessageBox(App.WindowHandle, PChar(Text), PChar(Version.FileDescription), MB_ICONINFORMATION);
    finally
      FreeAndNil(Version);
    end;
  except

Changes to src/lib/NppPluginInclude.pas.

4
5
6
7
8
9
10

11
12



13
14
15
16
17
18
19
  DLL_PROCESS_ATTACH:
  begin
    // create the main object
    //Npp := TDbgpNppPlugin.Create;
  end;
  DLL_PROCESS_DETACH:
  begin

    if Assigned(Npp) then
      Npp.Destroy;



  end;
  //DLL_THREAD_ATTACH: MessageBeep(0);
  //DLL_THREAD_DETACH: MessageBeep(0);
  end;
end;

procedure setInfo(NppData: TNppData); cdecl; export;







>
|
|
>
>
>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  DLL_PROCESS_ATTACH:
  begin
    // create the main object
    //Npp := TDbgpNppPlugin.Create;
  end;
  DLL_PROCESS_DETACH:
  begin
    try
      if Assigned(Npp) then
        Npp.Free;
    except
      ShowException(ExceptObject, ExceptAddr);
    end;
  end;
  //DLL_THREAD_ATTACH: MessageBeep(0);
  //DLL_THREAD_DETACH: MessageBeep(0);
  end;
end;

procedure setInfo(NppData: TNppData); cdecl; export;

Changes to src/lib/SciSupport.pas.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
interface

{$DEFINE MACRO_SUPPORT}

uses Windows;

type
  TScintillaMessageFnc = function(ptr : Pointer; Msg, wParam, lParam : LongInt) : LongInt; cdecl;
  uptr_t = Longword;
  sptr_t = Longint;
  TNotifyHeader = record
	  hwndFrom : Pointer;
	  idFrom : Cardinal;
	  code : Cardinal;
  end;
  PSCNotification = ^TSCNotification;
  TSCNotification = record
    nmhdr 		          : TNotifyHeader;
    position    	      : Integer;		// SCN_STYLENEEDED, SCN_MODIFIED
    ch 			            : Integer;		// SCN_CHARADDED, SCN_KEY
    modifiers		        : Integer;		// SCN_KEY







|



|
|
|







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
interface

{$DEFINE MACRO_SUPPORT}

uses Windows;

type
  TScintillaMessageFnc = function(ptr : Pointer; Msg: UINT; wParam: WPARAM; lParam : LPARAM) : LRESULT; cdecl;
  uptr_t = Longword;
  sptr_t = Longint;
  TNotifyHeader = record
	  hwndFrom : HWND;
	  idFrom : uptr_t;
	  code : NativeUInt;
  end;
  PSCNotification = ^TSCNotification;
  TSCNotification = record
    nmhdr 		          : TNotifyHeader;
    position    	      : Integer;		// SCN_STYLENEEDED, SCN_MODIFIED
    ch 			            : Integer;		// SCN_CHARADDED, SCN_KEY
    modifiers		        : Integer;		// SCN_KEY

Changes to src/lib/nppplugin.pas.

241
242
243
244
245
246
247





248
249
250
251
252
253
254
...
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
...
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
...
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511

512
513
514
515
516
517
518
...
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
...
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761

	NPPM_SETBUFFERFORMAT = (NOTEPADPLUS_USER + 69);
	//wParam: BufferID to set format of
	//lParam: format
	//Returns TRUE on success, FALSE otherwise
	//use int, see formatType






  // http://sourceforge.net/p/notepad-plus/discussion/482781/thread/c430f474
  NPPM_GETLANGUAGENAME = (NOTEPADPLUS_USER + 83);
   // INT NPPM_GETLANGUAGENAME(int langType, TCHAR *langName)
   // Get programing language name from the given language type (LangType)
   // Return value is the number of copied character / number of character to copy (\0 is not included)
   // You should call this function 2 times - the first time you pass langName as NULL to get the number of characters to copy.
       // You allocate a buffer of the length of (the number of characters + 1) then call NPPM_GETLANGUAGENAME function the 2nd time
................................................................................

  TToolbarIcons = record
    ToolbarBmp: HBITMAP;
    ToolbarIcon: HICON;
  end;

  TCommunicationInfo = record
    internalMsg: Cardinal;
    srcModuleName: nppPChar;
    info: Pointer;
  end;

  TNppData = record
    NppHandle: HWND;
    ScintillaMainHandle: HWND;
................................................................................
    PrevContainer: Cardinal; // internal
    ModuleName:nppPChar; // name of module GetModuleFileName(0...)
  end;

  TNppPlugin = class(TObject)
  private
    FuncArray: array of _TFuncItem;
    FClosingBufferID: Integer;
    FConfigDir: string;
  protected
    PluginName: nppString;
    function GetPluginsConfigDir: string;
    function AddFuncSeparator: Integer;
    function AddFuncItem(Name: nppString; Func: PFUNCPLUGINCMD): Integer; overload;
    function AddFuncItem(Name: nppString; Func: PFUNCPLUGINCMD; ShortcutKey: TShortcutKey): Integer; overload;
................................................................................
    function GetFuncsArray(var FuncsCount: Integer): Pointer;
    procedure BeNotified(sn: PSCNotification);
    procedure MessageProc(var Msg: TMessage); virtual;

    // hooks
    procedure DoNppnToolbarModification; virtual;
    procedure DoNppnShutdown; virtual;
    procedure DoNppnBufferActivated(const BufferID: Cardinal); virtual;
    procedure DoNppnFileClosed(const BufferID: Cardinal); virtual;
    procedure DoUpdateUI(const hwnd: HWND; const updated: Integer); virtual;
    procedure DoModified(const hwnd: HWND; const modificationType: Integer); virtual;

    // df
    function DoOpen(filename: String): boolean; overload;
    function DoOpen(filename: String; Line: Integer): boolean; overload;
    procedure GetFileLine(var filename: String; var Line: Integer);
    function GetWord: string;


    property ConfigDir: string  read GetPluginsConfigDir;
  end;


implementation

{ TNppPlugin }
................................................................................
  // ask if we are not already opened
  SetLength(s, 500);
  {r := }SendMessage(self.NppData.NppHandle, NPPM_GETFULLCURRENTPATH, 0, LPARAM(PChar(s)));
  SetString(s, PChar(s), strlen(PChar(s)));
  Result := true;
  if (s = filename) then exit;
  r := SendMessage(self.NppData.NppHandle, WM_DOOPEN, 0, LPARAM(PChar(filename)));
  Result := (r=0);
end;

function TNppPlugin.DoOpen(filename: String; Line: Integer): boolean;
var
  r: boolean;
begin
  r := self.DoOpen(filename);
................................................................................
end;

procedure TNppPlugin.DoNppnToolbarModification;
begin
  // override these
end;

procedure TNppPlugin.DoNppnBufferActivated(const BufferID: Cardinal);
begin
  // override these
end;

procedure TNppPlugin.DoNppnFileClosed(const BufferID: Cardinal);
begin
  // override these
end;

procedure TNppPlugin.DoModified(const hwnd: HWND; const modificationType: Integer);
begin
  // override these







>
>
>
>
>







 







|







 







|







 







|
|









>







 







|







 







|




|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
...
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
...
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
...
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
...
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
...
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767

	NPPM_SETBUFFERFORMAT = (NOTEPADPLUS_USER + 69);
	//wParam: BufferID to set format of
	//lParam: format
	//Returns TRUE on success, FALSE otherwise
	//use int, see formatType

	NPPM_DOOPEN = (NOTEPADPLUS_USER + 77);
	// BOOL NPPM_DOOPEN(0, const TCHAR *fullPathName2Open)
	// fullPathName2Open indicates the full file path name to be opened.
	// The return value is TRUE (1) if the operation is successful, otherwise FALSE (0).

  // http://sourceforge.net/p/notepad-plus/discussion/482781/thread/c430f474
  NPPM_GETLANGUAGENAME = (NOTEPADPLUS_USER + 83);
   // INT NPPM_GETLANGUAGENAME(int langType, TCHAR *langName)
   // Get programing language name from the given language type (LangType)
   // Return value is the number of copied character / number of character to copy (\0 is not included)
   // You should call this function 2 times - the first time you pass langName as NULL to get the number of characters to copy.
       // You allocate a buffer of the length of (the number of characters + 1) then call NPPM_GETLANGUAGENAME function the 2nd time
................................................................................

  TToolbarIcons = record
    ToolbarBmp: HBITMAP;
    ToolbarIcon: HICON;
  end;

  TCommunicationInfo = record
    internalMsg: NativeUInt;
    srcModuleName: nppPChar;
    info: Pointer;
  end;

  TNppData = record
    NppHandle: HWND;
    ScintillaMainHandle: HWND;
................................................................................
    PrevContainer: Cardinal; // internal
    ModuleName:nppPChar; // name of module GetModuleFileName(0...)
  end;

  TNppPlugin = class(TObject)
  private
    FuncArray: array of _TFuncItem;
    FClosingBufferID: THandle;
    FConfigDir: string;
  protected
    PluginName: nppString;
    function GetPluginsConfigDir: string;
    function AddFuncSeparator: Integer;
    function AddFuncItem(Name: nppString; Func: PFUNCPLUGINCMD): Integer; overload;
    function AddFuncItem(Name: nppString; Func: PFUNCPLUGINCMD; ShortcutKey: TShortcutKey): Integer; overload;
................................................................................
    function GetFuncsArray(var FuncsCount: Integer): Pointer;
    procedure BeNotified(sn: PSCNotification);
    procedure MessageProc(var Msg: TMessage); virtual;

    // hooks
    procedure DoNppnToolbarModification; virtual;
    procedure DoNppnShutdown; virtual;
    procedure DoNppnBufferActivated(const BufferID: THandle); virtual;
    procedure DoNppnFileClosed(const BufferID: THandle); virtual;
    procedure DoUpdateUI(const hwnd: HWND; const updated: Integer); virtual;
    procedure DoModified(const hwnd: HWND; const modificationType: Integer); virtual;

    // df
    function DoOpen(filename: String): boolean; overload;
    function DoOpen(filename: String; Line: Integer): boolean; overload;
    procedure GetFileLine(var filename: String; var Line: Integer);
    function GetWord: string;

    // helpers
    property ConfigDir: string  read GetPluginsConfigDir;
  end;


implementation

{ TNppPlugin }
................................................................................
  // ask if we are not already opened
  SetLength(s, 500);
  {r := }SendMessage(self.NppData.NppHandle, NPPM_GETFULLCURRENTPATH, 0, LPARAM(PChar(s)));
  SetString(s, PChar(s), strlen(PChar(s)));
  Result := true;
  if (s = filename) then exit;
  r := SendMessage(self.NppData.NppHandle, WM_DOOPEN, 0, LPARAM(PChar(filename)));
  Result := (r<>0);
end;

function TNppPlugin.DoOpen(filename: String; Line: Integer): boolean;
var
  r: boolean;
begin
  r := self.DoOpen(filename);
................................................................................
end;

procedure TNppPlugin.DoNppnToolbarModification;
begin
  // override these
end;

procedure TNppPlugin.DoNppnBufferActivated(const BufferID: THandle);
begin
  // override these
end;

procedure TNppPlugin.DoNppnFileClosed(const BufferID: THandle);
begin
  // override these
end;

procedure TNppPlugin.DoModified(const hwnd: HWND; const modificationType: Integer);
begin
  // override these

Changes to src/prj/HTMLTag.dproj.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
34
35
36
37
38
39
40
41






42

43
44
45
46

47
48

49
50
51
52
53
54
55
56
57
58
..
66
67
68
69
70
71
72


73
74
75
76
77
78
79
..
81
82
83
84
85
86
87


88



89
90
91
92
93
94
95
...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
...
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProjectGuid>{A2533A0E-8621-4A31-A675-059AFF5AA9FB}</ProjectGuid>
        <MainSource>HTMLTag.dpr</MainSource>
        <Base>True</Base>
        <Config Condition="'$(Config)'==''">Debug</Config>
        <TargetedPlatforms>1</TargetedPlatforms>
        <AppType>Library</AppType>
        <FrameworkType>VCL</FrameworkType>
        <ProjectVersion>15.3</ProjectVersion>
        <Platform Condition="'$(Platform)'==''">Win32</Platform>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
        <Base_Win32>true</Base_Win32>
        <CfgParent>Base</CfgParent>
................................................................................
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
        <Cfg_2_Win32>true</Cfg_2_Win32>
        <CfgParent>Cfg_2</CfgParent>
        <Cfg_2>true</Cfg_2>
        <Base>true</Base>
    </PropertyGroup>






    <PropertyGroup Condition="'$(Base)'!=''">

        <Icon_MainIcon>HTMLTag.ico</Icon_MainIcon>
        <VerInfo_MajorVer>0</VerInfo_MajorVer>
        <VerInfo_MinorVer>5</VerInfo_MinorVer>
        <PostBuildEventCancelOnError>false</PostBuildEventCancelOnError>

        <PostBuildEvent><![CDATA["C:\MC\Run\Util\Compression\UPX\upx.exe" --best -q "$(OUTPUTPATH)"
$(PostBuildEvent)]]></PostBuildEvent>

        <VerInfo_DLL>true</VerInfo_DLL>
        <DCC_ImageBase>00400000</DCC_ImageBase>
        <VerInfo_Keys>CompanyName=Voronwë;FileDescription=HTMLTag plugin for Notepad++;FileVersion=0.5.0.0;InternalName=HTMLTag;LegalCopyright=© Martijn Coppoolse;LegalTrademarks=;OriginalFilename=HTMLTag.dll;ProductName=Notepad++;ProductVersion=6.0.0.0;Comments=http://fossil.2of4.net/npp_htmltag</VerInfo_Keys>
        <DCC_UsePackage>vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;dclOffice2k;dOCI6;CoolTrayIcon_D6plus;curlpkg;ThemeManagerD6;VirtualTreesD6;Jcl;JclVcl;JvCoreD6R;JvSystemD6R;JvStdCtrlsD6R;JvAppFrmD6R;JvBandsD6R;JvDBD6R;JvDlgsD6R;JvBDED6R;JvCmpD6R;JvCryptD6R;JvCtrlsD6R;JvCustomD6R;JvDockingD6R;JvDotNetCtrlsD6R;JvEDID6R;JvGlobusD6R;JvHMID6R;JvInterpreterD6R;JvJansD6R;JvManagedThreadsD6R;JvMMD6R;JvNetD6R;JvPageCompsD6R;JvPluginD6R;JvPrintPreviewD6R;JvRuntimeDesignD6R;JvTimeFrameworkD6R;JvUIBD6R;JvValidatorsD6R;JvWizardD6R;JvXPCtrlsD6R;$(DCC_UsePackage)</DCC_UsePackage>
        <DCC_ExeOutput>..\..\out\$(PLATFORM)\$(CONFIG)</DCC_ExeOutput>
        <DCC_Define>NPPUNICODE;$(DCC_Define)</DCC_Define>
        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
        <DCC_UnitSearchPath>..\;$(DELPHI)\Lib\Debug;C:\PROGRA~1\Jedi\jcl\lib\d6\debug;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
................................................................................
        <DCC_E>false</DCC_E>
        <DCC_DcuOutput>..\..\out\dcu\$(PLATFORM)\$(CONFIG)</DCC_DcuOutput>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base_Win32)'!=''">
        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base_Win64)'!=''">


        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_1)'!=''">
        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
        <DCC_DebugInformation>0</DCC_DebugInformation>
        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
................................................................................
    <PropertyGroup Condition="'$(Cfg_2)'!=''">
        <DCC_SymbolReferenceInfo>2</DCC_SymbolReferenceInfo>
        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
        <DCC_Optimize>false</DCC_Optimize>
        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">


        <PostBuildEvent><![CDATA[]]></PostBuildEvent>



    </PropertyGroup>
    <ItemGroup>
        <DelphiCompile Include="$(MainSource)">
            <MainSource>MainSource</MainSource>
        </DelphiCompile>
        <DCCReference Include="..\U_Npp_HTMLTag.pas"/>
        <DCCReference Include="..\common\L_VersionInfoW.pas"/>
................................................................................
        <Borland.ProjectType/>
        <BorlandProject>
            <Delphi.Personality>
                <Source>
                    <Source Name="MainSource">HTMLTag.dpr</Source>
                </Source>
                <Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k160.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp160.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k160.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp160.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                </Excluded_Packages>
                <VersionInfo>
                    <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
                    <VersionInfo Name="AutoIncBuild">False</VersionInfo>
                    <VersionInfo Name="MajorVer">1</VersionInfo>
                    <VersionInfo Name="MinorVer">0</VersionInfo>
                    <VersionInfo Name="Release">0</VersionInfo>
................................................................................
                    <VersionInfoKeys Name="OriginalFilename"/>
                    <VersionInfoKeys Name="ProductName"/>
                    <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
                    <VersionInfoKeys Name="Comments"/>
                </VersionInfoKeys>
            </Delphi.Personality>
            <Platforms>
                <Platform value="OSX32">False</Platform>
                <Platform value="Win32">True</Platform>
                <Platform value="Win64">False</Platform>
            </Platforms>
        </BorlandProject>
        <ProjectFileVersion>12</ProjectFileVersion>
    </ProjectExtensions>
    <Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
    <Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
    <PropertyGroup Condition="'$(Config)'=='Release' And '$(Platform)'=='OSX32'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot;</PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Release' And '$(Platform)'=='Win32'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot;</PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Release' And '$(Platform)'=='Win64'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot;</PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Debug' And '$(Platform)'=='OSX32'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot;</PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Debug' And '$(Platform)'=='Win32'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent><![CDATA[]]></PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Debug' And '$(Platform)'=='Win64'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot;</PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
</Project>






|


|
|







 








>
>
>
>
>
>

>




>
|
|
>


|







 







>
>







 







>
>
|
>
>
>







 







|
|
|
<







 







<

|






<
<
<
<
<
<
<
<





|







|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
..
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
...
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
...
170
171
172
173
174
175
176

177
178
179
180
181
182
183
184








185
186
187
188
189
190
191
192
193
194
195
196
197
198
















199
200
201
202
203
204
205
206
207
208
209
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProjectGuid>{A2533A0E-8621-4A31-A675-059AFF5AA9FB}</ProjectGuid>
        <MainSource>HTMLTag.dpr</MainSource>
        <Base>True</Base>
        <Config Condition="'$(Config)'==''">Debug</Config>
        <TargetedPlatforms>3</TargetedPlatforms>
        <AppType>Library</AppType>
        <FrameworkType>VCL</FrameworkType>
        <ProjectVersion>18.1</ProjectVersion>
        <Platform Condition="'$(Platform)'==''">Win64</Platform>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
        <Base_Win32>true</Base_Win32>
        <CfgParent>Base</CfgParent>
................................................................................
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
        <Cfg_2_Win32>true</Cfg_2_Win32>
        <CfgParent>Cfg_2</CfgParent>
        <Cfg_2>true</Cfg_2>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
        <Cfg_2_Win64>true</Cfg_2_Win64>
        <CfgParent>Cfg_2</CfgParent>
        <Cfg_2>true</Cfg_2>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base)'!=''">
        <SanitizedProjectName>HTMLTag</SanitizedProjectName>
        <Icon_MainIcon>HTMLTag.ico</Icon_MainIcon>
        <VerInfo_MajorVer>0</VerInfo_MajorVer>
        <VerInfo_MinorVer>5</VerInfo_MinorVer>
        <PostBuildEventCancelOnError>false</PostBuildEventCancelOnError>
        <PostBuildEvent>
            <![CDATA["C:\MC\Run\Util\Compression\UPX\upx.exe" --best -q "$(OUTPUTPATH)"
$(PostBuildEvent)]]>
        </PostBuildEvent>
        <VerInfo_DLL>true</VerInfo_DLL>
        <DCC_ImageBase>00400000</DCC_ImageBase>
        <VerInfo_Keys>CompanyName=Voronwë;FileDescription=HTMLTag plugin for Notepad++;FileVersion=0.5.0.0;InternalName=HTMLTag;LegalCopyright=Martijn Coppoolse;LegalTrademarks=;OriginalFilename=HTMLTag.dll;ProductName=Notepad++;ProductVersion=6.0.0.0;Comments=http://fossil.2of4.net/npp_htmltag</VerInfo_Keys>
        <DCC_UsePackage>vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;dclOffice2k;dOCI6;CoolTrayIcon_D6plus;curlpkg;ThemeManagerD6;VirtualTreesD6;Jcl;JclVcl;JvCoreD6R;JvSystemD6R;JvStdCtrlsD6R;JvAppFrmD6R;JvBandsD6R;JvDBD6R;JvDlgsD6R;JvBDED6R;JvCmpD6R;JvCryptD6R;JvCtrlsD6R;JvCustomD6R;JvDockingD6R;JvDotNetCtrlsD6R;JvEDID6R;JvGlobusD6R;JvHMID6R;JvInterpreterD6R;JvJansD6R;JvManagedThreadsD6R;JvMMD6R;JvNetD6R;JvPageCompsD6R;JvPluginD6R;JvPrintPreviewD6R;JvRuntimeDesignD6R;JvTimeFrameworkD6R;JvUIBD6R;JvValidatorsD6R;JvWizardD6R;JvXPCtrlsD6R;$(DCC_UsePackage)</DCC_UsePackage>
        <DCC_ExeOutput>..\..\out\$(PLATFORM)\$(CONFIG)</DCC_ExeOutput>
        <DCC_Define>NPPUNICODE;$(DCC_Define)</DCC_Define>
        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
        <DCC_UnitSearchPath>..\;$(DELPHI)\Lib\Debug;C:\PROGRA~1\Jedi\jcl\lib\d6\debug;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
................................................................................
        <DCC_E>false</DCC_E>
        <DCC_DcuOutput>..\..\out\dcu\$(PLATFORM)\$(CONFIG)</DCC_DcuOutput>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base_Win32)'!=''">
        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base_Win64)'!=''">
        <VerInfo_Keys>CompanyName=Voronwë;FileDescription=HTMLTag plugin for Notepad++;FileVersion=0.5.0.0;InternalName=HTMLTag;LegalCopyright=© Martijn Coppoolse;LegalTrademarks=;OriginalFilename=HTMLTag.dll;ProductName=Notepad++;ProductVersion=7.0.0.0;Comments=http://fossil.2of4.net/npp_htmltag</VerInfo_Keys>
        <Debugger_HostApplication>C:\MC\Run\Office\Np++\x64\notepad++.exe</Debugger_HostApplication>
        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_1)'!=''">
        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
        <DCC_DebugInformation>0</DCC_DebugInformation>
        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
................................................................................
    <PropertyGroup Condition="'$(Cfg_2)'!=''">
        <DCC_SymbolReferenceInfo>2</DCC_SymbolReferenceInfo>
        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
        <DCC_Optimize>false</DCC_Optimize>
        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
        <PostBuildEvent>
            <![CDATA[]]>
        </PostBuildEvent>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
        <VerInfo_Keys>CompanyName=Voronwë;FileDescription=HTMLTag plugin for Notepad++;FileVersion=0.5.0.0;InternalName=HTMLTag;LegalCopyright=© Martijn Coppoolse;LegalTrademarks=;OriginalFilename=HTMLTag.dll;ProductName=Notepad++;ProductVersion=7.0.0.0;Comments=http://fossil.2of4.net/npp_htmltag</VerInfo_Keys>
    </PropertyGroup>
    <ItemGroup>
        <DelphiCompile Include="$(MainSource)">
            <MainSource>MainSource</MainSource>
        </DelphiCompile>
        <DCCReference Include="..\U_Npp_HTMLTag.pas"/>
        <DCCReference Include="..\common\L_VersionInfoW.pas"/>
................................................................................
        <Borland.ProjectType/>
        <BorlandProject>
            <Delphi.Personality>
                <Source>
                    <Source Name="MainSource">HTMLTag.dpr</Source>
                </Source>
                <Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k240.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp240.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                    <Excluded_Packages Name="W:\Lib\BPL\RaizeComponentsVcl310.bpl">Raize Components VCL</Excluded_Packages>

                </Excluded_Packages>
                <VersionInfo>
                    <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
                    <VersionInfo Name="AutoIncBuild">False</VersionInfo>
                    <VersionInfo Name="MajorVer">1</VersionInfo>
                    <VersionInfo Name="MinorVer">0</VersionInfo>
                    <VersionInfo Name="Release">0</VersionInfo>
................................................................................
                    <VersionInfoKeys Name="OriginalFilename"/>
                    <VersionInfoKeys Name="ProductName"/>
                    <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
                    <VersionInfoKeys Name="Comments"/>
                </VersionInfoKeys>
            </Delphi.Personality>
            <Platforms>

                <Platform value="Win32">True</Platform>
                <Platform value="Win64">True</Platform>
            </Platforms>
        </BorlandProject>
        <ProjectFileVersion>12</ProjectFileVersion>
    </ProjectExtensions>
    <Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
    <Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>








    <PropertyGroup Condition="'$(Config)'=='Release' And '$(Platform)'=='Win32'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot; </PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Release' And '$(Platform)'=='Win64'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot; </PostBuildEvent>
















        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Debug' And '$(Platform)'=='Win64'">
        <PreBuildEvent/>
        <PreBuildEventIgnoreExitCode>False</PreBuildEventIgnoreExitCode>
        <PreLinkEvent/>
        <PreLinkEventIgnoreExitCode>False</PreLinkEventIgnoreExitCode>
        <PostBuildEvent>&quot;C:\MC\Run\Util\Compression\UPX\upx.exe&quot; --best -q &quot;$(OUTPUTPATH)&quot; </PostBuildEvent>
        <PostBuildEventIgnoreExitCode>True</PostBuildEventIgnoreExitCode>
    </PropertyGroup>
</Project>