vscode 在当前主分支的本地构建中,markdown预览面板中的搜索功能无法正常工作,

yiytaume  于 4个月前  发布在  Vscode
关注(0)|答案(1)|浏览(53)

这个问题是否在禁用所有扩展时发生?:是
类型:错误
我最近在本地使用以下配置构建了vscode,最后一次提交是61b242c

Version: 1.92.0
Commit: Unknown
Date: Unknown
Electron: 30.1.2
ElectronBuildId: undefined
Chromium: 124.0.6367.243
Node.js: 20.14.0
V8: 12.4.254.20-electron.0
OS: Darwin arm64 23.5.0

我发现markdown预览的搜索功能无法正常工作。这似乎是一个最近引入的问题,因为当我尝试在稳定版本中执行搜索操作时,我可以在整个markdown预览中进行搜索。
重现问题的步骤:

  1. 预览一个Markdown文件
  2. 在markdown文件中搜索任何关键字。
  3. 您将看到它不会显示结果。
    这个错误可能会在下一个版本中被推送,并可能导致即将发布的稳定版本出现问题。
    PFA:该问题的POC视频。
    vscode_find_issue.mp4
    如果@mjbvz在这里能提供一些帮助就太好了。
goqiplq2

goqiplq21#

在尝试在调试过程中搜索Markdown预览时,代码确实会触发 WebViewMainService.findInFrame() :
vscode/src/vs/platform/webview/electron-main/webviewMainService.ts
第50行到第59行 in 709c3d7
| | publicasyncfindInFrame(windowId: WebviewWindowId,frameName: string,text: string,options: {findNext?: boolean;forward?: boolean}): Promise{ |
| | constinitialFrame=this.getFrameByName(windowId,frameName); |
| | |
| | typeWebFrameMainWithFindSupport=WebFrameMain&{ |
| | findInFrame?(text: string,findOptions: FindInFrameOptions): void; |
| | on(event: 'found-in-frame',listener: Function): WebFrameMain; |
| | removeListener(event: 'found-in-frame',listener: Function): WebFrameMain; |
| | }; |
| | constframe=initialFrameasunknownasWebFrameMainWithFindSupport; |
| | if(typeofframe.findInFrame==='function'){ |
然而, frame.findInFrameundefined ,所以它跳过了函数的其余部分 - 这似乎是为什么它不起作用的原因。
现在,根据这个问题 #201176 ,微软为VS Code发布使用了一个 自定义构建 的electron(来自 https://github.com/microsoft/vscode-electron-prebuilt ,该版本不对外公开),具有一个 WebFrameMain.FindInFrame() 实现,因此搜索可以正常工作。
意图似乎是将更改逐渐上游到主要的electron仓库,但不幸的是,关于 FindInFrame 内容的PR目前已关闭: electron/electron#28274
也许如果我们能够将那个PR合并到一个更新的electron本地构建中,那么我们就可以将其与我们的vscode一起用于调试? 🤔

相关问题