要件
メモ帳的に使っているNotepad++ に、サクラエディタやCotEditor にあるようなアウトライン機能を付けたい。
調査
タグや関数をリスト表示してくれる、Function List というものをカスタマイズすれば
マークダウン形式のテキスト(.md) で見出しなどをリスト表示することができそう。
実際、ここでそれらしいことを実現している人がいる。
問題
上のURLに記載されているコードをコピペしてFunction List 用XMLを作成しても機能してくれない。。
UDL
Notepad++ にはUDL(User Defined Language) というものが備わっている。
これを使うとNotepad++で扱う言語をカスタマイズできる。
そして、それぞれの言語にはNotepad++での名前が付けられる。
いま、マークダウン形式のファイル.mdをNotepad++で開いてみると、
Language タブから、このファイルがNotepad++上ではMarkdown (preinstalled dark mode)
という名前の言語として扱われていることがわかる。
(余談:このときにすぐ上のMarkdown (preinstalled)
を選択すると、Notepad++がダークモードからライトモードへ切り替わってしまった。)
解決策
上記URLのソースコードを以下のように変更する。
<?xml version="1.0" encoding="UTF-8" ?>
------------ (省略) ---------------
<!-- ==================== User Defined Languages ============================ -->
<association id= "markdown.xml" userDefinedLangName="Markdown (preinstalled dark mode)"/>
<association id= "krl.xml" userDefinedLangName="KRL"/>
<association id= "sinumerik.xml" userDefinedLangName="Sinumerik"/>
<association id= "universe_basic.xml" userDefinedLangName="UniVerse BASIC"/>
<!-- ======================================================================== -->
</associationMap>
</functionList>
</NotepadPlus>
※markdown.xml
ファイルはNotepad++ v8.4 にはデフォルトで存在しなかったので、以下の内容で新規に作成しています。
<?xml version="1.0" encoding="UTF-8"?>
<!-- ==========================================================================\
|
| To learn how to make your own language parser, please check the following
| link:
| https://npp-user-manual.org/docs/function-list/
|
\=========================================================================== -->
<NotepadPlus>
<functionList>
<parser displayName="Markdown (preinstalled dark mode)"
id="Markdown (preinstalled dark mode)"
commentExpr="">
<function mainExpr="(?x-s)(^[#]+\s*(.*?)$|^(.*)(?=[\r\n]+^([-=])\4{2,}\s*$))"/>
</parser>
</functionList>
</NotepadPlus>
ポイントはdisplayName の値を、上記で確認した言語の名前 Markdown (preinstalled dark mode)
に変えていること。
これらをインストール先ディレクトリのC:\Program Files\Notepad++\functionList
に保存。
Notepad++を再起動。
解決
View > Function List
で.mdファイルの関数リストを表示すると、H1とH2が目次のようにリスト表示されていることがわかる。
これがやりたかったんや。
要するに
メモ帳はWinキー+Rで「notepad」と入力すると開けるけど、Notepad++はメモ帳より全然くろうと向けなんですね!
あとこの記事UDLの名前を持ち出しておいて、問題解決にUDLの機能が絡んでないあたり全然ロジカルじゃなくて反省しています。