Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
67a559db
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,发现更多精彩内容 >>
未验证
提交
67a559db
编写于
7月 17, 2019
作者:
P
Pine
提交者:
GitHub
7月 17, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #77538 from microsoft/pine/scss-resolver
[css] Upgrade service and add dynamic link support
上级
b11b93ed
750ea458
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
80 addition
and
13 deletion
+80
-13
extensions/css-language-features/server/package.json
extensions/css-language-features/server/package.json
+1
-1
extensions/css-language-features/server/src/cssServerMain.ts
extensions/css-language-features/server/src/cssServerMain.ts
+48
-8
extensions/css-language-features/server/src/utils/runner.ts
extensions/css-language-features/server/src/utils/runner.ts
+21
-0
extensions/css-language-features/server/yarn.lock
extensions/css-language-features/server/yarn.lock
+10
-4
未找到文件。
extensions/css-language-features/server/package.json
浏览文件 @
67a559db
...
...
@@ -9,7 +9,7 @@
},
"main"
:
"./out/cssServerMain"
,
"dependencies"
:
{
"vscode-css-languageservice"
:
"^4.0.
2
"
,
"vscode-css-languageservice"
:
"^4.0.
3-next.0
"
,
"vscode-languageserver"
:
"^5.3.0-next.8"
},
"devDependencies"
:
{
...
...
extensions/css-language-features/server/src/cssServerMain.ts
浏览文件 @
67a559db
...
...
@@ -8,11 +8,12 @@ import {
}
from
'
vscode-languageserver
'
;
import
URI
from
'
vscode-uri
'
;
import
{
TextDocument
,
CompletionList
,
Position
}
from
'
vscode-languageserver-types
'
;
import
{
stat
as
fsStat
}
from
'
fs
'
;
import
{
getCSSLanguageService
,
getSCSSLanguageService
,
getLESSLanguageService
,
LanguageSettings
,
LanguageService
,
Stylesheet
}
from
'
vscode-css-languageservice
'
;
import
{
getCSSLanguageService
,
getSCSSLanguageService
,
getLESSLanguageService
,
LanguageSettings
,
LanguageService
,
Stylesheet
,
FileSystemProvider
,
FileType
}
from
'
vscode-css-languageservice
'
;
import
{
getLanguageModelCache
}
from
'
./languageModelCache
'
;
import
{
getPathCompletionParticipant
}
from
'
./pathCompletion
'
;
import
{
formatError
,
runSafe
}
from
'
./utils/runner
'
;
import
{
formatError
,
runSafe
,
runSafeAsync
}
from
'
./utils/runner
'
;
import
{
getDocumentContext
}
from
'
./utils/documentContext
'
;
import
{
getDataProviders
}
from
'
./customData
'
;
...
...
@@ -52,6 +53,45 @@ let workspaceFolders: WorkspaceFolder[];
const
languageServices
:
{
[
id
:
string
]:
LanguageService
}
=
{};
const
fileSystemProvider
:
FileSystemProvider
=
{
stat
(
documentUri
:
string
)
{
const
filePath
=
URI
.
parse
(
documentUri
).
fsPath
;
return
new
Promise
((
c
,
e
)
=>
{
fsStat
(
filePath
,
(
err
,
stats
)
=>
{
if
(
err
)
{
if
(
err
.
code
===
'
ENOENT
'
)
{
return
c
({
type
:
FileType
.
Unknown
,
ctime
:
-
1
,
mtime
:
-
1
,
size
:
-
1
});
}
else
{
return
e
(
err
);
}
}
let
type
=
FileType
.
Unknown
;
if
(
stats
.
isFile
())
{
type
=
FileType
.
File
;
}
else
if
(
stats
.
isDirectory
)
{
type
=
FileType
.
Directory
;
}
else
if
(
stats
.
isSymbolicLink
)
{
type
=
FileType
.
SymbolicLink
;
}
c
({
type
,
ctime
:
stats
.
ctime
.
getTime
(),
mtime
:
stats
.
mtime
.
getTime
(),
size
:
stats
.
size
});
});
});
}
};
// 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
=>
{
...
...
@@ -81,9 +121,9 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
scopedSettingsSupport
=
!!
getClientCapability
(
'
workspace.configuration
'
,
false
);
foldingRangeLimit
=
getClientCapability
(
'
textDocument.foldingRange.rangeLimit
'
,
Number
.
MAX_VALUE
);
languageServices
.
css
=
getCSSLanguageService
({
customDataProviders
});
languageServices
.
scss
=
getSCSSLanguageService
({
customDataProviders
});
languageServices
.
less
=
getLESSLanguageService
({
customDataProviders
});
languageServices
.
css
=
getCSSLanguageService
({
customDataProviders
,
fileSystemProvider
});
languageServices
.
scss
=
getSCSSLanguageService
({
customDataProviders
,
fileSystemProvider
});
languageServices
.
less
=
getLESSLanguageService
({
customDataProviders
,
fileSystemProvider
});
const
capabilities
:
ServerCapabilities
=
{
// Tell the client that the server works in FULL text document sync mode
...
...
@@ -256,13 +296,13 @@ connection.onDocumentHighlight((documentHighlightParams, token) => {
});
connection
.
onDocumentLinks
((
documentLinkParams
,
token
)
=>
{
return
runSafe
(
()
=>
{
connection
.
onDocumentLinks
(
async
(
documentLinkParams
,
token
)
=>
{
return
runSafe
Async
(
async
()
=>
{
const
document
=
documents
.
get
(
documentLinkParams
.
textDocument
.
uri
);
if
(
document
)
{
const
documentContext
=
getDocumentContext
(
document
.
uri
,
workspaceFolders
);
const
stylesheet
=
stylesheets
.
get
(
document
);
return
getLanguageService
(
document
).
findDocumentLinks
(
document
,
stylesheet
,
documentContext
);
return
await
getLanguageService
(
document
).
findDocumentLinks2
(
document
,
stylesheet
,
documentContext
);
}
return
[];
},
[],
`Error while computing document links for
${
documentLinkParams
.
textDocument
.
uri
}
`
,
token
);
...
...
extensions/css-language-features/server/src/utils/runner.ts
浏览文件 @
67a559db
...
...
@@ -17,6 +17,27 @@ export function formatError(message: string, err: any): string {
return
message
;
}
export
function
runSafeAsync
<
T
>
(
func
:
()
=>
Thenable
<
T
>
,
errorVal
:
T
,
errorMessage
:
string
,
token
:
CancellationToken
):
Thenable
<
T
|
ResponseError
<
any
>>
{
return
new
Promise
<
T
|
ResponseError
<
any
>>
((
resolve
)
=>
{
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
));
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
)
=>
{
setImmediate
(()
=>
{
...
...
extensions/css-language-features/server/yarn.lock
浏览文件 @
67a559db
...
...
@@ -781,13 +781,14 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
vscode-css-languageservice@^4.0.
2
:
version "4.0.
2
"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.
2.tgz#7496e538b0c151feac16d5888cc0b1b104f4c736
"
integrity sha512-
pTnfXbsME3pl+yDfhUp/mtvPyIJk0Le4zqJxDn56s9GY9LqY0RmkSEh0oHH6D0HXR3Ni6wKosIaqu8a2G0+jd
w==
vscode-css-languageservice@^4.0.
3-next.0
:
version "4.0.
3-next.0
"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.
3-next.0.tgz#ba96894cf2a0c86c744a1274590f27e55ea60f58
"
integrity sha512-
ku58Y5jDFNfDicv2AAhgu1edgfGcRZPwlKu6EBK2ck/O/Vco7Zy64FDoClJghcYBhJiDs7sy2q/UtQD0IoGbR
w==
dependencies:
vscode-languageserver-types "^3.15.0-next.2"
vscode-nls "^4.1.1"
vscode-uri "^2.0.3"
vscode-jsonrpc@^4.1.0-next.2:
version "4.1.0-next.2"
...
...
@@ -831,6 +832,11 @@ vscode-uri@^1.0.6:
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
vscode-uri@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录