Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
ae46d502
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,发现更多精彩内容 >>
提交
ae46d502
编写于
3月 30, 2017
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🎨
unhook scm from marshalling
上级
bc9a7bb1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
20 deletion
+25
-20
src/vs/base/common/marshalling.ts
src/vs/base/common/marshalling.ts
+1
-11
src/vs/workbench/api/node/extHostCommands.ts
src/vs/workbench/api/node/extHostCommands.ts
+11
-0
src/vs/workbench/api/node/extHostSCM.ts
src/vs/workbench/api/node/extHostSCM.ts
+13
-9
未找到文件。
src/vs/base/common/marshalling.ts
浏览文件 @
ae46d502
...
...
@@ -30,9 +30,6 @@ function replacer(key: string, value: any): any {
return
value
;
}
// TODO@Joao hack?
export
const
ResolverRegistry
:
{
[
mid
:
number
]:
(
value
:
any
)
=>
any
;
}
=
Object
.
create
(
null
);
function
reviver
(
key
:
string
,
value
:
any
):
any
{
let
marshallingConst
:
number
;
if
(
value
!==
void
0
&&
value
!==
null
)
{
...
...
@@ -42,13 +39,6 @@ function reviver(key: string, value: any): any {
switch
(
marshallingConst
)
{
case
1
:
return
URI
.
revive
(
value
);
case
2
:
return
new
RegExp
(
value
.
source
,
value
.
flags
);
default
:
const
resolver
=
ResolverRegistry
[
marshallingConst
];
if
(
resolver
)
{
return
resolver
(
value
);
}
else
{
return
value
;
}
default
:
return
value
;
}
}
src/vs/workbench/api/node/extHostCommands.ts
浏览文件 @
ae46d502
...
...
@@ -23,11 +23,16 @@ interface CommandHandler {
description
:
ICommandHandlerDescription
;
}
export
interface
ArgumentProcessor
{
processArgument
(
arg
:
any
):
any
;
}
export
class
ExtHostCommands
extends
ExtHostCommandsShape
{
private
_commands
=
new
Map
<
string
,
CommandHandler
>
();
private
_proxy
:
MainThreadCommandsShape
;
private
_converter
:
CommandsConverter
;
private
_argumentProcessors
:
ArgumentProcessor
[]
=
[];
constructor
(
threadService
:
IThreadService
,
...
...
@@ -42,6 +47,10 @@ export class ExtHostCommands extends ExtHostCommandsShape {
return
this
.
_converter
;
}
registerArgumentProcessor
(
processor
:
ArgumentProcessor
):
void
{
this
.
_argumentProcessors
.
push
(
processor
);
}
registerCommand
(
id
:
string
,
callback
:
<
T
>
(...
args
:
any
[])
=>
T
|
Thenable
<
T
>
,
thisArg
?:
any
,
description
?:
ICommandHandlerDescription
):
extHostTypes
.
Disposable
{
if
(
!
id
.
trim
().
length
)
{
...
...
@@ -110,6 +119,8 @@ export class ExtHostCommands extends ExtHostCommandsShape {
}
}
args
=
args
.
map
(
arg
=>
this
.
_argumentProcessors
.
reduce
((
r
,
p
)
=>
p
.
processArgument
(
r
),
arg
));
try
{
let
result
=
callback
.
apply
(
thisArg
,
args
);
return
TPromise
.
as
(
result
);
...
...
src/vs/workbench/api/node/extHostSCM.ts
浏览文件 @
ae46d502
...
...
@@ -12,7 +12,6 @@ import { IThreadService } from 'vs/workbench/services/thread/common/threadServic
import
{
ExtHostCommands
,
CommandsConverter
}
from
'
vs/workbench/api/node/extHostCommands
'
;
import
{
MainContext
,
MainThreadSCMShape
,
SCMRawResource
}
from
'
./extHost.protocol
'
;
import
*
as
vscode
from
'
vscode
'
;
import
*
as
marshalling
from
'
vs/base/common/marshalling
'
;
function
getIconPath
(
decorations
:
vscode
.
SourceControlResourceThemableDecorations
)
{
if
(
!
decorations
)
{
...
...
@@ -241,16 +240,21 @@ export class ExtHostSCM {
this
.
_proxy
=
threadService
.
get
(
MainContext
.
MainThreadSCM
);
this
.
_inputBox
=
new
ExtHostSCMInputBox
(
this
.
_proxy
);
// TODO@joao HACK
marshalling
.
ResolverRegistry
[
3
]
=
value
=>
{
const
sourceControl
=
this
.
_sourceControls
.
get
(
value
.
sourceControlHandle
);
_commands
.
registerArgumentProcessor
({
processArgument
:
arg
=>
{
if
(
arg
&&
arg
.
$mid
===
3
)
{
const
sourceControl
=
this
.
_sourceControls
.
get
(
arg
.
sourceControlHandle
);
if
(
!
sourceControl
)
{
return
value
;
}
if
(
!
sourceControl
)
{
return
arg
;
}
return
sourceControl
.
getResourceState
(
arg
.
groupHandle
,
arg
.
handle
);
}
return
sourceControl
.
getResourceState
(
value
.
groupHandle
,
value
.
handle
);
};
return
arg
;
}
});
}
createSourceControl
(
id
:
string
,
label
:
string
):
vscode
.
SourceControl
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录