notepad++ Function List 插件

//z 2014-07-01 22:52:15 L.183' 4065 BG57IV3@BYH T3910145020.K.F47166144  [T3,L56,R2,V13]
notepad++ v6.6.7 配置可以存到云端了。 

//z 2014-06-25 09:40:31 L.189'51569 BG57IV3@XCL T2989181574.K.F1370514324[T17,L353,R22,V518] is2120

notepad++ v6.6.6 ,发现该版本新添加了两个view
Document Map 和 Function List (函数列表,变量)Function List 算是有了官方版本哈。
其中Function List 测试支持 c++ ,可以显示函数名称等 ,但是c和c#没反应。
Document Map 显示了文档的缩略图。

//z 2013-09-20 18:55:38 IS2120@BG57IV3 T1452062141.K.F3569790369[T2,L51,R1,V7]
0. 注:FunctionList 这个插件看代码的话会方便很多,但很久未更新了在NPP 5.9 之后使用问题多多(未证实)。我在6.x上使用是无法显示出对应的dialog的。
//z 2013-09-20 18:59:11 IS2120@BG57IV3 T2664333720.K.F3569790369[T3,L52,R1,V8]
0.1 改了一处代码,能显示对话框和函数列表了;但是切换文档无法更新函数列表。
0.2 大家还是不要企图使用这个插件了;作者不更新了,与新版本NOTEPAD++存在兼容性问题。而且是采用自己解析代码的方式来做的
(感觉这种方法相当地费力不讨好)。

1. 在 windows 7 上安装 FunctionList 插件 (Notepad++ , functionlist)
//z 2013-09-20 18:46:33 IS2120@BG57IV3 T4264964152.K.F3569790369[T1,L49,R1,V4]
I use Notepad++ daily for PHP Development. I love it, it’s simple and powerful at the same time.

One good feature is the plugins that are available. One of them is Functions List.

If you try to install that plugin on a Windows 7 Machine, it will not work ok. You have to do some extra steps (found here).

1. Download Function List Plugin
2. Copy the files: C++.flb, FunctionListRules.xml, Gmod Lua.bmp to: [DRIVE LETTER]:\Users\[YOUR USER NAME]\AppData\Roaming\Notepad++\plugins\config
3. Copy the file FunctionList.dll to your instaltion folder for example: [DRIVE LETTER]:\Program Files (x86)\Notepad++\plugins

Another good tutorial to enhance the capabilities of this plugin for php is found here:http://www.danielkassner.com/2010/01/22/using-notepads-function-list-plugin-for-php-development
https://github.com/gwarnants/FunctionList-PHP-Patch

1.1 安装说明
Function List是Notepad++诸多很酷的功能之一。但最新的版本需要额外的步骤来正确设置Function List。笔者就将介绍如何安装Function List,以及如何设置Function List。

首先,Function List插件并没有在Notepad++自带的插件清单里,也没有在Plugin Manager的Available List里 = =|||。所以要安装Function List,还得去Plugin_Central下载,笔者下载的最新版本是2.1.0.1。

将下载的压缩包解压后就有诸多的文件了,首先复制FunctionList.dll到<notepad++ install dir>/plugins目录,再把FunctionListRules.xml,Gmod Lua.bmp和C++.flb复制到<notepad++ install dir>/plugins/config,到这里安装部分就完成了。

2. php patch for functionlist

PHP parsing rules

    <Language name="PHP" imagelistpath="plugins\Config\php.bmp">
        <CommList param1="#" param2="" />
        <CommList param1="//" param2="" />
        <CommList param1="/\*" param2="\*/" />
        <Group name="INCLUDE" subgroup="" icon="2" child="2" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg='^\s*(include|require)(_once)?[\s&apos;&quot;\(]*' regexfunc="[\w./-]+" regexend='[&apos;&quot;\)\s]*;$' bodybegin="" bodyend="" sep="" />
            <Rules regexbeg="^\s*use\s+" regexfunc="[\w\\]+" regexend="[\w\s]*;$" bodybegin="" bodyend="" sep="" />
        </Group>
        <Group name="CLASS" subgroup="" icon="1" child="1" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="\{" keywords="">
            <Rules regexbeg="^\s*(abstract|final)?\s*class\s*" regexfunc="\w+" regexend="" bodybegin="\{" bodyend="\}" sep="" />
        </Group>
        <Group name="INTERFACE" subgroup="" icon="0" child="0" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="\{" keywords="">
            <Rules regexbeg="^\s*interface\s+" regexfunc="\w+" regexend="" bodybegin="\{" bodyend="\}" sep="" />
        </Group>
        <Group name="CONSTANT" subgroup="" icon="8" child="8" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*const\s+" regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
            <Rules regexbeg='^\s*define\s*[\(&apos;&quot;\)\s]+' regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PUBLIC VAR" subgroup="" icon="6" child="6" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public|var)\s+" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PUBLIC STATIC VAR" subgroup="" icon="7" child="7" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+)?static\s+(public\s+)?" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PROTECTED VAR" subgroup="" icon="4" child="4" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*protected\s+" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PROTECTED STATIC VAR" subgroup="" icon="5" child="5" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(protected\s+static|static\s+protected)\s+" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PRIVATE VAR" subgroup="" icon="9" child="9" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*private\s+" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="PRIVATE STATIC VAR" subgroup="" icon="10" child="10" autoexp="0" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(private\s+static|static\s+private)\s+" regexfunc="\$[\w_]+" regexend="" bodybegin="" bodyend="$" sep="" />
        </Group>
        <Group name="CONSTRUCTOR" subgroup="" icon="21" child="21" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+)?function\s+" regexfunc="[__construct]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PUBLIC METHOD/FUNCTION" subgroup="" icon="19" child="19" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+)?function\s+" regexfunc="(?&lt;!\b__construct)\b(?!(?:__construct)\b)[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PUBLIC STATIC METHOD" subgroup="" icon="20" child="20" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+)*static\s+(public\s+|final\s+)*function\s+" regexfunc='[&quot;\w_]+\s*\(.*\)' regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PUBLIC ABSTRACT METHOD" subgroup="" icon="23" child="23" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+|static\s+)*abstract\s+(static\s+|public\s+)*?function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*;" bodybegin="" bodyend="" sep=";" />
        </Group>
        <Group name="PUBLIC FINAL METHOD" subgroup="" icon="22" child="22" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(public\s+)?final\s+(public\s+|static\s+)*function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PROTECTED METHOD" subgroup="" icon="11" child="11" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*protected\s+function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PROTECTED STATIC METHOD" subgroup="" icon="12" child="12" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(static\s+(final\s+)?protected\s+(final\s+)?|protected\s+static\s+(final\s+)?)function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PROTECTED ABSTRACT METHOD" subgroup="" icon="13" child="13" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(static\s+)?(abstract\s+(static\s+)?protected|protected\s+(static\s+)?abstract)\s+(static\s+)?function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*;" bodybegin="" bodyend="" sep=";" />
        </Group>
        <Group name="PROTECTED FINAL METHOD" subgroup="" icon="14" child="14" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*((protected\s+final\s+(static\s+)?)|final\s+(static\s+)?protected\s+(static\s+)?)function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PRIVATE METHOD" subgroup="" icon="16" child="16" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(final\s+)?private\s+(final\s+)?function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
        <Group name="PRIVATE STATIC METHOD" subgroup="" icon="17" child="17" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*(static\s+(final\s+)?private\s+(final\s+)?|private\s+static\s+(final\s+)?)function\s+" regexfunc="[\w_]+\s*\(.*\)" regexend="\s*" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
    </Language>

CSS parsing rules

    <Language name="CSS" imagelistpath="plugins\Config\php.bmp">
        <CommList param1="/\*" param2="\*/" />
        <Group name="IMPORT" subgroup="" icon="2" child="2" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg='^\s*@import\s+[\w]*[\s\(&quot;]*\s*' regexfunc="[\w./-]+" regexend="[&quot;\)]+[\w\s,]*;$" bodybegin="" bodyend="" sep=";" />
        </Group>
        <Group name="SELECTOR" subgroup="" icon="19" child="19" autoexp="4" matchcase="0" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^\s*[\w.#\s:\[\]=~\*,\+&gt;-]+\s*" regexfunc="[\w.#\s:\[\]=~\*,\+&gt;-]*" regexend="" bodybegin="\{" bodyend="\}" sep=";" />
        </Group>
    </Language>

ChangeLog

  • v1.0 - 2012-04-24

    • new: public constructor recognition
    • fix: better class properties and methods recognition
    • fix: better static/final keywords support
    • fix: optimized icons file size
    • now using PCRE regular expressions (require Notepad++ 6.x)
  • v0.9.1 - 2012-04-17

    • new: added CSS language parsing rules
    • fix: fixed properties parsing rules since Notepad++ 6.x
    • fix: rewritten from default Function List configuration file
    • fix: some minor improvements
  • v0.9 - 2010-12-11

    • initial release

3. 一个更为详细的说明

如果只是小改程式,只開啟Notepad++編輯PHP似乎已經是我自己的習慣,但如果要修改稍微大一點的程式,使用Notepad++似乎就有點麻煩,因為沒有FunctionList可以參考,後來我就試著在網路上找到了「Using Notepad++’s Function List plugin for PHPdevelopment」這個解決方案,其實也很夠用了(其畫面如文章開頭圖片左邊),但後來又更深入的去搜尋,又找到了另外一個使用同樣方法,但修改的更好看的方式「Patch PHP5 pour le plugin FunctionList de Notepad++」,使用它的方法修改後,它的頁面會像是Eclipse編輯器裡面那樣的Function List,就如文章開頭圖片的中間的那畫面。

在這邊就從頭到尾再記錄一次安裝的過程:

1. 首先必須先下載function list這個Notepad++ Plugin,可以到以下這連結下載(http://sourceforge.net/projects/npp-plugins/files/Function%20List/ ),以目前最新版本為V2.1為例,下載時請選擇 FunctionList_2_1_UNI_dll.zip

2. 下載後,請務必要關閉您所有的Notepad++編輯器。

3. 解壓縮FunctionList_2_1_UNI_dll.zip,可以看到資料夾中有FunctionList.dllinstall.txt及一個Config資料夾。

4. 複製FunctionList.dll到您Notepad++的安裝目錄底下的「plugins」資料夾,以我目前本身使用Windows7為例,就是「C:Program Files (x86)Notepad++plugins

5. 開啟解壓縮後的Config資料夾,其底下有三個檔案,分別是C++.flbFunctionListRules.xmlGmod Lua.bmp

6. 複製C++.flbGmod Lua.bmpNotepad++的安裝目錄底下的「pluginsConfig」資料夾,以我的電腦為例,就是「C:Program Files(x86)Notepad++pluginsConfig

7. 接著請下載「http://www.geoffray.be/blog/php/patch-php5-pour-npp-function-list」網頁中最底下的「Patch PHP 5 pour Function List 2.1

8. 下載後同樣的解壓縮該檔案,在資料夾中,會有兩個檔案,分別是FunctionListRules.xml以及php.bmp

9. 複製php.bmpNotepad++的安裝目錄底下的「pluginsConfig」資料夾,以我的電腦為例,就是「C:Program Files(x86)Notepad++pluginsConfig

10. 接著,請務必在檢查一次是否Notepad++已經確定關閉,確定後,然後點鍵盤按鍵「視窗鍵+R」再輸入「%APPDATA%/Notepad++/plugins/config」,會開啟一個資料夾,然後請複製「Patch PHP 5 pour Function List 2.1」資料夾中的「FunctionListRules.xml」到此資料夾中,如此即可完成Function List的設定。

11. 開啟你要編輯的php檔就可以看到FunctionList了,如果沒有,請到「外掛模組->Function List->List」開啟。


//z 2013-09-20 18:55:38 IS2120@BG57IV3 T1452062141.K.F3569790369[T2,L51,R1,V7]
4. 其他一些插件

notepad++ 是一款很优秀的轻量级编辑器,为大多数程序员所喜爱。那我来让你的notepad++用起来更加爽。

notepad++有丰富的插件,我比较喜欢以下4个,light explorer ,quicktext ,functionlist和zen coding。

大部分插件可以在这里找到:http://sourceforge.net/projects/npp-plugins/files/

light explorer可作为项目管理工具使用。

light explorer可直接显示系统树状目录结构。

quicktext是一个代码段管理插件,能让你快速输入常用内容。

quicktext的配置文件是quicktext.ini,可以用google搜索,找一个比较好的来用。

functionlist 是一个函数列表插件,可以快速查找当前文档内的函数,浏览代码很方便。

这里有篇介绍http://blog.theroyweb.com/function-list-plugin-on-notepad-53 ,说的比较详细。

functionlist的安装着实让我郁闷了一把,我用的是最新的2.1版,把插件下载放到plugin 目录后,一直提示”no rule defined”,且函数列表为空。看起来是配置文件加载错误,可明明按照文档来的嘛~最后还是在此处找到了答案,原来配置文件需要放到%appdata%/notepad++/plugin目录下,放到安装文件所在的目录行啊是不行滴~希望这点经验能对遇到此问题的朋友所有帮助。

zen coding,这个东东还真不好描述,需要体验下的。

5. Function List 简介和版本信息。
Function list offers a list of functions (or sections) according of the language of current document, in order to access to the function or section you need quickly.

The supported languages are : C, C++, Resource File, Java, Assembler, MS INI File, HTML, Javascript, PHP, ASP, Pascal, Python, Perl, Objective C, LUA, Fortran, NSIS, VHDL, SQL, VB and BATCH.

Version 2.1 ( Unicode )
Function List
Unreleased version 2.1.0.1 fixing a major crash
Function List
Version 2.0α ( ANSI )
Function List
5.1 changelog


Change-log for FunctionList.dll


------------------------------------------------------------------------------------
10/02/17  v2.1 :
------------------------------------------------------------------------------------
    Released by Kyle Fleming (Garthex)
     - Fixed external lexers issue
     - Added vc2008 sln file
     - Added Gmod Lua rules


------------------------------------------------------------------------------------
09/11/09  v2.0-200911109 :
------------------------------------------------------------------------------------
    Released by dv__
     - 2 small patches reported by cepoctb
     - .asm rules updated by ilme
     - .awk rules by dv__
     - .ahk rules by boskop


------------------------------------------------------------------------------------
09/10/15  v2.0-20091015 :
------------------------------------------------------------------------------------
    Released by dv__
     - ported to VC2005 (C++ STL compatibility improved)
     - file-name buffers sizes increased to 2*MAX_PATH (may be needed in "\\.\...")
     - one buffer overflow & several out-of-range index references defeated


------------------------------------------------------------------------------------
09/05/23  v2.0 Beta :
------------------------------------------------------------------------------------
    Restructure of FunctionList with new development parts:
     - UNICODE version for latest Notepad++
     - Now tree with classes supported and still lists
     - Icon for each group could be a subgroup defined
     - To ignore language specific keywords a list could be defined for each group
     - Filter of items possible
     - Better tooltip support of e.g. C/C++ function params
     - ... and a lot more
     
     Restrictions:
     - Scintilla RegEx


------------------------------------------------------------------------------------
07/03/13  v1.2 :
------------------------------------------------------------------------------------
Fix: Resource leak removed
Fix: Thread parsing freezed when user switched fast between documents
Fix: Flickering/Dancing on list update
Fix: C++ constructor now detects correctly
New: Better detection of function when body in curly brackets


------------------------------------------------------------------------------------
07/03/01  v1.2 Beta 1 :
------------------------------------------------------------------------------------
Fix: Crashing on ENTER when "Feature not supported"
Fix: All dialogs now use standard font
Fix: Java-Script function recognition "funcname: function()"
Fix: PHP detects also functions with a predefined param "-" and "."
Fix: C# don't recognise blocks as function anymore "[AttributeDefinition(1)]"
Fix: NSIS detects function-, section- and subsection-names with quotes
New: Lowercase sorting on "Sort Alphabetically"
New: Parsing in seperate threads (Notepad isn't blocked during parsing)


------------------------------------------------------------------------------------
07/02/04  v1.1 :
------------------------------------------------------------------------------------
Fix the bug of wrong toolbar stat while closing Function List dialog by X button
Fix C++ "operator[]" recognition 
Fix Pascal method recognition 
Add TCL support 

------------------------------------------------------------------------------------
07/01/07  v1.0 :
------------------------------------------------------------------------------------
Add docking functionality
Add toolbar for handy using
Change the function stack
Language changes (can't remember which one)

6. SourceCookifier
//z 2013-09-20 19:12:22 IS2120@BG57IV3 T2851360464.K.F3569790369[T4,L53,R1,V9]
A plugin which uses Exuberant Ctags to parse either only the currently activated source file or multiple files of so-called sessions. The results are shown and can be browsed in a treeview inside of a dockable window. (.NET 2.0 is required)

A cross breed between Exuberant CTags and FunctionList so as to allow a hierarchical overview of a single source file or a set of them. Supports interactive drag and drop of source files into sessions (unrelated to Notepad++'s). Requires .NET framework 2.0 or higher.

Author: UFO-Pu55y
Homepage: http://sourceforge.net/projects/sourcecookifier/
Latest update: 0.7.3
 -fix: unicode functionality broken in N++
0.7.2
 -fix: CTags: regex handling is broken for some languages (PHP,..)
0.7.1
 -new: option "Go to definition by pressing ctrl + left mousebutton"
 -new: option "Max. number of symbols to show" (It's recommended to limitate the count of
 symbols which are shown as nodes in the treeview, in order to prevent a hanging N++
 when for instance source files with several thousand symbols are analyzed.
 When in cookie session mode, then such files are automatically loaded into the
 INCLUDES folder. In the other modes the symbols of such files aren't loaded at all.)
 -new: option "Show plus minus controls (for source nodes)"
 -fix: CTags: lots of fixes in the CParser (C, C++, C#, Java,..)
 -fix: allow loading of session files created by older versions
 -fix: in N++ session mode: file nodes vanishing when moving a file from one N++ view to another
0.7
 -IMPORTANT: the plugin will be C#-only from now on, thus no more use of C++ loader/wrapper DLLs.
 advantage: much faster startup time. disadvantage: no more warning message about
 missing .NET runtime (unknown plugin loading error instead).
 -IMPORTANT: sorry, but again .c00k!e session files of previous versions are invalid for this new version!
 -new: CTags: update sources (fixes for C and OCaml + support for Objective-C)
 -new: CTags: add support for CSS (ctags patch by Iago Rubio)
 -new: CTags: add support for INFORMIX 4GL (ctags extension by Tim Kim)
 -new: add regex rules for Autohotkey (AHK) (thanks to vixay)
 -new: "Import" and "Export" settings of one or more languages (in language settings dialog)
 -new: treenode contextmenu items: "Collapse all", "Expand all"
 -new: new option "Size limit of analyzed INCLUDES"
 -new: new option "Session file extension" (default = "c00k!e")
 -new: new option "Use relative paths in session file"
 -new: new option "Handle CTags warnings as errors" (helpful when trying out new regex entries)
 -new: new option "Show plus minus controls" for treeview
 -new: show tooltips in options dialog
 -new: buttons "Select All" and "Select None" in import dialog (after drag&drop of multiple extension types)
 -new: provide auto restore of corrupted language settings file
 -new: support message+filepath from other plugins in order to add files to a session
 -fix: CTags: PythonParser: wrong parent nesting in PythonParser
 -fix: CTags: PythonParser: enable function arguments
 -fix: CTags: C#Parser: fully disable local variables tag to avoid false tags
 -fix: context menu not shown when tag type node is selected (in grouped view)
 -fix: in Cookie session mode: unexpected N++ behavior when SourceCookifier panel titel is longer than 32 chars
 -fix: in N++ session mode: sourcelist doesn't get updated when treeview is invisible
 -fix: when plugin's startup mode is 'hide', then the plugin might show up only after 2nd try
 -fix: exceptions/deadlocks when switching view mode, sorting, etc. with multiple source nodes in treeview
 -fix: wrong node nesting in class view mode
 -fix: when searching (search textbox) in class view mode, then not all nodes are expanded
 -fix: characters ' ' (space) and '!' are not allowed in regex expressions
 -fix: exception on "Go To Definition" when using "Includes" files
 -fix: exception when opening contextmenu on 'unsupported source type' nodes

Read Me

INSTALLATION:
-------------
    -place these files and folders into Notepad++'s "plugins" folder
    -BUT (!!!) if you installed N++ with "Don't use %APPDATA%" UNCHECKED,
     then place the "Config" folder into "%APPDATA%\Notepad++\plugins" instead!
    -check out the help text ("Help & About")
    -enjoy

CHANGES:
-------------
    0.7.3
       -fix: unicode functionality broken in N++
    0.7.2
       -fix: CTags: regex handling is broken for some languages (PHP,..)
    0.7.1
       -new: option "Go to definition by pressing ctrl + left mousebutton"
       -new: option "Max. number of symbols to show" (It's recommended to limit the count of
              symbols which are shown as nodes in the treeview, in order to prevent a hanging N++
              when for instance source files with several thousand symbols are analyzed.
              When in cookie session mode, then such files are automatically loaded into the
              INCLUDES folder. In the other modes the symbols of such files aren't loaded at all.)
       -new: option "Show plus minus controls (for source nodes)"
       -fix: CTags: lots of fixes in the CParser (C, C++, C#, Java,..)
       -fix: allow loading of session files created by older versions
       -fix: in N++ session mode: file nodes vanishing when moving a file from one N++ view to another
    0.7
       -IMPORTANT: the plugin will be C#-only from now on, thus no more use of C++ loader/wrapper DLLs.
                   advantage: much faster startup time. disadvantage: no more warning message about
                   missing .NET runtime (unknown plugin loading error instead).
       -IMPORTANT: sorry, but again .c00k!e session files of previous versions are invalid for this new version!
       -new: CTags: update sources (fixes for C and OCaml + support for Objective-C)
       -new: CTags: add support for CSS (ctags patch by Iago Rubio)
       -new: CTags: add support for INFORMIX 4GL (ctags extension by Tim Kim)
       -new: add regex rules for Autohotkey (AHK) (thanks to vixay)
       -new: "Import" and "Export" settings of one or more languages (in language settings dialog)
       -new: treenode contextmenu items: "Collapse all", "Expand all"
       -new: new option "Size limit of analyzed INCLUDES"
       -new: new option "Session file extension" (default = "c00k!e")
       -new: new option "Use relative paths in session file"
       -new: new option "Handle CTags warnings as errors" (helpful when trying out new regex entries)
       -new: new option "Show plus minus controls (for tag nodes)"
       -new: show tooltips in options dialog
       -new: buttons "Select All" and "Select None" in import dialog (after drag&drop of multiple extension types)
       -new: provide auto restore of corrupted language settings file
       -new: support message+filepath from other plugins in order to add files to a session
       -fix: CTags: PythonParser: wrong parent nesting in PythonParser
       -fix: CTags: PythonParser: enable function arguments
       -fix: CTags: C#Parser: fully disable local variables tag to avoid false tags
       -fix: context menu not shown when tag type node is selected (in grouped view)
       -fix: in Cookie session mode: unexpected N++ behavior when SourceCookifier panel titel is longer than 32 chars
       -fix: in N++ session mode: sourcelist doesn't get updated when treeview is invisible
       -fix: when plugin's startup mode is 'hide', then the plugin might show up only after 2nd try
       -fix: exceptions/deadlocks when switching view mode, sorting, etc. with multiple source nodes in treeview
       -fix: wrong node nesting in class view mode
       -fix: when searching (search textbox) in class view mode, then not all nodes are expanded
       -fix: characters ' ' (space) and '!' are not allowed in regex expressions
       -fix: exception on "Go To Definition" when using "Includes" files
       -fix: exception when opening contextmenu on 'unsupported source type' nodes
    0.6.1
       -new: CTRL+C copies currently selected treeview item (tag name) to clipboard
       -fix: parsing of source files with UTF-16 format and windows-like EOL (CR + LF)
       -fix: prevent CTags from unintentionally finding config files in the PATH and using them
             (may lead to unexpected behavior)
       -fix: exceptions when adding/changing source node files when both the treeview contains
             'invalid' source nodes and the search filter is in use
       -fix: editor didn't get focused when mouse middle button clicking on treeview items
       -changed: removed option "Use 'tags' file instead of StandardOut" - now always reading from tags file.
             Using StandardOut was even slower anyway due to CTags always writing into a temp tags file.
             Also the location of the tags file changed to the plugins config folder.
    0.6
       -IMPORTANT: sorry, but .c00k!e session files of previous versions might be invalid for this new version !
       -new: CLASS VIEW (single file scope) for object oriented languages.
             (Multiple file scoped view is still in progress, but it might never get finished, since it seems
             undoable at the moment)
       -new: [display] return type of functions
             (as new extended field type. merged from ctags mods of Anjuta DevStudio sources.
             at the moment only works for C-like languages (C/C++/C#/Java) out of the box)
       -new: [settings] "Semantics: Case sensitive" -> now you can define a language as case insensitive
             to make the "Go To Definition" work correctly for languages like BASIC
       -new: [settings/display] "Semantics: Scope operator" -> now you can define the separating char(s)
             in scope names for each language ('::' for C++, '.' for C#, ...)
       -new: [settings/contextmenu] "Display (extended)" -> define for each language if to directly
             show also extended fields (Access/Returntype/Scope/Signature) in node text
       -new: [button] "Clear search filter"
       -new: [options] filesize limit (e.g. 200kb or 5mb)
       -new: [options] show toolbar menu at bottom
       -new: [options] flowing menu buttons (no hidden overflow)
       -new: [options] Startup show mode (force show/hide of sourcecookifier at startup of notepad++)
       -new: [options] Startup session mode
       -new: don't search at once when typing search word in uppercase (start search with 'enter')
       -new: highlight 'Accept changes' buttons in settings dialog (how many times did I forget myself to hit 'em!)
       -new: additionally show session mode via background color of toolbar
       -new: remember selections in language settings dialog on close
       -new: customization of REXX rules (as noticed on deltaos.de)
       -new: asm rules extended for FASM syntax
       -new: open source nodes with middle mouse button click
       -new: toolstripseparator for contextmenu (current file|others)
       -fix: also save changed options when sourcecookifier window wasn't visible (initialized)
       -fix: don't move treeview selection (twice) after doubleclick/return on any node
       -fix: merged recent updates from original ctags sources
       -fix: continue following cursor by treeview selection also when using search filter
       -fix: don't restore+hide hidden sourcecookfier window when using 'Go To Definition' shortcut
       -fix: watch N++'s 'Save as' actions in 'single file' and 'N++ session' mode (change/add filenames in treeview)
       -fix: don't re-add currently search filtered (hidden) source nodes when saved in n++ editor
       -changed: don't clear search filter when tags get updated
       -changed: improved PHP class method rules (access + signature)
       -changed: rule for .INI (added .REG)
       -changed: resorted toolbar layout
    0.5.4
       -new: 2 batch files for adding/removing a .NET policy for the plugin on the current machine -
             this policy is required when starting N++ on a network location and using sourcecookifier!
       -new: enable (in CTAGS) 'Mac OS 9' form for source code parser (EOL = CR)
       -fix: bring import dialog to top
       -fix: crash when tab window is initialized in 'N++ session mode'
       -fix: sources in treeview don't get added/removed when tab window is in 'N++ session mode' but hidden
       -changed: disable treeview ui while importing sources (speedup)
       -changed: scope-name-delimiter now '.' instead of '::'
       -changed: show invalid sources by default
    0.5.3
       -new: show session mode/name in toolbar caption 
       -fix: 1252 as default encoding for streams and stdout (since v0.5 SourceCookifier didn't work
             at all for people using non-western-european region/language on their machine!) 
       -fix: show error in node tooltip when ctags.exe returns error (while not using tags file) 
       -fix: remove/move in context menu for invalid source nodes 
       -fix: save error/path info of invalid source nodes (in .c00k!e files)
    0.5.2
       -new: PHP appearance customization (thanks to Thériault)
       -new: session button icon overlays
       -new: always turn to cookie session mode on drag&drop file(s)
       -fix: supress error message box on invalid source
       -fix: show invalid sources in red letters
       -fix: include invalid sources on multi file import
       -fix: show invalid sources in INCLUDE files too
       -fix: char '|' in input regex expressions or results caused exceptions
       -fix: 'unquiet' exceptions in tag parsing
       -fix: correct source tag color and tooltip, when source turns from valid to invalid and vice versa
       -fix: "Show invalid sources": show them in import dialog, else not
       -fix: extensions with dots in between not recognized (like ANT's ".build.xml")
       -fix: hide invalid source nodes when searching
       -fix: space char in front of tag signature instead of after signature
       -import dialog: auto enlarge window when importing many different file types
       -import dialog: better sorting of file types (all valid ones at top)
    0.5.1
       -fix: N++ deadlocks while using sourcecookifier window in floating state (not docked)
       -fix: when switching between file buffers with windowmanager plugin, tags weren't
        refreshed in Single-File-Mode, when the treeview was hidden (by windowmanager plugin again)
       -fix: write error log files into plugins config folder instead of sourcecookifier folder;
        might have failed due to missing admin rights in previous versions; also into one and
        the same file (appending) now instead of 1 file per error
    0.5
       -native loader for plugin wrapper: .NET runtime doesn't get loaded until you start
        using the plug-in, so that N++ usually starts like a rocket again
       -messagebox to notify about missing .NET runtime, when you try to use the plug-in
        without installed .NET 2.0
       -progress bar inside of treeview (when adding/refreshing multiple sources/includefiles)
       -new treeview context menu items in cookie session mode:
        "Remove", "Move to INCLUDES", "Move to SOURCES"
       -history of used cookie session files (in 'Session' contextmenu)
       -Java & Javascript appearance customization
       -tagtype icons not loaded redundant anymore
       -gotodefinition contextmenu: fullpath in menu or tooltip (options)
       -gotodefinition contextmenu: fix order of activated doc items (at top)
       -track include file in treeview when activating different buffer
       -fix: treeview not filled after npp startup in n++ session mode
       -fix: remove INCLUDES folder if 0 items left after removing
       -fix: add/remove in sources<>includes after drag&drop
       -fix: TAB char issues (ctags.exe patch)
       -fix: N++'s shortcuts not working (dropdownmenu issue)
       -fix: quicktags encoding
    0.4
       -"Go To Definition" functionality:
        contextmenu popup if more than one match (tooltip shows full path)
       -"Navigate Backward" and "Navigate Forward" functionality
       -"Track caret" properties for each language in treeview context menu:
        customizable caret tracking behavior (current caret position gets highlighted in treeview)
       -3 session modes: "Single file mode", "N++ session mode", "Cookie session mode"
       -always open cookie session if .c00k!e-file opened in notepad++
       -special "INCLUDES" folder (node) in treeview (in cookie session mode):
        drop files with modifier key (ctrl, alt or shift)
       -refresh source node on file_save now for all session modes
       -Regular expressions (settings dialog): "Input", "Output", "Case sensitive",
        special fields in regex output ("access:", "signature:"), dynamic delimiter
       -exception log files written into 'SourceCookifier' folder
    0.3
       -new custom languages: RC and INI
       -support for custom languages
       -'Try' button in settings dialog
    0.2
       -context menu for flatview button: Keep types grouped
       -unfocus tab control if ESC key 2 times pressed
       -'Bascal' icons
       -new config setting: Show ToolTips
       -changed toggling behavior: focus treeview if visible and not focused - hide if visible and focused
       -'Basic' icons and settings

KNOWN ISSUES:
-------------
    -GDI glitches:    sometimes the treeview doesn't get correctly redrawn (refreshed)
    -N++ shortcuts:   when the sourcecookifier toolbar does NOT use flowing buttons,
                      then all of N++'s shortcuts suddenly don't work anymore as soon
                      as you move the mouse pointer from its overflow menu (>>) directly
                      back into the sourcecookifier toolbar. you can restore the
                      functionality of all shortcuts simply by opening the overflow menu
                      again and this time pressing a button or leaving the menu somewhere
                      else (not directly into the toolbar)... weird bug and out of my
                      grasp!!!
    -Floating window: When the windows is not docked to a border but in floating state, then
                      do NOT change the focus from the SourceCookifier search textbox
                      directly back to the N++ editor window. N++ will deadlock at once!
                      Better don't use SourceCookifier in floating state at the moment.
                      For some reason sub windows don't receive WM_KILLFOCUS messages and
                      alike when loosing focus to a 'native' window above.

将工程源码顶层目录拖入SourceCookifier工具栏窗口。
此时打开工程中的任意文件,将光标移至函数名:

  • 按Ctrl+Shift+Enter即可转至函数定义处
  • 按Alt+Right即向前定位
  • 按Alt+Left即向后定位

若操作期间无法转至函数定义处,就得好好看看你所添加的工程目录中是否含有中文字符,SourceCookifier无法识别中文路径,至少在【SourceCookifier V0.7.3.0】版本无法识别。

http://sourceforge.net/projects/sourcecookifier/
git clone git://git.code.sf.net/p/sourcecookifier/git sourcecookifier-git
svn checkout http://svn.code.sf.net/p/sourcecookifier/svn/ sourcecookifier-svn

posted @ 2013-09-20 18:56  BiG5  阅读(1783)  评论(0编辑  收藏  举报