-
-
Notifications
You must be signed in to change notification settings - Fork 654
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VS Code is no longer as sluggish when arrowing up and down through large files #17051
Conversation
… in VS code, and is not correctly implemented in Chromium anyway.
WalkthroughThe changes introduce enhancements to NVDA's integration with Visual Studio Code, focusing on improving performance during navigation in large files. A new class structure is implemented to optimize text handling, specifically addressing sluggishness when using arrow keys in focus mode. The modifications ensure existing features remain functional while providing a more responsive experience for users. Changes
Assessment against linked issues
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add Documentation and Community
|
… yet implement what we need, and it is costly for no gain. (#17067) More broadly fixes #17039 Summary of the issue: In PR #16745, code was added to detect the caret at end of lines in Mozilla-compatible edit areas, so as to not report the next line when on the final insertion point of the line before. Although this works great in Firefox and other Gecko-based apps, it does not work at all in Chromium due to Chromium not correctly implementing IAccessibleText::textAtOffset with IA2_OFFSET_CARET. More importantly, this is a very costly check in VS code, which has a noticeable performance hit when arrowing up and down large files (issue #17039), for no gain. PR #17051 successfully fixed the performance hit in VS code by disabling caret at end of line detection just for VS Code. But it was pointed out that there are several VS Code variants including VS Code.dev which require this also. Description of user facing changes NVDA is no longer as sluggish when arrowing up and down large fles in VS code and otherChromium-based applications. Description of development approach Remoe the VSCodeditor and VSCodeEditorTextInfo classes from the VS ode appModule introduced in pr VS Code is no longer as sluggish when arrowing up and down through large files #17051. Add Editor and EditorTextInfo classes to NVDAObjects.IAccessible.chromium which are used in Chromium where ever NVDAObject.IAccessible.ia2Web.Editor is used. These classes disable caret at end of line detection for any chromium edit area.
Link to issue number:
Fixes #17039
Summary of the issue:
With the introduction of pr #16745 which added better reporting of the caret at when at the end of a line, VS Code became quite slow when arrowing up and down through particular large files.
IAccessibleText::textAtOffset
withIA2_OFFSET_CARET
is very costly in VS Code, and Chromium does not actually implement this correctly yet anyway.Description of user facing changes
NVDA is less sluggish when arrowing up and down through large files in VS Code.
Description of development approach
VS code appModule: provide a new
VsCodeEditorTextInfo
which disables end-of-line caret detection by returning False in_IsCaretAtEndOfLine
.Testing strategy:
Opened source/NVDAObjects/IAccessible/init.py in VS Code, and moved to line 1491, and arrowed down several line. Confirmed that the sluggishness was gone.
Known issues with pull request:
None known.
Code Review Checklist:
Summary by CodeRabbit
New Features
Bug Fixes