Последняя версия : 5.5.1

 

Перевод на русский язык сделан
Михаилом Куринным aka Viewizard

Плагиты (дополнительные модули) КакСделать

Как установить плагин

Плагин (в виде 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

    wParam
    lParam
    0
    0

    Возвращает значение общего количества файлов открытых в 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.