Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
e5f694eb
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,发现更多精彩内容 >>
提交
e5f694eb
编写于
4月 16, 2019
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Can't open workspace file with absolute paths
上级
9573a1a0
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
48 addition
and
67 deletion
+48
-67
src/vs/code/test/node/windowsFinder.test.ts
src/vs/code/test/node/windowsFinder.test.ts
+4
-1
src/vs/editor/contrib/snippet/test/snippetVariables.test.ts
src/vs/editor/contrib/snippet/test/snippetVariables.test.ts
+5
-3
src/vs/platform/workspace/common/workspace.ts
src/vs/platform/workspace/common/workspace.ts
+21
-30
src/vs/platform/workspace/test/common/testWorkspace.ts
src/vs/platform/workspace/test/common/testWorkspace.ts
+2
-5
src/vs/platform/workspace/test/common/workspace.test.ts
src/vs/platform/workspace/test/common/workspace.test.ts
+5
-5
src/vs/workbench/browser/nodeless.simpleservices.ts
src/vs/workbench/browser/nodeless.simpleservices.ts
+2
-5
src/vs/workbench/contrib/search/test/common/queryBuilder.test.ts
...workbench/contrib/search/test/common/queryBuilder.test.ts
+7
-6
src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts
...es/backup/test/electron-browser/backupFileService.test.ts
+0
-1
src/vs/workbench/services/configuration/browser/configurationService.ts
...ch/services/configuration/browser/configurationService.ts
+2
-11
未找到文件。
src/vs/code/test/node/windowsFinder.test.ts
浏览文件 @
e5f694eb
...
@@ -10,6 +10,7 @@ import { IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
...
@@ -10,6 +10,7 @@ import { IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
import
{
toWorkspaceFolders
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
toWorkspaceFolders
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
getPathFromAmdModule
}
from
'
vs/base/common/amd
'
;
import
{
getPathFromAmdModule
}
from
'
vs/base/common/amd
'
;
import
{
dirname
}
from
'
vs/base/common/resources
'
;
const
fixturesFolder
=
getPathFromAmdModule
(
require
,
'
./fixtures
'
);
const
fixturesFolder
=
getPathFromAmdModule
(
require
,
'
./fixtures
'
);
...
@@ -18,13 +19,15 @@ const testWorkspace: IWorkspaceIdentifier = {
...
@@ -18,13 +19,15 @@ const testWorkspace: IWorkspaceIdentifier = {
configPath
:
URI
.
file
(
path
.
join
(
fixturesFolder
,
'
workspaces.json
'
))
configPath
:
URI
.
file
(
path
.
join
(
fixturesFolder
,
'
workspaces.json
'
))
};
};
const
testWorkspaceFolders
=
toWorkspaceFolders
([{
path
:
path
.
join
(
fixturesFolder
,
'
vscode_workspace_1_folder
'
)
},
{
path
:
path
.
join
(
fixturesFolder
,
'
vscode_workspace_2_folder
'
)
}],
dirname
(
testWorkspace
.
configPath
));
function
options
(
custom
?:
Partial
<
IBestWindowOrFolderOptions
<
ISimpleWindow
>>
):
IBestWindowOrFolderOptions
<
ISimpleWindow
>
{
function
options
(
custom
?:
Partial
<
IBestWindowOrFolderOptions
<
ISimpleWindow
>>
):
IBestWindowOrFolderOptions
<
ISimpleWindow
>
{
return
{
return
{
windows
:
[],
windows
:
[],
newWindow
:
false
,
newWindow
:
false
,
context
:
OpenContext
.
CLI
,
context
:
OpenContext
.
CLI
,
codeSettingsFolder
:
'
_vscode
'
,
codeSettingsFolder
:
'
_vscode
'
,
localWorkspaceResolver
:
workspace
=>
{
return
workspace
===
testWorkspace
?
{
id
:
testWorkspace
.
id
,
configPath
:
workspace
.
configPath
,
folders
:
t
oWorkspaceFolders
([{
path
:
path
.
join
(
fixturesFolder
,
'
vscode_workspace_1_folder
'
)
},
{
path
:
path
.
join
(
fixturesFolder
,
'
vscode_workspace_2_folder
'
)
}])
}
:
null
!
;
},
localWorkspaceResolver
:
workspace
=>
{
return
workspace
===
testWorkspace
?
{
id
:
testWorkspace
.
id
,
configPath
:
workspace
.
configPath
,
folders
:
t
estWorkspaceFolders
}
:
null
;
},
...
custom
...
custom
};
};
}
}
...
...
src/vs/editor/contrib/snippet/test/snippetVariables.test.ts
浏览文件 @
e5f694eb
...
@@ -10,7 +10,7 @@ import { SelectionBasedVariableResolver, CompositeSnippetVariableResolver, Model
...
@@ -10,7 +10,7 @@ import { SelectionBasedVariableResolver, CompositeSnippetVariableResolver, Model
import
{
SnippetParser
,
Variable
,
VariableResolver
}
from
'
vs/editor/contrib/snippet/snippetParser
'
;
import
{
SnippetParser
,
Variable
,
VariableResolver
}
from
'
vs/editor/contrib/snippet/snippetParser
'
;
import
{
TextModel
}
from
'
vs/editor/common/model/textModel
'
;
import
{
TextModel
}
from
'
vs/editor/common/model/textModel
'
;
import
{
IClipboardService
}
from
'
vs/platform/clipboard/common/clipboardService
'
;
import
{
IClipboardService
}
from
'
vs/platform/clipboard/common/clipboardService
'
;
import
{
Workspace
,
toWorkspaceFolders
,
IWorkspace
,
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
Workspace
,
toWorkspaceFolders
,
IWorkspace
,
IWorkspaceContextService
,
toWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
suite
(
'
Snippet Variables Resolver
'
,
function
()
{
suite
(
'
Snippet Variables Resolver
'
,
function
()
{
...
@@ -328,11 +328,13 @@ suite('Snippet Variables Resolver', function () {
...
@@ -328,11 +328,13 @@ suite('Snippet Variables Resolver', function () {
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
undefined
);
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
undefined
);
// single folder workspace without config
// single folder workspace without config
workspace
=
new
Workspace
(
''
,
toWorkspaceFolders
([{
path
:
'
/folderName
'
}])
);
workspace
=
new
Workspace
(
''
,
[
toWorkspaceFolder
(
URI
.
file
(
'
/folderName
'
))]
);
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
'
folderName
'
);
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
'
folderName
'
);
// workspace with config
// workspace with config
workspace
=
new
Workspace
(
''
,
toWorkspaceFolders
([{
path
:
'
folderName
'
}]),
URI
.
file
(
'
testWorkspace.code-workspace
'
));
const
workspaceFile
=
URI
.
file
(
'
testWorkspace.code-workspace
'
);
const
workspaceDir
=
URI
.
file
(
'
workspace
'
);
workspace
=
new
Workspace
(
''
,
toWorkspaceFolders
([{
path
:
'
folderName
'
}],
workspaceDir
),
workspaceFile
);
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
'
testWorkspace
'
);
assertVariableResolve
(
resolver
,
'
WORKSPACE_NAME
'
,
'
testWorkspace
'
);
});
});
});
});
\ No newline at end of file
src/vs/platform/workspace/common/workspace.ts
浏览文件 @
e5f694eb
...
@@ -4,14 +4,11 @@
...
@@ -4,14 +4,11 @@
*--------------------------------------------------------------------------------------------*/
*--------------------------------------------------------------------------------------------*/
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
isAbsolute
}
from
'
vs/base/common/path
'
;
import
*
as
resources
from
'
vs/base/common/resources
'
;
import
*
as
resources
from
'
vs/base/common/resources
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
TernarySearchTree
}
from
'
vs/base/common/map
'
;
import
{
TernarySearchTree
}
from
'
vs/base/common/map
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
IWorkspaceIdentifier
,
IStoredWorkspaceFolder
,
isRawFileWorkspaceFolder
,
isRawUriWorkspaceFolder
,
ISingleFolderWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
IStoredWorkspaceFolder
,
isRawFileWorkspaceFolder
,
isRawUriWorkspaceFolder
,
ISingleFolderWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
coalesce
,
distinct
}
from
'
vs/base/common/arrays
'
;
import
{
isLinux
}
from
'
vs/base/common/platform
'
;
export
const
IWorkspaceContextService
=
createDecorator
<
IWorkspaceContextService
>
(
'
contextService
'
);
export
const
IWorkspaceContextService
=
createDecorator
<
IWorkspaceContextService
>
(
'
contextService
'
);
...
@@ -225,17 +222,20 @@ export class WorkspaceFolder implements IWorkspaceFolder {
...
@@ -225,17 +222,20 @@ export class WorkspaceFolder implements IWorkspaceFolder {
}
}
}
}
export
function
toWorkspaceFolders
(
configuredFolders
:
IStoredWorkspaceFolder
[],
relativeTo
?:
URI
):
WorkspaceFolder
[]
{
export
function
toWorkspaceFolder
(
resource
:
URI
):
WorkspaceFolder
{
let
workspaceFolders
=
parseWorkspaceFolders
(
configuredFolders
,
relativeTo
);
return
new
WorkspaceFolder
({
uri
:
resource
,
index
:
0
,
name
:
resources
.
basenameOrAuthority
(
resource
)
},
{
uri
:
resource
.
toString
()
});
return
ensureUnique
(
coalesce
(
workspaceFolders
))
.
map
(({
uri
,
raw
,
name
},
index
)
=>
new
WorkspaceFolder
({
uri
,
name
:
name
||
resources
.
basenameOrAuthority
(
uri
),
index
},
raw
));
}
}
function
parseWorkspaceFolders
(
configuredFolders
:
IStoredWorkspaceFolder
[],
relativeTo
:
URI
|
undefined
):
Array
<
WorkspaceFolder
|
undefined
>
{
export
function
toWorkspaceFolders
(
configuredFolders
:
IStoredWorkspaceFolder
[],
relativeTo
:
URI
):
WorkspaceFolder
[]
{
return
configuredFolders
.
map
((
configuredFolder
,
index
)
=>
{
let
result
:
WorkspaceFolder
[]
=
[];
let
seen
:
{
[
uri
:
string
]:
boolean
}
=
Object
.
create
(
null
);
for
(
let
configuredFolder
of
configuredFolders
)
{
let
uri
:
URI
|
null
=
null
;
let
uri
:
URI
|
null
=
null
;
if
(
isRawFileWorkspaceFolder
(
configuredFolder
))
{
if
(
isRawFileWorkspaceFolder
(
configuredFolder
))
{
uri
=
toUri
(
configuredFolder
.
path
,
relativeTo
);
if
(
configuredFolder
.
path
)
{
uri
=
resources
.
resolvePath
(
relativeTo
,
configuredFolder
.
path
);
}
}
else
if
(
isRawUriWorkspaceFolder
(
configuredFolder
))
{
}
else
if
(
isRawUriWorkspaceFolder
(
configuredFolder
))
{
try
{
try
{
uri
=
URI
.
parse
(
configuredFolder
.
uri
);
uri
=
URI
.
parse
(
configuredFolder
.
uri
);
...
@@ -248,25 +248,16 @@ function parseWorkspaceFolders(configuredFolders: IStoredWorkspaceFolder[], rela
...
@@ -248,25 +248,16 @@ function parseWorkspaceFolders(configuredFolders: IStoredWorkspaceFolder[], rela
// ignore
// ignore
}
}
}
}
if
(
!
uri
)
{
if
(
uri
)
{
return
undefined
;
// remove duplicates
}
let
comparisonKey
=
resources
.
getComparisonKey
(
uri
);
return
new
WorkspaceFolder
({
uri
,
name
:
configuredFolder
.
name
!
/*is ensured in caller*/
,
index
},
configuredFolder
);
if
(
!
seen
[
comparisonKey
])
{
});
seen
[
comparisonKey
]
=
true
;
}
const
name
=
configuredFolder
.
name
||
resources
.
basenameOrAuthority
(
uri
);
function
toUri
(
path
:
string
,
relativeTo
:
URI
|
undefined
):
URI
|
null
{
result
.
push
(
new
WorkspaceFolder
({
uri
,
name
,
index
:
result
.
length
},
configuredFolder
));
if
(
path
)
{
}
if
(
isAbsolute
(
path
))
{
return
URI
.
file
(
path
);
}
if
(
relativeTo
)
{
return
resources
.
joinPath
(
relativeTo
,
path
);
}
}
}
}
return
null
;
return
result
;
}
}
\ No newline at end of file
function
ensureUnique
(
folders
:
WorkspaceFolder
[]):
WorkspaceFolder
[]
{
return
distinct
(
folders
,
folder
=>
isLinux
?
folder
.
uri
.
toString
()
:
folder
.
uri
.
toString
().
toLowerCase
());
}
src/vs/platform/workspace/test/common/testWorkspace.ts
浏览文件 @
e5f694eb
...
@@ -4,15 +4,12 @@
...
@@ -4,15 +4,12 @@
*--------------------------------------------------------------------------------------------*/
*--------------------------------------------------------------------------------------------*/
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
Workspace
,
toWorkspaceFolder
s
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
Workspace
,
toWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
isWindows
}
from
'
vs/base/common/platform
'
;
import
{
isWindows
}
from
'
vs/base/common/platform
'
;
const
wsUri
=
URI
.
file
(
isWindows
?
'
C:
\\
testWorkspace
'
:
'
/testWorkspace
'
);
const
wsUri
=
URI
.
file
(
isWindows
?
'
C:
\\
testWorkspace
'
:
'
/testWorkspace
'
);
export
const
TestWorkspace
=
testWorkspace
(
wsUri
);
export
const
TestWorkspace
=
testWorkspace
(
wsUri
);
export
function
testWorkspace
(
resource
:
URI
):
Workspace
{
export
function
testWorkspace
(
resource
:
URI
):
Workspace
{
return
new
Workspace
(
return
new
Workspace
(
resource
.
toString
(),
[
toWorkspaceFolder
(
resource
)]);
resource
.
toString
(),
toWorkspaceFolders
([{
path
:
resource
.
fsPath
}])
);
}
}
src/vs/platform/workspace/test/common/workspace.test.ts
浏览文件 @
e5f694eb
...
@@ -46,7 +46,7 @@ suite('Workspace', () => {
...
@@ -46,7 +46,7 @@ suite('Workspace', () => {
});
});
test
(
'
toWorkspaceFolders with single absolute folder
'
,
()
=>
{
test
(
'
toWorkspaceFolders with single absolute folder
'
,
()
=>
{
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test
'
}]);
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test
'
}]
,
URI
.
file
(
'
/workspaces
'
)
);
assert
.
equal
(
actual
.
length
,
1
);
assert
.
equal
(
actual
.
length
,
1
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test
'
).
fsPath
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test
'
).
fsPath
);
...
@@ -66,7 +66,7 @@ suite('Workspace', () => {
...
@@ -66,7 +66,7 @@ suite('Workspace', () => {
});
});
test
(
'
toWorkspaceFolders with single absolute folder with name
'
,
()
=>
{
test
(
'
toWorkspaceFolders with single absolute folder with name
'
,
()
=>
{
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test
'
,
name
:
'
hello
'
}]);
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test
'
,
name
:
'
hello
'
}]
,
URI
.
file
(
'
/workspaces
'
)
);
assert
.
equal
(
actual
.
length
,
1
);
assert
.
equal
(
actual
.
length
,
1
);
...
@@ -77,7 +77,7 @@ suite('Workspace', () => {
...
@@ -77,7 +77,7 @@ suite('Workspace', () => {
});
});
test
(
'
toWorkspaceFolders with multiple unique absolute folders
'
,
()
=>
{
test
(
'
toWorkspaceFolders with multiple unique absolute folders
'
,
()
=>
{
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test3
'
},
{
path
:
'
/src/test1
'
}]);
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test3
'
},
{
path
:
'
/src/test1
'
}]
,
URI
.
file
(
'
/workspaces
'
)
);
assert
.
equal
(
actual
.
length
,
3
);
assert
.
equal
(
actual
.
length
,
3
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
...
@@ -97,7 +97,7 @@ suite('Workspace', () => {
...
@@ -97,7 +97,7 @@ suite('Workspace', () => {
});
});
test
(
'
toWorkspaceFolders with multiple unique absolute folders with names
'
,
()
=>
{
test
(
'
toWorkspaceFolders with multiple unique absolute folders with names
'
,
()
=>
{
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test3
'
,
name
:
'
noName
'
},
{
path
:
'
/src/test1
'
}]);
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test3
'
,
name
:
'
noName
'
},
{
path
:
'
/src/test1
'
}]
,
URI
.
file
(
'
/workspaces
'
)
);
assert
.
equal
(
actual
.
length
,
3
);
assert
.
equal
(
actual
.
length
,
3
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
...
@@ -137,7 +137,7 @@ suite('Workspace', () => {
...
@@ -137,7 +137,7 @@ suite('Workspace', () => {
});
});
test
(
'
toWorkspaceFolders with multiple absolute folders with duplicates
'
,
()
=>
{
test
(
'
toWorkspaceFolders with multiple absolute folders with duplicates
'
,
()
=>
{
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test2
'
,
name
:
'
noName
'
},
{
path
:
'
/src/test1
'
}]);
const
actual
=
toWorkspaceFolders
([{
path
:
'
/src/test2
'
},
{
path
:
'
/src/test2
'
,
name
:
'
noName
'
},
{
path
:
'
/src/test1
'
}]
,
URI
.
file
(
'
/workspaces
'
)
);
assert
.
equal
(
actual
.
length
,
2
);
assert
.
equal
(
actual
.
length
,
2
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
assert
.
equal
(
actual
[
0
].
uri
.
fsPath
,
URI
.
file
(
'
/src/test2
'
).
fsPath
);
...
...
src/vs/workbench/browser/nodeless.simpleservices.ts
浏览文件 @
e5f694eb
...
@@ -51,7 +51,7 @@ import { ExportData } from 'vs/base/common/performance';
...
@@ -51,7 +51,7 @@ import { ExportData } from 'vs/base/common/performance';
import
{
IRecentlyOpened
,
IRecent
}
from
'
vs/platform/history/common/history
'
;
import
{
IRecentlyOpened
,
IRecent
}
from
'
vs/platform/history/common/history
'
;
import
{
ISerializableCommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
ISerializableCommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IWorkspaceEditingService
}
from
'
vs/workbench/services/workspace/common/workspaceEditing
'
;
import
{
IWorkspaceEditingService
}
from
'
vs/workbench/services/workspace/common/workspaceEditing
'
;
import
{
IWorkspaceContextService
,
Workspace
,
toWorkspaceFolder
s
,
IWorkspaceFolder
,
WorkbenchState
,
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
Workspace
,
toWorkspaceFolder
,
IWorkspaceFolder
,
WorkbenchState
,
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
ITextResourcePropertiesService
}
from
'
vs/editor/common/services/resourceConfiguration
'
;
import
{
ITextResourcePropertiesService
}
from
'
vs/editor/common/services/resourceConfiguration
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
...
@@ -1365,10 +1365,7 @@ export class SimpleWorkspaceService implements IWorkspaceContextService {
...
@@ -1365,10 +1365,7 @@ export class SimpleWorkspaceService implements IWorkspaceContextService {
readonly
onDidChangeWorkbenchState
=
Event
.
None
;
readonly
onDidChangeWorkbenchState
=
Event
.
None
;
constructor
()
{
constructor
()
{
this
.
workspace
=
new
Workspace
(
this
.
workspace
=
new
Workspace
(
workspaceResource
.
toString
(),
[
toWorkspaceFolder
(
workspaceResource
)]);
workspaceResource
.
toString
(),
toWorkspaceFolders
([{
uri
:
workspaceResource
.
toString
()
}])
);
}
}
getFolders
():
IWorkspaceFolder
[]
{
getFolders
():
IWorkspaceFolder
[]
{
...
...
src/vs/workbench/contrib/search/test/common/queryBuilder.test.ts
浏览文件 @
e5f694eb
...
@@ -11,7 +11,7 @@ import { TestConfigurationService } from 'vs/platform/configuration/test/common/
...
@@ -11,7 +11,7 @@ import { TestConfigurationService } from 'vs/platform/configuration/test/common/
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
TestInstantiationService
}
from
'
vs/platform/instantiation/test/common/instantiationServiceMock
'
;
import
{
TestInstantiationService
}
from
'
vs/platform/instantiation/test/common/instantiationServiceMock
'
;
import
{
IFolderQuery
,
IPatternInfo
,
QueryType
,
ITextQuery
,
IFileQuery
}
from
'
vs/workbench/services/search/common/search
'
;
import
{
IFolderQuery
,
IPatternInfo
,
QueryType
,
ITextQuery
,
IFileQuery
}
from
'
vs/workbench/services/search/common/search
'
;
import
{
IWorkspaceContextService
,
toWorkspaceFolder
s
,
Workspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
toWorkspaceFolder
,
Workspace
,
toWorkspaceFolders
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
ISearchPathsInfo
,
QueryBuilder
}
from
'
vs/workbench/contrib/search/common/queryBuilder
'
;
import
{
ISearchPathsInfo
,
QueryBuilder
}
from
'
vs/workbench/contrib/search/common/queryBuilder
'
;
import
{
TestContextService
,
TestEnvironmentService
}
from
'
vs/workbench/test/workbenchTestServices
'
;
import
{
TestContextService
,
TestEnvironmentService
}
from
'
vs/workbench/test/workbenchTestServices
'
;
...
@@ -24,6 +24,7 @@ suite('QueryBuilder', () => {
...
@@ -24,6 +24,7 @@ suite('QueryBuilder', () => {
const
PATTERN_INFO
:
IPatternInfo
=
{
pattern
:
'
a
'
};
const
PATTERN_INFO
:
IPatternInfo
=
{
pattern
:
'
a
'
};
const
ROOT_1
=
fixPath
(
'
/foo/root1
'
);
const
ROOT_1
=
fixPath
(
'
/foo/root1
'
);
const
ROOT_1_URI
=
getUri
(
ROOT_1
);
const
ROOT_1_URI
=
getUri
(
ROOT_1
);
const
WS_FOLDER
=
getUri
(
'
/bar
'
);
// location of the workspace file (not important except that it is a file URI)
let
instantiationService
:
TestInstantiationService
;
let
instantiationService
:
TestInstantiationService
;
let
queryBuilder
:
QueryBuilder
;
let
queryBuilder
:
QueryBuilder
;
...
@@ -40,7 +41,7 @@ suite('QueryBuilder', () => {
...
@@ -40,7 +41,7 @@ suite('QueryBuilder', () => {
instantiationService
.
stub
(
IConfigurationService
,
mockConfigService
);
instantiationService
.
stub
(
IConfigurationService
,
mockConfigService
);
mockContextService
=
new
TestContextService
();
mockContextService
=
new
TestContextService
();
mockWorkspace
=
new
Workspace
(
'
workspace
'
,
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
}])
);
mockWorkspace
=
new
Workspace
(
'
workspace
'
,
[
toWorkspaceFolder
(
ROOT_1_URI
)]
);
mockContextService
.
setWorkspace
(
mockWorkspace
);
mockContextService
.
setWorkspace
(
mockWorkspace
);
instantiationService
.
stub
(
IWorkspaceContextService
,
mockContextService
);
instantiationService
.
stub
(
IWorkspaceContextService
,
mockContextService
);
...
@@ -277,7 +278,7 @@ suite('QueryBuilder', () => {
...
@@ -277,7 +278,7 @@ suite('QueryBuilder', () => {
const
ROOT_2_URI
=
getUri
(
ROOT_2
);
const
ROOT_2_URI
=
getUri
(
ROOT_2
);
const
ROOT_3
=
fixPath
(
'
/project/root3
'
);
const
ROOT_3
=
fixPath
(
'
/project/root3
'
);
const
ROOT_3_URI
=
getUri
(
ROOT_3
);
const
ROOT_3_URI
=
getUri
(
ROOT_3
);
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
ROOT_2_URI
.
fsPath
},
{
path
:
ROOT_3_URI
.
fsPath
}]);
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
ROOT_2_URI
.
fsPath
},
{
path
:
ROOT_3_URI
.
fsPath
}]
,
WS_FOLDER
);
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
/config
'
));
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
/config
'
));
mockConfigService
.
setUserConfiguration
(
'
search
'
,
{
mockConfigService
.
setUserConfiguration
(
'
search
'
,
{
...
@@ -689,7 +690,7 @@ suite('QueryBuilder', () => {
...
@@ -689,7 +690,7 @@ suite('QueryBuilder', () => {
test
(
'
relative includes w/two root folders
'
,
()
=>
{
test
(
'
relative includes w/two root folders
'
,
()
=>
{
const
ROOT_2
=
'
/project/root2
'
;
const
ROOT_2
=
'
/project/root2
'
;
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
getUri
(
ROOT_2
).
fsPath
}]);
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
getUri
(
ROOT_2
).
fsPath
}]
,
WS_FOLDER
);
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
config
'
));
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
config
'
));
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
...
@@ -730,7 +731,7 @@ suite('QueryBuilder', () => {
...
@@ -730,7 +731,7 @@ suite('QueryBuilder', () => {
test
(
'
include ./foldername
'
,
()
=>
{
test
(
'
include ./foldername
'
,
()
=>
{
const
ROOT_2
=
'
/project/root2
'
;
const
ROOT_2
=
'
/project/root2
'
;
const
ROOT_1_FOLDERNAME
=
'
foldername
'
;
const
ROOT_1_FOLDERNAME
=
'
foldername
'
;
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
,
name
:
ROOT_1_FOLDERNAME
},
{
path
:
getUri
(
ROOT_2
).
fsPath
}]);
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
,
name
:
ROOT_1_FOLDERNAME
},
{
path
:
getUri
(
ROOT_2
).
fsPath
}]
,
WS_FOLDER
);
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
config
'
));
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
config
'
));
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
...
@@ -758,7 +759,7 @@ suite('QueryBuilder', () => {
...
@@ -758,7 +759,7 @@ suite('QueryBuilder', () => {
test
(
'
relative includes w/multiple ambiguous root folders
'
,
()
=>
{
test
(
'
relative includes w/multiple ambiguous root folders
'
,
()
=>
{
const
ROOT_2
=
'
/project/rootB
'
;
const
ROOT_2
=
'
/project/rootB
'
;
const
ROOT_3
=
'
/otherproject/rootB
'
;
const
ROOT_3
=
'
/otherproject/rootB
'
;
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
getUri
(
ROOT_2
).
fsPath
},
{
path
:
getUri
(
ROOT_3
).
fsPath
}]);
mockWorkspace
.
folders
=
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
},
{
path
:
getUri
(
ROOT_2
).
fsPath
},
{
path
:
getUri
(
ROOT_3
).
fsPath
}]
,
WS_FOLDER
);
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
/config
'
));
mockWorkspace
.
configuration
=
uri
.
file
(
fixPath
(
'
/config
'
));
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
const
cases
:
[
string
,
ISearchPathsInfo
][]
=
[
...
...
src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts
浏览文件 @
e5f694eb
...
@@ -57,7 +57,6 @@ class TestBackupFileService extends BackupFileService {
...
@@ -57,7 +57,6 @@ class TestBackupFileService extends BackupFileService {
constructor
(
workspace
:
Uri
,
backupHome
:
string
,
workspacesJsonPath
:
string
)
{
constructor
(
workspace
:
Uri
,
backupHome
:
string
,
workspacesJsonPath
:
string
)
{
const
fileService
=
new
FileService
(
new
NullLogService
());
const
fileService
=
new
FileService
(
new
NullLogService
());
fileService
.
registerProvider
(
Schemas
.
file
,
new
DiskFileSystemProvider
(
new
NullLogService
()));
fileService
.
registerProvider
(
Schemas
.
file
,
new
DiskFileSystemProvider
(
new
NullLogService
()));
const
environmentService
=
new
TestBackupEnvironmentService
(
workspaceBackupPath
);
const
environmentService
=
new
TestBackupEnvironmentService
(
workspaceBackupPath
);
super
(
environmentService
,
fileService
);
super
(
environmentService
,
fileService
);
...
...
src/vs/workbench/services/configuration/browser/configurationService.ts
浏览文件 @
e5f694eb
...
@@ -10,7 +10,7 @@ import { equals, deepClone } from 'vs/base/common/objects';
...
@@ -10,7 +10,7 @@ import { equals, deepClone } from 'vs/base/common/objects';
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Queue
,
Barrier
}
from
'
vs/base/common/async
'
;
import
{
Queue
,
Barrier
}
from
'
vs/base/common/async
'
;
import
{
IJSONContributionRegistry
,
Extensions
as
JSONExtensions
}
from
'
vs/platform/jsonschemas/common/jsonContributionRegistry
'
;
import
{
IJSONContributionRegistry
,
Extensions
as
JSONExtensions
}
from
'
vs/platform/jsonschemas/common/jsonContributionRegistry
'
;
import
{
IWorkspaceContextService
,
Workspace
,
WorkbenchState
,
IWorkspaceFolder
,
toWorkspaceFolders
,
IWorkspaceFoldersChangeEvent
,
WorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
Workspace
,
WorkbenchState
,
IWorkspaceFolder
,
toWorkspaceFolders
,
IWorkspaceFoldersChangeEvent
,
WorkspaceFolder
,
toWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
isLinux
}
from
'
vs/base/common/platform
'
;
import
{
isLinux
}
from
'
vs/base/common/platform
'
;
import
{
ConfigurationChangeEvent
,
ConfigurationModel
,
DefaultConfigurationModel
}
from
'
vs/platform/configuration/common/configurationModels
'
;
import
{
ConfigurationChangeEvent
,
ConfigurationModel
,
DefaultConfigurationModel
}
from
'
vs/platform/configuration/common/configurationModels
'
;
import
{
IConfigurationChangeEvent
,
ConfigurationTarget
,
IConfigurationOverrides
,
keyFromOverrideIdentifier
,
isConfigurationOverrides
,
IConfigurationData
,
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationChangeEvent
,
ConfigurationTarget
,
IConfigurationOverrides
,
keyFromOverrideIdentifier
,
isConfigurationOverrides
,
IConfigurationData
,
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
...
@@ -340,16 +340,7 @@ export class WorkspaceService extends Disposable implements IConfigurationServic
...
@@ -340,16 +340,7 @@ export class WorkspaceService extends Disposable implements IConfigurationServic
}
}
private
createSingleFolderWorkspace
(
singleFolder
:
ISingleFolderWorkspaceInitializationPayload
):
Promise
<
Workspace
>
{
private
createSingleFolderWorkspace
(
singleFolder
:
ISingleFolderWorkspaceInitializationPayload
):
Promise
<
Workspace
>
{
const
folder
=
singleFolder
.
folder
;
const
workspace
=
new
Workspace
(
singleFolder
.
id
,
[
toWorkspaceFolder
(
singleFolder
.
folder
)]);
let
configuredFolders
:
IStoredWorkspaceFolder
[];
if
(
folder
.
scheme
===
'
file
'
)
{
configuredFolders
=
[{
path
:
folder
.
fsPath
}];
}
else
{
configuredFolders
=
[{
uri
:
folder
.
toString
()
}];
}
const
workspace
=
new
Workspace
(
singleFolder
.
id
,
toWorkspaceFolders
(
configuredFolders
));
this
.
releaseWorkspaceBarrier
();
// Release barrier as workspace is complete because it is single folder.
this
.
releaseWorkspaceBarrier
();
// Release barrier as workspace is complete because it is single folder.
return
Promise
.
resolve
(
workspace
);
return
Promise
.
resolve
(
workspace
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录