Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6b69213f
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,发现更多精彩内容 >>
提交
6b69213f
编写于
11月 26, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Dismiss custom editor on rename if the editor no longer matches the new resource name
上级
c2c96f3f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
56 addition
and
30 deletion
+56
-30
src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts
...rkbench/contrib/customEditor/browser/customEditorInput.ts
+11
-7
src/vs/workbench/contrib/customEditor/browser/customEditors.ts
...s/workbench/contrib/customEditor/browser/customEditors.ts
+10
-17
src/vs/workbench/contrib/customEditor/common/customEditor.ts
src/vs/workbench/contrib/customEditor/common/customEditor.ts
+35
-6
未找到文件。
src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts
浏览文件 @
6b69213f
...
...
@@ -159,12 +159,16 @@ export class CustomFileEditorInput extends LazilyResolvedWebviewEditorInput {
return
this
.
fileDialogService
.
pickFileToSave
({});
//this.getSaveDialogOptions(defaultUri, availableFileSystems));
}
public
handleMove
(
groupId
:
GroupIdentifier
,
uri
:
URI
,
options
?:
ITextEditorOptions
):
IEditorInput
|
undefined
{
const
webview
=
assertIsDefined
(
this
.
takeOwnershipOfWebview
());
return
this
.
instantiationService
.
createInstance
(
CustomFileEditorInput
,
uri
,
this
.
viewType
,
generateUuid
(),
new
Lazy
(()
=>
webview
));
public
handleMove
(
_groupId
:
GroupIdentifier
,
uri
:
URI
,
options
?:
ITextEditorOptions
):
IEditorInput
|
undefined
{
const
editorInfo
=
this
.
customEditorService
.
getCustomEditor
(
this
.
viewType
);
if
(
editorInfo
?.
matches
(
uri
))
{
const
webview
=
assertIsDefined
(
this
.
takeOwnershipOfWebview
());
return
this
.
instantiationService
.
createInstance
(
CustomFileEditorInput
,
uri
,
this
.
viewType
,
generateUuid
(),
new
Lazy
(()
=>
webview
));
}
return
undefined
;
}
}
src/vs/workbench/contrib/customEditor/browser/customEditors.ts
浏览文件 @
6b69213f
...
...
@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import
{
coalesce
,
distinct
,
find
,
mergeSort
}
from
'
vs/base/common/arrays
'
;
import
*
as
glob
from
'
vs/base/common/glob
'
;
import
{
Lazy
}
from
'
vs/base/common/lazy
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
basename
,
isEqual
}
from
'
vs/base/common/resources
'
;
...
...
@@ -32,14 +31,14 @@ import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/wo
import
{
CustomFileEditorInput
}
from
'
./customEditorInput
'
;
const
defaultEditorId
=
'
default
'
;
const
defaultEditorInfo
:
CustomEditorInfo
=
{
const
defaultEditorInfo
=
new
CustomEditorInfo
(
{
id
:
defaultEditorId
,
displayName
:
nls
.
localize
(
'
promptOpenWith.defaultEditor
'
,
"
VS Code's standard text editor
"
),
selector
:
[
{
filenamePattern
:
'
*
'
}
],
priority
:
CustomEditorPriority
.
default
,
};
}
)
;
export
class
CustomEditorInfoStore
{
private
readonly
contributedEditors
=
new
Map
<
string
,
CustomEditorInfo
>
();
...
...
@@ -64,7 +63,7 @@ export class CustomEditorInfoStore {
public
getContributedEditors
(
resource
:
URI
):
readonly
CustomEditorInfo
[]
{
return
Array
.
from
(
this
.
contributedEditors
.
values
()).
filter
(
customEditor
=>
customEditor
.
selector
.
some
(
selector
=>
matches
(
selector
,
resource
)
));
customEditor
.
matches
(
resource
));
}
}
...
...
@@ -97,12 +96,12 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ
for
(
const
extension
of
extensions
)
{
for
(
const
webviewEditorContribution
of
extension
.
value
)
{
this
.
_editorInfoStore
.
add
({
this
.
_editorInfoStore
.
add
(
new
CustomEditorInfo
(
{
id
:
webviewEditorContribution
.
viewType
,
displayName
:
webviewEditorContribution
.
displayName
,
selector
:
webviewEditorContribution
.
selector
||
[],
priority
:
webviewEditorContribution
.
priority
||
CustomEditorPriority
.
default
,
});
})
)
;
}
}
this
.
updateContexts
();
...
...
@@ -127,6 +126,10 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ
return
{
resource
,
viewType
:
activeInput
.
viewType
};
}
public
getCustomEditor
(
viewType
:
string
):
CustomEditorInfo
|
undefined
{
return
this
.
_editorInfoStore
.
get
(
viewType
);
}
public
getContributedCustomEditors
(
resource
:
URI
):
readonly
CustomEditorInfo
[]
{
return
this
.
_editorInfoStore
.
getContributedEditors
(
resource
);
}
...
...
@@ -134,7 +137,7 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ
public
getUserConfiguredCustomEditors
(
resource
:
URI
):
readonly
CustomEditorInfo
[]
{
const
rawAssociations
=
this
.
configurationService
.
getValue
<
CustomEditorsAssociations
>
(
customEditorsAssociationsKey
)
||
[];
return
coalesce
(
rawAssociations
.
filter
(
association
=>
m
atches
(
association
,
resource
))
.
filter
(
association
=>
CustomEditorInfo
.
selectorM
atches
(
association
,
resource
))
.
map
(
association
=>
this
.
_editorInfoStore
.
get
(
association
.
viewType
)));
}
...
...
@@ -405,16 +408,6 @@ function priorityToRank(priority: CustomEditorPriority): number {
}
}
function
matches
(
selector
:
CustomEditorSelector
,
resource
:
URI
):
boolean
{
if
(
selector
.
filenamePattern
)
{
if
(
glob
.
match
(
selector
.
filenamePattern
.
toLowerCase
(),
basename
(
resource
).
toLowerCase
()))
{
return
true
;
}
}
return
false
;
}
registerThemingParticipant
((
theme
,
collector
)
=>
{
const
shadow
=
theme
.
getColor
(
colorRegistry
.
scrollbarShadow
);
if
(
shadow
)
{
...
...
src/vs/workbench/contrib/customEditor/common/customEditor.ts
浏览文件 @
6b69213f
...
...
@@ -4,11 +4,13 @@
*--------------------------------------------------------------------------------------------*/
import
{
Event
}
from
'
vs/base/common/event
'
;
import
*
as
glob
from
'
vs/base/common/glob
'
;
import
{
basename
}
from
'
vs/base/common/resources
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
RawContextKey
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
ITextEditorOptions
}
from
'
vs/platform/editor/common/editor
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
EditorInput
,
IEditor
,
I
SaveOptions
,
IRevert
Options
}
from
'
vs/workbench/common/editor
'
;
import
{
EditorInput
,
IEditor
,
I
RevertOptions
,
ISave
Options
}
from
'
vs/workbench/common/editor
'
;
import
{
IEditorGroup
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
IWorkingCopy
}
from
'
vs/workbench/services/workingCopy/common/workingCopyService
'
;
...
...
@@ -29,6 +31,7 @@ export interface ICustomEditorService {
readonly
activeCustomEditor
:
ICustomEditor
|
undefined
;
getCustomEditor
(
viewType
:
string
):
CustomEditorInfo
|
undefined
;
getContributedCustomEditors
(
resource
:
URI
):
readonly
CustomEditorInfo
[];
getUserConfiguredCustomEditors
(
resource
:
URI
):
readonly
CustomEditorInfo
[];
...
...
@@ -87,9 +90,35 @@ export interface CustomEditorSelector {
readonly
filenamePattern
?:
string
;
}
export
interface
CustomEditorInfo
{
readonly
id
:
string
;
readonly
displayName
:
string
;
readonly
priority
:
CustomEditorPriority
;
readonly
selector
:
readonly
CustomEditorSelector
[];
export
class
CustomEditorInfo
{
public
readonly
id
:
string
;
public
readonly
displayName
:
string
;
public
readonly
priority
:
CustomEditorPriority
;
public
readonly
selector
:
readonly
CustomEditorSelector
[];
constructor
(
descriptor
:
{
readonly
id
:
string
;
readonly
displayName
:
string
;
readonly
priority
:
CustomEditorPriority
;
readonly
selector
:
readonly
CustomEditorSelector
[];
})
{
this
.
id
=
descriptor
.
id
;
this
.
displayName
=
descriptor
.
displayName
;
this
.
priority
=
descriptor
.
priority
;
this
.
selector
=
descriptor
.
selector
;
}
matches
(
resource
:
URI
):
boolean
{
return
this
.
selector
.
some
(
selector
=>
CustomEditorInfo
.
selectorMatches
(
selector
,
resource
));
}
static
selectorMatches
(
selector
:
CustomEditorSelector
,
resource
:
URI
):
boolean
{
if
(
selector
.
filenamePattern
)
{
if
(
glob
.
match
(
selector
.
filenamePattern
.
toLowerCase
(),
basename
(
resource
).
toLowerCase
()))
{
return
true
;
}
}
return
false
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录