Skip to content

dokutoku/npp-api

Repository files navigation

pipeline status

NPP API

NPP API is a D language Notepad++ plugin development library.

This library is a development version created by a novice programming. Note that destructive changes can be added in sequence.

The original text of this document is written in Japanese.

Characteristic

Automatic definition generation

This library can automatically generate processing for the following items:

  • Functions required for Notepad++ plugin
  • Main menu
  • Sub menu
  • Generate configuration file
  • Read configuration file
  • Write configuration file
  • Check main menu

You just write the plugin definition and mixin it.

BetterC support

Being able to support BetterC is very important. By using BetterC, you can achieve the same execution speed as C language.

Message wrapper function

Introduced functions to pass messages to Notepad++ and Scintilla. This is advantageous in the following points.

  • Don't worry about SendMessageA or SendMessageW
  • No need to think about the location of parameters passed to SendMessage

Contents of sample folder

betterC_test

BetterC compilation test

converter

converter Plugin

plugindemo

plugindemo Plugin

func_test

Function test for this library

hello

hello world plugin sample

mimetools

mimetools Plugin

How to publish Notepad++ plugin

To publish Notepad++ plugins, you need to register in nppPluginList. nppPluginList plugin is a plugin manager that comes with Notepad++. By registering with this, you can let the user download the plugin.

Create res file

First, copyright information must be assigned to the plugin DLL.

To assign copyright information for the plugin, prepare an .rc file that describes the copyright information. It is recommended that the character encoding of the rc file be UTF-16.

Compile the .rc file and specify the resulting .res file at build time. The command to compile the rc file is as follows.

rc / n test.rc

Build

Build the plugin with DUB. Create 32-bit and 64-bit versions.

dub build --arch = x86 --build = release
dub build --arch = x86_64 --build = release

Create a zip file

Compress the generated plugin file directly into a zip file without putting it in the directory. The zip file must be 32bit and 64bit separately.

After compression, change the zip file name to the same name as the plugin dll.

Create a SHA-256 file hash

Create a SHA-256 file hash of each created zip file.

Create a JSON file

Create a JSON file that describes the plugin information. Download the JSON file from the nppPluginList repository. The role of the JSON file is as follows.

After downloading the JSON file, add your plugin information.

Item Description
folder-name Name of the folder to be created under the Notepad++ plugin folder. Must be the same as the plugin dll name.Do not duplicate the folder-name of other plugins.
display-name Name of the plugin
version plugin version
id SHA-256 hash of the zip file
repository Download URI corresponding to plugin version
description plugin overview
author plugin author
homepage Plugin homepage

Testing

After creating the JSON file, test it with Notepad++ for debugging. Download the debug file.

Place the downloaded file and the generated JSON file in the Notepad++ folder.

Name Where to place Operation
notepad++.exe Notepad++ folder Replace notepad++.exe with notepad++.exe for debugging.
GUP.exe updater folder Replace GUP.exe with GUP.exe for debugging.
nppPluginList.json plugins/config folder Rename pl.x64.json or pl.x86.json to nppPluginList.json.

Once placed, launch Notepad++ and check if the JSON file is correct. Let's see if your plugin has been added from "Plugins" → "Plugin Admin".

Send a pull request

After confirming that there is no problem with the JSON file, send a pull request to nppPluginList. Wait for the request to be approved.

Donation

The project is soliciting donations to continue development. Please refer to the following site for details.

https://dokutoku.gitlab.io/donation/donation-en.html

Project status

I spend a lot of time NPP API and RDMD for Notepadd++ Spent on development. And I was able to implement the functions I wanted.

So if there is no donation, we will stop development.

Sites that may be helpful for plugin production