Плагиты (дополнительные модули) КакСделать
Как установить плагин
Плагин (в виде DLL файла) должен быть помещен в Notepad++\plugins директорию. Как только вы установили таким образом плагин, вы увидите его в меню “Plugins” (Плагины) где сможете его настроить и использовать.
Как сделать плагин
Чтобы избежать перегрузки, используется Windows Message System. Это значит, что система плагинов дает доступ в Notepad++ каждому плагину по очереди для большей гибкости и увеличения возможностей в плагиностроении. Сейчас существуют 3 вида доступных нэндлов (handles) окон: основное окно Notepad++ и 2 Scintilla окон.
С помощью этих трех хэндлов, вы можете сделать все что угодно, просто отсылайте необходимые сообщения на правильный хэндл окна.
Есть 2 демонстрационных плагина, чтобы показать разработку более детально :
Заметьте, что в сборке для Dev-C++ & Code::Blocks версии (сделанной Chris Severance) поддерживается IDE/Compiler в обоих вариантах, и для C, и для C++ :
- Dev-C++ / GCC (MingW)
- Code::Blocks / GCC (MingW)
- Code::Blocks / MSVC++
- Code::Blocks / Digital Mars
- Code::Blocks / Borland C++ 5.5
- Code::Blocks / Open Watcom
Интерфейс (файлы заголовки .h) плагина написан на чистом C, для обоих вариантов C и C++. Тем не менее, если вы переведете разработке этих проектов в другой язык программирования, дайте мне знать. Я включу поддержку разработки плагинов на этом языке.
Notepad++ сообщения :
- WM_GETCURRENTSCINTILLA
wParam |
lParam |
0 |
[out] int * currentEdit |
currentEdit показывает текущее окно Scintilla : 0 это основное окно Scintilla 1 это вспомогательное (второе) окно Scintilla.
- WM_GETCURRENTLANGTYPE
wParam |
lParam |
0 |
[out] int * langType |
langType показывает тип языка документа в текущем окне Scintilla : обратите внимание на enum LangType в "PluginInterface.h" для получения возможных значений.
- WM_SETCURRENTLANGTYPE
wParam |
lParam |
0 |
[in] int langTypeToSet |
langTypeToSet используется для установки языка документа в текущем окне Scintilla : обратите внимание на enum LangType in "PluginInterface.h" для получения возможных значений.
- WM_GET_FULLCURRENTPATH
wParam |
lParam |
0 |
[out] char * fullPath |
fullPath содержит полный путь к текущему документу в окне Scintilla. Пользователь должен самостоятельно выделять память для буфера. Рекомендую использовать MAX_PATH.
- WM_GET_CURRENTDIRECTORY
wParam |
lParam |
0 |
[out] char * directoryPath |
directoryPath содержит директорию текущего документа в окне Scintilla. Пользователь должен самостоятельно выделять память для буфера. Рекомендую использовать MAX_PATH.
- WM_GET_FILENAME
wParam |
lParam |
0 |
[out] char * fileName |
fileName содержит имя файла текущего документа в окне Scintilla. Пользователь должен самостоятельно выделять память для буфера. Рекомендую использовать MAX_PATH.
- WM_NBOPENFILES
Возвращает значение общего количества файлов открытых в Notepad++.
- WM_GETOPENFILENAMES
wParam |
lParam |
[in] int nbFile |
[out] char ** fileNames |
- nbFile это размер вашего fileNames списка. Вам следует получать это значение используя WM_NBOPENFILES сообщение, затем выделить блок памяти для fileNames, используя это значение.
- fileNames содержит полные пути для всех открытых в Notepad++ файлов. Пользователь должен выделить достаточно памяти для fileNames.
- Возвращает количество удачно скопированных полных путей в массив fileNames.
- WM_DOOPEN
wParam |
lParam |
0 |
[in] char * fullPathName2Open |
- fullPathName2Open показывает полный путь к файлу, который нужно открыть.
- Возвращает TRUE (1) если операция успешно завершена, иначе FALSE (0).
Scintilla сообщения :
По данной ссылке вы можете найти документацию по всем сообщениям Scintilla.
|