NppPluginNETHelper.cs 89 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. namespace Demo
  8. {
  9. #region " Notepad++ "
  10. [StructLayout(LayoutKind.Sequential)]
  11. public struct NppData
  12. {
  13. public IntPtr _nppHandle;
  14. public IntPtr _scintillaMainHandle;
  15. public IntPtr _scintillaSecondHandle;
  16. }
  17. public delegate void NppFuncItemDelegate();
  18. [StructLayout(LayoutKind.Sequential)]
  19. public struct ShortcutKey
  20. {
  21. public ShortcutKey(bool isCtrl, bool isAlt, bool isShift, Keys key)
  22. {
  23. // the types 'bool' and 'char' have a size of 1 byte only!
  24. _isCtrl = Convert.ToByte(isCtrl);
  25. _isAlt = Convert.ToByte(isAlt);
  26. _isShift = Convert.ToByte(isShift);
  27. _key = Convert.ToByte(key);
  28. }
  29. public byte _isCtrl;
  30. public byte _isAlt;
  31. public byte _isShift;
  32. public byte _key;
  33. }
  34. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  35. public struct FuncItem
  36. {
  37. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
  38. public string _itemName;
  39. public NppFuncItemDelegate _pFunc;
  40. public int _cmdID;
  41. public bool _init2Check;
  42. public ShortcutKey _pShKey;
  43. }
  44. public class FuncItems : IDisposable
  45. {
  46. readonly List<FuncItem> _funcItems;
  47. readonly int _sizeFuncItem;
  48. readonly List<IntPtr> _shortCutKeys;
  49. IntPtr _nativePointer;
  50. bool _disposed;
  51. public FuncItems()
  52. {
  53. _funcItems = new List<FuncItem>();
  54. _sizeFuncItem = Marshal.SizeOf(typeof(FuncItem));
  55. _shortCutKeys = new List<IntPtr>();
  56. }
  57. [DllImport("kernel32")]
  58. static extern void RtlMoveMemory(IntPtr destination, IntPtr source, int length);
  59. public void Add(FuncItem funcItem)
  60. {
  61. var oldSize = _funcItems.Count * _sizeFuncItem;
  62. _funcItems.Add(funcItem);
  63. var newSize = _funcItems.Count * _sizeFuncItem;
  64. var newPointer = Marshal.AllocHGlobal(newSize);
  65. if (_nativePointer != IntPtr.Zero)
  66. {
  67. RtlMoveMemory(newPointer, _nativePointer, oldSize);
  68. Marshal.FreeHGlobal(_nativePointer);
  69. }
  70. var ptrPosNewItem = (IntPtr)((int)newPointer + oldSize);
  71. var aB = Encoding.Unicode.GetBytes(funcItem._itemName + "\0");
  72. Marshal.Copy(aB, 0, ptrPosNewItem, aB.Length);
  73. ptrPosNewItem = (IntPtr)((int)ptrPosNewItem + 128);
  74. var p = (funcItem._pFunc != null) ? Marshal.GetFunctionPointerForDelegate(funcItem._pFunc) : IntPtr.Zero;
  75. Marshal.WriteIntPtr(ptrPosNewItem, p);
  76. ptrPosNewItem = (IntPtr)((int)ptrPosNewItem + IntPtr.Size);
  77. Marshal.WriteInt32(ptrPosNewItem, funcItem._cmdID);
  78. ptrPosNewItem = (IntPtr)((int)ptrPosNewItem + 4);
  79. Marshal.WriteInt32(ptrPosNewItem, Convert.ToInt32(funcItem._init2Check));
  80. ptrPosNewItem = (IntPtr)((int)ptrPosNewItem + 4);
  81. if (funcItem._pShKey._key != 0)
  82. {
  83. var newShortCutKey = Marshal.AllocHGlobal(4);
  84. Marshal.StructureToPtr(funcItem._pShKey, newShortCutKey, false);
  85. Marshal.WriteIntPtr(ptrPosNewItem, newShortCutKey);
  86. }
  87. else Marshal.WriteIntPtr(ptrPosNewItem, IntPtr.Zero);
  88. _nativePointer = newPointer;
  89. }
  90. public void RefreshItems()
  91. {
  92. var ptrPosItem = _nativePointer;
  93. for (var i = 0; i < _funcItems.Count; i++)
  94. {
  95. var updatedItem = new FuncItem();
  96. updatedItem._itemName = _funcItems[i]._itemName;
  97. ptrPosItem = (IntPtr)((int)ptrPosItem + 128);
  98. updatedItem._pFunc = _funcItems[i]._pFunc;
  99. ptrPosItem = (IntPtr)((int)ptrPosItem + IntPtr.Size);
  100. updatedItem._cmdID = Marshal.ReadInt32(ptrPosItem);
  101. ptrPosItem = (IntPtr)((int)ptrPosItem + 4);
  102. updatedItem._init2Check = _funcItems[i]._init2Check;
  103. ptrPosItem = (IntPtr)((int)ptrPosItem + 4);
  104. updatedItem._pShKey = _funcItems[i]._pShKey;
  105. ptrPosItem = (IntPtr)((int)ptrPosItem + IntPtr.Size);
  106. _funcItems[i] = updatedItem;
  107. }
  108. }
  109. public IntPtr NativePointer { get { return _nativePointer; } }
  110. public List<FuncItem> Items { get { return _funcItems; } }
  111. public void Dispose()
  112. {
  113. if (!_disposed)
  114. {
  115. foreach (var ptr in _shortCutKeys) Marshal.FreeHGlobal(ptr);
  116. if (_nativePointer != IntPtr.Zero) Marshal.FreeHGlobal(_nativePointer);
  117. _disposed = true;
  118. }
  119. }
  120. ~FuncItems()
  121. {
  122. Dispose();
  123. }
  124. }
  125. [StructLayout(LayoutKind.Sequential)]
  126. public struct Rect
  127. {
  128. public Rect(int left, int top, int right, int bottom)
  129. {
  130. Left = left; Top = top; Right = right; Bottom = bottom;
  131. }
  132. public int Left;
  133. public int Top;
  134. public int Right;
  135. public int Bottom;
  136. }
  137. [Flags]
  138. public enum NppTbMsg : uint
  139. {
  140. // styles for containers
  141. //CAPTION_TOP = 1,
  142. //CAPTION_BOTTOM = 0,
  143. // defines for docking manager
  144. CONT_LEFT = 0,
  145. CONT_RIGHT = 1,
  146. CONT_TOP = 2,
  147. CONT_BOTTOM = 3,
  148. DOCKCONT_MAX = 4,
  149. // mask params for plugins of internal dialogs
  150. DWS_ICONTAB = 0x00000001, // Icon for tabs are available
  151. DWS_ICONBAR = 0x00000002, // Icon for icon bar are available (currently not supported)
  152. DWS_ADDINFO = 0x00000004, // Additional information are in use
  153. DWS_PARAMSALL = (DWS_ICONTAB|DWS_ICONBAR|DWS_ADDINFO),
  154. // default docking values for first call of plugin
  155. DWS_DF_CONT_LEFT = (CONT_LEFT << 28), // default docking on left
  156. DWS_DF_CONT_RIGHT = (CONT_RIGHT << 28), // default docking on right
  157. DWS_DF_CONT_TOP = (CONT_TOP << 28), // default docking on top
  158. DWS_DF_CONT_BOTTOM = (CONT_BOTTOM << 28), // default docking on bottom
  159. DWS_DF_FLOATING = 0x80000000 // default state is floating
  160. }
  161. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  162. public struct NppTbData
  163. {
  164. public IntPtr hClient; // HWND: client Window Handle
  165. public string pszName; // TCHAR*: name of plugin (shown in window)
  166. public int dlgID; // int: a funcItem provides the function pointer to start a dialog. Please parse here these ID
  167. // user modifications
  168. public NppTbMsg uMask; // UINT: mask params: look to above defines
  169. public uint hIconTab; // HICON: icon for tabs
  170. public string pszAddInfo; // TCHAR*: for plugin to display additional informations
  171. // internal data, do not use !!!
  172. public Rect rcFloat; // RECT: floating position
  173. public int iPrevCont; // int: stores the privious container (toggling between float and dock)
  174. public string pszModuleName; // const TCHAR*: it's the plugin file name. It's used to identify the plugin
  175. }
  176. public enum LangType
  177. {
  178. L_TEXT, L_PHP , L_C, L_CPP, L_CS, L_OBJC, L_JAVA, L_RC,
  179. L_HTML, L_XML, L_MAKEFILE, L_PASCAL, L_BATCH, L_INI, L_ASCII, L_USER,
  180. L_ASP, L_SQL, L_VB, L_JS, L_CSS, L_PERL, L_PYTHON, L_LUA,
  181. L_TEX, L_FORTRAN, L_BASH, L_FLASH, L_NSIS, L_TCL, L_LISP, L_SCHEME,
  182. L_ASM, L_DIFF, L_PROPS, L_PS, L_RUBY, L_SMALLTALK, L_VHDL, L_KIX, L_AU3,
  183. L_CAML, L_ADA, L_VERILOG, L_MATLAB, L_HASKELL, L_INNO, L_SEARCHRESULT,
  184. L_CMAKE, L_YAML, L_COBOL, LGui4Cli, L_D, L_POWERSHELL, L_R, L_JSP,
  185. // The end of enumated language type, so it should be always at the end
  186. L_EXTERNAL
  187. }
  188. [Flags]
  189. public enum NppMsg : uint
  190. {
  191. //Here you can find how to use these messages : http://notepad-plus.sourceforge.net/uk/plugins-HOWTO.php
  192. NPPMSG = (0x400/*WM_USER*/ + 1000),
  193. NPPM_GETCURRENTSCINTILLA = (NPPMSG + 4),
  194. NPPM_GETCURRENTLANGTYPE = (NPPMSG + 5),
  195. NPPM_SETCURRENTLANGTYPE = (NPPMSG + 6),
  196. NPPM_GETNBOPENFILES = (NPPMSG + 7),
  197. ALL_OPEN_FILES = 0,
  198. PRIMARY_VIEW = 1,
  199. SECOND_VIEW = 2,
  200. NPPM_GETOPENFILENAMES = (NPPMSG + 8),
  201. NPPM_MODELESSDIALOG = (NPPMSG + 12),
  202. MODELESSDIALOGADD = 0,
  203. MODELESSDIALOGREMOVE = 1,
  204. NPPM_GETNBSESSIONFILES = (NPPMSG + 13),
  205. NPPM_GETSESSIONFILES = (NPPMSG + 14),
  206. NPPM_SAVESESSION = (NPPMSG + 15),
  207. NPPM_SAVECURRENTSESSION = (NPPMSG + 16),
  208. //struct sessionInfo {
  209. // TCHAR* sessionFilePathName;
  210. // int nbFile;
  211. // TCHAR** files;
  212. //};
  213. NPPM_GETOPENFILENAMESPRIMARY = (NPPMSG + 17),
  214. NPPM_GETOPENFILENAMESSECOND = (NPPMSG + 18),
  215. NPPM_CREATESCINTILLAHANDLE = (NPPMSG + 20),
  216. NPPM_DESTROYSCINTILLAHANDLE = (NPPMSG + 21),
  217. NPPM_GETNBUSERLANG = (NPPMSG + 22),
  218. NPPM_GETCURRENTDOCINDEX = (NPPMSG + 23),
  219. MAIN_VIEW = 0,
  220. SUB_VIEW = 1,
  221. NPPM_SETSTATUSBAR = (NPPMSG + 24),
  222. STATUSBAR_DOC_TYPE = 0,
  223. STATUSBAR_DOC_SIZE = 1,
  224. STATUSBAR_CUR_POS = 2,
  225. STATUSBAR_EOF_FORMAT = 3,
  226. STATUSBAR_UNICODE_TYPE = 4,
  227. STATUSBAR_TYPING_MODE = 5,
  228. NPPM_GETMENUHANDLE = (NPPMSG + 25),
  229. NPPPLUGINMENU = 0,
  230. NPPM_ENCODESCI = (NPPMSG + 26),
  231. //ascii file to unicode
  232. //int NPPM_ENCODESCI(MAIN_VIEW/SUB_VIEW, 0)
  233. //return new unicodeMode
  234. NPPM_DECODESCI = (NPPMSG + 27),
  235. //unicode file to ascii
  236. //int NPPM_DECODESCI(MAIN_VIEW/SUB_VIEW, 0)
  237. //return old unicodeMode
  238. NPPM_ACTIVATEDOC = (NPPMSG + 28),
  239. //void NPPM_ACTIVATEDOC(int view, int index2Activate)
  240. NPPM_LAUNCHFINDINFILESDLG = (NPPMSG + 29),
  241. //void NPPM_LAUNCHFINDINFILESDLG(TCHAR * dir2Search, TCHAR * filtre)
  242. NPPM_DMMSHOW = (NPPMSG + 30),
  243. NPPM_DMMHIDE = (NPPMSG + 31),
  244. NPPM_DMMUPDATEDISPINFO = (NPPMSG + 32),
  245. //void NPPM_DMMxxx(0, tTbData->hClient)
  246. NPPM_DMMREGASDCKDLG = (NPPMSG + 33),
  247. //void NPPM_DMMREGASDCKDLG(0, &tTbData)
  248. NPPM_LOADSESSION = (NPPMSG + 34),
  249. //void NPPM_LOADSESSION(0, const TCHAR* file name)
  250. NPPM_DMMVIEWOTHERTAB = (NPPMSG + 35),
  251. //void WM_DMM_VIEWOTHERTAB(0, tTbData->pszName)
  252. NPPM_RELOADFILE = (NPPMSG + 36),
  253. //BOOL NPPM_RELOADFILE(BOOL withAlert, TCHAR *filePathName2Reload)
  254. NPPM_SWITCHTOFILE = (NPPMSG + 37),
  255. //BOOL NPPM_SWITCHTOFILE(0, TCHAR *filePathName2switch)
  256. NPPM_SAVECURRENTFILE = (NPPMSG + 38),
  257. //BOOL NPPM_SAVECURRENTFILE(0, 0)
  258. NPPM_SAVEALLFILES = (NPPMSG + 39),
  259. //BOOL NPPM_SAVEALLFILES(0, 0)
  260. NPPM_SETMENUITEMCHECK = (NPPMSG + 40),
  261. //void WM_PIMENU_CHECK(UINT funcItem[X]._cmdID, TRUE/FALSE)
  262. NPPM_ADDTOOLBARICON = (NPPMSG + 41),
  263. //void WM_ADDTOOLBARICON(UINT funcItem[X]._cmdID, toolbarIcons icon)
  264. //struct toolbarIcons {
  265. // HBITMAP hToolbarBmp;
  266. // HICON hToolbarIcon;
  267. //};
  268. NPPM_GETWINDOWSVERSION = (NPPMSG + 42),
  269. //winVer NPPM_GETWINDOWSVERSION(0, 0)
  270. NPPM_DMMGETPLUGINHWNDBYNAME = (NPPMSG + 43),
  271. //HWND WM_DMM_GETPLUGINHWNDBYNAME(const TCHAR *windowName, const TCHAR *moduleName)
  272. // if moduleName is NULL, then return value is NULL
  273. // if windowName is NULL, then the first found window handle which matches with the moduleName will be returned
  274. NPPM_MAKECURRENTBUFFERDIRTY = (NPPMSG + 44),
  275. //BOOL NPPM_MAKECURRENTBUFFERDIRTY(0, 0)
  276. NPPM_GETENABLETHEMETEXTUREFUNC = (NPPMSG + 45),
  277. //BOOL NPPM_GETENABLETHEMETEXTUREFUNC(0, 0)
  278. NPPM_GETPLUGINSCONFIGDIR = (NPPMSG + 46),
  279. //void NPPM_GETPLUGINSCONFIGDIR(int strLen, TCHAR *str)
  280. NPPM_MSGTOPLUGIN = (NPPMSG + 47),
  281. //BOOL NPPM_MSGTOPLUGIN(TCHAR *destModuleName, CommunicationInfo *info)
  282. // return value is TRUE when the message arrive to the destination plugins.
  283. // if destModule or info is NULL, then return value is FALSE
  284. //struct CommunicationInfo {
  285. // long internalMsg;
  286. // const TCHAR * srcModuleName;
  287. // void * info; // defined by plugin
  288. //};
  289. NPPM_MENUCOMMAND = (NPPMSG + 48),
  290. //void NPPM_MENUCOMMAND(0, int cmdID)
  291. // uncomment //#include "menuCmdID.h"
  292. // in the beginning of this file then use the command symbols defined in "menuCmdID.h" file
  293. // to access all the Notepad++ menu command items
  294. NPPM_TRIGGERTABBARCONTEXTMENU = (NPPMSG + 49),
  295. //void NPPM_TRIGGERTABBARCONTEXTMENU(int view, int index2Activate)
  296. NPPM_GETNPPVERSION = (NPPMSG + 50),
  297. // int NPPM_GETNPPVERSION(0, 0)
  298. // return version
  299. // ex : v4.6
  300. // HIWORD(version) == 4
  301. // LOWORD(version) == 6
  302. NPPM_HIDETABBAR = (NPPMSG + 51),
  303. // BOOL NPPM_HIDETABBAR(0, BOOL hideOrNot)
  304. // if hideOrNot is set as TRUE then tab bar will be hidden
  305. // otherwise it'll be shown.
  306. // return value : the old status value
  307. NPPM_ISTABBARHIDDEN = (NPPMSG + 52),
  308. // BOOL NPPM_ISTABBARHIDDEN(0, 0)
  309. // returned value : TRUE if tab bar is hidden, otherwise FALSE
  310. NPPM_GETPOSFROMBUFFERID = (NPPMSG + 57),
  311. // INT NPPM_GETPOSFROMBUFFERID(INT bufferID, 0)
  312. // Return VIEW|INDEX from a buffer ID. -1 if the bufferID non existing
  313. //
  314. // VIEW takes 2 highest bits and INDEX (0 based) takes the rest (30 bits)
  315. // Here's the values for the view :
  316. // MAIN_VIEW 0
  317. // SUB_VIEW 1
  318. NPPM_GETFULLPATHFROMBUFFERID = (NPPMSG + 58),
  319. // INT NPPM_GETFULLPATHFROMBUFFERID(INT bufferID, TCHAR *fullFilePath)
  320. // Get full path file name from a bufferID.
  321. // Return -1 if the bufferID non existing, otherwise the number of TCHAR copied/to copy
  322. // User should call it with fullFilePath be NULL to get the number of TCHAR (not including the nul character),
  323. // allocate fullFilePath with the return values + 1, then call it again to get full path file name
  324. NPPM_GETBUFFERIDFROMPOS = (NPPMSG + 59),
  325. //wParam: Position of document
  326. //lParam: View to use, 0 = Main, 1 = Secondary
  327. //Returns 0 if invalid
  328. NPPM_GETCURRENTBUFFERID = (NPPMSG + 60),
  329. //Returns active Buffer
  330. NPPM_RELOADBUFFERID = (NPPMSG + 61),
  331. //Reloads Buffer
  332. //wParam: Buffer to reload
  333. //lParam: 0 if no alert, else alert
  334. NPPM_GETBUFFERLANGTYPE = (NPPMSG + 64),
  335. //wParam: BufferID to get LangType from
  336. //lParam: 0
  337. //Returns as int, see LangType. -1 on error
  338. NPPM_SETBUFFERLANGTYPE = (NPPMSG + 65),
  339. //wParam: BufferID to set LangType of
  340. //lParam: LangType
  341. //Returns TRUE on success, FALSE otherwise
  342. //use int, see LangType for possible values
  343. //L_USER and L_EXTERNAL are not supported
  344. NPPM_GETBUFFERENCODING = (NPPMSG + 66),
  345. //wParam: BufferID to get encoding from
  346. //lParam: 0
  347. //returns as int, see UniMode. -1 on error
  348. NPPM_SETBUFFERENCODING = (NPPMSG + 67),
  349. //wParam: BufferID to set encoding of
  350. //lParam: format
  351. //Returns TRUE on success, FALSE otherwise
  352. //use int, see UniMode
  353. //Can only be done on new, unedited files
  354. NPPM_GETBUFFERFORMAT = (NPPMSG + 68),
  355. //wParam: BufferID to get format from
  356. //lParam: 0
  357. //returns as int, see formatType. -1 on error
  358. NPPM_SETBUFFERFORMAT = (NPPMSG + 69),
  359. //wParam: BufferID to set format of
  360. //lParam: format
  361. //Returns TRUE on success, FALSE otherwise
  362. //use int, see formatType
  363. /*
  364. NPPM_ADDREBAR = (NPPMSG + 57),
  365. // BOOL NPPM_ADDREBAR(0, REBARBANDINFO *)
  366. // Returns assigned ID in wID value of struct pointer
  367. NPPM_UPDATEREBAR = (NPPMSG + 58),
  368. // BOOL NPPM_ADDREBAR(INT ID, REBARBANDINFO *)
  369. //Use ID assigned with NPPM_ADDREBAR
  370. NPPM_REMOVEREBAR = (NPPMSG + 59),
  371. // BOOL NPPM_ADDREBAR(INT ID, 0)
  372. //Use ID assigned with NPPM_ADDREBAR
  373. */
  374. NPPM_HIDETOOLBAR = (NPPMSG + 70),
  375. // BOOL NPPM_HIDETOOLBAR(0, BOOL hideOrNot)
  376. // if hideOrNot is set as TRUE then tool bar will be hidden
  377. // otherwise it'll be shown.
  378. // return value : the old status value
  379. NPPM_ISTOOLBARHIDDEN = (NPPMSG + 71),
  380. // BOOL NPPM_ISTOOLBARHIDDEN(0, 0)
  381. // returned value : TRUE if tool bar is hidden, otherwise FALSE
  382. NPPM_HIDEMENU = (NPPMSG + 72),
  383. // BOOL NPPM_HIDEMENU(0, BOOL hideOrNot)
  384. // if hideOrNot is set as TRUE then menu will be hidden
  385. // otherwise it'll be shown.
  386. // return value : the old status value
  387. NPPM_ISMENUHIDDEN = (NPPMSG + 73),
  388. // BOOL NPPM_ISMENUHIDDEN(0, 0)
  389. // returned value : TRUE if menu is hidden, otherwise FALSE
  390. NPPM_HIDESTATUSBAR = (NPPMSG + 74),
  391. // BOOL NPPM_HIDESTATUSBAR(0, BOOL hideOrNot)
  392. // if hideOrNot is set as TRUE then STATUSBAR will be hidden
  393. // otherwise it'll be shown.
  394. // return value : the old status value
  395. NPPM_ISSTATUSBARHIDDEN = (NPPMSG + 75),
  396. // BOOL NPPM_ISSTATUSBARHIDDEN(0, 0)
  397. // returned value : TRUE if STATUSBAR is hidden, otherwise FALSE
  398. NPPM_GETSHORTCUTBYCMDID = (NPPMSG + 76),
  399. // BOOL NPPM_GETSHORTCUTBYCMDID(int cmdID, ShortcutKey *sk)
  400. // get your plugin command current mapped shortcut into sk via cmdID
  401. // You may need it after getting NPPN_READY notification
  402. // returned value : TRUE if this function call is successful and shorcut is enable, otherwise FALSE
  403. NPPM_DOOPEN = (NPPMSG + 77),
  404. // BOOL NPPM_DOOPEN(0, const TCHAR *fullPathName2Open)
  405. // fullPathName2Open indicates the full file path name to be opened.
  406. // The return value is TRUE (1) if the operation is successful, otherwise FALSE (0).
  407. NPPM_SAVECURRENTFILEAS = (NPPMSG + 78),
  408. // BOOL NPPM_SAVECURRENTFILEAS (BOOL asCopy, const TCHAR* filename)
  409. NPPM_GETCURRENTNATIVELANGENCODING = (NPPMSG + 79),
  410. // INT NPPM_GETCURRENTNATIVELANGENCODING(0, 0)
  411. // returned value : the current native language enconding
  412. NPPM_ALLOCATESUPPORTED = (NPPMSG + 80),
  413. // returns TRUE if NPPM_ALLOCATECMDID is supported
  414. // Use to identify if subclassing is necessary
  415. NPPM_ALLOCATECMDID = (NPPMSG + 81),
  416. // BOOL NPPM_ALLOCATECMDID(int numberRequested, int* startNumber)
  417. // sets startNumber to the initial command ID if successful
  418. // Returns: TRUE if successful, FALSE otherwise. startNumber will also be set to 0 if unsuccessful
  419. NPPM_ALLOCATEMARKER = (NPPMSG + 82),
  420. // BOOL NPPM_ALLOCATEMARKER(int numberRequested, int* startNumber)
  421. // sets startNumber to the initial command ID if successful
  422. // Allocates a marker number to a plugin
  423. // Returns: TRUE if successful, FALSE otherwise. startNumber will also be set to 0 if unsuccessful
  424. RUNCOMMAND_USER = (0x400/*WM_USER*/ + 3000),
  425. NPPM_GETFULLCURRENTPATH = (RUNCOMMAND_USER + FULL_CURRENT_PATH),
  426. NPPM_GETCURRENTDIRECTORY = (RUNCOMMAND_USER + CURRENT_DIRECTORY),
  427. NPPM_GETFILENAME = (RUNCOMMAND_USER + FILE_NAME),
  428. NPPM_GETNAMEPART = (RUNCOMMAND_USER + NAME_PART),
  429. NPPM_GETEXTPART = (RUNCOMMAND_USER + EXT_PART),
  430. NPPM_GETCURRENTWORD = (RUNCOMMAND_USER + CURRENT_WORD),
  431. NPPM_GETNPPDIRECTORY = (RUNCOMMAND_USER + NPP_DIRECTORY),
  432. // BOOL NPPM_GETXXXXXXXXXXXXXXXX(size_t strLen, TCHAR *str)
  433. // where str is the allocated TCHAR array,
  434. // strLen is the allocated array size
  435. // The return value is TRUE when get generic_string operation success
  436. // Otherwise (allocated array size is too small) FALSE
  437. NPPM_GETCURRENTLINE = (RUNCOMMAND_USER + CURRENT_LINE),
  438. // INT NPPM_GETCURRENTLINE(0, 0)
  439. // return the caret current position line
  440. NPPM_GETCURRENTCOLUMN = (RUNCOMMAND_USER + CURRENT_COLUMN),
  441. // INT NPPM_GETCURRENTCOLUMN(0, 0)
  442. // return the caret current position column
  443. VAR_NOT_RECOGNIZED = 0,
  444. FULL_CURRENT_PATH = 1,
  445. CURRENT_DIRECTORY = 2,
  446. FILE_NAME = 3,
  447. NAME_PART = 4,
  448. EXT_PART = 5,
  449. CURRENT_WORD = 6,
  450. NPP_DIRECTORY = 7,
  451. CURRENT_LINE = 8,
  452. CURRENT_COLUMN = 9,
  453. // Notification code
  454. NPPN_FIRST = 1000,
  455. NPPN_READY = (NPPN_FIRST + 1), // To notify plugins that all the procedures of launchment of notepad++ are done.
  456. //scnNotification->nmhdr.code = NPPN_READY;
  457. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  458. //scnNotification->nmhdr.idFrom = 0;
  459. NPPN_TBMODIFICATION = (NPPN_FIRST + 2), // To notify plugins that toolbar icons can be registered
  460. //scnNotification->nmhdr.code = NPPN_TB_MODIFICATION;
  461. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  462. //scnNotification->nmhdr.idFrom = 0;
  463. NPPN_FILEBEFORECLOSE = (NPPN_FIRST + 3), // To notify plugins that the current file is about to be closed
  464. //scnNotification->nmhdr.code = NPPN_FILEBEFORECLOSE;
  465. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  466. //scnNotification->nmhdr.idFrom = BufferID;
  467. NPPN_FILEOPENED = (NPPN_FIRST + 4), // To notify plugins that the current file is just opened
  468. //scnNotification->nmhdr.code = NPPN_FILEOPENED;
  469. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  470. //scnNotification->nmhdr.idFrom = BufferID;
  471. NPPN_FILECLOSED = (NPPN_FIRST + 5), // To notify plugins that the current file is just closed
  472. //scnNotification->nmhdr.code = NPPN_FILECLOSED;
  473. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  474. //scnNotification->nmhdr.idFrom = BufferID;
  475. NPPN_FILEBEFOREOPEN = (NPPN_FIRST + 6), // To notify plugins that the current file is about to be opened
  476. //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
  477. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  478. //scnNotification->nmhdr.idFrom = BufferID;
  479. NPPN_FILEBEFORESAVE = (NPPN_FIRST + 7), // To notify plugins that the current file is about to be saved
  480. //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
  481. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  482. //scnNotification->nmhdr.idFrom = BufferID;
  483. NPPN_FILESAVED = (NPPN_FIRST + 8), // To notify plugins that the current file is just saved
  484. //scnNotification->nmhdr.code = NPPN_FILESAVED;
  485. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  486. //scnNotification->nmhdr.idFrom = BufferID;
  487. NPPN_SHUTDOWN = (NPPN_FIRST + 9), // To notify plugins that Notepad++ is about to be shutdowned.
  488. //scnNotification->nmhdr.code = NPPN_SHUTDOWN;
  489. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  490. //scnNotification->nmhdr.idFrom = 0;
  491. NPPN_BUFFERACTIVATED = (NPPN_FIRST + 10), // To notify plugins that a buffer was activated (put to foreground).
  492. //scnNotification->nmhdr.code = NPPN_BUFFERACTIVATED;
  493. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  494. //scnNotification->nmhdr.idFrom = activatedBufferID;
  495. NPPN_LANGCHANGED = (NPPN_FIRST + 11), // To notify plugins that the language in the current doc is just changed.
  496. //scnNotification->nmhdr.code = NPPN_LANGCHANGED;
  497. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  498. //scnNotification->nmhdr.idFrom = currentBufferID;
  499. NPPN_WORDSTYLESUPDATED = (NPPN_FIRST + 12), // To notify plugins that user initiated a WordStyleDlg change.
  500. //scnNotification->nmhdr.code = NPPN_WORDSTYLESUPDATED;
  501. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  502. //scnNotification->nmhdr.idFrom = currentBufferID;
  503. NPPN_SHORTCUTREMAPPED = (NPPN_FIRST + 13), // To notify plugins that plugin command shortcut is remapped.
  504. //scnNotification->nmhdr.code = NPPN_SHORTCUTSREMAPPED;
  505. //scnNotification->nmhdr.hwndFrom = ShortcutKeyStructurePointer;
  506. //scnNotification->nmhdr.idFrom = cmdID;
  507. //where ShortcutKeyStructurePointer is pointer of struct ShortcutKey:
  508. //struct ShortcutKey {
  509. // bool _isCtrl;
  510. // bool _isAlt;
  511. // bool _isShift;
  512. // UCHAR _key;
  513. //};
  514. NPPN_FILEBEFORELOAD = (NPPN_FIRST + 14), // To notify plugins that the current file is about to be loaded
  515. //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
  516. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  517. //scnNotification->nmhdr.idFrom = NULL;
  518. NPPN_FILELOADFAILED = (NPPN_FIRST + 15), // To notify plugins that file open operation failed
  519. //scnNotification->nmhdr.code = NPPN_FILEOPENFAILED;
  520. //scnNotification->nmhdr.hwndFrom = hwndNpp;
  521. //scnNotification->nmhdr.idFrom = BufferID;
  522. NPPN_READONLYCHANGED = (NPPN_FIRST + 16), // To notify plugins that current document change the readonly status,
  523. //scnNotification->nmhdr.code = NPPN_READONLYCHANGED;
  524. //scnNotification->nmhdr.hwndFrom = bufferID;
  525. //scnNotification->nmhdr.idFrom = docStatus;
  526. // where bufferID is BufferID
  527. // docStatus can be combined by DOCSTAUS_READONLY and DOCSTAUS_BUFFERDIRTY
  528. DOCSTAUS_READONLY = 1,
  529. DOCSTAUS_BUFFERDIRTY = 2,
  530. NPPN_DOCORDERCHANGED = (NPPN_FIRST + 16) // To notify plugins that document order is changed
  531. //scnNotification->nmhdr.code = NPPN_DOCORDERCHANGED;
  532. //scnNotification->nmhdr.hwndFrom = newIndex;
  533. //scnNotification->nmhdr.idFrom = BufferID;
  534. }
  535. public enum NppMenuCmd : uint
  536. {
  537. IDM = 40000,
  538. IDM_FILE = (IDM + 1000),
  539. IDM_FILE_NEW = (IDM_FILE + 1),
  540. IDM_FILE_OPEN = (IDM_FILE + 2),
  541. IDM_FILE_CLOSE = (IDM_FILE + 3),
  542. IDM_FILE_CLOSEALL = (IDM_FILE + 4),
  543. IDM_FILE_CLOSEALL_BUT_CURRENT = (IDM_FILE + 5),
  544. IDM_FILE_SAVE = (IDM_FILE + 6),
  545. IDM_FILE_SAVEALL = (IDM_FILE + 7),
  546. IDM_FILE_SAVEAS = (IDM_FILE + 8),
  547. //IDM_FILE_ASIAN_LANG = (IDM_FILE + 9),
  548. IDM_FILE_PRINT = (IDM_FILE + 10),
  549. IDM_FILE_PRINTNOW = 1001,
  550. IDM_FILE_EXIT = (IDM_FILE + 11),
  551. IDM_FILE_LOADSESSION = (IDM_FILE + 12),
  552. IDM_FILE_SAVESESSION = (IDM_FILE + 13),
  553. IDM_FILE_RELOAD = (IDM_FILE + 14),
  554. IDM_FILE_SAVECOPYAS = (IDM_FILE + 15),
  555. IDM_FILE_DELETE = (IDM_FILE + 16),
  556. IDM_FILE_RENAME = (IDM_FILE + 17),
  557. // A mettre à jour si on ajoute nouveau menu item dans le menu "File"
  558. IDM_FILEMENU_LASTONE = IDM_FILE_RENAME,
  559. IDM_EDIT = (IDM + 2000),
  560. IDM_EDIT_CUT = (IDM_EDIT + 1),
  561. IDM_EDIT_COPY = (IDM_EDIT + 2),
  562. IDM_EDIT_UNDO = (IDM_EDIT + 3),
  563. IDM_EDIT_REDO = (IDM_EDIT + 4),
  564. IDM_EDIT_PASTE = (IDM_EDIT + 5),
  565. IDM_EDIT_DELETE = (IDM_EDIT + 6),
  566. IDM_EDIT_SELECTALL = (IDM_EDIT + 7),
  567. IDM_EDIT_INS_TAB = (IDM_EDIT + 8),
  568. IDM_EDIT_RMV_TAB = (IDM_EDIT + 9),
  569. IDM_EDIT_DUP_LINE = (IDM_EDIT + 10),
  570. IDM_EDIT_TRANSPOSE_LINE = (IDM_EDIT + 11),
  571. IDM_EDIT_SPLIT_LINES = (IDM_EDIT + 12),
  572. IDM_EDIT_JOIN_LINES = (IDM_EDIT + 13),
  573. IDM_EDIT_LINE_UP = (IDM_EDIT + 14),
  574. IDM_EDIT_LINE_DOWN = (IDM_EDIT + 15),
  575. IDM_EDIT_UPPERCASE = (IDM_EDIT + 16),
  576. IDM_EDIT_LOWERCASE = (IDM_EDIT + 17),
  577. // Menu macro
  578. IDM_MACRO_STARTRECORDINGMACRO = (IDM_EDIT + 18),
  579. IDM_MACRO_STOPRECORDINGMACRO = (IDM_EDIT + 19),
  580. IDM_MACRO_PLAYBACKRECORDEDMACRO = (IDM_EDIT + 21),
  581. //-----------
  582. IDM_EDIT_BLOCK_COMMENT = (IDM_EDIT + 22),
  583. IDM_EDIT_STREAM_COMMENT = (IDM_EDIT + 23),
  584. IDM_EDIT_TRIMTRAILING = (IDM_EDIT + 24),
  585. IDM_EDIT_TRIMLINEHEAD = (IDM_EDIT + 42),
  586. IDM_EDIT_TRIM_BOTH = (IDM_EDIT + 43),
  587. IdmEditEol2Ws = (IDM_EDIT + 44),
  588. IDM_EDIT_TRIMALL = (IDM_EDIT + 45),
  589. IdmEditTab2Sw = (IDM_EDIT + 46),
  590. IdmEditSw2Tab = (IDM_EDIT + 47),
  591. // Menu macro
  592. IDM_MACRO_SAVECURRENTMACRO = (IDM_EDIT + 25),
  593. //-----------
  594. IDM_EDIT_RTL = (IDM_EDIT + 26),
  595. IDM_EDIT_LTR = (IDM_EDIT + 27),
  596. IDM_EDIT_SETREADONLY = (IDM_EDIT + 28),
  597. IDM_EDIT_FULLPATHTOCLIP = (IDM_EDIT + 29),
  598. IDM_EDIT_FILENAMETOCLIP = (IDM_EDIT + 30),
  599. IDM_EDIT_CURRENTDIRTOCLIP = (IDM_EDIT + 31),
  600. // Menu macro
  601. IDM_MACRO_RUNMULTIMACRODLG = (IDM_EDIT + 32),
  602. //-----------
  603. IDM_EDIT_CLEARREADONLY = (IDM_EDIT + 33),
  604. IDM_EDIT_COLUMNMODE = (IDM_EDIT + 34),
  605. IDM_EDIT_BLOCK_COMMENT_SET = (IDM_EDIT + 35),
  606. IDM_EDIT_BLOCK_UNCOMMENT = (IDM_EDIT + 36),
  607. IDM_EDIT_AUTOCOMPLETE = (50000 + 0),
  608. IDM_EDIT_AUTOCOMPLETE_CURRENTFILE = (50000 + 1),
  609. IDM_EDIT_FUNCCALLTIP = (50000 + 2),
  610. //Belong to MENU FILE
  611. IDM_OPEN_ALL_RECENT_FILE = (IDM_EDIT + 40),
  612. IDM_CLEAN_RECENT_FILE_LIST = (IDM_EDIT + 41),
  613. IDM_SEARCH = (IDM + 3000),
  614. IDM_SEARCH_FIND = (IDM_SEARCH + 1),
  615. IDM_SEARCH_FINDNEXT = (IDM_SEARCH + 2),
  616. IDM_SEARCH_REPLACE = (IDM_SEARCH + 3),
  617. IDM_SEARCH_GOTOLINE = (IDM_SEARCH + 4),
  618. IDM_SEARCH_TOGGLE_BOOKMARK = (IDM_SEARCH + 5),
  619. IDM_SEARCH_NEXT_BOOKMARK = (IDM_SEARCH + 6),
  620. IDM_SEARCH_PREV_BOOKMARK = (IDM_SEARCH + 7),
  621. IDM_SEARCH_CLEAR_BOOKMARKS = (IDM_SEARCH + 8),
  622. IDM_SEARCH_GOTOMATCHINGBRACE = (IDM_SEARCH + 9),
  623. IDM_SEARCH_FINDPREV = (IDM_SEARCH + 10),
  624. IDM_SEARCH_FINDINCREMENT = (IDM_SEARCH + 11),
  625. IDM_SEARCH_FINDINFILES = (IDM_SEARCH + 13),
  626. IDM_SEARCH_VOLATILE_FINDNEXT = (IDM_SEARCH + 14),
  627. IDM_SEARCH_VOLATILE_FINDPREV = (IDM_SEARCH + 15),
  628. IDM_SEARCH_CUTMARKEDLINES = (IDM_SEARCH + 18),
  629. IDM_SEARCH_COPYMARKEDLINES = (IDM_SEARCH + 19),
  630. IDM_SEARCH_PASTEMARKEDLINES = (IDM_SEARCH + 20),
  631. IDM_SEARCH_DELETEMARKEDLINES = (IDM_SEARCH + 21),
  632. IDM_SEARCH_MARKALLEXT1 = (IDM_SEARCH + 22),
  633. IDM_SEARCH_UNMARKALLEXT1 = (IDM_SEARCH + 23),
  634. IDM_SEARCH_MARKALLEXT2 = (IDM_SEARCH + 24),
  635. IDM_SEARCH_UNMARKALLEXT2 = (IDM_SEARCH + 25),
  636. IDM_SEARCH_MARKALLEXT3 = (IDM_SEARCH + 26),
  637. IDM_SEARCH_UNMARKALLEXT3 = (IDM_SEARCH + 27),
  638. IDM_SEARCH_MARKALLEXT4 = (IDM_SEARCH + 28),
  639. IDM_SEARCH_UNMARKALLEXT4 = (IDM_SEARCH + 29),
  640. IDM_SEARCH_MARKALLEXT5 = (IDM_SEARCH + 30),
  641. IDM_SEARCH_UNMARKALLEXT5 = (IDM_SEARCH + 31),
  642. IDM_SEARCH_CLEARALLMARKS = (IDM_SEARCH + 32),
  643. IDM_SEARCH_GOPREVMARKER1 = (IDM_SEARCH + 33),
  644. IDM_SEARCH_GOPREVMARKER2 = (IDM_SEARCH + 34),
  645. IDM_SEARCH_GOPREVMARKER3 = (IDM_SEARCH + 35),
  646. IDM_SEARCH_GOPREVMARKER4 = (IDM_SEARCH + 36),
  647. IDM_SEARCH_GOPREVMARKER5 = (IDM_SEARCH + 37),
  648. IDM_SEARCH_GOPREVMARKER_DEF = (IDM_SEARCH + 38),
  649. IDM_SEARCH_GONEXTMARKER1 = (IDM_SEARCH + 39),
  650. IDM_SEARCH_GONEXTMARKER2 = (IDM_SEARCH + 40),
  651. IDM_SEARCH_GONEXTMARKER3 = (IDM_SEARCH + 41),
  652. IDM_SEARCH_GONEXTMARKER4 = (IDM_SEARCH + 42),
  653. IDM_SEARCH_GONEXTMARKER5 = (IDM_SEARCH + 43),
  654. IDM_SEARCH_GONEXTMARKER_DEF = (IDM_SEARCH + 44),
  655. IDM_FOCUS_ON_FOUND_RESULTS = (IDM_SEARCH + 45),
  656. IDM_SEARCH_GOTONEXTFOUND = (IDM_SEARCH + 46),
  657. IDM_SEARCH_GOTOPREVFOUND = (IDM_SEARCH + 47),
  658. IDM_SEARCH_SETANDFINDNEXT = (IDM_SEARCH + 48),
  659. IDM_SEARCH_SETANDFINDPREV = (IDM_SEARCH + 49),
  660. IDM_SEARCH_INVERSEMARKS = (IDM_SEARCH + 50),
  661. IDM_VIEW = (IDM + 4000),
  662. //IDM_VIEW_TOOLBAR_HIDE = (IDM_VIEW + 1),
  663. IDM_VIEW_TOOLBAR_REDUCE = (IDM_VIEW + 2),
  664. IDM_VIEW_TOOLBAR_ENLARGE = (IDM_VIEW + 3),
  665. IDM_VIEW_TOOLBAR_STANDARD = (IDM_VIEW + 4),
  666. IDM_VIEW_REDUCETABBAR = (IDM_VIEW + 5),
  667. IDM_VIEW_LOCKTABBAR = (IDM_VIEW + 6),
  668. IDM_VIEW_DRAWTABBAR_TOPBAR = (IDM_VIEW + 7),
  669. IDM_VIEW_DRAWTABBAR_INACIVETAB = (IDM_VIEW + 8),
  670. IDM_VIEW_POSTIT = (IDM_VIEW + 9),
  671. IDM_VIEW_TOGGLE_FOLDALL = (IDM_VIEW + 10),
  672. IDM_VIEW_USER_DLG = (IDM_VIEW + 11),
  673. IDM_VIEW_LINENUMBER = (IDM_VIEW + 12),
  674. IDM_VIEW_SYMBOLMARGIN = (IDM_VIEW + 13),
  675. IDM_VIEW_FOLDERMAGIN = (IDM_VIEW + 14),
  676. IDM_VIEW_FOLDERMAGIN_SIMPLE = (IDM_VIEW + 15),
  677. IDM_VIEW_FOLDERMAGIN_ARROW = (IDM_VIEW + 16),
  678. IDM_VIEW_FOLDERMAGIN_CIRCLE = (IDM_VIEW + 17),
  679. IDM_VIEW_FOLDERMAGIN_BOX = (IDM_VIEW + 18),
  680. IDM_VIEW_ALL_CHARACTERS = (IDM_VIEW + 19),
  681. IDM_VIEW_INDENT_GUIDE = (IDM_VIEW + 20),
  682. IDM_VIEW_CURLINE_HILITING = (IDM_VIEW + 21),
  683. IDM_VIEW_WRAP = (IDM_VIEW + 22),
  684. IDM_VIEW_ZOOMIN = (IDM_VIEW + 23),
  685. IDM_VIEW_ZOOMOUT = (IDM_VIEW + 24),
  686. IDM_VIEW_TAB_SPACE = (IDM_VIEW + 25),
  687. IDM_VIEW_EOL = (IDM_VIEW + 26),
  688. IDM_VIEW_EDGELINE = (IDM_VIEW + 27),
  689. IDM_VIEW_EDGEBACKGROUND = (IDM_VIEW + 28),
  690. IDM_VIEW_TOGGLE_UNFOLDALL = (IDM_VIEW + 29),
  691. IDM_VIEW_FOLD_CURRENT = (IDM_VIEW + 30),
  692. IDM_VIEW_UNFOLD_CURRENT = (IDM_VIEW + 31),
  693. IDM_VIEW_FULLSCREENTOGGLE = (IDM_VIEW + 32),
  694. IDM_VIEW_ZOOMRESTORE = (IDM_VIEW + 33),
  695. IDM_VIEW_ALWAYSONTOP = (IDM_VIEW + 34),
  696. IDM_VIEW_SYNSCROLLV = (IDM_VIEW + 35),
  697. IDM_VIEW_SYNSCROLLH = (IDM_VIEW + 36),
  698. IDM_VIEW_EDGENONE = (IDM_VIEW + 37),
  699. IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN = (IDM_VIEW + 38),
  700. IdmViewDrawtabbarDbclk2Close = (IDM_VIEW + 39),
  701. IDM_VIEW_REFRESHTABAR = (IDM_VIEW + 40),
  702. IDM_VIEW_WRAP_SYMBOL = (IDM_VIEW + 41),
  703. IDM_VIEW_HIDELINES = (IDM_VIEW + 42),
  704. IDM_VIEW_DRAWTABBAR_VERTICAL = (IDM_VIEW + 43),
  705. IDM_VIEW_DRAWTABBAR_MULTILINE = (IDM_VIEW + 44),
  706. IDM_VIEW_DOCCHANGEMARGIN = (IDM_VIEW + 45),
  707. IDM_VIEW_LWDEF = (IDM_VIEW + 46),
  708. IDM_VIEW_LWALIGN = (IDM_VIEW + 47),
  709. IDM_VIEW_LWINDENT = (IDM_VIEW + 48),
  710. IDM_VIEW_SUMMARY = (IDM_VIEW + 49),
  711. IDM_VIEW_FOLD = (IDM_VIEW + 50),
  712. IDM_VIEW_FOLD_1 = (IDM_VIEW_FOLD + 1),
  713. IDM_VIEW_FOLD_2 = (IDM_VIEW_FOLD + 2),
  714. IDM_VIEW_FOLD_3 = (IDM_VIEW_FOLD + 3),
  715. IDM_VIEW_FOLD_4 = (IDM_VIEW_FOLD + 4),
  716. IDM_VIEW_FOLD_5 = (IDM_VIEW_FOLD + 5),
  717. IDM_VIEW_FOLD_6 = (IDM_VIEW_FOLD + 6),
  718. IDM_VIEW_FOLD_7 = (IDM_VIEW_FOLD + 7),
  719. IDM_VIEW_FOLD_8 = (IDM_VIEW_FOLD + 8),
  720. IDM_VIEW_UNFOLD = (IDM_VIEW + 60),
  721. IDM_VIEW_UNFOLD_1 = (IDM_VIEW_UNFOLD + 1),
  722. IDM_VIEW_UNFOLD_2 = (IDM_VIEW_UNFOLD + 2),
  723. IDM_VIEW_UNFOLD_3 = (IDM_VIEW_UNFOLD + 3),
  724. IDM_VIEW_UNFOLD_4 = (IDM_VIEW_UNFOLD + 4),
  725. IDM_VIEW_UNFOLD_5 = (IDM_VIEW_UNFOLD + 5),
  726. IDM_VIEW_UNFOLD_6 = (IDM_VIEW_UNFOLD + 6),
  727. IDM_VIEW_UNFOLD_7 = (IDM_VIEW_UNFOLD + 7),
  728. IDM_VIEW_UNFOLD_8 = (IDM_VIEW_UNFOLD + 8),
  729. IDM_VIEW_GOTO_ANOTHER_VIEW = 10001,
  730. IDM_VIEW_CLONE_TO_ANOTHER_VIEW = 10002,
  731. IDM_VIEW_GOTO_NEW_INSTANCE = 10003,
  732. IDM_VIEW_LOAD_IN_NEW_INSTANCE = 10004,
  733. IDM_VIEW_SWITCHTO_OTHER_VIEW = (IDM_VIEW + 72),
  734. IDM_FORMAT = (IDM + 5000),
  735. IDM_FORMAT_TODOS = (IDM_FORMAT + 1),
  736. IDM_FORMAT_TOUNIX = (IDM_FORMAT + 2),
  737. IDM_FORMAT_TOMAC = (IDM_FORMAT + 3),
  738. IDM_FORMAT_ANSI = (IDM_FORMAT + 4),
  739. IDM_FORMAT_UTF_8 = (IDM_FORMAT + 5),
  740. IdmFormatUcs2Be = (IDM_FORMAT + 6),
  741. IdmFormatUcs2Le = (IDM_FORMAT + 7),
  742. IDM_FORMAT_AS_UTF_8 = (IDM_FORMAT + 8),
  743. IDM_FORMAT_CONV2_ANSI = (IDM_FORMAT + 9),
  744. IDM_FORMAT_CONV2_AS_UTF_8 = (IDM_FORMAT + 10),
  745. IDM_FORMAT_CONV2_UTF_8 = (IDM_FORMAT + 11),
  746. IdmFormatConv2Ucs2Be = (IDM_FORMAT + 12),
  747. IdmFormatConv2Ucs2Le = (IDM_FORMAT + 13),
  748. IDM_FORMAT_ENCODE = (IDM_FORMAT + 20),
  749. IDM_FORMAT_WIN_1250 = (IDM_FORMAT_ENCODE + 0),
  750. IDM_FORMAT_WIN_1251 = (IDM_FORMAT_ENCODE + 1),
  751. IDM_FORMAT_WIN_1252 = (IDM_FORMAT_ENCODE + 2),
  752. IDM_FORMAT_WIN_1253 = (IDM_FORMAT_ENCODE + 3),
  753. IDM_FORMAT_WIN_1254 = (IDM_FORMAT_ENCODE + 4),
  754. IDM_FORMAT_WIN_1255 = (IDM_FORMAT_ENCODE + 5),
  755. IDM_FORMAT_WIN_1256 = (IDM_FORMAT_ENCODE + 6),
  756. IDM_FORMAT_WIN_1257 = (IDM_FORMAT_ENCODE + 7),
  757. IDM_FORMAT_WIN_1258 = (IDM_FORMAT_ENCODE + 8),
  758. IDM_FORMAT_ISO_8859_1 = (IDM_FORMAT_ENCODE + 9),
  759. IDM_FORMAT_ISO_8859_2 = (IDM_FORMAT_ENCODE + 10),
  760. IDM_FORMAT_ISO_8859_3 = (IDM_FORMAT_ENCODE + 11),
  761. IDM_FORMAT_ISO_8859_4 = (IDM_FORMAT_ENCODE + 12),
  762. IDM_FORMAT_ISO_8859_5 = (IDM_FORMAT_ENCODE + 13),
  763. IDM_FORMAT_ISO_8859_6 = (IDM_FORMAT_ENCODE + 14),
  764. IDM_FORMAT_ISO_8859_7 = (IDM_FORMAT_ENCODE + 15),
  765. IDM_FORMAT_ISO_8859_8 = (IDM_FORMAT_ENCODE + 16),
  766. IDM_FORMAT_ISO_8859_9 = (IDM_FORMAT_ENCODE + 17),
  767. IDM_FORMAT_ISO_8859_10 = (IDM_FORMAT_ENCODE + 18),
  768. IDM_FORMAT_ISO_8859_11 = (IDM_FORMAT_ENCODE + 19),
  769. IDM_FORMAT_ISO_8859_13 = (IDM_FORMAT_ENCODE + 20),
  770. IDM_FORMAT_ISO_8859_14 = (IDM_FORMAT_ENCODE + 21),
  771. IDM_FORMAT_ISO_8859_15 = (IDM_FORMAT_ENCODE + 22),
  772. IDM_FORMAT_ISO_8859_16 = (IDM_FORMAT_ENCODE + 23),
  773. IDM_FORMAT_DOS_437 = (IDM_FORMAT_ENCODE + 24),
  774. IDM_FORMAT_DOS_720 = (IDM_FORMAT_ENCODE + 25),
  775. IDM_FORMAT_DOS_737 = (IDM_FORMAT_ENCODE + 26),
  776. IDM_FORMAT_DOS_775 = (IDM_FORMAT_ENCODE + 27),
  777. IDM_FORMAT_DOS_850 = (IDM_FORMAT_ENCODE + 28),
  778. IDM_FORMAT_DOS_852 = (IDM_FORMAT_ENCODE + 29),
  779. IDM_FORMAT_DOS_855 = (IDM_FORMAT_ENCODE + 30),
  780. IDM_FORMAT_DOS_857 = (IDM_FORMAT_ENCODE + 31),
  781. IDM_FORMAT_DOS_858 = (IDM_FORMAT_ENCODE + 32),
  782. IDM_FORMAT_DOS_860 = (IDM_FORMAT_ENCODE + 33),
  783. IDM_FORMAT_DOS_861 = (IDM_FORMAT_ENCODE + 34),
  784. IDM_FORMAT_DOS_862 = (IDM_FORMAT_ENCODE + 35),
  785. IDM_FORMAT_DOS_863 = (IDM_FORMAT_ENCODE + 36),
  786. IDM_FORMAT_DOS_865 = (IDM_FORMAT_ENCODE + 37),
  787. IDM_FORMAT_DOS_866 = (IDM_FORMAT_ENCODE + 38),
  788. IDM_FORMAT_DOS_869 = (IDM_FORMAT_ENCODE + 39),
  789. IDM_FORMAT_BIG5 = (IDM_FORMAT_ENCODE + 40),
  790. IDM_FORMAT_GB2312 = (IDM_FORMAT_ENCODE + 41),
  791. IDM_FORMAT_SHIFT_JIS = (IDM_FORMAT_ENCODE + 42),
  792. IDM_FORMAT_KOREAN_WIN = (IDM_FORMAT_ENCODE + 43),
  793. IDM_FORMAT_EUC_KR = (IDM_FORMAT_ENCODE + 44),
  794. IDM_FORMAT_TIS_620 = (IDM_FORMAT_ENCODE + 45),
  795. IDM_FORMAT_MAC_CYRILLIC = (IDM_FORMAT_ENCODE + 46),
  796. IdmFormatKoi8UCyrillic = (IDM_FORMAT_ENCODE + 47),
  797. IdmFormatKoi8RCyrillic = (IDM_FORMAT_ENCODE + 48),
  798. IDM_FORMAT_ENCODE_END = IdmFormatKoi8RCyrillic,
  799. //#define IDM_FORMAT_CONVERT 200
  800. IDM_LANG = (IDM + 6000),
  801. IDM_LANGSTYLE_CONFIG_DLG = (IDM_LANG + 1),
  802. IDM_LANG_C = (IDM_LANG + 2),
  803. IDM_LANG_CPP = (IDM_LANG + 3),
  804. IDM_LANG_JAVA = (IDM_LANG + 4),
  805. IDM_LANG_HTML = (IDM_LANG + 5),
  806. IDM_LANG_XML = (IDM_LANG + 6),
  807. IDM_LANG_JS = (IDM_LANG + 7),
  808. IDM_LANG_PHP = (IDM_LANG + 8),
  809. IDM_LANG_ASP = (IDM_LANG + 9),
  810. IDM_LANG_CSS = (IDM_LANG + 10),
  811. IDM_LANG_PASCAL = (IDM_LANG + 11),
  812. IDM_LANG_PYTHON = (IDM_LANG + 12),
  813. IDM_LANG_PERL = (IDM_LANG + 13),
  814. IDM_LANG_OBJC = (IDM_LANG + 14),
  815. IDM_LANG_ASCII = (IDM_LANG + 15),
  816. IDM_LANG_TEXT = (IDM_LANG + 16),
  817. IDM_LANG_RC = (IDM_LANG + 17),
  818. IDM_LANG_MAKEFILE = (IDM_LANG + 18),
  819. IDM_LANG_INI = (IDM_LANG + 19),
  820. IDM_LANG_SQL = (IDM_LANG + 20),
  821. IDM_LANG_VB = (IDM_LANG + 21),
  822. IDM_LANG_BATCH = (IDM_LANG + 22),
  823. IDM_LANG_CS = (IDM_LANG + 23),
  824. IDM_LANG_LUA = (IDM_LANG + 24),
  825. IDM_LANG_TEX = (IDM_LANG + 25),
  826. IDM_LANG_FORTRAN = (IDM_LANG + 26),
  827. IDM_LANG_BASH = (IDM_LANG + 27),
  828. IDM_LANG_FLASH = (IDM_LANG + 28),
  829. IDM_LANG_NSIS = (IDM_LANG + 29),
  830. IDM_LANG_TCL = (IDM_LANG + 30),
  831. IDM_LANG_LISP = (IDM_LANG + 31),
  832. IDM_LANG_SCHEME = (IDM_LANG + 32),
  833. IDM_LANG_ASM = (IDM_LANG + 33),
  834. IDM_LANG_DIFF = (IDM_LANG + 34),
  835. IDM_LANG_PROPS = (IDM_LANG + 35),
  836. IDM_LANG_PS = (IDM_LANG + 36),
  837. IDM_LANG_RUBY = (IDM_LANG + 37),
  838. IDM_LANG_SMALLTALK = (IDM_LANG + 38),
  839. IDM_LANG_VHDL = (IDM_LANG + 39),
  840. IDM_LANG_CAML = (IDM_LANG + 40),
  841. IDM_LANG_KIX = (IDM_LANG + 41),
  842. IDM_LANG_ADA = (IDM_LANG + 42),
  843. IDM_LANG_VERILOG = (IDM_LANG + 43),
  844. IDM_LANG_AU3 = (IDM_LANG + 44),
  845. IDM_LANG_MATLAB = (IDM_LANG + 45),
  846. IDM_LANG_HASKELL = (IDM_LANG + 46),
  847. IDM_LANG_INNO = (IDM_LANG + 47),
  848. IDM_LANG_CMAKE = (IDM_LANG + 48),
  849. IDM_LANG_YAML = (IDM_LANG + 49),
  850. IDM_LANG_COBOL = (IDM_LANG + 50),
  851. IDM_LANG_D = (IDM_LANG + 51),
  852. IdmLangGui4Cli = (IDM_LANG + 52),
  853. IDM_LANG_POWERSHELL = (IDM_LANG + 53),
  854. IDM_LANG_R = (IDM_LANG + 54),
  855. IDM_LANG_JSP = (IDM_LANG + 55),
  856. IDM_LANG_EXTERNAL = (IDM_LANG + 65),
  857. IDM_LANG_EXTERNAL_LIMIT = (IDM_LANG + 79),
  858. IDM_LANG_USER = (IDM_LANG + 80), //46080
  859. IDM_LANG_USER_LIMIT = (IDM_LANG + 110), //46110
  860. IDM_ABOUT = (IDM + 7000),
  861. IDM_HOMESWEETHOME = (IDM_ABOUT + 1),
  862. IDM_PROJECTPAGE = (IDM_ABOUT + 2),
  863. IDM_ONLINEHELP = (IDM_ABOUT + 3),
  864. IDM_FORUM = (IDM_ABOUT + 4),
  865. IDM_PLUGINSHOME = (IDM_ABOUT + 5),
  866. IDM_UPDATE_NPP = (IDM_ABOUT + 6),
  867. IDM_WIKIFAQ = (IDM_ABOUT + 7),
  868. IDM_HELP = (IDM_ABOUT + 8),
  869. IDM_SETTING = (IDM + 8000),
  870. IDM_SETTING_TAB_SIZE = (IDM_SETTING + 1),
  871. IDM_SETTING_TAB_REPLCESPACE = (IDM_SETTING + 2),
  872. IDM_SETTING_HISTORY_SIZE = (IDM_SETTING + 3),
  873. IDM_SETTING_EDGE_SIZE = (IDM_SETTING + 4),
  874. IDM_SETTING_IMPORTPLUGIN = (IDM_SETTING + 5),
  875. IDM_SETTING_IMPORTSTYLETHEMS = (IDM_SETTING + 6),
  876. IDM_SETTING_TRAYICON = (IDM_SETTING + 8),
  877. IDM_SETTING_SHORTCUT_MAPPER = (IDM_SETTING + 9),
  878. IDM_SETTING_REMEMBER_LAST_SESSION = (IDM_SETTING + 10),
  879. IDM_SETTING_PREFERECE = (IDM_SETTING + 11),
  880. IDM_SETTING_AUTOCNBCHAR = (IDM_SETTING + 15),
  881. IDM_SETTING_SHORTCUT_MAPPER_MACRO = (IDM_SETTING + 16),
  882. IDM_SETTING_SHORTCUT_MAPPER_RUN = (IDM_SETTING + 17),
  883. IDM_SETTING_EDITCONTEXTMENU = (IDM_SETTING + 18),
  884. IDM_EXECUTE = (IDM + 9000),
  885. IDM_SYSTRAYPOPUP = (IDM + 3100),
  886. IDM_SYSTRAYPOPUP_ACTIVATE = (IDM_SYSTRAYPOPUP + 1),
  887. IDM_SYSTRAYPOPUP_NEWDOC = (IDM_SYSTRAYPOPUP + 2),
  888. IDM_SYSTRAYPOPUP_NEW_AND_PASTE = (IDM_SYSTRAYPOPUP + 3),
  889. IDM_SYSTRAYPOPUP_OPENFILE = (IDM_SYSTRAYPOPUP + 4),
  890. IDM_SYSTRAYPOPUP_CLOSE = (IDM_SYSTRAYPOPUP + 5)
  891. }
  892. [Flags]
  893. public enum DockMgrMsg : uint
  894. {
  895. IDB_CLOSE_DOWN = 137,
  896. IDB_CLOSE_UP = 138,
  897. IDD_CONTAINER_DLG = 139,
  898. IDC_TAB_CONT = 1027,
  899. IDC_CLIENT_TAB = 1028,
  900. IDC_BTN_CAPTION = 1050,
  901. DMM_MSG = 0x5000,
  902. DMM_CLOSE = (DMM_MSG + 1),
  903. DMM_DOCK = (DMM_MSG + 2),
  904. DMM_FLOAT = (DMM_MSG + 3),
  905. DMM_DOCKALL = (DMM_MSG + 4),
  906. DMM_FLOATALL = (DMM_MSG + 5),
  907. DMM_MOVE = (DMM_MSG + 6),
  908. DMM_UPDATEDISPINFO = (DMM_MSG + 7),
  909. DMM_GETIMAGELIST = (DMM_MSG + 8),
  910. DMM_GETICONPOS = (DMM_MSG + 9),
  911. DMM_DROPDATA = (DMM_MSG + 10),
  912. DMM_MOVE_SPLITTER = (DMM_MSG + 11),
  913. DMM_CANCEL_MOVE = (DMM_MSG + 12),
  914. DMM_LBUTTONUP = (DMM_MSG + 13),
  915. DMN_FIRST = 1050,
  916. DMN_CLOSE = (DMN_FIRST + 1),
  917. //nmhdr.code = DWORD(DMN_CLOSE, 0));
  918. //nmhdr.hwndFrom = hwndNpp;
  919. //nmhdr.idFrom = ctrlIdNpp;
  920. DMN_DOCK = (DMN_FIRST + 2),
  921. DMN_FLOAT = (DMN_FIRST + 3)
  922. //nmhdr.code = DWORD(DMN_XXX, int newContainer);
  923. //nmhdr.hwndFrom = hwndNpp;
  924. //nmhdr.idFrom = ctrlIdNpp;
  925. }
  926. [StructLayout(LayoutKind.Sequential)]
  927. public struct ToolbarIcons
  928. {
  929. public IntPtr hToolbarBmp;
  930. public IntPtr hToolbarIcon;
  931. }
  932. #endregion
  933. #region " Scintilla "
  934. [StructLayout(LayoutKind.Sequential)]
  935. public struct SciNotifyHeader
  936. {
  937. /* Compatible with Windows NMHDR.
  938. * hwndFrom is really an environment specific window handle or pointer
  939. * but most clients of Scintilla.h do not have this type visible. */
  940. public IntPtr hwndFrom;
  941. public uint idFrom;
  942. public uint code;
  943. }
  944. [StructLayout(LayoutKind.Sequential)]
  945. public struct ScNotification
  946. {
  947. public SciNotifyHeader nmhdr;
  948. public int position; /* SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND */
  949. public int ch; /* SCN_CHARADDED, SCN_KEY */
  950. public int modifiers; /* SCN_KEY */
  951. public int modificationType; /* SCN_MODIFIED */
  952. public IntPtr text; /* SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION */
  953. public int length; /* SCN_MODIFIED */
  954. public int linesAdded; /* SCN_MODIFIED */
  955. public int message; /* SCN_MACRORECORD */
  956. public uint wParam; /* SCN_MACRORECORD */
  957. public int lParam; /* SCN_MACRORECORD */
  958. public int line; /* SCN_MODIFIED */
  959. public int foldLevelNow; /* SCN_MODIFIED */
  960. public int foldLevelPrev; /* SCN_MODIFIED */
  961. public int margin; /* SCN_MARGINCLICK */
  962. public int listType; /* SCN_USERLISTSELECTION */
  963. public int x; /* SCN_DWELLSTART, SCN_DWELLEND */
  964. public int y; /* SCN_DWELLSTART, SCN_DWELLEND */
  965. public int token; /* SCN_MODIFIED with SC_MOD_CONTAINER */
  966. public int annotationLinesAdded;/* SC_MOD_CHANGEANNOTATION */
  967. }
  968. [Flags]
  969. public enum SciMsg : uint
  970. {
  971. INVALID_POSITION = 0xFFFFFFFF,
  972. SCI_START = 2000,
  973. SCI_OPTIONAL_START = 3000,
  974. SCI_LEXER_START = 4000,
  975. SCI_ADDTEXT = 2001,
  976. SCI_ADDSTYLEDTEXT = 2002,
  977. SCI_INSERTTEXT = 2003,
  978. SCI_CLEARALL = 2004,
  979. SCI_CLEARDOCUMENTSTYLE = 2005,
  980. SCI_GETLENGTH = 2006,
  981. SCI_GETCHARAT = 2007,
  982. SCI_GETCURRENTPOS = 2008,
  983. SCI_GETANCHOR = 2009,
  984. SCI_GETSTYLEAT = 2010,
  985. SCI_REDO = 2011,
  986. SCI_SETUNDOCOLLECTION = 2012,
  987. SCI_SELECTALL = 2013,
  988. SCI_SETSAVEPOINT = 2014,
  989. SCI_GETSTYLEDTEXT = 2015,
  990. SCI_CANREDO = 2016,
  991. SCI_MARKERLINEFROMHANDLE = 2017,
  992. SCI_MARKERDELETEHANDLE = 2018,
  993. SCI_GETUNDOCOLLECTION = 2019,
  994. SCWS_INVISIBLE = 0,
  995. SCWS_VISIBLEALWAYS = 1,
  996. SCWS_VISIBLEAFTERINDENT = 2,
  997. SCI_GETVIEWWS = 2020,
  998. SCI_SETVIEWWS = 2021,
  999. SCI_POSITIONFROMPOINT = 2022,
  1000. SCI_POSITIONFROMPOINTCLOSE = 2023,
  1001. SCI_GOTOLINE = 2024,
  1002. SCI_GOTOPOS = 2025,
  1003. SCI_SETANCHOR = 2026,
  1004. SCI_GETCURLINE = 2027,
  1005. SCI_GETENDSTYLED = 2028,
  1006. SC_EOL_CRLF = 0,
  1007. SC_EOL_CR = 1,
  1008. SC_EOL_LF = 2,
  1009. SCI_CONVERTEOLS = 2029,
  1010. SCI_GETEOLMODE = 2030,
  1011. SCI_SETEOLMODE = 2031,
  1012. SCI_STARTSTYLING = 2032,
  1013. SCI_SETSTYLING = 2033,
  1014. SCI_GETBUFFEREDDRAW = 2034,
  1015. SCI_SETBUFFEREDDRAW = 2035,
  1016. SCI_SETTABWIDTH = 2036,
  1017. SCI_GETTABWIDTH = 2121,
  1018. SC_CP_UTF8 = 65001,
  1019. SC_CP_DBCS = 1,
  1020. SCI_SETCODEPAGE = 2037,
  1021. SCI_SETUSEPALETTE = 2039,
  1022. MARKER_MAX = 31,
  1023. SC_MARK_CIRCLE = 0,
  1024. SC_MARK_ROUNDRECT = 1,
  1025. SC_MARK_ARROW = 2,
  1026. SC_MARK_SMALLRECT = 3,
  1027. SC_MARK_SHORTARROW = 4,
  1028. SC_MARK_EMPTY = 5,
  1029. SC_MARK_ARROWDOWN = 6,
  1030. SC_MARK_MINUS = 7,
  1031. SC_MARK_PLUS = 8,
  1032. SC_MARK_VLINE = 9,
  1033. SC_MARK_LCORNER = 10,
  1034. SC_MARK_TCORNER = 11,
  1035. SC_MARK_BOXPLUS = 12,
  1036. SC_MARK_BOXPLUSCONNECTED = 13,
  1037. SC_MARK_BOXMINUS = 14,
  1038. SC_MARK_BOXMINUSCONNECTED = 15,
  1039. SC_MARK_LCORNERCURVE = 16,
  1040. SC_MARK_TCORNERCURVE = 17,
  1041. SC_MARK_CIRCLEPLUS = 18,
  1042. SC_MARK_CIRCLEPLUSCONNECTED = 19,
  1043. SC_MARK_CIRCLEMINUS = 20,
  1044. SC_MARK_CIRCLEMINUSCONNECTED = 21,
  1045. SC_MARK_BACKGROUND = 22,
  1046. SC_MARK_DOTDOTDOT = 23,
  1047. SC_MARK_ARROWS = 24,
  1048. SC_MARK_PIXMAP = 25,
  1049. SC_MARK_FULLRECT = 26,
  1050. SC_MARK_LEFTRECT = 27,
  1051. SC_MARK_AVAILABLE = 28,
  1052. SC_MARK_UNDERLINE = 29,
  1053. SC_MARK_CHARACTER = 10000,
  1054. SC_MARKNUM_FOLDEREND = 25,
  1055. SC_MARKNUM_FOLDEROPENMID = 26,
  1056. SC_MARKNUM_FOLDERMIDTAIL = 27,
  1057. SC_MARKNUM_FOLDERTAIL = 28,
  1058. SC_MARKNUM_FOLDERSUB = 29,
  1059. SC_MARKNUM_FOLDER = 30,
  1060. SC_MARKNUM_FOLDEROPEN = 31,
  1061. SC_MASK_FOLDERS = 0xFE000000,
  1062. SCI_MARKERDEFINE = 2040,
  1063. SCI_MARKERSETFORE = 2041,
  1064. SCI_MARKERSETBACK = 2042,
  1065. SCI_MARKERADD = 2043,
  1066. SCI_MARKERDELETE = 2044,
  1067. SCI_MARKERDELETEALL = 2045,
  1068. SCI_MARKERGET = 2046,
  1069. SCI_MARKERNEXT = 2047,
  1070. SCI_MARKERPREVIOUS = 2048,
  1071. SCI_MARKERDEFINEPIXMAP = 2049,
  1072. SCI_MARKERADDSET = 2466,
  1073. SCI_MARKERSETALPHA = 2476,
  1074. SC_MARGIN_SYMBOL = 0,
  1075. SC_MARGIN_NUMBER = 1,
  1076. SC_MARGIN_BACK = 2,
  1077. SC_MARGIN_FORE = 3,
  1078. SC_MARGIN_TEXT = 4,
  1079. SC_MARGIN_RTEXT = 5,
  1080. SCI_SETMARGINTYPEN = 2240,
  1081. SCI_GETMARGINTYPEN = 2241,
  1082. SCI_SETMARGINWIDTHN = 2242,
  1083. SCI_GETMARGINWIDTHN = 2243,
  1084. SCI_SETMARGINMASKN = 2244,
  1085. SCI_GETMARGINMASKN = 2245,
  1086. SCI_SETMARGINSENSITIVEN = 2246,
  1087. SCI_GETMARGINSENSITIVEN = 2247,
  1088. STYLE_DEFAULT = 32,
  1089. STYLE_LINENUMBER = 33,
  1090. STYLE_BRACELIGHT = 34,
  1091. STYLE_BRACEBAD = 35,
  1092. STYLE_CONTROLCHAR = 36,
  1093. STYLE_INDENTGUIDE = 37,
  1094. STYLE_CALLTIP = 38,
  1095. STYLE_LASTPREDEFINED = 39,
  1096. STYLE_MAX = 255,
  1097. SC_CHARSET_ANSI = 0,
  1098. SC_CHARSET_DEFAULT = 1,
  1099. SC_CHARSET_BALTIC = 186,
  1100. SC_CHARSET_CHINESEBIG5 = 136,
  1101. SC_CHARSET_EASTEUROPE = 238,
  1102. SC_CHARSET_GB2312 = 134,
  1103. SC_CHARSET_GREEK = 161,
  1104. SC_CHARSET_HANGUL = 129,
  1105. SC_CHARSET_MAC = 77,
  1106. SC_CHARSET_OEM = 255,
  1107. SC_CHARSET_RUSSIAN = 204,
  1108. SC_CHARSET_CYRILLIC = 1251,
  1109. SC_CHARSET_SHIFTJIS = 128,
  1110. SC_CHARSET_SYMBOL = 2,
  1111. SC_CHARSET_TURKISH = 162,
  1112. SC_CHARSET_JOHAB = 130,
  1113. SC_CHARSET_HEBREW = 177,
  1114. SC_CHARSET_ARABIC = 178,
  1115. SC_CHARSET_VIETNAMESE = 163,
  1116. SC_CHARSET_THAI = 222,
  1117. SC_CHARSET_8859_15 = 1000,
  1118. SCI_STYLECLEARALL = 2050,
  1119. SCI_STYLESETFORE = 2051,
  1120. SCI_STYLESETBACK = 2052,
  1121. SCI_STYLESETBOLD = 2053,
  1122. SCI_STYLESETITALIC = 2054,
  1123. SCI_STYLESETSIZE = 2055,
  1124. SCI_STYLESETFONT = 2056,
  1125. SCI_STYLESETEOLFILLED = 2057,
  1126. SCI_STYLERESETDEFAULT = 2058,
  1127. SCI_STYLESETUNDERLINE = 2059,
  1128. SC_CASE_MIXED = 0,
  1129. SC_CASE_UPPER = 1,
  1130. SC_CASE_LOWER = 2,
  1131. SCI_STYLEGETFORE = 2481,
  1132. SCI_STYLEGETBACK = 2482,
  1133. SCI_STYLEGETBOLD = 2483,
  1134. SCI_STYLEGETITALIC = 2484,
  1135. SCI_STYLEGETSIZE = 2485,
  1136. SCI_STYLEGETFONT = 2486,
  1137. SCI_STYLEGETEOLFILLED = 2487,
  1138. SCI_STYLEGETUNDERLINE = 2488,
  1139. SCI_STYLEGETCASE = 2489,
  1140. SCI_STYLEGETCHARACTERSET = 2490,
  1141. SCI_STYLEGETVISIBLE = 2491,
  1142. SCI_STYLEGETCHANGEABLE = 2492,
  1143. SCI_STYLEGETHOTSPOT = 2493,
  1144. SCI_STYLESETCASE = 2060,
  1145. SCI_STYLESETCHARACTERSET = 2066,
  1146. SCI_STYLESETHOTSPOT = 2409,
  1147. SCI_SETSELFORE = 2067,
  1148. SCI_SETSELBACK = 2068,
  1149. SCI_GETSELALPHA = 2477,
  1150. SCI_SETSELALPHA = 2478,
  1151. SCI_GETSELEOLFILLED = 2479,
  1152. SCI_SETSELEOLFILLED = 2480,
  1153. SCI_SETCARETFORE = 2069,
  1154. SCI_ASSIGNCMDKEY = 2070,
  1155. SCI_CLEARCMDKEY = 2071,
  1156. SCI_CLEARALLCMDKEYS = 2072,
  1157. SCI_SETSTYLINGEX = 2073,
  1158. SCI_STYLESETVISIBLE = 2074,
  1159. SCI_GETCARETPERIOD = 2075,
  1160. SCI_SETCARETPERIOD = 2076,
  1161. SCI_SETWORDCHARS = 2077,
  1162. SCI_BEGINUNDOACTION = 2078,
  1163. SCI_ENDUNDOACTION = 2079,
  1164. INDIC_PLAIN = 0,
  1165. INDIC_SQUIGGLE = 1,
  1166. INDIC_TT = 2,
  1167. INDIC_DIAGONAL = 3,
  1168. INDIC_STRIKE = 4,
  1169. INDIC_HIDDEN = 5,
  1170. INDIC_BOX = 6,
  1171. INDIC_ROUNDBOX = 7,
  1172. INDIC_MAX = 31,
  1173. INDIC_CONTAINER = 8,
  1174. INDIC0_MASK = 0x20,
  1175. INDIC1_MASK = 0x40,
  1176. INDIC2_MASK = 0x80,
  1177. INDICS_MASK = 0xE0,
  1178. SCI_INDICSETSTYLE = 2080,
  1179. SCI_INDICGETSTYLE = 2081,
  1180. SCI_INDICSETFORE = 2082,
  1181. SCI_INDICGETFORE = 2083,
  1182. SCI_INDICSETUNDER = 2510,
  1183. SCI_INDICGETUNDER = 2511,
  1184. SCI_GETCARETLINEVISIBLEALWAYS = 3095,
  1185. SCI_SETCARETLINEVISIBLEALWAYS = 3096,
  1186. SCI_SETWHITESPACEFORE = 2084,
  1187. SCI_SETWHITESPACEBACK = 2085,
  1188. SCI_SETSTYLEBITS = 2090,
  1189. SCI_GETSTYLEBITS = 2091,
  1190. SCI_SETLINESTATE = 2092,
  1191. SCI_GETLINESTATE = 2093,
  1192. SCI_GETMAXLINESTATE = 2094,
  1193. SCI_GETCARETLINEVISIBLE = 2095,
  1194. SCI_SETCARETLINEVISIBLE = 2096,
  1195. SCI_GETCARETLINEBACK = 2097,
  1196. SCI_SETCARETLINEBACK = 2098,
  1197. SCI_STYLESETCHANGEABLE = 2099,
  1198. SCI_AUTOCSHOW = 2100,
  1199. SCI_AUTOCCANCEL = 2101,
  1200. SCI_AUTOCACTIVE = 2102,
  1201. SCI_AUTOCPOSSTART = 2103,
  1202. SCI_AUTOCCOMPLETE = 2104,
  1203. SCI_AUTOCSTOPS = 2105,
  1204. SCI_AUTOCSETSEPARATOR = 2106,
  1205. SCI_AUTOCGETSEPARATOR = 2107,
  1206. SCI_AUTOCSELECT = 2108,
  1207. SCI_AUTOCSETCANCELATSTART = 2110,
  1208. SCI_AUTOCGETCANCELATSTART = 2111,
  1209. SCI_AUTOCSETFILLUPS = 2112,
  1210. SCI_AUTOCSETCHOOSESINGLE = 2113,
  1211. SCI_AUTOCGETCHOOSESINGLE = 2114,
  1212. SCI_AUTOCSETIGNORECASE = 2115,
  1213. SCI_AUTOCGETIGNORECASE = 2116,
  1214. SCI_USERLISTSHOW = 2117,
  1215. SCI_AUTOCSETAUTOHIDE = 2118,
  1216. SCI_AUTOCGETAUTOHIDE = 2119,
  1217. SCI_AUTOCSETDROPRESTOFWORD = 2270,
  1218. SCI_AUTOCGETDROPRESTOFWORD = 2271,
  1219. SCI_REGISTERIMAGE = 2405,
  1220. SCI_CLEARREGISTEREDIMAGES = 2408,
  1221. SCI_AUTOCGETTYPESEPARATOR = 2285,
  1222. SCI_AUTOCSETTYPESEPARATOR = 2286,
  1223. SCI_AUTOCSETMAXWIDTH = 2208,
  1224. SCI_AUTOCGETMAXWIDTH = 2209,
  1225. SCI_AUTOCSETMAXHEIGHT = 2210,
  1226. SCI_AUTOCGETMAXHEIGHT = 2211,
  1227. SCI_SETINDENT = 2122,
  1228. SCI_GETINDENT = 2123,
  1229. SCI_SETUSETABS = 2124,
  1230. SCI_GETUSETABS = 2125,
  1231. SCI_SETLINEINDENTATION = 2126,
  1232. SCI_GETLINEINDENTATION = 2127,
  1233. SCI_GETLINEINDENTPOSITION = 2128,
  1234. SCI_GETCOLUMN = 2129,
  1235. SCI_SETHSCROLLBAR = 2130,
  1236. SCI_GETHSCROLLBAR = 2131,
  1237. SC_IV_NONE = 0,
  1238. SC_IV_REAL = 1,
  1239. SC_IV_LOOKFORWARD = 2,
  1240. SC_IV_LOOKBOTH = 3,
  1241. SCI_SETINDENTATIONGUIDES = 2132,
  1242. SCI_GETINDENTATIONGUIDES = 2133,
  1243. SCI_SETHIGHLIGHTGUIDE = 2134,
  1244. SCI_GETHIGHLIGHTGUIDE = 2135,
  1245. SCI_GETLINEENDPOSITION = 2136,
  1246. SCI_GETCODEPAGE = 2137,
  1247. SCI_GETCARETFORE = 2138,
  1248. SCI_GETUSEPALETTE = 2139,
  1249. SCI_GETREADONLY = 2140,
  1250. SCI_SETCURRENTPOS = 2141,
  1251. SCI_SETSELECTIONSTART = 2142,
  1252. SCI_GETSELECTIONSTART = 2143,
  1253. SCI_SETSELECTIONEND = 2144,
  1254. SCI_GETSELECTIONEND = 2145,
  1255. SCI_SETPRINTMAGNIFICATION = 2146,
  1256. SCI_GETPRINTMAGNIFICATION = 2147,
  1257. SC_PRINT_NORMAL = 0,
  1258. SC_PRINT_INVERTLIGHT = 1,
  1259. SC_PRINT_BLACKONWHITE = 2,
  1260. SC_PRINT_COLOURONWHITE = 3,
  1261. SC_PRINT_COLOURONWHITEDEFAULTBG = 4,
  1262. SCI_SETPRINTCOLOURMODE = 2148,
  1263. SCI_GETPRINTCOLOURMODE = 2149,
  1264. SCFIND_WHOLEWORD = 2,
  1265. SCFIND_MATCHCASE = 4,
  1266. SCFIND_WORDSTART = 0x00100000,
  1267. SCFIND_REGEXP = 0x00200000,
  1268. SCFIND_POSIX = 0x00400000,
  1269. SCI_FINDTEXT = 2150,
  1270. SCI_FORMATRANGE = 2151,
  1271. SCI_GETFIRSTVISIBLELINE = 2152,
  1272. SCI_GETLINE = 2153,
  1273. SCI_GETLINECOUNT = 2154,
  1274. SCI_SETMARGINLEFT = 2155,
  1275. SCI_GETMARGINLEFT = 2156,
  1276. SCI_SETMARGINRIGHT = 2157,
  1277. SCI_GETMARGINRIGHT = 2158,
  1278. SCI_GETMODIFY = 2159,
  1279. SCI_SETSEL = 2160,
  1280. SCI_GETSELTEXT = 2161,
  1281. SCI_GETTEXTRANGE = 2162,
  1282. SCI_HIDESELECTION = 2163,
  1283. SCI_POINTXFROMPOSITION = 2164,
  1284. SCI_POINTYFROMPOSITION = 2165,
  1285. SCI_LINEFROMPOSITION = 2166,
  1286. SCI_POSITIONFROMLINE = 2167,
  1287. SCI_LINESCROLL = 2168,
  1288. SCI_SCROLLCARET = 2169,
  1289. SCI_REPLACESEL = 2170,
  1290. SCI_SETREADONLY = 2171,
  1291. SCI_NULL = 2172,
  1292. SCI_CANPASTE = 2173,
  1293. SCI_CANUNDO = 2174,
  1294. SCI_EMPTYUNDOBUFFER = 2175,
  1295. SCI_UNDO = 2176,
  1296. SCI_CUT = 2177,
  1297. SCI_COPY = 2178,
  1298. SCI_PASTE = 2179,
  1299. SCI_CLEAR = 2180,
  1300. SCI_SETTEXT = 2181,
  1301. SCI_GETTEXT = 2182,
  1302. SCI_GETTEXTLENGTH = 2183,
  1303. SCI_GETDIRECTFUNCTION = 2184,
  1304. SCI_GETDIRECTPOINTER = 2185,
  1305. SCI_SETOVERTYPE = 2186,
  1306. SCI_GETOVERTYPE = 2187,
  1307. SCI_SETCARETWIDTH = 2188,
  1308. SCI_GETCARETWIDTH = 2189,
  1309. SCI_SETTARGETSTART = 2190,
  1310. SCI_GETTARGETSTART = 2191,
  1311. SCI_SETTARGETEND = 2192,
  1312. SCI_GETTARGETEND = 2193,
  1313. SCI_REPLACETARGET = 2194,
  1314. SCI_REPLACETARGETRE = 2195,
  1315. SCI_SEARCHINTARGET = 2197,
  1316. SCI_SETSEARCHFLAGS = 2198,
  1317. SCI_GETSEARCHFLAGS = 2199,
  1318. SCI_CALLTIPSHOW = 2200,
  1319. SCI_CALLTIPCANCEL = 2201,
  1320. SCI_CALLTIPACTIVE = 2202,
  1321. SCI_CALLTIPPOSSTART = 2203,
  1322. SCI_CALLTIPSETHLT = 2204,
  1323. SCI_CALLTIPSETBACK = 2205,
  1324. SCI_CALLTIPSETFORE = 2206,
  1325. SCI_CALLTIPSETFOREHLT = 2207,
  1326. SCI_CALLTIPUSESTYLE = 2212,
  1327. SCI_VISIBLEFROMDOCLINE = 2220,
  1328. SCI_DOCLINEFROMVISIBLE = 2221,
  1329. SCI_WRAPCOUNT = 2235,
  1330. SC_FOLDLEVELBASE = 0x400,
  1331. SC_FOLDLEVELWHITEFLAG = 0x1000,
  1332. SC_FOLDLEVELHEADERFLAG = 0x2000,
  1333. SC_FOLDLEVELNUMBERMASK = 0x0FFF,
  1334. SCI_SETFOLDLEVEL = 2222,
  1335. SCI_GETFOLDLEVEL = 2223,
  1336. SCI_GETLASTCHILD = 2224,
  1337. SCI_GETFOLDPARENT = 2225,
  1338. SCI_SHOWLINES = 2226,
  1339. SCI_HIDELINES = 2227,
  1340. SCI_GETLINEVISIBLE = 2228,
  1341. SCI_SETFOLDEXPANDED = 2229,
  1342. SCI_GETFOLDEXPANDED = 2230,
  1343. SCI_TOGGLEFOLD = 2231,
  1344. SCI_ENSUREVISIBLE = 2232,
  1345. SC_FOLDFLAG_LINEBEFORE_EXPANDED = 0x0002,
  1346. SC_FOLDFLAG_LINEBEFORE_CONTRACTED = 0x0004,
  1347. SC_FOLDFLAG_LINEAFTER_EXPANDED = 0x0008,
  1348. SC_FOLDFLAG_LINEAFTER_CONTRACTED = 0x0010,
  1349. SC_FOLDFLAG_LEVELNUMBERS = 0x0040,
  1350. SCI_SETFOLDFLAGS = 2233,
  1351. SCI_ENSUREVISIBLEENFORCEPOLICY = 2234,
  1352. SCI_SETTABINDENTS = 2260,
  1353. SCI_GETTABINDENTS = 2261,
  1354. SCI_SETBACKSPACEUNINDENTS = 2262,
  1355. SCI_GETBACKSPACEUNINDENTS = 2263,
  1356. SC_TIME_FOREVER = 10000000,
  1357. SCI_SETMOUSEDWELLTIME = 2264,
  1358. SCI_GETMOUSEDWELLTIME = 2265,
  1359. SCI_WORDSTARTPOSITION = 2266,
  1360. SCI_WORDENDPOSITION = 2267,
  1361. SC_WRAP_NONE = 0,
  1362. SC_WRAP_WORD = 1,
  1363. SC_WRAP_CHAR = 2,
  1364. SCI_SETWRAPMODE = 2268,
  1365. SCI_GETWRAPMODE = 2269,
  1366. SC_WRAPVISUALFLAG_NONE = 0x0000,
  1367. SC_WRAPVISUALFLAG_END = 0x0001,
  1368. SC_WRAPVISUALFLAG_START = 0x0002,
  1369. SCI_SETWRAPVISUALFLAGS = 2460,
  1370. SCI_GETWRAPVISUALFLAGS = 2461,
  1371. SC_WRAPVISUALFLAGLOC_DEFAULT = 0x0000,
  1372. SC_WRAPVISUALFLAGLOC_END_BY_TEXT = 0x0001,
  1373. SC_WRAPVISUALFLAGLOC_START_BY_TEXT = 0x0002,
  1374. SCI_SETWRAPVISUALFLAGSLOCATION = 2462,
  1375. SCI_GETWRAPVISUALFLAGSLOCATION = 2463,
  1376. SCI_SETWRAPSTARTINDENT = 2464,
  1377. SCI_GETWRAPSTARTINDENT = 2465,
  1378. SC_WRAPINDENT_FIXED = 0,
  1379. SC_WRAPINDENT_SAME = 1,
  1380. SC_WRAPINDENT_INDENT = 2,
  1381. SCI_SETWRAPINDENTMODE = 2472,
  1382. SCI_GETWRAPINDENTMODE = 2473,
  1383. SC_CACHE_NONE = 0,
  1384. SC_CACHE_CARET = 1,
  1385. SC_CACHE_PAGE = 2,
  1386. SC_CACHE_DOCUMENT = 3,
  1387. SCI_SETLAYOUTCACHE = 2272,
  1388. SCI_GETLAYOUTCACHE = 2273,
  1389. SCI_SETSCROLLWIDTH = 2274,
  1390. SCI_GETSCROLLWIDTH = 2275,
  1391. SCI_SETSCROLLWIDTHTRACKING = 2516,
  1392. SCI_GETSCROLLWIDTHTRACKING = 2517,
  1393. SCI_TEXTWIDTH = 2276,
  1394. SCI_SETENDATLASTLINE = 2277,
  1395. SCI_GETENDATLASTLINE = 2278,
  1396. SCI_TEXTHEIGHT = 2279,
  1397. SCI_SETVSCROLLBAR = 2280,
  1398. SCI_GETVSCROLLBAR = 2281,
  1399. SCI_APPENDTEXT = 2282,
  1400. SCI_GETTWOPHASEDRAW = 2283,
  1401. SCI_SETTWOPHASEDRAW = 2284,
  1402. SCI_TARGETFROMSELECTION = 2287,
  1403. SCI_LINESJOIN = 2288,
  1404. SCI_LINESSPLIT = 2289,
  1405. SCI_SETFOLDMARGINCOLOUR = 2290,
  1406. SCI_SETFOLDMARGINHICOLOUR = 2291,
  1407. SCI_LINEDOWN = 2300,
  1408. SCI_LINEDOWNEXTEND = 2301,
  1409. SCI_LINEUP = 2302,
  1410. SCI_LINEUPEXTEND = 2303,
  1411. SCI_CHARLEFT = 2304,
  1412. SCI_CHARLEFTEXTEND = 2305,
  1413. SCI_CHARRIGHT = 2306,
  1414. SCI_CHARRIGHTEXTEND = 2307,
  1415. SCI_WORDLEFT = 2308,
  1416. SCI_WORDLEFTEXTEND = 2309,
  1417. SCI_WORDRIGHT = 2310,
  1418. SCI_WORDRIGHTEXTEND = 2311,
  1419. SCI_HOME = 2312,
  1420. SCI_HOMEEXTEND = 2313,
  1421. SCI_LINEEND = 2314,
  1422. SCI_LINEENDEXTEND = 2315,
  1423. SCI_DOCUMENTSTART = 2316,
  1424. SCI_DOCUMENTSTARTEXTEND = 2317,
  1425. SCI_DOCUMENTEND = 2318,
  1426. SCI_DOCUMENTENDEXTEND = 2319,
  1427. SCI_PAGEUP = 2320,
  1428. SCI_PAGEUPEXTEND = 2321,
  1429. SCI_PAGEDOWN = 2322,
  1430. SCI_PAGEDOWNEXTEND = 2323,
  1431. SCI_EDITTOGGLEOVERTYPE = 2324,
  1432. SCI_CANCEL = 2325,
  1433. SCI_DELETEBACK = 2326,
  1434. SCI_TAB = 2327,
  1435. SCI_BACKTAB = 2328,
  1436. SCI_NEWLINE = 2329,
  1437. SCI_FORMFEED = 2330,
  1438. SCI_VCHOME = 2331,
  1439. SCI_VCHOMEEXTEND = 2332,
  1440. SCI_ZOOMIN = 2333,
  1441. SCI_ZOOMOUT = 2334,
  1442. SCI_DELWORDLEFT = 2335,
  1443. SCI_DELWORDRIGHT = 2336,
  1444. SCI_DELWORDRIGHTEND = 2518,
  1445. SCI_LINECUT = 2337,
  1446. SCI_LINEDELETE = 2338,
  1447. SCI_LINETRANSPOSE = 2339,
  1448. SCI_LINEDUPLICATE = 2404,
  1449. SCI_LOWERCASE = 2340,
  1450. SCI_UPPERCASE = 2341,
  1451. SCI_LINESCROLLDOWN = 2342,
  1452. SCI_LINESCROLLUP = 2343,
  1453. SCI_DELETEBACKNOTLINE = 2344,
  1454. SCI_HOMEDISPLAY = 2345,
  1455. SCI_HOMEDISPLAYEXTEND = 2346,
  1456. SCI_LINEENDDISPLAY = 2347,
  1457. SCI_LINEENDDISPLAYEXTEND = 2348,
  1458. SCI_HOMEWRAP = 2349,
  1459. SCI_HOMEWRAPEXTEND = 2450,
  1460. SCI_LINEENDWRAP = 2451,
  1461. SCI_LINEENDWRAPEXTEND = 2452,
  1462. SCI_VCHOMEWRAP = 2453,
  1463. SCI_VCHOMEWRAPEXTEND = 2454,
  1464. SCI_LINECOPY = 2455,
  1465. SCI_MOVECARETINSIDEVIEW = 2401,
  1466. SCI_LINELENGTH = 2350,
  1467. SCI_BRACEHIGHLIGHT = 2351,
  1468. SCI_BRACEBADLIGHT = 2352,
  1469. SCI_BRACEMATCH = 2353,
  1470. SCI_GETVIEWEOL = 2355,
  1471. SCI_SETVIEWEOL = 2356,
  1472. SCI_GETDOCPOINTER = 2357,
  1473. SCI_SETDOCPOINTER = 2358,
  1474. SCI_SETMODEVENTMASK = 2359,
  1475. EDGE_NONE = 0,
  1476. EDGE_LINE = 1,
  1477. EDGE_BACKGROUND = 2,
  1478. SCI_GETEDGECOLUMN = 2360,
  1479. SCI_SETEDGECOLUMN = 2361,
  1480. SCI_GETEDGEMODE = 2362,
  1481. SCI_SETEDGEMODE = 2363,
  1482. SCI_GETEDGECOLOUR = 2364,
  1483. SCI_SETEDGECOLOUR = 2365,
  1484. SCI_SEARCHANCHOR = 2366,
  1485. SCI_SEARCHNEXT = 2367,
  1486. SCI_SEARCHPREV = 2368,
  1487. SCI_LINESONSCREEN = 2370,
  1488. SCI_USEPOPUP = 2371,
  1489. SCI_SELECTIONISRECTANGLE = 2372,
  1490. SCI_SETZOOM = 2373,
  1491. SCI_GETZOOM = 2374,
  1492. SCI_CREATEDOCUMENT = 2375,
  1493. SCI_ADDREFDOCUMENT = 2376,
  1494. SCI_RELEASEDOCUMENT = 2377,
  1495. SCI_GETMODEVENTMASK = 2378,
  1496. SCI_SETFOCUS = 2380,
  1497. SCI_GETFOCUS = 2381,
  1498. SC_STATUS_OK = 0,
  1499. SC_STATUS_FAILURE = 1,
  1500. SC_STATUS_BADALLOC = 2,
  1501. SCI_SETSTATUS = 2382,
  1502. SCI_GETSTATUS = 2383,
  1503. SCI_SETMOUSEDOWNCAPTURES = 2384,
  1504. SCI_GETMOUSEDOWNCAPTURES = 2385,
  1505. SC_CURSORNORMAL = 0xFFFFFFFF,
  1506. SC_CURSORWAIT = 4,
  1507. SCI_SETCURSOR = 2386,
  1508. SCI_GETCURSOR = 2387,
  1509. SCI_SETCONTROLCHARSYMBOL = 2388,
  1510. SCI_GETCONTROLCHARSYMBOL = 2389,
  1511. SCI_WORDPARTLEFT = 2390,
  1512. SCI_WORDPARTLEFTEXTEND = 2391,
  1513. SCI_WORDPARTRIGHT = 2392,
  1514. SCI_WORDPARTRIGHTEXTEND = 2393,
  1515. VISIBLE_SLOP = 0x01,
  1516. VISIBLE_STRICT = 0x04,
  1517. SCI_SETVISIBLEPOLICY = 2394,
  1518. SCI_DELLINELEFT = 2395,
  1519. SCI_DELLINERIGHT = 2396,
  1520. SCI_SETXOFFSET = 2397,
  1521. SCI_GETXOFFSET = 2398,
  1522. SCI_CHOOSECARETX = 2399,
  1523. SCI_GRABFOCUS = 2400,
  1524. CARET_SLOP = 0x01,
  1525. CARET_STRICT = 0x04,
  1526. CARET_JUMPS = 0x10,
  1527. CARET_EVEN = 0x08,
  1528. SCI_SETXCARETPOLICY = 2402,
  1529. SCI_SETYCARETPOLICY = 2403,
  1530. SCI_SETPRINTWRAPMODE = 2406,
  1531. SCI_GETPRINTWRAPMODE = 2407,
  1532. SCI_SETHOTSPOTACTIVEFORE = 2410,
  1533. SCI_GETHOTSPOTACTIVEFORE = 2494,
  1534. SCI_SETHOTSPOTACTIVEBACK = 2411,
  1535. SCI_GETHOTSPOTACTIVEBACK = 2495,
  1536. SCI_SETHOTSPOTACTIVEUNDERLINE = 2412,
  1537. SCI_GETHOTSPOTACTIVEUNDERLINE = 2496,
  1538. SCI_SETHOTSPOTSINGLELINE = 2421,
  1539. SCI_GETHOTSPOTSINGLELINE = 2497,
  1540. SCI_PARADOWN = 2413,
  1541. SCI_PARADOWNEXTEND = 2414,
  1542. SCI_PARAUP = 2415,
  1543. SCI_PARAUPEXTEND = 2416,
  1544. SCI_POSITIONBEFORE = 2417,
  1545. SCI_POSITIONAFTER = 2418,
  1546. SCI_COPYRANGE = 2419,
  1547. SCI_COPYTEXT = 2420,
  1548. SC_SEL_STREAM = 0,
  1549. SC_SEL_RECTANGLE = 1,
  1550. SC_SEL_LINES = 2,
  1551. SC_SEL_THIN = 3,
  1552. SCI_SETSELECTIONMODE = 2422,
  1553. SCI_GETSELECTIONMODE = 2423,
  1554. SCI_GETLINESELSTARTPOSITION = 2424,
  1555. SCI_GETLINESELENDPOSITION = 2425,
  1556. SCI_LINEDOWNRECTEXTEND = 2426,
  1557. SCI_LINEUPRECTEXTEND = 2427,
  1558. SCI_CHARLEFTRECTEXTEND = 2428,
  1559. SCI_CHARRIGHTRECTEXTEND = 2429,
  1560. SCI_HOMERECTEXTEND = 2430,
  1561. SCI_VCHOMERECTEXTEND = 2431,
  1562. SCI_LINEENDRECTEXTEND = 2432,
  1563. SCI_PAGEUPRECTEXTEND = 2433,
  1564. SCI_PAGEDOWNRECTEXTEND = 2434,
  1565. SCI_STUTTEREDPAGEUP = 2435,
  1566. SCI_STUTTEREDPAGEUPEXTEND = 2436,
  1567. SCI_STUTTEREDPAGEDOWN = 2437,
  1568. SCI_STUTTEREDPAGEDOWNEXTEND = 2438,
  1569. SCI_WORDLEFTEND = 2439,
  1570. SCI_WORDLEFTENDEXTEND = 2440,
  1571. SCI_WORDRIGHTEND = 2441,
  1572. SCI_WORDRIGHTENDEXTEND = 2442,
  1573. SCI_SETWHITESPACECHARS = 2443,
  1574. SCI_SETCHARSDEFAULT = 2444,
  1575. SCI_AUTOCGETCURRENT = 2445,
  1576. SCI_ALLOCATE = 2446,
  1577. SCI_TARGETASUTF8 = 2447,
  1578. SCI_SETLENGTHFORENCODE = 2448,
  1579. SCI_ENCODEDFROMUTF8 = 2449,
  1580. SCI_FINDCOLUMN = 2456,
  1581. SCI_GETCARETSTICKY = 2457,
  1582. SCI_SETCARETSTICKY = 2458,
  1583. SCI_TOGGLECARETSTICKY = 2459,
  1584. SCI_SETPASTECONVERTENDINGS = 2467,
  1585. SCI_GETPASTECONVERTENDINGS = 2468,
  1586. SCI_SELECTIONDUPLICATE = 2469,
  1587. SC_ALPHA_TRANSPARENT = 0,
  1588. SC_ALPHA_OPAQUE = 255,
  1589. SC_ALPHA_NOALPHA = 256,
  1590. SCI_SETCARETLINEBACKALPHA = 2470,
  1591. SCI_GETCARETLINEBACKALPHA = 2471,
  1592. CARETSTYLE_INVISIBLE = 0,
  1593. CARETSTYLE_LINE = 1,
  1594. CARETSTYLE_BLOCK = 2,
  1595. SCI_SETCARETSTYLE = 2512,
  1596. SCI_GETCARETSTYLE = 2513,
  1597. SCI_SETINDICATORCURRENT = 2500,
  1598. SCI_GETINDICATORCURRENT = 2501,
  1599. SCI_SETINDICATORVALUE = 2502,
  1600. SCI_GETINDICATORVALUE = 2503,
  1601. SCI_INDICATORFILLRANGE = 2504,
  1602. SCI_INDICATORCLEARRANGE = 2505,
  1603. SCI_INDICATORALLONFOR = 2506,
  1604. SCI_INDICATORVALUEAT = 2507,
  1605. SCI_INDICATORSTART = 2508,
  1606. SCI_INDICATOREND = 2509,
  1607. SCI_SETPOSITIONCACHE = 2514,
  1608. SCI_GETPOSITIONCACHE = 2515,
  1609. SCI_COPYALLOWLINE = 2519,
  1610. SCI_GETCHARACTERPOINTER = 2520,
  1611. SCI_SETKEYSUNICODE = 2521,
  1612. SCI_GETKEYSUNICODE = 2522,
  1613. SCI_INDICSETALPHA = 2523,
  1614. SCI_INDICGETALPHA = 2524,
  1615. SCI_SETEXTRAASCENT = 2525,
  1616. SCI_GETEXTRAASCENT = 2526,
  1617. SCI_SETEXTRADESCENT = 2527,
  1618. SCI_GETEXTRADESCENT = 2528,
  1619. SCI_MARKERSYMBOLDEFINED = 2529,
  1620. SCI_MARGINSETTEXT = 2530,
  1621. SCI_MARGINGETTEXT = 2531,
  1622. SCI_MARGINSETSTYLE = 2532,
  1623. SCI_MARGINGETSTYLE = 2533,
  1624. SCI_MARGINSETSTYLES = 2534,
  1625. SCI_MARGINGETSTYLES = 2535,
  1626. SCI_MARGINTEXTCLEARALL = 2536,
  1627. SCI_MARGINSETSTYLEOFFSET = 2537,
  1628. SCI_MARGINGETSTYLEOFFSET = 2538,
  1629. SCI_ANNOTATIONSETTEXT = 2540,
  1630. SCI_ANNOTATIONGETTEXT = 2541,
  1631. SCI_ANNOTATIONSETSTYLE = 2542,
  1632. SCI_ANNOTATIONGETSTYLE = 2543,
  1633. SCI_ANNOTATIONSETSTYLES = 2544,
  1634. SCI_ANNOTATIONGETSTYLES = 2545,
  1635. SCI_ANNOTATIONGETLINES = 2546,
  1636. SCI_ANNOTATIONCLEARALL = 2547,
  1637. ANNOTATION_HIDDEN = 0,
  1638. ANNOTATION_STANDARD = 1,
  1639. ANNOTATION_BOXED = 2,
  1640. SCI_ANNOTATIONSETVISIBLE = 2548,
  1641. SCI_ANNOTATIONGETVISIBLE = 2549,
  1642. SCI_ANNOTATIONSETSTYLEOFFSET = 2550,
  1643. SCI_ANNOTATIONGETSTYLEOFFSET = 2551,
  1644. UNDO_MAY_COALESCE = 1,
  1645. SCI_ADDUNDOACTION = 2560,
  1646. SCI_CHARPOSITIONFROMPOINT = 2561,
  1647. SCI_CHARPOSITIONFROMPOINTCLOSE = 2562,
  1648. SCI_SETMULTIPLESELECTION = 2563,
  1649. SCI_GETMULTIPLESELECTION = 2564,
  1650. SCI_SETADDITIONALSELECTIONTYPING = 2565,
  1651. SCI_GETADDITIONALSELECTIONTYPING = 2566,
  1652. SCI_SETADDITIONALCARETSBLINK = 2567,
  1653. SCI_GETADDITIONALCARETSBLINK = 2568,
  1654. SCI_GETSELECTIONS = 2570,
  1655. SCI_CLEARSELECTIONS = 2571,
  1656. SCI_SETSELECTION = 2572,
  1657. SCI_ADDSELECTION = 2573,
  1658. SCI_SETMAINSELECTION = 2574,
  1659. SCI_GETMAINSELECTION = 2575,
  1660. SCI_SETSELECTIONNCARET = 2576,
  1661. SCI_GETSELECTIONNCARET = 2577,
  1662. SCI_SETSELECTIONNANCHOR = 2578,
  1663. SCI_GETSELECTIONNANCHOR = 2579,
  1664. SCI_SETSELECTIONNCARETVIRTUALSPACE = 2580,
  1665. SCI_GETSELECTIONNCARETVIRTUALSPACE = 2581,
  1666. SCI_SETSELECTIONNANCHORVIRTUALSPACE = 2582,
  1667. SCI_GETSELECTIONNANCHORVIRTUALSPACE = 2583,
  1668. SCI_SETSELECTIONNSTART = 2584,
  1669. SCI_GETSELECTIONNSTART = 2585,
  1670. SCI_SETSELECTIONNEND = 2586,
  1671. SCI_GETSELECTIONNEND = 2587,
  1672. SCI_SETRECTANGULARSELECTIONCARET = 2588,
  1673. SCI_GETRECTANGULARSELECTIONCARET = 2589,
  1674. SCI_SETRECTANGULARSELECTIONANCHOR = 2590,
  1675. SCI_GETRECTANGULARSELECTIONANCHOR = 2591,
  1676. SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE = 2592,
  1677. SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE = 2593,
  1678. SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE = 2594,
  1679. SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE = 2595,
  1680. SCVS_NONE = 0,
  1681. SCVS_RECTANGULARSELECTION = 1,
  1682. SCVS_USERACCESSIBLE = 2,
  1683. SCI_SETVIRTUALSPACEOPTIONS = 2596,
  1684. SCI_GETVIRTUALSPACEOPTIONS = 2597,
  1685. SCI_SETRECTANGULARSELECTIONMODIFIER = 2598,
  1686. SCI_GETRECTANGULARSELECTIONMODIFIER = 2599,
  1687. SCI_SETADDITIONALSELFORE = 2600,
  1688. SCI_SETADDITIONALSELBACK = 2601,
  1689. SCI_SETADDITIONALSELALPHA = 2602,
  1690. SCI_GETADDITIONALSELALPHA = 2603,
  1691. SCI_SETADDITIONALCARETFORE = 2604,
  1692. SCI_GETADDITIONALCARETFORE = 2605,
  1693. SCI_ROTATESELECTION = 2606,
  1694. SCI_SWAPMAINANCHORCARET = 2607,
  1695. SCI_STARTRECORD = 3001,
  1696. SCI_STOPRECORD = 3002,
  1697. SCI_SETLEXER = 4001,
  1698. SCI_GETLEXER = 4002,
  1699. SCI_COLOURISE = 4003,
  1700. SCI_SETPROPERTY = 4004,
  1701. KEYWORDSET_MAX = 8,
  1702. SCI_SETKEYWORDS = 4005,
  1703. SCI_SETLEXERLANGUAGE = 4006,
  1704. SCI_LOADLEXERLIBRARY = 4007,
  1705. SCI_GETPROPERTY = 4008,
  1706. SCI_GETPROPERTYEXPANDED = 4009,
  1707. SCI_GETPROPERTYINT = 4010,
  1708. SCI_GETSTYLEBITSNEEDED = 4011,
  1709. SC_MOD_INSERTTEXT = 0x1,
  1710. SC_MOD_DELETETEXT = 0x2,
  1711. SC_MOD_CHANGESTYLE = 0x4,
  1712. SC_MOD_CHANGEFOLD = 0x8,
  1713. SC_PERFORMED_USER = 0x10,
  1714. SC_PERFORMED_UNDO = 0x20,
  1715. SC_PERFORMED_REDO = 0x40,
  1716. SC_MULTISTEPUNDOREDO = 0x80,
  1717. SC_LASTSTEPINUNDOREDO = 0x100,
  1718. SC_MOD_CHANGEMARKER = 0x200,
  1719. SC_MOD_BEFOREINSERT = 0x400,
  1720. SC_MOD_BEFOREDELETE = 0x800,
  1721. SC_MULTILINEUNDOREDO = 0x1000,
  1722. SC_STARTACTION = 0x2000,
  1723. SC_MOD_CHANGEINDICATOR = 0x4000,
  1724. SC_MOD_CHANGELINESTATE = 0x8000,
  1725. SC_MOD_CHANGEMARGIN = 0x10000,
  1726. SC_MOD_CHANGEANNOTATION = 0x20000,
  1727. SC_MOD_CONTAINER = 0x40000,
  1728. SC_MODEVENTMASKALL = 0x7FFFF,
  1729. SC_SEARCHRESULT_LINEBUFFERMAXLENGTH = 1024,
  1730. SCEN_CHANGE = 768,
  1731. SCEN_SETFOCUS = 512,
  1732. SCEN_KILLFOCUS = 256,
  1733. SCK_DOWN = 300,
  1734. SCK_UP = 301,
  1735. SCK_LEFT = 302,
  1736. SCK_RIGHT = 303,
  1737. SCK_HOME = 304,
  1738. SCK_END = 305,
  1739. SCK_PRIOR = 306,
  1740. SCK_NEXT = 307,
  1741. SCK_DELETE = 308,
  1742. SCK_INSERT = 309,
  1743. SCK_ESCAPE = 7,
  1744. SCK_BACK = 8,
  1745. SCK_TAB = 9,
  1746. SCK_RETURN = 13,
  1747. SCK_ADD = 310,
  1748. SCK_SUBTRACT = 311,
  1749. SCK_DIVIDE = 312,
  1750. SCK_WIN = 313,
  1751. SCK_RWIN = 314,
  1752. SCK_MENU = 315,
  1753. SCMOD_NORM = 0,
  1754. SCMOD_SHIFT = 1,
  1755. SCMOD_CTRL = 2,
  1756. SCMOD_ALT = 4,
  1757. SCMOD_SUPER = 8,
  1758. SCN_STYLENEEDED = 2000,
  1759. SCN_CHARADDED = 2001,
  1760. SCN_SAVEPOINTREACHED = 2002,
  1761. SCN_SAVEPOINTLEFT = 2003,
  1762. SCN_MODIFYATTEMPTRO = 2004,
  1763. SCN_KEY = 2005,
  1764. SCN_DOUBLECLICK = 2006,
  1765. SCN_UPDATEUI = 2007,
  1766. SCN_MODIFIED = 2008,
  1767. SCN_MACRORECORD = 2009,
  1768. SCN_MARGINCLICK = 2010,
  1769. SCN_NEEDSHOWN = 2011,
  1770. SCN_PAINTED = 2013,
  1771. SCN_USERLISTSELECTION = 2014,
  1772. SCN_URIDROPPED = 2015,
  1773. SCN_DWELLSTART = 2016,
  1774. SCN_DWELLEND = 2017,
  1775. SCN_ZOOM = 2018,
  1776. SCN_HOTSPOTCLICK = 2019,
  1777. SCN_HOTSPOTDOUBLECLICK = 2020,
  1778. SCN_CALLTIPCLICK = 2021,
  1779. SCN_AUTOCSELECTION = 2022,
  1780. SCN_INDICATORCLICK = 2023,
  1781. SCN_INDICATORRELEASE = 2024,
  1782. SCN_AUTOCCANCELLED = 2025,
  1783. SCN_AUTOCCHARDELETED = 2026,
  1784. SCN_SCROLLED = 2080
  1785. }
  1786. [StructLayout(LayoutKind.Sequential)]
  1787. public struct SciCharacterRange
  1788. {
  1789. public SciCharacterRange(int cpmin, int cpmax) { cpMin = cpmin; cpMax = cpmax; }
  1790. public int cpMin;
  1791. public int cpMax;
  1792. }
  1793. public class SciTextRange : IDisposable
  1794. {
  1795. SciTextRangeStruct _sciTextRange;
  1796. IntPtr _ptrSciTextRange;
  1797. bool _disposed;
  1798. public SciTextRange(SciCharacterRange chrRange, int stringCapacity)
  1799. {
  1800. _sciTextRange.chrg = chrRange;
  1801. _sciTextRange.lpstrText = Marshal.AllocHGlobal(stringCapacity);
  1802. }
  1803. public SciTextRange(int cpmin, int cpmax, int stringCapacity)
  1804. {
  1805. _sciTextRange.chrg.cpMin = cpmin;
  1806. _sciTextRange.chrg.cpMax = cpmax;
  1807. _sciTextRange.lpstrText = Marshal.AllocHGlobal(stringCapacity);
  1808. }
  1809. [StructLayout(LayoutKind.Sequential)]
  1810. struct SciTextRangeStruct
  1811. {
  1812. public SciCharacterRange chrg;
  1813. public IntPtr lpstrText;
  1814. }
  1815. public IntPtr NativePointer { get { _initNativeStruct(); return _ptrSciTextRange; } }
  1816. public string LpstrText { get { _readNativeStruct(); return Marshal.PtrToStringAnsi(_sciTextRange.lpstrText); } }
  1817. public SciCharacterRange Chrg { get { _readNativeStruct(); return _sciTextRange.chrg; } set { _sciTextRange.chrg = value; _initNativeStruct(); } }
  1818. void _initNativeStruct()
  1819. {
  1820. if (_ptrSciTextRange == IntPtr.Zero)
  1821. _ptrSciTextRange = Marshal.AllocHGlobal(Marshal.SizeOf(_sciTextRange));
  1822. Marshal.StructureToPtr(_sciTextRange, _ptrSciTextRange, false);
  1823. }
  1824. void _readNativeStruct()
  1825. {
  1826. if (_ptrSciTextRange != IntPtr.Zero)
  1827. _sciTextRange = (SciTextRangeStruct)Marshal.PtrToStructure(_ptrSciTextRange, typeof(SciTextRangeStruct));
  1828. }
  1829. public void Dispose()
  1830. {
  1831. if (!_disposed)
  1832. {
  1833. if (_sciTextRange.lpstrText != IntPtr.Zero) Marshal.FreeHGlobal(_sciTextRange.lpstrText);
  1834. if (_ptrSciTextRange != IntPtr.Zero) Marshal.FreeHGlobal(_ptrSciTextRange);
  1835. _disposed = true;
  1836. }
  1837. }
  1838. ~SciTextRange()
  1839. {
  1840. Dispose();
  1841. }
  1842. }
  1843. public class SciTextToFind : IDisposable
  1844. {
  1845. SciTextToFindStruct _sciTextToFind;
  1846. IntPtr _ptrSciTextToFind;
  1847. bool _disposed;
  1848. public SciTextToFind(SciCharacterRange chrRange, string searchText)
  1849. {
  1850. _sciTextToFind.chrg = chrRange;
  1851. _sciTextToFind.lpstrText = Marshal.StringToHGlobalAnsi(searchText);
  1852. }
  1853. public SciTextToFind(int cpmin, int cpmax, string searchText)
  1854. {
  1855. _sciTextToFind.chrg.cpMin = cpmin;
  1856. _sciTextToFind.chrg.cpMax = cpmax;
  1857. _sciTextToFind.lpstrText = Marshal.StringToHGlobalAnsi(searchText);
  1858. }
  1859. [StructLayout(LayoutKind.Sequential)]
  1860. struct SciTextToFindStruct
  1861. {
  1862. public SciCharacterRange chrg;
  1863. public IntPtr lpstrText;
  1864. public readonly SciCharacterRange chrgText;
  1865. }
  1866. public IntPtr NativePointer { get { _initNativeStruct(); return _ptrSciTextToFind; } }
  1867. public string LpstrText { set { _freeNativeString(); _sciTextToFind.lpstrText = Marshal.StringToHGlobalAnsi(value); } }
  1868. public SciCharacterRange Chrg { get { _readNativeStruct(); return _sciTextToFind.chrg; } set { _sciTextToFind.chrg = value; _initNativeStruct(); } }
  1869. public SciCharacterRange ChrgText { get { _readNativeStruct(); return _sciTextToFind.chrgText; } }
  1870. void _initNativeStruct()
  1871. {
  1872. if (_ptrSciTextToFind == IntPtr.Zero)
  1873. _ptrSciTextToFind = Marshal.AllocHGlobal(Marshal.SizeOf(_sciTextToFind));
  1874. Marshal.StructureToPtr(_sciTextToFind, _ptrSciTextToFind, false);
  1875. }
  1876. void _readNativeStruct()
  1877. {
  1878. if (_ptrSciTextToFind != IntPtr.Zero)
  1879. _sciTextToFind = (SciTextToFindStruct)Marshal.PtrToStructure(_ptrSciTextToFind, typeof(SciTextToFindStruct));
  1880. }
  1881. void _freeNativeString()
  1882. {
  1883. if (_sciTextToFind.lpstrText != IntPtr.Zero) Marshal.FreeHGlobal(_sciTextToFind.lpstrText);
  1884. }
  1885. public void Dispose()
  1886. {
  1887. if (!_disposed)
  1888. {
  1889. _freeNativeString();
  1890. if (_ptrSciTextToFind != IntPtr.Zero) Marshal.FreeHGlobal(_ptrSciTextToFind);
  1891. _disposed = true;
  1892. }
  1893. }
  1894. ~SciTextToFind()
  1895. {
  1896. Dispose();
  1897. }
  1898. }
  1899. #endregion
  1900. #region " Platform "
  1901. public class Win32
  1902. {
  1903. [DllImport("user32")]
  1904. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, NppMenuCmd lParam);
  1905. [DllImport("user32")]
  1906. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, IntPtr lParam);
  1907. [DllImport("user32")]
  1908. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, int lParam);
  1909. [DllImport("user32")]
  1910. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, out int lParam);
  1911. [DllImport("user32")]
  1912. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, IntPtr wParam, int lParam);
  1913. [DllImport("user32")]
  1914. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, ref LangType lParam);
  1915. [DllImport("user32")]
  1916. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder lParam);
  1917. [DllImport("user32")]
  1918. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);
  1919. [DllImport("user32")]
  1920. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);
  1921. [DllImport("user32")]
  1922. public static extern IntPtr SendMessage(IntPtr hWnd, NppMsg msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder lParam);
  1923. [DllImport("user32")]
  1924. public static extern IntPtr SendMessage(IntPtr hWnd, SciMsg msg, int wParam, IntPtr lParam);
  1925. [DllImport("user32")]
  1926. public static extern IntPtr SendMessage(IntPtr hWnd, SciMsg msg, int wParam, string lParam);
  1927. [DllImport("user32")]
  1928. public static extern IntPtr SendMessage(IntPtr hWnd, SciMsg msg, int wParam, [MarshalAs(UnmanagedType.LPStr)] StringBuilder lParam);
  1929. [DllImport("user32")]
  1930. public static extern IntPtr SendMessage(IntPtr hWnd, SciMsg msg, int wParam, int lParam);
  1931. public const int MAX_PATH = 260;
  1932. [DllImport("kernel32")]
  1933. public static extern int GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName);
  1934. [DllImport("kernel32")]
  1935. public static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);
  1936. public const int MF_BYCOMMAND = 0;
  1937. public const int MF_CHECKED = 8;
  1938. public const int MF_UNCHECKED = 0;
  1939. [DllImport("user32")]
  1940. public static extern IntPtr GetMenu(IntPtr hWnd);
  1941. [DllImport("user32")]
  1942. public static extern int CheckMenuItem(IntPtr hmenu, int uIdCheckItem, int uCheck);
  1943. public const int WM_CREATE = 1;
  1944. [DllImport("user32")]
  1945. public static extern bool ClientToScreen(IntPtr hWnd, ref Point lpPoint);
  1946. [DllImport("kernel32")]
  1947. public static extern void OutputDebugString(string lpOutputString);
  1948. }
  1949. public class ClikeStringArray : IDisposable
  1950. {
  1951. readonly IntPtr _nativeArray;
  1952. readonly List<IntPtr> _nativeItems;
  1953. bool _disposed;
  1954. public ClikeStringArray(int num, int stringCapacity)
  1955. {
  1956. _nativeArray = Marshal.AllocHGlobal((num + 1) * IntPtr.Size);
  1957. _nativeItems = new List<IntPtr>();
  1958. for (var i = 0; i < num; i++)
  1959. {
  1960. var item = Marshal.AllocHGlobal(stringCapacity);
  1961. Marshal.WriteIntPtr((IntPtr)((int)_nativeArray + (i * IntPtr.Size)), item);
  1962. _nativeItems.Add(item);
  1963. }
  1964. Marshal.WriteIntPtr((IntPtr)((int)_nativeArray + (num * IntPtr.Size)), IntPtr.Zero);
  1965. }
  1966. public ClikeStringArray(List<string> lstStrings)
  1967. {
  1968. _nativeArray = Marshal.AllocHGlobal((lstStrings.Count + 1) * IntPtr.Size);
  1969. _nativeItems = new List<IntPtr>();
  1970. for (var i = 0; i < lstStrings.Count; i++)
  1971. {
  1972. var item = Marshal.StringToHGlobalUni(lstStrings[i]);
  1973. Marshal.WriteIntPtr((IntPtr)((int)_nativeArray + (i * IntPtr.Size)), item);
  1974. _nativeItems.Add(item);
  1975. }
  1976. Marshal.WriteIntPtr((IntPtr)((int)_nativeArray + (lstStrings.Count * IntPtr.Size)), IntPtr.Zero);
  1977. }
  1978. public IntPtr NativePointer { get { return _nativeArray; } }
  1979. public List<string> ManagedStringsAnsi { get { return _getManagedItems(false); } }
  1980. public List<string> ManagedStringsUnicode { get { return _getManagedItems(true); } }
  1981. List<string> _getManagedItems(bool unicode)
  1982. {
  1983. var managedItems = new List<string>();
  1984. for (var i = 0; i < _nativeItems.Count; i++)
  1985. {
  1986. if (unicode) managedItems.Add(Marshal.PtrToStringUni(_nativeItems[i]));
  1987. else managedItems.Add(Marshal.PtrToStringAnsi(_nativeItems[i]));
  1988. }
  1989. return managedItems;
  1990. }
  1991. public void Dispose()
  1992. {
  1993. if (!_disposed)
  1994. {
  1995. for (var i = 0; i < _nativeItems.Count; i++)
  1996. if (_nativeItems[i] != IntPtr.Zero) Marshal.FreeHGlobal(_nativeItems[i]);
  1997. if (_nativeArray != IntPtr.Zero) Marshal.FreeHGlobal(_nativeArray);
  1998. _disposed = true;
  1999. }
  2000. }
  2001. ~ClikeStringArray()
  2002. {
  2003. Dispose();
  2004. }
  2005. }
  2006. #endregion
  2007. }