Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
43392774
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,发现更多精彩内容 >>
提交
43392774
编写于
3月 16, 2018
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[json] update sefeRunner
上级
18bde2a5
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
35 addition
and
17 deletion
+35
-17
extensions/json/server/src/jsonServerMain.ts
extensions/json/server/src/jsonServerMain.ts
+14
-10
extensions/json/server/src/utils/runner.ts
extensions/json/server/src/utils/runner.ts
+21
-7
未找到文件。
extensions/json/server/src/jsonServerMain.ts
浏览文件 @
43392774
...
...
@@ -15,7 +15,7 @@ import * as fs from 'fs';
import
URI
from
'
vscode-uri
'
;
import
*
as
URL
from
'
url
'
;
import
{
startsWith
}
from
'
./utils/strings
'
;
import
{
formatError
,
runSafe
,
runSafeAsync
}
from
'
./utils/
errors
'
;
import
{
formatError
,
runSafe
,
runSafeAsync
}
from
'
./utils/
runner
'
;
import
{
JSONDocument
,
JSONSchema
,
getLanguageService
,
DocumentLanguageSettings
,
SchemaConfiguration
}
from
'
vscode-json-languageservice
'
;
import
{
getLanguageModelCache
}
from
'
./languageModelCache
'
;
import
{
getFoldingRegions
}
from
'
./jsonFolding
'
;
...
...
@@ -42,8 +42,12 @@ namespace SchemaContentChangeNotification {
let
connection
:
IConnection
=
createConnection
();
process
.
on
(
'
unhandledRejection
'
,
(
e
:
any
)
=>
{
con
nection
.
con
sole
.
error
(
formatError
(
`Unhandled exception`
,
e
));
console
.
error
(
formatError
(
`Unhandled exception`
,
e
));
});
process
.
on
(
'
uncaughtException
'
,
(
e
:
any
)
=>
{
console
.
error
(
formatError
(
`Unhandled exception`
,
e
));
});
console
.
log
=
connection
.
console
.
log
.
bind
(
connection
.
console
);
console
.
error
=
connection
.
console
.
error
.
bind
(
connection
.
console
);
...
...
@@ -302,26 +306,26 @@ function getJSONDocument(document: TextDocument): JSONDocument {
return
jsonDocuments
.
get
(
document
);
}
connection
.
onCompletion
(
textDocumentPosition
=>
{
connection
.
onCompletion
(
(
textDocumentPosition
,
token
)
=>
{
return
runSafeAsync
(()
=>
{
let
document
=
documents
.
get
(
textDocumentPosition
.
textDocument
.
uri
);
let
jsonDocument
=
getJSONDocument
(
document
);
return
languageService
.
doComplete
(
document
,
textDocumentPosition
.
position
,
jsonDocument
);
},
null
,
`Error while computing completions for
${
textDocumentPosition
.
textDocument
.
uri
}
`
);
},
null
,
`Error while computing completions for
${
textDocumentPosition
.
textDocument
.
uri
}
`
,
token
);
});
connection
.
onCompletionResolve
(
completionItem
=>
{
connection
.
onCompletionResolve
(
(
completionItem
,
token
)
=>
{
return
runSafeAsync
(()
=>
{
return
languageService
.
doResolve
(
completionItem
);
},
completionItem
,
`Error while resolving completion proposal`
);
},
completionItem
,
`Error while resolving completion proposal`
,
token
);
});
connection
.
onHover
(
textDocumentPositionParams
=>
{
connection
.
onHover
(
(
textDocumentPositionParams
,
token
)
=>
{
return
runSafeAsync
(()
=>
{
let
document
=
documents
.
get
(
textDocumentPositionParams
.
textDocument
.
uri
);
let
jsonDocument
=
getJSONDocument
(
document
);
return
languageService
.
doHover
(
document
,
textDocumentPositionParams
.
position
,
jsonDocument
);
},
null
,
`Error while computing hover for
${
textDocumentPositionParams
.
textDocument
.
uri
}
`
);
},
null
,
`Error while computing hover for
${
textDocumentPositionParams
.
textDocument
.
uri
}
`
,
token
);
});
connection
.
onDocumentSymbol
((
documentSymbolParams
,
token
)
=>
{
...
...
@@ -339,7 +343,7 @@ connection.onDocumentRangeFormatting((formatParams, token) => {
},
[],
`Error while formatting range for
${
formatParams
.
textDocument
.
uri
}
`
,
token
);
});
connection
.
onRequest
(
DocumentColorRequest
.
type
,
params
=>
{
connection
.
onRequest
(
DocumentColorRequest
.
type
,
(
params
,
token
)
=>
{
return
runSafeAsync
(()
=>
{
let
document
=
documents
.
get
(
params
.
textDocument
.
uri
);
if
(
document
)
{
...
...
@@ -347,7 +351,7 @@ connection.onRequest(DocumentColorRequest.type, params => {
return
languageService
.
findDocumentColors
(
document
,
jsonDocument
);
}
return
Promise
.
resolve
([]);
},
[],
`Error while computing document colors for
${
params
.
textDocument
.
uri
}
`
);
},
[],
`Error while computing document colors for
${
params
.
textDocument
.
uri
}
`
,
token
);
});
connection
.
onRequest
(
ColorPresentationRequest
.
type
,
(
params
,
token
)
=>
{
...
...
extensions/json/server/src/utils/
errors
.ts
→
extensions/json/server/src/utils/
runner
.ts
浏览文件 @
43392774
...
...
@@ -18,16 +18,30 @@ export function formatError(message: string, err: any): string {
return
message
;
}
export
function
runSafeAsync
<
T
>
(
func
:
()
=>
Thenable
<
T
>
,
errorVal
:
T
,
errorMessage
:
string
):
Thenable
<
T
>
{
let
t
=
func
();
return
t
.
then
(
void
0
,
e
=>
{
export
function
runSafeAsync
<
T
>
(
func
:
()
=>
Thenable
<
T
>
,
errorVal
:
T
,
errorMessage
:
string
,
token
:
CancellationToken
):
Thenable
<
T
|
ResponseError
<
any
>>
{
return
new
Promise
<
T
|
ResponseError
<
any
>>
((
resolve
,
reject
)
=>
{
setImmediate
(()
=>
{
if
(
token
.
isCancellationRequested
)
{
resolve
(
cancelValue
());
}
return
func
().
then
(
result
=>
{
if
(
token
.
isCancellationRequested
)
{
resolve
(
cancelValue
());
return
;
}
else
{
resolve
(
result
);
}
},
e
=>
{
console
.
error
(
formatError
(
errorMessage
,
e
));
return
errorVal
;
resolve
(
errorVal
);
});
});
});
}
export
function
runSafe
<
T
,
E
>
(
func
:
()
=>
T
,
errorVal
:
T
,
errorMessage
:
string
,
token
:
CancellationToken
):
Thenable
<
T
|
ResponseError
<
E
>>
{
return
new
Promise
<
T
|
ResponseError
<
E
>>
((
resolve
,
reject
)
=>
{
set
Timeout
(()
=>
{
set
Immediate
(()
=>
{
if
(
token
.
isCancellationRequested
)
{
resolve
(
cancelValue
());
}
else
{
...
...
@@ -45,7 +59,7 @@ export function runSafe<T, E>(func: () => T, errorVal: T, errorMessage: string,
resolve
(
errorVal
);
}
}
}
,
100
);
});
});
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录