Select matched text when a file is opened from a full project search result (#23139)

GitOrigin-RevId: bd3b66e89b70c4fa1d77e401d9e5fa755876ce9f
This commit is contained in:
Alf Eaton
2025-01-28 09:27:41 +00:00
committed by Copybot
parent 8ed4199245
commit 9e040d6946
4 changed files with 10 additions and 5 deletions

View File

@@ -246,7 +246,8 @@ export const EditorManagerProvider: FC = ({ children }) => {
goToLineEmitter(
options.gotoLine,
options.gotoColumn ?? 0,
options.syncToPdf ?? false
options.syncToPdf ?? false,
options.selectionLength
)
},
[goToLineEmitter]

View File

@@ -1,5 +1,6 @@
export interface GotoLineOptions {
gotoLine: number
gotoColumn?: number
selectionLength?: number
syncToPdf?: boolean
}

View File

@@ -134,14 +134,17 @@ const dispatchSelectionAndScroll = (
export const setCursorLineAndScroll = (
view: EditorView,
lineNumber: number,
columnNumber = 0
columnNumber = 0,
selectionLength?: number
) => {
// TODO: map the position through any changes since the previous compile?
let selectionRange
try {
const pos = findValidPosition(view.state.doc, lineNumber, columnNumber)
selectionRange = EditorSelection.cursor(pos)
selectionRange = selectionLength
? EditorSelection.range(pos, pos + selectionLength)
: EditorSelection.cursor(pos)
} catch (error) {
// ignore invalid cursor position
debugConsole.debug('invalid cursor position', error)

View File

@@ -468,8 +468,8 @@ function useCodeMirrorScope(view: EditorView) {
const emitSyncToPdf = useScopeEventEmitter('cursor:editor:syncToPdf')
const handleGoToLine = useCallback(
(event, lineNumber, columnNumber, syncToPdf) => {
setCursorLineAndScroll(view, lineNumber, columnNumber)
(event, lineNumber, columnNumber, syncToPdf, selectionLength) => {
setCursorLineAndScroll(view, lineNumber, columnNumber, selectionLength)
if (syncToPdf) {
emitSyncToPdf()
}