Skip to content

Commit e24cd86

Browse files
authored
Better openDiffOnClick+showInlineOpenFileActions (#6552)
Part of #6515
1 parent 25db419 commit e24cd86

3 files changed

Lines changed: 21 additions & 5 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2444,12 +2444,12 @@
24442444
{
24452445
"command": "review.openFile",
24462446
"group": "inline@0",
2447-
"when": "openDiffOnClick && view == prStatus:github && viewItem =~ /filechange(?!:DELETE)/ && config.git.showInlineOpenFileAction"
2447+
"when": "openDiffOnClick && showInlineOpenFileAction && view == prStatus:github && viewItem =~ /filechange(?!:DELETE)/"
24482448
},
24492449
{
24502450
"command": "pr.openDiffView",
24512451
"group": "inline@0",
2452-
"when": "!openDiffOnClick && view == prStatus:github && viewItem =~ /filechange(?!:DELETE)/"
2452+
"when": "!openDiffOnClick && showInlineOpenFileAction && view == prStatus:github && viewItem =~ /filechange(?!:DELETE)/"
24532453
},
24542454
{
24552455
"command": "pr.openFileOnGitHub",

src/common/settingKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export const EXPERIMENTAL_NOTIFICATIONS_SCORE = 'experimental.notificationsScore
6262
export const GIT = 'git';
6363
export const PULL_BEFORE_CHECKOUT = 'pullBeforeCheckout';
6464
export const OPEN_DIFF_ON_CLICK = 'openDiffOnClick';
65+
export const SHOW_INLINE_OPEN_FILE_ACTION = 'showInlineOpenFileAction';
6566
export const AUTO_STASH = 'autoStash';
6667

6768
// GitHub Enterprise

src/extension.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import Logger from './common/logger';
1515
import * as PersistentState from './common/persistentState';
1616
import { parseRepositoryRemotes } from './common/remote';
1717
import { Resource } from './common/resources';
18-
import { BRANCH_PUBLISH, EXPERIMENTAL_CHAT, EXPERIMENTAL_NOTIFICATIONS, FILE_LIST_LAYOUT, GIT, OPEN_DIFF_ON_CLICK, PR_SETTINGS_NAMESPACE } from './common/settingKeys';
18+
import { BRANCH_PUBLISH, EXPERIMENTAL_CHAT, EXPERIMENTAL_NOTIFICATIONS, FILE_LIST_LAYOUT, GIT, OPEN_DIFF_ON_CLICK, PR_SETTINGS_NAMESPACE, SHOW_INLINE_OPEN_FILE_ACTION } from './common/settingKeys';
1919
import { TemporaryState } from './common/temporaryState';
2020
import { Schemes, handler as uriHandler } from './common/uri';
2121
import { EXTENSION_ID, FOCUS_REVIEW_MODE } from './constants';
@@ -286,8 +286,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<GitApi
286286
await commands.focusView('github:activePullRequest:welcome');
287287
showPRController.shouldShow = shouldShow;
288288
});
289-
const openDiff = vscode.workspace.getConfiguration(GIT, null).get(OPEN_DIFF_ON_CLICK, true);
290-
await vscode.commands.executeCommand('setContext', 'openDiffOnClick', openDiff);
289+
await setGitSettingContexts(context);
291290

292291
// initialize resources
293292
Resource.initialize(context);
@@ -302,6 +301,22 @@ export async function activate(context: vscode.ExtensionContext): Promise<GitApi
302301
return apiImpl;
303302
}
304303

304+
async function setGitSettingContexts(context: vscode.ExtensionContext) {
305+
// We set contexts instead of using the config directly in package.json because the git extension might not actually be available.
306+
const settings: [string, () => void][] = [
307+
['openDiffOnClick', () => vscode.workspace.getConfiguration(GIT, null).get(OPEN_DIFF_ON_CLICK, true)],
308+
['showInlineOpenFileAction', () => vscode.workspace.getConfiguration(GIT, null).get(SHOW_INLINE_OPEN_FILE_ACTION, true)]
309+
];
310+
for (const [contextName, setting] of settings) {
311+
commands.setContext(contextName, setting());
312+
context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(e => {
313+
if (e.affectsConfiguration(`${GIT}.${contextName}`)) {
314+
commands.setContext(contextName, setting());
315+
}
316+
}));
317+
}
318+
}
319+
305320
async function doRegisterBuiltinGitProvider(context: vscode.ExtensionContext, credentialStore: CredentialStore, apiImpl: GitApiImpl): Promise<boolean> {
306321
const builtInGitProvider = await registerBuiltinGitProvider(credentialStore, apiImpl);
307322
if (builtInGitProvider) {

0 commit comments

Comments
 (0)