Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
4fca46dc
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,发现更多精彩内容 >>
提交
4fca46dc
编写于
4月 17, 2018
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[json] adopt new folding APIs
上级
c8b4f0d0
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
52 addition
and
32 deletion
+52
-32
extensions/json-language-features/client/src/jsonMain.ts
extensions/json-language-features/client/src/jsonMain.ts
+21
-7
extensions/json-language-features/package.json
extensions/json-language-features/package.json
+4
-4
extensions/json-language-features/server/package.json
extensions/json-language-features/server/package.json
+2
-2
extensions/json-language-features/server/src/jsonServerMain.ts
...sions/json-language-features/server/src/jsonServerMain.ts
+16
-10
extensions/json-language-features/server/yarn.lock
extensions/json-language-features/server/yarn.lock
+6
-6
extensions/json-language-features/yarn.lock
extensions/json-language-features/yarn.lock
+3
-3
未找到文件。
extensions/json-language-features/client/src/jsonMain.ts
浏览文件 @
4fca46dc
...
...
@@ -12,7 +12,7 @@ import { workspace, languages, ExtensionContext, extensions, Uri, LanguageConfig
import
{
LanguageClient
,
LanguageClientOptions
,
RequestType
,
ServerOptions
,
TransportKind
,
NotificationType
,
DidChangeConfigurationNotification
,
CancellationToken
}
from
'
vscode-languageclient
'
;
import
TelemetryReporter
from
'
vscode-extension-telemetry
'
;
import
{
FoldingRange
sRequest
,
FoldingRangeRequestParam
}
from
'
vscode-languageserver-protocol-foldingprovider
'
;
import
{
FoldingRange
Request
,
FoldingRangeRequestParam
,
FoldingRangeClientCapabilities
}
from
'
vscode-languageserver-protocol-foldingprovider
'
;
import
{
hash
}
from
'
./utils/hash
'
;
...
...
@@ -97,6 +97,21 @@ export function activate(context: ExtensionContext) {
// Create the language client and start the client.
let
client
=
new
LanguageClient
(
'
json
'
,
localize
(
'
jsonserver.name
'
,
'
JSON Language Server
'
),
serverOptions
,
clientOptions
);
client
.
registerProposedFeatures
();
client
.
registerFeature
({
fillClientCapabilities
(
capabilities
:
FoldingRangeClientCapabilities
):
void
{
let
textDocumentCap
=
capabilities
.
textDocument
;
if
(
!
textDocumentCap
)
{
textDocumentCap
=
capabilities
.
textDocument
=
{};
}
textDocumentCap
.
foldingRange
=
{
dynamicRegistration
:
false
,
rangeLimit
:
5000
,
lineFoldingOnly
:
true
};
},
initialize
(
capabilities
,
documentSelector
):
void
{
}
});
let
disposable
=
client
.
start
();
toDispose
.
push
(
disposable
);
...
...
@@ -144,16 +159,15 @@ export function activate(context: ExtensionContext) {
return
languages
.
registerFoldingProvider
(
documentSelector
,
{
provideFoldingRanges
(
document
:
TextDocument
,
context
:
FoldingContext
,
token
:
CancellationToken
)
{
const
param
:
FoldingRangeRequestParam
=
{
textDocument
:
client
.
code2ProtocolConverter
.
asTextDocumentIdentifier
(
document
),
maxRanges
:
context
.
maxRanges
textDocument
:
client
.
code2ProtocolConverter
.
asTextDocumentIdentifier
(
document
)
};
return
client
.
sendRequest
(
FoldingRange
sRequest
.
type
,
param
,
token
).
then
(
r
es
=>
{
if
(
res
&&
Array
.
isArray
(
res
.
ranges
))
{
return
new
FoldingRangeList
(
r
es
.
ranges
.
map
(
r
=>
new
FoldingRange
(
r
.
startLine
,
r
.
endLine
,
r
.
type
)));
return
client
.
sendRequest
(
FoldingRange
Request
.
type
,
param
,
token
).
then
(
rang
es
=>
{
if
(
Array
.
isArray
(
ranges
))
{
return
new
FoldingRangeList
(
r
anges
.
map
(
r
=>
new
FoldingRange
(
r
.
startLine
,
r
.
endLine
,
r
.
kind
)));
}
return
null
;
},
error
=>
{
client
.
logFailedRequest
(
FoldingRange
s
Request
.
type
,
error
);
client
.
logFailedRequest
(
FoldingRangeRequest
.
type
,
error
);
return
null
;
});
}
...
...
extensions/json-language-features/package.json
浏览文件 @
4fca46dc
...
...
@@ -20,9 +20,9 @@
"postinstall"
:
"cd server && yarn install"
,
"install-client-next"
:
"yarn add vscode-languageclient@next"
},
"categories"
:
[
"Programming Languages"
],
"categories"
:
[
"Programming Languages"
],
"contributes"
:
{
"configuration"
:
{
"id"
:
"json"
,
...
...
@@ -102,7 +102,7 @@
"dependencies"
:
{
"vscode-extension-telemetry"
:
"0.0.15"
,
"vscode-languageclient"
:
"^4.0.0"
,
"vscode-languageserver-protocol-foldingprovider"
:
"^
1.0.1
"
,
"vscode-languageserver-protocol-foldingprovider"
:
"^
2.0.0-next.2
"
,
"vscode-nls"
:
"^3.2.2"
},
"devDependencies"
:
{
...
...
extensions/json-language-features/server/package.json
浏览文件 @
4fca46dc
...
...
@@ -13,9 +13,9 @@
"dependencies"
:
{
"jsonc-parser"
:
"^2.0.0-next.1"
,
"request-light"
:
"^0.2.2"
,
"vscode-json-languageservice"
:
"^3.1.2-next.
1
"
,
"vscode-json-languageservice"
:
"^3.1.2-next.
2
"
,
"vscode-languageserver"
:
"^4.0.0"
,
"vscode-languageserver-protocol-foldingprovider"
:
"^
1.0.1
"
,
"vscode-languageserver-protocol-foldingprovider"
:
"^
2.0.0-next.2
"
,
"vscode-nls"
:
"^3.2.2"
,
"vscode-uri"
:
"^1.0.3"
},
...
...
extensions/json-language-features/server/src/jsonServerMain.ts
浏览文件 @
4fca46dc
...
...
@@ -19,7 +19,7 @@ import { formatError, runSafe, runSafeAsync } from './utils/runner';
import
{
JSONDocument
,
JSONSchema
,
getLanguageService
,
DocumentLanguageSettings
,
SchemaConfiguration
}
from
'
vscode-json-languageservice
'
;
import
{
getLanguageModelCache
}
from
'
./languageModelCache
'
;
import
{
FoldingRange
sRequest
,
FoldingProvider
ServerCapabilities
}
from
'
vscode-languageserver-protocol-foldingprovider
'
;
import
{
FoldingRange
Request
,
FoldingRange
ServerCapabilities
}
from
'
vscode-languageserver-protocol-foldingprovider
'
;
interface
ISchemaAssociations
{
[
pattern
:
string
]:
string
[];
...
...
@@ -60,22 +60,28 @@ documents.listen(connection);
let
clientSnippetSupport
=
false
;
let
clientDynamicRegisterSupport
=
false
;
let
foldingRangeLimit
=
Number
.
MAX_VALUE
;
// After the server has started the client sends an initialize request. The server receives
// in the passed params the rootPath of the workspace plus the client capabilities.
connection
.
onInitialize
((
params
:
InitializeParams
):
InitializeResult
=>
{
function
hasClientCapability
(...
keys
:
string
[])
{
let
c
=
params
.
capabilities
as
any
;
function
getClientCapability
<
T
>
(
name
:
string
,
def
:
T
)
{
let
keys
=
name
.
split
(
'
.
'
);
let
c
:
any
=
params
.
capabilities
;
for
(
let
i
=
0
;
c
&&
i
<
keys
.
length
;
i
++
)
{
if
(
!
c
.
hasOwnProperty
(
keys
[
i
]))
{
return
def
;
}
c
=
c
[
keys
[
i
]];
}
return
!!
c
;
return
c
;
}
clientSnippetSupport
=
hasClientCapability
(
'
textDocument
'
,
'
completion
'
,
'
completionItem
'
,
'
snippetSupport
'
);
clientDynamicRegisterSupport
=
hasClientCapability
(
'
workspace
'
,
'
symbol
'
,
'
dynamicRegistration
'
);
let
capabilities
:
ServerCapabilities
&
FoldingProviderServerCapabilities
=
{
clientSnippetSupport
=
getClientCapability
(
'
textDocument.completion.completionItem.snippetSupport
'
,
false
);
clientDynamicRegisterSupport
=
getClientCapability
(
'
workspace.symbol.dynamicRegistration
'
,
false
);
foldingRangeLimit
=
getClientCapability
(
'
textDocument.foldingRange.rangeLimit
'
,
Number
.
MAX_VALUE
);
let
capabilities
:
ServerCapabilities
&
FoldingRangeServerCapabilities
=
{
// Tell the client that the server works in FULL text document sync mode
textDocumentSync
:
documents
.
syncKind
,
completionProvider
:
clientSnippetSupport
?
{
resolveProvider
:
true
,
triggerCharacters
:
[
'
"
'
,
'
:
'
]
}
:
void
0
,
...
...
@@ -83,7 +89,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
documentSymbolProvider
:
true
,
documentRangeFormattingProvider
:
false
,
colorProvider
:
true
,
foldingProvider
:
true
folding
Range
Provider
:
true
};
return
{
capabilities
};
...
...
@@ -364,11 +370,11 @@ connection.onColorPresentation((params, token) => {
},
[],
`Error while computing color presentations for
${
params
.
textDocument
.
uri
}
`
,
token
);
});
connection
.
onRequest
(
FoldingRange
s
Request
.
type
,
(
params
,
token
)
=>
{
connection
.
onRequest
(
FoldingRangeRequest
.
type
,
(
params
,
token
)
=>
{
return
runSafe
(()
=>
{
let
document
=
documents
.
get
(
params
.
textDocument
.
uri
);
if
(
document
)
{
return
languageService
.
getFoldingRanges
(
document
,
{
maxRanges
:
params
.
maxRanges
});
return
languageService
.
getFoldingRanges
(
document
,
{
rangeLimit
:
foldingRangeLimit
});
}
return
null
;
},
null
,
`Error while computing folding ranges for
${
params
.
textDocument
.
uri
}
`
,
token
);
...
...
extensions/json-language-features/server/yarn.lock
浏览文件 @
4fca46dc
...
...
@@ -72,9 +72,9 @@ request-light@^0.2.2:
https-proxy-agent "2.1.1"
vscode-nls "^2.0.2"
vscode-json-languageservice@^3.1.2-next.
1
:
version "3.1.2-next.
1
"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.1.2-next.
1.tgz#8acee581c664e2af72ade2f08252aeae9b5918ca
"
vscode-json-languageservice@^3.1.2-next.
2
:
version "3.1.2-next.
2
"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.1.2-next.
2.tgz#da5346e5c22edbce739f29c110eb41732d41dc2d
"
dependencies:
jsonc-parser "^2.0.0"
vscode-languageserver-types "^3.6.1"
...
...
@@ -85,9 +85,9 @@ vscode-jsonrpc@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4"
vscode-languageserver-protocol-foldingprovider@^
1.0.1
:
version "
1.0.1
"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-
1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44
"
vscode-languageserver-protocol-foldingprovider@^
2.0.0-next.2
:
version "
2.0.0-next.2
"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-
2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0
"
dependencies:
vscode-languageserver-protocol "^3.6.0"
vscode-languageserver-types "^3.6.0"
...
...
extensions/json-language-features/yarn.lock
浏览文件 @
4fca46dc
...
...
@@ -44,9 +44,9 @@ vscode-languageclient@^4.0.0:
dependencies:
vscode-languageserver-protocol "^3.6.0"
vscode-languageserver-protocol-foldingprovider@^
1.0.1
:
version "
1.0.1
"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-
1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44
"
vscode-languageserver-protocol-foldingprovider@^
2.0.0-next.2
:
version "
2.0.0-next.2
"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-
2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0
"
dependencies:
vscode-languageserver-protocol "^3.6.0"
vscode-languageserver-types "^3.6.0"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录