ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Oni2 变更日志深度解读:搜索忽略规则、editorLangId 上下文键与窗口布局移动

Oni2 变更日志深度解读:搜索忽略规则、editorLangId 上下文键与窗口布局移动 开发工具代码编辑器桌面应用【免费下载链接】oni2Native, lightweight modal code editor项目地址https://gitcode.com/gh_mirrors/on/oni2点击查看免费下载本文基于开源仓库 oni2一个基于 ReasonML / Revery 构建的原生、轻量级模态代码编辑器的 CHANGES_CURRENT.md 展开逐条解读该版本待发布变更搜索如何尊重.gitignore、新增editorLangId上下文键、窗口布局移动的实现原理以及 SCM 与补全解析等 Bug 修复背后的源码依据。读完本文你将掌握这些变更的配置用法、实现链路与仓库内的可验证证据位置。概览本版本变更清单CHANGES_CURRENT.md 是 oni2 的当前版本待发布变更日志按Features、Bug Fixes、Performance、Documentation、Dependencies、Refactoring、Infrastructure七个维度组织。本版本的核心内容如下分类条目关联 IssueFeatures搜索新增search.useIgnoreFiles配置项#3795修复 #3792Features输入层新增editorLangId上下文键#3794关联 #3783Bug FixesSCM 修复 Git: Checkout to 命令#3791修复 #2525Bug Fixes补全项解析增强容错性#3800修复 #3787Bug Fixes布局实现窗口移动shift操作#3798修复 #3777Documentation澄清 license key bounty 指南#3801Documentation补充#与ControlL命令文档感谢 dingfanATyykj#3826Dependenciesvscode-exthost 升级到 1.58.2#3831InfrastructureCI 复用 esy 安装步骤、修复 CentOS Docker 与 macOS 构建#3829 / #3832 / #3834下面按类别深入解读每一项变更的配置用法与底层实现。Features搜索尊重.gitignore新配置项search.useIgnoreFiles本版本为搜索功能新增了配置项search.useIgnoreFilesPR #3795修复 #3792用于控制搜索时是否遵循.gitignore等忽略文件规则。该配置的定义位于 src/Feature/Configuration/GlobalConfiguration.re 的Search模块module Search { let followSymlinks setting(search.followSymlinks, bool, ~defaulttrue); let useIgnoreFiles setting(search.useIgnoreFiles, bool, ~defaulttrue); };配置项类型为bool默认值为true即默认行为是尊重忽略文件——搜索时跳过.gitignore所列的文件。其注册声明位于同一文件的contributions列表GlobalConfiguration.re因此它与其他配置一样既可以在配置文件如configuration.json中静态设置也可以被扩展动态修改。底层实现Ripgrep 参数映射配置的生效链路贯穿Feature_Search→RipgrepSubscription→Service_Ripgrep→Core.Ripgrep。核心逻辑在 src/Core/Ripgrep.relet ignoreArgs useIgnoreFiles ? [] : [--no-ignore];即当search.useIgnoreFiles为false时Oni2 会向底层 ripgrep 进程追加--no-ignore参数从而取消对.gitignore以及全局 gitignore 文件的遵循为true默认时不追加任何参数由 ripgrep 按默认行为读取忽略文件。同样的逻辑也应用于findInFiles全局搜索路径src/Core/Ripgrep.re最终拼装出的完整参数还包括--smart-case、--hidden、--files以及由files.exclude映射出的-g !xxx排除 globsrc/Core/Ripgrep.re。参数从配置到 ripgrep 的传递链路如下可作为代码追踪路径src/Feature/Search/Feature_Search.re搜索功能读取Search.useIgnoreFiles并传入订阅src/Store/RipgrepSubscription.re订阅层把useIgnoreFiles透传给服务层src/Service/Ripgrep/Service_Ripgrep.re服务层转发给Core.Ripgrep使用示例在 oni2 的配置文件中添加{ search.useIgnoreFiles: false }即可让搜索包括 Quick Open 的文件查找与在文件中查找不再受.gitignore约束转而搜索仓库中被忽略的文件。需要说明的是files.exclude默认排除_esy、.git、node_modules见 GlobalConfiguration.re与search.useIgnoreFiles是两个独立机制前者通过-g !glob 显式排除后者控制是否读取忽略文件两者可同时生效。Features新增editorLangId上下文键定义与实现PR #3794 为输入/键绑定系统新增了editorLangId上下文键context key其实现位于 src/Feature/Editor/Editor.remodule ContextKeys { open WhenExpr.ContextKeys.Schema; let editorLangId string(editorLangId, ({buffer, _}) { EditorBuffer.fileType(buffer) | Oni_Core.Buffer.FileType.toString }); };editorLangId是一个字符串类型的上下文键其值取自当前编辑器缓冲区buffer的fileType——即当前活动编辑器的语言标识符与状态栏中显示的语言 ID 一致。它通过WhenExpr.ContextKeys.Schema注册进编辑器的 when 表达式上下文供键绑定与扩展的when子句判断。配置用法按语言定制键绑定这是该上下文键最主要的应用场景——让键绑定只在特定语言下生效。官方文档 docs/docs/configuration/key-bindings.md 给出了示例{ keybindings: { when: editorFocus editorLangId typescript } }editorLangId可以与其他上下文键如editorFocus、insertMode、normalMode自由组合。在仓库自带的扩展中也能看到它的实际使用例如 extensions/typescript-language-features/package.json 中大量菜单/命令的when条件使用editorLangId typescript、editorLangId typescriptreact、editorLangId javascript等来判断是否显示 TypeScript/JavaScript 相关操作extensions/markdown-language-features/package.json 则使用editorLangId markdown来限定 Markdown 预览与文档操作。这些第三方扩展菜单的when条件正是依赖 Oni2 提供的该上下文键才能在运行时正确求值。Bug FixesSCM 修复 Git: Checkout to 命令PR #3791 修复了 Git: Checkout to 命令对应 issue #2525。该命令来自内置 Git 扩展其命令定义位于 extensions/git/package.nls.jsoncommand.checkout: Checkout to..., command.checkoutDetached: Checkout to (Detached)...,以及相关的配置项config.checkoutType控制Checkout to...列出哪些类型的 git ref见 extensions/git/package.nls.json。从变更日志看此修复属于 SCM源代码管理集成层面的行为修正目的在于确保 Checkout to... 分支切换操作在 Oni2 的 SCM 视图中按预期工作。Bug Fixes补全项解析容错性增强PR #3800 增强了补全项completion item解析的容错能力修复 #3787。补全请求与解析发生在扩展宿主Exthost与语言支持模块之间相关请求定义位于 src/Exthost/Request.re包括provideCompletionItems$provideCompletionItems方法向语言服务器请求补全列表resolveCompletionItem$resolveCompletionItem方法解析单个补全项的详细信息releaseCompletionItems$releaseCompletionItems方法释放不再需要的补全缓存这些请求的接口签名定义在 src/Exthost/Exthost.rei。该修复的目标是当语言服务器返回的补全项数据存在异常例如字段缺失或类型不符时Oni2 不再因单个条目解析失败而导致整个补全列表崩溃而是跳过或降级处理异常条目保证补全弹窗依然可用。测试端可见于 test/Exthost/LanguageFeaturesTest.re 的 gets completion items 用例。补全弹窗的使用方式为插入模式下键入时自动弹出Controln/Down选择下一项Controlp/Up选择上一项见 docs/docs/using-onivim/language-features.md。Bug Fixes布局实现窗口移动window shiftPR #3798 为布局Layout系统实现了窗口移动window shift movement能力修复 #3777即用户可以把某个编辑器窗口/分组的空间权重向左侧或右侧相邻窗口转移。核心算法位于 src/Feature/Layout/Layout.reshiftWeightFromLeft将权重从nodes[index]左侧的节点转移给nodes[index]即向右挤空间shiftWeightFromRight将权重从nodes[index]右侧的节点转移给nodes[index]即向左挤空间两个函数都接受~delta移动的权重增量与index目标节点索引并在移动过程中扣除被消耗一侧的权重防止权重溢出。该模块还内嵌了let%test_module shiftWeightFromLeft/shiftWeightFromRight测试模块Layout.re对正向增量、负向增量、超界增量如delta4.等边界情况做了断言验证最终在 Layout.re 中被布局更新逻辑调用实现窗口间尺寸的实时重分配。布局系统的相关配置项见 docs/docs/configuration/settings.md包括workbench.editor.showTabsbool默认true是否显示编辑器标签页oni.layout.showLayoutTabsalways | smart | never默认smart布局标签页显示策略smart仅在多于一个分组时显示oni.layout.layoutTabPositiontop | bottom默认bottom布局标签页位置oni.layout.singleTabModebool默认false为true时每个分组只容纳单个编辑器关闭编辑器即关闭分组窗口移动功能正是建立在这套分组/权重模型之上属于对分组布局交互能力的补充。Documentation、Dependencies 与 Infrastructure文档更新#3801澄清了关于 license key bounty许可证密钥赏金的指南边界属于贡献者规则层面的说明性更新。#3826文档补充了#与ControlL两个命令的说明。#用于在搜索/命令场景中过滤ControlL则是快速打开Quick Open等场景中的常用快捷键与 docs/docs/configuration/key-bindings.md 的命令表如CommandP / ControlP打开 Quick Open、CommandShiftP / ControlShiftP打开命令面板见 key-bindings.md相互印证。依赖升级#3831将 vscode-exthost 升级到 1.58.2。vscode-exthost 是 Oni2 用来与 VS Code 扩展通信的扩展宿主组件其版本决定了所支持的扩展 API 子集。此次升级意味着扩展宿主同步了上游 1.58.2 版本的修复与 API 行为为扩展生态提供更接近 VS Code 的兼容层。CI 基础设施#3829CI 中为 hygiene 检查代码规范/卫生检查复用已有的 esy 安装步骤减少重复下载与构建时间。#3832修复 CentOS Docker 构建避免在 CentOS 基础镜像上构建失败。#3834修复 macOS 构建。这三项都属于构建流水线的稳定性修复不改变运行时行为但对多平台发布流程Linux 镜像与 macOS 产物有直接价值。小结本版本变更集中在三个方向搜索对忽略文件的尊重search.useIgnoreFiles通过 ripgrep--no-ignore参数实现、键绑定系统按语言分流editorLangId上下文键、以及布局系统窗口移动能力shiftWeightFromLeft/shiftWeightFromRight权重转移算法。此外还包括 SCM Checkout 命令与补全解析的容错修复、exthost 升级到 1.58.2 以及多项 CI 构建修复。配置项证据src/Feature/Configuration/GlobalConfiguration.reripgrep 参数映射证据src/Core/Ripgrep.re上下文键实现证据src/Feature/Editor/Editor.re布局移动算法证据src/Feature/Layout/Layout.re文档佐证docs/docs/configuration/settings.md、docs/docs/configuration/key-bindings.md赞分享开发工具代码编辑器桌面应用【免费下载链接】oni2Native, lightweight modal code editor项目地址https://gitcode.com/gh_mirrors/on/oni2点击查看免费下载相关推荐Backstage v1.1.0 变更日志深度解读权限系统重构、搜索调度机制改造与认证 API 迁移指南Backstage v1.1.0 变更日志深度解读权限系统重构、搜索调度机制改造与认证 API 迁移指南 本篇文章基于当前仓库 docs/releases/v开发者门户后端前端Litestar 3.0 变更日志深度解读ASGIMiddleware 迁移、依赖瘦身与中断性变更迁移指南Litestar 3.0 变更日志深度解读ASGIMiddleware 迁移、依赖瘦身与中断性变更迁移指南 本文以 Litestar 仓库 3.0.0 变更日后端Web框架Vitess v24.0.0 发布详解窗口函数下推、Binlog 流式传输、结构化日志与关键破坏性变更Vitess v24.0.0 发布详解窗口函数下推、Binlog 流式传输、结构化日志与关键破坏性变更 Vitess v24.0.0 是数据库集群系统 Vit数据库分布式数据库云原生后端数据存储创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表