diff --git a/lib/fuzzy-finder-view.js b/lib/fuzzy-finder-view.js index 4b844a7c..8b326a1c 100644 --- a/lib/fuzzy-finder-view.js +++ b/lib/fuzzy-finder-view.js @@ -273,12 +273,27 @@ class FuzzyFinderView { } } - setItems (items) { + async setItems (items, keepSelection = false) { this.items = items if (this.isQueryALineJump()) { return this.selectListView.update({items: [], loadingMessage: null, loadingBadge: null}) } else { - return this.selectListView.update({items: this.items, loadingMessage: null, loadingBadge: null}) + let selectedItem = this.selectListView.getSelectedItem() + if (keepSelection && selectedItem) { + for (let item of this.items) { + if (item.filePath === selectedItem.filePath && item.projectRelativePath === selectedItem.projectRelativePath) { + selectedItem = item + break + } + } + } + + await this.selectListView.update({items: this.items, loadingMessage: null, loadingBadge: null}) + if (keepSelection) { + try { + this.selectListView.selectItem(selectedItem) + } catch (error) {} // The previously selected item isn't always guaranteed to exist after a reindex + } } } diff --git a/lib/project-view.js b/lib/project-view.js index f8e37100..d07e2683 100644 --- a/lib/project-view.js +++ b/lib/project-view.js @@ -74,7 +74,7 @@ class ProjectView extends FuzzyFinderView { } const localItems = this.projectRelativePathsForFilePaths(this.paths || []) - await this.setItems(remoteItems.concat(localItems)) + await this.setItems(remoteItems.concat(localItems), true) if (this.reloadPaths) { this.reloadPaths = false