README-ja.md 7.44 KB
Newer Older
dokutoku's avatar
dokutoku committed
1
[![pipeline status](https://gitlab.com/dokutoku/npp-api/badges/master/pipeline.svg)](https://gitlab.com/dokutoku/npp-api/commits/master)
dokutoku's avatar
dokutoku committed
2 3 4 5 6 7
# NPP API
NPP APIはD言語製のNotepad++のプラグイン開発ライブラリです。

このライブラリは**プログラミング初心者**が製作した**開発版**です。
**破壊的変更****次々に加えられる**可能性があることに注意してください。

dokutoku's avatar
dokutoku committed
8
この文章の原文は[日本語](https://gitlab.com/dokutoku/npp-api/blob/master/README-ja.md)で書かれています。
dokutoku's avatar
dokutoku committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

## 特徴
### 定義の自動生成
このライブラリは以下の項目の処理を自動的に生成することができます。

- Notepad++のプラグインに必要な関数群
- メインメニュー
- サブメニュー
- 設定ファイルの生成
- 設定ファイルの読み取り
- 設定ファイルの書き込み
- メインメニュのチェック

あなたはプラグインの定義を書いて、mixinするだけです。

### BetterC対応
BetterCに対応できることは非常に重要です。
BetterCを利用することでC言語と同等の実行速度を実現することができます。

### メッセージのラッパー関数
Notepad++やScintillaにメッセージを渡す関数を導入しました。これは以下のような点で有利です。

- SendMessageAかSendMessageWかを気にしなくてもよくなる
- SendMessageに渡すパラメータの場所について考えなくてよくなる

## サンプルフォルダの内容
### betterC_test
BetterCのコンパイルテスト

### converter
[converter](https://github.com/npp-plugins/converter)プラグイン

### plugindemo
[plugindemo](https://github.com/npp-plugins/plugindemo)プラグイン

### func_test
このライブラリの関数テスト

### hello
hello worldプラグインサンプル

### mimetools
[mimetools](https://github.com/npp-plugins/mimetools)プラグイン

## Notepad++プラグインを公開する方法
Notepad++のプラグインを公開するには、[nppPluginList](https://github.com/notepad-plus-plus/nppPluginList)に登録する必要があります。
[nppPluginList](https://github.com/notepad-plus-plus/nppPluginList)プラグインはNotepad++本体に付属されているプラグインマネージャーです。
これに登録することで、あなたは利用者にプラグインをダウンロードさせることができます。

#### resファイルを作成する
まずはプラグインのDLLに著作権情報を付与しなければなりません。

プラグインの著作権情報を付与するには、著作権情報を記述した.rcファイルを用意します。
rcファイルの文字エンコーディングはUTF-16にすることを推奨します。

.rcファイルをコンパイルして、できた.resファイルをビルド時に指定します。
rcファイルをコンパイルするコマンドは以下のようになります。

```
rc /n test.rc
```

### ビルドする
プラグインを[DUB](https://code.dlang.org/)でビルドします。
32bit版と64bit版を作成します。

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

### zipファイルを作成する
dokutoku's avatar
dokutoku committed
81
生成されたプラグインファイルを**フォルダに入れないで直接**zipファイルに圧縮します。
dokutoku's avatar
dokutoku committed
82 83 84 85 86 87 88
zipファイルは32bitと64bitを別々にする必要があります。

圧縮したらzipファイル名を**プラグインのdllの名前と同じ名前**にします。

### SHA-256ファイルハッシュを作成する
作成したそれぞれのzipファイルのSHA-256ファイルハッシュを作成します。

dokutoku's avatar
dokutoku committed
89 90
### JSONファイルを作成する
プラグインの情報を記述したJSONファイルを作成します。
dokutoku's avatar
dokutoku committed
91 92 93 94 95 96 97 98 99 100
[nppPluginList](https://github.com/notepad-plus-plus/nppPluginList)のレポジトリからJSONファイルをダウンロードします。
JSONファイルの役割は以下のようになっています。

- [pl.x86.json](https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x86.json)(32bit)
- [pl.x64.json](https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x64.json)(64bit)

JSONファイルをダウンロードしたらあなたのプラグインの情報を追記します。

| 項目 | 説明 |
| --- | --- |
dokutoku's avatar
dokutoku committed
101
| folder-name | Notepad++のpluginフォルダ以下に作成するフォルダの名前。**プラグインのdllの名前と同じである必要があります。他のプラグインのfolder-nameと重複してもいけません。** |
dokutoku's avatar
dokutoku committed
102 103 104 105 106 107 108 109
| display-name | プラグインの名前 |
| version | プラグインのバージョン |
| id | zipファイルのSHA-256ハッシュ |
| repository | プラグインのバージョンに対応したダウンロードURI |
| description | プラグインの概要 |
| author | プラグイン作成者 |
| homepage | プラグインのホームページ |

dokutoku's avatar
dokutoku committed
110 111 112 113
### テストする
JSONファイルを作成したらデバッグ用のNotepad++でテストします。
デバッグ用のファイルをダウンロードします。

dokutoku's avatar
dokutoku committed
114 115 116 117
- [Notepad++.exe 32bit debug](https://notepad-plus-plus.org/assets/pluginListTestTools/npp.debug.x32.zip)
- [Notepad++.exe 64bit debug](https://notepad-plus-plus.org/assets/pluginListTestTools/npp.debug.x64.zip)
- [wingup 32bit](https://notepad-plus-plus.org/assets/pluginListTestTools/wingup.release.x64.zip)
- [wingup 64bit](https://notepad-plus-plus.org/assets/pluginListTestTools/wingup.release.x64.zip)
dokutoku's avatar
dokutoku committed
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

ダウンロードしたファイルと生成したJSONファイルをNotepad++のフォルダに配置します。

| 名前 | 配置する場所 | 操作 |
| --- | --- | --- |
| notepad++.exe | Notepad++をインストールしたフォルダ | notepad++.exeをデバッグ用のnotepad++.exeに置き換える。 |
| GUP.exe | updaterフォルダ | GUP.exeをデバッグ用のGUP.exeに置き換える。 |
| nppPluginList.json | plugins/configフォルダ | pl.x64.jsonかpl.x86.jsonをnppPluginList.jsonへとリネームする。 |

配置したらNotepad++を起動してJSONファイルが正しいかどうかをチェックします。
「プラグイン」→「プラグイン管理」からあなたのプラグインが追加されているかどうかを見てみましょう。

### プルリクエストを送る
JSONファイルに問題がないことが確認できたら、[nppPluginList](https://github.com/notepad-plus-plus/nppPluginList)にプルリクエストを送ります。
リクエストが承認されるのを待ちましょう。

dokutoku's avatar
dokutoku committed
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
## 寄付
このプロジェクトでは開発継続のための寄付を募っています。
詳細は以下のサイトを参考にしてください。

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

## プロジェクトのステータス
私は非常に多くの時間を[NPP API](https://gitlab.com/dokutoku/npp-api)[RDMD for Notepadd++](https://gitlab.com/dokutoku/rdmd-for-npp)の開発に費やしました。そして自分が欲しかった機能を実装することができました。

なので寄付がなければこのまま開発を停止する予定です。

## プラグイン製作の参考になりそうなサイト
- [Plugin Development](https://web.archive.org/web/20190717193010/http://docs.notepad-plus-plus.org/index.php?title=Plugin_Development)
- [Plugin Development | Notepad++ Community](https://community.notepad-plus-plus.org/category/5/plugin-development)
- [Introduction | Notepad++ User Manual](https://npp-user-manual.org)