Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
36e28683
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
36e28683
编写于
11月 05, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
preview - pin an editor when a navigation starts to another editor (#109779)
上级
d6af4893
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
1 deletion
+23
-1
src/vs/workbench/services/editor/browser/codeEditorService.ts
...vs/workbench/services/editor/browser/codeEditorService.ts
+23
-1
未找到文件。
src/vs/workbench/services/editor/browser/codeEditorService.ts
浏览文件 @
36e28683
...
...
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
ICodeEditor
,
isCodeEditor
,
isDiffEditor
,
isCompositeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
ICodeEditor
,
isCodeEditor
,
isDiffEditor
,
isCompositeEditor
,
getCodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
CodeEditorServiceImpl
}
from
'
vs/editor/browser/services/codeEditorServiceImpl
'
;
import
{
ScrollType
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IResourceEditorInput
}
from
'
vs/platform/editor/common/editor
'
;
...
...
@@ -69,12 +69,34 @@ export class CodeEditorService extends CodeEditorServiceImpl {
}
private
async
doOpenCodeEditor
(
input
:
IResourceEditorInput
,
source
:
ICodeEditor
|
null
,
sideBySide
?:
boolean
):
Promise
<
ICodeEditor
|
null
>
{
// Special case: we want to detect the request to open an editor that
// is different from the current one to decide wether the current editor
// should be pinned or not. This ensures that the source of a navigation
// is not being replaced by the target. An example is "Goto definition"
// that otherwise would replace the editor everytime the user navigates.
if
(
source
&&
// we need to know the origin of the navigation
!
input
.
options
?.
pinned
&&
// we only need to look at preview editors that open
!
sideBySide
&&
// we only need to care if editor opens in same group
!
isEqual
(
source
.
getModel
()?.
uri
,
input
.
resource
)
// we only need to do this if the editor is about to change
)
{
for
(
const
visiblePane
of
this
.
editorService
.
visibleEditorPanes
)
{
if
(
getCodeEditor
(
visiblePane
.
getControl
())
===
source
)
{
visiblePane
.
group
.
pinEditor
();
break
;
}
}
}
// Open as editor
const
control
=
await
this
.
editorService
.
openEditor
(
input
,
sideBySide
?
SIDE_GROUP
:
ACTIVE_GROUP
);
if
(
control
)
{
const
widget
=
control
.
getControl
();
if
(
isCodeEditor
(
widget
))
{
return
widget
;
}
if
(
isCompositeEditor
(
widget
)
&&
isCodeEditor
(
widget
.
activeCodeEditor
))
{
return
widget
.
activeCodeEditor
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录