Skip to content

Commit 0333e77

Browse files
committed
Use correct external editor label when repository overrides it
1 parent aa42a56 commit 0333e77

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

app/src/models/editor-override.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,11 @@ export type EditorOverride = {
55
useCustomEditor: boolean
66
customEditor: ICustomIntegration | null
77
}
8+
9+
export function getEditorOverrideLabel(
10+
editorOverride: EditorOverride
11+
): string | undefined {
12+
return editorOverride.useCustomEditor
13+
? undefined
14+
: editorOverride.selectedExternalEditor ?? undefined
15+
}

app/src/ui/app.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ import { AddWorktreeDialog } from './worktrees/add-worktree-dialog'
213213
import { RenameWorktreeDialog } from './worktrees/rename-worktree-dialog'
214214
import { DeleteWorktreeDialog } from './worktrees/delete-worktree-dialog'
215215
import { CantDeleteWorktreeUncommittedChanges } from './worktrees/cant-delete-worktree-uncommitted-changes-dialog'
216+
import { getEditorOverrideLabel } from '../models/editor-override'
216217

217218
const MinuteInMilliseconds = 1000 * 60
218219
const HourInMilliseconds = MinuteInMilliseconds * 60
@@ -1395,7 +1396,14 @@ export class App extends React.Component<IAppProps, IAppState> {
13951396
* Gets a label string for the currently selected external editor, or
13961397
* `undefined` if the user has selected a custom editor.
13971398
*/
1398-
private get externalEditorLabel() {
1399+
private getExternalEditorLabel(repo: Repository | CloningRepository) {
1400+
if (repo instanceof Repository && repo.customEditorOverride) {
1401+
return getEditorOverrideLabel(repo.customEditorOverride)
1402+
}
1403+
return this.defaultExternalEditorLabel
1404+
}
1405+
1406+
private get defaultExternalEditorLabel() {
13991407
return this.state.useCustomEditor
14001408
? undefined
14011409
: this.state.selectedExternalEditor ?? undefined
@@ -3119,7 +3127,7 @@ export class App extends React.Component<IAppProps, IAppState> {
31193127
onOpenInShell={this.openInShell}
31203128
onShowRepository={this.showRepository}
31213129
onOpenInExternalEditor={this.openInExternalEditor}
3122-
externalEditorLabel={this.externalEditorLabel}
3130+
externalEditorLabel={this.defaultExternalEditorLabel}
31233131
shellLabel={useCustomShell ? undefined : selectedShell}
31243132
dispatcher={this.props.dispatcher}
31253133
showBranchNameInRepoList={this.state.showBranchNameInRepoList}
@@ -3346,7 +3354,7 @@ export class App extends React.Component<IAppProps, IAppState> {
33463354
onOpenInExternalEditor: this.openInExternalEditor,
33473355
askForConfirmationOnRemoveRepository:
33483356
this.state.askForConfirmationOnRepositoryRemoval,
3349-
externalEditorLabel: this.externalEditorLabel,
3357+
externalEditorLabel: this.getExternalEditorLabel(repository),
33503358
onChangeRepositoryAlias: onChangeRepositoryAlias,
33513359
onRemoveRepositoryAlias: onRemoveRepositoryAlias,
33523360
onChangeRepositoryGroupName: onChangeRepositoryGroupName,
@@ -3753,7 +3761,9 @@ export class App extends React.Component<IAppProps, IAppState> {
37533761
isExternalEditorAvailable={
37543762
state.useCustomEditor || state.selectedExternalEditor !== null
37553763
}
3756-
externalEditorLabel={this.externalEditorLabel}
3764+
externalEditorLabel={this.getExternalEditorLabel(
3765+
selectedState.repository
3766+
)}
37573767
resolvedExternalEditor={state.resolvedExternalEditor}
37583768
onOpenInExternalEditor={this.onOpenInExternalEditor}
37593769
appMenu={state.appMenuState[0]}

app/src/ui/repositories-list/repositories-list.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { ClickSource } from '../lib/list'
3232
import { getRepositoryType } from '../../lib/git/rev-parse'
3333
import { FoldoutType } from '../../lib/app-state'
3434
import { pruneWorktrees } from '../../lib/git/worktree'
35+
import { getEditorOverrideLabel } from '../../models/editor-override'
3536

3637
const BlankSlateImage = encodePathAsUrl(__dirname, 'static/empty-no-repo.svg')
3738

@@ -483,7 +484,7 @@ export class RepositoriesList extends React.Component<
483484
item.repository.isLinkedWorktree),
484485
isVirtualLinkedWorktreeRow: item.isVirtualLinkedWorktree,
485486
isPrunableWorktreeRow: item.isPrunableWorktree,
486-
externalEditorLabel: this.props.externalEditorLabel,
487+
externalEditorLabel: this.getExternalEditorLabel(item.repository),
487488
onChangeRepositoryAlias: this.onChangeRepositoryAlias,
488489
onRemoveRepositoryAlias: this.onRemoveRepositoryAlias,
489490
onChangeRepositoryGroupName: this.onChangeRepositoryGroupName,
@@ -564,6 +565,15 @@ export class RepositoriesList extends React.Component<
564565
)
565566
}
566567

568+
private getExternalEditorLabel(
569+
repository: Repositoryish
570+
): string | undefined {
571+
if (repository instanceof Repository && repository.customEditorOverride) {
572+
return getEditorOverrideLabel(repository.customEditorOverride)
573+
}
574+
return this.props.externalEditorLabel
575+
}
576+
567577
private onSelectionChanged = (selectedItem: IRepositoryListItem | null) => {
568578
this.setState({ selectedItem })
569579
}

0 commit comments

Comments
 (0)