Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c0278341
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,发现更多精彩内容 >>
提交
c0278341
编写于
1月 15, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
link detection for remote file systems, #41482
上级
c677bf31
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
69 addition
and
22 deletion
+69
-22
src/vs/workbench/api/node/extHost.api.impl.ts
src/vs/workbench/api/node/extHost.api.impl.ts
+21
-21
src/vs/workbench/api/node/extHostFileSystem.ts
src/vs/workbench/api/node/extHostFileSystem.ts
+48
-1
未找到文件。
src/vs/workbench/api/node/extHost.api.impl.ts
浏览文件 @
c0278341
...
...
@@ -106,8 +106,8 @@ export function createApiFactory(
const
extHostDebugService
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostDebugService
,
new
ExtHostDebugService
(
rpcProtocol
,
extHostWorkspace
));
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostConfiguration
,
extHostConfiguration
);
const
extHostDiagnostics
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostDiagnostics
,
new
ExtHostDiagnostics
(
rpcProtocol
));
const
l
anguageFeatures
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostLanguageFeatures
,
new
ExtHostLanguageFeatures
(
rpcProtocol
,
extHostDocuments
,
extHostCommands
,
extHostHeapService
,
extHostDiagnostics
));
const
extHostFileSystem
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostFileSystem
,
new
ExtHostFileSystem
(
rpcProtocol
));
const
extHostL
anguageFeatures
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostLanguageFeatures
,
new
ExtHostLanguageFeatures
(
rpcProtocol
,
extHostDocuments
,
extHostCommands
,
extHostHeapService
,
extHostDiagnostics
));
const
extHostFileSystem
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostFileSystem
,
new
ExtHostFileSystem
(
rpcProtocol
,
extHostLanguageFeatures
));
const
extHostFileSystemEvent
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostFileSystemEventService
,
new
ExtHostFileSystemEventService
());
const
extHostQuickOpen
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostQuickOpen
,
new
ExtHostQuickOpen
(
rpcProtocol
,
extHostWorkspace
,
extHostCommands
));
const
extHostTerminalService
=
rpcProtocol
.
set
(
ExtHostContext
.
ExtHostTerminalService
,
new
ExtHostTerminalService
(
rpcProtocol
));
...
...
@@ -236,61 +236,61 @@ export function createApiFactory(
return
score
(
toLanguageSelector
(
selector
),
document
.
uri
,
document
.
languageId
);
},
registerCodeActionsProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
CodeActionProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerCodeActionProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerCodeActionProvider
(
selector
,
provider
);
},
registerCodeLensProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
CodeLensProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerCodeLensProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerCodeLensProvider
(
selector
,
provider
);
},
registerDefinitionProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DefinitionProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDefinitionProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDefinitionProvider
(
selector
,
provider
);
},
registerImplementationProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
ImplementationProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerImplementationProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerImplementationProvider
(
selector
,
provider
);
},
registerTypeDefinitionProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
TypeDefinitionProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerTypeDefinitionProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerTypeDefinitionProvider
(
selector
,
provider
);
},
registerHoverProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
HoverProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerHoverProvider
(
selector
,
provider
,
extension
.
id
);
return
extHostL
anguageFeatures
.
registerHoverProvider
(
selector
,
provider
,
extension
.
id
);
},
registerDocumentHighlightProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentHighlightProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDocumentHighlightProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDocumentHighlightProvider
(
selector
,
provider
);
},
registerReferenceProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
ReferenceProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerReferenceProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerReferenceProvider
(
selector
,
provider
);
},
registerRenameProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
RenameProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerRenameProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerRenameProvider
(
selector
,
provider
);
},
registerDocumentSymbolProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentSymbolProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDocumentSymbolProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDocumentSymbolProvider
(
selector
,
provider
);
},
registerWorkspaceSymbolProvider
(
provider
:
vscode
.
WorkspaceSymbolProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerWorkspaceSymbolProvider
(
provider
);
return
extHostL
anguageFeatures
.
registerWorkspaceSymbolProvider
(
provider
);
},
registerDocumentFormattingEditProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentFormattingEditProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDocumentFormattingEditProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDocumentFormattingEditProvider
(
selector
,
provider
);
},
registerDocumentRangeFormattingEditProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentRangeFormattingEditProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDocumentRangeFormattingEditProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDocumentRangeFormattingEditProvider
(
selector
,
provider
);
},
registerOnTypeFormattingEditProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
OnTypeFormattingEditProvider
,
firstTriggerCharacter
:
string
,
...
moreTriggerCharacters
:
string
[]):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerOnTypeFormattingEditProvider
(
selector
,
provider
,
[
firstTriggerCharacter
].
concat
(
moreTriggerCharacters
));
return
extHostL
anguageFeatures
.
registerOnTypeFormattingEditProvider
(
selector
,
provider
,
[
firstTriggerCharacter
].
concat
(
moreTriggerCharacters
));
},
registerSignatureHelpProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
SignatureHelpProvider
,
...
triggerCharacters
:
string
[]):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerSignatureHelpProvider
(
selector
,
provider
,
triggerCharacters
);
return
extHostL
anguageFeatures
.
registerSignatureHelpProvider
(
selector
,
provider
,
triggerCharacters
);
},
registerCompletionItemProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
CompletionItemProvider
,
...
triggerCharacters
:
string
[]):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerCompletionItemProvider
(
selector
,
provider
,
triggerCharacters
);
return
extHostL
anguageFeatures
.
registerCompletionItemProvider
(
selector
,
provider
,
triggerCharacters
);
},
registerDocumentLinkProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentLinkProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerDocumentLinkProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerDocumentLinkProvider
(
selector
,
provider
);
},
registerColorProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
DocumentColorProvider
):
vscode
.
Disposable
{
return
l
anguageFeatures
.
registerColorProvider
(
selector
,
provider
);
return
extHostL
anguageFeatures
.
registerColorProvider
(
selector
,
provider
);
},
setLanguageConfiguration
:
(
language
:
string
,
configuration
:
vscode
.
LanguageConfiguration
):
vscode
.
Disposable
=>
{
return
l
anguageFeatures
.
setLanguageConfiguration
(
language
,
configuration
);
return
extHostL
anguageFeatures
.
setLanguageConfiguration
(
language
,
configuration
);
}
};
...
...
src/vs/workbench/api/node/extHostFileSystem.ts
浏览文件 @
c0278341
...
...
@@ -12,19 +12,65 @@ import { IStat } from 'vs/platform/files/common/files';
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
asWinJsPromise
}
from
'
vs/base/common/async
'
;
import
{
IPatternInfo
}
from
'
vs/platform/search/common/search
'
;
import
{
values
}
from
'
vs/base/common/map
'
;
import
{
Range
}
from
'
vs/workbench/api/node/extHostTypes
'
;
import
{
ExtHostLanguageFeatures
}
from
'
vs/workbench/api/node/extHostLanguageFeatures
'
;
class
FsLinkProvider
implements
vscode
.
DocumentLinkProvider
{
private
_schemes
=
new
Set
<
string
>
();
private
_regex
:
RegExp
;
add
(
scheme
:
string
):
void
{
this
.
_regex
=
undefined
;
this
.
_schemes
.
add
(
scheme
);
}
delete
(
scheme
:
string
):
void
{
if
(
this
.
_schemes
.
delete
(
scheme
))
{
this
.
_regex
=
undefined
;
}
}
provideDocumentLinks
(
document
:
vscode
.
TextDocument
,
token
:
vscode
.
CancellationToken
):
vscode
.
ProviderResult
<
vscode
.
DocumentLink
[]
>
{
if
(
this
.
_schemes
.
size
===
0
)
{
return
undefined
;
}
if
(
!
this
.
_regex
)
{
this
.
_regex
=
new
RegExp
(
`(
${(
values
(
this
.
_schemes
).
join
(
'
|
'
))}
):[^\\s]+`
,
'
gi
'
);
}
let
result
:
vscode
.
DocumentLink
[]
=
[];
let
max
=
Math
.
min
(
document
.
lineCount
,
2500
);
for
(
let
line
=
0
;
line
<
max
;
line
++
)
{
this
.
_regex
.
lastIndex
=
0
;
let
textLine
=
document
.
lineAt
(
line
);
let
m
:
RegExpMatchArray
;
while
(
m
=
this
.
_regex
.
exec
(
textLine
.
text
))
{
const
target
=
URI
.
parse
(
m
[
0
]);
const
range
=
new
Range
(
line
,
this
.
_regex
.
lastIndex
-
m
[
0
].
length
,
line
,
this
.
_regex
.
lastIndex
);
result
.
push
({
target
,
range
});
}
}
return
result
;
}
}
export
class
ExtHostFileSystem
implements
ExtHostFileSystemShape
{
private
readonly
_proxy
:
MainThreadFileSystemShape
;
private
readonly
_provider
=
new
Map
<
number
,
vscode
.
FileSystemProvider
>
();
private
readonly
_linkProvider
=
new
FsLinkProvider
();
private
_handlePool
:
number
=
0
;
constructor
(
mainContext
:
IMainContext
)
{
constructor
(
mainContext
:
IMainContext
,
extHostLanguageFeatures
:
ExtHostLanguageFeatures
)
{
this
.
_proxy
=
mainContext
.
getProxy
(
MainContext
.
MainThreadFileSystem
);
extHostLanguageFeatures
.
registerDocumentLinkProvider
(
'
*
'
,
this
.
_linkProvider
);
}
registerFileSystemProvider
(
scheme
:
string
,
provider
:
vscode
.
FileSystemProvider
)
{
const
handle
=
this
.
_handlePool
++
;
this
.
_linkProvider
.
add
(
scheme
);
this
.
_provider
.
set
(
handle
,
provider
);
this
.
_proxy
.
$registerFileSystemProvider
(
handle
,
scheme
);
if
(
provider
.
root
)
{
...
...
@@ -40,6 +86,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
if
(
reg
)
{
reg
.
dispose
();
}
this
.
_linkProvider
.
delete
(
scheme
);
this
.
_provider
.
delete
(
handle
);
this
.
_proxy
.
$unregisterFileSystemProvider
(
handle
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录