Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --Setting to stop at the bottom (or top) when navigating in the diff view through the changes with "next change" and reaching the last change. Like did in
Can I provide a PR for this feature
Go ahead.
Thanks a lot for implementing this. But what is the setting to enable this?
Looks like this behavior got to the "" setting
No, does not affect this unfortunately.

Discussion:
followsCaret?: boolean; ignoreCharChanges?: boolean; alwaysRevealFirst?: boolean; <ins> findResultLoop?: boolean; </ins> } const defaultOptions: Options = { followsCaret: true, ignoreCharChanges: true, <del> alwaysRevealFirst: true </del> <ins> alwaysRevealFirst: true, findResultLoop: true </ins> }; export interface IDiffNavigator {

} next(scrollType: ScrollType = ScrollType.Smooth): void { <ins> if (!this.canNavigateNext()) { return; } </ins> this._move(true, scrollType); } previous(scrollType: ScrollType = ScrollType.Smooth): void { <ins> if (!this.canNavigatePrevious()) { return; } </ins> this._move(false, scrollType); } <ins> canNavigateNext(): boolean { return this.canNavigateLoop() || this.nextIdx < this.ranges.length - 1; } canNavigatePrevious(): boolean { return this.canNavigateLoop() || this.nextIdx !== 0; } canNavigateLoop(): boolean { return Boolean(this._options.findResultLoop); } </ins> override dispose(): void { super.dispose(); this.ranges = [];

*/ globalFindClipboard?: boolean; /** <del> * Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found </del> <ins> * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found </ins> */ loop?: boolean; }

autoFindInSelection?: 'never' | 'always' | 'multiline'; addExtraSpaceOnTop?: boolean; /** <del> * Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found </del> <ins> * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found </ins> */ loop?: boolean; }

import { deepClone } from 'vs/base/common/objects'; import { isObject, assertIsDefined, withUndefinedAsNull, withNullAsUndefined } from 'vs/base/common/types'; import { ICodeEditor, IDiffEditor } from 'vs/editor/browser/editorBrowser'; <del> import { IDiffEditorOptions, IEditorOptions as ICodeEditorOptions } from 'vs/editor/common/config/editorOptions'; </del> <ins> import { IDiffEditorOptions, EditorOption, IEditorOptions as ICodeEditorOptions } from 'vs/editor/common/config/editorOptions'; </ins> import { AbstractTextEditor, IEditorConfiguration } from 'vs/workbench/browser/parts/editor/textEditor'; import { TEXT_DIFF_EDITOR_ID, IEditorFactoryRegistry, EditorExtensions, ITextDiffEditorPane, IEditorOpenContext, EditorInputCapabilities, isEditorInput, isTextEditorViewState } from 'vs/workbench/common/editor'; import { EditorInput } from 'vs/workbench/common/editor/editorInput';

// Diff navigator this.diffNavigator = new DiffNavigator(control, { <del> alwaysRevealFirst: !optionsGotApplied && !hasPreviousViewState // only reveal first change if we had no options or viewstate </del> <ins> alwaysRevealFirst: !optionsGotApplied && !hasPreviousViewState, // only reveal first change if we had no options or viewstate findResultLoop: this.getMainControl()?.getOption(EditorOption.find).loop </ins> }); this.diffNavigatorDisposables.add(this.diffNavigator);