Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
7bfd7fb6
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7bfd7fb6
编写于
11月 09, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Keyboard shortcuts for switching focus between left & right sides of diff view (fix #95068)
上级
eb8c718e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
69 addition
and
4 deletion
+69
-4
src/vs/workbench/browser/parts/editor/editorCommands.ts
src/vs/workbench/browser/parts/editor/editorCommands.ts
+69
-4
未找到文件。
src/vs/workbench/browser/parts/editor/editorCommands.ts
浏览文件 @
7bfd7fb6
...
...
@@ -47,6 +47,9 @@ export const UNPIN_EDITOR_COMMAND_ID = 'workbench.action.unpinEditor';
export
const
TOGGLE_DIFF_SIDE_BY_SIDE
=
'
toggle.diff.renderSideBySide
'
;
export
const
GOTO_NEXT_CHANGE
=
'
workbench.action.compareEditor.nextChange
'
;
export
const
GOTO_PREVIOUS_CHANGE
=
'
workbench.action.compareEditor.previousChange
'
;
export
const
DIFF_FOCUS_PRIMARY_SIDE
=
'
workbench.action.compareEditor.focusPrimarySide
'
;
export
const
DIFF_FOCUS_SECONDARY_SIDE
=
'
workbench.action.compareEditor.focusSecondarySide
'
;
export
const
DIFF_FOCUS_OTHER_SIDE
=
'
workbench.action.compareEditor.focusOtherSide
'
;
export
const
TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE
=
'
toggle.diff.ignoreTrimWhitespace
'
;
export
const
SPLIT_EDITOR_UP
=
'
workbench.action.splitEditorUp
'
;
...
...
@@ -268,18 +271,56 @@ function registerDiffEditorCommands(): void {
handler
:
accessor
=>
navigateInDiffEditor
(
accessor
,
false
)
});
function
navigateInDiffEditor
(
accessor
:
ServicesAccessor
,
next
:
boolean
):
voi
d
{
function
getActiveTextDiffEditor
(
accessor
:
ServicesAccessor
):
TextDiffEditor
|
undefine
d
{
const
editorService
=
accessor
.
get
(
IEditorService
);
const
candidates
=
[
editorService
.
activeEditorPane
,
...
editorService
.
visibleEditorPanes
].
filter
(
editor
=>
editor
instanceof
TextDiffEditor
);
if
(
candidates
.
length
>
0
)
{
const
navigator
=
(
<
TextDiffEditor
>
candidates
[
0
]).
getDiffNavigator
();
for
(
const
editor
of
[
editorService
.
activeEditorPane
,
...
editorService
.
visibleEditorPanes
])
{
if
(
editor
instanceof
TextDiffEditor
)
{
return
editor
;
}
}
return
undefined
;
}
function
navigateInDiffEditor
(
accessor
:
ServicesAccessor
,
next
:
boolean
):
void
{
const
activeTextDiffEditor
=
getActiveTextDiffEditor
(
accessor
);
if
(
activeTextDiffEditor
)
{
const
navigator
=
activeTextDiffEditor
.
getDiffNavigator
();
if
(
navigator
)
{
next
?
navigator
.
next
()
:
navigator
.
previous
();
}
}
}
enum
FocusTextDiffEditorMode
{
Original
,
Modified
,
Toggle
}
function
focusInDiffEditor
(
accessor
:
ServicesAccessor
,
mode
:
FocusTextDiffEditorMode
):
void
{
const
activeTextDiffEditor
=
getActiveTextDiffEditor
(
accessor
);
if
(
activeTextDiffEditor
)
{
switch
(
mode
)
{
case
FocusTextDiffEditorMode
.
Original
:
activeTextDiffEditor
.
getControl
()?.
getOriginalEditor
().
focus
();
break
;
case
FocusTextDiffEditorMode
.
Modified
:
activeTextDiffEditor
.
getControl
()?.
getModifiedEditor
().
focus
();
break
;
case
FocusTextDiffEditorMode
.
Toggle
:
if
(
activeTextDiffEditor
.
getControl
()?.
getModifiedEditor
().
hasWidgetFocus
())
{
return
focusInDiffEditor
(
accessor
,
FocusTextDiffEditorMode
.
Original
);
}
else
{
return
focusInDiffEditor
(
accessor
,
FocusTextDiffEditorMode
.
Modified
);
}
}
}
}
function
toggleDiffSideBySide
(
accessor
:
ServicesAccessor
):
void
{
const
configurationService
=
accessor
.
get
(
IConfigurationService
);
...
...
@@ -302,6 +343,30 @@ function registerDiffEditorCommands(): void {
handler
:
accessor
=>
toggleDiffSideBySide
(
accessor
)
});
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
DIFF_FOCUS_PRIMARY_SIDE
,
weight
:
KeybindingWeight
.
WorkbenchContrib
,
when
:
undefined
,
primary
:
undefined
,
handler
:
accessor
=>
focusInDiffEditor
(
accessor
,
FocusTextDiffEditorMode
.
Modified
)
});
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
DIFF_FOCUS_SECONDARY_SIDE
,
weight
:
KeybindingWeight
.
WorkbenchContrib
,
when
:
undefined
,
primary
:
undefined
,
handler
:
accessor
=>
focusInDiffEditor
(
accessor
,
FocusTextDiffEditorMode
.
Original
)
});
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
DIFF_FOCUS_OTHER_SIDE
,
weight
:
KeybindingWeight
.
WorkbenchContrib
,
when
:
undefined
,
primary
:
undefined
,
handler
:
accessor
=>
focusInDiffEditor
(
accessor
,
FocusTextDiffEditorMode
.
Toggle
)
});
MenuRegistry
.
appendMenuItem
(
MenuId
.
CommandPalette
,
{
command
:
{
id
:
TOGGLE_DIFF_SIDE_BY_SIDE
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录