Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
8ef60306
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
提交
8ef60306
编写于
6月 14, 2019
作者:
P
Peng Lyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#74846. no CommandsConverter#toInternal
上级
861a1c21
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
24 deletion
+42
-24
src/vs/workbench/api/common/extHostComments.ts
src/vs/workbench/api/common/extHostComments.ts
+42
-24
未找到文件。
src/vs/workbench/api/common/extHostComments.ts
浏览文件 @
8ef60306
...
...
@@ -10,13 +10,14 @@ import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments';
import
*
as
extHostTypeConverter
from
'
vs/workbench/api/common/extHostTypeConverters
'
;
import
*
as
types
from
'
vs/workbench/api/common/extHostTypes
'
;
import
*
as
vscode
from
'
vscode
'
;
import
{
ExtHostCommentsShape
,
IMainContext
,
MainContext
,
MainThreadCommentsShape
}
from
'
./extHost.protocol
'
;
import
{
ExtHostCommentsShape
,
IMainContext
,
MainContext
,
MainThreadCommentsShape
,
CommandDto
}
from
'
./extHost.protocol
'
;
import
{
CommandsConverter
,
ExtHostCommands
}
from
'
./extHostCommands
'
;
import
{
IRange
}
from
'
vs/editor/common/core/range
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
debounce
}
from
'
vs/base/common/decorators
'
;
import
{
MutableDisposable
,
DisposableStore
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
interface
HandlerData
<
T
>
{
...
...
@@ -26,7 +27,8 @@ interface HandlerData<T> {
type
ProviderHandle
=
number
;
export
class
ExtHostComments
implements
ExtHostCommentsShape
{
export
class
ExtHostComments
implements
ExtHostCommentsShape
,
IDisposable
{
private
static
handlePool
=
0
;
private
_proxy
:
MainThreadCommentsShape
;
...
...
@@ -38,12 +40,15 @@ export class ExtHostComments implements ExtHostCommentsShape {
private
_documentProviders
=
new
Map
<
number
,
HandlerData
<
vscode
.
DocumentCommentProvider
>>
();
private
_workspaceProviders
=
new
Map
<
number
,
HandlerData
<
vscode
.
WorkspaceCommentProvider
>>
();
private
_commandDisposables
=
new
MutableDisposable
<
DisposableStore
>
();
constructor
(
mainContext
:
IMainContext
,
private
_commands
:
ExtHostCommands
,
private
readonly
_documents
:
ExtHostDocuments
,
)
{
this
.
_proxy
=
mainContext
.
getProxy
(
MainContext
.
MainThreadComments
);
this
.
_commandDisposables
.
value
=
new
DisposableStore
();
_commands
.
registerArgumentProcessor
({
processArgument
:
arg
=>
{
...
...
@@ -334,7 +339,7 @@ export class ExtHostComments implements ExtHostCommentsShape {
const
handlerData
=
this
.
getDocumentProvider
(
handle
);
return
asPromise
(()
=>
{
return
handlerData
.
provider
.
createNewCommentThread
(
data
.
document
,
ran
,
text
,
CancellationToken
.
None
);
}).
then
(
commentThread
=>
commentThread
?
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
commentThread
,
this
.
_commands
.
converter
)
:
null
);
}).
then
(
commentThread
=>
commentThread
?
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
commentThread
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)
:
null
);
}
$replyToCommentThread
(
handle
:
number
,
uri
:
UriComponents
,
range
:
IRange
,
thread
:
modes
.
CommentThread
,
text
:
string
):
Promise
<
modes
.
CommentThread
|
null
>
{
...
...
@@ -348,7 +353,7 @@ export class ExtHostComments implements ExtHostCommentsShape {
const
handlerData
=
this
.
getDocumentProvider
(
handle
);
return
asPromise
(()
=>
{
return
handlerData
.
provider
.
replyToCommentThread
(
data
.
document
,
ran
,
convertFromCommentThread
(
thread
),
text
,
CancellationToken
.
None
);
}).
then
(
commentThread
=>
commentThread
?
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
commentThread
,
this
.
_commands
.
converter
)
:
null
);
}).
then
(
commentThread
=>
commentThread
?
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
commentThread
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)
:
null
);
}
$editComment
(
handle
:
number
,
uri
:
UriComponents
,
comment
:
modes
.
Comment
,
text
:
string
):
Promise
<
void
>
{
...
...
@@ -434,7 +439,7 @@ export class ExtHostComments implements ExtHostCommentsShape {
const
handlerData
=
this
.
getDocumentProvider
(
handle
);
return
asPromise
(()
=>
{
return
handlerData
.
provider
.
provideDocumentComments
(
document
,
CancellationToken
.
None
);
}).
then
(
commentInfo
=>
commentInfo
?
convertCommentInfo
(
handle
,
handlerData
.
extensionId
,
handlerData
.
provider
,
commentInfo
,
this
.
_commands
.
converter
)
:
null
);
}).
then
(
commentInfo
=>
commentInfo
?
convertCommentInfo
(
handle
,
handlerData
.
extensionId
,
handlerData
.
provider
,
commentInfo
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)
:
null
);
}
$provideWorkspaceComments
(
handle
:
number
):
Promise
<
modes
.
CommentThread
[]
|
null
>
{
...
...
@@ -446,7 +451,7 @@ export class ExtHostComments implements ExtHostCommentsShape {
return
asPromise
(()
=>
{
return
handlerData
.
provider
.
provideWorkspaceComments
(
CancellationToken
.
None
);
}).
then
(
comments
=>
comments
.
map
(
comment
=>
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
comment
,
this
.
_commands
.
converter
)
comments
.
map
(
comment
=>
convertToCommentThread
(
handlerData
.
extensionId
,
handlerData
.
provider
,
comment
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)
));
}
...
...
@@ -454,9 +459,9 @@ export class ExtHostComments implements ExtHostCommentsShape {
provider
.
onDidChangeCommentThreads
(
event
=>
{
this
.
_proxy
.
$onDidCommentThreadsChange
(
handle
,
{
changed
:
event
.
changed
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
)),
added
:
event
.
added
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
)),
removed
:
event
.
removed
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
)),
changed
:
event
.
changed
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)),
added
:
event
.
added
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)),
removed
:
event
.
removed
.
map
(
thread
=>
convertToCommentThread
(
extensionId
,
provider
,
thread
,
this
.
_commands
.
converter
,
this
.
_commandDisposables
.
value
!
)),
draftMode
:
!!
(
provider
as
vscode
.
DocumentCommentProvider
).
startDraft
&&
!!
(
provider
as
vscode
.
DocumentCommentProvider
).
finishDraft
?
(
event
.
inDraftMode
?
modes
.
DraftMode
.
InDraft
:
modes
.
DraftMode
.
NotInDraft
)
:
modes
.
DraftMode
.
NotSupported
});
});
...
...
@@ -469,6 +474,10 @@ export class ExtHostComments implements ExtHostCommentsShape {
}
return
provider
;
}
dispose
():
void
{
this
.
_commandDisposables
.
dispose
();
}
}
export
class
ExtHostCommentThread
implements
vscode
.
CommentThread
{
...
...
@@ -592,6 +601,8 @@ export class ExtHostCommentThread implements vscode.CommentThread {
private
_commentsMap
:
Map
<
vscode
.
Comment
,
number
>
=
new
Map
<
vscode
.
Comment
,
number
>
();
private
_acceptInputDisposables
=
new
MutableDisposable
<
DisposableStore
>
();
constructor
(
private
_proxy
:
MainThreadCommentsShape
,
private
readonly
_commandsConverter
:
CommandsConverter
,
...
...
@@ -602,6 +613,8 @@ export class ExtHostCommentThread implements vscode.CommentThread {
private
_comments
:
vscode
.
Comment
[],
extensionId
:
ExtensionIdentifier
)
{
this
.
_acceptInputDisposables
.
value
=
new
DisposableStore
();
if
(
this
.
_id
===
undefined
)
{
this
.
_id
=
`
${
_commentController
.
id
}
.
${
this
.
handle
}
`
;
}
...
...
@@ -626,15 +639,20 @@ export class ExtHostCommentThread implements vscode.CommentThread {
this
.
comments
=
_comments
;
}
@
debounce
(
100
)
eventuallyUpdateCommentThread
():
void
{
if
(
!
this
.
_acceptInputDisposables
.
value
)
{
this
.
_acceptInputDisposables
.
value
=
new
DisposableStore
();
}
const
commentThreadRange
=
extHostTypeConverter
.
Range
.
from
(
this
.
_range
);
const
label
=
this
.
label
;
const
contextValue
=
this
.
contextValue
;
const
comments
=
this
.
_comments
.
map
(
cmt
=>
{
return
convertToModeComment2
(
this
,
this
.
_commentController
,
cmt
,
this
.
_commandsConverter
,
this
.
_commentsMap
);
});
const
acceptInputCommand
=
this
.
_acceptInputCommand
?
this
.
_commandsConverter
.
toInternal
(
this
.
_acceptInputCommand
)
:
undefined
;
const
additionalCommands
=
this
.
_additionalCommands
?
this
.
_additionalCommands
.
map
(
x
=>
this
.
_commandsConverter
.
toInternal
(
x
))
:
[];
const
deleteCommand
=
this
.
_deleteCommand
?
this
.
_commandsConverter
.
toInternal
(
this
.
_deleteCommand
)
:
undefined
;
const
comments
=
this
.
_comments
.
map
(
cmt
=>
{
return
convertToModeComment2
(
this
,
this
.
_commentController
,
cmt
,
this
.
_commandsConverter
,
this
.
_commentsMap
,
this
.
_acceptInputDisposables
.
value
!
);
});
const
acceptInputCommand
=
this
.
_acceptInputCommand
?
this
.
_commandsConverter
.
toInternal
2
(
this
.
_acceptInputCommand
,
this
.
_acceptInputDisposables
.
value
)
:
undefined
;
const
additionalCommands
=
(
this
.
_additionalCommands
?
this
.
_additionalCommands
.
map
(
x
=>
this
.
_commandsConverter
.
toInternal2
(
x
,
this
.
_acceptInputDisposables
.
value
!
))
:
[])
as
CommandDto
[];
const
deleteCommand
=
this
.
_deleteCommand
?
this
.
_commandsConverter
.
toInternal
2
(
this
.
_deleteCommand
,
this
.
_acceptInputDisposables
.
value
)
:
undefined
;
const
collapsibleState
=
convertToCollapsibleState
(
this
.
_collapseState
);
this
.
_proxy
.
$updateCommentThread
(
...
...
@@ -676,6 +694,7 @@ export class ExtHostCommentThread implements vscode.CommentThread {
}
dispose
()
{
this
.
_acceptInputDisposables
.
dispose
();
this
.
_localDisposables
.
forEach
(
disposable
=>
disposable
.
dispose
());
this
.
_proxy
.
$deleteCommentThread
(
this
.
_commentController
.
handle
,
...
...
@@ -683,7 +702,6 @@ export class ExtHostCommentThread implements vscode.CommentThread {
);
this
.
_isDiposed
=
true
;
}
}
export
class
ExtHostCommentInputBox
implements
vscode
.
CommentInputBox
{
...
...
@@ -844,22 +862,22 @@ class ExtHostCommentController implements vscode.CommentController {
}
}
function
convertCommentInfo
(
owner
:
number
,
extensionId
:
ExtensionIdentifier
,
provider
:
vscode
.
DocumentCommentProvider
,
vscodeCommentInfo
:
vscode
.
CommentInfo
,
commandsConverter
:
CommandsConverter
):
modes
.
CommentInfo
{
function
convertCommentInfo
(
owner
:
number
,
extensionId
:
ExtensionIdentifier
,
provider
:
vscode
.
DocumentCommentProvider
,
vscodeCommentInfo
:
vscode
.
CommentInfo
,
commandsConverter
:
CommandsConverter
,
disposables
:
DisposableStore
):
modes
.
CommentInfo
{
return
{
extensionId
:
extensionId
.
value
,
threads
:
vscodeCommentInfo
.
threads
.
map
(
x
=>
convertToCommentThread
(
extensionId
,
provider
,
x
,
commandsConverter
)),
threads
:
vscodeCommentInfo
.
threads
.
map
(
x
=>
convertToCommentThread
(
extensionId
,
provider
,
x
,
commandsConverter
,
disposables
)),
commentingRanges
:
vscodeCommentInfo
.
commentingRanges
?
vscodeCommentInfo
.
commentingRanges
.
map
(
range
=>
extHostTypeConverter
.
Range
.
from
(
range
))
:
[],
draftMode
:
provider
.
startDraft
&&
provider
.
finishDraft
?
(
vscodeCommentInfo
.
inDraftMode
?
modes
.
DraftMode
.
InDraft
:
modes
.
DraftMode
.
NotInDraft
)
:
modes
.
DraftMode
.
NotSupported
};
}
function
convertToCommentThread
(
extensionId
:
ExtensionIdentifier
,
provider
:
vscode
.
DocumentCommentProvider
|
vscode
.
WorkspaceCommentProvider
,
vscodeCommentThread
:
vscode
.
CommentThread
,
commandsConverter
:
CommandsConverter
):
modes
.
CommentThread
{
function
convertToCommentThread
(
extensionId
:
ExtensionIdentifier
,
provider
:
vscode
.
DocumentCommentProvider
|
vscode
.
WorkspaceCommentProvider
,
vscodeCommentThread
:
vscode
.
CommentThread
,
commandsConverter
:
CommandsConverter
,
disposables
:
DisposableStore
):
modes
.
CommentThread
{
return
{
extensionId
:
extensionId
.
value
,
threadId
:
vscodeCommentThread
.
id
,
resource
:
vscodeCommentThread
.
resource
.
toString
(),
range
:
extHostTypeConverter
.
Range
.
from
(
vscodeCommentThread
.
range
),
comments
:
vscodeCommentThread
.
comments
.
map
(
comment
=>
convertToComment
(
provider
,
comment
as
vscode
.
Comment
,
commandsConverter
)),
comments
:
vscodeCommentThread
.
comments
.
map
(
comment
=>
convertToComment
(
provider
,
comment
as
vscode
.
Comment
,
commandsConverter
,
disposables
)),
collapsibleState
:
vscodeCommentThread
.
collapsibleState
};
}
...
...
@@ -914,7 +932,7 @@ function convertFromComment(comment: modes.Comment): vscode.Comment {
};
}
function
convertToModeComment2
(
thread
:
ExtHostCommentThread
,
commentController
:
ExtHostCommentController
,
vscodeComment
:
vscode
.
Comment
,
commandsConverter
:
CommandsConverter
,
commentsMap
:
Map
<
vscode
.
Comment
,
number
>
):
modes
.
Comment
{
function
convertToModeComment2
(
thread
:
ExtHostCommentThread
,
commentController
:
ExtHostCommentController
,
vscodeComment
:
vscode
.
Comment
,
commandsConverter
:
CommandsConverter
,
commentsMap
:
Map
<
vscode
.
Comment
,
number
>
,
disposables
:
DisposableStore
):
modes
.
Comment
{
let
commentUniqueId
=
commentsMap
.
get
(
vscodeComment
)
!
;
if
(
!
commentUniqueId
)
{
commentUniqueId
=
++
thread
.
commentHandle
;
...
...
@@ -933,15 +951,15 @@ function convertToModeComment2(thread: ExtHostCommentThread, commentController:
userName
:
vscodeComment
.
author
?
vscodeComment
.
author
.
name
:
vscodeComment
.
userName
,
userIconPath
:
iconPath
,
isDraft
:
vscodeComment
.
isDraft
,
selectCommand
:
vscodeComment
.
selectCommand
?
commandsConverter
.
toInternal
(
vscodeComment
.
selectCommand
)
:
undefined
,
editCommand
:
vscodeComment
.
editCommand
?
commandsConverter
.
toInternal
(
vscodeComment
.
editCommand
)
:
undefined
,
deleteCommand
:
vscodeComment
.
deleteCommand
?
commandsConverter
.
toInternal
(
vscodeComment
.
deleteCommand
)
:
undefined
,
selectCommand
:
vscodeComment
.
selectCommand
?
commandsConverter
.
toInternal
2
(
vscodeComment
.
selectCommand
,
disposables
)
:
undefined
,
editCommand
:
vscodeComment
.
editCommand
?
commandsConverter
.
toInternal
2
(
vscodeComment
.
editCommand
,
disposables
)
:
undefined
,
deleteCommand
:
vscodeComment
.
deleteCommand
?
commandsConverter
.
toInternal
2
(
vscodeComment
.
deleteCommand
,
disposables
)
:
undefined
,
label
:
vscodeComment
.
label
,
commentReactions
:
reactions
?
reactions
.
map
(
reaction
=>
convertToReaction2
(
commentController
.
reactionProvider
,
reaction
))
:
undefined
};
}
function
convertToComment
(
provider
:
vscode
.
DocumentCommentProvider
|
vscode
.
WorkspaceCommentProvider
,
vscodeComment
:
vscode
.
Comment
,
commandsConverter
:
CommandsConverter
):
modes
.
Comment
{
function
convertToComment
(
provider
:
vscode
.
DocumentCommentProvider
|
vscode
.
WorkspaceCommentProvider
,
vscodeComment
:
vscode
.
Comment
,
commandsConverter
:
CommandsConverter
,
disposables
:
DisposableStore
):
modes
.
Comment
{
const
canEdit
=
!!
(
provider
as
vscode
.
DocumentCommentProvider
).
editComment
&&
vscodeComment
.
canEdit
;
const
canDelete
=
!!
(
provider
as
vscode
.
DocumentCommentProvider
).
deleteComment
&&
vscodeComment
.
canDelete
;
const
iconPath
=
vscodeComment
.
userIconPath
?
vscodeComment
.
userIconPath
.
toString
()
:
vscodeComment
.
gravatar
;
...
...
@@ -953,7 +971,7 @@ function convertToComment(provider: vscode.DocumentCommentProvider | vscode.Work
userIconPath
:
iconPath
,
canEdit
:
canEdit
,
canDelete
:
canDelete
,
selectCommand
:
vscodeComment
.
command
?
commandsConverter
.
toInternal
(
vscodeComment
.
command
)
:
undefined
,
selectCommand
:
vscodeComment
.
command
?
commandsConverter
.
toInternal
2
(
vscodeComment
.
command
,
disposables
)
:
undefined
,
isDraft
:
vscodeComment
.
isDraft
,
commentReactions
:
vscodeComment
.
commentReactions
?
vscodeComment
.
commentReactions
.
map
(
reaction
=>
convertToReaction
(
provider
,
reaction
))
:
undefined
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录