Function Listでは、編集中のファイルに含まれる関数などの一覧を確認できます。そして関数名などをクリックすると、それが定義されている箇所へジャンプできます。
対象のファイルによってはリストの作成がいつまでも完了せず、Notepad++をクラッシュさせることがあります。タイトルバーの進捗表示が100%にならずに中途で停止するようならば、早急にこのプラグインを閉じます。
このプラグインはPlugin Managerからはインストールできないため、手動でインストールする必要があります。
Notepad++ 6.4.1以降、標準でFunction Listというプラグインが同梱されていますが、それはここで紹介するプラグインとは異なるものです。Notepad++ Notepad++ 6.4.1 released
Notepad++ Plugins - Browse /Function List at SourceForge.net
ダウンロードするのは最新バージョンのdllです。たとえばv2.1が最新だとすると、FunctionList Plugin v2.1 at SourceForge.netの[FunctionList_2_1_UNI_dll.zip]がそれになります。
ダウンロードしたら、圧縮ファイルを展開します。
プラグインには3つのファイルが含まれますが、FunctionList.dllはアプリケーションのpluginsフォルダ、FunctionListRules.xmlとC++.flbはplugins/Configフォルダに配置します。
ファイル | フォルダ | 内容 |
---|---|---|
FunctionList.dll | plugins | プラグイン本体 |
FunctionListRules.xml※1 | plugins/Config | 関数などをパースするための規則の定義 |
C++.flb | アイコンを格納したビットマップファイル |
FunctionListRules.xmlを正しく配置しないと、「No Rule Defined」となり関数などを解析できません。
メニューの【プラグイン → Function List → Language Parsing Rules】で、関数などのリストを作成する条件を設定できます。
このウィンドウ右下にある[Help]をクリックすると、使用方法が表示されます。ただひどく読みづらいため、ここに転載します。
Help for Function List Parsing Rules
- Match case:
This should be set, if the language is case sensetive. This is a global setting.
- Keyword forwarding:
- Function end to body begin:
Here you could define keywords which are prelude a new body begin keyword, but this is not the body begin. You could define more than one keyword by the '|' operator. For understanding see in example.- Body begin to body end:
Same as before, but between body begin and end.- Comment Rules:
Here you could define single and multiline "operators". If you set only the first entry, single line comment is selected. you could define more than one rule.
- Section Rules:
Define here the rules to find the section names in your script/language.
The next example explains this simplest
,--- Function begin = '[ \t]*function[ \t]+' | | Function List Name = '[a-zA-Z0-9_]+' | | | | Function end = '\([a-zA-Z0-9_, \t]+\)' | | | \ / \ / \ / ' ' ' function name_of_functionXY ( param1, param2 ) begin <-- begins a body - Body begin = '\<begin\>' ... for (i < 3) than <-- 'for' is a keyword that preludes an end ... end while (i) than <-- 'while' is a keyword that preludes an end ... end end <-- ends a body - Body end = '\<end\>'For the example above the field 'Body begin to body end' could be set to
'\<for\>|\<while\>'
.- Seperator between:
This is a "special" feature. With this setting you could make a difference between a function declaration and a function e.g.:
void functionName (param1, param2); void functionName (param1, param2) { ... }You should set it to ';'. Therefore, the function will not appear in the list.
Help - Function List
可能ならば、前述の[Language Parsing Rules]ウィンドウ上で編集します。しかし編集時に強制終了することがあるため、規則の定義ファイルであるFunctionListRules.xmlを直接編集すべきです。
ただしその場合にはNotepad++を閉じた状態で、Notepad++以外のエディタで編集します。これはNotepad++は終了時に、その時点の設定で定義ファイルを上書きするためです。
たとえばJavaは、
<Language name="Java" imagelistpath=""> <CommList param1="//" param2="" /> <CommList param1="/\*" param2="\*/" /> <CommList param1='\"' param2='\"' /> <Group name="FUNCTION" subgroup="" icon="0" child="0" autoexp="0" matchcase="1" fendtobbeg="" bbegtobend="\{" keywords=""> <Rules regexbeg="\<" regexfunc="~*[\w_]+" regexend="\s*\(\w\s_\.<>\[\],]*\)" bodybegin="\{" bodyend="\}" sep="" /> </Group> </Language>
のように定義されています。
言語の定義は、<Language>のname属性が大文字/小文字を区別して正確に記述されていないと、その言語として認識されません。
規則の定義に正規表現の誤りなどがあると、その言語の定義は適用されません。
[Language Parsing Rules]ウィンドウで編集した場合、[Ok]や[Try!]をクリックしても変更が反映されないことがあります。そのときにはNotepad++自体を再起動します。