super-search
一个模块化、可扩展的 VS Code 插件样板,适合演进为大型复杂插件。
功能
- 示例命令:
Hello World (super-search.helloWorld )。
- 超级搜索(插件化架构):
- 结果树视图展示匹配结果
- 侧栏展示当前查询与激活的过滤器
- Webview 输入框支持回车触发搜索、输入即实时搜索
- 通过“搜索提供者 + 过滤器提供者”实现可扩展能力
开发
- 架构说明见
ARCHITECTURE.md 与下文“架构概览”。
- 构建:
npm run compile ,调试:按 F5。
热更新(开发)
- 启动:按 F5 选择“Run Extension”。已配置预启动任务
npm: watch ,后台使用 tsc -watch 增量编译至 out/ 。
- 修改并保存:自动增量编译,无需手动构建。
- 应用改动(热更新):在扩展开发主机窗口运行命令“Developer: Restart Extension Host”或“Developer: Reload Window”即可快速生效(无需停止调试)。
- 可选优化:为“Developer: Restart Extension Host”绑定快捷键,进一步减少操作。
配置
- 后续将在
super-search 命名空间下提供配置项。
架构概览(插件化)
UI Layer
├─ ResultsTreeProvider (仅视图)
├─ QueryListProvider (仅视图)
└─ SearchInputWebviewProvider (输入)
Core
├─ PluginManager (插件注册/发现)
└─ SearchCoordinator (状态、编排、事件)
Plugins
├─ Search Providers: TextSearchProvider (默认)
└─ Filter Providers: include-path, exclude-path, include-ext, exclude-ext, exclude-term
- 扩展点接口定义:
ISearchProvider , IFilterProvider (见 src/features/superSearch/core/types.ts )
- 注册插件:在
src/features/superSearch/index.ts 中通过 PluginManager 注册
- 统一编排:
SearchCoordinator 根据查询选择搜索提供者并串联过滤器
使用说明
- 打开命令:
Super Search: Search (或使用顶部输入框)
- 输入任意查询词进行全文搜索
- 过滤:
- 路径包含:
path:src 或 /src
- 路径排除:
-path:dist 或 -/dist
- 扩展名包含:
.ts,.vue 或 ext:ts,vue
- 扩展名排除:
-.d.ts 或 -ext:d.ts
- 内容排除:
-password 或 -"secret key"
- 清空:
Super Search: Clear
二次开发(如何新增插件)
- 新建文件,实现接口:
- 搜索插件:实现
ISearchProvider ,形如 MySearchProvider
- 过滤插件:实现
IFilterProvider ,形如 MyFilterProvider
- 在
index.ts 中注册:
pluginManager.registerSearchProvider(new MySearchProvider());
pluginManager.registerFilterProvider(new MyFilterProvider());
- 协调器会自动按
canHandle/parse 的结果选择插件并执行
迁移说明(与旧版差异)
- 移除:
narrow/* 、engine/textSearch.ts 、旧的查询/过滤命令与模型
- 视图不再持有业务状态,全部由
SearchCoordinator 统一管理
- 未来建议在
SearchState 中引入 history 以支持查询历史展示
| |