function list插件需彻底退出notepad++并重启才能加载,且须手动设置语言、扩展名及正则规则;它仅通过正则匹配顶层函数定义行,非ast解析,不可用于代码统计或复杂分析。

Function List 插件必须重启才加载
装完 Function List 后按 Ctrl+Shift+T 面板空白?不是插件坏了,是 Notepad++ v8.x 起强制要求安装后**彻底退出再重启**。只关闭窗口、最小化到托盘都不算“退出”,得在任务管理器里确认没有 notepad++.exe 进程残留。
重启后还要手动触发一次:打开一个真实代码文件(比如 index.js),再点 Plugins → Function List → Function List。如果右下角状态栏显示 Normal text,右键该文件 → Language → JavaScript,否则插件根本不启动。
扩展名不支持 .ts/.vue/.sh 就得手动配
Function List 默认只认 .py、.cpp、.js 等常见后缀,对 .ts、.vue、.sh 直接无视——它不会自动推断语言,也不会 fallback 到通用规则。
必须进 Plugins → Function List → Configuration,勾选对应扩展名,并确认右侧语法文件存在(比如 javascript.xml 或 typescript.xml)。若列表里没你要的扩展,就点 Add 手动填,格式是 ts;vue;sh(分号分隔,无空格)。
函数识别失败基本都是正则惹的祸
它不解析 AST,只靠正则从文本里硬捞函数定义行。所以:
-
def my_func(能匹配,但def my_func((多个空格)可能失败——默认 Python 规则是def\s+([a-zA-Z0-9_]+),不处理连续空白 - Bash 里
connect() {默认不识别,得改FunctionList.xml,把mainExpr改成(?i)^[\t ]*([a-zA-Z0-9_]+)\(\)[\t ]*\{ - 函数名含中文或 Emoji(如
def 你好():或const add_✅ = () => {}),必须用 v3.2+ 版本,旧版直接跳过整行 - 定义前有注释或空行?正则锚定
^失效,改成^[ \t]*def或^[ \t]*function
别把 Function List 当代码统计工具用
它统计的是「被正则匹配到的函数定义行数」,不是真实函数数量。一个 if 块里写两行 def?它全算;宏展开后的函数?它看不到;嵌套函数或箭头函数体内的函数声明?它不递归扫描。
如果你要算总行数、空行、注释行,用 TextFX → TextFX Tools → Count lines(老版本)或第三方脚本;要分析圈复杂度或调用关系,得换 IDE 或专用静态分析工具。Function List 的唯一职责,就是快速定位当前文件里的顶层函数入口——把它当目录用,别当编译器用。











